DOIF Ereignissteuerung über Auswertung von Events

Begonnen von Heimbastler, 26 Mai 2016, 11:31:08

Vorheriges Thema - Nächstes Thema

Heimbastler

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
RasPi 3 mit FHEM V5.7 3x18B20 über 1Wire,  CUL868, 4xIT-Schalter, 6xELRO-Schalter, 6xReed-Kontakte, 2xMAX-Fensterkontakt, 3xMAX-Thermostate, 2xMAX-Wandthermostate
PID20, RPI_GPIO, HCW, Alarm, Pushover, GPIO4, MAX, ECMD,IT, AT,

Damian

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

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

Heimbastler

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
RasPi 3 mit FHEM V5.7 3x18B20 über 1Wire,  CUL868, 4xIT-Schalter, 6xELRO-Schalter, 6xReed-Kontakte, 2xMAX-Fensterkontakt, 3xMAX-Thermostate, 2xMAX-Wandthermostate
PID20, RPI_GPIO, HCW, Alarm, Pushover, GPIO4, MAX, ECMD,IT, AT,

Heimbastler

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?
:-\



RasPi 3 mit FHEM V5.7 3x18B20 über 1Wire,  CUL868, 4xIT-Schalter, 6xELRO-Schalter, 6xReed-Kontakte, 2xMAX-Fensterkontakt, 3xMAX-Thermostate, 2xMAX-Wandthermostate
PID20, RPI_GPIO, HCW, Alarm, Pushover, GPIO4, MAX, ECMD,IT, AT,

Per

Die Fehlermeldung zeigt es dir genau: Leerzeichen (vor und) nach and vergessen!

Heimbastler

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
RasPi 3 mit FHEM V5.7 3x18B20 über 1Wire,  CUL868, 4xIT-Schalter, 6xELRO-Schalter, 6xReed-Kontakte, 2xMAX-Fensterkontakt, 3xMAX-Thermostate, 2xMAX-Wandthermostate
PID20, RPI_GPIO, HCW, Alarm, Pushover, GPIO4, MAX, ECMD,IT, AT,

Ellert

Schau Dir mal die Temperaturereignisse im Event-Monitor an, es gibt kein Ereignis bei dem "^temp.n:^temperature$" matcht.

Heimbastler

Hallo Ellert,

korrekt.


(["^temp.n:temperature"] and [$DEVICE:temperature] > [pshmsg_netzteil_limit_dummy:state])(...


funktioniert  :)

Danke für den Tip
RasPi 3 mit FHEM V5.7 3x18B20 über 1Wire,  CUL868, 4xIT-Schalter, 6xELRO-Schalter, 6xReed-Kontakte, 2xMAX-Fensterkontakt, 3xMAX-Thermostate, 2xMAX-Wandthermostate
PID20, RPI_GPIO, HCW, Alarm, Pushover, GPIO4, MAX, ECMD,IT, AT,

Heimbastler

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    ::)
RasPi 3 mit FHEM V5.7 3x18B20 über 1Wire,  CUL868, 4xIT-Schalter, 6xELRO-Schalter, 6xReed-Kontakte, 2xMAX-Fensterkontakt, 3xMAX-Thermostate, 2xMAX-Wandthermostate
PID20, RPI_GPIO, HCW, Alarm, Pushover, GPIO4, MAX, ECMD,IT, AT,