FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: pcjogi am 31 Januar 2024, 21:49:43

Titel: DOIF String Vergleich
Beitrag von: pcjogi am 31 Januar 2024, 21:49:43
Ich möchte einen simplen Stringvergleich in einem DOIF realisieren und scheitere:

Wenn das Reading "RfRaw_Data" im Device "EG_KUEC_Funkbridge02" den Wert "AAA425C6015403CA45441555" annimmt soll etwas passieren. (Der Wert kommt von einem 433 MHz Sender)

Dazu habe ich ein simples
defmod EG_KUEC_Funkbridge02_DOIF_3 DOIF ([EG_KUEC_Funkbridge02:"RfRaw_Data"] eq "AAA425C6015403CA45441555") ()definiert. Leider kommt im DOIF immer nur cmd_2 (in der Klammer wird dann wenn es funktioniert natürlich ein sinnvolles set ... stehen)

Wo ist mein Brett vor dem Kopf.



Ich habe folgende Device definiert:
Ein Tasmota-Funkbridge
Internals:
   FUUID      65902552-f33f-0692-05dd-a563083297a7b852
   IODev      p_mqtt
   LASTInputDev p_mqtt
   MSGCNT     74440
   NAME       EG_KUEC_Funkbridge02
   NR         201
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 74440
   p_mqtt_MSGCNT 74440
   p_mqtt_TIME 2024-01-31 21:40:02
   READINGS:
     2024-01-31 21:40:02   Heap            25
     2024-01-25 09:25:09   IODev           p_mqtt
     2024-01-31 18:30:47   LWT             Online
     2024-01-31 21:40:02   LoadAvg         19
     2024-01-31 21:40:02   MqttCount       44
     2024-01-31 20:39:28   RfCode          6361828
     2024-01-31 20:39:28   RfHigh          800
     2024-01-31 20:39:28   RfLow           260
     2024-01-29 08:12:48   RfRaw           ON
     2024-01-31 21:39:55   RfRaw_Data      AAA425BC012203AC45411555
     2024-01-29 07:40:04   RfReceived_Data 11872136
     2024-01-29 07:40:04   RfReceived_High 710
     2024-01-29 07:40:04   RfReceived_Low  200
     2024-01-29 07:40:04   RfReceived_RfKey None
     2024-01-29 07:40:04   RfReceived_Sync 7490
     2024-01-31 20:39:28   RfSync          8300
     2024-01-31 21:40:02   Sleep           50
     2024-01-31 21:40:02   SleepMode       Dynamic
     2024-01-31 21:40:02   Time            2024-01-31T21:40:02
     2024-01-31 21:40:02   Uptime          43T01:35:30
     2024-01-31 21:40:02   UptimeSec       3720930
     2024-01-31 21:40:02   Wifi_AP         1
     2024-01-31 21:40:02   Wifi_BSSId      7E:45:58:37:14:86
     2024-01-31 21:40:02   Wifi_Channel    1
     2024-01-31 21:40:02   Wifi_Downtime   0T00:01:26
     2024-01-31 21:40:02   Wifi_LinkCount  10
     2024-01-31 21:40:02   Wifi_Mode       11n
     2024-01-31 21:40:02   Wifi_RSSI       100
     2024-01-31 21:40:02   Wifi_SSId       CSSIoT
     2024-01-31 21:40:02   Wifi_Signal     -27
Attributes:
   IODev      p_mqtt
   icon       mqtt_device
   readingList CSS/EG/KUEC/Funkbridge02/INFO1:.* { json2nameValue($EVENT) }
CSS/EG/KUEC/Funkbridge02/INFO2:.* { json2nameValue($EVENT) }
CSS/EG/KUEC/Funkbridge02/INFO3:.* { json2nameValue($EVENT) }
CSS/EG/KUEC/Funkbridge02/STATE:.* { json2nameValue($EVENT) }
CSS/EG/KUEC/Funkbridge02/LWT:.* LWT
CSS/EG/KUEC/Funkbridge02/RESULT:.* { json2nameValue($EVENT) }
CSS/EG/KUEC/Funkbridge02/stat/RESULT:.* { json2nameValue($EVENT) }

   room       -Küche,_MQTT
   setList    RfSync CSS/EG/KUEC/Funkbridge02/cmnd/RfSync
RfCode CSS/EG/KUEC/Funkbridge02/cmnd/RfCode
RfHigh CSS/EG/KUEC/Funkbridge02/cmnd/RfHigh
RfLow  CSS/EG/KUEC/Funkbridge02/cmnd/RfLow
und ein DOIF
Internals:
   CFGFN     
   DEF        ([EG_KUEC_Funkbridge02:"RfRaw_Data"] eq "AAA425C6015403CA45441555") ()

   FUUID      65baab46-f33f-0692-31c2-424ea9d417d64dba
   MODEL      FHEM
   NAME       EG_KUEC_Funkbridge02_DOIF_3
   NOTIFYDEV  global,EG_KUEC_Funkbridge02
   NR         214
   NTFY_ORDER 50-EG_KUEC_Funkbridge02_DOIF_3
   STATE      cmd_2
   TYPE       DOIF
   VERSION    27740 2023-07-10 09:31:11
   eventCount 46
   READINGS:
     2024-01-31 21:41:32   Device          EG_KUEC_Funkbridge02
     2024-01-31 21:39:55   cmd             2
     2024-01-31 21:39:55   cmd_event       EG_KUEC_Funkbridge02
     2024-01-31 21:39:55   cmd_nr          2
     2024-01-31 21:41:32   e_EG_KUEC_Funkbridge02_events Wifi_BSSId: 7E:45:58:37:14:86,Wifi_RSSI: 100,Wifi_SSId: CSSIoT,Time: 2024-01-31T21:41:32,Wifi_AP: 1,MqttCount: 44,Wifi_LinkCount: 10,SleepMode: Dynamic,UptimeSec: 3721020,LoadAvg: 19,Wifi_Downtime: 0T00:01:26,Heap: 25,Wifi_Mode: 11n,Wifi_Channel: 1,Uptime: 43T01:37:00,Wifi_Signal: -28,Sleep: 50
     2024-01-31 21:39:54   mode            enabled
     2024-01-31 21:39:55   state           cmd_2
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       EG_KUEC_Funkbridge02:
         0:
           &STATE     ^EG_KUEC_Funkbridge02$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('EG_KUEC_Funkbridge02',$hash,'RfRaw_Data',1) eq "AAA425C6015403CA45441555"
   do:
     0:
       0         
     1:
   helper:
     NOTIFYDEV  global,EG_KUEC_Funkbridge02
     event      Wifi_BSSId: 7E:45:58:37:14:86,Wifi_RSSI: 100,Wifi_SSId: CSSIoT,Time: 2024-01-31T21:41:32,Wifi_AP: 1,MqttCount: 44,Wifi_LinkCount: 10,SleepMode: Dynamic,UptimeSec: 3721020,LoadAvg: 19,Wifi_Downtime: 0T00:01:26,Heap: 25,Wifi_Mode: 11n,Wifi_Channel: 1,Uptime: 43T01:37:00,Wifi_Signal: -28,Sleep: 50
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   EG_KUEC_Funkbridge02
     timerevent Wifi_BSSId: 7E:45:58:37:14:86,Wifi_RSSI: 100,Wifi_SSId: CSSIoT,Time: 2024-01-31T21:41:32,Wifi_AP: 1,MqttCount: 44,Wifi_LinkCount: 10,SleepMode: Dynamic,UptimeSec: 3721020,LoadAvg: 19,Wifi_Downtime: 0T00:01:26,Heap: 25,Wifi_Mode: 11n,Wifi_Channel: 1,Uptime: 43T01:37:00,Wifi_Signal: -28,Sleep: 50
     triggerDev EG_KUEC_Funkbridge02
     timerevents:
       Wifi_BSSId: 7E:45:58:37:14:86
       Wifi_RSSI: 100
       Wifi_SSId: CSSIoT
       Time: 2024-01-31T21:41:32
       Wifi_AP: 1
       MqttCount: 44
       Wifi_LinkCount: 10
       SleepMode: Dynamic
       UptimeSec: 3721020
       LoadAvg: 19
       Wifi_Downtime: 0T00:01:26
       Heap: 25
       Wifi_Mode: 11n
       Wifi_Channel: 1
       Uptime: 43T01:37:00
       Wifi_Signal: -28
       Sleep: 50
     timereventsState:
       Wifi_BSSId: 7E:45:58:37:14:86
       Wifi_RSSI: 100
       Wifi_SSId: CSSIoT
       Time: 2024-01-31T21:41:32
       Wifi_AP: 1
       MqttCount: 44
       Wifi_LinkCount: 10
       SleepMode: Dynamic
       UptimeSec: 3721020
       LoadAvg: 19
       Wifi_Downtime: 0T00:01:26
       Heap: 25
       Wifi_Mode: 11n
       Wifi_Channel: 1
       Uptime: 43T01:37:00
       Wifi_Signal: -28
       Sleep: 50
     triggerEvents:
       Wifi_BSSId: 7E:45:58:37:14:86
       Wifi_RSSI: 100
       Wifi_SSId: CSSIoT
       Time: 2024-01-31T21:41:32
       Wifi_AP: 1
       MqttCount: 44
       Wifi_LinkCount: 10
       SleepMode: Dynamic
       UptimeSec: 3721020
       LoadAvg: 19
       Wifi_Downtime: 0T00:01:26
       Heap: 25
       Wifi_Mode: 11n
       Wifi_Channel: 1
       Uptime: 43T01:37:00
       Wifi_Signal: -28
       Sleep: 50
     triggerEventsState:
       Wifi_BSSId: 7E:45:58:37:14:86
       Wifi_RSSI: 100
       Wifi_SSId: CSSIoT
       Time: 2024-01-31T21:41:32
       Wifi_AP: 1
       MqttCount: 44
       Wifi_LinkCount: 10
       SleepMode: Dynamic
       UptimeSec: 3721020
       LoadAvg: 19
       Wifi_Downtime: 0T00:01:26
       Heap: 25
       Wifi_Mode: 11n
       Wifi_Channel: 1
       Uptime: 43T01:37:00
       Wifi_Signal: -28
       Sleep: 50
   internals:
   readings:
   trigger:
     all         EG_KUEC_Funkbridge02
   uiState:
   uiTable:
Attributes:
Titel: Aw: DOIF String Vergleich
Beitrag von: rabehd am 31 Januar 2024, 21:54:28
Hast Du das aus dem Eventmonitor heraus erstellt?
Titel: Aw: DOIF String Vergleich
Beitrag von: Damian am 31 Januar 2024, 22:02:16
defmod EG_KUEC_Funkbridge02_DOIF_3 DOIF ([EG_KUEC_Funkbridge02:RfRaw_Data] eq "AAA425C6015403CA45441555") ()
Titel: Aw: DOIF String Vergleich
Beitrag von: pcjogi am 31 Januar 2024, 22:06:53
Zitat von: rabehd am 31 Januar 2024, 21:54:28Hast Du das aus dem Eventmonitor heraus erstellt?
Wenn ich das mache
   
([EG_KUEC_Funkbridge02:"^RfRaw_Data:.AAA425B2012C03AC45411555$"]) ()
passiert das gleiche (nur cmd_2)
Titel: Aw: DOIF String Vergleich
Beitrag von: pcjogi am 31 Januar 2024, 22:07:33
Zitat von: Damian am 31 Januar 2024, 22:02:16defmod EG_KUEC_Funkbridge02_DOIF_3 DOIF ([EG_KUEC_Funkbridge02:RfRaw_Data] eq "AAA425C6015403CA45441555") ()

Und auch bei dieser Definition passiert das gleich (nur cmd_2)
Titel: Aw: DOIF String Vergleich
Beitrag von: passibe am 31 Januar 2024, 22:28:13
Schreib doch mal einen Befehl in die Klammer.
Wenn du ein "leeres" DOIF ausführst, dann springt er kurz auf cmd_1 und dann sofort auf cmd_2.

Dass er bei ausführen des Events überhaupt von initialized auf cmd_2 springt (wenn ich das richtig verstanden habe?) zeigt doch, dass das Event gematched wird.
Titel: Aw: DOIF String Vergleich
Beitrag von: pcjogi am 31 Januar 2024, 22:36:19
Zitat von: passibe am 31 Januar 2024, 22:28:13Schreib doch mal einen Befehl in die Klammer.
Wenn du ein "leeres" DOIF ausführst, dann springt er kurz auf cmd_1 und dann sofort auf cmd_2.

Dass er bei ausführen des Events überhaupt von initialized auf cmd_2 springt (wenn ich das richtig verstanden habe?) zeigt doch, dass das Event gematched wird.
Leider passiert dann gar nichts mehr
Titel: Aw: DOIF String Vergleich
Beitrag von: pcjogi am 31 Januar 2024, 22:38:26
Ich habe jetzt auch ohne Erfolg mit einem notify getestet. Irgendwie habe ich den Verdacht, das der Event nicht so ganz funktioniert.

daher hier der Event aus dem Eventlog:
2024-01-31 22:37:50.231 MQTT2_DEVICE EG_KUEC_Funkbridge02 RfRaw_Data: AAA425A80122039845411555
Vielleich sieht ja da jemand etwas.

Danke
Titel: Aw: DOIF String Vergleich
Beitrag von: Damian am 31 Januar 2024, 22:50:09
AAA425A80122039845411555 ist nicht AAA425C6015403CA45441555
Titel: Aw: DOIF String Vergleich
Beitrag von: rabehd am 01 Februar 2024, 07:08:15
Zitat von: Damian am 31 Januar 2024, 22:50:09AAA425A80122039845411555 ist nicht AAA425C6015403CA45441555

([EG_KUEC_Funkbridge02:"^RfRaw_Data:.AAA425B2012C03AC45411555$"]) () wurde uns auch noch angeboten.
Titel: Aw: DOIF String Vergleich
Beitrag von: Per am 01 Februar 2024, 08:29:18
Ein Event ist kein String, daher triggert es, ist aber immer falsch. Du kannst einen Vorgabewert angeben, dann geht der Stringvergleich.
Titel: Aw: DOIF String Vergleich
Beitrag von: Damian am 01 Februar 2024, 10:37:06
Offenbar ändern sich hier die Inhalte ständig, sodass die Abfragen nicht wahr sind. Die Syntax ist aber in beiden Fällen korrekt.
Titel: Aw: DOIF String Vergleich
Beitrag von: rabehd am 01 Februar 2024, 11:02:19
Zitat von: Damian am 01 Februar 2024, 10:37:06Offenbar ändern sich hier die Inhalte ständig, sodass die Abfragen nicht wahr sind. Die Syntax ist aber in beiden Fällen korrekt.
Anfang und Ende stimmen scheinbar, ggf. hilft das, aber man müßte die eigentliche Aufgabe und das Umfeld kennen.

AAA425...1555