Szenario: Es geht darum bei Babygeschrei eine Lampe einzuschalten und wieder auszuschalten wenn kein neues signal empfangen wurde.
Dieses habe ich wie folgt realisiert
define di_noise DOIF ([?{sunset()}-{sunrise()}] and [NoiseSensor]) (set Silke_Nachttisch on) (set Silke_Nachttisch off)
attr di_noise do resetwait
attr di_noise wait 0,300
Nun wird zwar bei einem Geräusch (per MQTT Sensor) noch immer das Licht eingeschaltet. Es wird jedoch permanent resetwait ausgeführt obwohl kein neues singal empfangen wird. D.h. die Lampe wird nie mehr ausgeschaltet.
Bis vor wenigen Tagen (etwa bis zur Zeitumstellung) funktionierte es problemlos, daher weiß ich nun nicht wo ich anfangen soll zu suchen.
Da wird wohl NoiseSensor ständig triggern. Am besten Events mal im Eventmonitor beobachten.
Der resettet sich auch bei 0:
2017-04-09 21:34:09 MQTT mqtt connection: active
2017-04-09 21:34:34 DOIF di_noise wait_timer: no timer
2017-04-09 21:34:34 DOIF di_noise wait_timer: 09.04.2017 21:39:34 cmd_1_2 NoiseSensor
2017-04-09 21:34:34 MQTT_DEVICE NoiseSensor transmission-state: incoming publish received
2017-04-09 21:34:34 DOIF di_noise wait_timer: no timer
2017-04-09 21:34:34 DOIF di_noise wait_timer: 09.04.2017 21:39:34 cmd_1_2 NoiseSensor
2017-04-09 21:34:34 MQTT_DEVICE NoiseSensor 0
2017-04-09 21:35:04 DOIF di_noise wait_timer: no timer
2017-04-09 21:35:04 DOIF di_noise wait_timer: 09.04.2017 21:40:04 cmd_1_2 NoiseSensor
2017-04-09 21:35:04 MQTT_DEVICE NoiseSensor transmission-state: incoming publish received
2017-04-09 21:35:04 DOIF di_noise wait_timer: no timer
2017-04-09 21:35:04 DOIF di_noise wait_timer: 09.04.2017 21:40:04 cmd_1_2 NoiseSensor
2017-04-09 21:35:04 MQTT_DEVICE NoiseSensor 0
Solution:
for some reason stateFormat was set (apparently myqtt device does this on setup - and maybe on reboot?) consequently IF Device was always different from 0.
Dann wirst du
[NoiseSensor]
wohl ein bisschen präzisieren müssen. So wie es jetzt ist, wird das DOIF ja bei jedem Event vom NoiseSensor getriggert.
Also in Richtung [NoiseSensor:Reading]
oder [NoiseSensor] eq "there is a noise"
Zitat von: automatisierer am 09 April 2017, 22:11:49
Dann wirst du
[NoiseSensor]
wohl ein bisschen präzisieren müssen. So wie es jetzt ist, wird das DOIF ja bei jedem Event vom NoiseSensor getriggert.
Also in Richtung [NoiseSensor:Reading]
oder [NoiseSensor] eq "there is a noise"
Ich würde hier eher auf Events triggern und nicht auf Status, also [NoiseSensor:"<das auslösende Event>"]