Умные напоминалки
Периодически возникает желание как-то автоматизировать напоминания про те вещи, которые нельзя автоматизировать сами по себе.
Например, смена кошачьего лотка, кормление домашних тараканов или геккона.
При этом хочется, чтобы напоминалка падала в удобный канал связи, и при игноре тебя мелко долбила, и не получилось так, чтобы при случайном смахивании ты её забыл навсегда (как с гугл календарём, например).
Долго думал, искал готовые решения, в конце концов написал своё на Home Assistant.
Как его сделать:
- Делаем датчики даты последнего выполнения действия (например, кормления животного).
1 | input_datetime: |
- Делаем датчики, которые высчитывают количество часов, прошедшего со времени кормления:
1 | sensor: |
- Делаем скрипт, который устанавливает на сейчас время последнего кормления:
1
2
3
4
5
6
7
8
9
10
11script:
set_gecko_feed_time:
sequence:
- alias: Set gecko fed time
service: input_datetime.set_datetime
target:
entity_id: input_datetime.gecko_last_fed
data:
timestamp: '{{ now().timestamp() }}'
alias: Set gecko feed time
mode: single - Добавляем карточку, которая отображает
- время последнего кормления
- количество пройденных часов
- кнопку, которая указывает, что действие выполнено, например, животное покормлено:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17type: vertical-stack
cards:
- type: entities
entities:
- entity: input_datetime.gecko_last_fed
- entity: sensor.gecko_after_fed
- show_name: true
show_icon: true
type: entity-button
name: I fed gecko
entity: input_datetime.gecko_last_fed
icon: mdi:food-croissant
tap_action:
action: call-service
service: script.set_gecko_feed_time
target: {}
icon_height: 30px
- И последнее - добавляем автоматизацию, которая пишет с какой-то регулярностью в телеграмм, если мы продолбали дату:
1 | automation: |
После этого остаётся только радоваться жизни.
Вот так выглядит карточка с тремя такими напоминалками:
А так - сама напоминалка в телеграмм:
Сильнее можно автоматизировать только тем, что добавить зигби-кнопки или голосовые сценарии Алисы, чтобы не тыкать UI Home Assistant, а обновлять данные прям на месте.
UPD: Но красивее это упаковать в один package, чтобы не разбегалось по куче мест:
configuration.yaml
:
1 | homeassistant: |
packages/reminders/chris.yaml
:
1 | reminders_chris: |