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
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).
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
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
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...
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.