Сделать стартовойДобавить в закладки  
Главная страничка Главная страничка
В номере:

Выходит с 17 июля 2008 г. цена договорная

Опрос

конечно, он настанет в 2012 г.
да, но не в 2012 г.
нет, это фантастика
а что такое конец света
а мне пофиг - я буду уже мертв



Календарь
«    Июль 2021    »
ПнВтСрЧтПтСбВс
 1234
567891011
12131415161718
19202122232425
262728293031 

Архив новостей
Июль 2021 (3)
Февраль 2021 (3)
Январь 2021 (1)
Ноябрь 2020 (2)
Июль 2020 (2)
Июнь 2020 (3)

Информация
Уведомление в Телеграм если какой-то из сенсоров Home Assistant перешел в состояние недоступен
Умный дом
автор: dimon, опубликовано: 1 июля 2021

Что-то изменилось в радиообстановке в моем доме и я заметил, что сенсоры периодически стали отваливаться от НА, уходя в состояние "Недоступен". Для оперативного реагирования, да и просто чтобы понять как часто это происходит, я решил сделать автоматизацию, которая будет присылать мне уведомление в Телеграм если какой-то из сенсоров Home Assistant перешел в состояние недоступен.

Я заметил, что когда сенсор недоступен то и все его сущности переходят в это же состояние, а так как почти все сенсоры ZigBee у меня на батарейках, то я решил что проще всего отслеживать состояние сущности battery сенсоров.

Т.к. сенсоров было не очень много, то я в триггере автоматизации просто перечислил все свои сенсоры батареек и успокоился. Больше полугода эта автоматизация у меня работала, исправно присылая уведомление в Telegram, когда какой-нибудь датчик отваливался от сервера умного дома Home Assistant.

Так же у меня есть счетчик unavailable_sensors_counter, который увеличивается на единицу каждый раз когда, какой-то сенсор отваливается и я получаю уведомление. Его значение я тоже присылаю себе в виде уведомления каждый раз.

В результате уведомление выглядит вот так:

Уведомление в Телеграм если какой-то из сенсоров Home Assistant перешел в состояние недоступен




Код доступен на GitHub-е



Еще во время написания этой автоматизации я думал, что нужно в триггере как-то указать домен устройств, чтобы не перечислять их все ручками, но код работал, а времени ковыряться особо не было.

Сейчас, наконец, критическая масса проблем доросла до толчка допилить эту автоматизацию до удобоваримого вида.

К тому же оказалось, что некоторые новые датчики Xiaomi (Aqara), которые имеют интерфейс BLE (Bluetooth Low Energy) не отдают значение батарейки, хотя такую сущность в HA заводят, и соответственно каждый раз показываются в списке Недоступных. Да и количество сенсоров постоянно растет, а постоянно отслеживать и каждый раз ручками добавлять в автоматизацию новые датчики становится довольно суетно.

Поэтому переделаем автоматизацию, изменив триггер со списка сенсоров батареек на домены устройств.

Перво-наперво заведем Template sensor-ы со счетчиком количества недоступных светильников, свичей, сенсоров и бинарных сенсоров:


    sensor:

      - platform: template
        sensors:

          unavailable_now_light:
            friendly_name: "Всего недоступных светильников - "
            entity_id:
              - sensor.time
            value_template: "{{states.light | selectattr ('state', 'equalto', 'unavailable') | list | length}}"
            icon_template: mdi:counter        

          unavailable_now_switch:
            friendly_name: "Всего недоступных реле - "
            entity_id:
              - sensor.time
            value_template: "{{states.switch | selectattr ('state', 'equalto', 'unavailable') | list | length}}"
            icon_template: mdi:counter 
            
          unavailable_now_sensor:
            friendly_name: "Всего недоступных сенсоров - "
            entity_id:
              - sensor.time
            value_template: "{{states.sensor | selectattr ('state', 'equalto', 'unavailable') | list | length}}"
            icon_template: mdi:counter
            
          unavailable_now_binary_sensor:
            friendly_name: "Всего недоступных бинарных сенсоров - "
            entity_id:
              - sensor.time
            value_template: "{{states.binary_sensor | selectattr ('state', 'equalto', 'unavailable') | list | length}}"
            icon_template: mdi:counter
            


Далее нам нужно сделать скрипты, которые будут отсылать сообщения (уведомления) в Телеграм:


    script:

      unavailable_list_var1:    
        alias: Отправка отчета о недоступных сущностях var1
        sequence:
         - service: notify.telegram_admin
           data:
             message: | 
                 {{"\U0001F6A8"}} Отчет за {{ states('sensor.time_date') }}
                 
                 {{"\U0001F4A1"}} Светильников недоступно - {{ states('sensor.unavailable_now_light') }} 
                 {{"\U0001F50C"}} Свичей недоступно - {{ states('sensor.unavailable_now_switch') }} 
                 {{"\U0001F321"}} Сенсоров недоступно - {{ states('sensor.unavailable_now_sensor') }} 
                 {{"\U0001F51F"}} Бинарных сенсоров недоступно - {{ states('sensor.unavailable_now_binary_sensor') }}             
                 
                 Список недоступных сущностей:
                 {{ states | selectattr('state', 'eq', 'unavailable') | map(attribute="name") | join ("
                 ") }}

      unavailable_list_var2:    
        alias: Отправка отчета о недоступных сущностях var1
        sequence:
         - service: notify.telegram_admin
           data:
             message: | 
                 {{"\U0001F6A8"}} Отчет за {{ states('sensor.time_date') }}
                 
                 {% if (states('sensor.unavailable_now_light') | int > 0) -%}
                   -  
                 {{"\U0001F4A1"}} Светильников недоступно - {{ states('sensor.unavailable_now_light') }}:
                 {{ states.light | selectattr('state', 'eq', 'unavailable') | map(attribute="name") | join ("
                 ") }}
                 {%- endif %}
                 {% if (states('sensor.unavailable_now_switch') | int > 0) -%}
                   -  
                 {{"\U0001F50C"}} Свичей недоступно - {{ states('sensor.unavailable_now_switch') }}:
                 {{ states.switch | selectattr('state', 'eq', 'unavailable') | map(attribute="name") | join ("
                 ") }}
                 {%- endif %}
                 {% if (states('sensor.unavailable_now_sensor') | int > 0) -%}
                   -  
                 {{"\U0001F321"}} Сенсоров недоступно - {{ states('sensor.unavailable_now_sensor') }}:
                 {{ states.sensor | selectattr('state', 'eq', 'unavailable') | map(attribute="name") | join ("
                 ") }}
                 {%- endif %}
                 {% if (states('sensor.unavailable_now_binary_sensor') | int > 0) -%}
                   -  
                 {{"\U0001F51F"}} Бинарных сенсоров недоступно - {{ states('sensor.unavailable_now_binary_sensor') }}:
                 {{ states.binary_sensor | selectattr('state', 'eq', 'unavailable') | map(attribute="name") | join ("
                 ") }}
                 {%- endif %}


Ну и напоследок - автоматизацию, которая при изменении значения этих сенсоров будет запускать эти скрипты:


    automation:   

        - id: Уведомление о недоступных сущностях
          alias: send_unavailable_entity_list
          trigger:
          - platform: state
            entity_id:
             - sensor.unavailable_now_light
             - sensor.unavailable_now_switch
             - sensor.unavailable_now_sensor
             - sensor.unavailable_now_binary_sensor
            for: '00:01:00'
          condition: []
          action:
          - service: script.turn_on
            entity_id: script.unavailable_list_var1
          - service: script.turn_on
            entity_id: script.unavailable_list_var2
	


Уведомление var1 выглядит вот так:

Уведомление в Телеграм если какой-то из сенсоров Home Assistant перешел в состояние недоступен


Уведомление var2 выглядит вот так:

Уведомление в Телеграм если какой-то из сенсоров Home Assistant перешел в состояние недоступен


Код доступен на GitHub-е

 
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Чтобы Вам были доступны все функции Вам необходимо либо зарегистрироваться, либо зайти на сайт под своим именем.

Другие новости по теме:

  • Управялем яркостью диммера Noolite из Home Assistant
  • Сенсоры NAS NetGear ReadyNAS Pro2 в Home Assistant с помощью SNMP
  • Ночник с выбором времени горения в карточке Lovelace в Home Assistant
  • Автоматизация "Все ушли из дома" в Home Assistant
  • Domoticz. Уведомление о низком уровне батарее датчиков


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

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



     
    Информация
     
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


    Поиск по сайту:


    Облако тегов
    Arduino, backup, CentOS, cmd, div, DLE, DLE хаки, domoticz, dzvents, event, Home Assistant, Linux, log, LUA, Monster, ogf3, RDP, Template, VBS, windows, WSH, xiaomi, бумага, бумажный самолетик, верстка, иструкция, Карты, кино, Навигация, оригами, программа, рецензия, рецепт, скрипт, уведомления, фигуры, шаблон, Яндекс, яндекс-карты

    Показать все теги
    Реклама
    раскрутка сайта бесплатно
    Главная страница | Регистрация | Добавить новость | Новое на сайте | Статистика | Поддержка | Правила ресурса Copyright © 2005-2021 by dimon - all right reserved!
    Тираж:           экземпляров.   Дизайн, верстка by dimon