ioBroker und Fritzbox – Benachrichtigung von verpassten Anrufen

In diesem Artikel zeige ich Dir, wie ich eine Anrufbenachrichtigung über Telegram von verpassten Anrufen implementiert habe.

Im letzten Artikel habe ich Dir die Installation und Einrichtung des ioBroker TR-064 Adapters gezeigt. Dabei bin ich auch kurz auf die verfügbaren Datenpunkte und Anwendungsmöglichkeiten eingegangen. In diesem Artikel werden wir uns jetzt ein JavaScript erstellen, mit dem wir uns eine Benachrichtigung für verpasste Anrufe erstellen. Bevor wir uns nun aber mit dem Script beschäftigen, möchte ich Dir im ersten Schritt den verwendeten Datenpunkt des TR-064 Adapters erklären.

Unser Script wird später einen Trigger auf den folgenden Datenpunkt erstellen: tr-064.0.calllists.missed.json

Wenn wir uns nun den JSON-Datenpunkt genauer ansehen, sehen wir hier ein Array von Objekten. Jedes Objekt steht für einen verpassten Anruf. Das Objekt verfügt über eine Anruf-Id, sowie einigen Eigenschaften der angerufenen Nummer sowie des Anrufers. Wir werden im Script die folgenden Datenpunkt für unsere Benachrichtigung verwenden (In allen nachfolgenden Screenshots habe ich die Telefon-Nummern aus Datenschutzgründen abgeschnitten).

  • caller (Nummer des Anrufers)
  • name (Name des Anrufers aus dem Adressbuch der FritzBox)
  • calledNumber (Angerufene Nummer)
  • date (Datum und Uhrzeit des Anrufs)

Nach dem wir nun den Aufbau und den Inhalt der einzelnen Datenpunkte des TR-064 Adapters besprochen haben, können wir nun mit der Implementierung des Scripts beginnen. Dafür wechseln wir in den Bereich „Skripte“ und erstellen über die Plus-Schaltfläche ein neues Script.

Als Art des Scripts wählen wir hier JavaScript, da wir im Script direkt eine JSON-Zeichenfolge einfacher und schneller parsen können.

Als Name des neuen Scripts habe ich hier verpassterAnruf gewählt.

Du kannst dann den folgenden Script Code in das neue Script einfügen und das Script über die Pfeil-Schaltfläche direkt aktivieren.

on({id: 'tr-064.0.calllists.missed.json', change: "ne"}, function (obj) {
  var jsonString = obj.state.val;
  var jsonObject = JSON.parse(jsonString);

  if ( jsonObject.length > 0 ) {
    var lastCallObject = jsonObject[0];
    var missedcalledNo = lastCallObject.callednumber;
    var missedcallerNo = lastCallObject.caller;
    var missedcallerName = lastCallObject.name;
    var missedcallerDate = lastCallObject.date;
    var messageText = ['Verpasster Anruf ',missedcallerDate,'\n','An ',missedcalledNo,'\n','Von ',missedcallerName,' (',missedcallerNo,')'].join('');

    sendTo("telegram", "send", { text: messageText });
   }
});

Im Script erstellen wir eine Subscription auf den JSON-Datenpunkt. Bei einer Veränderung des Datenpunkts wird dann die JSON-Zeichenfolge über die JSON.parse() Funktion in ein JSON-Objekt geparsed. Wenn das Array der verpassten Anrufe größer Null ist, wird der 1. Eintrag aus dem Array in eine separate Variable geschrieben. Aus dieser Variable werden dann die einzelnen Datenpunkte über den Punkt-Operator in weitere Variablen für die Telegram-Ausgabe geschrieben. Abschließend wird die Zeichenkette zusammengesetzt und über die sendTo() Funktion an den telegram-Adapter übermittelt.

Ein verpasster Anruf wird nun wie folgt in der Telegram-App dargestellt.

Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

Ein Gedanke zu „ioBroker und Fritzbox – Benachrichtigung von verpassten Anrufen

  • 25. Januar 2021 um 21:28
    Permalink

    Vielen Dank! Hab zwar WhatsApp genommen statt Telegram aber egal – klappt super.

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.