achi
(Антон Чичков)
09.Январь.2024 06:34:35
1
Home Assistant — популярная открытая платформа для домашней автоматизации и построения систем “умного дома”.
Показания ЛЭРС УЧЁТ могут быть импортированы в Home Assistant с помощью REST API интерфейса.
Для этого выполните следующие действия.
Создайте пользователя, от имени которого будут запрашиваться данные из ЛЭРС УЧЁТ.
При создании на закладке “Объекты/точки/помещения” задайте для пользователя доступный объект и доступные точки учёта, показания которых будут импортированы в Home Assistant.
Откройте свойства созданного пользователя на закладке “Доступ” и сформируйте для него токен. Задайте дату истечения токена в будущем, через 10 лет.
Сохраните полученный токен
Для получения данных потребуется идентификатор точки учёта. Вы можете получить его через веб-интерфейс. Для этого откройте объект учёта и перейдите в карточку нужной вам точки. Идентификатор будет отображаться в конце адресной строки бразуера.
В этом примере идентификатор нужной точки учёта 3.
Теперь в Home Assistant потребуется добавить датчик, который будет получать данные через REST интерфейс с использованием только что сформированного токена.
Для примера будем запрашивать интеграторы по электроэнергии для тарифа 1, 2 и суммы тарифов.
Откройте файл configuration.yaml и добавьте в него следующие строки:
rest:
- scan_interval: 1500
resource: https://АДРЕС_ВАШЕГО_СЕРВЕРА_ЛЭРС/api/v1/Data/MeasurePoints/ИДЕНТИФИКАТОР_ТОЧКИ_УЧЁТА/Totals/Last
headers:
Authorization: Bearer СОХРАНЁННЫЙ_ТОКЕН
sensor:
- name: Total Boiler
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'Ap') | list | first).value | round(0) }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
- name: Day Boiler
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'Ap2') | list | first).value | round(0) }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
- name: Night Boiler
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'Ap1') | list | first).value | round(0) }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
Замените поля АДРЕС_ВАШЕГО_СЕРВЕРА_ЛЭРС
и СОХРАНЁННЫЙ_ТОКЕН
на правильные значения.
После перезагрузки Home Assistant данные по точке учёта будут запрошены. Они могут отображаться в панелях, или использоваться для автоматизации.
1 лайк
можете привести пример файла configuration.yaml опрашивающего несколько точек учёта?
achi
(Антон Чичков)
10.Январь.2024 09:48:53
3
Не пробовал, но по логике должно быть так:
rest:
- resource: https://АДРЕС_ВАШЕГО_СЕРВЕРА_ЛЭРС/api/v1/Data/MeasurePoints/ИДЕНТИФИКАТОР_ТОЧКИ_УЧЁТА/Totals/Last
scan_interval: 1500
headers:
Authorization: Bearer СОХРАНЁННЫЙ_ТОКЕН
sensor:
- name: Total Boiler
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'Ap') | list | first).value | round(0) }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
- name: Day Boiler
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'Ap2') | list | first).value | round(0) }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
- name: Night Boiler
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'Ap1') | list | first).value | round(0) }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
- resource: https://АДРЕС_ВАШЕГО_СЕРВЕРА_ЛЭРС/api/v1/Data/MeasurePoints/ИДЕНТИФИКАТОР_ВТОРОЙ_ТОЧКИ_УЧЁТА/Totals/Last
scan_interval: 1500
headers:
Authorization: Bearer СОХРАНЁННЫЙ_ТОКЕН
sensor:
- name: Total Something Other
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'Ap') | list | first).value | round(0) }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
- name: Day Something Other
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'Ap2') | list | first).value | round(0) }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
- name: Night Something Other
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'Ap1') | list | first).value | round(0) }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total"
да, зафурыкало. Была ошибка в токене. Отопление и стоки некуда прицепить…
achi
(Антон Чичков)
11.Январь.2024 00:27:19
5
Вроде, можно создать собственную карточку и привязать к ней что нужно.
7in
11.Январь.2024 19:06:46
6
Спасибо! Все работает.
Приведу пример конфигурации для точки учета ЦО с выводом текущей температуры и расхода:
rest:
- scan_interval: 1500
resource: http://IP:10000/api/v1/Data/MeasurePoints/34/Consumption/Last
headers:
Authorization: Bearer СОХРАНЁННЫЙ_ТОКЕН
sensor:
- name: Темп. Обратка ЦО
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'T_out') | list | first).value | round(0) }}"
unit_of_measurement: "°C"
device_class: "temperature"
state_class: "measurement"
- name: Темп. Подача ЦО
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'T_in') | list | first).value | round(0) }}"
unit_of_measurement: "°C"
device_class: "temperature"
state_class: "measurement"
- name: Расход ЦО
value_template: "{{ (value_json['values'] | selectattr('dataParameter', 'eq', 'V_in') | list | first).value | round(0) }}"
unit_of_measurement: "m³/h"
device_class: "water"
state_class: "measurement"