6. Configure Home Assistant Energy Dashboard - vit-um/hass GitHub Wiki
Функції які має виконувати розроблена автоматизація та панель Енергія
-
Погодинна, тижнева, місячна та річна аналітика споживання електрики, газу, води в кВтг або м3


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

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

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

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

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

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

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

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

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

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

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

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

Підготовка сенсорів
- Щоб налаштувати облік електрики окремо по тарифу день та ніч слід скористатись вбудованим інструментом Utility Meter. Для цього заходимо у меню
Конфігурація -> Пристрої та сервіси -> Помічникита натискаємо праворуч знизу+ СТВОРИТИ ПОМІЧНМКА - Для періодичного обліку електрики по тарифах додаємо сутність Utility Meter:

- Слід придумати назву, в нашому випадку "Споживання електрики", обрати вірний лічильник струму в Wh або kWh, що має state_class: total_increasing, вірні одиниці вимірювання та клас пристрою:

- Періодичність зміни циклу обрати:
Meter reset cycle:Monthly - Тарифи додати по черзі, можна з використанням кирилиці
- Все інше залишаємо без змін та натискаємо
НАДІСЛАТИ - Перевіряємо в інструментах розробника створену сутність. Зверніть увагу, ми створили відразу три сутності селектор для перемикання тарифів, та лічильники по кожному з тарифів, в нашому прикладі їх два: "день" та "ніч"

В прикладі що вище створений добовий сенсор, але зручніше та практичніше використовувати значення Втг по кожному з тарифів за місяць.
-
Щоб отримати показники лічильника за тарифами "день" та "ніч", які не будуть скидатись кожну добу чи місяць, виконайте усі дії п.2, але оберіть
Meter reset cycle:No cycle -
Саме тепер час поміркувати про одиниці вимірювання:
- для панелі Енергія все одно, але нам звичніше електрику рахувати у кВтг
- датчик імпульсів приладу обліку газу видає 100 імпульсів на один кубометр газу
- датчик імпульсів приладу обліку води видає 1000 імпульсів на один метр кубічний води Тому створюємо на цьому кроці свої сенсори що приводять облік до кВтг та метрів кубічних, детальніше дивись у файлі
- На базі сенсорів, створених у п.4, таким самим чином як для електрики (п.2 розділу) створюємо через Utility Meter періодичні сенсори для газу та води у м3, але тут поле з тарифами ігноруємо:

На відміну від лічильника електрики, тут маємо локальне зберігання показників лічильників в енергонезалежній пам'яті на самому лічильнику імпульсів. - Щоб панель Енергія знаходила щойно створені сенсори:
- Заходимо у меню
Конфігурація -> Пристрої та сервіси -> Сутності, знаходимо створені сенсори:

- Заходимо в кожний з них та даємо йому назву, присвоюємо усі атрибути, що можливо.
- В розділі
customizeфайлуconfiguration.yamlзадамо створеним сенсорам властивістьdevice_class: gasнаступним чином:
homeassistant:
customize:
sensor.spozhivannia_gazu:
device_class: gas
- Або якщо кастомізація винесена в окремий файл, то властивість
device_class: gasробимо як в файлі.
- Перевірити конфігурацію, та перезавантажити НА обов'язково.
- Перевірити щоб створена
utility_meterсутністьsensor.spozhivannia_gazuмала ознаки циклічності: (state_class:total_increasing,meter_period: monthly) та мала значення в полі "Стан" (1.80):

- В разі якщо стан
unknown, слід зімітувати роботу лічильника та/або перезавантажити НА. - Перетворення миттєвого значення потужності в інтегральну сутність для обліку енергії кінцевих пристроїв за допомогою Помічника
- Якщо у Вас є розетка що вимірювальний пристрій, що передає в HA тільки потужність, але Ви бажаєте відстежувати споживання енергії за цим датчиком, то потрібно створити на його базі новий сенсор.
- Для цього заходимо у меню
Конфігурація -> Пристрої та сервіси -> Помічникита натискаємо праворуч знизу+ СТВОРИТИ ПОМІЧНИКА - Обираємо
integral sensorта заповнюємо наступну картку:

Автоматизація перемикання тарифів електрики
-
Призначення автоматизації дуже просте - перемикати тарифи "день" та "ніч" в потрібний час
Повний текст автоматизації дивіться у файлі utility_meter.yaml -
Тригерами в автоматизації виступають сервіси платформи time, що спрацьовують в сьомій ранку на в одинадцятій вечора:
trigger:
- platform: time
at: "07:00:00"
variables:
tariff: "день"
- platform: time
at: "23:00:00"
variables:
tariff: "ніч"
- Розділ дії спрацьовує в залежності від змінної, значення якої було присвоєно тригером:
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 з показниками лічильників
- Картка у форматі 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
- Для показу показників лічильника використовується карта Сутність (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: Вода
Налаштування панелі Енергія
- Для налаштування заходимо у меню
Конфігурація -> Інформаційні панелі -> Енергія - Після відкриття налаштунків, першому розділі потрібно додати "Споживання мережі":

- Натискаємо
ДОДАТИ СПОЖИВАННЯ

- Обираємо зі списку сенсор потрібного тарифу, що було зроблено вище, ставимо ціну на час дії цього тарифу та натискаємо кнопку
ЗБЕРЕГТИ, та отримуємо як результат ще один сенсор з суфіксом_costвідповідним до назви тарифу:

- Таким же чином додаємо сенсор та ціну нічного тарифу.
- Переходимо в розділ
Споживання газута діємо так само:

- Останнім кроком переходимо в розділ
Індивідуальні пристроїта тиснемоДОДАТИ ПРИСТРІЙ

Створення чат бота Телеграм для віддаленого запиту та отримання актуальних показників лічильників
- Як налаштувати бот, та отримати ID групи для налаштунків краще подивитись уроки шановного Alex Kvazis
- Та частина коду, а саме автоматизація, яка знаходиться у файлі пакеджу telegram.yaml
- Тригер автоматизації, що реагує на натискання кнопки виклику команди Телеграму на відправлення даних лічильників:
trigger:
- platform: event
event_type: telegram_callback
event_data:
data: '/counters'
- Тригер та умова, завдяки яким показники лічильників мають відправлятися на дату передачі їх комунальним службам (кожного місяця 23 числа у 19 годині):
trigger:
- platform: time
at: "19:00:00"
condition:
condition: template
value_template: >
{{ now().day == 23 }}
Встановлення початкових показників лічильників споживання або їх корекція
- Як вже було зазначено вище, показники лічильника електрики зберігаються в базі даних HA, тому встановлюємо їх початкове значення (приводимо до показників фізичних лічильників) викликом служби HA.
- В
Інструментах для розробниківпереходимо до вкладкиСЛУЖБИта шукаємо службуUtility Meter: Calibrate - В розділі
Ціліобираємо сутність, що була створена без циклів, спеціально для зберігання показників лічильників. По черзі для тарифу "день" та "ніч" - В розділі
Valueпишемо значення лічильника за вказаним у попередньому пункті тарифу та тиснемоВИКЛИКАТИ СЛУЖБУ

Або в разі бажання можна написати автоматизацію для калібрування лічильників в yaml:
service: utility_meter.calibrate
data:
value: '3595106'
target:
entity_id: sensor.pokazniki_lichilnika_elektriki_den
- Початкову кількість імпульсів для лічильників води та газу вказуємо прямо на ZigBee-пристроях.
- Переходимо в інтерфейс керування
Zigbee2MQTTта шукаємо потрібний пристрій

- Далі слід вписати початкове значення лічильника, враховуючи ціну ділення, до поля того каналу, куди фізично під'єднано датчик імпульсів та розбудити у цей момент пристрій, замкнувши на ньому контакти сенсору протікання.
Створення панелі поточного споживання приладів за їх потужністю
-
Кастомна картка sankey-chart надає нам потужний інструмент визначення поточного споживання приладами, що особливо важливо в період споживання від акумуляторних батарей через інвертор. Реалізація панелі може виглядати наступним чином:

-
Щоб вести облік потужності освітлення, яке підключене через розумні вимикачі створимо серсори для кожної кімнати у файлі 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) в дужках вказуємо потужність та кількість лампочок які керуються відповідним вимикачем.
- Щоб створити відповідно до кожного такого сенсора облік енергії в кВтг, додаємо помічника
Add Riemann sum integral sensorяк це було описано вище по тексту
Облік енергії отриманої від АКБ за допомогою лічильника PZEM_DC
- При живлені приміщення або приладів від акумуляторних батарей, для прогнозу відімкнення, важливо мати контроль залишкової місткості батарей.
Отже, маємо три варіанти візуального контролю цього параметру:
- іконка та лічильник енергії розряду АКБ:

- добовий графік заряду (червоним) та розряду (зеленим) АКБ:

- цифрові показники спожитої або відданої енергії за джерелом в розділі
Енергія

-
Для реалізації описаного вище створюємо сенсори прямого та зворотнього підрахунку енергії з АКБ. Код Ви знайдете у файлі sensors.yaml цього сховища.
-
Автоматизації для підрахунку тарифів знаходяться в файлі utility_meter.yaml сховища.