Schwellwert abfragen mit if, DOIF, notify oder watchdog

Begonnen von uron, 12 Dezember 2021, 18:03:33

Vorheriges Thema - Nächstes Thema

uron

Seit einiger Zeit versuche ich die Überschreitung eines bestimmten Messwertes (powerfox:power) als Auslöser für die Schaltung zweier Devices in Abhängigkeit von der Uhrzeit (13 Uhr) zu nutzen.
Meine ersten Versuche ergaben 2 Befehlsfolgen, die jeweils im 5-Minutenrhytmus den Messwert abgefragt haben:
define DEVICEabschaltung at +*00:05:00 {if (ReadingsNum("powerfox","power",0) > "400" && $hour > "12") {fhem ("set FBDECT_FritzBox_DECT200_1 off-for-timer 60")} elsif (ReadingsNum("powerfox","power",0) > "400" && $hour < "13") {fhem ("set FBDECT_FritzBox_DECT200_2 off-for-timer 60")}}

Diese Syntax funktioniert, erscheint mir allerdings wegen der zweimaligen Abfrage des Messwertes ,,power" nicht sehr elegant, außerdem belastet sie das System im 5-Minutenrhythmus.

Der nächste Versuch war einer per watchdog. Irgendwie finde ich aber keinen Weg zu einem 2. Event (regexp2), welches dem Vergleich dient – vielleicht bin ich auch zu einfältig, das Syntax-Muster umzusetzen.

Aktuell nutze ich DOIF in Kombination mit einer if-Abfrage:
define DEVICEabschaltung DOIF ([powerfox:power] > 400) {if ($hour > "12") {fhem("set FBDECT_DECT200_1 off-for-timer 60")} else {fhem("set FBDECT_FritzBox_DECT200_2 off-for-timer 60")}}

Im Ergebnis funktioniert auch diese Syntax, jedoch nicht durchgängig:
Von 27 Messwertüberschreitungen führten nur 6 zur Abschaltung eines Device – korrekt in Abhängigkeit von der Uhrzeit.
Stellt sich mir die Frage, wie oft triggert DOIF den Meßwert oder habe ich im DOIF-Ansatz einen Fehler eingebaut?

Den Weg über notify habe ich nicht weiter verfolgt, da sich der Messwert eigentlich ständig ändert und so das System mit dem Check der ,,Überschreitungsklärung" belastet wird – oder liege ich da falsch?

Welche Weg würdet ihr denn gehen?
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Otto123

#1
Vorschlag define n_DEVICEabschaltung notify powerfox:power:.* {if ($EVTPART1 > 400) {if ($hour > 12) {fhem ("set FBDECT_FritzBox_DECT200_1 off-for-timer 60")} elsif ($hour < 13) {fhem ("set FBDECT_FritzBox_DECT200_2 off-for-timer 60")} } }

Finde ich eleganter als polling alle 5 min  ::)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

uron

Jou, klingt gut. Werde ich testen!
Danke für den Hinweis!
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Otto123

#3
sorry da hat notify gefehlt, habs ergänzt. Ist aber insgesamt nur geschrieben nicht getestet.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

uron

Prima, nun bringt die Befehlsfolge keine Fehlermeldung mehr.
Ein erster Spontantest ergibt zunächst die gewünschte Funktion - morgen werde ich tagsüber einen Kompletttest durchführen.
Nochmals Danke!
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Otto123

ich habe nicht ganz verstanden wie das mit der Zeit wirklich sein soll. Du kannst das notify mit disabledForIntervals auch noch zeitlich deaktivieren.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

uron

#6
Das ist eine gute Idee mit "disabledForIntervals", da die relevanten und "interessanten" Events nur tagsüber eintreten, d.h. nach der Bürgerlichen Dämmerung, sind die Events nicht zu überwachen.

Nachtrag 1: Ach ja, um auf deine Frage zu antworten: ich möcht am Vor- und am Nachmittag unterschiedliche Devices abschalten!
Nachtrag 2: Klappt jetzt wunderbar!
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

uron

Was gestern noch so gut klappte, hat heute der Geist aufgegeben:
define n_DEVICEabschaltung notify powerfox:power:.* {if ($EVTPART1 > 400) {if ($hour > 12) {fhem ("set FBDECT_FritzBox_DECT200_1 off-for-timer 60")} elsif ($hour < 13) {fhem ("set FBDECT_FritzBox_DECT200_2 off-for-timer 60")} } }
Es kommen seit heute 9:25 Uhr vom Device ,,powerfox:power keine neuen Events mehr:

list powerfox
Internals:
   BUSY       0
   DEF        https://xxx%40yyy.com:aaa%bbb@backend.powerfox.energy/api/2.0/my/zzzz/current 300
   FUUID      6077fe25-f33f-aab4-b615-c1ae47baa9c89b0e
   Interval   300
   MainURL    https://xxx%40yyy.com:aaa%bbb@backend.powerfox.energy/api/2.0/my/zzz/current
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       powerfox
   NOTIFYDEV  global
   NR         1469
   NTFY_ORDER 50-powerfox
   STATE      ???
   TYPE       HTTPMOD
   value     
   HttpUtils:
     NAME       
     addr       https://backend.powerfox.energy:443
     auth       1
     buf       
     data       
     displayurl https://xxx%40yyyy.com:aaa%bbb@backend.powerfox.energy/api/2.0/my/zzz/current
     header     
     host       backend.powerfox.energy
     httpversion 1.0
     ignoreredirects 1
     loglevel   4
     path       /api/2.0/my/zzz/current
     protocol   https
     pwd        aaa#bbb
     redirects  0
     timeout    2
     url        https://xxx%40yyy.com:aaa%bbb@backend.powerfox.energy/api/2.0/my/zzz/current
     user       xxx@yyy.com
     sslargs:
   QUEUE:
   READINGS:
     2021-12-14 14:27:29   power           457
     2021-12-14 14:27:29   total_consumption 2782182
     2021-12-14 14:27:29   total_feed      16395
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://xxx%40yyy.com:aaa%bbb@backend.powerfox.energy/api/2.0/my/zzz/current
   defptr:
     readingBase:
       power      reading
       total_consumption reading
       total_feed reading
     readingNum:
       power      01
       total_consumption 02
       total_feed 03
     readingOutdated:
     requestReadings:
       update:
         power      reading 01
         total_consumption reading 02
         total_feed reading 03
Attributes:
   reading01JSON Watt
   reading01Name power
   reading02JSON A_Plus
   reading02Name total_consumption
   reading03JSON A_Minus
   reading03Name total_feed
   room       Keller,PV-Anlage
   verbose    3


Woran könnte das liegen?
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Otto123

wirklich?
     2021-12-14 14:27:29   power           457
hast Du mit dem Eventmonitor geschaut?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

uron

das list Modulabschaltung zeigt:
Internals:
   DEF        define Modulabschaltung notify powerfox:power:.* {if ($EVTPART1 > 400) {if ($hour > 12) {fhem ("set FBDECT_DECT200_1 off-for-timer 60")} elsif ($hour < 13) {fhem ("set FBDECT_FritzBox_DECT200_2 off-for-timer 60")} } }
   FUUID      61b65140-f33f-aab4-228f-c1138e3952609aca
   NAME       Modulabschaltung
   NR         308
   NTFY_ORDER 50-Modulabschaltung
   REGEXP     define
   STATE      active
   TYPE       notify
   READINGS:
     2021-12-14 14:27:17   state           active
     2021-12-14 09:25:16   triggeredByDev  powerfox
     2021-12-14 09:25:16   triggeredByEvent power: 454
Attributes:
   icon       solar_icon
   room       PV-Anlage

siehe das Reading, das zuletzt um 9:25:16 Uhr aktualisiert ist!
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Otto123

Ja ok, dann schau nach ob Events kommen. Das notify sagt nein, dein powerfox aktualisiert aber die Readings. Keine Ahnung warum keine Events kommen sollen...
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

uron

#11
lt. Event Monitor kommen Events
2021-12-14 15:42:29.634 HTTPMOD powerfox power: 380
2021-12-14 15:42:29.634 HTTPMOD powerfox total_consumption: 2782638
2021-12-14 15:42:29.634 HTTPMOD powerfox total_feed: 16395

Warum schlagen die nicht in der "Modulabschaltung" auf?
Den FHEM-Server hatte ich auch schon einmal neu gestartet!
STATE von powerfox steht auf "3 Fragezeichen" - hat das in diesem Zusammenhang eine Bedeutung?
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Damian

Unter 400 kann nach deiner Definition auch nichts passieren ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

uron

#13
Richtig, habe ich übersehen, hab zum Test den Schwellwert mal auf 200 gesenkt - das gleiche Problem bei power = 417.

Dann habe ich mal das Modul komplett gelöscht und neu eingestellt - Ergebnis:
Internals:
   DEF        define Modulabschaltung notify powerfox:power:.* {if ($EVTPART1 > 200) {if ($hour > 12) {fhem ("set FBDECT_FritzBox_DECT200_1 off-for-timer 60")} elsif ($hour < 13) {fhem ("set FBDECT_FritzBox_DECT200_2 off-for-timer 60")} } }
   FUUID      61b65140-f33f-aab4-228f-c1138e3952609aca
   NAME       Modulabschaltung
   NR         308
   NTFY_ORDER 50-Modulabschaltung
   REGEXP     define
   STATE      active
   TYPE       notify
   READINGS:
     2021-12-14 15:55:26   state           active
Attributes:
   icon       solar_icon
   room       PV-Anlage

Es fehlen die Triggerreadings!
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

CoolTux

Schau doch erstmal ob überhaupt ein Event erscheint. Also Eventmonitor auf machen und Filter setzen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net