ioBroker.zwave2 icon indicating copy to clipboard operation
ioBroker.zwave2 copied to clipboard

Verlorene Updates: Zustand regelmäßig auslesen

Open Crazyachmed opened this issue 2 years ago • 24 comments

Versionen:

  • Adapterversion: 3.0.4
  • JS-Controller-Version: 4.0.23
  • Node.js Version: 16.17.0
  • Betriebssystem: Debian auf RPI4

Ich habe um die 25 Fibaro Aktoren im Einsatz, die meisten davon die etwas älteren FGR-222. Mir fällt auf, dass der Ist-Wert im iobroker nicht immer dem tatsächlichen Zustand der Rollade entspricht. Man sieht dann irgendeinen Wert aus der Mitte, die Jalousie ist aber eigentlich in Endposition. Es sieht also so aus, als wenn das ein oder andere Update des Aktors flöten geht. Ist es dann das letzte Update (ganz zu oder ganz auf) kommt Shuttercontrol durcheinander.

Ich habe mir ein Fibaro Homecenter 3 Lite besorgt um alle Aktoren auf den aktuellsten Firmware-Stand zu bringen - ohne Unterschied. Was mir dort aber aufgefallen ist: Fibaro hat standardmäßig ein Polling der Aktoren integriert. Ich bin mir gerade nicht sicher, ob es dort um Keep-Alive geht oder tatsächliche Werte, hätte aber so eine Funktion gerne im iobroker - im ersten Step reicht mir das vollkommen aus, wenn ich das extern per Script anstoße.

Das ganze hat evtl. etwas mit https://github.com/AlCalzone/ioBroker.zwave2/issues/703 zu tun, leider steht da wenig drin ;)

Vorab: Kann ich den zwave-Treiber auf einem Seitenkanal ansprechen und den Aktor dazu bewegen seinen Zustand nochmal zu senden? Ich kenne mich leider nicht mit den Z-Wave-Commands aus, aber denke, dass ich das Passende ja in einem Interview finden müsste.

Crazyachmed avatar Oct 09 '22 17:10 Crazyachmed

#pull

MarcelRaschke avatar Oct 09 '22 23:10 MarcelRaschke

Laut Doku gibt es das Feature in zwave-js selbst schon.

Ich habe noch das hier gefunden: https://github.com/AlCalzone/ioBroker.zwave2/blob/master/docs/en/sendCommand.md

Ich bin kein JS-Typ, mir fehlt jetzt die Möglichkeit ein bisschen JSON in irgendein iobroker-Objekt zu stecken um diese Calls auszulösen.

Crazyachmed avatar Oct 14 '22 17:10 Crazyachmed

die fgr-222 habe ich hier auch.. kann das von dir geschilderte Problem nicht nachvollziehen.. bei mir ist der wert immer aktuell

arteck avatar Nov 16 '22 15:11 arteck

Ich denke es liegt am Übertragungsweg. Es trifft nur wenige Aktoren, wobei Betroffene und Unbetroffene teilweise direkt nebeneinander in der Wand sind. Könnte ich manuell Routen vorgeben würde ich das Problem vermutlich auch umgehen können.

Hilft mir aber leider nicht, außer jemand hat eine andere Idee.

Crazyachmed avatar Nov 16 '22 15:11 Crazyachmed

trifft nur wenige Aktoren, wobei Betroffene und Unbetroffene teilweise direkt nebeneinander in der Wand sind

Netzwerk heilen könnte helfen.

AlCalzone avatar Nov 16 '22 16:11 AlCalzone

Bringt leider nichts. Habe schon im Dialog gewartet (und jedes batteriebetriebene Gerät aufgeweckt) bis jeder aktualisiert war. Danach dann noch ein Re-Interview.

PS: Leider verschwindet der Heilungs-Status bei den Geräten, wenn man den Dialog verlässt.

Crazyachmed avatar Nov 16 '22 16:11 Crazyachmed

Steckt der zwave stick in einem Verlängerungskabel? Falls nicht, solltest du das tun, und den Stick von metallischen Oberflächen wegbewegen. Danach nochmal heilen.

AlCalzone avatar Nov 16 '22 17:11 AlCalzone

Der Stick steckt in nem Raspi auf der Fensterbank recht zentral im Haus. Kann ich versuchen, aber wie wäre es mit einer Möglichkeit "Raw"-Comands absetzen zu können? Dann kann ich es selber scripten.

Crazyachmed avatar Nov 17 '22 20:11 Crazyachmed

Der Stick steckt in nem Raspi

Das ist ein Problem. Die anderen USB ports stören teils massiv.

Skripten ist möglich, Doku wurde zum Teil schon verlinkt, muss allerdings mit den Infos aus https://zwave-js.github.io/node-zwave-js/#/api/CCs/MultilevelSwitch?id=get zusammen geführt werden.

Aber wie gesagt, ich würde erst mal den physikalischen Weg gehen. Sehr oft löst das nämlich die meisten Kommunikationsprobleme.

AlCalzone avatar Nov 17 '22 21:11 AlCalzone

OK, ich hab das Teil gerade per Verlängerung an so ein Plastik-Standregal geklebt und lasse zumindest ein Heal + Re-Interview für alle Routing-Slaves laufen, der Rest folgt später.

Crazyachmed avatar Nov 18 '22 07:11 Crazyachmed

Hat leider nichts gebracht. Ich habe auch noch ein paar Temperatursensoren, die ihren Akkustand nur bei einem Interview aktualisieren (alles assoziiert, was geht). Ich muss mir das mit dem Pollen mal ansehen, aber eine Funktion dazu wäre echt praktisch.

Crazyachmed avatar Nov 19 '22 21:11 Crazyachmed

Verstehe die Doku so, dass ich ein Objekt "sendCommand" unter zwave2.0 haben sollte, dem ich etwas JSON füttere? Ich sehe da nur eines mit dem Namen "connected". Auch nicht unter zwave2.0.info oder zwave2.0.Node_xxx

Crazyachmed avatar Nov 20 '22 10:11 Crazyachmed

Nee das geht nur per Javascript.

AlCalzone avatar Nov 20 '22 12:11 AlCalzone

Kannst du mir bitte kurz erklären, wie ich das am einfachsten regelmäßig auslöse? Ich weiß nicht, welche Komponente den Beispielcode laufen lässt. Das passende JSON kann ich mir wohl zusammenbasteln.

Crazyachmed avatar Nov 20 '22 13:11 Crazyachmed

Ist extrem schwierig am Handy (Elternzeit bis Ende Dezember, kaum Zeit an den PC zu gehen...)

Ich hab in nem anderen issue hier mal sowas für nen anderen User geschrieben, müsstest du allerdings selbst suchen.

AlCalzone avatar Nov 20 '22 13:11 AlCalzone

Okay, ich habe mir den JavaScript Adapter (nur deswegen) installiert und eines von den simplen Rule-Scripten hört auf einen 0_userdata-State und schickt das direkt an den Z-Wave-Adapter weiter. Das eigentliche Scripten mache ich sowieso mit NodeRed.

Es wäre wirklich genial, wenn du das irgendwann direkt als State zugreifbar machen könntest.

Genieß deine Elternzeit :)

Crazyachmed avatar Nov 20 '22 14:11 Crazyachmed

Hab das gleiche Problem mit meinen Fibaro FGR-222 Rollershutter 2. Da steht z.B. TargetValue und CurrentValue auf 65, Rolladen sind aber zu. Ich kann zwar die Rolladen per TargetValue in Skripten zuverlässig auf und zu fahren, aber die Anzeige passt nicht.

Spacerat76 avatar May 02 '23 20:05 Spacerat76

Die hatte ich bis vor kurzem auch und nie Probleme. Kannst du mal ein Z-Wave log posten wo du die Rollos fahren lässt?

AlCalzone avatar May 03 '23 06:05 AlCalzone

@AlCalzone: Also bei mir sind es auch FGR-222, wobei ich kaum FGR-223 habe und es daher vielleicht nicht auffällt. Schalter werden kaum betroffen sein, weil die einfach zwischendurch keine Updates (beim Fahren) schicken.

Seitdem ich mein oben erwähntes Script am Laufen habe läuft alles. Ich musste es aber ein wenig drosseln, weil die Z-Wave-Instanz leider ein Memory-Leak hat, ich glaube du kennst das Problem. Ich möchte es nochmal so optimieren, dass es nur Aktoren pollt, deren Position sich in den letzten Minuten verändert hat. Mein aktueller Workaround ist, dass ich nur Aktoren polle, die nicht komplett auf oder zu sind.

Ein Feature einen Sensors manuell zu pollen über ein Objekt wäre wirklich toll dafür - zumal Fibaro selber pollt bei den eigenen Gateways.

Crazyachmed avatar May 03 '23 12:05 Crazyachmed

weil die Z-Wave-Instanz leider ein Memory-Leak hat

Dann update mal auf 3.0.5 (stable)

AlCalzone avatar May 03 '23 12:05 AlCalzone

Hatte ich schon drauf, habe aber jetzt das aggressive Polling wieder testweise aktiviert (alle 3 Minuten 22 Aktoren auslesen) und es sieht aktuell gut aus, kein Leak.

Ich denke ich werde etwas kleines coden, dass 30 Sekunden und eine Minute nach der letzten Änderung pollt.

Crazyachmed avatar May 07 '23 12:05 Crazyachmed

@AlCalzone: Du hast scheinbar in 3.1.0 etwas eingebaut, das regelmäßig einige Sachen pollt. Kannst du sagen wie oft (bei Geräten mit Stomversorgung?)

Crazyachmed avatar Sep 29 '23 16:09 Crazyachmed

  • Battery CC (alle 7 Tage)
  • Multilevel Sensor CC (alle 6 Stunden)
  • Meter CC (alle 6 Stunden)
  • Notification CC (nur wenn diese im pull-mode funktionieren, dann alle 6 Stunden)

Die Refreshes finden nur dann statt, wenn nicht vom Gerät automatisch aktualisiert wird, und diese Zeiten stellen die Mindestzeit seit der letzten Aktualisierung dar. Batteriebetriebene Geräte werden bei Bedarf abgefragt, wenn sie aufwachen.

AlCalzone avatar Sep 29 '23 17:09 AlCalzone

Okay, das hilft mir leider für mein Haupt-Szenario nicht, ich muss wirklich recht aggressiv pollen und das mache ich jetzt weiterhin über die Krücke mit dem JavaScript.

Das Polling für Battery kann ich aber vermutlich jetzt rausschmeißen, danke :)

Crazyachmed avatar Sep 29 '23 18:09 Crazyachmed