YESLY Smart Home

FRITZ!Box-Anruf-Integration in das Fibaro HomeCenter 2

Hoggle
Geschrieben von Hoggle
siio-App

Wer kennt das nicht: Wenn (am Wochenende) mal lauter Musik gehört wird, entgeht einem der eine oder andere Anruf.  Dank Anrufbeantworter kann man später immer noch reagieren. Aber was, wenn die Eltern/Großeltern oder andere pflegebedürftige Verwandt dringend Hilfe benötigen? Oder der Partner beim Shoppen ist und eine „wichtige“ Frage hat….

Genau deshalb suchte ich schon länger, bzw. seit dem Kauf meines Fibaro Home Center 2 nach einer Möglichkeit, eingehende Anrufe zu erkennen und via Szenarien automatisch darauf reagieren zu können. So wollte ich zum Beispiel meine Sonos-Lautsprecher leiser stellen oder das Kingelsignal auf dem Sonos System wiedergeben. Bestimmte Anrufe will man ungern verpassen.

Auf Basis der Threads im Fibaro-Forum konnte ich nun Abhilfe schaffen. Das dort vorgestellte Virtuelle Device (VD) fragt laufend die FritzBox ab und kann demzufolge auf eingehenden Anrufe reagieren. Ich habe das VD um zwei Buttons ergänzt, um so eine automatische Ansage, welche den Namen des Anrufers über das Sonos System abspielt, optional aktivieren- und deaktiviren zu können.

fritzbox-vd

Ansicht des FritzBox-VD

Da die Fritz Box von Haus aus ein- und ausgehende Anrufe gut darstellt, ist das VD für mich nur als Trigger wichtig.

Vorbereitung der FritzBox

Ich selber nutze eine FritzBox 6490 Cable. Die Funktion sollte aber unabhängig vom Model sein.

An der FritzBox muss die sog. Callmonitor-Funktion aktiviert werden. Dazu nehmt ihr euer an die FritzBox angeschlossenes Telefon und tippt #96*5* gefolgt von der (grünen) Wahltaste. Eine Bestätigung über den Erfolg der Aktion habe ich nicht bekommen – wer FRITZ!Dect Telefone verwendet wird eine positive Rückmeldung im Display eingeblendet bekommen. Der Vorgang muss nur einmalig vorgenommen werden.

VD einrichten

Das virtuelle Modul (VD) könnt Ihr euch hier herrunterladen. Nach dem Download geht Ihr in der Weboberfläche des HC2 über Module -> Module hinzufügen -> ein virtuelles Modul hinzufügen -> Datei auswählen hinzufügen. Ich habe es bei mir dem Raum „Haus“ als übergeordneten Bereich hinzugefügt.

Unter IP Adresse tragt Ihr die IP-Adresse Eurer FritzBox ein. Als TCP Port nutzt ihr den Port: „1012“.

fb-ports-ip

Einrichten des FritzBox-VDs

Das VD „überwacht“ dann im Mainloop eure FRITZ!Box auf Telefonaktivitäten. Bei mir läuft das VD im Mainloop und unter der Firmware 4.090 bislang stabil. Einige Anwender haben aber wohl Probleme, weil dem Mainloop, welcher sich des öfteren verabschiedet. Das konnte ich bei mir bislang nicht beobachten.

Im Mainloop müssen wir nach Einrichtung der „Eingehender-Anruf-Szene“ noch Anpassungen vornehmen. Das VD wird jetzt noch nicht richtig arbeiten, da die notwendigen globalen Variablen (GV) fehlen. Dessen Anlage erfolgt automatisch durch die folgende Szene (siehe nächster Abschnitt).

LUA Szene für eingehenden Anrufe

Über Szene hinzufügen -> LUA Szene hinzufügen habe ich mir die besagte Sezne angelegt:

fb-ea-szene

Erstellen der LUA-Szene

Die ID der Szene hier im Beispiel ist „270“ – diese benötigen wir später noch einmal.

Über die lokalen Variablen wird das Script auf eure individuellen Bedürfnisse angepasst.

Die für das VD und das Script erforderlichen globalen Variablen (GV) werden nach einem Start der Szene automatisch angelegt bzw. überprüft.

„Zulaut“ ist der Wert, ab dem die Sonos-Lautsprecher auf den Wert  „Leiser“ bei einem eingehenden Anruf heruntergesetzt werden. Auf das automatische lauter stellen nach dem Auflegen haben ich verzichtet, da ich nicht immer die Musik nach dem Auflegen wieder so laut wie vorher haben mag. Über die Zeile (deviceType == ‚com.fibaro.sonosSpeaker‘) sucht das Script alle Eure Sonos-Geräte und stellt diese leiser, wenn sie „zulaut“ sind.

Die Ansage des Anrufers nutze ich nur in der Küche. Hierzu nutze ich das VD von doonic. Unter „SonosCommander“ habe ich die ID meines virtuellen Device vom SonosCommanders eingetragen.

Die Variable „Oma“ beinhaltet die Telefonnummer von Oma (ohne Leerzeichen oder Sonderzeichen). Das Format der Nummer kann man in dem VD prüfen, wenn die Person anruft. „OmaAnsage“ beinhaltet den Pfad mit dem abzuspielenden Ansagetext, wenn Oma anruft. Den Pfad übergebe ich dann an den SonosCommander, der das Abspielen übernimmt.

In Zeile 44 habe ich noch eine zusätzliche Prüfung implementiert. Auch wenn die Ansage über das oben vorgestellte „FritzBox-VD“ aktiviert ist, erfolgt die Ansage bei Omas Anruf nur am Samstag und Sonntag. Bei einem Anruf, beispielsweise von „Chris“, gibt es diese Zusatzbedingung nicht.

Sofern Ihr weitere Ansagen hinzufügen wollt, müsst Ihr nur jeweils zwei lokale Variablen (analog zu Oma und OmaAnsage) anlegen und unten eine weitere ifelse-Abfrage implementieren.

Jetzt müssen wir noch die vorher erwähnte Anpassungen im VD durchführen.

Anfangs hatte ich Probleme mit dem Starten der Szene, wenn das Telefon klingelte. Die im Header vermerkte globale Variable als Trigger hat nicht, bzw. nicht zeitnah reagiert. Also habe ich den Trigger entfernt und lasse die „Eingehender-Anruf-Szene“ direkt aus dem Mainloop des FRITZ!Box VDs starten. Hierzu müsst Ihr in Zeile 34 die ID eurer „Eingehender-Anruf-Szene“ eintragen (im Beispiel ist es die 270). Die ID eurer zuvor neu angelegten Szene findet Ihr, wenn Ihr die Szene aufgerufen habt unter Allgemein oder oben in der Eingabezeile eures Browsers:

szene-id

fb-vd-und-szene

FritzBox-VD und Szenen-ID

Das Testen der durch das Script ausgelösten Aktionen ist natürlich wichtig. Herausforderung dabei ist, die Mitbewohner nicht allzu sehr durch das ständige Telefon läuten zu nerven. Deswegen hat das Ganze bei mir etwas gedauert ;-)

Hier das Script:

 

Weitere Möglichkeiten

Jetzt lässt sich das Script sicherlich noch um viele Dinge ergänzen oder anpassen. Das könnte sein:

Wie immer: hinterlasst eure Ideen und Anmerkungen gern in den Kommentaren. Viel Spaß beim nachbauen!

Diesen Blogpost hat geschrieben ...

Hoggle

Hoggle

Beruflich komme ich weder aus dem Software- oder IT-Bereich, sondern aus dem Rechnungswesen. Smart Home ist dabei eine spannende Ablenkung. Ja, manchmal auch Spielerei, aber das macht es so interessant und es ist irgendwie nie zu Ende....

39 Kommentare

  • super idee… aber es müsste sich auch mit musiccast umsetzen lassen, oder? (Lautsprecher WLAN Systeme von Yamaha)
    Die lassen sich steuern über:

    http:/IP-Receiver//YamahaExtendedControl/v1/main/setPower?power=on

    über die JSON Schnittstelle:
    /YamahaExtendedControl/v1/main/setPower?power=on
    /YamahaExtendedControl/v1/main/setPower?power=standby
    /YamahaExtendedControl/v1/main/setMute?enable=false
    /YamahaExtendedControl/v1/netusb/getPlayInfo

    Könnte man das Script so anpassen, „wenn ein Anruf, dann führe http:/IP-Receiver//YamahaExtendedControl/v1/main/setPower?power=off aus und beim Telefonatende http:/IP-Receiver//YamahaExtendedControl/v1/main/setPower?power=on

          • ja, habe ein VD erstellt… als IP die Musiccastkomponente und Port 80. 2 Button eingefügt (ON und OFF).

            nur wie bekomme ich nun z.b. den Button „ON“ dies zugeordnet: „http:/192.168.178.66/YamahaExtendedControl/v1/main/setPower?power=on“

          • Auf unserer Seite gibt es genügend Beispiele, wie du so ein VD erstellst. Schau dir am Besten mal den Artikel zum VU+ an.

            Solltest du es nicht hinbekommen, dann mach ein neues Thema im Forum auf, das passt hier nicht in die Kommentare ;)

    • Habe es soweit geschafft das das VU mir eine Nachricht anzeigt wenn es an der fritzbox klingelt. dazu habe ich im VD der fritzbox noch einen Call zum VU+ geschrieben.

      Das ist der Aufruf im VU+ VD dort ist ein extra button.

      local selfId = fibaro:getSelfId();
      local ip = fibaro:get(selfId, „IPAddress“)
      local url = „/web/message?text=Test%20Fritzbox%20!&type=3“
      local ws = Net.FHttp(ip, 80)
      local resp = ws:GET(url)
      fibaro:debug(resp);

      Jetzt muss ja aber die Feste Nachricht „Test Fritzbox“ durch die GV „FritzBoxTelNr“ irgendwie ersetzt werden. Angelegt habe ich diese auch die Telefonnummern werden auch eingeschrieben.

  • Hallo,

    super Idee und genau das richtige für meine ganzen Sonos Lautsprecher. Leider bekomme ich es nur nicht zum laufen. FritzBox VD ist installiert und bei Anruf zeigt es mir auch Nummer und Uhrzeit an. Starte ich nun die Szene legt er keine GVs an (die vom SonosCommander hatte ich schon von „früher“) und spuckt folgendes aus: [DEBUG] 20:48:29: line 29: attempt to concatenate a nil value

    Ist es normal, dass die Nummer etc im FritzBox VD nach einer Weile verschwinden?

    Danke für eure Hilfe :)

  • Kurze Frage noch, wie bekomme ich mehrere Sonos Lautsprecher mit der Szene verbunden? Einfach nach dem ersten SonosCommander ein „,“ und dann die ID des zweiten?

    • Hi,
      das wird er so nicht akzeptieren.
      Da müsstest Du ein Array draus machen und dies dann in einer Schleife abarbeiten lassen.

      Oder einfach nach Zeile 47 bzw. 52 ein weiteres:
      fibaro:call(SonosCommander2, „pressButton“, „2“) — Music-Button vom Commander
      einfügen.
      Entweder statt „SonosCommander2“ direkt die ID eintragen oder dies als lokale Var definieren.

      VG Hoggle

  • Hallo,
    woran kann es liegen, dass meine Sonos-Lautsprecher nicht leiser gemacht werden.
    Die Kopplung mit der Fritz!Box und die Ansagen funktionieren super, nur der Punkt mit „Sonos leiser“ nicht.
    Auch die debugs (Zeile 59-70) werden nicht angezeigt.

    VG
    Peter

  • Mein lieber Scholli,
    Ich vergucke mich immer mehr in dieses System.
    Bin im Besitz von netatmo und ip Cams von Dlink. Nun bin ich auf der Suche nach dem weiteren. Ich denke fibaro ist da jetzt ganz weit vorne.

  • Hi Hoggle,

    bin endlich dazu gekommen, Dein Script umzusetzen. Super! Vielen Dank!

    Habe das Sonos VD von Krikroff verwendet und lass die Ansagen über TTS machen, da ich irgendwie immer Probleme mit den lokalen Pfaden hatte.
    Dauert zwar eine Sekunde länger, dafür kann ich das TTS in vielen Szenen einsetzen. Fülle einfach je nach anrufender Nummer eine lokale Variable mit dem Text und lass das dann am Ende abspielen.
    (https://www.domotique-fibaro.fr/topic/616-fibaro-hc2-vd-sonos-remote-t%C3%A3%C2%A9l%C3%A3%C2%A9commande-pour-diffuseur-sonos/)

    LG TT

  • Hallo,

    bei mir werden die Variablen nicht erstellt?!

    Zu dem erhalte ich folgende Meldung:

    [DEBUG] 12:49:54: nil
    [DEBUG] 12:49:54: line 29: attempt to concatenate a nil value

  • Hallo,

    die Szene startet jetzt und das läuft auch. Ich erhalte auch eine Push Meldung auf das Smartphone. Nur leider funktioniert die Ansage nicht :(

    Ich nutze als VD das Script von Krikroff, kann es sein, das ich das dann anders programmieren muss?! Schon mal vielen Dank!

  • Hallo,

    also erstmal besten Dank für die Anleitung.
    Habe das Skript getestet und das leiserstellen der Sonos Boxen klappt bei mir super.

    Habe allerdings zwei Probleme:

    1. Fehlermeldung beim debuggen: API: Not found

    2. Wie muss denn die Url der NAS aussehen, wenn es in einem Unterordner ist?
    Brauche ich ein Login/Passwort, oder kann ich das irgendwo abschalten?

    Besten Dank schonmal!
    Frank

  • Hallo,

    Erstmal besten Dank für die Anleitung!

    Bin Neuling/Wiedereinsteiger beim programmieren… und so gibt es zwei Probleme bzw. Fragen:

    1. ich bekomme bei Debüt folgende Fehlermeldung beim Anruf:
    API: Not found

    2. irgendwie scheint was mit dem Pfad fürs fritzNAS nicht zu stimmen… wie muss der den aufgebaut sein?
    Benötige ich den eine Freigabe/Nutzer/Passwort?

    Besten Dank!

Gib deinen Senf dazu!