вторник, 22 января 2019 г.

Home Assistant: определяем количество дней от заданной даты

На Facebook наткнулся на интересный вопрос.



У человека закрытый бассейн, который требует регулярного обслуживания. Когда обслуживание произведено - текущая дата фиксируется в 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

Весь процесс на видео:

Комментариев нет:

Отправить комментарий