Heating Control: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Sorry, aber bei dem Grammatikfehler - der leider immer mehr um sich greift - sträuben sich mir die Nackenhaare :-) ... daher: nochmal korrigiert.)
Zeile 60: Zeile 60:
define act_on_HCAutomatikAus notify HCAutomatik:off {\
define act_on_HCAutomatikAus notify HCAutomatik:off {\
     fhem("set FHT_.* desired-temp 14.0 ;; set HCS_System off");;\
     fhem("set FHT_.* desired-temp 14.0 ;; set HCS_System off");;\
     fhem ("set Pushover msg 'FHEM' 'Heizplan ausgeschalten'");;\
     fhem ("set Pushover msg 'FHEM' 'Heizplan ausgeschaltet'");;\
}</pre>
}</pre>



Version vom 29. August 2014, 16:33 Uhr

Heating_Control
Zweck / Funktion
Heizungssteuerung über ein Wochen-Heizprofil
Allgemein
Typ Hilfsmodul
Details
Dokumentation EN / DE
Modulname 98_Heating_Control.pm
Ersteller dietmar63 / Dietmar63
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Heating Control ist ein Fhem-Erweiterungsmodul zur Heizungssteuerung über ein Wochen-Heizprofil.

Voraussetzungen

Keine.

Anwendung

Define

Das Heizprofil wird angelegt mit

define <name> Heating_Control <device> [<language>] <profile> <command>|<condition>

Attribute

Ausführung

Die Kommandos zur Steuerung werden mit dem Befehl

set <device> (desired-temp|desiredTemerature) <temp>

zum definierten Zeitpunkt an das Gerät gesendet.

Anwendungsbeispiele


Grundsätzlich nutzte ich FHZ1300, FHT8b mit Fensterkontakten an FHEM. Die Steuerung der Heizung erfolgt komplett über FHEM, die FHTs laufen alle auf manuell.

Den Code zum definieren der FHTs spare ich mir jetzt, das sollte Grundverständnis sein.

Als erstes Modul meiner Steuerung nutze ich das Modul Heating_Control für jedes Zimmer/jeden FHT:

define HCB Heating_Control FHT_Bad 12345|06:00|22 12345|07:30|19 67|08:30|22 67|10:00|19 18:00|21 22:00|14 (ReadingsVal("HCAutomatik", "state", "") eq "on")
attr HCB alias Bad
attr HCB group Heizplan
attr HCB room Heizung

Den Heizplan kann ich über einen Dummy ein- und ausschalten:

define HCAutomatik dummy
attr HCAutomatik alias Heizungsautomatik
attr HCAutomatik devStateIcon on:general_an off:general_aus
attr HCAutomatik group Automatik
attr HCAutomatik icon sani_heating_automatic
attr HCAutomatik room Heizung
attr HCAutomatik sortby 1
attr HCAutomatik webCmd on:off
define act_on_HCAutomatikAn notify HCAutomatik:on {\
     Heating_Control_SetAllTemps();;\
     fhem("set HCS_System on");;\
}

define act_on_HCAutomatikAus notify HCAutomatik:off {\
    fhem("set FHT_.* desired-temp 14.0 ;; set HCS_System off");;\
    fhem ("set Pushover msg 'FHEM' 'Heizplan ausgeschaltet'");;\
}

Bei einer Deaktivierung werden alle FHTs auf 14 Grad eingestellt und es wird mir zu Info eine Pushnachricht geschickt.

Als nächstes habe ich das Modul HCS integriert:

define HCS_System HCS Vaillant
attr HCS_System alias Vaillant Steuerung
attr HCS_System devStateIcon demand:sani_heating_temp idle:sani_heating_manual off:general_aus
attr HCS_System deviceCmdOff off
attr HCS_System deviceCmdOn on
attr HCS_System event-on-change-reading state,devicestate,eco,overdrive
attr HCS_System icon sani_heating_manual
attr HCS_System idleperiod 5
attr HCS_System interval 5
attr HCS_System loglevel 5
attr HCS_System mode thermostat
attr HCS_System room Heizung
attr HCS_System thermostatThresholdOff 0.5
attr HCS_System thermostatThresholdOn 0.5
attr HCS_System valveThresholdOff 40
attr HCS_System valveThresholdOn 35

define Heizkessel FS20 xxxx xx
attr Heizkessel IODev FHZ
attr Heizkessel alias Vaillant Heizkessel (ON = Kessel AUS)
attr Heizkessel comment Wenn ON ist Kessel aus
attr Heizkessel devStateIcon on:general_an off:general_aus
attr Heizkessel group HCS
attr Heizkessel icon sani_boiler_temp
attr Heizkessel model fs20st

Hiermit steuere ich meine Vaillant Heizung potentialfrei über einen FS20 Einkanalempfänger an. Das Relais ist so angeschlossen, dass die Heizung an ist, wenn das Relais abgefallen ist (dies hat den Vorteil, dass auch bei einem Defekt des Empfängers die Heizung funktioniert). Ich habe dazu noch einen Dummy angelegt, damit ich abfragen kann, ob schon geschaltet wurde, damit nicht alle 5 Minuten (das Abfrageintervall von HCS) der FS20 geschaltet wird:

define Vaillant dummy
attr Vaillant alias Vaillant Heizsystem
attr Vaillant devStateIcon on:general_an off:general_aus
attr Vaillant group HCS
attr Vaillant icon sani_boiler_temp
attr Vaillant room Heizung
attr Vaillant webCmd on:off

define act_on_Vaillant notify Vaillant:.* {\
  if (ReadingsVal("Vaillant", "state", "on") eq "on" && ReadingsVal("Heizkessel", "state", "off") eq "on") {\
    fhem("set Heizkessel off");;\
  }\
  else {\
    if (ReadingsVal("Vaillant", "state", "off") eq "off" && ReadingsVal("Heizkessel", "state", "off") eq "off") {\
	  fhem("set Heizkessel  on");;\
	}\
   }\
}


Des weiteren habe ich mir einen "ECO-Script" angelegt (vielen Dank an das Forum für die Hilfe), welcher alle FHTs um 2 Grad runter setzt und zwar von dem im Moment anliegenden Wert:

define HZ.Absenkung dummy
attr HZ.Absenkung alias ECO Mode - Heizungsabsenkung 2 Grad
attr HZ.Absenkung devStateIcon on:general_an off:general_aus
attr HZ.Absenkung group Automatik
attr HZ.Absenkung icon time_eco_mode
attr HZ.Absenkung room Heizung
attr HZ.Absenkung webCmd on:off

define act_on_HZ.Absenkung_An notify HZ.Absenkung:on {\
	my @@FHT=devspec2array("TYPE=FHT");;\
        foreach(@@FHT) {\
		my $t = ReadingsVal("$_", "desired-temp", "")-2;;\
		fhem("set $_ desired-temp ".$t);;\
	}\
}

define act_on_HZ.Absenkung_Aus notify HZ.Absenkung:off set HCAutomatik on

define ECOMode.Aus notify Anwesenheit:Zuhause {\
  if (ReadingsVal("HZ.Absenkung", "state", "") eq "on") {\
    fhem ("set HZ.Absenkung off");;\
  }\
}


Diese ECO-Schalter triggere ich auch über das Modul PRESENCE und Geofancy mit einem watchdog an. Der watchdog wird bei Abwesenheit aktiviert und läuft 30 Minuten. Wenn bis dahin niemand zurück hin, wird ECO aktiviert:

define ECOMode watchdog Anwesenheit:Unterwegs 00:30 Anwesenheit:Zuhause set HZ.Absenkung on
attr ECOMode regexp1WontReactivate 1

Zusätzlich trigger ich ECO über die Aussentemperatur. Wird 22 Grad erreicht oder überschritten, wird ECO aktiviert. Unterhalb 22 Grad wieder deaktiviert:

define act_on_Aussentemperatur notify Wetterstation:temperature:.* {\
  if (ReadingsVal("Wetterstation", "temperature", "") >= "22" && ReadingsVal("Sonnenindikator", "state", "off") eq "off") {\
    fhem("set Sonnenindikator on");;\
  }\
  else {\
    if (ReadingsVal("Wetterstation", "temperature", "") < "22" && ReadingsVal("Sonnenindikator", "state", "off") eq "on") {\
	  fhem("set Sonnenindikator  off");;\
	}\
   }\
}

define Sonnenindikator dummy
attr Sonnenindikator devStateIcon on:sun27 off:sun7
attr Sonnenindikator group HCS
attr Sonnenindikator icon clear3

define act_on_Sonnenindikator notify Sonnenindikator:on set HZ.Absenkung on
define act_on_Sonnenindikator.Aus notify Sonnenindikator:off set HZ.Absenkung off


Dies soll als "Denkanstoss" dienen. Ich habe mir auch alles zu FHEM aus diesem Forum "gezogen". Nachbau erlaubt und erwünscht.


Todo: Screenshots ergänzen


Links