Sonoff TH10 für Infrarot Heizung
Statt mit einem Thermostat wird über OpenHAB geregelt!
Ein Winter im Waldviertel ist schön, aber kalt und wenn man dort eine Wohnung frostfrei halten möchte, dann geht das am einfachsten mit einer Elektroheizung. Infrarot Heizpaneele, vor allem mit Keramikoberflächen sind da besten geeignet. Meine ist von heatness, liegt preislich in der Mittelklasse.
Die Montage ist einfach und der elektrische Anschluss erfolgt über einen 230V Stecker. Die Heizung hat aber keine Regelung, d.h. solange sie am Stromnetz hängt, solange wird geheizt.
Steuerung über einen Sonoff TH10
Für die Steuerung habe ich eine neue Aufputz Steckdose montiert und davor einen sonoff TH10 Relaisschalter mit angeschlossen DS18B20 Temperaturfühler. Der TH10 wurde, wie immer mit der tasmota firmware geflashed. Geht nicht OTA, d.h. etwas löten ist notwendig.
Folgendes Template habe ich verwendet.
{"NAME":"Sonoff TH","GPIO":[32,1,0,1,1,0,0,0,224,320,1312,0,0,0],"FLAG":0,"BASE":4}
Die Kommunikation mit openHAB funktioniert wieder über MQTT. Dazu gibt es folgende Einträge. Es gibt natürlich noch weit mehr Info, die man aus dem TH10 auslesen kann.
// things: Sonoff TH10 mit DS18B20 Temperatursensor
Thing topic sonoffTH10_1 "Infrarot Heizung" {
Channels:
Type switch : s1Power "Power"
[stateTopic="stat/sonoff1/POWER",
commandTopic="cmnd/sonoff1/POWER"]
Type number : s1Temperature "Temperature"
[stateTopic="tele/sonoff1/SENSOR",
transformationPattern="JSONPATH:$.DS18B20.Temperature" ]
}
// items:
Switch s1Power "s1 Power" <switch>
{channel="mqtt:topic:mosquitto:sonoffTH10_1:s1Power"}
Number s1Temperature "Temperature" <temperature>
{channel="mqtt:topic:mosquitto:sonoffTH10_1:s1Temperature"}
Number Raumtemperatur_Soll
// sitemap:
sitemap heizung label="Heizung" {
Frame label="Heizung" {
Setpoint item=Raumtemperatur_Soll
label="Raumtemperatur Soll [%.1f °C]"
step=0.5 minValue=-1 maxValue=30
Text item=s1Temperature
label="Raumtemperatur Ist [%.1f °C]"
icon="temperature"
Switch item=s1Power label="Heizung []"
}
}
// rules
rule "Init Heizung Items"
when
System started
then
if (Raumtemperatur_Soll.state == NULL) {
Raumtemperatur_Soll.postUpdate(2.0)
//postUpdate ist nur für Aktualisierungen innerhalb von
openHAB (sendCommand gibt diese auch auf den Bus)
}
if (s1Temperature.state == NULL) {
s1Temperature.postUpdate(2.0)
}
end
rule "Temperatur Ist mit Soll vergleichen"
when
Item Raumtemperatur_Soll changed or
Item s1Temperature changed
then
var double raum_temp_soll=
(Raumtemperatur_Soll.state as DecimalType).doubleValue
var double raum_temp_ist=
(s1Temperature.state as DecimalType).doubleValue
if (raum_temp_ist < raum_temp_soll){
s1Power.sendCommand(ON)
}
else {
s1Power.sendCommand(OFF)
}
end
Funktioniert alles Bestens, nur der Temperaturfühler liegt zu Nahe an der Heizpaneele, der muss noch mit einer Verlängerung etwas weiter weg, sonst misst er nicht die wirkliche Raumtemperatur.