Telefonanrufe in Home Assistent erfassen und verarbeiten
Worum geht es?
Die Telefonanrufe auf das Festnetz sollen erfasst und in Home Assistant verarbeitet werden können:
- Rückwärtssuche nach dem Namen, wenn nicht im lokalen Telefonbuch
- Anzeige auf Matrixdisplay
- Logfile aller Anrufe
- Spezielle Anrufbehandlung von besonderen Nummern in der Nacht (Notruferkennung)
AVM Fritz!Box Call Monitor
Die Anrufe auf das Festnetz werden von einer Fritzbox entgegengenommen. Deshalb ist die
AVM FRITZ!Box Call Monitor - Integration notwendig.
Diese Integration stellt einen Sensor bereit, der bei mir
sensor.fritz_box_5590_fiber_call_monitor_telefonbuch
heisst und einerseits die vier Zustände
-
ringing
-
dialing
-
talking
-
idle
kennt und andererseits als Attribute
-
to
-
to_name
-
from
-
from_name
zur Verfügung stellt, abhängig davon, ob ein Anruf getätigt oder empfangen wird.
Name der Gegenstelle rausfinden
Letztendlich hätte ich gerne einen Namen der Gegenstelle. Entweder die Fritzbox liefert bereits einen Namen, dann ist alles gut. Wenn aber die Fritzbox nur eine Nummer liefert, dann soll Home Assistent bei tel.search.ch eine Rückwärtssuche durchführen und den Namen im Telefonbuch suchen.
Aktuelles Skript ohne tel.search.ch - Abfrage (13.11.23)
alias: anrufMonitor_setzeLetztenAnruf
description: Schreibt Anrufstring in eine Variable, wenn Telefon klingelt
trigger:
- platform: state
entity_id: sensor.fritz_box_5590_fiber_call_monitor_telefonbuch
to: ringing
condition: []
action:
- service: input_text.set_value
target:
entity_id: input_text.lastcall
data:
value: >-
{% if
state_attr("sensor.fritz_box_5590_fiber_call_monitor_telefonbuch","from_name")
!= 'unknown' %}
{{ state_attr("sensor.fritz_box_5590_fiber_call_monitor_telefonbuch","from_name") }}
{% else %}
{{ state_attr("sensor.fritz_box_5590_fiber_call_monitor_telefonbuch", "from") }}
{% endif %}
- service: input_boolean.turn_on
target:
entity_id: input_boolean.ulanzi_anrufanzeige
- wait_for_trigger:
- platform: state
entity_id:
- sensor.fritz_box_5590_fiber_call_monitor_telefonbuch
to: idle
- service: input_boolean.turn_off
target:
entity_id: input_boolean.ulanzi_anrufanzeige
mode: single
Auf dem Weg zur automatischen Abfrage von tel.search.ch bei unbekannten Nummern
- RestCommand in Home Assistant ignoriert die Antwort des Servers, ist also nicht brauchbar
- Stattdessen RESTful Sensor verwenden und das =scan_interval_ absurd hoch stellen
- Dokumentation des API von tel.search.ch (neu kein API-Key mehr notwendig)
- Unter https://xmltodict-debugger.glitch.me/ kann man sich XML in JSON umwandeln lassen, so wie das bei einem RESTful-Sensor geschieht, wenn XML geliefert wird.
RESTful-Sensor der tel.search.ch API befragt und Namen zurückgibt
sensor
- platform: rest
method: GET
resource_template: https://search.ch/tel/api/?was={{states('input_text.lastcall') }}
name: auskunft
scan_interval: 864000
value_template: "{{ value_json['feed']['entry']['title']['#text'] }}"