Интеграция ЛЭРС УЧЁТ с Home Assistant

Home Assistant — популярная открытая платформа для домашней автоматизации и построения систем “умного дома”.

Показания ЛЭРС УЧЁТ могут быть импортированы в Home Assistant с помощью REST API интерфейса.

Для этого выполните следующие действия.

  1. Создайте пользователя, от имени которого будут запрашиваться данные из ЛЭРС УЧЁТ.
  2. При создании на закладке “Объекты/точки/помещения” задайте для пользователя доступный объект и доступные точки учёта, показания которых будут импортированы в Home Assistant.
  3. Откройте свойства созданного пользователя на закладке “Доступ” и сформируйте для него токен. Задайте дату истечения токена в будущем, через 10 лет.
  4. Сохраните полученный токен

Для получения данных потребуется идентификатор точки учёта. Вы можете получить его через веб-интерфейс. Для этого откройте объект учёта и перейдите в карточку нужной вам точки. Идентификатор будет отображаться в конце адресной строки бразуера.
image
В этом примере идентификатор нужной точки учёта 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 данные по точке учёта будут запрошены. Они могут отображаться в панелях, или использоваться для автоматизации.
image

1 лайк

можете привести пример файла configuration.yaml опрашивающего несколько точек учёта?

Не пробовал, но по логике должно быть так:

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"

да, зафурыкало. Была ошибка в токене. Отопление и стоки некуда прицепить…

Вроде, можно создать собственную карточку и привязать к ней что нужно.

Спасибо! Все работает.
Приведу пример конфигурации для точки учета ЦО с выводом текущей температуры и расхода:

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"

image