Lösungskonzept-Frage für: Schicht aus webcal-Datei auslesen

Begonnen von Pati_Alpha, 09 Februar 2020, 22:47:50

Vorheriges Thema - Nächstes Thema

Pati_Alpha

Hey,

ich baue grade unsere Heizungssteuerung auf den Schichtdienst meiner Freundin um.
Bisher habe ich schon passende Heizungsprofile erstellt und schicke sie mit WeekProfile an die Thermostate.

Jetzt wollte ich noch ein paar Dummies erstellen, die, wenn aktiviert den entsprechenden Schichtplan an die Thermostate schicken, damit das Ganze auch von HomeKit aus geschaltet werden kann.

Jetzt kam mir aber noch die Idee, das Ganze automatisch auf Basis von ihrem freigegebenen Schichtplan als "webcal"-Kalender zu machen.
Ich habe mir die Datei schon mal mit wget heruntergeladen und reingeschaut. Aufgrund von "DTSTART" kann man gut erkennen, was für eine Schicht "heute" ist, wenn man in dem File dann z.B. nachts um 1 nach dem aktuellen Tag suchen lässt.

Ich frage mich aber nun, wie ich das umsetzen könnte.
Einfach ein bash script und dann z.B. 1, 2 oder 3 returnen, das aus FHEM ausführen und dann die Dummies schalten?
Oder das ganze in PERL schreiben (wäre mir weniger lieb)?

Und: Wie realisiere ich, dass beim schalten der Dummies (manuell oder durch das Skript) der Befehl erst nach z.B. 5 Minuten umgesetzt wird? DOIF mit "wait"-Attribut? Hintergrund dahinter ist, nicht gleich Unmengen an Homematic-Funktickets zu verballern, wenn man mal aus versehen hin und her schaltet.
Hier frage ich mich nur: Wenn ich ein DOIF mit wait nehme und sagen wir von Schicht 2 auf 3 wechsele und ("Hups, Versehen!") wieder zurück auf 2 wechsele, führt er den Teil für die 2 dann trotzdem nach 5 Minuten aus oder erkennt er, dass er da ja herkam? Denn sonst verballere ich ja trotzdem Funktickets.


Fragen über Fragen! :D
Bin sehr gespannt auf eure Ideen und danke euch fürs Lesen! :)

Patrick

VB90

Ich habe diese Problematik grundsätzlich auch, sogar doppelt, da wir beide in Schichten arbeiten.

Ich habe dies Problem für mich wie folgt gelöst.

1. die Schichten werden in einem Google-Kalender, der sonst nichts anderes verwaltet, ordentlich eingetragen und gepflegt.
2. die Kalender werden mittels CALENDAR-Modul in FHEM gezogen
3. Die Termine mit CALVIEW "lesbar" dargestellt. (Für die Übersichtlichkeit habe ich hier noch eine ReadingsGroup hinten dran, das ist aber zum automatisieren nicht notwendig)
4. in den Readings von CALVIEW sind nun die Termine fein säuberlich geordnet und die kannst sie "anfassen" und darauf reagieren.
5. Ich tue das mit DOIF's und schalte damit zum Beispiel verschiedene Lichter, ALEXA und was man sonst alles tun kann.

Eine Verzögerung ist, wenn wir bei DOIF bleiben, am besten mit einem WAIT gelöst.
Jedoch erschliesst sich mir der Sinn noch nicht so ganz.
Ja, ich verstehe, du willst bei Homematic nicht Gefahr laufen, das du zuviel Last erzeugst. Allerdings sehe ich das Risiko relativ gering an, sofern du keine 20 Thermostate mit neuen Profilen überschreiben willst.

Die Heizungs(-nach)justierung habe ich im übrigen einfach an die Anwesenheit der Bewohner gekoppelt und vom Schichtplan entkoppelt.
Stichwort PRESENCE oder auch RESIDENTS.
Wobei letzteres schon eine ziemlich mächtige Waffe ist, auch in der Ersteinrichtung , und lohnt sich nach meinem Dafürhalten erst ab 4 oder 5 Bewohner so richtig.

Vorteil, den ich bei meiner Lösung sehe: Es wird weniger "Traffic" erzeugt und die von dir befürchtete Überlast bleibt aus.
Ich reagiere ja nur hier und jetzt auf die An/Abwesenheit, setze eine Temperatur auf einen neuen Soll-Wert und ändere nicht gleich das ganze Wochenprofil.
Ich halte meine Lösung für ziemlich praktisch und flexibel, da sie nicht auf dem Schichtplan basiert und auch funktioniert, wenn dieser mal keinen Termin hat (Urlaub, Freie Tage, etc) und auch für Mitbewohner/Besucher die keinen Kalender haben.
Sicherlich, gibt es noch eine bessere, elegantere Lösungen. Das will ich gar nicht bestreiten.
Aber meine ist für meine Zwecke ausreichend und funktionell.

Viel Spass beim grübeln, was für dich der richtige Ansatz ist  ;D

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Pati_Alpha

Ich bin noch nicht dazu gekommen, aber wollte mich schon mal bedanken für deinen vielen Tipps!! :) Ich melde mich nochmal, wenn ich etwas umgesetzt habe.