Xiaomi Smart Home Gateway

Hallo, jemand eine Idee was diese Fehlermeldung bedeutet? Die kommt wenn ich den Konfigurator anlegen möchte. Multicast Socket und Splitter sind ok und im debug kommen auch Daten rein.

Hast das Original Repro genommen oder meinen Fork?
Mein Fork sollte diesen Fehler nicht bringen.
Ich muss da noch bei Gelegenheit einen Pull Request machen :wink:
Michael

Beide getestet…

Habe jetzt das so wie in dem Openhab2 Addon umgesetzt. Bitte testen :slight_smile:

Sobald no_motion kommt, wird status auf false gesetzt.

Ja, dort ist der Wert auch erklärt gewesen. Gesendet wird die Drehung in Prozent, also muss der Teiler 3,6 sein und nicht wie im anderen Repo 3,3.
Gefixt.
rotation_time sollte auch ankommen.

Ich habe den fehlerhaften (und sinnlosen) Code Teil entfernt.
Probier bitte aus ob es nun funktioniert.

Michael

Jetzt läuft es. Vielen Dank!

Feedback zu dem neuesten Update kann ich im Laufe des Tages geben. Danke schon mal für die Arbeit! :slight_smile:

Mein zweites Gateway ist nun endlich angekommen und eingerichtet. Ich habe jetzt in IPS jeweils zwei Multicast Sockets, Splitter Instanzen und Konfiguratoren. Der Splitter zeigt jedoch die Fehlermeldung „Instanz ist in einem unbekannten Status mit dem Code 101“. Der neue Konfigurator zeigt die Geräte des alten Gateways an, ich vermute, weil er nach dem Erzeugen kurzzeitig mit dem alten Multicast Socket/Splitter verbunden war, bis ich einen neuen erstellt hatte. Eine erneute Suche, jetzt wo alles auf die richtigen Instanzen eingestellt ist, bringt keine Abhilfe. Der Splitter bleibt in seinem Fehlerstatus, auch wenn ich zum alten Multicast Socket wechsele.

Soweit ich es verstanden hatte ist es möglich mit deinem Modul mehrere Gateways anzusprechen. Kann es sein, dass du da ein Detail übersehen hast oder dass ich bei der Einrichtung mit der Reihenfolge o.ä. etwas beachten muss?

Besten Dank! :slight_smile: Testing all the unusual usecases for you:cool::smiley:

Die Meldung im Splitter mit 101 kannst du ignorieren, ist nach dem nächsten Neustart von IPS weg.
Ist nur ein Schönheitsfehler welchen ich nachher noch korrigieren kann.
Wenn alle Instanzen richtig miteinander verbunden sind (physikalische Baumansicht hilft da den Überblick zu behalten) sollten zwei Gateways funktionieren.

EDIT: Könnte sein, dass es zu Problemen gekommen ist, wenn der Splitter noch nicht die SID seines Gateway kannte.
Jetzt muss erst ein Heartbeat mit der SID vom Gateway empfangen werden, damit der Konfigurator etwas darstellt.

Michael

Wie du sagtest ist die Meldung mit der 101 nach einem Neustart verschwunden.

Ich bekomme nun jedoch mehrere Fehlermeldungen:

Außerdem werden mir alle Devices im alten Konfigurator als Disconnected angezeigt, Sie reagieren jedoch weiterhin. Zumindest einige funktionieren noch. Lichtschalter hatte ich jetzt beispielsweise getestet. Im neuen Konfigurator erscheint jedoch kein einziges Gerät. Zwischenzeitlich doch kurz aber weiß ich auch nicht wie das kam.

Noch interessanter ist, dass in beiden Multicast Sockets Nachrichten von beiden Gateways auftauchen. Die scheinen da also gegenseitig ein Echo ihrer Nachrichten zu erzeugen.

Als ich zwischenzeitlich den einen Multicast Socket gelöscht habe hatten beide Konfiguratoren plötzlich alle Geräte des alten Gateways und Sie wurden nicht mehr als offline angezeigt. Aber sobald ich zwei getrennte Sockets habe stehen die dort als offline, obwohl Sie funktionieren.

Werde mal versuchen rauszufinden wie ich das vorhin geschafft habe, dass es kurz funktioniert hat im neuen Konfigurator nur die Geräte des einen Gateways anzuzeigen. Anscheinend sorgt der Spliiter oder das Socket dafür dass nach IP Adresse gefiltert wird. Auch wenn Nachrichten von beiden Gateways ankommen.

Mein erster starker Verdacht ist, dass dein Modul nicht damit klarkommt heartbeats von zwei verschiedenen Gateways über den selben Multicast Socket zu bekommen und sich den richtigen rauszufiltern!

Habe jetzt nur noch einen Multicast/Splitter. Direkt nach dem Löschen bekam ich an beiden Konfiguratoren, die jetzt zusammen an einem Splitter hängen Gateway timed out und einige Sekunden später verschwand die Meldung und jetzt werden mir wieder alle Geräte angezeigt vom „alten“ Gateway(als Connected).

Er scheint also nur dann nicht mit den verschiedenen Heartbeats klarzukommen, wenn ich mehrere Splitter/Multicast Sockets habe…Aber die brauche ich ja, wenn ich beide Gateways abfragen will…

Oder du baust es so um dass ich für beide Gateways nur einen Konfigurator habe, weil ja eh von beiden die Nachrichten im Socket landen. Warum auch immer das so ist…aber dazu kenne ich mich auch noch zu wenig mit den Hintergründen der Funktionsweise von Splittern etc. aus.
Je nachdem was einfacher und sicherer ist, dass es auch wirklich funktioniert würde ich sagen.

Das die Nachrichten in beiden auftauchen ist korrekt, weil es ein Multicast ist.

Der Splitter muss immer erst die SID über einen heartbeat des Gateway empfangen.
Dieser Heartbeat wird anhand der IP-Adresse welche im Multicast-Socket eingetragen werden muss zugeordnet.
Erst wenn der Splitter die SID des Gateways kennt, funktioniert auch der Konfigurator.

Ich werde die SID mal einbauen, dass sie angezeigt wird.
Eventuell ist hier irgendwo das Problem.

Die IP der Gateways hast du aber im jeweiligen Multicast-Socket eingetragen ?

Den anderen Fehler suche ich auch gleich.

Michael

Edit: Deinen zweiten Post hatte ich nicht gesehen, es ist nicht möglich nur einen Konfigurator zu nutzen, weil auf jeden Fall auch zwei Multicast-Socket benötigt werden und dann die Zuordnung fehlen würden. Da das senden zum Gateway Unicast ist, benötigt man auf jeden Fall auch zwei Multicast-Scoket mit den korrekten IP-Adressen der Gateways.
Es wäre sehr hilfreich nicht Screenshots zu machen, sondern den Text zu kopieren, beim Debug gibt es auch einen Speichern Button :smiley:

Update online.
Der Splitter zeigt in der INFO-Spalte jetzt die SID seines Gateways.
Bevor dort kein Eintrag steht, funktioniert auch kein Schalten und der Konfigurator nicht.

Michael

Hallo Michael,

vielen Dank für deine Arbeit, die Sensoren funktionieren alle soweit super.
Was noch fehlt ist der Xiaomi Wassermelder, vielleicht kannst du ihn noch einbinden.

Hier der log aus dem Splitter in Ip symcon:

Receive | {„cmd“:„report“,„model“:„sensor_wleak.aq1“,„sid“:„158d0001d59528“,„short_id“:31218,„data“:"{„status“:„leak“}"}
Receive | {„cmd“:„report“,„model“:„sensor_wleak.aq1“,„sid“:„158d0001d59528“,„short_id“:31218,„data“:"{„status“:„no_leak“}"}

Liebe Grüße
Pierre

Huch, der war auch nicht vorhanden ?
Kann der noch mehr außer Status ?

Michael

Edit: Update für den sensor_wleak.aq1 ist online.

Läuft perfekt.
Der kann nur leak oder no leak.

Danke!
Pierre

Ich bekomme nun in meinem Log ständig diese Meldungen:

02.11.2017 23:13:32*| FlowHandler*| Kann Daten nicht zur Instanz #26819 weiterleiten: Error on send command
02.11.2017 23:17:54*| FlowHandler*| Kann Daten nicht zur Instanz #18067 weiterleiten: <br />
<b>Warning</b>:  Variabletyp stimmt nicht überein in <b>/var/lib/symcon/modules/Xiaomi-Smart-Home/XiaomTraits.php</b> on line <b>498</b><br />

Scheinen wohl hauptsächlich Bewegungsmelder zu sein. Viel nerviger ist jedoch, dass es seit ich zwei Gateways nutze(oder es ist mir davor nur nie so aufgefallen) immer häufiger passiert das für eine bestimmte Zeit der Wurm drinsitzt und die Schalter nur alle 10 Mal drücken reagieren. Besonders komisch deshalb, weil ein Neustart, des Gateways, des Raspberrys etc. nichts nutzt.

Das Drücken der Schalter kommt dabei jedoch definitiv im Gateway an, da ich Sie in der ofiziellen App sehen kann. Nur aktualisiert sich die entsprechende Variable in IPS nicht und es erscheint teilweise auch nichts im Debug Log…

Sorry btw. dass ich zeitlich noch nicht geschafft habe ausführliches Feedback zum letzten großen Update zu schicken. Mache ich die Tage noch!

Was ist die Instanz 26819 ?
Ist in dem zu dieser Instanz zugehörigen INFO-Spalte ein Wert vorhanden ? Entweder ist es ein Device und dort steht der Typ, oder es ist der Splitter und dort muss die SID stehen.
Kannst du, wenn dieser Fehler periodisch auftritt, mir ein Debug von der betreffenden Instanz zukommen lassen ?

Fix ist dafür gleich online (5 Minuten).
War ein C & P Fehler für das zurücksetzen von ‚status‘ wenn ‚no_motion‘ empfangen wurde.

In diesem Fall; bitte einmal von beiden Splittern das Debug öffnen und nachschauen ob die Nachricht dort eintrifft.
Dabei ist es wichtig, dass auf jeden Fall die Splitter-Instanzen die SID vom Gateway in der Info-Spalte anzeigen. Sonst werden ankommende Meldungen verworfen (können dann nicht zugeordnet werden).
Michael

Danke für die beiden Module.

Ich hab jetzt das Modul von NallChan im Einsatz. Funktioniert top!

Gateway + Temperatursensor erfolgreich erkannt.
Weitere Sensoren folgen noch…(Die Chinaschneckenpost :D)

Allgemein noch eine Frage:
Wenn ich neue Sensoren über die APP anlernen will, muss das Xiaomi Gateway Internetzugriff haben?

Wenn ich alle Sensoren angelernt habe, und die APP nicht mehr einsetzen will, kann ich dem Xiaomi Gateway doch den Internetzugriff blockieren? Die Sensoren werden von IPS weiterhin ausgelesen?

Ist das so richtig?

Hallo,

ich habe nun auch endlich meine Xiaomi Devices erhalten und wollte fragen, ob das hier der richtige Link zum aktuellen Php Modul ist:

git://github.com/Nall-chan/Xiaomi-Smart-Home.git

Bei mir funktioniert es irgendwie nicht. Bekomme immer wieder die Meldung „Gateway timed out“. Kurze Zeit später wieder „Config valid“.

Gateway timed out
Bedeutet dass das Gateway sich nicht zyklisch im LAN meldet bzw. nicht schnell genug.
Schau bitte im Debug vom Splitter und IO.
Dort sollten Heartbeat Pakete auftauchen.
Michael

Ja, dort habe ich eh auch schon reingeschaut. Dort kommt aber gar nichts an :frowning: