Event-on-change-reading nur bei Änderung on state auf "off", nicht bei "on"

Begonnen von AnBad, 05 April 2021, 14:18:24

Vorheriges Thema - Nächstes Thema

AnBad

Hallo,
Ist es möglich ein event-on-change-reading betreffend DbLog nur bei bestimmtem Reading "state=off" auszulösen? So dass dann die Userreadings "Beginn, Ende, Dauer, kumulierter Verbrauch" in die Datenbank geschrieben werden?

also so in etwa:

attr Switch5 event-on-change-reading state="off"
attr Switch5 DbLogInclude Beginn,Ende,Zeitdauer,kumulierter Verbrauch


Ich kann nur Einschränkungen finden bei Änderung von Werten die größer/kleiner sind <,>. Aber nicht bei "ist gleich".

Ist es des Weiteren möglich, einen Wert hier in dem Fall "kumulierter Verbrauch" fortlaufend ständig zu loggen, also nicht nur am Ende wenn "off" getätigt wurde? Dieser Wert soll dazu dienen einen Verbrauchslauf mit Plot darzustellen.

Danke.

KernSani

Hi,
meines Wissens ist die gewünschte Einschränkung bei event-on.* nicht möglich und -wenn ich es richtig verstehe - in deinem Fall auch nicht sinnvoll. Ohne ,,on" kennst du ja den Beginn nicht.
Readings werden bei jedem event geloggt (sofern die Regex bei DBLogInclude entsprechend aufgebaut ist), also auch der kumulierte Wert (natürlich muss auch event-on.* das Event erlauben).
Grüße,
Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

DS_Starter

Wenn ich es richtig verstanden habe, sind "Beginn, Ende, Dauer, kumulierter Verbrauch" userReadings. ("kumulierter Verbrauch" ist übrigens kein gültiger Readingname -> Leerzeichen entfernen)

Sollte das stimmen, kannst du beim attr userReadings die Triggerbedingung "off" hinzufügen.
Dann würden diese Readings nur erstellt/aktualisiert werden wenn der state=off ist.
Demzufolge würden auch nur dann Events erstellt, die geloggt werden. Das event-on-change-reading brauchst du dann nicht und bringt auch nichts wie Oli schon geschrieben hat.

Zitat
Ist es des Weiteren möglich, einen Wert hier in dem Fall "kumulierter Verbrauch" fortlaufend ständig zu loggen, also nicht nur am Ende wenn "off" getätigt wurde? Dieser Wert soll dazu dienen einen Verbrauchslauf mit Plot darzustellen.
Im DbLog gibt es das eingebaute "set <> addLog" für solche Zwecke. Kannst du regelmäßi mit at etc. ausführen.



Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Jamo

Hallo Anbad,
Du kannst Dir aber auch user readings für jedes deiner zu loggenden readings machen, die nur bei state=off das Reading durchlassen, und ansonsten auf dem letzten Wert konstant lassen.
Dblog logged ja nur bei Änderung, womit Du dann das gewünschte Verhalten hast.

PS: DS_Starter war schneller..., aber gleiche Idee. :-(
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

KernSani

Zitat von: DS_Starter am 05 April 2021, 15:01:27
Im DbLog gibt es das eingebaute "set <> addLog" für solche Zwecke. Kannst du regelmäßi mit at etc. ausführen.
Alternativ, geht i.d.R. auch ein event-min-interval, das - in Verbindung mit event-on-change-reading - auch triggert (also loggt), wenn ein Event kommt und sich der Wert nicht geändert hat, aber das min-interval überschritten ist. 
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

AnBad

Habe mir gerade überlegt, dass ich vlt. ein Dummy-Device anlege mit den benötigten userReadings, welche bei dem Ebent "off" übernommen werden, und dann einen Logeintrag ausführen. Das scheint mir im Moment die beste Lösung.
So kann ich im eigentlichen Devise dann auch das Reading "aktueller_Verbauch" auf "Dauerlog" stellen.