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.

6 Gedanken 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
  • 6. Februar 2021 um 6:39
    Permalink

    Moin, interessanter Artikel. Kennst du eine Möglichkeit, in die Fritzbox zu schreiben?

    Meine Idee:
    Ich verwende den WLAN-Gastzugang und den zugehörigen QRCode für die Einrichtung des WLAN-Gastnetzwerkes auf den Handys meiner Gäste (Familie/Freunde etc.). Den QRCode des Gast-WLANs lasse ich mir auf dem Tablet an der Wand anzeigen. Den können die Gäste dann selber zur Einrichtung mit deren Handys einscannen. Jetzt suche ich nach einer Möglichkeit, den WLAN-Netzwerkschlüssel des Gast-WLANs rotierend zu verändern (in die Fritte zu schreiben). Ich kenne nur leider aktuell nicht, wie man die Daten der Fritte ‚manipulieren‘ kann.

    Gruß
    Thomas

    Antwort
  • 6. Februar 2021 um 18:03
    Permalink

    Toll! Ich nutze auch Telegram, habe allerdings das Problem, dass die Meldung zeitversetzt gesendet wird. Die Einstellungen sind wie beschrieben. Was kann ich ändern?

    Antwort
    • 6. Februar 2021 um 19:25
      Permalink

      Hallo,

      wie versetzt kommen denn die Meldungen bei Dir an? Kommen die anderen Telegram-Nachrichten sonst auch versetzt?
      Wie ist Dein Poll-Intervall im TR064-Adapter eingestellt?
      LG Matthias

      Antwort
  • 3. März 2021 um 13:59
    Permalink

    Kannst du mir auch eine Möglichkeit sagen, wie ich in einen Datenpunkt eintragen lassen kann, wer angerufen hat oder Angerufen wurde? Es soll ein und der Selbe Datenpunkt sein.

    Es soll halt nur drin stehen, wer angerufen wurde, oder hat, bzw. bei unbekannter Nummer UNBEKANNT.

    LG

    Antwort
  • 17. April 2021 um 21:08
    Permalink

    Vielen Dank für deinen tollen Beitrag, der mir als „ambitionierter Neuling“ in Sachen ioBroker & JS sehr weiter geholfen hat!

    Leider zeigte sich das Script bei meiner etwas älteren 6490 Cable zuerst völlig unbeeindruckt von verpassten Anrufen. Mir fiel nach ein bisschen fischen im Trüben auf, dass die calllists.missed.json bei meiner Fritte anscheinen anders formatiert wird, und nach vielen Fehlversuchen im Script rum zu pfuschen 😀 bin ich dann auf die Lösung gekommen:

    Ich musste einfach nur die Zeile 5 ( if ( jsonObject.length > 0 ) { ) und die überflüssige geschwungene Klammer in der letzten Zeile löschen. Seitdem meldet das Script mir zuverlässig jeden verpassten Anruf.

    Vielleicht hilft das ja dem ein oder anderen Besitzer einer älteren FB weiter.

    Antwort

Schreibe einen Kommentar

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