FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Hackstall am 24 August 2021, 20:54:33

Titel: notify Problem: Event wird getriggert aber das notify reagiert nicht
Beitrag von: Hackstall am 24 August 2021, 20:54:33
Hallo.

ich habe folgendes kurioses Problem:

Ich erhalte während des Betriebs folgende Events:

2021-08-24 20:51:32.179 MQTT_DEVICE ESP32_CAM_IoT_KG_VK_Gas SENSOR: 5581534
2021-08-24 20:51:32.179 MQTT_DEVICE ESP32_CAM_IoT_KG_VK_Gas SENSOR_IDENTICAL_COUNT: 11


Wie Ihr seht kommen die Events nahezu gleichzeitig.
Der SENSOR triggert auch den notify (s.u.)
Der SENSOR_IDENTICAL_COUNT triggers aber nicht!!!!

Meine Notify´s sehen so aus:

define ESP32_CAM_IoT_KG_VK_Gas MQTT_DEVICE ESP32_CAM_IoT_GAS
setuuid ESP32_CAM_IoT_KG_VK_Gas 6123defd-f33f-7267-c832-30367468230f105b
attr ESP32_CAM_IoT_KG_VK_Gas IODev MosquittoServer
attr ESP32_CAM_IoT_KG_VK_Gas event-on-change-reading SENSOR_IDENTICAL_COUNT
attr ESP32_CAM_IoT_KG_VK_Gas event-on-update-reading SENSOR
attr ESP32_CAM_IoT_KG_VK_Gas room Keller,MQTT
attr ESP32_CAM_IoT_KG_VK_Gas subscribeReading_CONNECTION tele/ESP32_CAM_IoT_GAS/connection
attr ESP32_CAM_IoT_KG_VK_Gas subscribeReading_ERROR tele/ESP32_CAM_IoT_GAS/main/error
attr ESP32_CAM_IoT_KG_VK_Gas subscribeReading_FREEMEM tele/ESP32_CAM_IoT_GAS/freeMem
attr ESP32_CAM_IoT_KG_VK_Gas subscribeReading_JSON tele/ESP32_CAM_IoT_GAS/main/json
attr ESP32_CAM_IoT_KG_VK_Gas subscribeReading_RATE tele/ESP32_CAM_IoT_GAS/main/rate
attr ESP32_CAM_IoT_KG_VK_Gas subscribeReading_SENSOR tele/ESP32_CAM_IoT_GAS/main/value
attr ESP32_CAM_IoT_KG_VK_Gas subscribeReading_TIMESTAMP tele/ESP32_CAM_IoT_GAS/main/timestamp
attr ESP32_CAM_IoT_KG_VK_Gas subscribeReading_UPTIME tele/ESP32_CAM_IoT_GAS/uptime


define ntfy_ESP32_CAM_GAS_SENSOR notify ESP32_CAM_IoT_KG_VK_Gas:SENSOR:.* { \
my $myOldReading = ReadingsNum("ESP32_CAM_IoT_KG_VK_Gas","prevSENSOR",1);; \
my $myActReading = ReadingsNum("ESP32_CAM_IoT_KG_VK_Gas","SENSOR",1) ;; \
fhem ("setreading ESP32_CAM_IoT_KG_VK_Gas prevSENSOR $myActReading");; \
         if ( $myOldReading == $myActReading) \
    { \
  my $count = ReadingsNum("ESP32_CAM_IoT_KG_VK_Gas","SENSOR_IDENTICAL_COUNT",0) + 1;; \
        fhem ("setreading ESP32_CAM_IoT_KG_VK_Gas SENSOR_IDENTICAL_COUNT $count");; \
} \
     else \
    { \
        fhem ("setreading ESP32_CAM_IoT_KG_VK_Gas SENSOR_IDENTICAL_COUNT 0");; \
} \
}
   

define ntfy_ESP32_CAM_GAS notify ESP32_CAM_IoT_KG_VK_Gas:SENSOR_IDENTICAL_COUNT:.* {\
    my $myTime = time();;\
my $gas=ReadingsNum("ESP32_CAM_IoT_KG_VK_Gas","SENSOR",0) * 100.0;;\
my $gasm3Count = AttrNum("GasVerb_GC","GasCubicPerCounts", 1.0);;\
my $gasCount = $gas * $gasm3Count;;\
my $cmd="/?E3=".$gasCount;;\
    Log 1,"GAS m3 at $myTime with $gas m3, m3Count=$gasm3Count, gasCount=$gasCount, Instr=$cmd $EVTPART1";;\
if ($EVTPART1 == 10) \
   { \
    do something
   } \
}
attr ntfy_ESP32_CAM_GAS room System



Habt Ihr eine Idee?
Liegt das vielleicht an der Gleichzeitigkeit?

Danke Andreas
Titel: Antw:notify Problem: Event wird getriggert aber das notify reagiert nicht
Beitrag von: Otto123 am 24 August 2021, 21:52:45
Hallo Andreas,

es gibt keine Gleichzeitigkeit bei FHEM. Ich würde diese Kombination hinterfragen:

attr ESP32_CAM_IoT_KG_VK_Gas event-on-change-reading SENSOR_IDENTICAL_COUNT
attr ESP32_CAM_IoT_KG_VK_Gas event-on-update-reading SENSOR


Woran machst Du das nicht triggern fest?

Gruß Otto
Titel: Antw:notify Problem: Event wird getriggert aber das notify reagiert nicht
Beitrag von: frank am 24 August 2021, 22:11:17
ich denke, dass es am setreading im notify liegt.
ein sicherheitsfeature zur verhinderung von dead loops.
ich glaube, dass ein vorangestelltes sleep cmd das "problem" beseitigt.
Titel: Antw:notify Problem: Event wird getriggert aber das notify reagiert nicht
Beitrag von: Otto123 am 24 August 2021, 22:18:26
ok hab ich übersehen, dass das erste notify das zweite auslösen soll :(
https://fhem.de/commandref_DE.html#setreading