hallo ,ich verwende im HA ,Anniversaries habe auch alle Identitäten angelegt nun möchte ich aber auch das Alter und nicht nur den Geburtstag anzeigen lassen.
Die Adribute bzw.die Daten sind in Anniversaries hinterlegt
Wo hast du denn die Geburtstage hinterlegt?
Ich nutze Atomic Calendar ind Verbindung mit dem Office365 Addon
Hallo,in Anniversaries ,da gibt man die Daten ein und hat dann viele Attribute.
Aber ich weiß nicht mit was fpr einer Karte ich diese Daten anzeigen lassen kann,
Hast du alle Geburtstagsdaten mit einem Jahr hinterlegt? Falls nein, wird der Datensatz beim auslesen nicht vernünftig angezeigt. Ich lasse mir die Daten in einer flex-table-card anzeigen und sortiere sie nach state (Tage bis zum Geburtstag). Das alter kannst du dir über “years_at_anniversary” anzeigen lassen. Ich bin mit meiner Darstellung aktuell zwar nicht glücklich, evtl. hilft sie dir aber weiter (bei den Leuten, bei denen ich das Geburtsjahr nicht kenne, habe ich 1800 eingegeben - eingetragen in die configuration.yaml):
type: custom:flex-table-card
entities:
include: sensor.anniversary_*
sort_by: state+
columns:
- name: Tage
data: state
modify: >
(x == 0) ? '<ha-icon icon="mdi:cake-variant-outline"></ha-icon>' : x
align: right
- name: Name
data: friendly_name
- name: Geburtstag
data: date
modify: >-
var date = new Date(x); const months = ['Januar','Februar','März','April
','Mai ','Juni ','Juli ','August ','September
','Oktober','November','Dezember ']; String(date.getDate()).padStart(2,
'0') + '.' + months[date.getMonth()]
align: center
- name: wird
data: years_at_anniversary
modify: |
(x > 200) ? '?' : x
align: right
max_rows: 4
Hallo, ich habe eine Frage zu Anniversaries.
Das funktioniert alles Top soweit.
Ich habe nun eine Automation erstellt, welche mir an einem Geburtstag
eine Nachricht um 06:00 Uhr an Telegramm sendet.
alias: Geburstag
description: ""
triggers:
- trigger: calendar
entity_id: calendar.anniversaries
event: start
offset: "6:0:0"
conditions: []
actions:
- action: telegram_bot.send_message
metadata: {}
data:
title: ""
message: >
{{state_attr('calendar.anniversaries','message')}} hat heute Geburtstag !
mode: single
Nun möchte ich aber auch das Alter von der Person haben.
message: >
{{state_attr('calendar.anniversaries','message')}} hat heute Geburtstag ({{state_attr('calendar.xxxxxx','alter')}})
Muss ich mir nun einen Sensor erstellen, der diese Infomationen zusammen rechnet ?
(So wie bei @dunkelheim seiner Formel?)
Wenn Ja, wie ?
Hi,
ich habe das für meinen Discord-Bot so gelöst:
message: >-
{% set bdays = states.sensor
| selectattr('entity_id', 'search', '^sensor.anniversary_')
| selectattr('state', 'equalto', '0')
| list %}
{% for a in bdays %}
Heute hat {{ a.attributes.friendly_name }} Geburtstag, ist {{
a.attributes.years_at_anniversary }} Jahre alt geworden.
{% endfor %}
Hallo @dunkelheim, Danke für den Post aber der states.sensor kommt woher?
Von Anniversary sensor ?
Das sind alle Sensoren im System. “Gesucht” werden dann über die erste selectattr (‘entity_id’, ‘search’, ‘^sensor.anniversary_’) aber nur die, die sensor.anniversary_ im Namen haben, also aus der Integration kommen. Daraus wiederum, per Zeile darunter, werden nur die Daten ausgegeben, deren state 0, also heute ist (‘state’, ‘equalto’, ‘0’).
Ah OK …
ich glaube jetzt geht es / jetzt habe ich es verstanden.
Mein Hauptsensor heißt: sensor.anniversary_xxxxx
(xxxx=Name des Eintrags)
also:
alias: Geburstag
description: ""
triggers:
- trigger: calendar
entity_id: calendar.anniversaries
event: start
offset: "08:00:00"
conditions: []
actions:
- action: telegram_bot.send_message
metadata: {}
data:
title: ""
message: >-
{% set bdays = states.sensor | selectattr('entity_id', 'search',
'^sensor.anniversary_') | selectattr('state', 'equalto', '0') | list
%} {% for a in bdays %}
Heute hat {{ a.attributes.friendly_name }} Geburtstag und ist {{
a.attributes.years_at_anniversary }} Jahre alt geworden.
{% endfor %}
mode: single
Also wenn ich das jetzt richtig verstehe, haben wir jetzt
in einer Automation einen Abfrage Sensor “states.sensor” virtuel erstellt,
der dann alle “sensor.anniversary_” im Namen abfragt und deren state = 0 (0 Tage bis zum Jahrestag / also heute ist). Das ganze wird dann in eine Liste vom “states.sensor” gepackt.
@dunkelheim : 1000 Dank … ich habe jetzt 2 Wochen an dem Code rum^ge^eiert.
Ich werde dass jetzt mit einen Termin für morgen testen und Feedback geben.
DANKE !!!
Also kann ich Anniversary sensor wieder deinstallieren.
Hallo, ich nutze dafür:
Mushroom Title-Karte: wird „sauber und dezent “ nur als Text angezeigt, grade auf Wandtablett und Handy, sehr gut
habe es noch auf: Geburtstag, Hochzeitstag und Todestag mit Jahren aufgeteilt solange nichts da ist wird auch nichts angezeigt (bei Interesse kann ich gerne die Code und Erklärung posten)
Dann noch der Klassiker für Müllabfuhr TrashCard, vorteilhaft hier ist das man auch Bilder der Person anbinden kann aber es wird nicht angezeigt welches Geburtstag bzw. Jahr.
Nur so als Inspiration… Gruß
