Gleichzeitiges Loggen von 2 Readings

Begonnen von Andi.Riese, 21 Oktober 2022, 22:09:09

Vorheriges Thema - Nächstes Thema

Andi.Riese

Hallo,

ich habe ja schon weiter unten gepostet, dass ich Probleme mit Loggings habe.
Jetzt möchte ich folgendes machen:

Ich habe 2 Readings: power und energy.

Wenn sich power um z.B. 100 ändert, logge ich power. Das funktioniert soweit.

Genau dann und nur dann, wenn power geloggt wird, möchte ich gleichzeitig energy loggen.
Ich hab versucht das mithilfe eines notifys hinzukriegen, das auf power reagiert und den momentanen Wert von energy in ein neues reading energy2 schreibt, funktioniert aber leider nicht (wie im anderen Post beschrieben). Das  neue  reading energy2 wird einfach nicht geloggt. Und mit einem userreading geht's auch nicht.

Kann mir jemand sagen, wie ich das hinkriege?

Danke für Eure Antwort.

Gruß
Andi


Klaus_R

Hallo Andi,
da ich mit ähnlichen Problemen vor kurzem auch noch rumgeeiert bin versuche ich Dir mal mit folgenden zu helfen.
Immer vorausgesetzt ich habe deine Probleme richtig verstanden.

Also um ein Logfile anzulegen kannst Du die Fhem Eingabezeile nutzen und folgendes eingeben:
define Testlog FileLog ./log/Testlog-%Y-%m.log Du_Gas:StandAktuell:.*

Dabei ist "Testlog" der frei wählbare Name des anzulegenden Filelogauftrages
"./log/Testlog-%Y-%m.log" ist der Pfad und Name der Logdatei (müsste nicht gleich lauten wie der Filelogauftrag)
Im Beispiel soll nun ein Reading "StandAktuell" in dem Dummy "Du_Gas" gelogt werden.
Nicht unwichtig ist das :.* hinter StandAktuell. In einem deiner anderen Beiträge steht bei Dir z.B. nur ".*" (könnte falsch sein)
So und nun kann man von Fhem weitere Readings dazufügen lassen indem man Testlog aufruft und oben bei Regexp parts die Möglichkeit "SET" benützt.
In meinem Beispiel wähle ich bei SET als erstes meinen Dummy "Du_Gas" aus und dahinter das gewünschte Reading als Beispiel "VerbrauchStunde" und erhalte dann als DEF Eintrag

  ./log/Testlog-%Y-%m.log Du_Gas:StandAktuell:.*|Du_Gas:VerbrauchStunde:.*

Und klar, bei dem Reading muss sich was tun. Hier z.B. steht bisher nur
2022-10-22_11:25:40 Du_Gas StandAktuell: 8999.44
2022-10-22_11:34:25 Du_Gas StandAktuell: 8999.45

im Logfile weil das Ereignis für "VerbrauchStunde" nur zur vollen Stunde (durch AT beschrieben) ausgelöst wird.
Aber dann wird auch das zweite gelogt.
2022-10-22_11:25:40 Du_Gas StandAktuell: 8999.44
2022-10-22_11:34:25 Du_Gas StandAktuell: 8999.45
2022-10-22_11:59:59 Du_Gas VerbrauchStunde: 0.020

Hoffe es hilft. Klaus
Linux Mint, Raspi-OSMC, Raspi-fhem, WemosD1, Shelly, CUL

FHEMAN

Zitat von: Andi.Riese am 21 Oktober 2022, 22:09:09
Ich hab versucht das mithilfe eines notifys hinzukriegen, das auf power reagiert und den momentanen Wert von energy in ein neues reading energy2 schreibt, funktioniert aber leider nicht (wie im anderen Post beschrieben). Das  neue  reading energy2 wird einfach nicht geloggt. Und mit einem userreading geht's auch nicht.

Versuch mal, sleep in deinem notify hinzuzufügen:
fhem("sleep 0.1;setreading DEVICENAME energy2 WERT");
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Sany

Moin,

ZitatUnd mit einem userreading geht's auch nicht.
wenn ich dich richtig verstanden habe ist ein userreading genau das, was Du suchst und ja, das geht.
Aber um das sinnvoll zu verdeutlichen solltest Du bitte mal ein list von diesem Device mit den readings power und energy und einen Auszug aus dem EventMonitor von diesem Device liefern, damit man sieht, was da wie an Events kommt. Dann kann man auch ein funktionierendes userreading "basteln".

Und vielleicht beschreibst Du auch noch dein Ziel etwas genauer, warum Du bei einem power-event den energy-Wert loggen möchtest. m.M.n. wäre es sinnvoller, den energy-Wert zu loggen, wenn er sich ändert, daraus kann man sich dann die "power" für den Zeitraum von der letzten energy-Änderung bis zur jetzigen rechnen.


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

Stromzähler

ZitatVersuch mal, sleep in deinem notify hinzuzufügen

... das wird's vermutlich sein. Ohne sleep kein Event aus einem Notify.