[Modul] XBee Serie 2 - ZigBee Netzwerk

Oh… du hast recht.
Dem Modul fehlt da noch ein Update.
Ich hatte es schon veröffentlicht, bevor es die Debug-Ausgabe für PHP-Module gab.
Die Screenshots sind aus IPS3.X :rolleyes:

Es dauert auch leider noch etwas, bis das Modul zu 100% dem aus der 3.X entspricht und wird wohl erst zu IPS 4.1 etwas.

Funktionieren wird es dennoch, nur halt ohne eigene Debug-Ausgabe.
Setz mal hinter den Splitter eine RegVar und öffnen deren Debug, dann siehst du alles was du mit dem Terminal-Programm an den Router sendest.

Michael

Oh ha - gut zu wissen, da hätte ich mir viel Zeit sparen können :wink:

Mit Deinem Hinweis kam ich jetzt weiter und bin wieder guter Dinge.

Vielen Dank.

Gruß
Dieter

So Erfolgsbericht (teilweise)

Nach dem sehr hilfreichen Hinweis von Nall chan, kann ich jetzt die Daten von meiner Wetterstation und auch von dem Vliesfilter über den einen Coordinator am IPS-Server empfangen und wie bisher weiter verarbeiten.

Ein Problem gibt es allerdings noch mit dem Senden von Nachrichten an die Routers von Wetterstation und Vliesfilter.
Bisher habe ich dazu die jeweiligen RegVars mit einem ASCII-Text bechrieben - z.B.:

RegVar_SendText(31552 /*[Vliesfilter\Register Variable Vliesfilter]*/, "$cmd" . chr(13) . chr(10));

Es wird wohl gesendet - aber folgende Fehlermeldung wird gleichzeitig ausgeworfen:

Warning:
Fatal error: Uncaught exception ‚Exception‘ with message ‚Error on forward Data‘ in C:\IP-SYMCON - 4\modules\IPSXBeeZigBee\XBeeZBSplitter\module.php:125
Stack trace:
#0 C:\IP-SYMCON - 4\modules\IPSXBeeZigBee\XBeeZBSplitter\module.php(96): XBZBSplitter->ForwardDataFromChild(‚TST
‚)
#1 -(4): XBZBSplitter->ForwardData(‘{„DataID“:"{798…‘)
#2 {main}
thrown in C:\IP-SYMCON - 4\modules\IPSXBeeZigBee\XBeeZBSplitter\module.php on line 125
Abort Processing during Fatal-Error: Uncaught exception ‚Exception‘ with message ‚Error on forward Data‘ in C:\IP-SYMCON - 4\modules\IPSXBeeZigBee\XBeeZBSplitter\module.php:125
Stack trace:
#0 C:\IP-SYMCON - 4\modules\IPSXBeeZigBee\XBeeZBSplitter\module.php(96): XBZBSplitter->ForwardDataFromChild(‚TST
‚)
#1 -(4): XBZBSplitter->ForwardData(‘{„DataID“:"{798…‘)
#2 {main}
thrown
Error in Script C:\IP-SYMCON - 4\modules\IPSXBeeZigBee\XBeeZBSplitter\module.php on Line 125 in C:\IP-SYMCON - 4\scripts\Functions.ips.php on line 163

Michael, kannst Du das deuten, was dort nicht gefällt?

Gruß
Dieter

Aktuell nein.

Aber vielleicht gleich, ich habe mal fix den Splitter um die Debug-Ausgabe erweitert und die Fehlerbehandlung (OMG :eek: was ich ich da gemacht…naja war ja eins der ersten Module :smiley: ) angepasst.

Damit sollte es möglich sein den Fehler zu finden.
Testen konnte ich aber noch nicht.

Update ist jetzt online.

Also bitte ein Update laden, und dann den Debug des betreffenden Splitters öffnen. Wenn du dann etwas sendest, sollte da stehen was nicht funktioniert…(Timeout oder NACK etc…)

Michael

OK - update gemacht - Debug Window geht jetzt!

Die Fehlermeldung ist etwas kürzer jetzt:

[Warning:
Warning: Invalid error type specified in C:\IP-SYMCON - 4\modules\IPSXBeeZigBee\XBeeZBSplitter\module.php on line 125
RESULT: in C:\IP-SYMCON - 4\scripts\Functions.ips.php on line 163

und hier das Debug Fenster:

2016-09-15_191720.png

Ich sende den String „TST“ und der Vliesfilter quittiert mit „OK“ - scheint alo zu gehen - aber warum die Fehlermeldung?

Gruß
Dieter

Verd&$""$&…

ok ich werde da morgen mal eine Testumgebung aufbauen und noch mal prüfen.

Um den Fehler zu erklären, muss ich kurz ausholen.
Der Coordinator sendet das Paket an deinen Ziel-Node.
Dieser muss den Empfang bestätigen. Diese Quittung (oder auch das fehlen derselben) wertet der Coordinator intern aus und gibt sie an IPS zurück.
Diese Auswertung vom Coordinator nutze ich um zu prüfen ob die Daten erfolgreich am Ziel angekommen sind.
Und genau da scheine ich einen Fehler zu haben :banghead:

Das zusätzlich deine ‚Nutzschicht‘ auch noch seine Übertragung per Quittung sichert, interessiert das XBee-Netzwerk wenig :slight_smile:

Aufgefallen ist es bei mir nicht, da mein XBees noch immer am 3.X-IPS hängen :o

Michael

PS: Ich nehme die Prüfung erstmal raus, dann hast du Ruhe. Und den ‚leeren‘ Fehler im Debug habe ich auch behoben (Update ist online)

kurze Rückmeldung: Fehlermeldungen werden jetzt keine mehr generiert - allerdings wird im Debug immer noch ein leeres Fehlerfeld gezeigt.

Ansonsten immer gern zu Diensten als DAU :cool:

Danke und Gruß aus Wiesbaden
Dieter

OK, Danke. Dann kann ich mir schon denken wo der Fehler liegt.
Ich baue heute Abend mal ein zweites Netz zum testen auf.

Michael

So, ich glaube ich habe den Fehler gefunden…ich konnte wohl nicht zählen :smiley:
Dadurch das die Debug Ausgabe nun funktioniert, war es einfacher.

Wenn du also ein Update gemacht hast, sollte es nicht nur funktionieren, sondern auch im Debug des Splitters als auch des Coordinator sinnvolle Ausgaben geben.

Hier ein Beispiel wie es aussehen sollte:
Wichtig ist dass bei Transmit_Status das mittlere Byte 00 ist.

Michael

Hallo Michael - hatte gar nicht mitbekommen, dass Du fleissig warst.

Werde gleich mal ein Update machen und die Sache beobachten.

Ganz herzlichen Dank für Deine Unterstützung.

Gruß
Dieter

So, gerade mal das Update geladen und ein paar Tests gemacht - kann nur sagen: PERFEKT !

Jetzt wage ich mich mal an die I/O’s der XBee’s

Gruß
Dieter

Viel Erfolg :slight_smile:
Wenn du auf die 4.1 gehst, Kannst dich gerne melden, Vielleicht habe ich dann schon eine neue Version zum testen.
Michael

Ich muss mal eine dumme Frage stellen:
Entspricht X-Bee-Serie 2 dem XBeePro?

XBeePro läuft bei mir schon seit 8 ?Jahren oder so.

Das müsste die erste Serie sein, Welche IPS nativ unterstützt.
Michael

Ja, eingerichtet ist es ja schon. So lange, dass ich schon nicht mehr so genau weiss, was ich damals fabriziert hatte.
…und es läuft immer noch.

XBEE/XBEE PRO Serie 1 - ist/war die erste Generation und die Pro -Variante hat lediglich eine stärkere Sendeleistung (die Maximale ist in Deutschland eigentlich gar nicht erlaubt :cool: )
Die Serie 1 hat nicht die ZigBee Netzwerktopologie.

Mit der Serie 2 wurde wohl auch der ZigBee Stack implementiert, d.h. man kann ZigBee Netzwerk aufbauen und dabei Router definieren, welche Netzwerknachrichtenauf dem besten Weg zu dem Coordinator ‚routen‘.

Ich habe mir die Serie 2 C gekauft, da wurden wohl neue Prozessoren verwendet, bessere Sendeleistung realisiert und es gibt sogar eine programmierbare Variante mit einem zusätzlichen HC08 Prozessor drauf, den man für eigene Anwendungen programmieren kann. Und - ganz wichtig - der Speicher der Serie 2 C ist nun so groß, dass das gesamte verfügbare Betriebssystem drauf passt, d.h. die verschiedenen Funktionen werden nur noch durch richtiges setzten von Variablen realisiert.
Ich habe z.Zt einen Coordinator an Symcon und 2 Router (Wetterstation und Teichfliesfilter) in der normalen (nicht PRO) realisiert und es läuft extra prima (dank Nall chan).

Gruß
Dieter

Nun noch ein paar Fragen an Nall chan zur Einrichtung der XBEE-IOs:

Erstens ist mir aufgefallen, dass wenn man Deine „Device Instanz“ installieren will, nochmals ein serieller Port und ein Gateway eingerichtet wird - ist das so gewollt?
Auch hat es dabei wieder jede Menge Fehlermeldungen gehagelt - sicher habe ich noch was falsch gemacht.

Ich möchte eigentlich nur ein End Device (Router) für das lesen/schreiben der IOs einrichten - wird das dann beim installieren der Device Instanz richtig erkannt?
Irgendwie komme ich als DAU mit Deiner Beschreibung (noch) nicht klar - Sorry

Gruß
Dieter

Nein, ist nicht. War sowohl beim Splitter als auch beim Device falsch.
Habe ich mal angepaßt und hochgeladen.

Ich glaube eher, dass die Fehler entstanden sind, weil diese Instanz die falschen ‚leeren‘ Splitter und Gateways angesprochen hat.
Entweder Instanz löschen, Update laden und neu anlegen… oder einfach per Hand korrekt den Parent (also den Node dessen IOs du ansprechen möchstest) als übergeordnete Instanz auswählen.

Tip: Da hilft immer wieder gerne die physikalische Baumansicht und das vergeben von aussagekräftigen Namen der jeweiligen Instanzen, sonst steht da nachher 3x XBee ZigBee Splitter.

Ja, wird (sollte sag ich mal lieber :smiley: ) es.
Die Config der IOs wird jedesmal neu einelesen aus dem Node (= der übergeordnete Parent), sobald du ‚übernehmen‘ in der Instanz anklickst.
Oder per PHP mit XBee_ReadConfig($IInstanzID).
Den aktuellen Zustand der IOs kannst du über die Parameter IC und IS im XBee steuern.
Bei IC ist es eine Bitmaske für jeden IO welcher bei Änderung übertragen werden soll.
Also z.B. 0x000F für die IOs 0 bis 4.
Der IC-Parameter funktioniert bei Analogwerte nicht!
Dafür muss dann zusätzlich über Parameter IS eine Intervall im XBee konfiguriert werden, in welchen Abständen er die Werte überträgt.

Um Ausänge aus IPS heraus zu setzen, gibt es dann den Befehl XBEE_WriteBoolean(12345, ‚D0‘, true);

Bei weiteren Fragen… Fragen :smiley:

Michael

Hallo Michael - BINGO - jetzt bin ich auch ‚drin‘ und es funktioniert prima!

Habe ein neues Test End Device angelegt, dass sich sogar schlafen legt, damit ergeben sich ungeahnte neue Möglichkeiten (nun der Winter steht ja vor der Tür :cool: )

Zum Verständnis: Die Instanz ‚Device‘ hat einen Event Timer mit einer Sekunde, der jedoch ‚disabled‘ ist. Für was ist/war der vorgesehen?

Nochmals ganz herzlichen Dank für Deine Hilfe und ein schönes Wochenende.

Gruß
Dieter

Gern geschehen.
Der Timer entspricht dem Intervall in der Konfig der Instanz.
Damit kann man auch periodisch die IOs über IPS getriggert auslesen.
Besser ist aber immer die Lösung im Xbee selbst.
Verursacht meistens weniger Funkverkehr.
Michael