Schon ziemlich nice! Ne Tabelle wäre halt deluxe - vielleicht schaue ich mir das nochmals an ![]()
Hallo,
danke für die tolle Erklärung.
Wie baue ich die Automation so um, das die Anzeige nur bei bestimmten eigenen Rufnummern (to: 08154711 und 08154712) auslöst und etwas in den Helfer schreibt?
Zur Zeit schreibt en bei jeder Nummer, aber ich möchte das etwas nach “Nutzer” trennen.
Viele Grüße Sebastian
Hi Sebastian,
probier mal als neue Condition (bislang gibt es ja keine) in der Automation folgenden Code:
conditions:
- condition: template
value_template: >-
{{ state_attr('sensor.fritz_box_5590_fiber_anrufmonitor_telefonbuch', 'with') in ['08154711', '08154712'] }}
VG Olli
Hallo Olli,
ich probiere es mal aus.
VG Sebastian
@fini Wie kann man den Timestamp und die Grafik einprogrammieren? Ist das dann immernoch ein Text-Helfer? Könntest Du bitte die Automation posten?
Und: Bei mir kommen beim Gespräch immer zwei Einträge: einen fürs “Klingeln” und einen zweiten, wenn ich ans Telefon gehe….
Home Assistant – Telefonbuch‑/Anrufmonitor‑Automation
Diese Automation protokolliert eingehende, ausgehende, verpasste und angenommene Anrufe der FRITZ!Box in Home Assistant. Sie nutzt den fritzbox_callmonitor ‑Sensor und schreibt alle Informationen in Input‑Text‑Felder, die anschließend in Dashboards oder History‑Listen angezeigt werden können.
Voraussetzungen
- FRITZ!Box Callmonitor Integration
Die Integration muss aktiviert sein. Es wird der Sensor benötigt:
sensor.anrufmonitor_telefonbuch
Dieser liefert u. a.:
fromfrom_nametoto_namewithwith_name- Status:
ringing,dialing,talking,idle
Benötigte Helper (Input‑Text)
Unter Einstellungen → Geräte & Dienste → Helfer anlegen:
- Eingehende/ausgehende Nummer
input_text.anruf_nummer
- Anschluss (z. B. Festnetz, DECT‑Mobilteil)
input_text.anruf_anschluss
- Anrufliste (HTML‑fähig)
input_text.anrufliste
Vollständige Automation (komplett, funktionsfähig)
Diese Automation muss in der automations.yaml stehen:
- id: telefonbuch
alias: Telefonbuch
mode: parallel
trigger:
- platform: state
entity_id: sensor.anrufmonitor_telefonbuch
to: ringing
id: eingehend_start
- platform: state
entity_id: sensor.anrufmonitor_telefonbuch
to: dialing
id: ausgehend_start
- platform: state
entity_id: sensor.anrufmonitor_telefonbuch
from: ringing
to: idle
id: verpasst
- platform: state
entity_id: sensor.anrufmonitor_telefonbuch
from: dialing
to: idle
id: ausgehend_nicht_erfolgreich
- platform: state
entity_id: sensor.anrufmonitor_telefonbuch
from: dialing
to: talking
id: ausgehend_gespräch
- platform: state
entity_id: sensor.anrufmonitor_telefonbuch
from: ringing
to: talking
id: eingehend_gespräch
- platform: state
entity_id: sensor.anrufmonitor_telefonbuch
to: idle
id: reset
action:
- choose:
# Eingehender Anruf beginnt → Name aus from_name
- conditions:
- condition: trigger
id: eingehend_start
sequence:
- variables:
nummer: "{{ state_attr('sensor.anrufmonitor_telefonbuch','from') }}"
name: "{{ state_attr('sensor.anrufmonitor_telefonbuch','from_name') }}"
nummer_name: >
{% if name %}{{ nummer }} ({{ name }}){% else %}{{ nummer }}{% endif %}
- service: input_text.set_value
target: { entity_id: input_text.anruf_nummer }
data: { value: "{{ nummer_name }}" }
- service: input_text.set_value
target: { entity_id: input_text.anruf_anschluss }
data: { value: "{{ state_attr('sensor.anrufmonitor_telefonbuch','to') }}" }
# Ausgehender Anruf beginnt → Name aus to_name, Nummer ohne #
- conditions:
- condition: trigger
id: ausgehend_start
sequence:
- variables:
rohnr: "{{ state_attr('sensor.anrufmonitor_telefonbuch','to') }}"
nummer: "{{ rohnr.rstrip('#') }}"
name: "{{ state_attr('sensor.anrufmonitor_telefonbuch','to_name') }}"
nummer_name: >
{% if name %}{{ nummer }} ({{ name }}){% else %}{{ nummer }}{% endif %}
- service: input_text.set_value
target: { entity_id: input_text.anruf_nummer }
data: { value: "{{ nummer_name }}" }
- service: input_text.set_value
target: { entity_id: input_text.anruf_anschluss }
data: { value: "{{ state_attr('sensor.anrufmonitor_telefonbuch','from') }}" }
# Verpasster Anruf → gespeicherter Name
- conditions:
- condition: trigger
id: verpasst
sequence:
- variables:
nummer_name: "{{ states('input_text.anruf_nummer') }}"
to_raw: "{{ states('input_text.anruf_anschluss') }}"
- service: input_text.set_value
target: { entity_id: input_text.anrufliste }
data:
value: >
<font color="#ff1744"><ha-icon icon="mdi:phone-missed"></ha-icon></font>
{{ now().strftime('%d.%m.%Y %H:%M') }} Verpasster Anruf<br>
von {{ nummer_name }} an {{ to_raw }}
# Ausgehend NICHT erfolgreich → dialing → idle ohne talking
- conditions:
- condition: trigger
id: ausgehend_nicht_erfolgreich
- condition: template
value_template: "{{ states('input_text.anruf_nummer') != '' }}"
sequence:
- variables:
nummer_name: "{{ states('input_text.anruf_nummer') }}"
from_raw: "{{ states('input_text.anruf_anschluss') }}"
- service: input_text.set_value
target: { entity_id: input_text.anrufliste }
data:
value: >
<font color="#ffa000"><ha-icon icon="mdi:phone-cancel"></ha-icon></font>
{{ now().strftime('%d.%m.%Y %H:%M') }} Ausgehend NICHT erfolgreich<br>
von {{ from_raw }} an {{ nummer_name }}
# Eingehendes Gespräch → DU hebst ab / AB hebt ab
- conditions:
- condition: trigger
id: eingehend_gespräch
sequence:
- variables:
nummer: "{{ state_attr('sensor.anrufmonitor_telefonbuch','with') }}"
name: "{{ state_attr('sensor.anrufmonitor_telefonbuch','with_name') }}"
nummer_name: >
{% if name %}{{ nummer }} ({{ name }}){% else %}{{ nummer }}{% endif %}
to_raw: "{{ states('input_text.anruf_anschluss') }}"
klingel_dauer: >
{{ (as_timestamp(now()) - as_timestamp(trigger.from_state.last_changed)) | int }}
- choose:
# DU hebst ab (< 15 Sekunden)
- conditions: "{{ klingel_dauer < 15 }}"
sequence:
- service: input_text.set_value
target: { entity_id: input_text.anrufliste }
data:
value: >
<font color="#00c853"><ha-icon icon="mdi:phone-incoming"></ha-icon></font>
{{ now().strftime('%d.%m.%Y %H:%M') }} Gespräch (du hast abgehoben)<br>
von {{ nummer_name }} an {{ to_raw }}
# AB hebt ab (>= 15 Sekunden)
- conditions: "{{ klingel_dauer >= 15 }}"
sequence:
- service: input_text.set_value
target: { entity_id: input_text.anrufliste }
data:
value: >
<font color="#ff1744"><ha-icon icon="mdi:phone-missed"></ha-icon></font>
{{ now().strftime('%d.%m.%Y %H:%M') }} AB hat angenommen<br>
von {{ nummer_name }} an {{ to_raw }}
# Ausgehendes Gespräch → Nummer ohne #
- conditions:
- condition: trigger
id: ausgehend_gespräch
sequence:
- variables:
rohnr: "{{ state_attr('sensor.anrufmonitor_telefonbuch','with') }}"
nummer: "{{ rohnr.rstrip('#') }}"
name: "{{ state_attr('sensor.anrufmonitor_telefonbuch','with_name') }}"
nummer_name: >
{% if name %}{{ nummer }} ({{ name }}){% else %}{{ nummer }}{% endif %}
from_raw: "{{ states('input_text.anruf_anschluss') }}"
- service: input_text.set_value
target: { entity_id: input_text.anrufliste }
data:
value: >
<font color="#00c853"><ha-icon icon="mdi:phone-outgoing"></ha-icon></font>
{{ now().strftime('%d.%m.%Y %H:%M') }} Ausgehendes Gespräch<br>
von {{ from_raw }} an {{ nummer_name }}
# Reset
- conditions:
- condition: trigger
id: reset
sequence:
- service: input_text.set_value
target: { entity_id: input_text.anruf_nummer }
data: { value: "" }
- service: input_text.set_value
target: { entity_id: input_text.anruf_anschluss }
data: { value: "" }
LG Fini
Krass Cool,
Danke. Wie bekomme ich in der Homefeed-Karte noch das Text-Helper Icon vor den Einträgen weg?
show_icon: false
type: custom:home-feed-card
card_id: main_feed
show_empty: false
state_color: false
history_days_back: 5
entities:
- entity: input_text.anrufliste
name: Fritz Box Anrufliste
icon: none
max_history: 10
include_history: true
content_template: "{{state}}"
card_mod:
style: |
ha-card {
opacity: 0.7;
background: var(--ha-card-background, var(--ha-surface-color)) !important;
box-shadow: none !important;
border-radius: 0 !important;
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
Hallo fini,
Ich habe das Script verstanden und es läuft alles tip-top.
jetzt habe ich noch eine letzte Frage.
Ich möchte verschiedene Anruflisten benutzen, je nach dem, welche Rufnummer angerufen wurde.
Ich habe die Idee, das ich es nach den Start-sequenzen einbaue (für jede der 4 folgenden Sequenzen), und zwar möchte ich prüfen, ob die Rufnummer “08154711” oder “08154712” in der “input_text.anruf_anschluss” steht. Wenn ich scripting richtig verstehe ( https://www.home-assistant.io/docs/scripts/#test-a-condition ), dann macht er die sequenz nur weiter, wenn es “true” ist.
Ich glaube es so zu machen:
- conditions:
- condition: trigger
id: verpasst
sequence:
- variables:
nummer_name: "{{ states('input_text.anruf_nummer') }}"
to_raw: "{{ states('input_text.anruf_anschluss') }}"
# nur für die folgenden Rufnummern ausführen
- conditions:
- condition: template
value_template: >-
{{ state_attr({{to_raw}}) in ['081547111', '08154712'] }}
# sonst hier script-stop
- target:
entity_id: input_text.anrufliste_1
data:
value: >
<font color="#ff1744"><ha-icon
icon="mdi:phone-missed"></ha-icon></font> {{
now().strftime('%d.%m.%Y %H:%M') }} Verpasster Anruf<br> von {{
nummer_name }} an {{ to_raw }}
action: input_text.set_value
Aber ist das wirklich eine condition? Oder wie überprüfe ich den Inhalt von ‚input_text.anruf_anschluss‘?
Viele Grüße
Sebastian
vielen Dank für diesen Gedankengang ![]()
bisher habe ich mich NUR über einen Anruf informieren lassen! Daran eine Automatisierung auszulösen, habe ich nicht gedacht… und vielleicht kann ich die Zielrufnummer auch mit z.B. # und dann mit einer Zahl(en) erweitern und so verschiedene Automatisierungen auszulösen ![]()
