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.

Hinterlasse einen Kommentar

18 Kommentare auf "Anrufe als Auslöser für Aktionen"

Benachrichtige mich zu:
avatar
Fotos und Bilder
 
 
 
sonstiges Dateiformat
 
 
 
Sortiert nach:   neuste | älteste | beste Bewertung
Thomas
Gast
Thomas

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?

Thomas
Gast
Thomas

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.

Thomas
Gast
Thomas

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.

Christian
Gast
Christian
Hallo Leute, erstmal danke für dieses wunderbare Tutorial! Ich habe die o.a. Lösung etwas adaptiert. Bei mir sagt einer meiner Sonos-Lautsprecher „Das Telefon klingelt“. Was natürlich ziemlich cool wäre, ist ein notify, der dann erstmal alle Sonos gruppiert, dann sagt „Anruf von $name“ und danach die zuvor verwende Gruppierung inkl. Lautstärke und ggf. Wiedergabe widerherstellt. Da ich noch neu im Thema FHEM bin, ist das noch ne Nummer zu hoch für mich. Kann mir hier jemand helfen? Anrufliste:event:.ring set Sonos_Arbeitszimmer Speak 40 de Das Telefon klingelt Ich verwende FHEM seit wenigen Tagen auf einem RPi3 und arbeite mich langsam in… weiterlesen »
thomas
Gast
thomas

Hallo Daniel.

Vielen Dank für die Anleitung. Läuft alles wie gewünscht.
Kleine Anmerkung für Alle, die ihr Licht per wifilight statt milight eingebunden haben.
In meinem Fall ein RGBW-Stripe mit LD382a.
Hier funktioniert rgb (Kleingeschrieben) nicht, es muss RGB heissen.

Also:
if($name eq „Daniel Waschto“) {fhem („set WZ_Haengelampe RGB FF0000“)};;“

Viele Grüße und freu mich auf neue Projekte.

thomas

Christian Hirsch
Gast
Christian Hirsch
Hey Daniel,   vielen, vielen Dank für deine sehr ausführliche Antwort zu meiner Frage. Ich hatte gar nicht gemerkt, dass du geantwortet hast, bis ich gerade mal wieder zufällig auf deiner Seite war.   Ich hab mittlerweile einen brauchbaren Stand. Der sieht im Wesentlichen so aus: CallMonitor:event:.ring { my $name = (ReadingsVal(„CallMonitor“, „external_name“, „“)); if ($name ne „“) { fhem(„set Sonos_Arbeitszimmer,Sonos_Wohnzimmer,Sonos_Bad,Sonos_Kueche Speak 50 de $name ruft an“); } } Das einzige Problem ist nun: sind die Geräte vorher gruppiert,  läuft alles supi. Sind die vorher allerdings nicht gruppiert, quatschen mich alle Geräte im Abstand von 0,5-2,5 Sekunden gleichzeitig voll. Zur… weiterlesen »
Christian
Gast
Christian
Danke für die schnelle Antwort. Mittlerweile tendiere ehger zu Alternative zwei. Ich werde mir wahrscheinlich nen zusätzlichen Sonos anschaffen, den ich im Flur platziere. Den will ich dann dafür verwenden und den vllt. per FHEM stets aus der Gruppierung mit den anderen Lautsprechern raushalten. Muss ich mal sehen. Eben hab ich ne weitere HUE-Lampe zu meiner HUEBridge hinzugefügt. Dann in Fhem gepackt und entsprechend in den Homekit – Raum, damit ich auch über siri usw. steuern kann. –> Lampe da, sagt aber „keine Antwort“. RPi3 neu gestartet, fhem neu gestartet, homebridge neugestartet. Immer das gleiche. Homekit Überbrückung aufgehoben und neu… weiterlesen »
Frank
Gast
Frank
Hallo zusammen ich nutze folgenden Hardware XCSOURCE Magic UFO-WiFi LED-Controller DC12-24 V, LD382 https://www.amazon.de/gp/product/B00Q7STR4E/ref=oh_aui_detailpage_o07_s00?ie=UTF8&psc=1 Das Problem ist das die Farbe die ich vorher eingestellt hatte nicht mehr aus dem Backup wiederhergestellt wird Folgendes steht im Log class="log">2017.01.08 00:11:41 3: TV_LED set HSV 116, 83, 100 with ramp: 0, flags: 2017.01.08 00:11:54 3: TV_LED set HSV 8, 100, 100 with ramp: 0, flags: 2017.01.08 00:11:54 3: Couch set HSV 8, 100, 100 with ramp: 0, flags: 2017.01.08 00:11:54 3: set TV_LED brightness 100 : unknown command (brightness): choose one of on off dim dimup dimdown HSV RGB hue redye saturation tinge… weiterlesen »
wpDiscuz