Apple bietet leider keine Möglichkeit, den iCloud-Kalender „Geburtstage“ über eine URL abzufragen. Wie du trotzdem Geburtstage deiner iOS-Kontakte auslesen und im ioBroker integrieren kannst, zeige ich dir im
Folgenden.
Die ausführliche Anleitung mit Bildern findest du unter https://www.machs-smart.de/iobroker-geburtstage-ios-kontakte-kurzbefehlen-shortcuts/
Grundfunktion
Mit Hilfe der iOS-App “Kurzbefehle” und der ioBroker “Simple-api” kannst du die Geburtstage, die pro Tag stattfinden, mit ioBroker verarbeiten und zum Beispiel in deiner Visualisierung anzeigen lassen. Dafür prüft die Kurzbefehl-App zu einem definierten Zeitpunkt täglich den Kalender “Geburtstage” und schreibt den Inhalt über die “Simple-api” in einen Datenpunkt.
Voraussetzung
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 der Eintrag sichtbar sein.
Kurzbefehl-App
Außerdem solltest du die App “Kurzbefehle” auf deinem iPhone installiert haben:
https://apps.apple.com/de/app/shortcuts/id915249334?l=en
ioBroker-Adapter
Installiere dir zusätzlich den folgenden ioBroker-Adapter: simple-api
Einrichtung
Adapter “Simple-api” einrichten
Suche unter Adapter nach “simple-api” und installiere den Adapter:
Die Konfiguration der Instanz kannst du wie folgt übernehmen. Zusätzlich solltest du Authentifikation aktivieren.
Nach dem Speichern kannst du über folgende URL Datenpunkte auslesen und beschreiben:
http://<DEINEIOBROKERURL>:8087/<DATENPUNKT>?user=<BENUTZER>&pass=<PASSWORD>
Welche Funktionen und Möglichkeiten es gibt, kannst du unter github.com/ioBroker/ioBroker.simple-api nachlesen.
Neuen Datenpunkt anlegen
Lege dir unter Objekte in 0_userdata.0 einen neuen Datenpunkt vom Typ gemischt an.
API testen
Teste anschließend, ob du diesen über folgende URL beschreiben kannst. Kopiere sie in den Browser und passe Benutzernamen und Password an:
http://<DEINEIOBROKERURL>:8087/set/0_userdata.0.Geburtstage?value=Test&user=<BENUTZER>&pass=<PASSWORD>
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.
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 Kalenderereignisse.
Als Nächstes folgt ein optionaler Schritt, der das Wort Geburtstag aus dem gefundenen Kalenderereignis XYZ (XX. Geburtstag) entfernt. Wenn du das nicht möchtest, kannst du diesen Schritt auslassen. Dazu benötigst du 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.
Nun folgt der eigentliche Übergabe an die API ind das Schreiben kn den Datenpunkt. Setze dafür eine neue Aktion Inhalt von URL abrufen unter den Text ersetzen-Block. Setze folgende URL in das Adressfeld, lasse Benutzer und Password an. Hinter Value setzt Susie Variable Aktualisierter Text, der die codierte URL ohne „Geburtstag“ enthält:
http://<DEINEIOBROKERURL>:8087/set/0_userdata.0.Geburtstage?user=<BENUTZER>&pass=<PASSWORD>&value=
Als Methode setzt 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. Sofern du heute einen Geburtstag in deinem Kalender hast, sollte dieser — wie unten zu sehen — ausgegeben werden. Falls nicht, steht „null“ hinter value und val.
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).