FHEM Forum

FHEM => Automatisierung => Thema gestartet von: NCMasta am 03 Juli 2021, 13:55:17

Titel: Steuerung einer Gastherme über MAX Wandthermostate
Beitrag von: NCMasta am 03 Juli 2021, 13:55:17
Guten Tag,

ich habe an meiner Gastherme einen Shelly angebracht, der die Gastherme (Brenner des Heizungswassers und Pumpe) ausschaltet, sobald die gemessene Temperatur an 3 MAX Wandthermostaten höher ist, als die eingestellte Temperatur. Zusätzlich soll bei einer Außentemperatur über 20°C der Brenner dauerhaft aus sein, bzw bei einer Außentemperatur unter 5°C dauerhaft an.

Momentan läuft dieses Skript noch über Node-Red, also Node-Red gibt die jeweiligen on/off Befehle für den Shelly an FHEM weiter.

Das Ganze möchte ich nun aber ohne Node-Red verwirklichen. Allerdings verhält sich FHEM nicht wie gewünscht. FHEM erkennt die Logik mit der Außentemperatur, aber es scheitert irgendwie immer an "wenn desiredTemperatur kleiner/gleich Temperatur des Wandthermostats". Ist mein erstes "größeres" Skript mit FHEM, bin leider noch nicht so bewandet mit Perl  :P

folgendes steht in der DEF:
+*00:00:10 {
if(ReadingsVal('Wetter', 'temperature', '') < 5) {
fhem('set Shelly_Gastherme on')
}
elsif((ReadingsVal('Wetter', 'temperature', '') >= 5 ) && (ReadingsVal('Wetter', 'temperature', '') <= 20 )) {
if( (ReadingsVal('MAX_1c2044', 'desiredTemperature', '') <= ReadingsVal('Max_1c2044', 'temperature', '')) &&
(ReadingsVal('MAX_1c1eb6', 'desiredTemperature', '') <= ReadingsVal('MAX_1c1eb6', 'temperature', '')) &&
(ReadingsVal('MAX_1c1eae', 'desiredTemperature', '') <= ReadingsVal('MAX_1c1eae', 'temperature', ''))
) {
fhem('set Shelly_Gastherme off')
}
else{
fhem('set Shelly_Gastherme on')
}
}
elsif(ReadingsVal('Wetter', 'temperature', '') > 20) {
fhem('set Shelly_Gastherme off')
}
else{
fhem('set Shelly_Gastherme on')
}
}


Kann mir jemand sagen, was ich falsch mache?

LG

Eric
Titel: Antw:Steuerung einer Gastherme über MAX Wandthermostate
Beitrag von: rudolfkoenig am 04 Juli 2021, 11:23:24
Ich wuerde groessere Skripte als Funktion in 99_MyUtils.pm einbauen, zum Testen kann man sie in der Kommandzeile aufrufen per { meineFunktion() }
Dann im FHEM-Log schauen, ob es beim Aufruf keine Probleme gibt.
ReadingsVal ist nicht optimal fuer Zahlenvergleiche: es gibt Aerger, wenn an dem Temperatur-Reading die Einheit haengt. ReadingsNum sollte dieses Problem loesen.
Weiterhin wuerde ich (solange ich entwickele), alle verwendeten oder berechneten Werte mit der Log Funktion ausgeben.
Titel: Antw:Steuerung einer Gastherme über MAX Wandthermostate
Beitrag von: NCMasta am 04 Juli 2021, 15:23:21
ReadingsNum statt ReadingsVal, ob, vielen Dank, wieder etwas dazu gelernt :) Vielen Dank!
Das es irgendwie zu "Ärger" kommt, hatte ich schon vermutet, da if-Befehle mit nur einem ReadingsVal funktioniert haben. Bei 2 ReadingsVal hat es nicht funktioniert.

Nebenbei noch ein großes Lob für FHEM, habe vorher ioBroker, Node-Red, OpenHAB, Node-Blue ausprobiert, keines läuft aber so stabil wie FHEM. Lediglich das Regeln erstellen, ist ein bisschen "tricky", aber auch das ist zu schaffen.