Для того, чтобы посчитать сколько по времени работало определенное устройство, в 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 меняем на свое, которое присвоили в начале файла. В итоге должно получиться так:
Первая строчка – первый созданный сенсор. Вторая – второй, отдающий время в нужном формате.
Я у себя вывел значения за сегодня и за предыдущий день:
Синтаксис изменился. Теперь так:
# Подсчет времени работы устройства за сегодня (вентилятор в сортире)
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’) }}»
Добрый день!
У меня пока все работает на приведенном в статье примере. Подсчет осуществляется корректно. Версия HA последняя.
Привет тёска ) ! 3й день не могу победить счетчик моточасов генератора(
Вроде делаю все по Вашим инструкциям и не считает…
Как можно с Вами связаться? готов оплатить Вашу помощь…
Добрый день. С разрешения Константина отправил Вам на почту его email.
не работает теперь, время показывает не правильно, и способ из комментариев не работает