Hallo,
ich wollte für die Oberfläche einen Slider einführen womit ich die Heizung regulieren kann.
Hab ebenfalls schon folgenden Thread dazu gefunden https://forum.fhem.de/index.php?topic=15086.0 (https://forum.fhem.de/index.php?topic=15086.0)
Dort werden ein paar Schnipsel zur Verfügung gestellt aber irgendwie werde ich daraus nicht schlau.
Wenn ich folgenden Schnipsel in die Commandleiste eingebe bekomme ich einen Fehler:
define SetzSliderNotify notify SZ_Heizung:* {\
my $timerwert = ReadingsVal("SZ_Heizung","ReadingName","on");;\
fhem ("set dy_SZ_Heizung_Slider $timerwert");;\
}
Durch versuchen konnte ich den Schnipsel so umformen das er klappt:
define SetzSliderNotify notify wz_Heizung:* {my $tempvalue = ReadingsVal("wz_Heizung_Clima","desired-temp","19.5");;\
fhem ("set dy_SZ_Heizung_Slider $tempvalue");;}
Gibt es irgendwie noch eine andere Art die Notify anzulegen? Hab über die fhem.cfg nachgedacht aber da heißt es ich soll die Finger davon lassen.
Und etwas weiter unten gibt es noch folgenden Schnipsel damit ich dauern Daten übertragen werden:
define SetzSliderNotify notify SZ_Heizung:* {\
my $timerwert = ReadingsVal("SZ_Heizung","ReadingName","on");;\
fhem ("set dy_SZ_Heizung_Slider $timerwert") if( $timerwert != Value("dy_SZ_Heizung_Slider");;\
}
Warum steht der Set Code vor dem If? Muss das nicht eigentlich dahinter stehen?
Hi,
Zur ersten Frage: Drücke mal auf DEF in den Details Deines notify... Ist es das, was du mit ,,anderer Art" meinst?
Das Einsteiger-PDF hast du gelesen?
Zu 2. empfehle ich mal nach Perl-Grundlagen zu googeln.
Grüße,
Oli
Kurz, weil mobil
Also ich hab mich etwas mit dem Thema beschäftigt aber ich komme immer noch nicht weiter.
Wie erstellen die das notify? Weil über die commandozeile oben auf keinen fall da ein fehler kommt ?!
Ich hab mal geschaut wegen dem leeren Rumpf vom if Block aber finde dazu nichts. Kann mir jemand die Zeile erklären?
fhem ("set dy_SZ_Heizung_Slider $timerwert") -> Setzen des Wertes auf den Wert der Variablen
if( $timerwert != Value("dy_SZ_Heizung_Slider") -> ?????;;
hi,
ein Notify erstellt man einfach,
def N1 notify a b <enter>
a = event und b der set befehl set def on oder in perl {fhem("set def on")}
das kann man im nachhinein ändern siehe bild
if kann auch nach dem Befehl in perl stehen. wie kann man nach lesen
gruss
Wie man ein notify erstellt ist mir klar, nur erscheint es mir so, dass die das direkt mit dem Perl Code in einem Zug durchführen statt erst das Notify anzulegen und dann den code in DEV eintragen
Wie Eismann schon geschrieben hat, man kann das DEF im Nachhinein ändern.
Alernativ geht's auch über ,,raw export" wenn man unbesehen erwas übernehmen will. https://wiki.fhem.de/wiki/Import_von_Code_Snippets
Kurz, weil mobil
Hi,
das hier
define SetzSliderNotify notify wz_Heizung:* {my $tempvalue = ReadingsVal("wz_Heizung_Clima","desired-temp","19.5");;\
fhem ("set dy_SZ_Heizung_Slider $tempvalue");;}
geht einfacher und ohne Perl mit set magic (https://commandref.fhem.de/#set)
define SetzSliderNotify notify wz_Heizung:* set dy_SZ_Heizung_Slider [wz_Heizung_Clima:desired-temp]
Zu Fehlermeldungen:
Mehrzeiler gehen nur über Raw Definition bzw. den DEF Editor und nicht über die FHEM Kommandzeile!
define bringt einen Fehler wenn das Gerät geändert werden soll, dann nimmt man defmod!
Zitatfhem ("set dy_SZ_Heizung_Slider $timerwert") -> Setzen des Wertes auf den Wert der Variablen
if( $timerwert != Value("dy_SZ_Heizung_Slider") -> ?????;;
-> https://heinz-otto.blogspot.com/2015/01/perl-besonderheit-beim-if.html
Gruß Otto
Danke für die Unterstützung.
Ich weiß viele kleine Fragen aber ich denke so langsam weiß ich wie es läuft ;D