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.
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
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.
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. :-(
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.
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.