FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: tbals am 10 Dezember 2014, 15:47:39

Titel: einstellbare Temperaturalarmierung aufs Handy
Beitrag von: tbals am 10 Dezember 2014, 15:47:39
Hallo,

ich habe im Hause mehrere LaCrosse Temperatur-Sensoren, die per JeeLink am FHEM hängen. Damit man beim lüften nicht vergisst, die Fenster irgendwann wieder zu schliessen, habe ich mir eine Alarmfunktion gebaut, die ab einer einstellbaren Temperatur eine Meldung per pushover auf mein Handy schickt. Ausserdem soll diese Meldung nur alle 15 Minuten wiederholt werden.
So sieht das aus:

define is_tempalarmTH1 dummy
set is_tempalarmTH1 0

define clear_tempalarmTH1 at +*00:15:00 {\
        fhem("set is_tempalarmTH1 0");;\
}

define alarmlevelTH1 dummy
attr alarmlevelTH1 room Wohnzimmer
attr alarmlevelTH1 setList state:slider,10,1,30
attr alarmlevelTH1 webCmd state
set alarmlevelTH1 16

define tempalarmTH1 notify TH1:temperature.* {\
        my $th1lvl=ReadingsVal("alarmlevelTH1","state","0");;\
        if ($EVTPART1 <=$th1lvl && Value("is_tempalarmTH1") == "0") {\
                fhem("set is_tempalarmTH1 1");;\
                fhem("set pushmsg msg 'Wohnzimmer' 'Es ist zu kalt: $EVTPART1 Grad' '' 0 ''");;\
        }\
}


Nach dem FHEM reststart wird der Alarmlevel auf 16 Grad gesetzt und kann dann über den Slider nach Bedarf verändert werden.
Titel: Antw:einstellbare Temperaturalarmierung aufs Handy
Beitrag von: jnewton957 am 23 Januar 2015, 18:43:09
Hallo,

habe das Coding ausprobiert. Läuft wunderbar.

Habe es nun versucht, an mehreren Temeratorsensoren (Kühlschrank, Dachboden etc) zu kopieren. Dabei habe ich jeweils andere defines und $thXlvl  verwendet. $EVTPART1 bleibt ja dann bei allen Kopien auch $EVTPART1.

define is_tempalarmTH1 dummy

define clear_tempalarmTH1 at +*02:00:00 {\
        fhem("set is_tempalarmTH1 0");;\
}
define alarmlevelTH1 dummy
attr alarmlevelTH1 room 14_Steuerung
attr alarmlevelTH1 setList state:slider,1,1,20
attr alarmlevelTH1 webCmd state

define tempalarmTH1 notify netatmo_xxxxxx:temperature.* {\
        my $th1lvl=ReadingsVal("alarmlevelTH1","state","0");;\
        if ($EVTPART1 <=$th1lvl && Value("is_tempalarmTH1") == "0") {\
                fhem("set is_tempalarmTH1 1");;\
                fhem("set pushmsg message Aussentemperatur Es friert : $EVTPART1 Grad '' 0 ''");;\
        }\
}


#----------------------------------------------------------------------
#Frostwarnung Dachboden
#----------------------------------------------------------------------

define is_tempalarmDB1 dummy

define clear_tempalarmDB1 at +*02:09:00 {\
        fhem("set is_tempalarmDB1 0");;\
}
define alarmlevelDB1 dummy
attr alarmlevelDB1 alias Frostalarm Dachboden
attr alarmlevelDB1 room 14_Steuerung
attr alarmlevelDB1 setList state:slider,1,1,20
attr alarmlevelDB1 webCmd state

define tempalarmDB1 notify CUL_TX_1:temperature.* {\
        my $th12vl=ReadingsVal("alarmlevelDB1","state","0");;\
        if ($EVTPART1 <=$th12vl && Value("is_tempalarmDB1") == "0") {\
                fhem("set is_tempalarmDB1 1");;\
                fhem("set pushmsg message Dachbodentemperatur Es friert: $EVTPART1 Grad '' 0 ''");;\
        }\
}

#----------------------------------------------------------------------
#Frostwarnung Kuehlschrank
#----------------------------------------------------------------------

define is_tempalarmKS1 dummy

define clear_tempalarmKS1 at +*02:05:00 {\
        fhem("set is_tempalarmKS1 0");;\
}
define alarmlevelKS1 dummy
attr alarmlevelKS1 alias Temperaturalarm Kuehlschrank
attr alarmlevelKS1 room 14_Steuerung
attr alarmlevelKS1 setList state:slider,1,1,20
attr alarmlevelKS1 webCmd state

define tempalarmKS1 notify CUL_TX_2:temperature.* {\
        my $th13vl=ReadingsVal("alarmlevelKS1","state","0");;\
        if ($EVTPART1 >=$th13vl && Value("is_tempalarmKS1") == "0") {\
                fhem("set is_tempalarmKS1 1");;\
         


Allerdings wird nur die 1. Temerpaturalarmierung (Aussentemperatur) auch versendet. Wenn die anderen Sensoren eigentlich einen Alarm auslösen sollten, klappt es nicht.

Jemand eine Idee meines Fehlers ??