ANZEIGE

Anruferansage – Wer ruft an?

wer ruft an
Bild: CC0 / Gerd Altmann

Wer kennt es nicht: Man sitzt gemütlich auf der Couch und das Telefon klingelt. Aber ist es wieder nur ein nerviger Werbeanruf und das Aufstehen lohnt sich sowieso nicht, oder ruft jemand aus der Verwandtschaft an?! Bevor man aufsteht, weiß man zukünftig Bescheid, da mithilfe von Sonos und der FritzBox eine Anruferansage möglich ist. Wie das funktioniert, möchte ich euch nachfolgend Schritt für Schritt erklären.

Die Voraussetzungen für die Anruferansage

Damit die Anruferansage funktioniert, werden 3 wesentliche Punkte benötigt. Ein Sonos Lautsprecher (oder anderer, über FHEM steuerbarer Lautsprecher), eine FritzBox und FHEM.

Angebot Sonos Play:1 Smart Speaker (Kompakter und...
Angebot AVM FRITZ!Box 7590 WLAN AC+N Router...

Letzte Aktualisierung am 29.03.2024 um 06:23 Uhr | Werbung | Bilder: Amazon Product Advertising API

Wer zu diesem Zeitpunkt noch keine lauffähige FHEM Installation auf einem Raspberry Pi besitzt, der kann sie sich Step-by-Step nach unserer Anleitung installieren: Howto: FHEM Server auf Raspberry einrichten

FritzBox und FHEM verbinden

Damit die FritzBox gleich mit FHEM kommunizieren kann, müssen diese vorab miteinander verbunden werden. Dazu ist es notwendig, weitere Module über SSH auf dem Raspberry Pi zu installieren. Also per SSH eingeloggt und folgende Pakete nachinstallieren:

sudo apt-get install libjson-perl libwww-perl libsoap-lite-perl libjson-xs-perl

Nach der Installation wird in FHEM die FritzBox definiert. Dazu wird der Code in die obere Zeile eingefügt und mit Enter bestätigt. Ich habe meine Definition als fritzbox bezeichnet. Hier ist ein beliebiger Name möglich.

define fritzbox FRITZBOX
fhem fritzbox define

Wenn die FritzBox nicht unter der Standard-IP erreichbar ist, muss noch die IP-Adresse entsprechend konfiguriert werden. Sollte sie über fritz.box erreichbar sein, ist dieser Schritt nicht notwendig.

define fritzbox FRITZBOX IP-ADRESSE

Ist die Weboberfläche der FritzBox abgesichert (durch Passwort und/oder Benutzernamen), so müssen auch diese Daten eingefügt werden.

attr fritzbox boxUser Benutzername
set fritzbox password Passwort

Ist die Oberfläche nur durch ein Passwort gesichert, genügt der password set Befehl.

Damit die FritzBox auch Kommandos von FHEM entgegen nimmt, wird die TR064 Schnittstelle aktiviert.

attr fritzbox allowTR064Command 1

Callmonitor aktivieren

Grundsätzlich sei zu sagen: Möchte man anhand der eingehenden Rufnummer filtern, benötigt man den Callmonitor nicht zwingend. Nutzt man hingegen das interne Telefonbuch der FritzBox, da man auch bspw. das FritzFon besitzt, empfiehlt es sich den Callmonitor zu aktivieren, da dann der Name des Anrufers in FHEM angezeigt wird.

Also zunächst den Callmonitor definieren. Die IP-Adresse wird entsprechend angepasst, die Standard-IP ist die 192.168.178.1. Der Name Telefon kann wieder beliebig gewählt werden.

define Telefon FB_CALLMONITOR 10.0.0.1

Nach einem Testanruf auf die eigene Rufnummer sollte nun schon entsprechend die Rufnummer angezeigt werden.

Soll nun, wie bei mir, der Anrufername des internen Telefonbuches angezeigt werden, muss nun das remote-phonebook aktiviert werden. Dazu die beiden Befehle nacheinander absetzen.

attr Telefon fritzbox-remote-phonebook 1
attr Telefon fritzbox-remote-phonebook-via tr064

Wie bereits schon beim Verbinden der FritzBox muss nun noch das Passwort und/oder der Username angegeben werden.

set Telefon Password PASSWORT
set Telefon fritzbox-user USER

Anruferansage

Im letzten Schritt muss nun noch das notify definiert werden. Hierzu habe ich folgenden Code zusammengestellt, sodass ich über meine Sonos Lautsprecher eine Ausgabe erhalte.

define Anruferansage notify Telefon:event:.ring {\
 my $name=(ReadingsVal("Telefon","external_name",0));;;;\
 if($name eq "Michael") {fhem ("set Sonos_Wohnzimmer Speak 30 de |notify| Michael ruft an.")};;;;\
 if($name eq "Person1") {fhem ("set Sonos_Wohnzimmer Speak 30 de |notify| Person1 ruft an.")};;;;\
 if($name eq "Person2") {fhem ("set Sonos_Wohnzimmer Speak 30 de |notify| Person2 ruft an.")};;;;\
 if($name eq "Person3") {fhem ("set Sonos_Wohnzimmer Speak 30 de |notify| Person3 ruft an.")};;;;\
 if($name eq "Person4") {fhem ("set Sonos_Wohnzimmer Speak 30 de |notify| Person4 ruft an.")}}

Man könnte natürlich auch andere Dinge dadurch schalten, hier kann man seinen Ideen freien Lauf lassen. Es könnte auch eine Lampe ein- und ausgeschaltet werden, die Farbe ändern und und und.

Demovideo

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Angebot Sonos Play:1 Smart Speaker (Kompakter und...
Angebot AVM FRITZ!Box 7590 WLAN AC+N Router...

Letzte Aktualisierung am 29.03.2024 um 06:23 Uhr | Werbung | Bilder: Amazon Product Advertising API

Klicke auf einen Stern um eine Bewertung abzugeben!

Durchschnittsbewertung 0 / 5. Bewertungen: 0

Es tut uns leid, dass dieser Beitrag für dich nicht hilfreich war!

Lassen Sie uns diesen Beitrag verbessern!

Wie können wir den Beitrag verbessern?

5 Gedanken zu „Anruferansage – Wer ruft an?“

5 Kommentare

  1. Moin,
    danke für die tolle Idee, da wäre ich so nicht drauf gekommen. Ich habe den Aufruf etwas abgeändert (Befehlsteil des meines DOIF), so dass der Name nun aus dem Telefonbuch gelesen wird. Das spart einige Zeilen:

    my $anrufer = (ReadingsVal(„CallMonitor“,“external_name“,““));
    if ($anrufer eq „unknown“) {$anrufer = „Unbekannter Anrufer“};
    my $ansage = $anrufer . “ ruft an.“;
    fhem („set Sonos_Wintergarten Speak 25 de |notify| „.$ansage)};

    Viele Grüße
    Michael

    • Hallo Michael,

      danke für das Teilen deines Codes 🙂

      Viele Grüße
      Michael

    • Ein kleiner Fehler hat sich da eingeschlichen, sorry :-/ die geschweifte Klammer am Ende der letzten Zeile muss weg… heißt korrekt so:

      fhem (“set Sonos_Wintergarten Speak 25 de |notify| “.$ansage);

  2. Hallo Michael,
    und das funktioniert?
    Wie erfolgt denn die Umsetzung des Textes (Namen im Telefonbuch (Text)) in Ansage (Audio) auf dem SONOS-Lautsprecher?
    Bisher kannte ich es so, daß man dafür ein TTS benötigt.
    Ich gebe allerdings zu, daß ich Einsteiger in FHEM bin und nachdem die „Grundlagen“ funktionierten, wollte ich mich an dieses Orojekt trauen, da mein Telefon eine Etage höher steht und ich es abends im Erdgeschoß oft nicht höre.
    Jedenfalls habe ich Dein Projekt nachgebaut und es funktioniert- nicht.
    Einfach so, ohne Fehlerausgabe!
    Was mache (denke) ich falsch?
    Besten Dank!
    Jürgen

    • Hallo Jürgen,

      so aus dem Stegreif festzustellen, was du falsch machst, ist schwierig.
      Wichtig ist, die notwendigen Pakete per SSH auf dem Raspberry Pi nach zu installieren: sudo apt-get install libjson-perl libwww-perl libsoap-lite-perl libjson-xs-perl
      Ansonsten geht schonmal gar nichts. Geh am besten die Anleitung nochmal Schritt für Schritt durch, damit du sicherstellst, nichts vergessen zu haben. Genau wie ich es beschrieben habe, funktioniert es bei mir.

      Viele Grüße
      Michael

Schreibe einen Kommentar

OwnSmartHome.de