6. Configure Home Assistant Energy Dashboard - vit-um/hass GitHub Wiki

Функції які має виконувати розроблена автоматизація та панель Енергія

  1. Погодинна, тижнева, місячна та річна аналітика споживання електрики, газу, води в кВтг або м3
    um
    um

  2. Розрахунок вартості споживання по лічильниках тих самих ресурсів за ті самі періоди
    um

  3. Аналітика у розрізі споживання електрики кожного окремого приладу, що обладнаний лічильником
    um

  4. Порівняльна характеристика витрат за періоди: доба, тиждень, місяць, рік

  • В розрізі часу:
    um

  • В розрізі вартості та витрат за період:
    um

  • В розрізі окремих приладів:
    um

  1. Представлення показників лічильників на панелі Lovelace
  • Для електрики у вигляді картки Glance:
    um

  • Для загальних відомостей по усім лічильникам:
    um

  1. Запит та отримання показників лічильника через чат бот Телеграм та нагадування в дату та час, коли потрібно передати показники до відповідної комунальної служби:
    um

Апаратна частина

  1. Лічильник електрики обладнаний модемом та передає показники автоматично, тому в цю схему вирішено було не втручатись. От же на вхідну фазу відразу після опломбованого лічильника було надітий струмовий трансформатор та встановлений додатковий ZigBee-лічильник на DIN-рейку щитка. В доповнення до підрахунку кіловат-годин цей прилад надає досить багато інших цікавих характеристик вхідної напруги на квартиру:
    um

Значним недоліком такої схеми вимірювання є залежність від працездатності серверу Home Asisstant (HA): він перемикає тарифи день/ніч, та зберігає у своїй базі усі значення лічильника по тарифах. Тому після кожного перезавантаження серверу Ви матимете похибку, або значне відхилення показників, якщо наприклад в час перемикання тарифу Ваш Home Asisstant перезавантажився, або з якоїсь іншої причини не працював. Після таких операцій слід коригувати значення спеціальною службою Utility Meter.

  1. Лічильник води був замінений на інший з вбудованим імпульсним датчиком, що під'єднується до двоканального лічильника імпульсів з проекту Модкам, що теж працює через ZigBee та живиться від двох елементів ААА.
    um

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

  1. Щоб забирати показники з лічильника газу довелось придати датчик імпульсів безпосередньо в "Самгазі", як виявилось, у них є свій інтернет-магазин. Датчик, схема якого наведена нижче, працює з тим самим лічильником імпульсів що для води. До речі, якщо дозволить довжина дротів, то можливо використати другий канал лічильника.
    um

Так виглядає реалізація описаного рішення:
gas

Підготовка сенсорів

  1. Щоб налаштувати облік електрики окремо по тарифу день та ніч слід скористатись вбудованим інструментом Utility Meter. Для цього заходимо у меню Конфігурація -> Пристрої та сервіси -> Помічники та натискаємо праворуч знизу + СТВОРИТИ ПОМІЧНМКА
  2. Для періодичного обліку електрики по тарифах додаємо сутність Utility Meter:
    um
  • Слід придумати назву, в нашому випадку "Споживання електрики", обрати вірний лічильник струму в Wh або kWh, що має state_class: total_increasing, вірні одиниці вимірювання та клас пристрою:
    um
  • Періодичність зміни циклу обрати:
    Meter reset cycle: Monthly
  • Тарифи додати по черзі, можна з використанням кирилиці
  • Все інше залишаємо без змін та натискаємо НАДІСЛАТИ
  • Перевіряємо в інструментах розробника створену сутність. Зверніть увагу, ми створили відразу три сутності селектор для перемикання тарифів, та лічильники по кожному з тарифів, в нашому прикладі їх два: "день" та "ніч"
    um
    В прикладі що вище створений добовий сенсор, але зручніше та практичніше використовувати значення Втг по кожному з тарифів за місяць.
  1. Щоб отримати показники лічильника за тарифами "день" та "ніч", які не будуть скидатись кожну добу чи місяць, виконайте усі дії п.2, але оберіть
    Meter reset cycle: No cycle

  2. Саме тепер час поміркувати про одиниці вимірювання:

  • для панелі Енергія все одно, але нам звичніше електрику рахувати у кВтг
  • датчик імпульсів приладу обліку газу видає 100 імпульсів на один кубометр газу
  • датчик імпульсів приладу обліку води видає 1000 імпульсів на один метр кубічний води Тому створюємо на цьому кроці свої сенсори що приводять облік до кВтг та метрів кубічних, детальніше дивись у файлі
  1. На базі сенсорів, створених у п.4, таким самим чином як для електрики (п.2 розділу) створюємо через Utility Meter періодичні сенсори для газу та води у м3, але тут поле з тарифами ігноруємо:
    um
    На відміну від лічильника електрики, тут маємо локальне зберігання показників лічильників в енергонезалежній пам'яті на самому лічильнику імпульсів.
  2. Щоб панель Енергія знаходила щойно створені сенсори:
  • Заходимо у меню Конфігурація -> Пристрої та сервіси -> Сутності, знаходимо створені сенсори:
    um
  • Заходимо в кожний з них та даємо йому назву, присвоюємо усі атрибути, що можливо.
  • В розділі customize файлу configuration.yaml задамо створеним сенсорам властивість device_class: gas наступним чином:
homeassistant:
  customize:
    sensor.spozhivannia_gazu:
      device_class: gas

  • Або якщо кастомізація винесена в окремий файл, то властивість device_class: gas робимо як в файлі.
  1. Перевірити конфігурацію, та перезавантажити НА обов'язково.
  2. Перевірити щоб створена utility_meter сутність sensor.spozhivannia_gazu мала ознаки циклічності: (state_class: total_increasing, meter_period: monthly) та мала значення в полі "Стан" (1.80):
    um
  3. В разі якщо стан unknown, слід зімітувати роботу лічильника та/або перезавантажити НА.
  4. Перетворення миттєвого значення потужності в інтегральну сутність для обліку енергії кінцевих пристроїв за допомогою Помічника
  • Якщо у Вас є розетка що вимірювальний пристрій, що передає в HA тільки потужність, але Ви бажаєте відстежувати споживання енергії за цим датчиком, то потрібно створити на його базі новий сенсор.
  • Для цього заходимо у меню Конфігурація -> Пристрої та сервіси -> Помічники та натискаємо праворуч знизу + СТВОРИТИ ПОМІЧНИКА
  • Обираємо integral sensor та заповнюємо наступну картку:
    um

Автоматизація перемикання тарифів електрики

  1. Призначення автоматизації дуже просте - перемикати тарифи "день" та "ніч" в потрібний час
    Повний текст автоматизації дивіться у файлі utility_meter.yaml

  2. Тригерами в автоматизації виступають сервіси платформи time, що спрацьовують в сьомій ранку на в одинадцятій вечора:

    trigger:
      - platform: time
        at: "07:00:00"
        variables:
          tariff: "день"
      - platform: time
        at: "23:00:00"
        variables:
          tariff: "ніч"
  1. Розділ дії спрацьовує в залежності від змінної, значення якої було присвоєно тригером:
    action:
      - service: select.select_option
        target:
          entity_id: select.spozhivan_elektriki
        data:
          option: "{{ tariff }}"
      - service: select.select_option
        target:
          entity_id: select.pokazniki_lichilnika_elektriki
        data:
          option: "{{ tariff }}"

Представлення інформаційних карток панелі Lovelace з показниками лічильників

  1. Картка у форматі Glance використовується для показу загальних характеристик електричної енергії, що подається на будинок та актуального тарифу, що обчислюється саме на час її перегляду
  - show_name: true
    show_icon: true
    show_state: true
    type: glance
    entities:
      - entity: sensor.electric_meter_power_l2
        name: Потужність
      - entity: sensor.electric_meter_current_l2
        name: Струм
      - entity: sensor.electric_meter_voltage_l2
        name: Напруга
      - entity: sensor.electric_meter_frequency_l2
        name: Частота
      - entity: sensor.electric_meter_power_factor_l2
        name: K pow
      - entity: select.spozhivan_elektriki
        name: Тариф
      - entity: sensor.pokazniki_lichilnika_elektriki_den
        name: День
      - entity: sensor.pokazniki_lichilnika_elektriki_nich
        name: Ніч
    state_color: true
    columns: 4

  1. Для показу показників лічильника використовується карта Сутність (entities) та кастомна інтеграція multiple-entity-row для більш компактного розташування елементів для показу.
  - type: entities
    show_header_toggle: true
    entities:
      - type: custom:multiple-entity-row
        entity: sensor.electric_day
        name: Електрика
        toggle: false
        state_header: день
        state_color: true
        secondary_info:
          entity: select.spozhivan_elektriki
          name: 'Тариф:'
        entities:
          - entity: sensor.electric_night
            name: ніч
      - entity: sensor.gas_counter
        name: Газ
      - entity: sensor.water_counter
        name: Вода

Налаштування панелі Енергія

  1. Для налаштування заходимо у меню Конфігурація -> Інформаційні панелі -> Енергія
  2. Після відкриття налаштунків, першому розділі потрібно додати "Споживання мережі":
    um
  3. Натискаємо ДОДАТИ СПОЖИВАННЯ
    um
  4. Обираємо зі списку сенсор потрібного тарифу, що було зроблено вище, ставимо ціну на час дії цього тарифу та натискаємо кнопку ЗБЕРЕГТИ, та отримуємо як результат ще один сенсор з суфіксом _cost відповідним до назви тарифу:
    um
  5. Таким же чином додаємо сенсор та ціну нічного тарифу.
  6. Переходимо в розділ Споживання газу та діємо так само:
    um
  7. Останнім кроком переходимо в розділ Індивідуальні пристрої та тиснемо ДОДАТИ ПРИСТРІЙ
    um

Створення чат бота Телеграм для віддаленого запиту та отримання актуальних показників лічильників

  1. Як налаштувати бот, та отримати ID групи для налаштунків краще подивитись уроки шановного Alex Kvazis
  2. Та частина коду, а саме автоматизація, яка знаходиться у файлі пакеджу telegram.yaml
  3. Тригер автоматизації, що реагує на натискання кнопки виклику команди Телеграму на відправлення даних лічильників:
          trigger:
          - platform: event
            event_type: telegram_callback
            event_data:
               data: '/counters'
  1. Тригер та умова, завдяки яким показники лічильників мають відправлятися на дату передачі їх комунальним службам (кожного місяця 23 числа у 19 годині):
          trigger:
          - platform: time
            at: "19:00:00"
          condition:
            condition: template
            value_template: >
              {{ now().day == 23 }}  

Встановлення початкових показників лічильників споживання або їх корекція

  1. Як вже було зазначено вище, показники лічильника електрики зберігаються в базі даних HA, тому встановлюємо їх початкове значення (приводимо до показників фізичних лічильників) викликом служби HA.
  2. В Інструментах для розробників переходимо до вкладки СЛУЖБИ та шукаємо службу Utility Meter: Calibrate
  3. В розділі Цілі обираємо сутність, що була створена без циклів, спеціально для зберігання показників лічильників. По черзі для тарифу "день" та "ніч"
  4. В розділі Value пишемо значення лічильника за вказаним у попередньому пункті тарифу та тиснемо ВИКЛИКАТИ СЛУЖБУ
    um
    Або в разі бажання можна написати автоматизацію для калібрування лічильників в yaml:
service: utility_meter.calibrate
data:
  value: '3595106'
target:
  entity_id: sensor.pokazniki_lichilnika_elektriki_den
  1. Початкову кількість імпульсів для лічильників води та газу вказуємо прямо на ZigBee-пристроях.
  2. Переходимо в інтерфейс керування Zigbee2MQTT та шукаємо потрібний пристрій
    um
  3. Далі слід вписати початкове значення лічильника, враховуючи ціну ділення, до поля того каналу, куди фізично під'єднано датчик імпульсів та розбудити у цей момент пристрій, замкнувши на ньому контакти сенсору протікання.

Створення панелі поточного споживання приладів за їх потужністю

  1. Кастомна картка sankey-chart надає нам потужний інструмент визначення поточного споживання приладами, що особливо важливо в період споживання від акумуляторних батарей через інвертор. Реалізація панелі може виглядати наступним чином:
    sch

  2. Щоб вести облік потужності освітлення, яке підключене через розумні вимикачі створимо серсори для кожної кімнати у файлі sensors.yaml:

- platform: template
  sensors:
    power_light_hall:
          friendly_name: 'Світло в залі'
          unit_of_measurement: 'W'
          device_class: power
          value_template: >
                    {{ is_state('light.sonoff_100101549d_2', 'on') * float(10 * 4) 
                    + is_state('light.sonoff_100101549d_1', 'on') * float(10 * 4) 
                    + is_state('light.wled_hall', 'on') * float(10) 
                    }}

де у виразі float(10 * 4) в дужках вказуємо потужність та кількість лампочок які керуються відповідним вимикачем.

  1. Щоб створити відповідно до кожного такого сенсора облік енергії в кВтг, додаємо помічника Add Riemann sum integral sensor як це було описано вище по тексту

Облік енергії отриманої від АКБ за допомогою лічильника PZEM_DC

  1. При живлені приміщення або приладів від акумуляторних батарей, для прогнозу відімкнення, важливо мати контроль залишкової місткості батарей.
    Отже, маємо три варіанти візуального контролю цього параметру:
  • іконка та лічильник енергії розряду АКБ:
    akb
  • добовий графік заряду (червоним) та розряду (зеленим) АКБ:
    akb
  • цифрові показники спожитої або відданої енергії за джерелом в розділі Енергія
    akb
  1. Для реалізації описаного вище створюємо сенсори прямого та зворотнього підрахунку енергії з АКБ. Код Ви знайдете у файлі sensors.yaml цього сховища.

  2. Автоматизації для підрахунку тарифів знаходяться в файлі utility_meter.yaml сховища.

До змісту