Hallo,
ich habe mehrere Temperatursensoren die ich gerne mit einer DOIF auswerten möchte. Folgendes geht, dann aber nur für einen Sensor:
([OM1613.00006:temperature]>[pshmsg_DUT_limit_dummy:state])(
set pushmsg msg "Klimaschrank" "OM1613.00006 Temp:[OM1613.00006:temperature]°C" "iPhone-Alex" 1 "spacealarm",
)
aber sobald ich mehrere Sensoren über die Filterung von Devices und Events abhandeln möchte geht das nicht mehr / warden die Sensoren nicht verknüpft:
(["^OM:^temperature$"]>[shutoff_DUT_limit_dummy:state])(
set notaus off,
set pushmsg msg "Klimaschrank" "NOTAUS des Netzteil --> Temperatur des Modul $DEVICE über [shutoff_DUT_limit_dummy:state]°C" "iPhone-Alex" 1 "spacealarm"
)
Warum nicht? Geht "..." nicht mit "<" oder ">"?
Habe schon mehrfach die Bsp. aus dem hier studiert, habe aber irgendwie ein Brett vor dem Kopf :-\
http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events
Sieht Jemand was ich falsch mache?
VG
Zitat von: Heimbastler am 26 Mai 2016, 11:31:08
(["^OM:^temperature$"]>[shutoff_DUT_limit_dummy:state])(
[/code]
Warum nicht? Geht "..." nicht mit "<" oder ">"?
["^OM:^temperature$"] ist ein Ereignistrigger, der kann nur wahr oder unwahr sein.
Was du meinst, ist das hier:
(["^OM:^temperature$"] and [$DEVICE:temperature]>[shutoff_DUT_limit_dummy])
Gruß
Damian
Zitat von: Damian am 26 Mai 2016, 11:40:36
["^OM:^temperature$"] ist ein Ereignistrigger, der kann nur wahr oder unwahr sein.
Was du meinst, ist das hier:
(["^OM:^temperature$"] and [$DEVICE:temperature]>[shutoff_DUT_limit_dummy])
Gruß
Damian
Es wird eine Funktionserweiterung des Moduls mit Ausgabeformatierung von Ereignistriggern geben, dann wird man Ereignisse nicht nur nach (wahr/unwahr) auswerten können:
Syntax:
["<RegEx Ereignis>":d|<Spalte>|"<RegEx für Output>":<Output>]
hier:
(["^OM:^temperature$":d]>[shutoff_DUT_limit_dummy])
Gruß
Damian
Hi Damian,
vielen Dank für die schnelle Hilfe. Bin leider erst Heute wieder an dem Thema dran.
Ich habe den Code so verwendet:
(["^OM:^temperature$"] and [$DEVICE:temperature]>[pshmsg_DUT_limit_dummy])(...
Leider steht cmd nachwievor auf 0. Habe dazu einen Screenshot gemacht.
Warum lost das DOIF hier jetzt nicht aus?
VG
Alex
jetzt habe ich noch mal einen ähnlichen DOIF getestet, das funktioniert:
([temp.netzteil:temperature]>[pshmsg_netzteil_limit_dummy:state])(
set pushmsg msg "Klimaschrank" "Netzteil Temp:[temp.netzteil:temperature]°C" "iPhone-Alex" 1 "spacealarm",
set pushmsg msg "Klimaschrank" "Netzteil Temp:[temp.netzteil:temperature]°C" "htcone" 1 "spacealarm"
)
das funktioniert nicht:
(["^temp.n:^temperature$"]and[$DEVICE:temperature]>[pshmsg_netzteil_limit_dummy])(
set pushmsg msg "Klimaschrank" "Netzteil Temp:[temp.netzteil:temperature]°C" "iPhone-Alex" 1 "spacealarm",
set pushmsg msg "Klimaschrank" "Netzteil Temp:[temp.netzteil:temperature]°C" "htcone" 1 "spacealarm"
)
dann kommt error:
perl error in condition: EventDoIf('^temp.n',$hash,'^temperature$',0)andReadingValDoIf($hash,'$DEVICE','temperature','','',AttrVal($hash->{NAME},'notexist',undef))>InternalDoIf($hash,'pshmsg_netzteil_limit_dummy','STATE','','',AttrVal($hash->{NAME},'notexist',undef)): syntax error at (eval 916779) line 1, near ")andReadingValDoIf"
scheint als ob er $DEVICE nicht versteht?
:-\
Die Fehlermeldung zeigt es dir genau: Leerzeichen (vor und) nach and vergessen!
Vielen Dank, das ein Leerzeichen hier so einschlägt war mir noch gar nicht bewußt. :o
Jetzt habe ich keine Fehlermeldungen mehr aber diese beiden Varianten gehen auch nicht bzw. der cmd bleibt immer auf 0 stehen obwohl der DOIF auslösen müste:
geht nicht:
(["^temp.n:^temperature$"] and [$DEVICE:temperature] > [pshmsg_netzteil_limit_dummy])(
set pushmsg msg "Klimaschrank" "Netzteil Temp:[temp.netzteil:temperature]°C" "iPhone-Alex" 1 "spacealarm"
)
geht nicht:
(["^temp.n:^temperature$"] and [$DEVICE:temperature] > [pshmsg_netzteil_limit_dummy:state])(
set pushmsg msg "Klimaschrank" "Netzteil Temp:[temp.netzteil:temperature]°C" "iPhone-Alex" 1 "spacealarm"
)
Ein png zeigt auch noch mal was der Device Manager sagt.
Wie / was kann ich noch testen?
VG
Alex
Schau Dir mal die Temperaturereignisse im Event-Monitor an, es gibt kein Ereignis bei dem "^temp.n:^temperature$" matcht.
Hallo Ellert,
korrekt.
(["^temp.n:temperature"] and [$DEVICE:temperature] > [pshmsg_netzteil_limit_dummy:state])(...
funktioniert :)
Danke für den Tip
Also Abschliessend noch mal wie es funktioniert
DOIF um beim erreichen des Limit Relais abzuschalten / pushmsg zu senden:
define DUT_shutoff_doif DOIF (["^OM:temperature"] and [$DEVICE:temperature] > [shutoff_DUT_limit_dummy])(\
\
set notaus off,\
\
set pushmsg msg "Klimaschrank" "NOTAUS des Netzteil --> Temperatur des Modul $DEVICE über [shutoff_DUT_limit_dummy:state]°C" "iPhone-Alex" 1 "spacealarm",\
\
set pushmsg msg "Klimaschrank" "NOTAUS des Netzteil --> Temperatur des Modul $DEVICE über [shutoff_DUT_limit_dummy:state]°C" "htcone" 1 "spacealarm"\
\
)
attr DUT_shutoff_doif checkReadingEvent 1
attr DUT_shutoff_doif do always
attr DUT_shutoff_doif group Shutoff Control
attr DUT_shutoff_doif repeatsame 1
attr DUT_shutoff_doif room Unsorted
Dummy um das Limit einzstellen:
define shutoff_DUT_limit_dummy dummy
attr shutoff_DUT_limit_dummy alias DUT Temperaturlimit zum Abschalten
attr shutoff_DUT_limit_dummy group Shutoff Control
attr shutoff_DUT_limit_dummy room Netzteil
attr shutoff_DUT_limit_dummy setList state:60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
attr shutoff_DUT_limit_dummy webCmd state
Im Anhang wie es jetzt aussieht...
DANKE LEUTE ::)