Hallo liebes Forum, dies ist mein erster Beitrag und gleich eine Frage :-)
Ich versuche nun schon sei 4 Tagen einem Schaltaktor (HM-LC-Sw1-PB-FM) das temperaturabhängige schalten beizubringen. Der Sensor ist ein HM-WDS10-TH-O.
In der Weboberfläche wird der Plot vom Sensor auch angezeigt nur wenn ich versuche mit folgendem Code den Schalter zu bedienen passiert nix (auch keine Fehlermeldung)
Code:#Temp.abhaengig schalten
#
define THSensor notify THSensor:temperature.* { \
my $temp = %EVTPART1;;\
my $val = Value("CUL_HM_HM_LC_SW2_PB_FM_153256_Sw_02");;\
fhem("set CUL_HM_HM_LC_SW2_PB_FM_153256_Sw_02 switch on") if($temp < 21.00 && $val eq "off");;\
fhem("set CUL_HM_HM_LC_SW2_PB_FM_153256_Sw_02 switch off") if($temp > 24.00 && $val eq "on");;\
}
Kann ir jemand auf die Sprünge helfen ?
Vielen Dank
franky08
Hier meine komplette fhem.cfg als Anhang
Hi Franky,
ungetestet und ohne HM- Wissen:
define THSensor notify THSensor:temperature.* { \
\
my $temp = %EVTPART1;;\
my $val = Value("CUL_HM_HM_LC_SW2_PB_FM_153256_Sw_02");;\
\
if ($temp < 21.8 and $val eq "off"){\
fhem("set CUL_HM_HM_LC_SW2_PB_FM_153256_Sw_02 on");;\
} \
if ($temp > 24.0 and $val eq "on"){\
fhem("set CUL_HM_HM_LC_SW2_PB_FM_153256_Sw_02 off");;\
} \
}
- "switch off/on" kenne ich so nicht, ggf. ist das bei HM so???
- lässt sich der Aktor ohne Logik schalten?
- funktionieren die Variablen? -> ggf. ins Log schreiben lassen!
- "if($temp < 21.00 && $val eq "off");;\" -> ggf. kein Leerzeichen nach if?
- Klammerung und Reihenfolge mache ich immer so wie gezeigt, es müsste aber auch so gehen, wie du es hast
Viele Grüße + viel Erfolg
Frank
Hab deinen Code mal reinkopiert, leider funktioniert es weder mit noch ohne Leerzeichen nach dem if, der Aktor lässt sich sonst normal vom FHEM Webif schalten also da liegt der Fehler auch nicht. Das Problem ist auch das ich an einem MAC sitze und da die geschweiften Klammern nur über Umwege in den Code zu bringen sind :-(
meinst du das LogFile von FHEM oder wo kann ich sehen ob die Variablen funktionieren ?
Danke und viele Grüße
Hab jetzt noch ne Weile mit dem Code rumgespielt aber leider kein Erfolg
Hm, wie gesagt, habe mit HM noch zu wenig Erfahrung.
Aber die Variablen testen geht so: Füge im Prog. an geeigneter Stelle z.B. ein:
Log 1, "Inhalt von Variable val: $val";; \
Dann muss das Programm ausgeführt werden und danach sollte der Text mit dem Wert im normalen FHEM- Log stehen.
Ich denke das es daran liegt das die aktuelle Temperatur vom Sensor nicht abgefragt werden kann.
Wenn ich THSensor:temperature abfrage (Log schreibe) wird kein Wert geloggt also denke ich, dass der Temperaturwert nicht zurückgegeben wird.
Gruss franky08
Jetzt habe ich im Internet was gefunden und angepasst :
#Ventilator schalten
#
define Ventilator at +*00:05:00 \
{if (ReadingsVal("CUL_HM_HM_WDS10_TH_O_206AA2","temperature",99)>24) \
{fhem("set CUL_HM_HM_LC_SW2_PB_FM_153256_Sw_02 on")} else {fhem("set CUL_HM_HM_LC_SW2_PB_FM_153256_Sw_02 off")}}
attr Ventilator room CUL_HM
#
Damit funktioniert der Autor !!
Danke nochmal für die Denkanstöße
Gruß franky08
Na klingt doch schon mal nicht schlecht... ;o)
Du hattest bisher noch nichts von einem Lüfter erwähnt. Geht es um einen Kellerlüfter oder einen Fensterlüfter, der Außenluft nach innen holt? Dann solltest du besser nicht nach Temperatur, sondern nach Taupunkt (//fhem.de/commandref.html#dewpoint) steuern.
Nein, dass ist ein Deckenventilator im Schlafzimmer.
Jetzt ist mir aufgefallen das ich die ganze Geschichte noch mit der Tageszeit (sunset, sunrise) verknüpfen muss.
P.S. Rechtschreibung im vorhergehenden Post, es muss natürlich der Aktor sein :-)
Tipp: Willst Du den Schalter und den Sensor nicht zuerst mal sinnvoll umbenennen? Das macht das Lesen (und Schreiben) erheblich einfacher.
Anstatt dem notify auf die temperature würde ich das Ganze übrigens mit einem at definieren, dann kannst Du das sunrise/sunset automatisch mit erschlagen.
Das mit dem at war mir klar, habe ich für 2 andere Aktoren auch schon gemacht. Das mit dem umbenennen habe ich noch nicht probiert gibt es da einen Befehl dafür?
rename und dann name alt name neu ?
Das mit dem rename z.B. rename CUL_HM_HM_LC_SW1_PL2_20C733 in WZ_Stehlampe geht irgendwie nicht, wenn ich das in der Kommandozeile ausführe ist in der fhem.cfg der Eintrag ab HM_LC... weg aber es wird nicht in den neuen Namen WZ_Stehlampe umbenannt.
Zitat von: franky08 schrieb am Mo, 26 August 2013 16:08rename und dann name alt name neu ?
genau so
Zitat von: franky08 schrieb am Mo, 26 August 2013 16:08Das mit dem rename z.B. rename CUL_HM_HM_LC_SW1_PL2_20C733 in WZ_Stehlampe geht irgendwie nicht, wenn ich das in der Kommandozeile ausführe ist in der fhem.cfg der Eintrag ab HM_LC... weg
dann funktioniert es definitiv
Zitat von: franky08 schrieb am Mo, 26 August 2013 16:08aber es wird nicht in den neuen Namen WZ_Stehlampe umbenannt.
ich tippe jetzt einfach mal darauf, dass Du noch kein SAVE ausgeführt hast
Genau, dass war es! Habe schon die meisten Devices umbenannt und den entsprechenden room zugeordnet.
Danke für den Tipp
Gruß franky08
Irgendwie bekomme ich die Verknüpfung zwischen der Temperatur und einer definierten Schaltzeit nicht hin.
Das Problem ist das egal wie die Temperatur am Sensor ist vor einer bestimmten Zeit (hier 22.00 Uhr) nichts passieren soll. Ist es nach 22.00 und die Temperatur über 23° C soll der Aktor schalten. Der Code (ohne die Zeitfunktion) ist so:
define Ventilator at +*00:05:00 \
{if (ReadingsVal("THSensor","temperature",99)>23) \
{fhem("set Deckenventilator on")} else {fhem("set Deckenventilator off")}}
attr Ventilator room Schlafzimmer
#
#
Der Sensor wird alle 5 min abgefragt und soweit funktioniert auch alles, wie kann ich das ganze noch von einem Zeitinterval abhängig machen ? Das ganze soll nur zwischen 22:00 Uhr und 03:00 Uhr ausgeführt werden.
Danke franky08