FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: TheTrumpeter am 21 Juli 2022, 07:04:54

Titel: GELÖST: Durch notify geändertes Reading im Filelog
Beitrag von: TheTrumpeter am 21 Juli 2022, 07:04:54
Ich habe ein notify, das meinen Strom-Momentanverbrauch berechnet, wenn sich die Werte vom SmartMeter oder PV-Anlage ändern. (Wg. Kleinsterzeugeranlage habe ich keinen separaten Stromzähler für die Einspeisung, d.h. ich errechne den Verbrauch aus dem Bezug des SmartMeter, dem Einspeiswert des SmartMeter und der Momentanleistung vom Wechselrichter.)

Das Notify berechnet ein paar Readings, die ich im Smartmeter-Device ablege, und ein paar Readings, die ich im Wechselrichter-Device ablege.
Wie schaffe ich es nun, dass diese berechneten Readings bei jeder Änderung auch ins Filelog des entsprechenden Devices kommen?

(Ich meine wo gelesen zu haben, dass für alle Aktionen vom notify kein Event generiert wird. Offenbar gilt das aber nur für das auslösende Device? (Wenn das notify vom Wechselrichter-Device getriggert wird, werden die Readings, die ich im Smartmeter-Device ändere, sauber geloggt und umgekehrt.)

Aktuell sieht mein notify so aus:
defmod Stromzaehler.Berechnungen notify PVAnlageDTURestAPI:HM800-P_AC:.*|SmartMeterRestAPI:Momentanleistung_Bezug:.*|SmartMeterRestAPI:Momentanleistung_Einspeisung:.* \
setreading SmartMeterRestAPI Momentanleistungsbedarf {(round((List::Util::max(0, ([SmartMeterRestAPI:Momentanleistung_Bezug:d]+[PVAnlageDTURestAPI:HM800-P_AC:d]-[SmartMeterRestAPI:Momentanleistung_Einspeisung:d]))), 0))} W;; \
setreading PVAnlageDTURestAPI Eigennutzung_momentan {(([PVAnlageDTURestAPI:HM800-P_AC:d]<[SmartMeterRestAPI:Momentanleistungsbedarf:d])?([PVAnlageDTURestAPI:HM800-P_AC:d]):([SmartMeterRestAPI:Momentanleistungsbedarf:d]))} W;; \
trigger PVAnlageDTURestAPI Eigennutzung_gesamt_dummy


Den "trigger" auf "Eigennutzung_gesamt_dummy" habe ich, damit der Integrator dort läuft, was offenbar sauber funktioniert.
Eigennutzung_gesamt_dummy:Eigennutzung_momentan.* integral {(ReadingsNum("PVAnlageDTURestAPI","Eigennutzung_momentan",0))/3600},

Habe bereits versucht auch "trigger" auf die anderen beiden Readings zu machen, z.B. "trigger SmartMeterRestAPI Momentanleistungsbedarf", aber dann wird nur der Trigger geloggt und nicht der geänderte Wert.
Titel: Antw:Durch notify geändertes Reading im Filelog
Beitrag von: MadMax-FHEM am 21 Juli 2022, 07:46:36
Normalerweise erzeugt setreading Events, außer du schränkst diese beim Device ein, z.B.: event-on-change
EDIT: das notify wird aber getriggert, also die Readings tauchen im Device auf?

Mach doch den Eventmonitor auf, dann solltest du die auch sehen...
https://wiki.fhem.de/wiki/Event_monitor

Dort kannst du dir auch FileLog anlegen lassen...
https://wiki.fhem.de/wiki/Event_monitor#Vorgehensweise_beim_Anlegen_eines_Ger.C3.A4tes

Zitat
Wie schaffe ich es nun, dass diese berechneten Readings bei jeder Änderung auch ins Filelog des entsprechenden Devices kommen?
Wenn du bereits ein FileLog für das Device hast, dann eben die RegEx anpassen und wenn du noch keines hast, dann eben anlegen lassen (Eventmonitor).

Warum ein notify statt userReadings?
https://wiki.fhem.de/wiki/UserReadings

Gruß, Joachim
Titel: Antw:Durch notify geändertes Reading im Filelog
Beitrag von: TheTrumpeter am 21 Juli 2022, 08:22:49
Zitat von: MadMax-FHEM am 21 Juli 2022, 07:46:36
Normalerweise erzeugt setreading Events, außer du schränkst diese beim Device ein, z.B.: event-on-change
Da ist keine Einschränkung vorhanden (bzw. ist es sogar explizit gelistet). Ich meine im Zuge einer anderen Frage mal gelernt zu haben, dass alles, was aus einem "notify" getriggert wird eben keine Events erzeugt.
Hab's nun auch gefunden: https://forum.fhem.de/index.php?topic=28017.0

Zitat von: MadMax-FHEM am 21 Juli 2022, 07:46:36
Mach doch den Eventmonitor auf, dann solltest du die auch sehen...
https://wiki.fhem.de/wiki/Event_monitor
Habe ich schon gemacht, dort sind die Events eben nicht drin.

Zitat von: MadMax-FHEM am 21 Juli 2022, 07:46:36
Dort kannst du dir auch FileLog anlegen lassen...
https://wiki.fhem.de/wiki/Event_monitor#Vorgehensweise_beim_Anlegen_eines_Ger.C3.A4tes
Die Filelogs habe ich schon, die Readings werden ja auch geloggt, nur nicht immer. Für mich sieht es so aus als ob sie nur dann geloggt werden, wenn das notify vom jeweils anderen Device getriggert wurde.

Zitat von: MadMax-FHEM am 21 Juli 2022, 07:46:36
Warum ein notify statt userReadings?
https://wiki.fhem.de/wiki/UserReadings
Weil ein UserReading nach meinem Verständnis nur durch Änderung des eigenen Devices getriggert werden kann. In den Berechnungen sind aber Readings von 2 unterschiedlichen Devices drin. Wenn sich mindestens 1 davon ändert, muss die Berechnung durchgeführt werden.


Werde nun noch die Variante mit dem Sleep probieren, die in dem Beitrag von oben erwähnt ist. Jetzt wo ich es lese verstehe ich auch wieder, warum ich in manchen notifys ein "sleep 0" vor manchen Befehlen hab'.
Titel: Antw:Durch notify geändertes Reading im Filelog
Beitrag von: MadMax-FHEM am 21 Juli 2022, 08:29:30
Zitat von: TheTrumpeter am 21 Juli 2022, 08:22:49
Werde nun noch die Variante mit dem Sleep probieren, die in dem Beitrag von oben erwähnt ist. Jetzt wo ich es lese verstehe ich auch wieder, warum ich in manchen notifys ein "sleep 0" vor manchen Befehlen hab'.

Das ist wohl eine Variante.

Ich denke notify bzw. ein setreading darin unterscheidet nicht so genau, ob das notify auch vom zu setzenden Reading getriggert wird, es "kuckt" wohl nur auf das Device...
...und sperrt wegen "Loop".

userReadings ja, nur vom eigenen Device. Abfrage anderer Devices geht nat.

Viel Erfolg, Joachim
Titel: Antw:Durch notify geändertes Reading im Filelog
Beitrag von: DetlefR am 21 Juli 2022, 14:45:12
ZitatHabe bereits versucht auch "trigger" auf die anderen beiden Readings zu machen, z.B. "trigger SmartMeterRestAPI Momentanleistungsbedarf", aber dann wird nur der Trigger geloggt und nicht der geänderte Wert.
Mit trigger SmartMeterRestAPI Momentanleistungsbedarf: NeuerWert
sollte das auch gehen.

Dass Änderungen aus einem Notify nicht vom auslösenden Device getriggert werden, ist mir auch schon auf die Füße gefallen.
Titel: Antw:Durch notify geändertes Reading im Filelog
Beitrag von: TheTrumpeter am 21 Juli 2022, 15:06:17
Zitat von: DetlefR am 21 Juli 2022, 14:45:12
Mit trigger SmartMeterRestAPI Momentanleistungsbedarf: NeuerWert
sollte das auch gehen.

Dass Änderungen aus einem Notify nicht vom auslösenden Device getriggert werden, ist mir auch schon auf die Füße gefallen.
Ja, das dachte ich auch, aber ich war zu dumm die korrekte Syntax zu erraten. Habe es einfach nicht geschafft den Wert anzuzeigen.
Titel: Antw:GELÖST: Durch notify geändertes Reading im Filelog
Beitrag von: TheTrumpeter am 22 Juli 2022, 06:26:15
So, mit dem "sleep 0" vor dem "setreading" funktioniert es nun sauber. Thema gelöst.