ioBroker: Geburtstage von Google Kontakten mit IFTTT auslesen

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Voraussetzung

Damit das Auslesen der Geburtstage funktioniert, musst du bei folgenden Services angemeldet sein:

Einrichtung

Im „IoT Assistants“-Adapter meldest du dich zuerst mit deinen Zugangsdaten für ioBroker Pro an:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Danach wechselst du zu IFTTT und installierst dort das Applet „Webhooks„. Nach der Installation klickst du unter „Webhooks“ oben rechts auf „Documentation“:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Dort erhältst du deinen individuellen API-Kley, um die Webhooks nutzen zu können:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Zurück im ioBroker gibst du diesen Key im „IoT Assistants“-Adapter im Reiter „Services und IFTTT“ ein:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Unter dem Feld „IFTTT-Key“ erhältst du eine URL („Link für IFTTT“, die du gleich für den neuen Webhooks benötigst. Wechsle zurück zu IFTTT in die „Webhooks„. Indem du oben rechts auf dein Profilbild klickst, kannst du mit „Create“ einen neuen „Webhook“ erstellen:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Danach klickst du auf „This“ und suchst nach „google calendar“:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.
Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Klicke auf „Event from search starts“:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Im nächsten Schritt wählst du unter „Which calendar?“ den Eintrag „Contacts“ aus. Als „Keyword or phrase“ gibst du „hat Geburtstag“ ein. Danach speicherst du den Trigger:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Damit hast du einen Trigger erstellt, der auf „hat Geburtstag“ im „Contacts-Kalender“ reagiert. Als nächstes wählst du „That“ und suchst nach „webhooks“:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.
Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Klicke auf „Make a web request“:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Im letzten Schritt fügst du unter „URL“ die Adresse vom IoT Assistant-Adapter ein. Als „Method“ wählst du „POST“ und als „Content type“ den Eintrag „text/plain“. Zuletzt fügst du im Feld „Body“ den Wert „{{Title}} ein. Diesen Wert kannst du auch über „add ingredient“ auswählen.

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Nachdem du gespeichert hast, beschreibt IFTTT – sobald ein Geburtstag ansteht – folgenden Datenpunkt:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.
iot.0.services.ifttt

Datenpunkt automatisch zurücksetzen

Der Datenpunkt bleibt solange bestehen, bis ein neuer Geburtstag ansteht. Solltest du damit eine Anzeige in deiner VIS steuern, ist das ein unschöner Nebeneffekt.

Über folgendes zeitgesteuertes Script kannst du daher den Datenpunkt jeden Tag um 23:55 Uhr wieder zurücksetzen:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Blockly

<xml xmlns="https://developers.google.com/blockly/xml">
  <block type="schedule" id="rnxSuvS)m3efje!l2L%Z" x="38" y="-287">
    <field name="SCHEDULE">55 23 * * *</field>
    <statement name="STATEMENT">
      <block type="control" id=")wYHnV2C4/[Arm*/!!K.">
        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
        <field name="OID">iot.0.services.ifttt</field>
        <field name="WITH_DELAY">FALSE</field>
        <value name="VALUE">
          <block type="text" id="/f0+_B0NWjvN!u^70i[;">
            <field name="TEXT"></field>
          </block>
        </value>
      </block>
    </statement>
  </block>
</xml>

Mehrere Geburtstage verarbeiten

Wenn in deinem Google-Kalender mehrere Geburtstage anstehen, wird nur der letzte Eintrag in den Datenpunkt geschrieben. Denn IFTTT überschreibt seinen eigenen Datenpunkt mit dem neusten Ereignis.

Damit du trotzdem alle anstehenden Geburtstage erhältst, legst du folgenden neuen Datenpunkt an:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Dann erstellst du ein neues Blockly-Script, das den ursprünglichen IFTTT-Datenpunkt überwacht. Sobald dieser geändert wurde, ließt das Script den Namen des Geburtstagskind aus und schreibt ihn in deinen eben angelegten Datenpunkt. Sofern dort schon ein Name steht, wird der neue einfach hinten dran gehängt:

Solltest du deine Kontakte mit Google synchronisieren, werden dir automatisch deren Geburtstage in deinem Google Kalender angezeigt. Wie du diese nun im ioBroker oder deiner VIS verwenden kannst, zeige ich dir in diesem Artikel.

Fertiges Script

Blockly

<xml xmlns="https://developers.google.com/blockly/xml">
  <variables>
    <variable id="imY9zDm$`C!4+yL=_(5}">Text</variable>
  </variables>
  <block type="on" id="oDju.|X!~5x:#,42L?1A" x="38" y="-562">
    <field name="OID">iot.0.services.ifttt</field>
    <field name="CONDITION">ne</field>
    <field name="ACK_CONDITION"></field>
    <statement name="STATEMENT">
      <block type="controls_if" id="s$%UTr-@psmwh)AsZA*:">
        <mutation else="1"></mutation>
        <value name="IF0">
          <block type="on_source" id="Yx+R,FA)qNZu?XRik*9I">
            <field name="ATTR">state.val</field>
          </block>
        </value>
        <statement name="DO0">
          <block type="variables_set" id="!,7LixP=w6e#`+sTm{Hz">
            <field name="VAR" id="imY9zDm$`C!4+yL=_(5}">Text</field>
            <value name="VALUE">
              <block type="text_getSubstring" id="R.^UxBNb7;U};8NwQVK/">
                <mutation at1="false" at2="true"></mutation>
                <field name="WHERE1">FIRST</field>
                <field name="WHERE2">FROM_END</field>
                <value name="STRING">
                  <block type="on_source" id="T)PsV.%ytCOcgqqTG]U?">
                    <field name="ATTR">state.val</field>
                  </block>
                </value>
                <value name="AT2">
                  <block type="math_number" id="v6mS|3nfJbFF1/aDmD6O">
                    <field name="NUM">16</field>
                  </block>
                </value>
              </block>
            </value>
            <next>
              <block type="controls_if" id="q.`h]7Tpg%*PG#)I^H9N">
                <mutation else="1"></mutation>
                <value name="IF0">
                  <block type="get_value" id="4P~cQ)9H3:iM/,|-B[c:">
                    <field name="ATTR">val</field>
                    <field name="OID">Eigene.0.Vis.Geburtstag</field>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="control" id="M##:V{pko$_k(n4r82m[">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">Eigene.0.Vis.Geburtstag</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="text_join" id="0:svAqw,2_raCVu}]k9:" inline="false">
                        <mutation items="3"></mutation>
                        <value name="ADD0">
                          <block type="get_value" id="OOFlE6r[$!-klLM|ptPr">
                            <field name="ATTR">val</field>
                            <field name="OID">Eigene.0.Vis.Geburtstag</field>
                          </block>
                        </value>
                        <value name="ADD1">
                          <block type="text" id="nB+_:O@zSR~dhtasq?u5">
                            <field name="TEXT">, </field>
                          </block>
                        </value>
                        <value name="ADD2">
                          <block type="variables_get" id="G_fQ0h)wW*[!5^nF+$85">
                            <field name="VAR" id="imY9zDm$`C!4+yL=_(5}">Text</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </statement>
                <statement name="ELSE">
                  <block type="control" id="x~70EOYsijr4wG0{O*EL">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">Eigene.0.Vis.Geburtstag</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="variables_get" id="xlN:|/$_cF*K7GVF_oI3">
                        <field name="VAR" id="imY9zDm$`C!4+yL=_(5}">Text</field>
                      </block>
                    </value>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </statement>
        <statement name="ELSE">
          <block type="control" id="|LLM{;UU4a$.~3g+WPnb">
            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
            <field name="OID">Eigene.0.Vis.Geburtstag</field>
            <field name="WITH_DELAY">FALSE</field>
            <value name="VALUE">
              <block type="text" id="W./!pA#rY^`AEt#gf%K}">
                <field name="TEXT"></field>
              </block>
            </value>
          </block>
        </statement>
      </block>
    </statement>
    <next>
      <block type="schedule" id="rnxSuvS)m3efje!l2L%Z">
        <field name="SCHEDULE">55 23 * * *</field>
        <statement name="STATEMENT">
          <block type="control" id="L(UapN@R,O?:B(*X2t/E">
            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
            <field name="OID">iot.0.services.ifttt</field>
            <field name="WITH_DELAY">FALSE</field>
            <value name="VALUE">
              <block type="text" id="ERiIV:dn?YC%.Cs_d8MH">
                <field name="TEXT"></field>
              </block>
            </value>
          </block>
        </statement>
      </block>
    </next>
  </block>
</xml>
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.

16 Kommentare

Kommentieren

Das System hat einen Fehler.

Wenn 2 Geburtstage an einem Tag sin, dann zeigt er nur einen an.

Das ganze wurde nicht sauber durchdacht.

Hallo Peter, danke für den Hinweis! Ich habe die Anleitung um eine entsprechende Erweiterung ergänzt. Grüße!

Hallo Max,
im Blockly Skript ist noch ein Fehler. In der Sequenz „Setze ‚Text‘ auf im Text ‚Text‘ nimm Teil ab erster …“ muss es heißen „Setze ‚Text‘ auf im Text ‚WERT‘ nimm Teil ab erster …“. Alles andere klappt prima.
Gruß
Michael

Hallo Max, bei der Auswahl des Kalenders in IFTTT kann ich keine Contacts auswählen. Bei mir werden nur die Kalender angezeigt. Wie kann ich denn die Contacts da reinbekommen?

Hallo Martin, der Option erscheint, wenn du deine Kontakte ebenfalls mit Google synchronisierst. Viele Grüße

Ich habe alle meine Kontakte in meinem Google Konto. Der Eintrag Contacts erscheint bei mir trotzdem nicht. Muss ich in meinem Google Konto eine Berechtigung vergeben? Ich komme nicht weiter. Alles andere hat geklappt.

Hallo Max, ich habe jetzt in allen Einstellungen geschaut ob eine Verknüpfung fehlt. Der Kalender „Geburtstage“ ist verknüpft mit meinen Kontakten. Bei der Auswahl in IFTTT bekomme ich aber nur alle meine verschiedenen Kalender angezeigt. Muss ich in IFTTT noch eine Verknüpfung erstellen?

Hey,

also mal davon abgesehen, dass ich „Kontakte“ auch nicht finde in meinem Konto, habe ich testweise Einträge im normalen Kalender angelegt und unter „Geburtstage“. Des Weiteren auch im iCloud Kalender und diesen ebenfalls verknüpft.

Leider führt die Suche nichts aus… bei „Check“ passiert nichts (auch kein Fehler) und „last runtime“ bleibt ewig auf „Never“….!? Bin etwas verwirrt.

„Kontakte“ kommen erst, wenn du deine Kontakte mit deinen Smartphone-Kontakten synchronisierst oder hier manuell anlegst: https://contacts.google.com. Sobald dort ein Geburtstag hinterlegt ist, erfolgt der eigene Geburtstags-Eintrag im Kalender und die Ausgabe über ioBroker.

Hallo Max,

kann ich so nicht nachvollziehen.

Ich habe bereits seit Jahren diese Kontakte hinterlegt bei Google – aber der Eintrag fehlt mir. Ich habe über 100 Einträge in der Liste, sowohl mit als auch ohne Geburtstag… 🙂

Hallo Daniel,

ich hatte das Problem auch. Du musst im Browser den Google Kalender öffnen. Dort klickst Du oben rechts auf das Zahnrad und dann auf „Einstellungen“. Hier wählst Du dann links im Reiter „Kalender hinzufügen“ und dort „Relevante Kalender ansehen“. Und dort gibt es oben dann den Eintrag „Geburtstage“. Hier das Häkchen setzen.
Jetzt kannst Du in IFFT den Kalender Geburtstage auswählen.

Leider habe ich immer noch das Problem, dass nichts passiert. Bei mir steht auch bei last runtime „Never“…

Schreibe einen Kommentar