3 Minuten
Homeassistant, FritzBox und Anrufbenachrichtigung per Push-Nachricht

FritzBox-Router aus dem Hause AVM sind speziell in Deutschland sehr beliebt und aus Erfahrung eine gute Wahl. Neben zahlreichen Funktionen wie einem NAS, Netzwerkstreaming, Anrufbeantworter, etc. stellt eine wichtige Kernfunktion die Telefonie dar. Diese Anrufinformationen können mit der offiziellen FritzBox Callmonitor Integration in Homeassistant integriert und entsprechend automatisiert werden. Somit ist Homeassistant fähig zu erkennen, ob sich das Telefon gerade im Leerlauf, im Telefonat oder im Zustand des Klingelns oder wählens befindet.
Im Folgenden möchte ich erläutern, wie man sich automatisch eine Push-Nachricht mit einem beliebigen Notify-Service senden lassen kann, wenn die Fritzbox einen Anruf empfangen hat, der jedoch nicht entgegen genommen wurde, bspw. wenn man außer Haus ist. Hierzu wird vorrausgesetzt, dass die Fritzbox bereits erfolgreich in Homeassistant integriert wurde.
Theorie zum Callmonitor
Nach der Integration der Fritzbox steht eine Sensor zur Verfügung, der die folgenden states ausgibt:
idle
: Die Fritzbox befindet sich im Leerlauf. Es wird nicht telefoniert, gewählt oder ein Telefonat geführt.ringing
: Die Fritzbox klingelt. Ein Anrufer wartet auf die Abnahme des Hörers.talking
: Ein aktives Telefonat wird geführt.dialing
: Ein Telefonat wird aufgebaut und die ausgehende Nummer gewählt.
Der Punkt dialing
kann für das Vorhaben des Erhalts einer Pushnachricht vernachlässigt werden, da dies nicht der Fall ist, wenn man sich außer Haus befindet.
Wer denkt, dass nun der einfachste Weg wäre eine Automation zu schreiben, die den State des Callmonitors überwacht und einfach die Daten des Anrufers (Name, Nummer, Uhrzeit, Datum) per Push-Nachricht sendet, ist leider auf dem Holzweg. Diese Daten stehen nämlich nur zur Verfügung, wenn der Callmonitor den State ringing
hat, nicht aber bei idle
.
Es muss also ein Zwischenschritt erfolgen, der die Anruferdaten zwischenspeichert und wieder zur Verfügung stellt, wenn der State des Callmonitors von ringing
auf idle
wechselt. Hierfür greife ich auf die Custom Component mit dem Namen home-assistant-variables zurück
Variablen als Zwischenspeicher einrichten
Nachdem die neue Variablen-Component aus HACS installiert wurde, müssen folgende Einträge in der configuration.yaml
erfolgen. Diese speichern die relevanten Informationen des Anrufers:
var:
callmon_name:
restore: true
icon: mdi:phone-classic
friendly_name: 'Anrufername'
value_template: '{{ states.sensor.callmon.attributes.from_name }}'
callmon_number:
restore: true
icon: mdi:card-account-phone
friendly_name: 'Anrufernummer'
value_template: '{{ states.sensor.callmon.attributes.from }}'
callmon_time:
restore: true
icon: mdi:clock-time-three-outline
friendly_name: 'Anrufzeit'
value_template: '{{ now().strftime("%H:%M") }}'
callmon_date:
restore: true
icon: mdi:calendar-today
friendly_name: 'Anrufdatum'
value_template: '{{ now().strftime("%d.%m.%Y") }}'
Automation, um Variblen zu füllen
Diese Automation aktualisiert die zuvor definierten value_templates
der Variablen und speicher die relevanten Informationen über den Verpassten Anruf:
- alias: festnetz_set_caller_info_variable
initial_state: True
trigger:
- entity_id: sensor.callmon
platform: state
to: 'ringing'
action:
- service: var.update
data:
entity_id:
- var.callmon_name
- var.callmon_number
- var.callmon_time
- var.callmon_date
Automation für Push-Benachrichtigung
Jetzt muss nur noch eine Automation erstellt werden, die schaut wann der Callmonitor von ringing
auf idle
wechselt, anschließend die Anruferinformationen aus den Variablen ausliest und diese per Push-Nachricht sendet. Als Beispiel nehme ich mein Smartphone auf dem die offizielle Homeassitant Android App läuft und die über die Mobile Integration eingebunden ist. Es kann jedoch jeder beliebige Notification Service, wie beispielweise Slack, Jabber oder Matrix verwendet werden.
- alias: Festnetzbenachrichtigung Hass App
initial_state: True
trigger:
- entity_id: sensor.callmon
platform: state
from: ringing
to: idle
action:
- service: notify.mobile_app_mizar
data:
title: "Festnetzanruf 📞"
message: >
{{ states.var.callmon_name.state }} ({{ states.var.callmon_number.state }})
hat am {{ states.var.callmon_date.state }} um {{ states.var.callmon_time.state }}h angerufen.
Diese Automation sendet eine Nachricht mit dem Schema: Horst (0174-123456) hat am 23.05.2020 um 23:42h angerufen.