Hauptmenü

DOIF falsch?

Begonnen von SnakeZZ, 11 Dezember 2016, 13:39:13

Vorheriges Thema - Nächstes Thema

SnakeZZ

Hallo!

Ich nutze einen Aeotec 6 Multisensor um mein Licht in der Küche dynamisch ein und auszuschalten:

define eg.kueche.bewegungsmelder DOIF ([eg.kueche.multisensor:alarm] eq "HomeSecurity: Motion Detection - Unknown Location, arg 0000") (set eg.kueche.unterbauLicht on) DOELSE (set eg.kueche.unterbauLicht off)

Komischerweise triggert das DOIF auch, wenn gar kein Alarm gemeldet wird:

fhem.log:

2016-12-11_13:21:59 eg.kueche.multisensor alarm: HomeSecurity: Motion Detection - Unknown Location, arg 0000
2016-12-11_13:21:59 eg.kueche.multisensor alarm_HomeSecurity: Motion Detection - Unknown Location, arg 0000, notificationIsOn
2016-12-11_13:24:49 eg.kueche.multisensor temperature: 22.2 C
2016-12-11_13:29:25 eg.kueche.multisensor temperature: 21.7 C
2016-12-11_13:29:26 eg.kueche.multisensor humidity: 28 %
2016-12-11_13:29:28 eg.kueche.multisensor luminance: 7 Lux
2016-12-11_13:32:09 eg.kueche.multisensor basicSet: 0

2016-12-11_13:32:14 eg.kueche.multisensor alarm: HomeSecurity: Event cleared: Previous Events cleared
2016-12-11_13:32:14 eg.kueche.multisensor alarm_HomeSecurity: Event cleared: Previous Events cleared, notificationIsOn


eg.kueche.multisensor-2016.log:

2016.12.11 13:21:59 3: ZWave set eg.kueche.unterbauLicht off
2016.12.11 13:21:59 3: ZWave set eg.kueche.unterbauLicht on

2016.12.11 13:24:49 3: ZWave set eg.kueche.unterbauLicht on
2016.12.11 13:29:25 3: ZWave set eg.kueche.unterbauLicht on
2016.12.11 13:29:26 3: ZWave set eg.kueche.unterbauLicht on
2016.12.11 13:29:28 3: ZWave set eg.kueche.unterbauLicht on
2016.12.11 13:32:09 3: ZWave set eg.kueche.unterbauLicht on

2016.12.11 13:32:14 3: ZWave set eg.kueche.unterbauLicht off


Was mache ich hier falsch?

Beste Grüsse,

SnakeZZ

igami

Du Fragst ein Reading und nicht ein Event ab. Das Reading ist auch zu anderen Zeitpunkten vorhanden. Einfach noch einen Eventtrigger für das DOIF hinzufügen.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Ellert

Die oft überlesene Aussage der Befehlsreferenz lautet so:
ZitatDas Modul wird getriggert, sobald das angegebene Device hier "remotecontrol" ein Event erzeugt. Das geschieht, wenn irgendein Reading oder der Status von "remotecontrol" aktualisiert wird. Ausgewertet wird hier der Zustand des Statuses von remotecontrol nicht das Event selbst.

SnakeZZ

Hallo nochmal,

erstmal vielen Dank für Eure Antworten. Leider leuchtet's mir noch nicht ein...
Vielleicht habe ich auch gekonnt etwas überlesen.
Muss ich checkReadingEvent setzen?
Wie setzt man einen Eventtrigger (das finde ich gar nicht in der Doku)?

Beste Grüsse,

SnakeZZ

igami

http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events

Was würdest du denn erwarten das passiert bei checkReadingEvent? Habe das Attribut bisher noch nie verwendet, aber hört sich laut commandref vielversprechend an.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Ellert

#5
ZitatLeider leuchtet's mir noch nicht ein...
[<Device>], eigentlich [<Device>:&STATE], [<Device>:state], [<Device>:<Reading>] und [<Device>:&<Internal>] wird immer dann geprüft, wenn <Device> ein Event erzeugt, auch wenn das Event nicht das angegebene Reading/Internal enthält.

Beispiel
Wenn bei einem Heizkörperventil HM-CC-RT-DN in der Bedingung steht [HM_123456] eq "CMDs_done", wird die Bedingung jedesmal geprüft, wenn measured-temp aktualisiert wird.

checkReadingEvent stellt das Verhalten ab, es wird nur getriggert, wenn auch das Reading im Event steht.

Das ist bei [HM_123456] eq "CMDs_done" problematisch, weil STATE nie im Event auftritt.
Daher muss man [HM_123456:state] eq "CMDs_done" schreiben. Das reicht aber nicht, da state im Event in der Standarteinstellung nicht mit geschrieben wird.

Deshalb muss auch das Attribut addStateEvent gesetzt werden.
Zitat
Muss ich checkReadingEvent setzen?
Was spricht dagegen es auszuprobieren?