FHEM > Automatisierung

Weekdaytimer Verständnisproblem

<< < (2/4) > >>

Beta-User:
Hmm, Homemode kenne ich jetzt wiederum (noch) nicht, ich gehe aber davon aus, dass das bei Eintreten eines Ereignisses eben auch im Prinzip beliebigen Perl-Code "abfeuern" kann?

Grundsätzlich kann WDT auch bei weeprofile-Integration $we anders behandeln als normale Tage unter der Woche - dafür gibt es das "true"-Argument ;) . Damit entfällt schon mal die Hälfte der "befürchteten" Topics.

Was es einigermaßen kompliziert macht, ist das mit dem Profilumschalter pro Raum. Warum ist der pro Raum und nicht "global"? Abgefragt werden doch im Wesentlichen nur äußere Einflüsse, die überall gleich sind. Lediglich ein manuelles "Aus" wäre hier "speziell" und könnte dann (als vorübergehendes manuelles Ausschalten gedacht) dann auch über eine disableCondition im WDT geregelt werden?

Dann könnte man doch jedem Resident "seine" Thermostate zuordnen und dann (nur für diesen) Topics wie  rr_kind1_verreist,  rr_kind1_abwesend und rr_kind1_anwesend vorsehen, entsprechendes für gemeinsame Räume nur der Kinder ( rgr_kind_verreist, ... für das gemeinsame Kinder-Bad) usw.. Ist der Hauptschalter aus und das Topic "Aus" gesetzt, passiert eben gar nichts (das wäre dann im Homemode-Device zu vercoden).

Das "homeoffice" bekommt eine eigene Anwesenheit oä., auch darauf kann man reagieren und dann eben den Topic homeoffice_active, homeoffice_inactive, ... setzen, was sich dann ggf. eben nur auf den einen Heizkörper im Büro auswirkt (der Rest müßte eh' über "normales presence" abgedeckt sein)?

Dabei ist es nicht zwingend, dass man für jedes Profil auch wirklich spezielle Daten eingibt, das könnte auch eine Profil-Referenz innerhalb weekprofile sein (damit z.B. rr_kind1_anwesend und rr_kind2_anwesend effektiv gleich laufen).

Vielleicht nochmal ganz anders gesagt: nicht jeder Thermostat/WDT muss jedes Topic "kennen", im Gegenteil: Er sollte jeweils nur auf die für ihn relevanten Topics "reagieren".

Weiß jetzt aber nicht, ob dir das wirklich weiterhilft?

persching:

--- Zitat von: Beta-User am 22 Mai 2022, 14:56:16 ---Hmm, Homemode kenne ich jetzt wiederum (noch) nicht, ich gehe aber davon aus, dass das bei Eintreten eines Ereignisses eben auch im Prinzip beliebigen Perl-Code "abfeuern" kann?
--- Ende Zitat ---
Ja genau


--- Zitat ---Was es einigermaßen kompliziert macht, ist das mit dem Profilumschalter pro Raum. Warum ist der pro Raum und nicht "global"? Abgefragt werden doch im Wesentlichen nur äußere Einflüsse, die überall gleich sind. Lediglich ein manuelles "Aus" wäre hier "speziell" und könnte dann (als vorübergehendes manuelles Ausschalten gedacht) dann auch über eine disableCondition im WDT geregelt werden?
--- Ende Zitat ---
Das hängt vielleicht auch ein wenig mit meinen Anforderungen im Haus zusammen. Schlafzimmer ist im Altbau und dort wird es bei Sonne relativ schnell warm und im Winter eben auch schnell kalt. Darum ist dort eine Heizung notwendig. Da das aber ein 4m langer Heizkörper ist (war früher mal eine Wohnküche) powert der gewaltige wärme, wenn er sich einschaltet. Also ist der relativ schnell auf "Minimal". Ebenso das Badezimmer, das eigentlich nur morgens und abends genutzt wird.
Die Kinderzimmer und das Wohnzimmer haben hingegen eine Nordausrichtung und müssen relativ lange beheizt werden, weil keine Sonne rein kommt... die bleiben also auf Auto.
Die Frage ist nur, ob das über das Jahr gesehen lohnenswert ist hier zu unterscheiden. Denn meistens ist die Umstellungsphase in 2-3 Wochen für alle Thermostate gemacht. Also könnte man das zur "Entschlackung der Topics" opfern und das nur noch Zentral steuern.

--- Zitat ---Dann könnte man doch jedem Resident "seine" Thermostate zuordnen und dann (nur für diesen) Topics wie  rr_kind1_verreist,  rr_kind1_abwesend und rr_kind1_anwesend vorsehen, entsprechendes für gemeinsame Räume nur der Kinder ( rgr_kind_verreist, ... für das gemeinsame Kinder-Bad) usw.. Ist der Hauptschalter aus und das Topic "Aus" gesetzt, passiert eben gar nichts (das wäre dann im Homemode-Device zu vercoden).

Das "homeoffice" bekommt eine eigene Anwesenheit oä., auch darauf kann man reagieren und dann eben den Topic homeoffice_active, homeoffice_inactive, ... setzen, was sich dann ggf. eben nur auf den einen Heizkörper im Büro auswirkt (der Rest müßte eh' über "normales presence" abgedeckt sein)?

Dabei ist es nicht zwingend, dass man für jedes Profil auch wirklich spezielle Daten eingibt, das könnte auch eine Profil-Referenz innerhalb weekprofile sein (damit z.B. rr_kind1_anwesend und rr_kind2_anwesend effektiv gleich laufen).

Vielleicht nochmal ganz anders gesagt: nicht jeder Thermostat/WDT muss jedes Topic "kennen", im Gegenteil: Er sollte jeweils nur auf die für ihn relevanten Topics "reagieren".

Weiß jetzt aber nicht, ob dir das wirklich weiterhilft?

--- Ende Zitat ---
Die Kinderzimmer sind weniger das Problem, hier ist ja eine klare Zuordnung von Bewohner und Raum möglich. Komplizierter wird es bspw. wenn im Homeoffice alle Gemeinschaftsräume um 1 Grad abgesenkt werden und dann meine Frau von der Arbeit kommt (vor den Kindern, aber während des Homeoffices) und somit dann quasi wieder das normale Automatiktopic Anwesenheit triggert. Das würde mir dann das Homeoffice Topic überschreiben. Zumindest ist es im Moment so, weil ich einfach über eine Perlfunktion auswerte welches Topic jetzt kommen muss und das dann setze. Und ein restore_Topic wirkt ja immer auf alle. Außerdem möchte ich von dieser Perlfunktion eigentlich weg. Ich denke immer, es müsste doch einfacher möglich sein, das alles zu steuern.

Über gleiche Topics für verschiedene Räume habe ich auch schon nachgedacht. Aber irgendwie sind die Anforderungen im Form von der persönlichen Wohlfühltemperatur doch immer ein wenig anders. Wobei man das vielleicht noch ausgleichen kann, wenn man zwar die gleiche Temperatur als Solltemperatur bspw. für beide Kinderzimmer vorgibt, aber in einem der beiden Zimmer den Temperaturoffset des Thermostates um 0,5 Grad anpasst. Gerade die Kinderzimmer sind im Winter grund verschieden. Unter dem einen Zimmer ist das Wohnzimmer = wärmster Raum und unter dem anderen ist die Garage, also unbeheizt und dazu ist das noch der letzte Raum im Heizkreislauf. Das bekommen die Thermostate einfach nicht so doll geregelt. 

Beta-User:
Hmm, also ziemlich viele Einflussgrößen von außen her gedacht und auf der anderen Seite sehr viele Möglichkeiten, wie man das in FHEM umsetzen könnte.

Ein paar Gedanken:
- Der HK im Schlafzimmer klingt überversorgt, was den hydraulischen Abgleich angeht. Vielleicht versuchst du mal, den zu "beschränken", also (wenn vorhanden) die Begrenzung im Ventil zuzumachen (notfalls geht das auch über die Schraube im Rücklauf, die in jedem Fall vorhanden sein sollte).
- Gleicher Topic bedeutet nicht, dass das auch ein identisches Profil sein müßte.
- Für das Bad und das Schlafzimmer könntest du überlegen, ob du intern je zwei "Echt-Profile" generierst, die du dann mit dem "Zimmerschalter" umreferenzierst, so dass jeweils der "Auto"-Topic auf das für diesen HK passende Sub-Profil "zeigt". Ein Umschalten für den Raum von "Auto" auf "Minimal" würde dann bedeuten: erst "Umbiegen" der Referenz für diesen HK, dann Neuverteilen des ("Auto")+sonstige Rahmenbedingungen-Topics an alle (ggf. verzögert, damit erst alle Umreferenzierungen durch sind, bis das passiert).
- Entsprechendes gilt dann für die "längerphasigen" Räume (Kinderzimmer/Wohnzimmer), und vielleicht auch für "Homeoffice" (den Raum) innerhalb des "Frau-ist-da"-Topics.
- Prinzipiell stellt sich die Frage, ob "Homeoffice" (der Raum) beeinflusst sein soll von "Frau ist da" - wenn nein, kannst du den Raum einfach aus diesem Topic rauslassen. Es müssen ja nicht alle Räume/WeekdayTimer alle Topics kennen. Dann wird der Rest umgestellt, der eine bleibt halt wie er ist...

- Was "ein Profil" (auf weekprofile-Seite) und effektive Regelung angeht, kannst du auch "mappen" (innerhalb WDT), und z.B. dann im einen Raum "21.5" mit "daytemp" übersetzen und in dem Thermostaten dann eine andere daytemp eingestellt haben oder das auf 23 Grad im WDT umstellen und die Einstellungen auf der Hardware  nicht anfassen.

Prinzipiell wirst du aber nicht umhinkommen, für deine komplexe Regelungsanforderung auch entsprechend Aufwand in Konfiguration und Logik zu stecken.

Hilft dir das weiter?

persching:

--- Zitat von: Beta-User am 23 Mai 2022, 21:55:43 ---Hmm, also ziemlich viele Einflussgrößen von außen her gedacht und auf der anderen Seite sehr viele Möglichkeiten, wie man das in FHEM umsetzen könnte.

Ein paar Gedanken:
- Der HK im Schlafzimmer klingt überversorgt, was den hydraulischen Abgleich angeht. Vielleicht versuchst du mal, den zu "beschränken", also (wenn vorhanden) die Begrenzung im Ventil zuzumachen (notfalls geht das auch über die Schraube im Rücklauf, die in jedem Fall vorhanden sein sollte).

--- Ende Zitat ---
Das wurde bei der Heizungsmodernisierung gemacht. Damals musste ich das machen lassen, weil die KfW das gefordert hatte. Den eingestellten Wert am Thermostatventil hab ich dann nochmal reduziert. Insofern denke ich, ich bin da schon relativ weit unten. Es muss halt ein Kompromiss sein, dass man tagsüber auch in einer annehmbaren Zeit eine gute Temperatur erreicht, weil das Schlafzimmer eben auch gleichzeitig Büro ist. Vielleicht wäre ein schneller regelnder Thermostat schon des Rätsels Lösung. Nachdem ich im Wohnzimmer den defekten MAX Thermostat gegen einen Homematic Thermostat getauscht habe, habe ich festgestellt, dass der Homematic viel besser regelt. Der macht zwar erstmal 100% auf, dann aber auch innerhalb kurzer Abstände regelt er auch wieder runter. Der MAX Thermostat macht auf und dann passiert 2 Stunden lang nix. Ich finde es allerdings nicht besonders nachhaltig noch funktionierende Dinge zu entsorgen...


--- Zitat ---- Gleicher Topic bedeutet nicht, dass das auch ein identisches Profil sein müßte.
- Für das Bad und das Schlafzimmer könntest du überlegen, ob du intern je zwei "Echt-Profile" generierst, die du dann mit dem "Zimmerschalter" umreferenzierst, so dass jeweils der "Auto"-Topic auf das für diesen HK passende Sub-Profil "zeigt". Ein Umschalten für den Raum von "Auto" auf "Minimal" würde dann bedeuten: erst "Umbiegen" der Referenz für diesen HK, dann Neuverteilen des ("Auto")+sonstige Rahmenbedingungen-Topics an alle (ggf. verzögert, damit erst alle Umreferenzierungen durch sind, bis das passiert).
- Entsprechendes gilt dann für die "längerphasigen" Räume (Kinderzimmer/Wohnzimmer), und vielleicht auch für "Homeoffice" (den Raum) innerhalb des "Frau-ist-da"-Topics.

--- Ende Zitat ---

Ehrlich gesagt, weiß ich nicht, wie das funktionieren soll. Kannst du das mit einem Beispiel grob skizzieren??


--- Zitat ---- Prinzipiell stellt sich die Frage, ob "Homeoffice" (der Raum) beeinflusst sein soll von "Frau ist da" - wenn nein, kannst du den Raum einfach aus diesem Topic rauslassen. Es müssen ja nicht alle Räume/WeekdayTimer alle Topics kennen. Dann wird der Rest umgestellt, der eine bleibt halt wie er ist...

--- Ende Zitat ---
Ja, prinzipiell ja schon. Aber es ist halt davon abhängig, ob die Ankunft meiner Frau die Temperatur im Schlafzimmer beeinflusst. Hier vielleicht mal mit Zahlen:
Kein Homeoffice Tag, alle Bewohner abwesend, wird die Schlafzimmertemperatur auf 18.5 Grad gesenkt. Kommt nun ein Bewohner heim, wird wieder die normale Temperatur in allen Räumen reaktiviert, also im Beispiel Schlafzimmer 19.5 Grad.
Bei einem Homeofficetag werden alle Räume ein wenig abgesenkt (sagen wir 1 bis 1,5 Grad), aber das Schlafzimmer wird dagegen auf 21 Grad erhöht. Also sogar mehr, als einem normalen Anwesenheitstag. Somit muss das Schlafzimmer ja beide Topics kennen... Oder habe ich noch irgendwo einen Denkfehler?


--- Zitat ---- Was "ein Profil" (auf weekprofile-Seite) und effektive Regelung angeht, kannst du auch "mappen" (innerhalb WDT), und z.B. dann im einen Raum "21.5" mit "daytemp" übersetzen und in dem Thermostaten dann eine andere daytemp eingestellt haben oder das auf 23 Grad im WDT umstellen und die Einstellungen auf der Hardware  nicht anfassen.

--- Ende Zitat ---
Das hört sich vielversprechend an und ich hab es gleich mal ausprobiert. So könnte man mit dem $EVENT "comfort" oder "eco" 2 feste Temperaturen hinterlegen, die in Zimmer A und B völlig unterschiedlich sein können. :) Super, das hat mir auf alle Fälle weitergeholfen.
Was irgendwie auch noch cool wäre, wenn man relative Temperaturangaben machen könnte. Also quasi "$we|09:00|eco+1" oder "!$we|10:00|comfort-2"... so könnte man relativ einfach eine absenken der Raumtemperatur bei Abwesenheit um 2 Grad umsetzen. Aber ich befürchte, dass sich das nicht umsetzen lässt.


--- Zitat ---Prinzipiell wirst du aber nicht umhinkommen, für deine komplexe Regelungsanforderung auch entsprechend Aufwand in Konfiguration und Logik zu stecken.

Hilft dir das weiter?

--- Ende Zitat ---
Ja da bin ich ja dabei, aber gerade weil viele Wege nach Rom führen ist es nicht ganz so einfach den idealen Weg zu finden. Generell muss ich die Komplexität reduzieren, aber ich glaube das wird auch klappen.

Beta-User:

--- Zitat von: persching am 24 Mai 2022, 20:08:18 ---Insofern denke ich, ich bin da schon relativ weit unten. Es muss halt ein Kompromiss sein, dass man tagsüber auch in einer annehmbaren Zeit eine gute Temperatur erreicht, weil das Schlafzimmer eben auch gleichzeitig Büro ist. [...] Ich finde es allerdings nicht besonders nachhaltig noch funktionierende Dinge zu entsorgen...

--- Ende Zitat ---
OK, dann erzähle ich dir ja prinzipiell nichts neues mit der Hydraulik... Ein angenehmes Regelungsverhalten würde ich dann höher bewerten als das Erhaltungsinteresse, zumal du den MAX ja ggf. auch noch woanders einsetzen könntest. (Ich bin prinzipiell aber auch sehr für gegen Wegwerfen!).


--- Zitat ---Ehrlich gesagt, weiß ich nicht, wie das funktionieren soll. Kannst du das mit einem Beispiel grob skizzieren??

--- Ende Zitat ---
Ich versuchs - vielleicht etwas allgemeingültiger. Man nehme einen Bewohner, der in rollierenden Schichten an allen Wochentagen arbeiten kann - wenn keine Schicht angesagt ist, ist entweder "Tagschicht" (wie alle anderen Berufstätigen im Haushalt) oder eben eine Art "Urlaub zu hause". Die letzten beiden Fälle lasse ich mal weg, hier also mal die drei Schichtprofile:


--- Code: ---Frühschicht:Kind1
{"Sun":{"temp":["18.0","21.0","18.0","21.0","18.0"],"time":["05:00","05:30","14:00","22:30","24:00"]},"Fri":{"temp":["18.0","21.0","18.0","21.0","18.0"],"time":["05:00","05:30","14:00","22:30","24:00"]},"Wed":{"temp":["18.0","21.0","18.0","21.0","18.0"],"time":["05:00","05:30","14:00","22:30","24:00"]},"Tue":{"time":["05:00","05:30","14:00","22:30","24:00"],"temp":["18.0","21.0","18.0","21.0","18.0"]},"Mon":{"time":["05:00","05:30","14:00","22:30","24:00"],"temp":["18.0","21.0","18.0","21.0","18.0"]},"Sat":{"time":["05:00","05:30","14:00","22:30","24:00"],"temp":["18.0","21.0","18.0","21.0","18.0"]},"Thu":{"time":["05:00","05:30","14:00","22:30","24:00"],"temp":["18.0","21.0","18.0","21.0","18.0"]}}

Spätschicht:Kind1
{"Sun":{"temp":["18.0","21.0","18.0","19.5","18.0"],"time":["07:00","13:00","22:00","23:00","24:00"]},"Fri":{"temp":["18.0","21.0","18.0","19.5","18.0"],"time":["07:00","13:00","22:00","23:00","24:00"]},"Wed":{"time":["07:00","13:00","22:00","23:00","24:00"],"temp":["18.0","21.0","18.0","19.5","18.0"]},"Tue":{"time":["07:00","13:00","22:00","23:00","24:00"],"temp":["18.0","21.0","18.0","19.5","18.0"]},"Mon":{"time":["07:00","13:00","22:00","23:00","24:00"],"temp":["18.0","21.0","18.0","19.5","18.0"]},"Thu":{"time":["07:00","13:00","22:00","23:00","24:00"],"temp":["18.0","21.0","18.0","19.5","18.0"]},"Sat":{"time":["07:00","13:00","22:00","23:00","24:00"],"temp":["18.0","21.0","18.0","19.5","18.0"]}}

Spätschicht:Kind1
{"Sun":{"temp":["18.0","21.0","18.0","21.0","18.0"],"time":["06:00","07:30","14:00","21:30","24:00"]},"Wed":{"time":["06:00","07:30","14:00","21:30","24:00"],"temp":["18.0","21.0","18.0","21.0","18.0"]},"Fri":{"time":["06:00","07:30","14:00","21:30","24:00"],"temp":["18.0","21.0","18.0","21.0","18.0"]},"Mon":{"temp":["18.0","21.0","18.0","21.0","18.0"],"time":["06:00","07:30","14:00","21:30","24:00"]},"Tue":{"temp":["18.0","21.0","18.0","21.0","18.0"],"time":["06:00","07:30","14:00","21:30","24:00"]},"Thu":{"time":["06:00","07:30","14:00","21:30","24:00"],"temp":["18.0","21.0","18.0","21.0","18.0"]},"Sat":{"time":["06:00","07:30","14:00","21:30","24:00"],"temp":["18.0","21.0","18.0","21.0","18.0"]}}
--- Ende Code ---

Wenn man jetzt eine Referenz für default:Kind1 auf eines dieser Profile zeigen läßt:

--- Code: ---set weekprofiles reference_profile Spätschicht:Kind1 default:Kind1

--- Ende Code ---
liefert weekprofile dann für den "Thermostat" "Kind1" effektiv das Spätschichtprofil aus, wenn danach der default-Topic gesetzt wird. Ergo kann man - jetzt übertragen auf deinen Fall - für das "Schlafzimmer" die "Effektiv-Profile" "Auto", "Minimal", "Homeoffice-auto" und "Homeoffice-minimal" anlegen, und dann dem "Eltern-present"-Topic für das Schlafzimmer jeweils eines dieser 4 zuordnen. Dann ändert der allgemeine Wechsel von "Homeoffice" auf "Eltern-present" für das Schlafzimmer nichts.

Klarer?

Nachteil ist nur, dass dann nicht unmittelbar irgendwo außerhalb der Profilanalyse zu erkennen ist, was effektiv zur Anwendung kommt (wenn man mal einen Fehler macht oder so).


--- Zitat ---Das hört sich vielversprechend an und ich hab es gleich mal ausprobiert. So könnte man mit dem $EVENT "comfort" oder "eco" 2 feste Temperaturen hinterlegen, die in Zimmer A und B völlig unterschiedlich sein können. :) Super, das hat mir auf alle Fälle weitergeholfen.

--- Ende Zitat ---
Ja, so herum geht natürlich auch. Ich _glaube_, es ist anders herum sogar einfacher: Du legst dich auf eine "Tagtemperatur" fest (z.B. 21.5), und immer, wenn die beim WDT ankommt, macht der daraus dann (beim Absenden des Befehls) dann "day" (oder "eco"), und der Thermostat selbst setzt das dann in "seine" Tagtemperatur um. Das können 22.5 oder 18 Grad sein... Dann kann ein Profil für mehrere Thermostate verwendet werden, ohne die Grunddaten anzufassen (das will man ja (abgesehen von der Umreferenzierung oben) in der Regel eher selten haben).


--- Zitat ---Was irgendwie auch noch cool wäre, wenn man relative Temperaturangaben machen könnte. Also quasi "$we|09:00|eco+1" oder "!$we|10:00|comfort-2"
--- Ende Zitat ---
An sich ist das eine smarte Idee, allerdings sind relative Angaben in der Tat nicht vorgesehen. ABER: Bei der Ausführung wird das Kommando so an fhem.pl übergeben, dass vermutlich "Set Magic" geht. Prinzipiell alle Temperaturen für einen Thermostat um denselben Wert anheben sollte daher gehen:

--- Code: ---attr WDT commandTemplate set $DEVICE {($EVENT + 2)}
--- Ende Code ---
(Müßte man ausprobieren, vermutlich ginge auch beliebiger Perl-Code, aber das wird dann andererseits auch sehr kompliziert...)

(OT: Ist für mich auch eine Gelegenheit, mich mal intensiver damit zu befassen, und ich finde es immer toller, was sich da für Möglichkeiten ergeben...).

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln