Hallo zusammen,
nach längerer Vorbereitung
in diesem Thread, werden mit dem morgigen Update auch Neuerungen bei MySensors verteilt. Es werden dann alle features unterstützt, die in der Version 2.0 der MySensors API enthalten sind.
Da manches anders ist, ist ggf. "action required", man kann die alte Funktionalität aber übergangsweise bei Bedarf noch recht einfach wieder aktivieren. Wie, steht hier:
- Benennung des battery-Readings.
Entsprechend
dem Vorschlag im Developer-Bereich ist der Name dieses Readings zukünftig "batteryPercent"
Wer unbedingt den alten Namen benötigt: Zeile 707 wieder aktivieren (# entfernen) oder ein userreading anlegen (letzteres wäre die Empfehlung!)
- heartbeat
-- Sendet eine Node ein heartbeat(), wird das alive-Reading aktualisiert. Es wird empfohlen, beim Programmieren der Nodes, die auf "alive" überwacht werden sollen, darauf zu achten, dass diese einen heartbeat, einen Batterie-Wert (oder smartsleep-Signal) senden (s.u.).
-- Es gibt ein neues "get", mit dem eine Node auch aktiv "angepingt" werden kann - damit kann man also prüfen, ob die Kommunikation von und zu einer Node derzeit steht.
-- Das ist nicht-triggernd realisiert, man muß also den Browser-refresh ausführen, um den aktualisierten Zeitstempel zu sehen.
-- Einschränkung: Macht man das ganze über die Kommandozeile, erscheint ein leeres Dialogfeld. Wenn ich dazu komme, baue ich das noch um nach dem Muster von MQTT2_DEVICE; da geht das...
Wer das alte "alive"-Verhalten bei updates von allen Readings benötigt: Zeile 679 reaktivieren. Für Nodes, die dauerhaft per Funk zu erreichen sind und ein normales "sleep" verwenden, kann man bei Bedarf auch zyklisch einen heartbeat-Request ("get <node> heartbeat") senden.
Wichtig: Im Moment gehe ich davon aus, dass zwar alles funktioniert, der code aber noch an der einen oder anderen Stelle zu optimieren sein wird. Wer also nicht "ständig" nach updates die oben genannten Änderungen durchführen will, sollte nach dem morgigen update und Durchführung der für ihn relevanten Änderungen dann MYSENSORS_DEVICE vom update ausnehmen.
- OTA-Funktionalität
-- Status ist eher experimentell, auch wenn derzeit keine größeren Probleme bekannt sind!
-- Unterstützt werden sowohl der MYSBootloader (nur nRF-Nodes) wie der OptiBoot-Bootloader (alle Transportlayer).
-- Zur Konfiguration siehe die Commandref.
Danke an @Wallmeier für den Code dazu!
- Reading-Namen
Kommentare bei der Presentation können in die Reading-Namen eingebaut werden, das ganze wird durch ein "get" angestoßen.
Vorausgesetzt wird, dass die Node überhaupt einen entsprechenden Kommentar bei der Presentation sendet, der in den Readingnamen einfließen kann...
- smartsleep
-- Status wach/schlafend ist sichtbar
-- Es können auch Sendebefehle an schlafende Nodes ausgeliefert werden; dies setzt voraus, dass im jeweiligen Sketch statt sleep() smartSleep() verwendet wird.
Hinweise und Einschränkung: bei Nicht-ACK-Nachrichten ist nicht auszuschließen, dass Messages verloren gehen, gerade bei solchen Nodes, die über einen Repeater angesprochen werden. Bei Problemen sollte zunächst die Zeit bis zum Einschlafen der Nodes verlängert werden (MY_SMART_SLEEP_WAIT_DURATION_MS).
- RSSI
-- erfordert aktive Anfrage via neuem "get" oder und entsprechenden Code auf der Node (MY_SIGNAL_REPORT_ENABLED)
-- macht nur bei RFM-Nodes Sinn (soweit bekannt; nRF liefert uu. einen kalkulierten Wert)
-- leeres Dialogfeld, wenn über FHEMWEB angestoßen (s.o.)
Hinweis: Es wird eine Art Schleife aufgerufen, die alle möglichen Werte nacheinander abfragt; gehen zwischenzeitlich Nachrichten verloren, muß das neu angestoßen werden, sonst gibt es ein internal, das anzeigt, auf welcher Stufe der Prozess gerade steht. Ist der länger unverändert, ist die Anforderung im off gelandet...
- MY_SPECIAL_DEBUG kann genutzt werden
Realisiert als Abfrageschleife wie RSSI, s.o., erfordert ebenfalls entsprechenden Code auf der Node.
Grüße und viel Freude mit den neuen features,
Beta-User
Changelog:
- Hinweis auf Batteriewert für alive-Refresh ergänzt