Hallo Rhobin,
vielen Dank, das geht runter wie Öl
Habe mir das Heizungsskript von Erik noch nicht verinnerlicht, da meine Steuerung eher trivial ausfällt.
Meine Frau ist schon ne Weile zu Hause (während ich noch 20 Monate absitzen muß) und wo sie sich aufhält muß es warm sein, sonst...
Also Erdgeschoß den ganzen Tag warm und Bad im OG nur morgens und abends. Alle anderen Zimmer sind meistens nicht mehr bewohnt, also Absenkung aktiv.
Habe allerdings diese Steuerung auch auf die HM gelegt, um leichter eingreifen zu können.
Grundsätzlich sollte aber auch das Skript in HM umgesetzt werden können, sofern nicht Werte angesprochen werden, die in HM nicht zur verfügung stehen.
Hier mal mein Heizungs-Makro fürs Bad (wird alle 10 Minuten aufgerufen):
- Code: Alles auswählen
//==========================================================================
//** aktuelle Werte sichern
tempT:= SVA_T
tempN:= SVA_N
tempL:= SVA_L
SVA_T:= "M"
SVA_N:= "FWT_BAD_Mp"
SVA_L:= FWT_BAD_Mp_Sme
//==========================================================================
LOG:= "Status = aktiv"
aufrufen(MAC_wrt_LOG)
// evtl. über deaktivieren/aktivieren steuern?????
wenn FWT_all_Heizperiode = "aus" dann
deaktivieren(FWT_BAD_Mp)
gehezu VERLASSEN
endewenn
// Temperaturabsenkung:
// FWT_all_Datum_absenken und FWT_all_Datum_hochfahren = Urlaubszeit!
wenn Datum = FWT_all_Datum_absenken dann
wenn FWT_BAD_TAbsenkung > 0 dann
FWT_BAD setzen auf FWT_BAD_TAbsenkung
FWT_all_Datum_absenken:= FWT_all_Datum_absenken - 1
LOG:= "Absenkdatum erreich, absenken auf " + FWT_BAD_TAbsenkung
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
// Bei Urlaubsende wieder aufheizen entsprechend TnachAbsenkung
wenn Datum = FWT_all_Datum_hochfahren dann
FWT_BAD setzen auf FWT_BAD_TnachAbsenkung
FWT_all_Datum_hochfahren:= FWT_all_Datum_hochfahren - 1
LOG:= "Datum zum hochfahren erreicht, hochfahren auf " + FWT_BAD_TnachAbsenkung
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
// Bei Party = an - einmalig auf Party-Temperatur setzen und so lassen
wenn UVA_Party = "an" dann
// Wenn Party-Temperatur vorgegeben wurde: übernehmen, ansonsten aktuelle Temp. halten
wenn FWT_BAD_TParty > 0 dann
wenn FWT_BAD_P_erledigt = 0 dann
FWT_BAD setzen auf FWT_BAD_TParty
FWT_BAD_P_erledigt:= 1
LOG:= "Party aktiv, setzen auf " + FWT_BAD_TParty
aufrufen(MAC_wrt_LOG)
endewenn
endewenn
gehezu VERLASSEN
sonst
// Wenn Party ausgeschaltet, dann Flag wieder zurücksetzen
wenn FWT_BAD_P_erledigt = 1 dann
LOG:= "Party beendet, normaler Ablauf wieder aktiv"
aufrufen(MAC_wrt_LOG)
FWT_BAD_P_erledigt:= 0
endewenn
endewenn
// zunächst Zeitrahmen setzen, falls nicht exakt zur Uhrzeit aktiv!
u:= Uhrzeit + "00:00:20"
// SVA_Feiertag wird einmalig in einem Makro zum Tageswechsel gesetzt!
// Feiertagstemperatur prüfen
wenn SVA_Feiertag <> " " dann
LOG:= "jetzt ist Feiertag aktiv"
aufrufen(MAC_wrt_LOG)
wenn FWT_BAD_Z1_WF <> " " dann
z:= FWT_BAD_Z1_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T1
LOG:= "Uhrzeit = Z1_WF, T1 setzen: " + FWT_BAD_T1
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z2_WF <> " " dann
z:= FWT_BAD_Z2_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T2
LOG:= "Uhrzeit = Z2_WF, T1 setzen: " + FWT_BAD_T2
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z3_WF <> " " dann
z:= FWT_BAD_Z3_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T3
LOG:= "Uhrzeit = Z3_WF, T1 setzen: " + FWT_BAD_T3
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z4_WF <> " " dann
z:= FWT_BAD_Z4_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T4
LOG:= "Uhrzeit = Z4_WF, T1 setzen: " + FWT_BAD_T4
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
gehezu VERLASSEN
endewenn
// Wochenendtemperatur prüfen
// SMDMDFS (Sonntag, Montag, Dienstag...
wenn Wochentag =+ "1000001" dann
LOG:= "jetzt ist Wochenende aktiv"
aufrufen(MAC_wrt_LOG)
wenn FWT_BAD_Z1_WF <> " " dann
z:= FWT_BAD_Z1_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T1
LOG:= "Uhrzeit = Z1_WF, T1 setzen: " + FWT_BAD_T1
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z2_WF <> " " dann
z:= FWT_BAD_Z2_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T2
LOG:= "Uhrzeit = Z2_WF, T2 setzen: " + FWT_BAD_T2
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z3_WF <> " " dann
z:= FWT_BAD_Z3_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T3
LOG:= "Uhrzeit = Z3_WF, T3 setzen: " + FWT_BAD_T3
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z4_WF <> " " dann
z:= FWT_BAD_Z4_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T4
LOG:= "Uhrzeit = Z4_WF, T4 setzen: " + FWT_BAD_T4
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
gehezu VERLASSEN
endewenn
// normale Zeiten berücksichtigen
z:= FWT_BAD_Z1
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T1
LOG:= "Uhrzeit = Z1, T1 setzen: " + FWT_BAD_T1
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
z:= FWT_BAD_Z2
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T2
LOG:= "Uhrzeit = Z2, T2 setzen: " + FWT_BAD_T2
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
z:= FWT_BAD_Z3
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T3
LOG:= "Uhrzeit = Z3, T3 setzen: " + FWT_BAD_T3
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
z:= FWT_BAD_Z4
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T4
LOG:= "Uhrzeit = Z4, T4 setzen: " + FWT_BAD_T4
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
VERLASSEN:
//==========================================================================
//** aktuelle Werte zurückholen
SVA_T:= tempT
SVA_N:= tempN
SVA_L:= tempL
//==========================================================================
Auf offene Fenster nehme ich keine Rücksicht. Wie schon Volkmar sagte, müsste die Absenkung ja bereits beginnen bevor das Fenster geöffnet wird - sonst macht's wenig Sinn.
Könnte man natürlich einfach mit einbinden. Dann müsste das Skript aber wenigstens jede Minute ausgeführt werden!
Generisch geht natürlich absolut nichts mit HP. Solch ein Makro muss also von jedem Thermostaten einzeln aufgerufen werden. Datenübergabe muss über globale Variablen erfolgen...
Viele Grüsse,
Peter