DOIF seit einigen Tagen nicht mehr funktional

Begonnen von joshi, 09 April 2017, 14:20:09

Vorheriges Thema - Nächstes Thema

joshi

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.

Damian

Da wird wohl NoiseSensor ständig triggern. Am besten Events mal im Eventmonitor beobachten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

joshi

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

joshi

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.

automatisierer

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"

Damian

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>"]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF