Steuerung von FHT80b & Anwesenheit

Begonnen von StefanW, 04 November 2015, 17:09:07

Vorheriges Thema - Nächstes Thema

StefanW

Hallo,
ich habe da mal ne kleine Verständnisfrage zu den FHT80b...

Folgende Situation:
Der FHT läuft ganz normal per Programm im Auto Modus.

Nun möchte ich den Auto Modus per Anwesenheitserkennung an bzw. abschalten.

Zur Umsetzung habe ich mir folgendes gedacht:
Bei Abwesenheit wird der FHT per FHEM auf Manuell geschaltet und auf Absenktemperatur gesetzt.
Bei Anwesenheit wird der FHT wieder auf Auto geschaltet und setzt sein Programm ganz normal fort.

Funktioniert mein Vorhaben so, oder kehrt der FHT erst wieder in sein Programm zurück, wenn der nächste "Schaltpunkt" eintritt?

Oder gibt's da eine einfachere Lösung dafür?

Gruß
Stefan

bergadler

#1
Hi,

also mit 'nem "was passiert mit dem Auto-Programm, wenn zwischendurch auf Manuell geschaltet wird?"
habe ich noch keine Erfahrungen gesammelt, aber mit dem "Fenster auf":

Im normalen Automodus wird bei mir z.B. das Bad von 05:15 bis 06:00 auf 22 °C geheizt
und danach wieder auf 17 °C abgesenkt.
Wenn jetzt aber schon vor 06:00 gelüftet wird (man war beim Duschen schneller), der FHT80b
schaltet auf "Fenster auf=12 °C" und erst nach 06:00 das Fenster wieder geschlossen wird,
schaltet der FHT dann wieder auf "sein letztes bekanntes" Setting -> 22 °C.
Nix mit  17 °C. >:(

Also setze ich noch einmal wochentags manuell um 06:30 die "desired-temp" entsprechend.
(weil dann ist definitiv das Fenster zu und wir außer Haus)

Daher würde ich mal behaupten, dieses Verhalten wird auch passieren, wenn sich der FHT
beim eigentlichen Umschaltpunkt des Auto-Modus im Modus "Manuell" befindet.

Gruß
aktuelles FHEM auf Raspberry B+, FHEM von fhem.de V.5.7, CUL868 V1.57, (6x FHT80B+ FHTTK, div. IT,div. FS20,Harmony Hub)

StefanW

Danke für die Info.

Ich habe in der zwischenzeit mal ein wenig rumprobiert.
Resultat: Mein Vorhaben klappt so nicht, da der Automatikmodus nicht wie gewünscht fortgesetzt wird.

Versuche es jetzt mal mit nem virtuellen FHT80TF.

Gruß
Stefan

Paul

Damit geht es

www.fhemwiki.de/wiki/FHT80b_Automatik_setzen
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

petjek

#4
Hallo,

ich habe mir den Wiki-Beitrag mal angesehen und so ungefähr die Hälfte verstanden. Ja, ich bin Neuling.  ;)
Die 99_myUtils.pm bekomme ich noch angepasst. Die Schaltzeitpunkte habe ich weitestgehend analog dem Programm im Gerät selbst gesetzt. Anbei ein Auszug.

day-temp 21.0
desired-temp 21.0
fri-from1 07:00
fri-from2 07:00
fri-to1 18:00
fri-to2 18:00
measured-temp 24.4
mode auto
mon-from1 07:00
mon-from2 07:00
mon-to1 18:00
mon-to2 18:00
night-temp 17.0
sat-from1 09:30
sat-from2 09:30
sat-to1 18:00
sat-to2 18:00
sun-from1 09:30
sun-from2 09:30
sun-to1 18:00
sun-to2 18:00
thu-from1 07:00
thu-from2 07:00
thu-to1 18:00
thu-to2 18:00
tue-from1 07:00
tue-from2 07:00
tue-to1 18:00
tue-to2 18:00
wed-from1 07:00
wed-from2 07:00
wed-to1 18:00
wed-to2 18:00
window closed
windowopen-temp 12.0
windowsensor ok

Man sieht, ich habe am Wochenende andere Schaltzeiten als unter der Woche. In dem Codeschnipsel kann (oder muss) ich das aber nicht hinterlegen?
Ist das so jetzt richtig?
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","07:00");
my $f2 = ReadingsVal($fht,$tag . "-from2","07:00");
my $t1 = ReadingsVal($fht,$tag . "-to1","18:00");
my $t2 = ReadingsVal($fht,$tag . "-to2","18: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"));
}
}

Was mich ganz besonders wuschig macht ist der Satz
Der Aufruf der Routine erfolgt mittels FHTnominal("MeinFHT")
Wie oder wo muss ich das aufrufen?
Die Abwesenheitssteuerung habe ich auch noch nicht kapiert, interessiert mich aber sehr. Das funktioniert inzwischen auch recht zuverlässig. Habe da lange mit Bluetooth und WLan rumgedoktort. Es geht hierbei um mein Büro, ein Raum den eigentlich nur ich nutze (Homeoffice). Ich bin beruflich aber viel unterwegs, manchmal mehrere Tage am Stück. An den Tagen braucht die Temperatur natürlich nicht heraufgesetzt werden bzw. kann auf Nachtmodus stehen bleiben.
Wäre das ein richtiger Ansatz?

define petjekOffSetTempLow notify WlanDevice:absent {fhem("set FHT_xxxx manual set FHT_xxxx desired-temp 17")}
define petjekOffSetTempHigh notify WlanDevice:present {fhem("set FHT_xxxx auto set FHT_xxxx desired-temp 21")}


Viele Fragen, viele Grüße,
petjek
Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.

Paul

Das mußt du setzen im notify beim ankommen, dann richtet sich dann welche Temperatur eingestellt wird .
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

petjek

Danke!
Das wäre dann so?

define petjekOffSetTempHigh notify WlanDevice:present FHTnominal(FHT_xxxx)

Wie wirkt sich das mit den Schaltzeiten am Wochenende aus? Wenn "auto" gewählt ist nimmt er das von selbst?
Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.

Paul

Die Routine prüft welche Temperatur um die Zeit im Automodus eingestellt wäre, egal welcher Wochentag, und stellt dann diese Temperatur.
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

petjek

Ok. Prima.
Kann ich paar genauere Angaben bekommen, wie ich das nun definieren muss? Mein Ansatz war wohl nicht so richtig denke ich.
Ist da ein notify überhaupt sinnvoll? Nehme ich nicht besser ein doif?
Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.

Waldmensch

#9
also fakt ist, du musst sowohl den Modus auto/manuell und die desired-temp setzen. Der auto Modus würde die desired-temp erst bei der nächsten schaltschwelle setzen. Bei einer Anwesenheitserkennung halte ich es für unnötig, über den Wochenplan zu gehen. Wenn du anwesend bist, willst du es auch kuschelig, egal was der Wochenplan sagt. Du hast doch eh nur die Normaltemperatur und die Absenktemparatur. Somit setzt du bei verlassen manuell und desired-temp auf Absenktemparatur. Bei Anwesenheit setzt Du auf auto und normaltemparatur

Pseudocode:
DOIF (abwesend) (set thermostat mode manual desired-temp 17.0) DOELSE (set thermostat mode auto desired-temp 21.0)

petjek

Naja, nicht so ganz. Wenn ich anwesend bin soll trotzdem abends die Temperatur abgesenkt werden. Was mit umschalten auf auto doch klappen sollte, oder?
Angenommen ich komme abends nach 18 Uhr nach Hause und das Thermostat steht wegen Abwesenheit auf 17°C und der DOIF stellt auf auto und 21°C stellt das interne Wochenprogramm dann von selbst gleich wieder auf 17°C um oder wartet es bis zum nächsten Schaltpunkt?
Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.

Waldmensch

#11
Nein, das Wochenprogramm schaltet erst bei der nächsten Schaltschwelle. Angenommen, du hast 22:00 Absenkung auf 17 Grad eingestellt. Da Du abwesend warst hat eine Magie 17 Grad Absenktemperatur eingestellt. Nun kommst du 18:00 nach hause und setzt nur "auto". Damit passiert gar nichts, nur das Thermostat weiß, das es jetzt wieder auf die "innere Uhr" horchen soll. Die innere uhr sagt 22:00 auf 17 Grad. Die nächste Aktion wird also sein, 22:00 die Temperatur von egal was auf 17 Grad zu setzen. Das würde also heißen, frösteln bis Du 22:00 ins Bett gehst  ;)

Die Schaltschwellen sind einmalige Vorgänge und werden zwischendurch nicht ausgeführt/überwacht. Es muss also immer, wenn der mode auf "auto" geändert wird, auch gesagt werden, welche temperatur bis zur nächsten Schaltschwelle gelten soll. Ab der nächsten Schaltschwelle ist der Thermostat dann wieder im normalen Auto Takt, wenn du den Mode nicht wieder auf manuell änderst.

Die oben gezeigte Funktion ist das ganze in Perfektion, weil exakt die Temperatur gesetzt wird, die nach Wochenplan auch automatisch gesetzt worden wäre. Das würde für mein beispiel bedeuten, wenn du 22:10 statt 18:00 nach hause kommst würden 17 Grad gesetzt, wenn Du 21:50 nach hause kommst 21 Grad. Bei meinem einfachen DOIF würden 21 Grad gesetzt, egal wann Du nach hause kommst und ab der nächsten Schaltschwelle wird erst wieder getaktet.



EDIT:
Übrigens brauchst Du in dem Script überhaupt nichts zu ändern oder anzupassen. Die Werte die dort drinne stehen, sind nur default Werte, die verwendet werden, wenn das entsprechende Reading nicht existiert. Dort also finger von lassen und 1:1 aus dem Wiki kopieren.

petjek

Das ist ja gerade das was ich möchte: Perfektion! :)
Ich habe den ganzen Code also wieder in die 99_myUtils.pm übernommen, gespeichert und mittels reload neu geladen. Soweit bin ich noch richtig, woll?
Wie müsste jetzt der notify aussehen? Mein iPhone ist bekannt unter "WlanDevice" und kennt die Status "absent" und "present".
Sorry, dass ich soviel nachfrage aber ich will das endlich mal kapieren.

Gruß, petjek
Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.

Waldmensch

Dann Probier es so:

define Heizung_absent
DOIF ([WlanDevice] eq "absent") (set thermostat mode manual desired-temp 17.0)
DOELSE ({FHTnominal("thermostat")})


thermostat 2x durch den Namen deines FHT ersetzen. Die Funktion übernimmt das Rücksetzen auf "auto" ja mit. Über den Eventmonitor solltest Du die ausführung sehen. Die FHT brauchen immer ne Weile, eh sie das Signal kriegen und im Display die Änderung anzeigen. Dort also nicht ungeduldig werden.

petjek

Super, läuft! Danke vielmals für deine Unterstützung.

Jetzt muss ich nur noch die Anwesenheitserkennung zuverlässig hinbekommen. Da probiere ich gerade ein wenig mit rum.
Die Erkennung über WLan-Ping klappt nicht so wie ich möchte. Obwohl am iPhone die Synchronisation über WLan aktiv ist, wechselt mein iPhone direkt auf <absent> sobald es aus geht. Seltsamerweise klappt das mit dem iPhone meiner Frau ziemlich gut.
Parallel dazu habe ich noch die Erkennung über function und Perl laufen. Die funktioniert auch sehr stabil, allerdings mit ordentlichem Zeitverzug. Da kann es schon mal 10 min. dauern, bis der Status auf <absent> wechselt. Und bei <present> genau so.
Bluetooth wäre noch eine Option. Mal schauen, eventuell wird das eine Kombination aus den drei Varianten.

LG,
petjek
Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.