FHEM Forum

FHEM - Hausautomations-Systeme => 1Wire => Thema gestartet von: andre-h am 23 November 2013, 10:25:16

Titel: aktueller Temperaturwert und Aktion : DS18b20 an COC
Beitrag von: andre-h am 23 November 2013, 10:25:16
Servus ins Forum,

ich bin Neuling in FHEM und blutiger Anfänger in Perl.
Nach unzähligen Stunden der Suche im Forum und Google wende ich mich jetzt doch mal direkt an Euch.
Hardware: RasPi, busware COC mit 1-Wire Busmaster, HM-LC-Sw4-DR (HM 4-Kanal Schaltaktor), DS18b20 TempSensor an COC.
Ich möchte abhängig von der Temperatur eine Schaltaktion ausführen. Autocreate hat mir Sensor und Aktor in der config angelegt, den Aktor kann man in FHEM schalten und vom TempSensor kommen regelmäßig Werte, die auch im Plot angezeigt werden.

Mein Problem steckt im Notify und der darin enthaltenen IF Abfrage: (Namen wurden so von Autocreate vergeben, ich habe noch nichts geändert)

define HMS100T_c6ca notify HMS100T_c6ca {\
my $temp_hms100t = ReadingsVal("HMS100T_c6ca","temperature","20");;\
@@hms100t = (split(/ /,$temp_hms100t));;\
if ($hms100t[0] > 20) {\
    fhem ("set CUL_HM_switch_1E44CD_Sw_01 off")\
    } else {\
    fhem ("set CUL_HM_switch_1E44CD_Sw_01 on")\
    }\
}\


Die Schaltbefehle funktionieren über das FHEM webinterface.
1. Es wäre sehr hilfreich, den Inhalt der Variablen $hms100t  auszugeben, um zu sehen, was man eigentlich vergleicht - wie kann ich das realisieren?
2. Was ist an dem Code falsch? --> es kommt keine Fehlermeldung, aber er funktioniert nicht.

Über Tipps und Ratschläge von Euch würde ich sehr freuen!
Viele Grüße,
Andre
Titel: Antw:aktueller Temperaturwert und Aktion : DS18b20 an COC
Beitrag von: andre-h am 23 November 2013, 18:18:09
Hallo nochmal,

gibts denn hier niemanden, der mir auf die Sprünge helfen kann?  :'(
Ich wäre für nen Tipp sehr dankbar!

Viele Grüße,
Andre
Titel: Antw:aktueller Temperaturwert und Aktion : DS18b20 an COC
Beitrag von: stenny73 am 23 November 2013, 19:24:13
Hallo

Nur kurz drübergeschaut......

Dein Sensor, Notify und Funktionsname....... alles HMS100T_c6ca
Das geht nicht wirklich, jedes Gerät oder Funktion ist mit einem eigenständigen Namen zu bezeichnen


stenny
Titel: Antw:aktueller Temperaturwert und Aktion : DS18b20 an COC
Beitrag von: andre-h am 23 November 2013, 20:02:12
Hallo Stenny,

besten Dank schonmal für Deine Antwort!
Ok, eindeutige Namen...wie doof...
Aber:
So, wie ich die Notify Funktion verstanden habe, sollte das hier eigentlich klappen - tut es aber leider nicht...

define XYZ notify HMS100T_c6ca {\
my $hms100t = $value("HMS100T_c6ca","temperature","20");;\
@@hms100t = (split(/ /,$hms100t));;\
if ($hms100t[1] > 20) {\
   fhem ("set CUL_HM_switch_1E44CD_Sw_01 on")\
} else {\
   fhem ("set CUL_HM_switch_1E44CD_Sw_01 on")\
}\
}\



XYZ --> irgendein Name
HMS100T_c6ca --> bereits definierter Name, auf den Notify reagieren soll
$hms100t = $value("HMS100T_c6ca","temperature","20");;\ --> aktuellen Wert von "HMS100T_c6ca" in Variable $hms100t schreiben (wobei ich noch keine Ahnung habe, was die "20" bedeutet)
split --> um den Temperaturwert vom Rest des Strings zu extrahieren (habe die Werte 0-4 auprobiert - keiner funktioniert)

Da muss es doch einen Denkfehler geben...?!

Gibt es denn irgendeine Möglichkeit, sich Variablenwerte ausgeben zu lassen? (MsgBox, LogFile, FHEM Webinterface, ...)

Viele Grüße,
Andre