Hauptmenü

DOIF String Vergleich

Begonnen von pcjogi, 31 Januar 2024, 21:49:43

Vorheriges Thema - Nächstes Thema

pcjogi

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:
Haupt-Fhem (Docker auf Synology), Sub-Fhem (433Mhz und 833Mhz) auf RasPi, Sub-Fhem (Heizungssteuerung) auf RasPi, Sub_Fhem (System) auf RasPi, IoBroker zur Darstellung (Docker auf Synology), alles verbunden über einen MQTT Broker, insgesamt ca. 100 Sensoren/Aktoren

rabehd

Hast Du das aus dem Eventmonitor heraus erstellt?
Auch funktionierende Lösungen kann man hinterfragen.

Damian

defmod EG_KUEC_Funkbridge02_DOIF_3 DOIF ([EG_KUEC_Funkbridge02:RfRaw_Data] eq "AAA425C6015403CA45441555") ()
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

pcjogi

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)
Haupt-Fhem (Docker auf Synology), Sub-Fhem (433Mhz und 833Mhz) auf RasPi, Sub-Fhem (Heizungssteuerung) auf RasPi, Sub_Fhem (System) auf RasPi, IoBroker zur Darstellung (Docker auf Synology), alles verbunden über einen MQTT Broker, insgesamt ca. 100 Sensoren/Aktoren

pcjogi

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)
Haupt-Fhem (Docker auf Synology), Sub-Fhem (433Mhz und 833Mhz) auf RasPi, Sub-Fhem (Heizungssteuerung) auf RasPi, Sub_Fhem (System) auf RasPi, IoBroker zur Darstellung (Docker auf Synology), alles verbunden über einen MQTT Broker, insgesamt ca. 100 Sensoren/Aktoren

passibe

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.

pcjogi

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
Haupt-Fhem (Docker auf Synology), Sub-Fhem (433Mhz und 833Mhz) auf RasPi, Sub-Fhem (Heizungssteuerung) auf RasPi, Sub_Fhem (System) auf RasPi, IoBroker zur Darstellung (Docker auf Synology), alles verbunden über einen MQTT Broker, insgesamt ca. 100 Sensoren/Aktoren

pcjogi

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
Haupt-Fhem (Docker auf Synology), Sub-Fhem (433Mhz und 833Mhz) auf RasPi, Sub-Fhem (Heizungssteuerung) auf RasPi, Sub_Fhem (System) auf RasPi, IoBroker zur Darstellung (Docker auf Synology), alles verbunden über einen MQTT Broker, insgesamt ca. 100 Sensoren/Aktoren

Damian

AAA425A80122039845411555 ist nicht AAA425C6015403CA45441555
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rabehd

Zitat von: Damian am 31 Januar 2024, 22:50:09AAA425A80122039845411555 ist nicht AAA425C6015403CA45441555

([EG_KUEC_Funkbridge02:"^RfRaw_Data:.AAA425B2012C03AC45411555$"]) () wurde uns auch noch angeboten.
Auch funktionierende Lösungen kann man hinterfragen.

Per

Ein Event ist kein String, daher triggert es, ist aber immer falsch. Du kannst einen Vorgabewert angeben, dann geht der Stringvergleich.

Damian

Offenbar ändern sich hier die Inhalte ständig, sodass die Abfragen nicht wahr sind. Die Syntax ist aber in beiden Fällen korrekt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rabehd

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
Auch funktionierende Lösungen kann man hinterfragen.