Anrufe als Auslöser für Aktionen

Nachdem man die FritzBox mit FHEM verbunden hat und erste RGB-Lampen definiert hat, liegt es doch nahe, die Lampen abhängig von Anrufe zu schalten. Zum Beispiel die Farbe ändern sobald eine bestimmte Nummer anruft. In diesem Beitrag erkläre ich euch, wie ihr die Farbe einer RGB-Lampe je nach Name des eingehenden Anrufers ändert.

Abhängigkeiten lassen sich am einfachsten mit if-Abfragen realisieren. Diese lassen sich in FHEM in einem „notify“ definieren. Mit „notifys“ lassen sich demnach komplexe Logikfunktionen in FHEM abbilden. Dies machen wir uns zu Nutzen und erstellen uns für das Ereignis eines ankommenden Anrufes und für das Beenden eines Anrufes ein Notify.

Voraussetzung

Damit Anrufe als ein Event angezeigt werden, ist es notwendig, dass die FritzBox mit FHEM verbunden ist. In meinem Beitrag dazu kann man nachlesen wir dies funktioniert. Zusätzlich wird das Hilfsmodul „CallMonitor“ benötigt. Erst dieses Modul macht es möglich, dass Anrufe in FHEM angezeigt werden.

Im CallMonitor lässt sich nun die Anrufliste der FritzBox auslesen.

CallMonitor Readings

Man erhält als Reading die benötigten Daten „event“ und „external_name“. Je nach Wunsch kann man die nachfolgenden Notifys auch mit anderen Readings erstellen. Zum Beispiel „external_number“.  Da ich jedoch das interne Telefonbuch der FritzBox eingelesen habe, verwende ich die Namen für die Abfrage.

Erstellen der Notifys

Zur besseren Verständnis erstellen wir uns das Notify „TelefonAN“ zunächst ohne direkte Definition :

Die Definition geben wir nun über den Definition-Editor auf der Detailseite des Notifys.

Licht(farbe) je nach Anrufer ändern

Notify Definition

Das Notify reagiert auf das Event „ring“ vom „CallMonitor“. Wurde das Hilfsmodul „CallMonitor“ mit einem anderen Namen definiert muss dieser natürlich angepasst werden. Danach wird die Variable „$name“ mit dem Namen des Anrufers erstellt. Nun beginnen die eigentlichen Abfragen. Zuerst wird abgefragt ob die Lampe überhaupt an ist (Helligkeit größer 0). Ist dies nicht der Fall, wird sie bei Anrufe auch nicht angeschaltet. Danach wird für die gewünschten Anrufer je eine if-Abfrage erstellt. Je nach Name des Anrufers wird dann  die Farbe der RGB-Lampe „WZ_Haengelampe“ geändert. Man kann so für jeden Anrufer eine extra Farbe definieren. Nachdem die Farbe geändert wurde, wird noch die Helligkeit auf 100% gestellt.

Nun wird das Notify für die Beendung des Gesprächs erstellt.

Hier reagiert das Notify auf das Event „disconnect“. Über den DEF-Editor wird nun die eigentliche Definition hinzugefügt.

Auch hier wird zu erst überprüft, ob die Lampe eingeschaltet ist. Ist dies der Fall, wird die Lampe auf weiß mit einer Helligkeit von 100% gestellt.

Die oben beschrieben Lösung ist natürlich nur eine Anregung. Der Fantasie sind keine Grenzen gesetzt. Aber ich hoffe ich konnte euch die Grundidee näher bringen und eine kleine Anregung schaffen.

Update 07.03.2016: Farbe und Helligkeit „merken“

Ich persönlich habe FHEM so konfiguriert, dass eine RGB-Lampe im Wohnzimmer und in der Küche auf Anrufe reagieren. Nach ein paar Tagen Einsatz der oben beschriebenen Konfiguration, habe ich mich für  eine Optimierung entschieden.

Bevor die beiden RGB-Lampen bei einem eingehende Anruf geschaltet werden, speichere ich die aktuelle Farbe und Helligkeit ab, um die Lampen nach dem Anruf wieder auf diese zurück zusetzen.

Dazu habe ich mir ein Dummy definiert, welche die Backup-Werte als Readings bekommt:

RGBbackup

Damit die Werte auch abgespeichert werden, müssen die beiden Notifys angepasst werden. Dies geschieht einfach über den DEF-Editor:

TelefonAN:

Als Bedingung, dass die Lampen geschaltet werden, habe ich mein Hauptlicht im Wohnzimmer genommen, welches durch eine PCA301-Steckdose geschaltet wird. Ist diese Lampe an, kann davon ausgegangen werden, dass es draußen dunkel ist. Im oberen Teil werden die Farb- und Helligkeitswerte der Lampen in RGBbackup abgespeichert.

TelefonAUS:

Die Backup-Werte werden in Variablen geladen und danach die Lampen entsprechend eingestellt. Sollte die Lampe vorher aus gewesen sein (Helligkeit = 0), wird die Lampe wider ausgeschaltet.

Text2Speech – Sprachausgabe bei Anrufen

Neben der Möglichkeit Lampen bei eingehenden Anrufen zu schalten, kann man natürlich auch eine Sprachausgabe starten. So lässt sich zum Beispiel der Name des Anrufers ausgeben.

In diesem Kapitel erkläre ich euch, wie ihr eine solche Sprachausgabe einrichtet.

Voraussetzung für die Sprachausgabe ist das Einrichten des „Text2Speech-Moduls“ unter FHEM. Mehr dazu in meinem Blog-Beitrag.

Wie bei der Lampensteuerung ist hier auch hier ein Notify nötig.

Über den Definition-Editor kann man nun das Notify anpassen:

Sobald nun ein Anrufer mit den Namen „Daniel Waschto“ oder „Max Musterman“ anruft, dann wird über die Sprachausgabe folgendes ausgegeben:

Voraussetzung ist natürlich, dass der CallMonitor eingerichtet wurde und die Telefonnummern entsprechend im Telefonbuch stehen.

9 Kommentare zu “Anrufe als Auslöser für Aktionen

  1. Top Artikel, keine Frage. Das mit Fritzbox & Co. klappt alles bestens. Vielen Dank dafür.
    Jetzt aber eine Frage – ich brauche das Script nicht in Verbindung mit Licht(farben sondern mit Text2Speech. Folgenden Code habe ich eingefügt:
    CallMonitor:event:.ring {
    my $name=(ReadingsVal("CallMonitor","external_name",0));;
    if($name eq "Tom Handy") {fhem ("set MyTTS tts :gong: $name ruft an. Geht mal einer ran. $name wartet.")};;
    if($name eq "Tommi Handy") {fhem ("set MyTTS tts :gong: $name ruft an. Geht mal einer ran. $name wartet.")}}

    Wo ist hier der Wurm drin? Ich muss dazu sagen, ich bin Neuling bei FHEM. Kannst Du mir hier vielleicht weiterhelfen, auch wenn ich Deine Arbeit hier zweckentfremde?

    • Hallo Thomas,

      Danke für das Lob. Ich hab das „Text2Speech-Modul“ noch nicht im Einsatz. Ich werden es mal auf meiner Testumgebung versuchen zum Laufen zu bringen. Heute Abend kann ich dann hoffentlich mehr Infos geben, wie man es am besten umsetzen kann. Also bitte noch etwas Geduld 😉
      Gruß Daniel

    • Danke für die rasche Antwort…. ich warte gerne. Denn ich komm hier nicht mehr weiter.

    • Hallo, habe es auf meiner Testumgebung ausprobiert. Es ging ohne Probleme. Habe das Notify genau wie du definiert. Bis auf das „:gong:“ hat alles geklappt. Habe den Beitrag entsprechend erweitert.

      Sollte es trotzdem nicht funktionieren kann es vielleicht an der Konfiguration der Audioausgabe liegen. Über „sudo raspi-config“ und dann unter „9-Advance Options“ / „A8-Audio“ kann ausgewählt werden, über welchen Ausgang die Soundausgabe erfolgen soll. Lass mich wissen, ob alles geklappt hat, sonst suchen wir weiter nach möglichen Fehlern 😉
      Gruß Daniel

  2. Auch die Einstellungen in der „sudo raspi-config“ überprüft, da passt soweit alles. FHEM macht das… Anruf und er wird entsprechend gemeldet. Aber nur einmal….. ein wiederholter Anruf bringt nur den Gong-Ton, aber keine Sprache mehr hinterher. Es macht den Eindruck, dass sich irgendetwas aufhängt, verschluckt oder was auch immer.

    Auch ein Neustart behebt das nicht…. anscheinend funktioniert das nur sporatisch. Geht… geht nicht. Weiß der Geier warum.

    • Komisch. Einzig was ich anders hab ist der verkürzte Text und halt ohne diesen Gong, da dieser bei mir nur als „template gong“ ausgegeben wird. Ansonsten wird der Text wie gewünscht ausgegeben, auch bei wiederholten Anrufen. Vielleicht liegt es also an dem Gong, dass wiederholte Anrufe unterdrückt werden. Du kannst ja mal testweise den Text verkürzen und den Gong rausnehmen.

  3. Hm, hab den Gong nun entfernt. shutdown/restart durchgeführt. Gleiches Phänomen. Es wird nichts angesagt. Das Ding hier macht mich noch kirre.

    Das mit dem Gong hatte ich deswegen eingebaut, weil ich es persönlich besser finde wenn vor einer Ansage – welche auch immer – ein Gong kommt um die Aufmerksamkeit auf die Ansage zu lenken. Geht – Geht, geht nicht.

    Es macht jedoch den Eindruck, dass es daran auch nicht liegt, jetzt nachdem der Gong entfernt wurde und TTS nur noch Text hat…. eigentlich.

    • Mh…aber eine Ausgabe unabhängig von einem Anruf funktioniert?

      set MyTTS tts Dies ist ein Test

      Müsste ja, wenn er beim ersten Anruf etwas „sagt“. Da kann ich dir sonst leider auch nicht weiter helfen. Wie gesagt, ich habe es wie im Beitrag beschrieben eingerichtet und es funktioniert auf anhieb. Habe nochmal ausprobiert, auch längere Texte werden problemlos ausgegeben, auch bei einem wiederholten Anruf.

      Was ich dir noch empfehlen kann ist das FHEM-Forum zum Text2Speech-Modul. Vielleicht kann dir ja dort einer weiterhelfen.

      Gruß Daniel

    • Auch wenn wir keine Lösung gefunden haben, trotzdem vielen Dank für Deine Überlegungen und Tipps. Ich werde es schon irgendwie zu rennen bringen. Wie gesagt, schön wäre es, wenn vor einer Sprachmeldung ein akustisches Signal käme. Mal sehen….

      Das mit dem Forum ist einerseits ein guter Tipp. Erfahrungswerte zeigten aber, dass man entweder bewusst überlesen wird oder die pampige Antwort „Lies das Wiki“ bekommt. Wiki schön und gut und auch die Forensuche – nicht zu allen Fragen gibt es dort die passenden Antworten. Das will man Foren aber nicht wahrhaben. Ist leider so.

      Schönes Wochenende Dir.
      Thomas

Schreibe einen Kommentar

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

*