[gelöst] Befehl wird nicht ausgeführt

Begonnen von pcjogi, 08 Juli 2022, 15:25:26

Vorheriges Thema - Nächstes Thema

pcjogi

Hallo zusammen,

ich habe einen WEMOS Mini mit Tasmota an dem ich einen "Minilautsprecher" angeschlossen habe um Beeptöne ausgeben zu können. Das funktioniert aus der Konsole der Tasmotaoberfläche einwandfrei. Wenn ich diesen Aufbau per MQTT in fhem einbinde (siehe unteres List) funktioniert das von der Oberfläche von fhem auch (Button BEEP). Auch der Aufruf set AUS.EING.RFID2 BEEP 1 in der Komandozeile von fhem funktioniert auch.

Aber wenn ich versuche das aus einem DOIF heraus aufzurufen passiert nichts. Lediglich im Log / Eventlog steht der richtige Eintrag DUMMY AUS.EING.RFID2 BEEP 1. Hier das list des entsprechenden DOIF.

Hat jemand eine Idee wo ich wie noch suchen kann? Vielen Dank

  Internals:
   CFGFN     
   DEF        (
[AUS.EING.RFID2:PN532_UID] eq "XXXXXXX"
or [AUS.EING.RFID2:PN532_UID] eq "YYYYYYYY"


)
(

set AUS.EING.RFID2 BEEP 2,
## set AUS.EING.TUERSCHLOSS open
)
DOELSE
(
(setreading AUS.EING.RFID2 BEEP 20),
)
   FUUID      62c7f8fd-f33f-e2bc-b801-ead59246ab747009
   MODEL      FHEM
   NAME       di_AUS.EING.RFIDTEST
   NOTIFYDEV  global,AUS.EING.RFID2
   NR         3139
   NTFY_ORDER 50-di_AUS.EING.RFIDTEST
   STATE      cmd_1
   TYPE       DOIF
   VERSION    26182 2022-06-29 18:57:26
   eventCount 83
   READINGS:
     2022-07-08 15:12:24   Device          AUS.EING.RFID2
     2022-07-08 15:12:24   cmd             1
     2022-07-08 15:12:24   cmd_event       AUS.EING.RFID2
     2022-07-08 15:12:24   cmd_nr          1
     2022-07-08 15:12:24   e_AUS.EING.RFID2_PN532_UID XXXXXXXX
     2022-07-08 15:12:13   mode            enabled
     2022-07-08 15:12:24   state           cmd_1
   Regex:
     accu:
     collect:
     cond:
       AUS.EING.RFID2:
         0:
           PN532_UID  ^AUS.EING.RFID2$:^PN532_UID:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0            ::ReadingValDoIf($hash,'AUS.EING.RFID2','PN532_UID') eq "XXXXXXXX" or ::ReadingValDoIf($hash,'AUS.EING.RFID2','PN532_UID') eq "YYYYYYYY" 
   do:
     0:
       0            set AUS.EING.RFID2 BEEP 2,
     1:
       0          (setreading AUS.EING.RFID2 BEEP 20),
   helper:
     NOTIFYDEV  global,AUS.EING.RFID2
     event      PN532_UID: 313C341D,Time: 2022-07-08T14:12:24
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   AUS.EING.RFID2
     timerevent PN532_UID: 313C341D,Time: 2022-07-08T14:12:24
     triggerDev AUS.EING.RFID2
     timerevents:
       PN532_UID: XXXXXXXX
       Time: 2022-07-08T14:12:24
       BEEP 2
     timereventsState:
       PN532_UID: XXXXXXXX
       Time: 2022-07-08T14:12:24
       BEEP 2
     triggerEvents:
       PN532_UID: XXXXXXXX
       Time: 2022-07-08T14:12:24
       BEEP 2
     triggerEventsState:
       PN532_UID: XXXXXXXX
       Time: 2022-07-08T14:12:24
       BEEP 2
   hmccu:
   internals:
   readings:
     all         AUS.EING.RFID2:PN532_UID
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
   room       -Aussen,_MQTT
   verbose    5


CFGFN     
   FUUID      62c7d5c4-f33f-e2bc-d53e-8a5c3ed932568a17
   LASTInputDev MQTT
   MQTT_MSGCNT 1817
   MQTT_TIME  2022-07-08 15:14:32
   MSGCNT     1817
   NAME       AUS.EING.RFID2
   NR         2944
   STATE      XXXXXXXX
   TYPE       dummy
   eventCount 428
   Helper:
     DBLOG:
       BEEP:
         logdb:
           TIME       1657285939.47551
           VALUE      20
       Buzzer:
         logdb:
           TIME       1657285944.28919
           VALUE      Done
       Heap:
         logdb:
           TIME       1657286072.51015
           VALUE      23
       Info1_FallbackTopic:
         logdb:
           TIME       1657285767.55647
           VALUE      cmnd/WEMOS97_fb/
       Info1_GroupTopic:
         logdb:
           TIME       1657285767.55647
           VALUE      /CSS/System/tasmotas/cmnd/
       Info1_Module:
         logdb:
           TIME       1657285767.55647
           VALUE      Generic
       Info1_Version:
         logdb:
           TIME       1657285767.55647
           VALUE      12.0.2(TasmoCompiler-esp82664M)
       Info2_Hostname:
         logdb:
           TIME       1657285767.58325
           VALUE      WEMOS97
       Info2_IPAddress:
         logdb:
           TIME       1657285767.58325
           VALUE      192.168.2.25
       Info2_WebServerMode:
         logdb:
           TIME       1657285767.58325
           VALUE      Admin
       Info3_BootCount:
         logdb:
           TIME       1657285767.60811
           VALUE      50
       Info3_RestartReason:
         logdb:
           TIME       1657285767.60811
           VALUE      External System
       LWT:
         logdb:
           TIME       1657285767.52199
           VALUE      Online
       LoadAvg:
         logdb:
           TIME       1657286072.51015
           VALUE      36
       MqttCount:
         logdb:
           TIME       1657286072.51015
           VALUE      1
       PN532_UID:
         logdb:
           TIME       1657285944.26609
           VALUE      XXXXXXXX
       Rule1_Free:
         logdb:
           TIME       1657285770.84026
           VALUE      481
       Rule1_Length:
         logdb:
           TIME       1657285770.84026
           VALUE      30
       Rule1_Once:
         logdb:
           TIME       1657285770.84026
           VALUE      OFF
       Rule1_Rules:
         logdb:
           TIME       1657285770.84026
           VALUE      ON PN532#UID DO Buzzer 1 endon
       Rule1_State:
         logdb:
           TIME       1657285770.84026
           VALUE      ON
       Rule1_StopOnError:
         logdb:
           TIME       1657285770.84026
           VALUE      OFF
       Sleep:
         logdb:
           TIME       1657286072.51015
           VALUE      50
       SleepMode:
         logdb:
           TIME       1657286072.51015
           VALUE      Dynamic
       Time:
         logdb:
           TIME       1657286072.51015
           VALUE      2022-07-08T14:14:32
       Uptime:
         logdb:
           TIME       1657286072.51015
           VALUE      0T00:05:49
       UptimeSec:
         logdb:
           TIME       1657286072.51015
           VALUE      349
       Wifi_AP:
         logdb:
           TIME       1657286072.51015
           VALUE      1
       Wifi_BSSId:
         logdb:
           TIME       1657286072.51015
           VALUE      C2:FB:E4:41:2E:B9
       Wifi_Channel:
         logdb:
           TIME       1657286072.51015
           VALUE      11
       Wifi_Downtime:
         logdb:
           TIME       1657286072.51015
           VALUE      0T00:00:05
       Wifi_LinkCount:
         logdb:
           TIME       1657286072.51015
           VALUE      1
       Wifi_Mode:
         logdb:
           TIME       1657286072.51015
           VALUE      11n
       Wifi_RSSI:
         logdb:
           TIME       1657286072.51015
           VALUE      60
       Wifi_SSId:
         logdb:
           TIME       1657286072.51015
           VALUE      ZZZZ
       Wifi_Signal:
         logdb:
           TIME       1657286072.51015
           VALUE      -70
       buzzer:
         logdb:
           TIME       1657285796.32428
           VALUE      5
       state:
         logdb:
           TIME       1657285944.26609
           VALUE      BEEP 2
   READINGS:
     2022-07-08 15:12:19   BEEP            20
     2022-07-08 15:12:24   Buzzer          Done
     2022-07-08 15:14:32   Heap            23
     2022-07-08 15:09:27   Info1_FallbackTopic cmnd/WEMOS97_fb/
     2022-07-08 15:09:27   Info1_GroupTopic /CSS/System/tasmotas/cmnd/
     2022-07-08 15:09:27   Info1_Module    Generic
     2022-07-08 15:09:27   Info1_Version   12.0.2(TasmoCompiler-esp82664M)
     2022-07-08 15:09:27   Info2_Hostname  WEMOS97
     2022-07-08 15:09:27   Info2_IPAddress 192.168.2.25
     2022-07-08 15:09:27   Info2_WebServerMode Admin
     2022-07-08 15:09:27   Info3_BootCount 50
     2022-07-08 15:09:27   Info3_RestartReason External System
     2022-07-08 15:09:27   LWT             Online
     2022-07-08 15:14:32   LoadAvg         36
     2022-07-08 15:14:32   MqttCount       1
     2022-07-08 15:12:24   PN532_UID       XXXXXXXX
     2022-07-08 15:09:30   Rule1_Free      481
     2022-07-08 15:09:30   Rule1_Length    30
     2022-07-08 15:09:30   Rule1_Once      OFF
     2022-07-08 15:09:30   Rule1_Rules     ON PN532#UID DO Buzzer 1 endon
     2022-07-08 15:09:30   Rule1_State     ON
     2022-07-08 15:09:30   Rule1_StopOnError OFF
     2022-07-08 15:14:32   Sleep           50
     2022-07-08 15:14:32   SleepMode       Dynamic
     2022-07-08 15:14:32   Time            2022-07-08T14:14:32
     2022-07-08 15:14:32   Uptime          0T00:05:49
     2022-07-08 15:14:32   UptimeSec       349
     2022-07-08 15:14:32   Wifi_AP         1
     2022-07-08 15:14:32   Wifi_BSSId      C2:FB:E4:41:2E:B9
     2022-07-08 15:14:32   Wifi_Channel    11
     2022-07-08 15:14:32   Wifi_Downtime   0T00:00:05
     2022-07-08 15:14:32   Wifi_LinkCount  1
     2022-07-08 15:14:32   Wifi_Mode       11n
     2022-07-08 15:14:32   Wifi_RSSI       60
     2022-07-08 15:14:32   Wifi_SSId       CSSSecure
     2022-07-08 15:14:32   Wifi_Signal     -70
     2022-07-08 15:09:56   buzzer          5
     2022-07-08 15:12:24   state           BEEP 2
   hmccu:
Attributes:
   DbLogInclude *.
   mqttPublish state:topic=/CSS/System/wemos97/cmnd/buzzer
   mqttSubscribe json0:topic=/CSS/System/wemos97/tele/SENSOR json0:expression={json2nameValue($message)}
json1:topic=/CSS/System/wemos97/tele/STATE json1:expression={json2nameValue($message)}
json2:topic=/CSS/System/wemos97/stat/RESULT json2:expression={json2nameValue($message)}
json3:topic=/CSS/System/wemos97/tele/INFO1 json3:expression={json2nameValue($message)}
json4:topic=/CSS/System/wemos97/tele/INFO2 json4:expression={json2nameValue($message)}
json5:topic=/CSS/System/wemos97/tele/INFO3 json5:expression={json2nameValue($message)}
LWT:topic=/CSS/System/wemos97/tele/LWT
   room       -Aussen,_MQTT
   setList    BEEP
   stateFormat PN532_UID
   verbose    5
   webCmd     BEEP
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

Beta-User

Versuche mal ein "sehr kurzes sleep" einzubauen, bevor du den Befehl an den dummy gibst. Meine Vermutung ist: triggerndes und geschaltetes Gerät sind identisch, fhem.pl verhindert eine doppelte Triggerung.

MQTT_GENERIC_BRIDGE ist aber in Senderichtung "auch nur ein Eventhandler", und daher "schon durch", wenn die eingehende Message triggert...

(Wer also MQTT2_DEVICE nutzt, hat dieses Problem nicht in dieser Form).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Damian

Zitat von: Beta-User am 08 Juli 2022, 15:33:52
Versuche mal ein "sehr kurzes sleep" einzubauen, bevor du den Befehl an den dummy gibst. Meine Vermutung ist: triggerndes und geschaltetes Gerät sind identisch, fhem.pl verhindert eine doppelte Triggerung.

MQTT_GENERIC_BRIDGE ist aber in Senderichtung "auch nur ein Eventhandler", und daher "schon durch", wenn die eingehende Message triggert...

(Wer also MQTT2_DEVICE nutzt, hat dieses Problem nicht in dieser Form).

Oder einfach:

attr di_AUS.EING.RFIDTEST wait 0.1:0.1

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

pcjogi

#3
Vielen Dank!! Der sleep und das DOIF wait löst das Problem. Darauf wäre ich nie gekommen.

Da ich solch ein Problem mit MQTT2_DEVICE nich gehabt hätte, die Frage ob sich ein Umbau von MQTT_GENERIC_BRIDGE auf MQTT2_DEVICE lohnt, bzw. wo die die Designunterschiede der beiden liegen. Kann man das irgendwo nachlesen?

Danke nochmal
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

Beta-User

Zitat von: pcjogi am 09 Juli 2022, 14:37:24
wo die die Designunterschiede der beiden liegen. Kann man das irgendwo nachlesen?
Na ja... im Quellcode könnte man das "nachlesen" bzw. es ergibt sich ggf. aus vertieftem "allgemeinen FHEM-Verständnis".

Der Unterschied ist der: MQTT_GENERIC_BRIDGE ist ein Eventhandler (was Versenden von Infos/aktualisierten Readings angeht), angesprochen wird dann eben (innerhalb einer Event-Loop einmalig!) die NotifyFn(), MQTT_DEVICE und MQTT2_DEVICE sind dagegen "echte" Geräte, die die "set"-Befehle eben über die SetFn() auswerten und daher IMMER publishen, wenn die Funktion das hergibt.
MQTT2_DEVICE kann dann noch JSON direkt (und man braucht dafür keinen Event-Handler wie expandJSON). Von daher würde ich sagen: Wer sowas braucht, dass er _unmittelbar_ an dasselbe Gerät sendet, auf dem Daten eingehen, der sollte lieber die "native" Implementierung nehmen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Damian

Zitat von: pcjogi am 09 Juli 2022, 14:37:24
Vielen Dank!! Der sleep und das DOIF wait löst das Problem. Darauf wäre ich nie gekommen.

Da ich solch ein Problem mit MQTT2_DEVICE nich gehabt hätte, die Frage ob sich ein Umbau von MQTT_GENERIC_BRIDGE auf MQTT2_DEVICE lohnt, bzw. wo die die Designunterschiede der beiden liegen. Kann man das irgendwo nachlesen?

Danke nochmal

Das Problem wirst du immer haben, wenn du direkt oder indirekt ein Loop produziert, heißt: du reagierst auf Events von Devices, bei denen du selbst Events z. B. durch "set" produziest.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF