NEWS
Licht per Google Kalender steuern
-
Hallo zusammen,
mein Wechsel aus der FHEM- in die ioBroker-Welt ist nun bald abgeschlossen.
Aber an einer Sache hänge ich gerade gewaltig...Ich habe in FHEM einen Google Kalender (iCal) eingebunden. Wenn ich in diesen den (FHEM-)Namen einer Lampe eingetragen habe, ist diese zu der entsprechenden Zeit eingeschaltet worden und wenn der Termin vorüber war, auch wieder abgeschaltet.
Ideal, wenn man im Urlaub istDen Google-Kalender habe ich bereits im iCal-Adapter eingebunden und sehe auch meinen Testeintrag neben denen des Abfallkalenders (anderer Google-Kalender). In ical.0.data.text steht "Heute 11:35-11:40 hue.0.Studio.on In 4 Tagen 07:00-07:15 Gelber Sack+Papiertonne Bereitstellung In 5 Tagen 07:00-07:15 Biomüll Bereitstellung In einer Woche 07:00-07:15 Restmüll Bereitstellung 06.03.2021 07:00-07:15 Altpapier Bereitstellung 08.03.2021 07:00-07:15 Gelber Sack Bereitstellung 09.03.2021 07:00-07:15 Biomüll Bereitstellung 11.03.2021 07:00-07:15 Restmüll Bereitstellung "
Soweit so gut.
Aber dann hörts bei mir aktuell leider auf, so tief bin ich in ioBroker, Blockly etc. noch nicht drin.Wie müsste denn ein Blockly-Script aussehen, dass mir die im Termin genannte Lampe (ich nehme an bspw. hue.0.Studio(.on?)) zum Start des Termins (11:35) ein- und beim Ende des Termins (11:40) wieder ausschaltet? Und wie filtere ich den ganzen Abfallkalender-Inhalt da für meine Schaltung raus? Besser einen weiteren iCal-Adapter installieren?
Ihr seht, Fragen über Fragen, vielleicht sehe ich auch nur den Wald vor lauter Bäumen nicht.
(Den Adapter fullcalendar habe ich zwar gesehen, würde eine Pflege im Google-Kalender aber vorziehen. Deshalb hätte ich es eher auf diese Weise gelöst). -
-
@grml
Du musst kleiner anfangen
Mit Blockly ist das alles recht einfach, wenn man keine Script Sprache beherrscht.
Der iCal erzeugt Datenpunkte (DP) und auf die kannst reagieren (triggern). Dann geht's weiter was wann und warum passieren soll, sprich "tue falls" und schon kennst die Funktion eines Falls Block.So klickst Dir das zusammen was Du willst. Das ist einfacher als Du denkst, wenn Du mal den Dreh raus hast.
Somit Ist es unerheblich von wo die Daten herkommen, Hauptsache sie stehen unter den Objekten zur Verfügung und das ist Deinem Fall Dann eben bei den iCal Objekten.
-
@jan1 sagte in Licht per Google Kalender steuern:
Der iCal erzeugt Datenpunkte (DP) und auf die kannst reagieren (triggern)
ich habe bisher nur ganztägige Termine in meinen icals drin.
Werden solche Inhalte der States auch bei einem "minutengenauen" Termin genau in dieser Zeit aktiv? -
@jan1 said in Licht per Google Kalender steuern:
@grml
Du musst kleiner anfangen
Mit Blockly ist das alles recht einfach, wenn man keine Script Sprache beherrscht.
Der iCal erzeugt Datenpunkte (DP) und auf die kannst reagieren (triggern). Dann geht's weiter was wann und warum passieren soll, sprich "tue falls" und schon kennst die Funktion eines Falls Block.So klickst Dir das zusammen was Du willst. Das ist einfacher als Du denkst, wenn Du mal den Dreh raus hast.
Somit Ist es unerheblich von wo die Daten herkommen, Hauptsache sie stehen unter den Objekten zur Verfügung und das ist Deinem Fall Dann eben bei den iCal Objekten.
Danke für Deine Rückmeldung.
Vielleicht habe ich mich missverständlich ausgedrückt... Blockly kann ich im Prinzip bedienen, auch wenn ich weit davon entfernt bin, dass aus dem Ärmel zu schütteln. Ich habe mir auch schon ein paar Dinge gebaut und habe einen gewissen Programmierbackground (wenn auch nur rudimentär).
Mir geht es in dem Fall eher darum, wie ich entsprechend (in Blockly) filtere und den ganzen Inhalt des Feldes "text" strippe, trimme etc. Gerade auch dann, wenn es mehrere "Lichteinträge" bzw. verschiedene Lichter am Tag gibt. -
@grml sagte in Licht per Google Kalender steuern:
Mir geht es in dem Fall eher darum, wie ich entsprechend (in Blockly) filtere und den ganzen Inhalt des Feldes "text" strippe, trimme etc. Gerade auch dann, wenn es mehrere "Lichteinträge" bzw. verschiedene Lichter am Tag gibt.
um das sagen zu können brauchte ich die Zusatzinformation.
Wie sieht denn so ein Eintrag bei dir aus?
-
@grml
Ja da bedarf es dann noch ein paar Infos, wie das bei Dir dann im IOBroker aussieht.
Ich arbeite zwar auch gerne mit dem iCal, allerdings nur mit ganztägigen Terminen. Sollte aber auch mit anderen Einträgen klappen, da es egal sein sollte was das für ein Termin ist.Poste bitte mal das was in den iCal Objekten deiner Meinung nach verwendet werden soll.
Könnte auch sein, dass Dein Ansatz bei der Terminauswertung etwas umständlich ist. -
@homoran said in Licht per Google Kalender steuern:
@grml sagte in Licht per Google Kalender steuern:
Mir geht es in dem Fall eher darum, wie ich entsprechend (in Blockly) filtere und den ganzen Inhalt des Feldes "text" strippe, trimme etc. Gerade auch dann, wenn es mehrere "Lichteinträge" bzw. verschiedene Lichter am Tag gibt.
um das sagen zu können brauchte ich die Zusatzinformation.
Wie sieht denn so ein Eintrag bei dir aus?
Naja, wie im Eingangspost geschrieben:
Den Google-Kalender habe ich bereits im iCal-Adapter eingebunden und sehe auch meinen Testeintrag neben denen des Abfallkalenders (anderer Google-Kalender). In ical.0.data.text steht "Heute 11:35-11:40 hue.0.Studio.on In 4 Tagen 07:00-07:15 Gelber Sack+Papiertonne Bereitstellung In 5 Tagen 07:00-07:15 Biomüll Bereitstellung In einer Woche 07:00-07:15 Restmüll Bereitstellung 06.03.2021 07:00-07:15 Altpapier Bereitstellung 08.03.2021 07:00-07:15 Gelber Sack Bereitstellung 09.03.2021 07:00-07:15 Biomüll Bereitstellung 11.03.2021 07:00-07:15 Restmüll Bereitstellung "
Das fett Geschriebene wäre der Part, auf den es ankommt. In dem Fall ist es nur ein Termin am Tag. Aber gerade in "Live"-Situationen (also im Urlaub) schalte ich natürlich mehrere Lichter zu unterschiedlichen Zeiten, oft auch überlappend.
Ich habe gerade noch drei neue Einträge gemacht die alle heute stattfinden würden, auch überlappend. Dann sieht das Objekt ical.0.data.text so aus:
Heute 13:05-13:10 hue.0.Studio.on Heute 15:30-17:00 hue.0.Wohnzimmer.on Heute 16:00-16:30 hue.0.Studio.on In 4 Tagen 07:00-07:15 Gelber Sack+Papiertonne Bereitstellung In 5 Tagen 07:00-07:15 Biomüll Bereitstellung In einer Woche 07:00-07:15 Restmüll Bereitstellung 06.03.2021 07:00-07:15 Altpapier Bereitstellung 08.03.2021 07:00-07:15 Gelber Sack Bereitstellung 09.03.2021 07:00-07:15 Biomüll Bereitstellung 11.03.2021 07:00-07:15 Restmüll Bereitstellung
Fett wieder die entsprechenden Termine.
Die Logik, wie ich sie in FHEM hatte war (vereinfacht ausgedrückt): "Schaue ob es im Kalender einen Eintrag gibt der zur aktuellen Anfangszeit (inkl Datum) passt und schalte das Gerät ein, dass gleich heißt wie der Titel des Kalendereintrags." Dann noch das Gleiche für die Endzeit des Termins. Zu der gegebenen Uhrzeit das Gerät mit dem Namen gleich dem Terminnamen ausschalten.
-
@grml
Dachte ich mir, Dein Ansatz ist zu kompliziert
Du kannst mit dem iCal Adapter Termine filtern und dann geht simpel ein DP auf true oder eben false und damit lässt sich das wesentlich einfacher gestalten. -
@jan1 said in Licht per Google Kalender steuern:
@grml
Dachte ich mir, Dein Ansatz ist zu kompliziert
Du kannst mit dem iCal Adapter Termine filtern und dann geht simpel ein DP auf true oder eben false und damit lässt sich das wesentlich einfacher gestalten.Das mag sein, dass ich da zu kompliziert denke
Dann werde ich mal recherchieren, wie ich da filtere um nur das Nötige zu bekommen. Vielleicht wird es mir dann einfacher verständlich. -
@grml
Du siehst ja im Adapter die Möglichkeit was man so alles einstellen kann und wenn die Stichworte im Kallender auftauchen, wird eben der zugehörige DP gesetzt. Sollte eben auch mit Stunden Bezogenen Ereignissen funktionieren und ist eigentlich ne recht elegante Lösung, wie man hier schnell und einfach ein paar Zenarien über den Kallender erstellen könnte.
Da Du hier im Gegensatz zu einem kompletten Neuling schon einiges an Wissen mitbringst, dürfte das auch nicht zu schwer fallen. -
@jan1 @Homoran
Ok, ich glaube es wird gerade etwas klarer.Nachdem ich die Doku zum Adapter gerade nicht nur (nochmal) gelesen, sondern nun (glaube ich) auch halbwegs verstanden habe, werde ich in der Tabelle "Ereignisse" für jede Lampe(ngruppe) einen Eintrag anlegen. Der entsprechende DP sollte dann zum gegebenen Zeitpunkt TRUE werden, wenn genau diese Bezeichnung im Kalender steht.
Darauf sollte ich in Blockly problemlos triggern können.Aber noch eine Frage: In der Doku finde ich nix zur Spalte "Control ID" (https://www.iobroker.net/docu/index-298.htm?page_id=154&lang=de). Was macht die denn?
-
@grml sagte in Licht per Google Kalender steuern:
In der Doku finde ich nix zur Spalte "Control ID"
Danke für den 5 Jahre alten Link
Ich muss das mal mit der neuen Doku:
https://www.iobroker.net/#de/adapters/adapterref/iobroker.ical/README.md
zusammenführen -
@homoran said in Licht per Google Kalender steuern:
@grml sagte in Licht per Google Kalender steuern:
In der Doku finde ich nix zur Spalte "Control ID"
Danke für den 5 Jahre alten Link
Ich muss das mal mit der neuen Doku:
https://www.iobroker.net/#de/adapters/adapterref/iobroker.ical/README.md
zusammenführenUps sorry
Der kam in der Google Suche auf Platz 1 bei den Begriffen ioBroker ical Control ID.
Ich habe dann nicht geschaut, ob/wie aktuell das ist...EDIT: Wobei im obigen Link auch nix zur Control ID steht
Und zu den Spalten "on off" auch nicht... Da suche ich gerade auch noch, was es damit auf sich hat.
-
@grml sagte in Licht per Google Kalender steuern:
Ups sorry
kein Problem.
Ich hab das vor 5 Jahren geschrieben und wusste nicht mehr wie man rankam -
@grml
Gute Frage. ich habs gerade mal getestet, ob man so direkt was schalten kann (so hatte ich das verstanden), funktioniert aber nicht und din der "neuen" Doku steht da auch nichts.Ja Deine Erkenntnis zum Rest des Adapter passt soweit
-
@jan1 said in Licht per Google Kalender steuern:
@grml
Gute Frage. ich habs gerade mal getestet, ob man so direkt was schalten kann (so hatte ich das verstanden), funktioniert aber nicht und din der "neuen" Doku steht da auch nichts.Ja Deine Erkenntnis zum Rest des Adapter passt soweit
Hm, da scheint was nicht zu funktionieren
Ich hatte einen Termin mit dem Titel "Studiolicht" von 16:02 bis 16:05 im Kalender. Ein Ereignis mit Namen "Studiolicht" habe ich im Adapter auch angelegt. Im Datenpunkt "Studiolicht" im Channel "iCal\1\Events\0\ Later" habe ich auch ein TRUE stehen. Der Kalendereintrag wurde also korrekt gefunden und zugeordnet.
Meine Erwartung wäre gewesen, dass der DP "Studiolicht" im Channel "iCal\1\Events\0\ Now" dann um 16:02 auf TRUE springt. Hat er aber nicht getan. Er bleibt auf FALSE.
Und "Later" wurde nun, nachdem alle Termin rum sind, auch nicht aktualisiert. Das steht weiterhin auf TRUE.Wo liegt da mein Denkfehler?
-
@grml
Ich teste das gerade selber und mein Ereignis ist um 16:30, dann bin ich schlauer. -
@jan1
Ich habe gerade die Vermutung, dass der iCal-Adapter da (designtechnisch) evtl. etwas starr ist. Zumindest für den von mir angedachten Zweck.
Mein Gefühl sagt mir, dass mein DP "Later" um 16:30 auf FALSE springen wird. Da ist auch bei mir die nächste CRON-Abfrage.
Die DP werden vermutlich nur bei jedem Durchlauf aktualisiert. Ein Abgleich mit der aktuellen Uhrzeit wird nicht enthalten sein.Im Gegenzug bedeutet das, dass der DP in "Now" nur dann TRUE wird, wenn während der iCal-Abfrage tatsächlich was zu genau diesem Zeitpunkt ansteht.
-
@grml sagte in Licht per Google Kalender steuern:
dass der iCal-Adapter da (designtechnisch) evtl. etwas starr ist.
kann sein, dass es daran liegt, dass der ical-Adapter scheduled arbeitet.
Wenn der also nur alle halbe Stunde startet, bearbeitet er auch nur auf eine halbe Stunde genau