ioBroker: Geburtstage aus dem iOS Kalender mit Kurzbefehlen auslesen

Apple bietet leider keine Möglichkeit, den Kalender „Geburtstage“ über eine iCloud-URL abzufragen. Wie du trotzdem Geburtstage aus deinem iOS Kalender auslesen und im ioBroker integrieren kannst, zeige ich dir in diesem Artikel.

Grundfunktion

Mithilfe der iOS-App “Kurzbefehle” und der ioBroker “IoT”-API kannst du die täglichen Geburtstage mit ioBroker verarbeiten und zum Beispiel in deiner Visualisierung anzeigen lassen. Dafür prüft die Kurzbefehl-App zu einem definierten Zeitpunkt regelmäßig den Kalender “Geburtstage” und schreibt den Inhalt über die “IoT”-API in einen Datenpunkt.

Voraussetzung

ioBroker-Adapter und ioBroker Pro Account

Geburtstags-Feld

Diese Anleitung funktioniert nur, wenn du bei deinem Kontakten das Kontakt-Feld Geburtstag ausgefüllt hast. Dann sollte in deinem iOS-Kalender am Tag des Geburtstags auch ein entsprechender Eintrag sichtbar sein:

Kurzbefehl-App

Außerdem solltest du die App “Kurzbefehle” auf deinem iPhone installiert haben:

Einrichtung

IoT-API einrichten

Installiere dir unter Adapter den “IoT Assistants”-Adapter. In den Einstellungen des Adapters meldest du dich dann mit deinen Zugangsdaten für ioBroker Pro an (kostenfreie Variante reicht aus):

Apple bietet leider keine Möglichkeit, den Kalender „Geburtstage“ über eine iCloud-URL abzufragen. Wie du trotzdem Geburtstage aus deinem iOS Kalender auslesen und im ioBroker integrieren kannst, zeige ich dir in diesem Artikel.

Wechsle dann in den Bereich Services und IFTTT. Dort legst du unter Dienst hinzufügen einen neuen Dienst mit dem Namen iCloud an, speichert die Einstellungen und öffnest erneut die Seite Services und IFTTT:

Apple bietet leider keine Möglichkeit, den Kalender „Geburtstage“ über eine iCloud-URL abzufragen. Wie du trotzdem Geburtstage aus deinem iOS Kalender auslesen und im ioBroker integrieren kannst, zeige ich dir in diesem Artikel.

Kopiere die URL aus dem Bereich Benutze folgenden Link für einen eigenen Service und passe ihn dahingehend an, dass hinter service der oben angelegte Name steht:

https://service.iobroker.in/v1/iotService?service=custom_iCloud&key=12345&user=abc%40def.com&data=

API testen

Teste anschließend, ob du diesen über folgende URL beschreiben kannst, indem du diese in die Adressleiste deines Browsers einfügst und öffnest:

https://service.iobroker.in/v1/iotService?service=custom_iCloud&key=12345&user=abc%40def.com&data=Test

Wenn alles geklappt hat, sollte der folgende Datenpunkt mit “Test” beschrieben worden sein:

iot.0.services.custom_iCloud

Im Browser erhältst du folgende Ausgabe:

Apple bietet leider keine Möglichkeit, den Kalender „Geburtstage“ über eine iCloud-URL abzufragen. Wie du trotzdem Geburtstage aus deinem iOS Kalender auslesen und im ioBroker integrieren kannst, zeige ich dir in diesem Artikel.

Kurzbefehl erstellen

Wechsle in die App Kurzbefehle und erstelle unter Automation mit + eine neue Persönliche Automation. Als Auslöser wählst du Tageszeit:

Gebe 00:05 als Zeit ein und aktiviere täglich. Klicke dann auf Weiter und auf + Aktion hinzufügen:

Im nächsten Fenster suchst du nach Kalenderereignisse suchen und fügst die Aktion mit + hinzu. Jetzt kannst du die Aktion konfigurieren. Wähle als Startdatum ist heute und wählen über + Filter hinzufügen den Kalender Geburtstage aus:

Damit der Kurzbefehl den Datenpunkt leert, wenn kein Geburtstag ansteht, benötigst du als Nächstes eine Wenn-Bedingung. Diese fügst du über das + unterhalb der Aktion hinzu. Stelle diese dann auf hat einen beliebigen Wert:

Damit alle gefunden Geburtstage übergeben werden, benötigst du die Aktion Text kombinieren. Als Variable wählst du Kalenderereignisse und als Funktion Eigene mit Komma ,:

Da du keinen Wert mit Leerzeichen per URL an an die API übergeben kannst, musst du diesen URL-konform codieren. Dadurch werden Leerzeichen als %20 maskiert und — sofern vorhanden — andere Sonderzeichen umgewandelt. Erstelle dafür eine neue Aktion URL codieren und ziehe sie durch langes Tippen zwischen Wenn und Sonst. In das Feld „Text“ setzt du die Variable Kombinierter Text:

Als Nächstes folgt ein optionaler Schritt, der das Wort Geburtstag aus den gefundenen Kalenderereignissen XYZ (XX. Geburtstag) entfernt. Zusätzlich – sofern du in deinem Kontakt kein Geburtsjahr angegeben hast – wird (Geburtstag) entfernt. Wenn du das nicht möchtest, kannst du diesen Schritt auslassen.

Dazu benötigst du zweimal die Aktion Text ersetzen, ziehst diese unter den Codieren-Block und schreibst in das „Text“-Feld .%20Geburtstag. Als Variable (in) setzt du Text der codierten URL. Das Feld „durch“ bleibt leer:

Die zweite Text ersetzen-Aktion passt du wie folgt an: Schreibe in das „Text“-Feld %20(Geburtstag). Als Variable (in) setzt du Aktualisierter Text. Das Feld „durch“ bleibt leer:

Nun folgt die eigentliche Übergabe an die API und das Schreiben in den Datenpunkt. Setze dafür eine neue Aktion Inhalt von URL abrufen unter den Text ersetzen-Block und die URL aus dem IoT-Adapter in das Adressfeld. Hinter Value fügst du die Variable Aktualisierter Text, der die codierte URL ohne „Geburtstag“ enthält, ein:

https://service.iobroker.in/v1/iotService?service=custom_iCloud&key=12345&user=abc%40def.com&data=

Als Methode wählst du GET:

Erstelle die gleiche Aktion erneut und setze sie in den Bereich Sonst. Diesmal setzt du allerdings meine Variable hinter value. Mit dem Play Button unten rechts kannst du du die ganze Automation testen. Als Antwort vom Server erhältst du ein {result: ok} – im oben beschrieben Datenpunkt sind dann die Geburtstage des heutigen Tags eingetragen:

Speichere den Kurzbefehl und deaktiviere abschließend vor Ausführen bestätigen. Der Kurzbefehl läuft ab jetzt jede Nacht (wenn dein iPhone nicht komplett ausgeschaltet ist):

War dieser Beitrag hilfreich?
Hat dir der Beitrag geholfen?
Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Affiliate-Links. Wenn du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekomme ich von dem betreffenden Online-Shop oder Anbieter eine Provision. Für dich verändert sich der Preis nicht.

6 Kommentare

Kommentieren

Vielen Dank für die detaillierte Erklärung! Ich hätte zwei Fragen:
1) bei funktioniert es nicht, wenn mehrere Geburtstage an einem Tag stattfinden, dass auch mehrere Geburtstage übergeben werden
2) wenn mein iPhone nicht zu Hause ist, funktioniert die Übergabe ja nicht – gibt es dazu Möglichkeiten (Bsp. ich bin auf Geschäftsreise, aber die Familie möchte die Termine dennoch sehen).

Hallo Christian, danke für dein Feedback. Ich habe den Artikel dahingehend überarbeitet, dass mehrere Geburtstage zusammengefasst werden (Text kombinieren) sowie die Simple-API durch den IoT-Adapter ersetzt, damit der Kurzbefehl auch außerhalb des eigenen Netzwerks funktioniert. Gerne testen und Feedback geben! Viele Grüße

Dies ist eine ganz fantastische Anleitung und mit Abstand die beste Möglichkeit, iOS Kalender ohne Bastelei und zukünftigen Pflegeaufwand in den ioBroker zu integrieren. Vielen Dank für die ausführliche Anleitung!

Der Weg über den iot-Adapter ist auch nochmal eleganter als der vorherige. Ich kannte diese Möglichkeit um ehrlich zu sein bisher gar nicht.

Die iot-Schnittstelle ist eigentlich auch eine super Möglichkeit die iOS eigenen Positionsdienste zu nutzen um An- und Abwesenheit zu setzen. Auch über die Automatisierung, nur eben mit “verlässt zuhause” als Auslöser.
Ich kenne nur die Bastelei über ifttt, was jetzt mit dem neuen Modell nicht mehr gut funktioniert, oder alternativ z.B. die nicht so zuverlässige Erkennung über WLAN des Gerätes (was bei langen Standby-Zeiten und niedrigem Akkustand nicht zuverlässig funktioniert).

Ich hatte mir zwischenzeitlich eine HomeKit zentrale für diese Schnittstelle angeschafft, um dann per yahka einen “Anwesenheit” Schalter zu steuern, aber elegant ist das nicht. Ich werde das bei Gelegenheit mal auf die iot-Schnittstelle umbauen. Ist ja damit auch Plattformunabhängig.

Vielen Dank für die tolle und ausführliche Anleitung. So habe auch ich es geschafft.
Leider erscheint in der Vis nur der Vorname und auch nur vom 1. Geburtstagskind des Tages. Ursprünglich hatte ich deine komplette Anleitung genutzt (also auch die Entfernung des “Geburtstags”, das gefiel mir aber nicht so gut). Die 2 optionalen Schritte habe ich dann weggelassen und es ist nun kein Unterschied zu vorher. Es erscheint allein der Vorname, kein Nachname, keine Zahl und keine weitere Person (falls vorhanden).
Was kann ich ändern?

Schreibe einen Kommentar