Wiederkehrende Termine Google-Kalender --> Fhem

Begonnen von cornelius fillmore, 23 Juni 2013, 09:24:52

Vorheriges Thema - Nächstes Thema

cornelius fillmore

Hallo Forum,
wie zerlege ich den sich wiederholende Termine aus dem Google-Kalender, das ich nicht jedes mal ein neues notify schreiben muss?
3 x Fhem 5.9 mit RPI

betateilchen

Beschreibe doch bitte mal etwas genauer, was Du machen möchtest.

Wiederkehrende Termine funktionieren doch eigentlich out-of-the-box in FHEM. Zumindest dann, wenn sie z.B. immer montags stattfinden sollen. Was ich noch nicht geschafft habe: einen Termin montags-freitags täglich festzulegen und das jede Woche wiederholen zu lassen. Aber ich habe mir damit beholfen, den Termin eben für jeden Wochentag einmal anzulegen und diesen Termin dann wöchtentlich wiederholen zu lassen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

cornelius fillmore

Ich habe 5 verschiedene Räume in einem Haus zu heizen.
Diese Räume haben regelmäßige, wie auch unregelmäßige Termine.

Dies wollten ich mit einem google-Kalender verwalten.

Um nicht jedes mal ein neues notify zu schreiben, ist die Idee den Kalendereintrag im fhem zu zerlegen und immer wenn der Raum vorkommt diesen auch zu heizen.

Idee verstanden??
3 x Fhem 5.9 mit RPI

betateilchen

Ja, die Idee habe ich verstanden, etwas ähnliches habe ich bei mir auch umgesetzt - allerdings völlig flexibel, ohne im notify noch irgendwelche großartigen Auswertungen machen zu müssen.

Das mit den Heizkörpern habe ich bei mir mit Kalendern so gelöst:

- für jede Regeleinheit gibt es einen Kalendereintrag.
- im "Betreff" des Kalendereintrags steht die Regeleinheit, die gesteuert werden soll.
- im "Ort" steht die gewünschte Solltemperatur, die eingestellt werden soll.
- für die im Kalendereintrag festgelegte Zeit wird die Solltemperatur eingestellt, danach wird wieder auf die Nachttemperatur geregelt

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

cornelius fillmore

Cool,

das kann ich ja von dir lernen ;-)

Kannst du mir mal deine fhem.cfg zukommen lassen?
3 x Fhem 5.9 mit RPI

thokul

Super,

Genau was ich gesucht habe. Kann man die fhem.conf auch bekommen?

betateilchen

Ja gerne, aber erst nächste Woche, wenn ich aus dem Urlaub zurück bin.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

cornelius fillmore

Gerne doch.

Dann weiterhin schönen Urlaub und gute Erholung
3 x Fhem 5.9 mit RPI

thokul


betateilchen

Wie versprochen...

Dieser Ansatz funktioniert sowohl für FHT80b als auch für HM-TC-CC. Ich musste das so stricken, da ich irgendwann einen FHT80b durch HM ersetzt hatte.

Am Startzeitpunkt des Kalendereintrags wird die Solltemperatur auf den Wert eingestellt, der im Kalendereintrag unter "Ort" eingetragen ist. Es wird geprüft, ob sich der Regler im Modus "Auto" (für FHT80b) oder "Central" (für HM-TC-CC) befindet, damit im Modus "Manual" keine Einstellung erfolgt.

Kalender_FHT:modeStarted.* { my $reading="%EVTPART0"; my $uid= "%EVTPART1"; my $actor= fhem("get Kalender_FHT summary $uid"); if(defined $actor) { my $dtemp= fhem("get Kalender_FHT location $uid"); my $fhtmode= ReadingsVal("$actor", "mode","?"); my $hmmode= ReadingsVal("$actor","controlMode", "?") ; if($fhtmode eq "auto" || $hmmode eq "central") { fhem("set $actor desired-temp $dtemp") } }}

Am Endzeitpunkt des Kalendereintrags wird die Solltemperatur auf 14 Grad eingestellt. Man könnte diesen Wert natürlich auch noch

Kalender_FHT:modeEnded.* { my $reading="%EVTPART0"; my $uid= "%EVTPART1"; my $actor= fhem("get Kalender_FHT summary $uid"); if(defined $actor) { my $actor= fhem("get Kalender_FHT summary $uid"); my $fhtmode= ReadingsVal("$actor", "mode","?"); my $hmmode= ReadingsVal("$actor","controlMode", "?") ; if($fhtmode eq "auto" || $hmmode eq "central") { fhem("set $actor desired-temp 14") } } }

Ich hoffe, der Gedankengang hinter diesen notifies ist einigermassen erkennbar und hilft Euch weiter. Ansonsten einfach nachfragen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

cornelius fillmore

Erst mal vielen Dank.

Nur für mich als newbe wäre ein etwas erweiterter Auszug aus dem fhem.cfg besser.

Kannst du so etwas noch einstellen?
3 x Fhem 5.9 mit RPI

thokul

Hallo,

Auch ich bin absoluter Neuling in FHEM. Wie muss der Rest der fhem.conf aussehen?

Danke schon einmal im voraus

Thomas

betateilchen

??? *grübel* was fehlt Euch denn noch?

In meiner Konfigurationsdatei steht zu diesem Thema nicht mehr als die beiden oben angegebenen NOTIFY Definitionen für Beginn und Ende der Heizzeit.

Es gibt noch einen Google-Kalender namens "Kalender_FHT", der in FHEM wie folgt völlig standarmäßig definiert ist und dadurch alle 20 Minuten (1200 Sekunden) gelesen wird:


ical url http://www.google.com/calendar/ical/<adressdaten>/basic.ics 1200


Ein Eintrag im Google-Kalender sieht dann so aus:

(http://up.picr.de/15040858ev.png)

Damit wird jeden Dienstag der Heizkörperregler "wz_FHT" von 13-14 Uhr auf 18°C eingestellt.

In dem Kalender können natürlich (nahezu) beliebig viele Einträge für unterschiedliche Regler stehen.

Im Betreff des Kalendereintrags steht der Name des Reglers
Im Ort des Kalendereintrags steht die gewünschte Soll-Temperatur für den angegebenen Zeitraum

Bei mir sieht das dann so aus: von 1600 bis 2229 wird das Wohnzimmer auf 22° geregelt, von 2230 bis 1559 des Folgetags wird die Temperatur auf 16° abgesenkt, da ich tagsüber arbeite und keine Heizung brauche. Diese Einträge gibt es für Montag - Freitag, also fünfmal für den gleichen Regler, und alle Einträge haben eine Wiederholung "wöchentlich".

Analog gibt es solche Einträge fürs Wochenende, dann natürlich mit anderen Heizzeiten.

Das ist alles.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sengelking

#13
Bei mir funktioniert es irgendwie nicht.
Hier mein cfg:
define cal Calendar ical url https://www.google.com/ca...
attr cal room Sorted
define cal_start notify cal:modeStarted.* { my $reading="%EVTPART0";; my $uid= "%EVTPART1";; my $actor= fhem("get cal summary $uid");; if(defined $actor) { my $dtemp= fhem("get cal location $uid");; my $fhtmode= ReadingsVal("$actor", "mode","?");; if($fhtmode eq "auto") { fhem("set $actor desired-temp $dtemp") } }}
define cal_end notify cal:modeEnded.* { my $reading="%EVTPART0";; my $uid= "%EVTPART1";; my $actor= fhem("get cal summary $uid");; if(defined $actor) { my $actor= fhem("get cal summary $uid");; my $fhtmode= ReadingsVal("$actor", "mode","?");; if($fhtmode eq "auto") { fhem("set $actor desired-temp 16") } } }


Es wird einfach keine Temperatur gesetzt...

Kann jemand helfen?
FHEM aud RaspberryPi

sengelking

Hat sich schon erledigt...
"mode" von FHT war nicht bekannt, ging jetzt mit einem anderem FHT
FHEM aud RaspberryPi