SVG Plot, dbLog und event-on-

Begonnen von amithlon, 23 Juli 2016, 13:48:11

Vorheriges Thema - Nächstes Thema

amithlon

Hallo,

folgendes Problem: ich logge mit dbLog und ersteller ein paar Plots.
Die E3000-Sensoren senden alle 5s, das füllt natürlich die Datenbank teilweise unnütz.
Also Experimente mit event-on-change-reading, event-on-update-reading und event-min-interval.
Die gefundenen Beschreibungen haben mir die tatsächliche Funktion nicht richtig klar gemacht.
event-on-change-reading - nur bei Änderungen loggen.
event-on-update-reading - jedes Update loggen
event-min-interval - mindestens alle xx Sekunden loggen, auch wenn sich nichts geändert hat oder frühestens nach xx Sekunden wieder loggen?

Bei den E3k und auch bei den Bewegungssensoren brauche ich eine Version, die nur Änderungen des Werte loggt, aber alle xx Sekunden auch loggt, wenn sich der Wert nicht geändert hat.
Das muß aber unabhängig von ankommenden Daten sein, es muß also alle xx Sekunden der letzte bekannte Wert ins Log, damit der Plot ok ist.
Speziell bei den Bewegunssensoren ist das wichtig, weil da nur MQTT-daten kommen, wenn der Sensor angesprochen hat.

Oder muß ich das wirklich "extern" mit at o.ä. lösen?
Die Begungssensoren triggern im Moment einen Watchdog, der ein dummy auf aktiv/inaktiv setzt, das passt auch so.
Im Log wird vom PIR nur die Batteriespannung erfasst, die kommt jedesmal wenn der Sensor ausgelöst wird.
Wenn sich niemand bewegt kommt natürlich auch nichts und mir fehlen im Plot die Spannungswerte bis mal jemand vorbeiläuft...

Vielleich hat ja jemand den passenden Hinweis.
Dem PIR zu sagen:
event-min-interval 300
event-on-change-reading .*
oder
event-on-update-reading .*

erzeugt keine Einträge. Im Grunde ist auch beides hier identisch, es gibt nur ein reading (die Batteriespannung) und die wird nur genau dann gesendet, wenn der PIR anspricht.

Gruß aus Berlin
Michael

justme1968

event-min-interval: frühestens nach xx sekunden loggen. wenn der sensor sendet. wenn der sensor nicht sendet wird auch nichts geloggt. niemals. falls event-on-change-reading auch gesetzt ist ebenfalls wenn sich etwas geändert hat.

wenn du loggen willst falls nichts geredet wurde: siehe wiki: http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden.
das hat aber den nebeneffekt das auch alle abhängigen notifys getriggert werden. wenn du das nicht willst musst du das im jeweiligen notify abfangen.

wenn es dir aber nur darum geht das die plots nicht abbrechen schau dir logProxy an.

warum du bei einem bewegungsmelder werte 'erfinden' willst verstehe ich aber nicht. wenn sich nichts bewegt wird nichts gesendet und es sollte auch nichts geplottet werden. hier ist es sinnvoller mit points zu plotten statt steps oder lines.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

amithlon

Hallo,

ich schau mir das alles mal genauer an.
Zum PIR: ist ein MQTT-Client mit einem ESP. Der schickt beim Auslösen NUR seine Batteriespannung und steht mit der Haltezeit auf ca. 1:45 Minuten und nicht retriggerbar. FHEM erledigt über Watchdog und dummy das aktiv/inaktiv und damit auch das Nachtriggern. Das passt eigentlich so für mich auch sehr gut.
Der PIR selbst soll nichts weiter machen, spart Strom, die ESP sind hungrig.

Mein Problem ist also nur, daß ich für den Plot der Batteriespannung den letzten Wert in Abständen ins dbLog schreiben will, nur für den Plot.

Wäre bei den E3000 ähnlich, da kommen allerdings mehr als genug events, da ist also mein Problem im Moment noch, daß er nur geänderte Werte sofort ins dbLog schreiben soll, aber alle xx Minuten auch den nicht geänderten Wert, ebenfalls damit ein Plot ok bleibt.

Danke erstmal für die Hinweise.

Gruß aus Berlin
Michael


amithlon

Hallo,

so, ich habe erstmal eine Lösung zu meinem Probelm gefunden.
Irgendwo im Forum liegt die Funktion addDbLog, die Suche findet es.. Die in mein 99_myUtils.pm verfrachtet und es läuft wie es scheint wie gewünscht.

Für die E3000 habe ich einzeln event-on-change-reading mit angepassten threshold gesetzt, das reduziert die Anzahl der Log-Einträge.
event-min-interval  wird hier komplett ignoriert, egal, ob allein oder in Verbindung mit event-on-change-reading.
Log-Einträge werden immer geschrieben, wenn Daten ankommen, bei den E3000 eben dann im 5s Abstand wenn ich event-on-change-reading rausnheme.

Gruß aus Berlin
Michael