LC-Sw1-PB-FM temperaturabhängig schalten

Begonnen von franky08, 25 August 2013, 19:15:23

Vorheriges Thema - Nächstes Thema

franky08

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

Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

fiedel

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

FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

franky08

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
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

fiedel

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.
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

franky08



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
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

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
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

fiedel

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 steuern.

FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

franky08

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 :-)
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

betateilchen

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.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

franky08

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.
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

betateilchen

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
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

franky08


Genau, dass war es! Habe schon die meisten Devices umbenannt und den entsprechenden room zugeordnet.

Danke für den Tipp

Gruß franky08
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

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
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1