Hallo Forum,
bin der neue, heiße Matthias und versuche gerade Fhem zu bändigen. :)
(Nutze Fhem auf nem Raspberry (mit RazBerry) aktuell als Z-Wave Gateway zu meiner KNX Installation)
Folgendes Problem:
Ein "Danfoss RS 014G0160 Thermostat" liefert mir Ist- und Solltemperatur eines Raumes. Diesen Wert verarbeite ich mit einem Notify weiter.
das Notify Define
ZWave_SENSOR_MULTILEVEL_18:setpointTemp.*
{system("perl /opt/fhem/FHEM/99_sendtcp2smarthome.pm OG.Schlafzimmer.Heizung.SollTemperatur $EVTPART1");}
sleep 0.3;
{ fhem "set ZWave_THERMOSTAT_17 setpointHeating " . $EVTPART1 };
sleep 0.3;
get ZWave_THERMOSTAT_17 setpoint;
Allerdings möchte ich jetzt diesen Wert auch an meinen Heizungsthermostat weiterleiten, bekomme hierbei jedoch folgende Fehlermeldung:
2015.06.23 01:05:39 4: Notify_Temp_Sollwert_Schlafzimmer exec
{system("perl /opt/fhem/FHEM/99_sendtcp2smarthome.pm OG.Schlafzimmer.Heizung.SollTemperatur $EVTPART1");}
sleep 0.3;
{ fhem "set ZWave_THERMOSTAT_17 setpointHeating " . $EVTPART1 };
sleep 0.3;
get ZWave_THERMOSTAT_17 setpoint;
2015.06.23 01:05:39 3: set ZWave_THERMOSTAT_17 setpointHeating 19.5 : Error: 19.5 is not a decimal number
2015.06.23 01:05:39 3: Notify_Temp_Sollwert_Schlafzimmer return value: Unknown command {system("perl, try help.
Unknown command }
sleep, try help.
Error: 19.5 is not a decimal number
Wie kann ich einen Float-Wert übergeben?
Besten Dank für Euer Feedback!
Herzliche Grüße
Matthias
PS: Alternative wäre dem Danfoss beizubringen den Wert direkt an den Heizungsthermostat zu schicken und den Fhem nur zu "Informieren", geht das?
Dateien der Form FHEM/99_.*.pm werden automatisch von FHEM als Modul geladen. Ich empfehle fuer aufrufbare Programme einen anderen Namen, insb. wenn dieser Name im Forum auftaucht, von wo es gerne per Copy & Paste sich verbreitet.
Notify/at/etc Befehle muss man mit ; trennen, vor dem ersten sleep fehlt ein ; was den Parser verwirrt, und in der Fehlermeldung
"Unknown ..." resultiert.
Das notify kann man intuitiver/kuerzer/einfacher schreiben mit
ZWave_SENSOR_MULTILEVEL_18:setpointTemp.*
"perl /opt/fhem/FHEM/99_sendtcp2smarthome.pm OG.Schlafzimmer.Heizung.SollTemperatur $EVTPART1";
sleep 0.3;
set ZWave_THERMOSTAT_17 setpointHeating $EVTPART1;
sleep 0.3;
get ZWave_THERMOSTAT_17 setpoint;
Ob diese Befehlskette in sich sinnvoll ist, dazu kann ich nichts sagen.
Das aktuell in 10_ZWave.pm implementierte setpointHeating erlaubt keine Nachkommastellen, obwohl diese prinzipiell moeglich sind.
Hallo Rudolf,
Zitat von: rudolfkoenig am 23 Juni 2015, 10:52:46
Dateien der Form FHEM/99_.*.pm werden automatisch von FHEM als Modul geladen. Ich empfehle fuer aufrufbare Programme einen anderen Namen, insb. wenn dieser Name im Forum auftaucht, von wo es gerne per Copy & Paste sich verbreitet.
Alles klar, Danke für den Hinweis. Ist erledigt.
Zitat von: rudolfkoenig am 23 Juni 2015, 10:52:46
Notify/at/etc Befehle muss man mit ; trennen, vor dem ersten sleep fehlt ein ; was den Parser verwirrt, und in der Fehlermeldung
"Unknown ..." resultiert.
Das notify kann man intuitiver/kuerzer/einfacher schreiben mit
ZWave_SENSOR_MULTILEVEL_18:setpointTemp.*
"perl /opt/fhem/FHEM/99_sendtcp2smarthome.pm OG.Schlafzimmer.Heizung.SollTemperatur $EVTPART1";
sleep 0.3;
set ZWave_THERMOSTAT_17 setpointHeating $EVTPART1;
sleep 0.3;
get ZWave_THERMOSTAT_17 setpoint;
Ob diese Befehlskette in sich sinnvoll ist, dazu kann ich nichts sagen.
Danke auch hier. Funktioniert auch in dieser Schreibweise.
Zitat von: rudolfkoenig am 23 Juni 2015, 10:52:46
Das aktuell in 10_ZWave.pm implementierte setpointHeating erlaubt keine Nachkommastellen, obwohl diese prinzipiell moeglich sind.
Sprach mal etwas dagegen das Nachkommastellen nicht erlaubt sind? Ist eine Implementierung aufwändig?
Oder ist eine Regelung auf ein halbes Grad "genau" eher unüblich?
Beste Grüße
Matthias
Weder ist die Regelung auf ein halbes Grade genau unueblich, noch sind Nachkommastellen verboten.
Nur der Patch, den ich hier (http://forum.fhem.de/index.php?topic=23277.new#new) bekommen habe, hat es nicht enthalten.
Eine Implementierung mit Nachkommastelle ist etwas aufwendiger, da man dafuer eine Funktion bauen muss.