Node-Red - Aktionen Kalenderbasiert

Hallo,

ich versuche gerade eine Kalenderbasierte Node-Red Automation zur erstellen, und komme nicht weiter (vom internen HA Kalender)

Das ganze läuft bereits mit den Bordmitteln über die Autmoatisierungen wenn ich unter “Dann mache” ein Wert Template Abfrage und danach eine Aktion auslöse, möchte es aber graphisch machen.

Genaue Frage somit

Wenn im HA Kalender z.B am 30.10.2024 um 10:00 als Eintrag “licht” steht wie kann ich dieses “licht” in Node-Red auslesen und als Trigger verwenden.

Es gibt zwar einen calendar_event (beta) in Node-Red, nur fehlt mir hier der logische Schluss

Hat jemand ne Idee?

Danke

Jürgen

Ich habe das mit einer “action”-node (früher “call-service”-node) geregelt.
Als Entity der Kalender und falls Du nur einen bestimmten Zeitraum abfragen möchtest, dann noch eine node mit Datum/Uhrzeit bzw. einem entsprechenden offset:


Danach dann eine “function”-node, die mir nach speziellen Kalenderereignissen such.

Schau dir doch am besten in einem Debug-Node an welche Daten das calendar Node zurück liefert. Daten sehen etwas so aus.

{
   "start":{
      "dateTime":"2024-10-13T16:28:00+02:00"
   },
   "end":{
      "dateTime":"2024-10-13T17:28:00+02:00"
   },
   "summary":"Heating;Alle;Homeoffice_Fr,low,On;No",
   "description":null,
   "location":null,
   "uid":"xxxx@google.com",
   "recurrence_id":null,
   "rrule":null
}

Die Daten kannst du dann mit Standard Nodes weiter verarbeiten. Woran genau scheitert es?

Vermutlich willst du msg.payload.summary oder msg.payload.description nutzen. Wenn du auf “licht” reagieren willst dann geht das mit z. B. mit einem Switch-Node.

2 Stolpersteine … zwischen Kalendereintrag erstellen und Sichtbarkeit in Node-Red vergehen ca. 15 Minuten, und Nummer 2, Offset im Calendar-Node funktioniert nicht.

Ich habe im Kalender einen Termin von z.B. 12:00 - 13:00 Uhr namens „Licht“ eingetragen.

Diesen Eintrag „Licht“ möchte ich aus dem Kalender auslesen und daraus eine Aktion generieren. Also Datum/Zeitbasiertes ein und ausschalten.

Ich verstehen immer noch nicht warum du daran scheiterst. Das Calender Node liefert dir die Daten, die kannst du - wenn noch was unklar ist - per Debug Node ansehen. Die Felder siehst du im Debug, und in meinem Post genau und kannst dann in Change-Node, in eigener Funktion, oder anderen Nodes abgreifen und verarbeiten. Zeige doch mal was du hast, was dein Debug Node ausgibt, welchen Fehler du bekommst. Ein “geht nicht” ist zu wenig um zui helfen.

Mir geht es hier nicht um dem was letztendlich aus dem Calendar Node rauskommt, sondern darum wie dieser sich die Informationen vom Kalender holt.

Mit Bordmitteln habe ich das so unter Automationen gelöst:

Wenn Auslöser-ID Startevent
Entität: calender.name
Ereignisstart (Nach)

Dann Mache

Testen ob das Template einen Wert gleich true wiedergibt
Wert Template {{ ‘licht’ in trigger.calendar_event.summary }}
Auslöser Startevent

Aktionen
Licht einschalten.

Also letztendlich geht es erstmals darum wie ich den “Wert Template” in Node Red einlesen kann, erst dann kann ich ja mit nem Debug Node arbeiten.

dafür hast du doch das Calender node angelegt. Schau dir doch mit einem Debug Node an was für Daten zum Event rauskommt und verarbeite das. Genau was du beschreibst habe ich dir schon in meiner Antwort beschrieben. Wenn du Anfänger bist dann schlage ich dir vor erstmal die Grundlagen von Node-Red zu lesen und ein Tutorial zu lesen das erklärt dir vieles.

https://mikehillyer.com/home-automation/getting-started-with-home-assistant-and-node-red/

Jetzt habe ich es hoffentlich verstanden, ich ging immer davon aus das ich im Kalender etwas auslesen muss, aber dieser Calender Node liest wohl alle 15 Minuten die Kalendereinträge welche ich dann für Aktionen verwenden kann.

Danke für Deine Geduld

Das CAlender Node ist dazu da die Termine als Payload zu liefern. Genau zum konfigurierten Zeiitpunkt. Wenn dein Termin um 20:17 Startet und du auf Start reagierst hast du genau um 20:17 das Event. Nur beim Anlegen eines neuen Termins dauert es ca. 15 Minuten bis das “durchsynchronisiert” ist.

Hier noch eine kleine Anmerkung: Der events: calendar-Node liest die Kalendereinträge nicht alle 15 Minuten, er hört auf Ereignisse der HA Kalender Integration. Das Triggersystem der HA Kalenderintegration schaut alle 15 Minuten nach neuen Einträgen in den Kalendern, weshalb neue Einträge mindestens 15 min in der Zukunft liegen sollten, um sicher getriggert zu werden.
Das bedeutet, dass der events: calendar-Node auch triggert, wenn der Flow erst 5 min vor dem Kalenderereignis erstellt wurde, der eigentliche Eintrag im Kalender aber älter als 15 min ist.

Moin, könntest du mir den Flow bitte mal exportieren.
Ich scheitere im Moment auch noch daran.
Gruß jan

Gerne, bin aber gerade im Urlaub, deshalb wird es etwas dauern.

Woran scheiterst Du denn genau?

1 „Gefällt mir“

Danke, keinen Stress. Ist vielleicht ein Verständnis Problem. Ich dachte ich könnte von einem bestimmten Tag die Events auslesen. Allerdings bekomme ich aus der debug Note nur quasi das raus was er mir als Datum aus der Action Note anzeigt.

Hast Du bei der Debus-node den vollen Nachrichteninhalt aktiviert oder nur den „payload“?
Falls ja, dann stell mal um, dann sollte alles kommen.

1 „Gefällt mir“

Voller Nachrichten Inhalt. Ist eingestellt.
In diesem Zeitraum sind mehrere Events drin.
Das ist die Debug Ausgabe.

msg : Object
object_msgid: "4fb97dfea95b07c9"
payload: object
domain: "calendar"
service: "get_events"
data: object
start_date_time: "2025-01-06T00:00:00Z"
end_date_time: "2025-01-20T00:00:00Z"
target: object
entity_id: "calendar.geburtstage"
topic: ""

Zur Info wenn ich das über die Entwicklerwerkzeuge mache, geht es. Es ist also eine fehlende oder falsche Einstellung in der Action Node meinerseits.
ok habs raus. Mein fehler war, das ich msg.payload auf results stellen muss. Stand vorher auf send data und da kam nix.
@harryp danke für deine Hilfe.
An deinem Flow hab ich aber immer noch Interesse.

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

1 „Gefällt mir“