Hauptmenü

DOIF löst einfach aus ?

Begonnen von stera, 29 Februar 2016, 12:22:54

Vorheriges Thema - Nächstes Thema

stera

Hallo,

was mache ich hier falsch. Das Event Status.Wasseralarm wird öfter ausgelöst, obwohl state seit Tagen nicht verändert ist. Ist eine Abfrage mit eq "on" falsch?
Mir ist auch aufgefallen, dass woanders beim Wechsel von on auf off ein Event ausgelöst wird. Als attr. habe ich noch "do always" ausgewählt.

([Status.Wasseralarm] eq "on" or [Status.Alarm] eq "on" or [LogoNetzwerkNichtOK] eq "on" or [WLANTablet] eq "absent")
(set WhatsApp send 49xxx Alarm $DEVICE)


Gruß,
SteRa





stera

Hab den Fehler glaube ich selbst gerade gefunden  ::). Habe garkein "DOELSE"
Wenn der leer ist, kann dort einfach nur DOELSE ohne Aktion stehen?

([Status.Wasseralarm] eq "on" or [Status.Alarm] eq "on" or [LogoNetzwerkNichtOK] eq "on" or [WLANTablet] eq "absent")
(set WhatsApp send 49xxx Alarm $DEVICE)
DOELSE

stera

Ich habe das jetzt noch mal versucht und er schickt die Nachricht immer zweimal raus, obwohl es nur bei "on" reagieren sollte  :-\ :-\

Hier der Log:
2016.02.29 16:41:30 4: dummy set Status.Wasseralarm on
2016.02.29 16:41:30 3: WhatsApp: sending /message send 49xxxxx 'Alarm Status.Wasseralarm'
2016.02.29 16:41:39 4: dummy set Status.Wasseralarm off
2016.02.29 16:41:39 3: WhatsApp: sending /message send 49xxxxx 'Alarm Status.Wasseralarm'



2016-02-18_19:03:25 on
-> 2016-02-18_19:03:42 off
-> 2016-02-29_11:51:58 on
2016-02-29_11:56:43 off
2016-02-29_11:57:13 on
2016-02-29_11:59:21 off
2016-02-29_16:27:00 on
2016-02-29_16:27:16 off
2016-02-29_16:30:04 on
2016-02-29_16:30:09 off
2016-02-29_16:41:31 on
2016-02-29_16:41:39 off
#Status.Wasseralarm:state:::


2016.02.29 10:06:15 3: GenShellSwitch command result: sending systemCode[11011] unitCode[3] command[0]
2016.02.29 10:06:15 2: GenShellSwitch set 433_Stehlampe off
->  2016.02.29 10:11:16 3: WhatsApp: sending /message send 49xxxxxx 'Alarm Status.Wasseralarm'
2016.02.29 11:17:44 3: CUL_HM set HM_32B2F1_Sw on



Sporadisch kommen auch Meldungen, obwohl der state(auch laut log) garnicht geschaltet hat (siehe Log unten)

Ich verstehe es nicht. Hoffentlich kann mir das einer erklären, warum das so ist?

Grüße,
SteRa

Ellert

Wenn eines der Geräte im DOIF den Status aktualisiert, dann wird die Bedingung neu geprüft, wenn dann einer der oder-Fälle wahr ist, dann wird der Befehl ausgeführt.

Versuch mal auf Events zu triggern: [Status.Wasseralarm:"on"] or ... Siehe: http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events

stera

Hallo Ellert,

deine Ausführung funktioniert  :D Danke für den Tip

Mich wundert allerdings, auch wenn die Bedingung neu geprüft wird, die Aktion trotzdem ausgeführt wird.
Im $DEVICE ist ja Status.Wasseralarm vorhanden und das wurde definitiv nicht ausgeführt.

Kann man in der Variante auch irgendwie prüfen, ob etwas ungleich "on" ist?

Gruß,
SteRa

Ellert

Ja, indem Du einen entsprechenden Regulären Ausdruck formulierst.

stera

Habe mich da versucht mal ein zu lesen, aber so richtig geht das noch nicht in mein Kopf rein, wie ich das nun mit RegEx negieren kann!?

Gruß,
SteRa


stera

So habe jetzt nochmal gesucht..

Für meine Zwecke reicht wohl erstmal "^on"

Danke,
SteRa

frank

ZitatKann man in der Variante auch irgendwie prüfen, ob etwas ungleich "on" ist?
ne "on" => not equal
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Ellert

Zitat von: frank am 01 März 2016, 17:00:45
ne "on" => not equal

In Bezug auf diese
Zitat[Status.Wasseralarm:"on"]
Variante wird es mit "ne" nichts.

Da könnte es etwa so [Status.Wasseralarm:": [^o]{1}[^n]{1}$"] aussehen.

stera

So ganz blicke ich da noch immer nicht durch..

([Test1:"on"] and [Test2:"on"])
(set WhatsApp send 49xxxx CMD1 $DEVICE)
DOELSEIF

Das funktioniert leider garnicht, nur mit "or"? soll das so sein?

wenn ich or verwende, nutze ich es momentan so: [Test1:"on"] or [Test2:"on"]
wenn ich and verwende, nutze ich es momentan so: [Test3] eq "on" and [Test4] eq "on"

[Test3] eq "on" or [Test4] eq "on" --> So kommt es sporadisch zu Meldungen bei "on auf off" oder sporadisch wird die Aktion einfach ausgelöst,wie oben beschrieben


Ellert

Ein Blick in die deutschsprachige Commandref lohnt sich http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events
dort heisst es:
ZitatDie logische Verknüpfung "and" mehrerer Ereignisse ist nicht sinnvoll, da zu einem Zeitpunkt immer nur ein Ereignis zutreffen kann.

Zitat[Test3] eq "on" or [Test4] eq "on" --> So kommt es sporadisch zu Meldungen bei "on auf off" oder sporadisch wird die Aktion einfach ausgelöst,wie oben beschrieben

Wenn Test3 auf "off" geht, dann wird die gesamte Bedingung geprüft. Falls Test4 "on" ist, dann ist die gesammte Bedingung wahr und die Befehle werden ausgeführt.