Мониторинг заряда батареек на датчиках умного дома. От простой реализации к сложной

Для простой реализации такого мониторинга можно использовать как простые средства из репозитория HACS в Home Assistant так и более навороченные. Рассмотрим оба варианта, возможно кому-то хватит и простой реализации.

Пример 1. Простая реализация через HACS репозитормй auto-entities. Ищем, качаем, ставим. Примерный код (вы можете изменить код по своему усмотрению, вариантов реализаций разнообразная) будет выглядить следующим образом.

cards: 
  - type: custom:auto-entities
    card:
      type: entities
      show_header_toggle: false
      title: Истекает заряд на АКБ (<20%)
      
    filter:
      include:
        - entity_id: sensor.*_battery
     
      exclude:
        - state: "off"
        - state: "unavailable"
        - state: ">20"
        - entity_id: sensor.vacuum_battery

    sort:
      method: state
      reverse: false
      numeric: true
      count: 100

В данном примере : мы собираем все сущности от датчиков с батарейками с именем sensor.*_battery (это стандартная политика наименований датчиков в сети). Возможно у вас будут другие варианты, все это индивидуально. С помощью фильтра filter мы отфутболиваем не нужные нам статусы проблемных устройств – те что не доступны в сети “unavailable”, те что отключены “off”, те что значения заряда > 20%, а также сенсор заряда АКБ нашего пылесоса например Xiaomi/etc. так как это зарядное устройство и нам оно не нужно в общем списке). Таким образом имеем картину в интерфейсе Home Assistant (у меня нашлось только 2 таких датчика с низким зарядом менее 20%)

Тут вроде все понятно и практично. Перейдем к более интересным примерам. Для этого из HACS установим дополнительный модуль репозитория Battery State Card. В HACS есть несколько интересных модулей, но пока остановимся на этом.

Выбираем Install (Установить). У меня он уже установлен, поэтому кнопки Install нет на скрине выше. Установили, перегрузили Home Assistant, двигаемся далее.

Пример 2. Красившая реализация. 🙂 Создадим список устройств заряд которых менее 15% с цветовой раскраской заряда. Цвета заряда используются стандартные (не такие яркие), конфигурировать мы их пока не будем. Дефолтные значения : от 100 и до 50 – зеленый, от 50 и до 20 – желтый и от 20 и менее – красный.

  - type: vertical-stack
    cards:
      - type: custom:battery-state-card
        title: "Пример-2. Заряд (<15%)"
        sort_by_level: "asc"
        entities:
        filter:
          include: # filters for auto-adding
            - name: entity_id
              value: "sensor.*_battery"
          exclude:
            - name: state
              value: 15
              operator: ">"
            - name: state
              value: "Unavailable"
            - name: state
              value: "Battery*"

Пример-3. Разнообразим цветовой гаммой. Создадим список только из устройств заряд которых менее 15% с цветовой раскраской по нашему усмотрению (более красный), добавим последнее состояние датчика опроса, отсортируем по значению от большего к меньшему, выведем только 1 датчик на экран (если будет более датчиков, то список можно будет раскрыть кликом мыши) для примера, ну и применим фильтры из примера 1.

  - type: vertical-stack
    cards:
      - type: custom:battery-state-card
        title: "Истекает заряд на датчиках (<15%)"
        sort_by_level: "asc"
        collapse: 4
        secondary_info: last_updated
        color_thresholds:
          - value: 15
            color: "red"
        entities:
        filter:
          include: # filters for auto-adding
            - name: entity_id
              value: "sensor.*_battery"
          exclude:
            - name: state
              value: 15
              operator: ">"
            - name: state
              value: "Unavailable"
            - name: state
              value: "Battery*"

Пример-4. Создадим список всех устройств заряда с градиентом, добавим последнее состояние датчика опроса, отсортируем по значению от большего к меньшему, выведем только 5 значений датчиков на экран (если будет более то список можно будет раскрыть) для примера, ну и применим фильтры из примера 1.

  - type: vertical-stack
    cards:
      - type: custom:battery-state-card
        title: "Текущий заряд на датчиках"
        sort_by_level: "asc"
        collapse: 5
        secondary_info: last_updated
        color_gradient:
          - "#ff0000" # red
          - "#ffff00" # yellow
          - "#00ff00" # green
        entities:
        filter:
          include: # filters for auto-adding
            - name: entity_id
              value: "sensor.*_battery"
          exclude:
            - name: state
              value: "Unavailable"
            - name: state
              value: "Battery*"

Пример-5.Создадим список всех устройств заряда с яркими цветами и добавим синий, добавим последнее состояние датчика опроса, отсортируем по значению от большего к меньшему, выведем только 10 значений датчиков на экран (если будет более то список можно будет раскрыть) для примера, ну и применим фильтры из примера 1. Значения заряда от 70% и до 40% будет синим.

  - type: vertical-stack
    cards:
      - type: custom:battery-state-card
        title: "Заряд на датчиках"
        sort_by_level: "asc"
        collapse: 10
        secondary_info: last_updated
        color_thresholds:
          - value: 15
            color: "red"
          - value: 40
            color: "yellow"
          - value: 70
            color: "blue" 
          - value: 100
            color: "green"            
        entities:
        filter:
          include: # filters for auto-adding
            - name: entity_id
              value: "sensor.*_battery"
          exclude:
            - name: state
              value: "Unavailable"
            - name: state
              value: "Battery*"

Реализации вариантов хватает. Дерзайте.

5 4 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
4 комментариев
Популярные
Новые Старые
Межтекстовые Отзывы
Посмотреть все комментарии
Александр
Александр
24.03.2021 15:34
custom:auto-entities
мне непонятно откуда брать без хакса
Виталий
Виталий
06.06.2021 15:34
Ответить на  admin

подскажите, а в auto-entities можно цвета менять? да и вообще – в документации ни слова про state_color…

4
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x