Gelöst: Temperaturalarm-Script geht nicht. Logikfehler?

Begonnen von tbals, 08 Dezember 2014, 18:22:20

Vorheriges Thema - Nächstes Thema

tbals

Hallo zusammen,

ich bin noch neu bei FHEM und habe mich nach besten Wissen und Gewissen eingelesen. Und ich habe auch lange gegooglt, aber bin nicht weitergekommen. Also frage ich hier.
Ich möchte das ich eine Pushmeldung auf mein Smartfone bekommen, wenn in Raum X die Temperatur unter Y Grad fällt. Ich will aber nicht nach jeder Messung eine Meldung, sonder nur alle 15 Minuten. Pushover geht grundsätzlich, aber ich bekomme keine Meldung. Hier mein code:

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

define tempalarmTH1 notify TH1:temperature {\
my $th1temp=ReadingsVal("TH1","temperature","0");;\
if ($th1temp <=18 && Value("is_tempalarmTH1") eq "0") {\
fhem("set is_tempalarmTH1 1");;\
fhem("set pushmsg msg 'Schlafzimmer' 'Zu kalt - $th1temp' '' 0 ''");;\
}\
}



TH1:tempearature meldet aktuell 17.8 und is_tempalarmTH1 ist auf 0. Sollte also greifen. Aber es tut nichts.

Habe ich ein Logikfeher oder ein Syntaxfehler?

Im Log steht nur:

2014.12.08 18:11:09 1: PERL WARNING: Use of uninitialized value in string ne at fhem.pl line 3685.
2014.12.08 18:13:18 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at fhem.pl line 3671.

Ob das von diesem script kommt, weiss ich leider nicht.

Danke und Gruss
  Thomas
1x JeeLink am ODROID C1 (FHEM2FHEM) für diverse LaCrosse Sensoren,  HMLAN für diverse Homematic Aktoren,
Haupt-FHEM auf Asus EeeBox und als DBlog-Server

frank

if ($th1temp <=18 && Value("is_tempalarmTH1") eq "0")

1. bei numerischen vergleichen "==", nicht eq.
2. ich würde hier sicherhaltshalber noch klammern um die "vergleiche" spendieren (vom bauchgefühl).
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

Puschel74

Hallo,

weiters müsste auch sowas in die Richtung
define tempalarmTH1 notify TH1:temperature {
if ($EVTPART1 <=18 && Value("is_tempalarmTH1") == "0") {

genügen.

Wenn das Event im EventMonitor so aussieht:
Zitat2014-12-08 19:08:23 KS300 Wetterstation_Eingang temperature: 1.6
müsste in $EVTPART1 die Temperatur stehen.
Wobei das bei mir aber so aussieht:
if($NAME eq "Keller_Kuehlschrank") {
    if($EVTPART1 > "7.0") {


Grüße

P.S.: Meine Codes erzeugen direkt in die fhem.cfg eingeprügelt unter Garantie Fehlermeldungen  ;)
Ich bearbeite nur das DEF und so poste ich auch meine Beispiele.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

tbals

#3
Danke für die Antworten, ich habe das script angepasst. Allerdings tuts da immernoch nichts. So sieht es nun aus:

define is_Alarm dummy
set is_Alarm 0

define is_tempalarmTH1 dummy
set is_tempalarmTH1 0

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

define tempalarmTH1 notify TH1:temperature {\
if ($EVTPART1 <=19 && Value("is_tempalarmTH1") == "0") {\
fhem("set is_tempalarmTH1 1");;\
fhem("set is_Alarm 1");;\
}\
}

define tempalarm_log FileLog ./log/TempAlarm-%Y.log is_tempalarmTH.*
attr tempalarm_log logtype text


is_Alarm wird aber nicht gesetzt, das bleibt dauerhaft auf 0.

Das logfile sieht wie folgt aus:

2014-12-08_21:36:36 is_tempalarmTH1 0
2014-12-08_21:42:20 is_tempalarmTH1 0
2014-12-08_21:47:20 is_tempalarmTH1 0
2014-12-08_21:55:47 is_tempalarmTH1 0


und im EventMonitor finde man

2014-12-08 22:02:51 LaCrosse TH1 temperature: 17.7
2014-12-08 22:03:04 LaCrosse TH2 temperature: 17.9


Was mache ich denn falsch?
1x JeeLink am ODROID C1 (FHEM2FHEM) für diverse LaCrosse Sensoren,  HMLAN für diverse Homematic Aktoren,
Haupt-FHEM auf Asus EeeBox und als DBlog-Server

tbals

Jetzt geht es  :D
Da habe ich in der define-Zeile ein paar Zeichen vergessen. Anstatt

define tempalarmTH1 notify TH1:temperature {\


muss da stehen
define tempalarmTH1 notify TH1:temperature.* {\
1x JeeLink am ODROID C1 (FHEM2FHEM) für diverse LaCrosse Sensoren,  HMLAN für diverse Homematic Aktoren,
Haupt-FHEM auf Asus EeeBox und als DBlog-Server