Events abschalten für Device:reading

Begonnen von sn0000py, 27 Dezember 2022, 12:34:07

Vorheriges Thema - Nächstes Thema

Sany

Zitatja habe mehrere Shelly sicher um die 30 Stück sind per MQTT (ein externer mosquitto Server) angebunden

Bei mir ist es etwa die gleiche Anzahl, allerdings per mqtt2server an fhem angebunden. Wenn ich Deine Konstellation richtig verstehe hast du Mosquitto extern als Broker und den nutzen Deine fhem-Devices als IO.
Was mir irgendwann mal aufgefallen ist:
die shellys machen alle 30sec ein "announce", also pusten ein umfangreiches JSON hinaus und der Broker muss ja irgendwas damit machen. Bei 30 Shellies sind das im Schnitt alle 2sec eine Menge Daten. Ich hatte bei mir das Problem, dass ich immer wieder, völlig losgelöst von Ereignissen und nicht regelmäßig, kleine "Hänger" im System hatte. Das konnt ich schön an meiner Digitaluhr (Device TYPE=Watches) sehen, die immer mal wieder ein wenig "gestolpert" ist, also die Sekunden nicht gleichmäßig gezeigt hat.
Dann kam der Versuch, im mqtt2Server alle möglichen Regexps zu ignorieren, hat aber nicht geholfen. Dann habe ich bei allen Shellies dieses announce abgestellt und seitdem sind diese Hänger nicht mehr und das System hat die meiste Zeit einstellige CPU-Last Werte (htop).
Das Setting läßt sich nur per http-Befehl ändern:
Zitathttp://<IP-vom-Shelly>/settings
ergibt in meinem Browser eine entschlüsselte JSON Ansicht, dort kannst Du grob im oberen Drittel unter mqtt den Wert update_period sehen. Sollte 30 stehen, also default.
Ändern geht über:
Zitathttp://<IP-vom-Shelly>/settings?mqtt_update_period=0
Die Seite wird dann gleich wieder angezeigt, mit dem geänderten Wert.

ABER: Das hat bei mir geholfen, evtl. hat das per Mosquitto keine Auswirkungen. Ausserdem solltest Du Dir sicher sein, diese announces in fhem nicht zu verwerten, sonst fehlen Dir Trigger. Aber vermutlich löst es Dein Problem z.B. beim Input, dass eben nur eine Änderung ins Reading geschrieben wird und nicht jedes Update per announce nur den Timestamp ändert.
Ich sags nochmal: probier das auf eigene Gefahr, man kann es aber auch jederzeit zurückdrehen, ist halt ne Fleißarbeit....


Viel Erfolg!


Sany
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

sn0000py

Ok danke das kannte ich noch gar nicht :D

Werd mir da dann ein patch script schreiben dafür.
Ausschalten geht glaub ich nicht, weil was ich im ersten Test gesehen habe, kommen dann gar keine zyklischen Messages mehr an.
Und die .*power und .*energy würde ich schon haben wollen zyklisch wenn das relay eingeschaltet ist (aber da reicht dann ein 5 sekunden intervall oder so)

Sany

ZitatUnd die .*power und .*energy würde ich schon haben wollen
die kommen ja, sobald sich was ändert. Im Prinzip ist das ja ein event-on-change-reading: shelly sendet nur bei geänderten Werten.
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

sn0000py

Zitat von: Sany am 30 Dezember 2022, 17:18:54
die kommen ja, sobald sich was ändert. Im Prinzip ist das ja ein event-on-change-reading: shelly sendet nur bei geänderten Werten.
Ja stimmt funkt so eigentlich ganz gut.
Man muss halt wenn man die settings ändert also den update_period auf 0 oder <> 0 immer einen reboot vom device machen, sonst tut das ding gar nichts mehr - hatte 15 minuten gewartet und es kam nix.
Nach dem Reboot läuft es jetzt perfekt!

sn0000py

Hmm eines passt mir dann doch nicht bei den shelly und update_period=0

wenn ich das relay einschalte, dann bekomme ich brav den relay status =1, die Power wird auf 227Watt gesetzt und Energy wird auch aktualisiert.
Aber wenn ich dann ausschalte, dann wird zwar der relay status auf 0 gestellt sofort, aber die Power bleibt auf 227 Watt stehen und wird auch zig minuten später nicht aktualisiert

sn0000py

theoretisch könnte man ein notify machen
define shellyPower0 notify shelly\..*:relay_0:off { fhem "setreading $NAME power_0 0";; }

damit würden bei all meinen shellys (fangen mit shelly. an) die power_0 auf 0 gesetzt wenn das relay ausgeschaltet wird.

ist zwar dann ein notify mehr das halt öfters aufgerufen wird, aber dafür müssten die shellys nicht mehr ständig schicken?

Sany

Frohes Neues!
ZitatAber wenn ich dann ausschalte, dann wird zwar der relay status auf 0 gestellt sofort, aber die Power bleibt auf 227 Watt stehen und wird auch zig minuten später nicht aktualisiert
Das machen meine Shellys auch, allerdings nutze ich das Reading nicht, somit ist es mir bisher nicht aufgefallen.
Unschön ist es, ich würde fast tippen, das ist ein Bug in der Shelly-Firmware. Habe das aber nicht weiter verfolgt, da ich es, wie gesagt, nicht nutze.

Generell schrieb ich ja, es kann sein, dass nach abschalten des Announce evtl. Trigger fehlen.

Hast Du denn eine geringere CPU-load feststellen können, solltest Du alle shellys umgestellt haben?



Gruß


Sany
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

sn0000py

Zitat von: Sany am 01 Januar 2023, 18:08:28
Frohes Neues!Das machen meine Shellys auch, allerdings nutze ich das Reading nicht, somit ist es mir bisher nicht aufgefallen.
Unschön ist es, ich würde fast tippen, das ist ein Bug in der Shelly-Firmware. Habe das aber nicht weiter verfolgt, da ich es, wie gesagt, nicht nutze.

Generell schrieb ich ja, es kann sein, dass nach abschalten des Announce evtl. Trigger fehlen.

Hast Du denn eine geringere CPU-load feststellen können, solltest Du alle shellys umgestellt haben?
Gruß
Sany
4
Ja habe schon eine geringere Last nun (habe es mit dem trigger nun gemacht die power auf 0 zu stellen wenn das relay ausgeht.
Ja ich vermute auch das es ein Bug in der shelly ist, aber wenn shelly eine ähnliche Bug Analyse haben wie die hier bei FHEM dann werden auch die den Bug als Feature verkaufen wie die hier bei FHEM  ;) - sage ja immer der Verkauf ist wichtiger als die Technik  ;D