FHT80b Automatik setzen
Eine mögliche Betriebsart des FHT80b im Zusammenhang mit Fhem ist, die im FHT80b gespeicherten Heizprogramme zu nutzen und Fhem nur zu besonderen Gelegenheiten eingreifen zu lassen, z.b. wenn man das Haus verlässt, alle FHTs abzusenken.Dadurch verfolgen die FHTs auch dann Heizprogramme, wenn Fhem ausfallen sollte.
In diesem Scenario ist eine Möglichkeit des Absenkens (z.B. beim Verlassen der Wohnung), auf Knopfdruck alle FHTs in den manuellen Modus zu setzen, und dabei die "desired-temp" auf die jeweilige Nachttemperatur zu stellen. Durch den Wechsel in den manuellen Modus ist gewährleistet, dass die eingestellte Temperatur nicht durch die FHTs selbst wieder verstellt werden kann.
Bei der Rückkehr wird dann der Automatikbetrieb wieder eingeschaltet. Leider hat dies keinen Einfluss auf die derzeit eingestellte desired-temp. Die naheliegende Lösung ist, zusätzlich desired-temp = day-temp zu senden. Dadurch wird es nach der Rückkehr auf jeden Fall warm. Der Nachteil ist aber, dass die tatsächliche Soll-Temperatur erst wieder beim nächsten im FHT gespeicherten Tagesprogramm-Wechsel gesetzt wird. Kommt man also spät nach Hause, wird die ganze Nacht voll durchgeheizt.
In der Folge entstand das folgende Modul (am besten in 99_MyUtils.pm
einzufügen):
sub FHTnominal($) { # Solltemperatur (auto) eines FHT zur aktuellen Uhrzeit ermitteln my($fht) = @_; my $jetzt = strftime("%R", localtime(time)); my @wdays = qw(sun mon tue wed thu fri sat); my $tag = $wdays[strftime("%w", localtime(time))]; my $f1 = ReadingsVal($fht,$tag . "-from1","00:00"); my $f2 = ReadingsVal($fht,$tag . "-from2","00:00"); my $t1 = ReadingsVal($fht,$tag . "-to1","24:00"); my $t2 = ReadingsVal($fht,$tag . "-to2","24:00"); if(($jetzt ge $f1 && $jetzt le $t1) || ($jetzt ge $f2 && $jetzt le $t2)) { fhem("set $fht mode auto desired-temp " . ReadingsVal($fht,"day-temp","21.0")); } else { fhem("set $fht mode auto desired-temp " . ReadingsVal($fht,"night-temp","17.0")); } }
Der Aufruf der Routine erfolgt mittels FHTnominal("MeinFHT")
.
Wenn bisher noch nie mittels der "report"-Funktionen die aktuellen Tagesprogramme und Tag-/Nacht-Temperatursollwerte ausgelesen wurden, werden die fest hinterlegten Standardwerte genutzt. Diese sind bei Bedarf anzupassen.
Die Vorgabewerte im obigem Beispiel entsprechen den Grundeinstellungen der FHTs bei Auslieferung:
- Tagessoll=21°C
- Nachtsoll=17°C
- Tagesprogramm 1 und 2 jeweils von 0 bis 24:00 Uhr
Besser ist aber, wenn die Werte aus dem FHT stammen. ;-)
Was genau macht dieses Modul nun eigentlich? Zunächst wird die aktuelle Uhrzeit und der Wochentag ermittelt. Dann wird passend zum Tag das Tagesprogramm aus den von FHEM gespeicherten Readings gelesen (der FHT80b hat 4 Schaltpunkte pro Tag).
Je nachdem, ob dieser sich gerade im "Tag"- oder "Nacht"-Modus befindet, wird die passende Temperatur (ebenfalls aus den Readings ausgelesen) gesetzt und der Automatik-Modus aktiviert.
Der Vorteil dieser Methode ist, dass man keine separaten, "hart kodierten" Listen für seine FHTs führen muss, um die Einstellungen schnell setzen zu können. Alle nötigen Daten sind im FHT vorhanden und werden genutzt. Der Routine ist es also auch egal, wenn der eine FHT auf Tagbetrieb bei 22° und ein anderer auf Nacht bei 8° gesetzt werden muss - der Aufruf ist immer der selbe.