HomeAssistant: ToDo-Einträge protokollieren
Es wäre doch toll, wenn man sich nochmal anschauen könnte, ob man vor 3 Wochen auch wirklich den Rasen gemäht hat oder wie viele Leckerchen der Hund heute schon bekommen hat.

Das ganze ist möglich mit HomeAssistant. Ich nutze hier schon länger die ToDo-Listen Funktion, fand aber immer blöd, dass ich gar nicht mehr nachschauen konnte, ob auch gestern wirklich alles erledigt wurde, oder wie viel ich Hunde-Leckerchen ich dem Hund heute schon gegeben habe. Daher habe ich mich mal daran gemacht, erledigte Einträge aus ToDo-Listen oder gar Werte aus einer „Input-Number“ in einen Kalender zu schreiben. Ich habe hierbei einen Lokalen Kalender in HA genutzt, es sollte aber auch mit einem iCloud oder Google Kalender möglich sein.
Voraussetzungen
Ihr benötigt:
- ToDo-Liste (heisst bei mir „Daily tasks“)
- Kalender (heisst bei mir „Protokoll“)
- 4 Automatisierungen (siehe unten)
- Input-Number-Helfer (heisst bei mir „input_number.leckerlies_gegeben“)
- Bei Bedarf: Week-Planner Card und card-mod aus HACS
–> wenn ihr die beiden Elemente genauso nennt, ist das Script kopieren einfacher!
Automatisierungen / Scripte
ToDo nach Kalender
alias: ToDo nach Kalender
triggers:
- trigger: event
event_type: call_service
event_data:
domain: todo
service: update_item
variables:
list_name: |
{% set ent = trigger.event.data.service_data.entity_id[0] %}
{{ state_attr(ent, 'friendly_name') }}
conditions:
- alias: Wurde etwas in der definierten ToDo Liste gemacht
condition: template
value_template: "{{ list_name in ['Daily tasks']}}"
- alias: Wurde das event abgehakt
condition: template
value_template: "{{ trigger.event.data.service_data.status == 'completed' }}"
actions:
- variables:
task: "{{ trigger.event.data.service_data.rename }}"
timestamp: "{{ now().isoformat() }}"
- action: calendar.create_event
data:
start_date_time: "{{ timestamp }}"
end_date_time: |
{{ (now() + timedelta(minutes=1)).isoformat() }}
summary: "{{ task }} ✅"
description: |
{{ list_name }}
Task: {{ task }} wurde erledigt!!
target:
entity_id: calendar.protokoll
mode: single
Reset Daily ToDo
alias: Reset Daily ToDo
description: ""
triggers:
- at: "00:05:00"
trigger: time
conditions: []
actions:
- metadata: {}
data:
status:
- completed
response_variable: completed
target:
entity_id:
- todo.daily_tasks
action: todo.get_items
- repeat:
count: "{{ completed['todo.daily_tasks']['items'] | count }}"
sequence:
- metadata: {}
data:
status: needs_action
item: >-
{{completed['todo.daily_tasks']['items'][repeat.index-1]['summary']}}
target:
entity_id: todo.daily_tasks
action: todo.update_item
mode: single
Daily Tasks Todo Reset wiederholende Elemente
alias: Daily Tasks Todo Reset wiederholende Elemente
description: ""
triggers:
- trigger: event
event_type: call_service
event_data:
domain: todo
service: update_item
variables:
list_name: |
{% set ent = trigger.event.data.service_data.entity_id[0] %}
{{ state_attr(ent, 'friendly_name') }}
conditions: []
actions:
- delay:
hours: 0
minutes: 0
seconds: 0
milliseconds: 800
- action: todo.update_item
metadata: {}
data:
item: ☕️ Kaffee trinken
status: needs_action
target:
entity_id: todo.daily_tasks
- action: todo.update_item
metadata: {}
data:
item: 💩 Geschäft verrichtet
status: needs_action
target:
entity_id:
- todo.daily_tasks
mode: single
Wert protokollieren
alias: Wert protokollieren
description: ""
triggers: []
actions:
- variables:
task: "{{ states('input_number.leckerlies_gegeben') }}"
timestamp: "{{ now().isoformat() }}"
- action: calendar.create_event
data:
start_date_time: "{{ timestamp }}"
end_date_time: |
{{ (now() + timedelta(minutes=1)).isoformat() }}
summary: "🐶 Leckerchen gegeben: {{ task }} Stk."
description: |
{{ list_name }}
wurde erledigt!!
target:
entity_id: calendar.protokoll
mode: single
HACS Layout-Cards
Die beiden folgenden HACS Erweiterungen habe ich benutzt, um die Optik etwas aufzufrischen bzw. den Kalender dynamischer anzuzeigen.
- Week-Planner-Card: https://github.com/FamousWolf/week-planner-card
- Card-mod: https://github.com/thomasloven/lovelace-card-mod
YAML Code meiner Cards:
type: custom:week-planner-card
calendars:
- entity: calendar.protokoll
days: "2"
startingDay: yesterday
startingDayOffset: 0
hideWeekend: false
noCardBackground: false
compact: true
weather:
showCondition: true
showTemperature: false
showLowTemperature: false
useTwiceDaily: false
locale: de
showLocation: false
hidePastEvents: false
hideDaysWithoutEvents: false
hideTodayWithoutEvents: false
combineSimilarEvents: false
showLegend: false
texts:
yesterday: Gestern
today: Heute
updateInterval: "5"
display_order: alpha_asc
type: todo-list
card_mod:
style:
.: |
ha-card.type-todo-list div.header {
display: none;
}
ha-check-list-item {
min-height: 40px !important;
}
entity: todo.daily_tasks
hide_completed: true
hide_create: true
features:
- type: numeric-input
style: buttons
type: tile
entity: input_number.leckerlies_gegeben
features_position: inline
vertical: false
tap_action:
action: perform-action
perform_action: automation.trigger
target:
entity_id: automation.wert_protokollieren
data:
skip_condition: true
hide_state: true
show_entity_picture: false
color: brown
icon: mdi:dog
Link zum Video: https://youtu.be/ceJI9SnVrYI