Для того, чтобы посчитать сколько по времени работало определенное устройство, в Home Assistant используется платформа history_stats. С ее помощью можно, например, вести подсчет времени работы умной розетки, к которой подключен телевизор / обогреватель / компьютер или другая техника. Или можно посчитать сколько времени Вы находились дома, сколько по времени был включен свет и так далее.

Для реализации задачи создаем новый файл (с любым названием и расширением yaml) в папке sensor (создается при выносе конфигурации во внешние файлы) и прописываем туда:

- platform: history_stats
  name: TV.today
  entity_id: switch.wifi_xiaomi_socket
  state: "on"
  type: time
  start: "{{ now().replace(hour=0, minute=0, second=0) }}"
  end: "{{ now() }}"
  • В поле entity_id: прописываем сущность, которую будем отслеживать. Найти ее можно в панели разработчика, на вкладке «Состояния». В моем случае это Wi-Fi розетка Xiaomi, к которой подключен ПК и TV.
  • В поле state: задаем статус, при нахождении в котором сущности, будет вестись подсчет времени.
  • В полях start: и end: задается время начала и время окончания подсчета.

Например, для вывода времени работы за сегодня нужно написать как приведено в примере выше. За вчера:

end: "{{ now().replace(hour=0, minute=0, second=0) }}"
duration:
  hours: 24

При этом строчка start: не нужна, прописанное в строчке end: указывает, что считать до 00:00 сегодняшнего дня, а duration позволяет указать продолжительность (за 24 часа). Аналогичным образом можно вывести значение и за месяц, прописав вместо hours значение days. Если планируется выводить на экран значения за разные промежутки времени, то копируем код из первого примера нужное количество раз, меняя при этом поля start, end и duration.

После того, как прописали все нужные строчки в созданном файле, добавляем в него:

- platform: template
  sensors:
    tvtoday:
      friendly_name: 'Компьютер был включен сегодня'
      value_template: "{{ state_attr('sensor.tv_today', 'value') }}"
      icon_template: mdi:clock-outline

Это позволит вывести в интерфейс правильные значения времени. Название (третья строчка, вместо tvtoday) задаем любое, sensor.tv_today меняем на свое, которое присвоили в начале файла. В итоге должно получиться так:

Время работы ПК

Первая строчка – первый созданный сенсор. Вторая – второй, отдающий время в нужном формате.

Я у себя вывел значения за сегодня и за предыдущий день:

Сколько был включен

Ссылки на другие уроки по настройке Home Assistant.

У этой записи 5 комментариев

  1. Костя

    Синтаксис изменился. Теперь так:
    # Подсчет времени работы устройства за сегодня (вентилятор в сортире)
    sensor:
    — platform: history_stats
    name: fan_today
    entity_id: switch.ltsocket2
    state: «on»
    type: time
    start: «{{ now().replace(hour=0, minute=0, second=0) }}»
    end: «{{ now() }}»

    template:
    — sensor:
    — name: «fantoday»
    icon: mdi:clock-outline
    state: >
    «{{ state_attr(‘sensor.fan_today’, ‘value’) }}»

    1. Admin

      Добрый день!
      У меня пока все работает на приведенном в статье примере. Подсчет осуществляется корректно. Версия HA последняя.

    2. Константин

      Привет тёска ) ! 3й день не могу победить счетчик моточасов генератора(
      Вроде делаю все по Вашим инструкциям и не считает…
      Как можно с Вами связаться? готов оплатить Вашу помощь…

      1. Admin

        Добрый день. С разрешения Константина отправил Вам на почту его email.

  2. Risen

    не работает теперь, время показывает не правильно, и способ из комментариев не работает

Добавить комментарий