Kommandos aus Notify und DOIF werden nicht geloggt

Begonnen von Rampler, 10 Juni 2025, 06:40:27

Vorheriges Thema - Nächstes Thema

Rampler

Hallo zusammen,
wenn das folgende DOIF triggert, vermisse ich den Logeintrag:

## GoodWe SOC auf 90% beschränken
## SOC >= 90% => 0A Ladestrom
([GoodWe:SOC] >= 90)
 (set GoodWe BMS_Charge_Current_Max 0)
## SOC < 90% => 25A Ladestrom
DOELSE
 (set GoodWe BMS_Charge_Current_Max 25)

Im EventMonitor erscheint das Event allerdings.

2025-06-09 18:54:58 ModbusAttr GoodWe SOC: 92
2025-06-09 18:54:58 ModbusAttr GoodWe BMS_Charge_Current_Max: 0

Wenn ich manuell folgenden Kommando:
set GoodWe BMS_Charge_Current_Max 0eingebe wird dieser auch im EVENT Monitor angezeigt UND in meinem Logfile geloggt, auch mehrmals, da event-on-update für das Reading definiert ist.

Hier ist mal die Definitionen des Filelogs:

Internals:
   DEF        ./log/WR-%Y-%m.log GoodWe|HZ.GoodWe|HZ.wr
   FD         83
   FUUID      6759e9d0-f33f-b6d9-84cf-91aadbb8f32c099a
   NAME       FileLog_WR
   NOTIFYDEV  GoodWe,HZ.GoodWe,HZ.wr
   NR         708
   NTFY_ORDER 50-FileLog_WR
   REGEXP     GoodWe|HZ.GoodWe|HZ.wr
   STATE      active
   TYPE       FileLog
   addLogMinInterval 3600
   currentlogfile ./log/WR-2025-06.log
   logfile    ./log/WR-%Y-%m.log
   READINGS:
     2025-06-10 06:00:56   linesInTheFile  17537
Attributes:
   addLog     HZ.wr:Ventilator:3600,HZ.GoodWe:Goodwe_Relay:3600
   comment    .*(PV_[1-2]_Power|PV_[1-2]_Voltage|stat|CONNECTED|Heizstab[1-3]).*
   icon       time_note
   ignoreRegexp .*(PV_[1-2]_Power|PV_[1-2]_Voltage|stat|CONNECTED).*
   nrarchive  1
   room       Logs,PV


Damian (Entwickler von DOIF) meint ich müsste auf der Seite des Loggens suchen...

Hier ist der Link:
https://forum.fhem.de/index.php?topic=141856.0

Ich selbst bin mittlerweile ratlos, kann mir das nicht erklären, und hoffe nun auf Unterstützung/Hilfe.

3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Beta-User

Da du ein und dasselbe Gerät als Auslöser und als Kommando-Ziel hast, würde ich auf die Benennung des DOIF bzw. FileLog als "Ursache" tippen.
Vermeiden von event-loops ;) => zuerst muss das DOIF greifen, dann erst das Log.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Rampler

Habe jetzt mal auf notify umgestellt. Bringt das gleiche Ergebnis.
Im Event-Monitor wird der Event und die Action angezeigt, jedoch nicht geloggt:

Event Monitor:

2025-06-10 08:46:05 ModbusAttr GoodWe SOC: 54
2025-06-10 08:46:05 ModbusAttr GoodWe BMS_Charge_Current_Max: 25
2025-06-10 08:46:56 ModbusAttr GoodWe PV_Total_Power: 937
2025-06-10 08:46:56 ModbusAttr GoodWe Power_Battery: -514
2025-06-10 08:46:56 ModbusAttr GoodWe AC_ActivePower: 6

Logfile:

2025-06-10_08:45:56 GoodWe SOC: 54
2025-06-10_08:46:56 GoodWe PV_Total_Power: 937
2025-06-10_08:46:56 GoodWe Power_Battery: -514
2025-06-10_08:46:56 GoodWe AC_ActivePower: 6
....

Das verwendete notify:

GoodWe:SOC:.*  {
if ($EVTPART1 >= '90' && ReadingsVal('GoodWe','BMS_Charge_Current_Max','0') != '0')
{fhem "set GoodWe BMS_Charge_Current_Max 0" }
if ($EVTPART1 < '90' && ReadingsVal('GoodWe','BMS_Charge_Current_Max','25') != '25')
{fhem "set GoodWe BMS_Charge_Current_Max 25" }
};

Also ist meiner Meinung nach als ursache das DOIF raus, da ja bei Notify das gleiche passiert..

Sehr Merkwürdig ..
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Rampler

Zitat von: Beta-User am 10 Juni 2025, 08:01:21Da du ein und dasselbe Gerät als Auslöser und als Kommando-Ziel hast, würde ich auf die Benennung des DOIF bzw. FileLog als "Ursache" tippen.
Vermeiden von event-loops ;) => zuerst muss das DOIF greifen, dann erst das Log.

Sorry, habe meinen letzen Betrag geschrieben, bevor ich Deinen hier gelesen habe.
OK, das Gerät auf das via DOIF oder Notify reagiert wird und gegen das das Kommand gesendet wird ist identisch, nämlich "GoodWe".
Das Logging Device heißt "FileLog_WR", das DOIF Device "SOC_Limit".
Sollte denn nicht das DOIF um eine Selbstriggerung zu vermeiden das Kommand gar nicht erst aussenden ?
Das DOIF sendet ja das Kommand, nur das Logging fehlt.
Oder verstehe ich da was faslch ?
 
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Rampler

Verwirrend sind auch die etwas unterschiedlichen Timestamps in Post #2, zwischen Event Monitor und Logfile.
Wobei ich nicht weiß, woher das kommt.
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

frank

so wird es wahrscheinlich funktionieren:

GoodWe:SOC:.*  {
if ($EVTPART1 >= '90' && ReadingsVal('GoodWe','BMS_Charge_Current_Max','0') != '0')
{sleep 0.1; fhem "set GoodWe BMS_Charge_Current_Max 0" }
if ($EVTPART1 < '90' && ReadingsVal('GoodWe','BMS_Charge_Current_Max','25') != '25')
{sleep 0.1; fhem "set GoodWe BMS_Charge_Current_Max 25" }
};
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

#6
Mach mal eine 1 vor den DOIF-Namen.

Dann hat sich die Diskussion vielleicht erledigt bzw. es wird klarer....

@frank: vermutlich wird das nicht helfen, weil erst das Device geprüft wird, und erst bei der Ausführung die ganze regexp, afair.
Edith: mit sleep geht es natürlich....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Rampler

Der sleep führte zum Erfolg !!

Ich habe jetzt im DOIF einen Wait 1:1 eingebaut, damit funktioniert es auch super.
Der rename des DOIF Devices von SOC_Limit nach 1SOC_Limit hat leider nichts gebracht.

Fazit: Ist wohl ein Timing Problem ..

@Beta-User und @frank => Vielen Dank für eure Hilfe !!
 

3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Beta-User

Zitat von: Rampler am 10 Juni 2025, 09:59:11Der sleep führte zum Erfolg !!

Ich habe jetzt im DOIF einen Wait 1:1 eingebaut, damit funktioniert es auch super.
Der rename des DOIF Devices von SOC_Limit nach 1SOC_Limit hat leider nichts gebracht.

Fazit: Ist wohl ein Timing Problem ..

@Beta-User und @frank => Vielen Dank für eure Hilfe !!

Evtl. müssten gewisse interne Strukturen neu initialisiert werden (z.B. durch einen Neustart), das rename _sollte_ m.E. prinzipiell auch funktionieren.
Vorteil: nur eine Event-loop für das log-Device.
Nachteil: man muss wissen, warum es (nicht) funktioniert....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors