Verwendung des Kalenders/Agenda in Szenen

Zitat
Es gab keine Probleme, in meiner Nachricht war nichts Negatives!! :stuck_out_tongue:

Kein Problem, es ist nur mein erster echter Pull Request, also wollte ich sicherstellen, dass ich alles richtig gemacht habe, um nichts zu kaputt zu machen :wink:

@Romuald_Pochet Zur Information, für die gemeinsame Nutzung von Kalendern gehen wir mit @bertrandda von zwei Kalendertypen aus:

  • Ein « geteilter » Kalender, der allen Benutzern der Gladys-Instanz und in den Szenen zugänglich ist
  • Ein « privater » Kalender, der nur in der « Kalender »-Ansicht für den Benutzer angezeigt wird, der ihn konfiguriert hat.

Du musst also eine Anfrage stellen, um alle « geteilten » Kalender in den Szenen abzurufen.

Die Diskussion ist hier verfügbar:

Zur Info, ich habe gerade die Kalenderfreigabe gemerged, die Arbeit an den Szenen kann also weitergehen :sunglasses:

Hallo zusammen!

Da diese Funktion häufig nachgefragt wird und ich gerade einen PR gemerged habe, der dieses Verhalten freischaltet, habe ich eine kleine funktionale Spezifikation erstellt, damit wir uns zumindest auf die gewünschte Funktionsweise einigen können (das ist das Schwierigste :p).

Funktionale Spezifikation für den Szenenauslöser

Ich schlage einen Auslöser in den Szenen vor, der wie folgt konfiguriert werden könnte:

Die Funktionen:

  • Möglichkeit, eine Szene auszulösen, wenn ein beliebiges Ereignis in einem Kalender in XX Minuten/Stunden/Tagen eintritt. Möglichkeit, einen oder mehrere Kalender auszuwählen. Der Kalender muss ein freigegebener Kalender sein, da die Szenen innerhalb einer Instanz freigegeben werden.
  • Möglichkeit, eine Bedingung für den Titel des Ereignisses hinzuzufügen. Beispiel: genau « Musikunterricht », enthält « Schwimmbad », enthält « Arbeit », enthält « Schule », beginnt mit « Kurs », endet mit « Volleyball ».
  • Der Auslöser wird im Voraus in Bezug auf das Start- oder Enddatum des Ereignisses ausgeführt: 10 Minuten vorher, 1 Stunde vorher, 1 Tag vorher. Die feinste Granularität ist die Minute. Es ist möglich, 0 Minuten einzustellen, um zur Start-/Endzeit des Ereignisses benachrichtigt zu werden.

Funktionale Spezifikation für die Bedingung in den Szenen

Für den bedingten Teil in den Szenen ist die Idee, eine Szene fortsetzen oder unterbrechen zu können, wenn ein Ereignis in einem/mehreren gegebenen Kalendern eine Bedingung erfüllt und läuft.

Beispiel:

  • Wenn eine Bewegung erkannt wird
  • Es ein Ereignis im Kalender gibt, das läuft und sagt, dass ich bei der Arbeit bin
  • Dann mir eine Nachricht senden

Vorschlag:

Was haltet ihr davon?

Für Info, ich habe mit der Entwicklung begonnen, bisher nur für den Szenenauslöser.

Der Backend-Teil ist fast fertig, ich arbeite gerade am Frontend.

@bertrandda Ich musste die GET /calendar-Anfrage ein wenig ändern, also ich brauchte eine Option, um nur die geteilten Kalender (und nicht meine privaten) abzurufen, also habe ich 3 Fälle hinzugefügt:

  • Keine Parameter angegeben → Alle Kalender, die ich sehen kann (meine privaten + geteilte)
  • shared = true → Nur geteilte Kalender
  • shared = false → Nur meine privaten Kalender

Ich habe daran gedacht, den Frontend-Code zu aktualisieren.

Das war notwendig, weil in den Szenen nur die geteilten Kalender zugänglich sind.

Der PR auf Github ist hier:

Die vollständige Ansicht mit allen Optionen:

Nimmst du auch Feiertage etc. in Betracht?
Oder verwaltest du nur bestimmte Filter für die E-Mail-Betreffzeilen?

Ich verwalte gar nichts davon!

Der Sinn dieser Funktion besteht darin, dem Benutzer die Möglichkeit zu geben, Szenen basierend auf bevorstehenden Ereignissen oder solchen, die in seinen Kalendern enden, auszulösen. Danach liegt es am Benutzer, seine eigenen Kalender zu verbinden.

Der Kalenderinhalt ist für jeden individuell, ich stelle nur die Werkzeuge zum Erstellen der Szenen bereit :slight_smile:

Wenn du einen Kalender mit Urlauben, Feiertagen, dem Tag, an dem du ins Schwimmbad gehst, die Schule der Kinder verbinden möchtest, alles ist möglich!

Sind wir uns einig, dass es in Gladys keinen integrierten Kalender gibt, sondern nur eine Synchronisation mit einem Drittanbieter-Service?
Ich würde ihn gerne für die Heizperioden in einem eigenen Kalender nutzen…

Ah okay, ich verstehe.
Das ist nicht dumm, so musst du dich nicht mit dem Herunterladen einer Bibliothek belasten, die die Feiertage in Abhängigkeit von einem bestimmten Land berechnet.
Das ist eine andere Art, die Dinge zu sehen, so vermeidest du Fehler in der Bibliothek.

Genau, wir sehen das so, dass wir nicht hier sind, um einen vollständigen Kalender-Client zu programmieren (das wäre enormer Aufwand und eigentlich nicht unser Metier).

Die Idee ist, dass die Nutzer ihren klassischen Kalender-Client behalten, weiterhin ihre Termine auf ihrem Telefon/Computer wie gewohnt eintragen und wir uns dann einfach damit synchronisieren.

Du kannst sehr gut einen spezifischen Kalender für deine Heizperioden erstellen und das erledigt den Job :slight_smile:

Genau :slight_smile:

Für Feiertage zum Beispiel, habe ich standardmäßig einen Kalender « Feiertage » in meinem Kalender, glaube ich, und Gladys synchronisiert ihn. Man muss sich einfach auf diesen Kalender einloggen, keinen Filter auf den Namen setzen, um alle Ereignisse zu erfassen, und schon verwaltet man die Feiertage in Gladys.

Gute Arbeit, das wird vielen Leuten nützlich sein.

Wieder einmal hatte @AlexTrovato von Anfang an recht :laughing: Add internal calendar sharing by bertrandda · Pull Request #1337 · GladysAssistant/Gladys · GitHub

Hallo zusammen!

Heute habe ich gute Fortschritte gemacht und den ersten Teil dieser Entwicklung in den Master gemerged: eine Szene auslösen, basierend auf einem Ereignis, das eintritt oder bald endet.

Konkrete Anwendungsmöglichkeiten

  • « Schicke mir eine Nachricht 15 Minuten bevor ich zum Sport gehe »
  • « Wecke mich 1 Stunde vor einem Arbeitsevent auf »
  • « Wenn das Event ‹ Disneyland › in 1 Stunde beginnt UND das Haus nicht leer ist » => Blinklicht im Wohnzimmer, um uns zu warnen, dass wir losmüssen!
  • « Schalte die Heizung ein, wenn ein Event beginnt, das ‹ Heizung › heißt, und schalte die Heizung aus, wenn ein Event endet, das ‹ Heizung › heißt »

Das sind nur einige Beispiele, aber natürlich sind die Möglichkeiten endlos!

Wie sieht das aus?

Das Tolle daran ist, dass man in den Aktionen das Ereignis abrufen kann, das die Szene ausgelöst hat! :sunglasses: Und das sieht dann so aus:

Ich sehe schon @lmilcent, der mir sagt: « Warte mal? Können wir die Sensorwerte der Auslöser hier verwenden? » Warum nicht in Zukunft, ja!! :smiley:

Video-Demonstration

Ich habe ein Video aufgenommen, das ein Beispiel zeigt :slight_smile:

https://streamable.com/bfkp2u

Wie kann man es testen?

Ich habe einen Docker-Build auf dem Tag :dev erstellt, wie gewohnt.

Das Docker-Image lautet:

gladysassistant/gladys:dev

Ich freue mich über jedes Feedback, wenn ihr Zeit habt, es dieses Wochenende zu testen, wäre das super :slight_smile:

Für den zweiten Teil der Entwicklung wird das später sein, ich halte euch auf dem Laufenden über den Fortschritt!

:rofl::rofl:

Das ist großartig, ich liebe diese Nachrichten: „Hey, schaut euch die neue super mächtige Funktion an, die ich gerade gemacht habe“ :heart_eyes:

Vielen Dank für die Arbeit!!

Okay, für das Heizungsbeispiel muss es zuerst von Gladys unterstützt werden :sweat_smile:

Ich habe mich nicht getraut, es zu sagen, aber ich glaube, das ist eine Funktion, die er unter dem Radar macht, um die Community zu überraschen :wink:

Ich will dir nicht die Hoffnung nehmen @spenceur, aber es ist nicht der Fall :joy:

Heizung ist ein großes Thema und 90 % der Arbeit besteht darin, zu definieren, was wir tun wollen. Bisher sind wir noch auf Level 0, es ist noch nichts gemacht.

Du bist hart, ich würde sagen 5% schon (siehe Funktionsanfrage und erste Überlegungen) :innocent:

Ich versuche, das Wochenende über die Funktion zu testen!

Und hast du die Funktion ‹ Blinken während… › oder auch ‹ Blinken bis… › hinzugefügt? :smiley:

Licht anmachen + 1 Sekunde warten + Licht ausschalten, das sollte es doch tun, oder? :slight_smile:

Könnte man nicht eine Bedingung haben, wenn im Kalender x ein Ereignis stattfindet, dann Aktion?

Das würde mir ermöglichen, Folgendes zu tun: Wenn im Kalender Feiertag an einem bestimmten Tag ein Ereignis stattfindet, dann wird der Chef von Linote benachrichtigt, dass er sich wieder hinlegen kann.