На Facebook наткнулся на интересный вопрос.
1. Добавляем в систему input_datetime:
2. Добавляем единственный сенсор:
Основная задача решена.
Или немного короче (для скриптов работают оба варианта):
Весь процесс на видео:
У человека закрытый бассейн, который требует регулярного обслуживания. Когда обслуживание произведено - текущая дата фиксируется в input_datetime.
Задача: добавить в систему датчик, который бы отображал количество дней, прошедшее с момента обслуживания. Чтобы можно было к этому датчику прикрутить уведомления, когда подойдет срок следующего обслуживания.
Не принципиально, но значения в input_datetime добавляются не вручную, а неким скриптом. Пользователю необходимо показать просто кнопку в интерфейсе, при клике на которую вызывается скрипт и в input_datetime проставляется текущая дата.
Насколько я понимаю, скрипт у человека уже был, поэтому постарался проработать остальные моменты.
Собственно, алгоритм работает для любых периодических работ: плановое ТО автомобиля, замена фильтров для воды и т.д.
Собственно, алгоритм работает для любых периодических работ: плановое ТО автомобиля, замена фильтров для воды и т.д.
1. Добавляем в систему input_datetime:
input_datetime:
set_date:
name: My date
has_date: true
has_time: false
2. Добавляем единственный сенсор:
sensor:
- platform: command_line
name: Days Passed
command: "echo $(( ($(date +%s) - $(date -d {{ states.input_datetime.set_date.state }} +%s)) / 86400 ))"
value_template: '{{ value | multiply(1) | round(0) }}'
Основная задача решена.
Чтобы в Lovelace получить кнопку, при клике на которую выполняется скрипт - просто для нужного элемента указываем tap_action:
- type: entity-button
entity: script.message_temperature
tap_action:
action: call-service
service: script.turn_on
service_data:
entity_id: script.message_temperature
Или немного короче (для скриптов работают оба варианта):
- type: entity-button
entity: script.message_temperature
tap_action:
action: call-service
service: script.message_temperature
Весь процесс на видео: