Я использую сервер Картаэлектронная WES вот уже несколько лет: это небольшая коробка, встроенная в электрическую панель и способная контролировать все потребление энергии в доме, будь то электричество через телеинформацию или метрические клещи, вода, газ и многое другое. Чрезвычайно полный сервер, которого вполне достаточно. Но Home Assistant предлагает очень хорошо продуманную энергетическую таблицу, я хотел иметь возможность интегрировать сервер WES в эту систему домашней автоматизации. Это руководство поможет вам сделать то же самое.

Предварительные условия
Вам, конечно, потребуется иметь работающий сервер WES, подключенный к сети, а также работоспособную установку Home Assistant.
Прежде всего, чтобы мой файл конфигурации Home Assistant не был перегружен, я разделил его на несколько файлов, что изначально было запланировано разработчиками. В частности, здесь у нас будет два файла:
- Sensors.yaml, в котором будут храниться настройки всех датчиков WES.
- Customize.yaml, который позволит вам настроить эти датчики так, чтобы они правильно распознавались таблицей энергопотребления Home Assistant.
Для этого просто добавьте эти строки в файлы Configuration.yaml, если их у вас еще нет:
датчик: !include Sensors.yaml
#Настройка домашнего помощника
домашний помощник:
настроить: !include customize.yaml
Создание датчиков сервера WES в Home Assistant
К сожалению, WES-сервер не предлагает MQTT-соединение, хотя об этом было объявлено уже несколько лет. Жаль, потому что это сделало бы нашу жизнь намного проще. Однако WES предоставляет несколько файлов, позволяющих прочитать собираемую им информацию. Самым полным файлом, несомненно, является data.cgx, доступный по адресу http://IP_DU_WES/data.cgx. Именно его мы и будем использовать, чтобы избежать манипулирования несколькими файлами.
В нем собрана вся полезная информация в таком виде:

Нам просто нужно указать различную информацию, необходимую в Home Assistant.
Для этого в файле Sensors.yaml (который будет создан в каталоге вашего homeassistant, если у вас его еще нет) нам нужно объявить подключение к WES-серверу:
-платформа: отдых
Имя: Весдата
#Замените IP вашего WES
ресурс: http://IP_DU_WES/data.cgx
интервал_сканирования: 60
метод: ПОЛУЧИТЬ
аутентификация: базовая
#Замените имя пользователя и пароль вашей системы
имя пользователя: администратор
пароль: Уэс
json_attributes_path: "$.data"
json_attributes:
- "тик1"
- "тик2"
- "тик3"
- «импульс»
- «зажим»
- "температура"
- «реле»
- "вход"
- "аналог"
- "виртуальный_переключатель"
- «переменные»
value_template: 'ОК'
Вам нужно будет заменить поля красного цвета для указания IP-адреса WES-сервера, а также имени пользователя и пароля, если вы не используете значения по умолчанию. Вы также можете изменить «scan_interval», чтобы опрашивать файл чаще или реже. Здесь настроен опрос каждую минуту, что хорошо подходит для большинства целей. Не нужно перегружать сервер повторными вызовами.
Далее следует описание различных датчиков. Чтобы прочитать информацию счетчика электроэнергии через Teleinfo, если вы, например, пользуетесь подпиской в часы пик/непиковое время:
вестик1hp:
Friendly_name: "Индекс часов пик"
unique_id: westernic1hp
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes| плавать }}["H_PLEINE"]
вестик1хк:
Friendly_name: "Индекс часов непиковой нагрузки"
unique_id: westernic1hc
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes| плавать }}["H_CREUSE"]
При желании вы можете настроить поля «Friendly_name»: это имена, которые будут отображаться в Home Assistant. Остальное менять не стоит.
Если вы, как и я, имеете подписку Tempo, вам нужно будет создать еще несколько датчиков:
#If Tempo подписка
вестик1блеуп:
Friendly_name: "Индекс часов синего пика"
unique_id: westernic1bleuhp
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes | плавать }}["BBRHPJB"]
вестик1блеуц:
Friendly_name: "Синий индекс часов непиковой нагрузки"
unique_id: westernic1bleuhc
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes| плавать }}["BBRHCJB"]
вестик1бланчп:
Friendly_name: "Индекс часов белого пика"
unique_id: westernic1blanchp
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes | плавать }}["BBRHPJW"]
вестик1бланч:
Friendly_name: "Индекс белого времени в непиковое время"
unique_id: westernic1blanchc
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes| плавать }}["BBRHCJW"]
westernic1rougehp:
Friendly_name: "Индекс часов красного пика"
unique_id: westernic1rougehp
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes | плавать }}["BBRHPJR"]
Westic1Rougehc:
Friendly_name: "Красный индекс часов непиковой нагрузки"
unique_id: westernic1rougehc
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes| плавать }}["BBRHCJR"]
Мы также можем получить информацию, касающуюся впрыска (если у вас есть контракт на производство энергии), мгновенного потребления или даже напряжения:
вестик1индж:
Friendly_name: "Инъекция индекса"
unique_id: westernic1inj
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes| плавать }}["INJECTION"]
вестик1пап:
Friendly_name: "Мгновенное потребление"
unique_id: westernic1pap
класс_устройства: кажущаяся_мощность
unit_of_measurement: 'ВА'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes| плавать }}["PAP"]
вестик1вольтаж:
Friendly_name: "Потребляемое напряжение"
unique_id: westernic1tension
класс_устройства: мощность
unit_of_measurement: 'В'
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes| плавать }} ["TENSION1"]
Дома у меня есть второй счетчик Linky для перепродажи моей солнечной продукции (договор 100% перепродажи). Сервер WES также подключен к этому счетчику, я могу получить там свою производственную информацию:
#Второй счетчик ICT, используемый здесь для фотоэлектрического производства
вестик2прод:
Friendly_name: "Индекс производства"
unique_id: westernic2prod
класс_устройства: энергия
unit_of_measurement: 'Втч'
value_template: >-
["tic2"] {{states.sensor.wesdata.attributes| плавать }}["PRODUCTEUR"]
вестик2пап:
Friendly_name: "Мгновенное потребление"
unique_id: westernic2pap
класс_устройства: кажущаяся_мощность
unit_of_measurement: 'ВА'
value_template: >-
["tic2"] {{states.sensor.wesdata.attributes| плавать }} ["PAP"]
вестик2вольтаж:
Friendly_name: «Производственное напряжение»
unique_id: westernic2tension
класс_устройства: мощность
unit_of_measurement: 'В'
value_template: >-
["tic2"] {{states.sensor.wesdata.attributes| плавать }} ["TENSION1"]
Я добавил еще один датчик, который позволяет мне иметь статус непикового времени: если Westic1tarif = 1, то мы находимся в непиковое время. Это очень полезные данные, например, в сценариях запуска определенных машин только тогда, когда мы находимся на экономическом уровне :)
# Датчик, определяющий, не в часы пик
вестик1цена:
Friendly_name: "Текущая цена"
unique_id: westernic1price
value_template: >-
["tic1"] {{states.sensor.wesdata.attributes}}["PTEC"]
wesheurecreuse:
Friendly_name: "Непиковые часы"
unique_id: wesheurecreuse
value_template: >-
["tic1"] {%, если "копать" в States.sensor.wesdata.attributes.lower() %}["PTEC"]
1
{% еще %}
0
{% конечный %}
Помимо считывания Tic (телеинформации), WES также способен контролировать потребление 4 отдельных электрических линий, используя метрические токовые клещи. Например, вы можете контролировать потребление вашего водонагревателя, зарядной станции для электромобилей, отопления и т. д. Вам нужно будет использовать этот код:
#Амперные метрические зажимы для фиксации в определенных положениях
весспенс1инст:
Friendly_name: "Мгновенный водонагреватель"
unique_id: wespice1inst
класс_устройства: текущий
unit_of_measurement: 'А'
value_template: >-
["pince"] {{states.sensor.wesdata.attributes| плавать }}["I1"]
весспенс1всего:
Friendly_name: «Общий водонагреватель»
unique_id: wespice1total
класс_устройства: энергия
unit_of_measurement: 'кВтч'
value_template: >-
["pince"] {{states.sensor.wesdata.attributes| плавать }}["INDEX1"]
весспенс1ватт:
Friendly_name: "Потребление водонагревателя"
unique_id: wespince1watt
класс_устройства: мощность
unit_of_measurement: 'Вт'
value_template: >-
По умолчанию WES сообщает только мгновенное потребление в амперах и индекс потребления. Поскольку мне также хотелось получить мгновенное потребление в ваттах, я добавил небольшой расчет, чтобы получить «wespice1watt». Вы можете изменить «Friendly_name», чтобы использовать имя, соответствующее вашему использованию. Если вы используете 4 возможных плоскогубца, просто продублируйте этот код (я предоставлю его вам полностью в файле, чтобы загрузить его позже).
Сервер WES также имеет счетчики импульсов, которые можно использовать для разных целей, например, для мониторинга потребления воды или газа. Дома первый датчик используется для отслеживания моего счетчик воды:
#Импульсные датчики, используемые, например, для воды или газа
веспульс1:
Friendly_name: "Счетчик воды"
unique_id: wespulse1
класс_устройства: вода
unit_of_measurement: 'L'
value_template: >-
["impulsion"] {{states.sensor.wesdata.attributes| плавать }} ["INDEX1"]
В зависимости от вашего использования вам нужно будет настроить имя, а также «класс_устройства» и «единицу_измерения». Вы найдете определение здесь разные возможные значения.
Другая информация может быть получена в зависимости от того, что подключено к WES. В частности, считывание температуры (до 30 датчиков!) осуществляется с помощью этого кода:
#Датчики температуры, возможно до 30
весзонде1:
Friendly_name: "Гостиная"
unique_id: wessonde1
класс_устройства: температура
unit_of_measurement: '°C'
value_template: >-
["temp"] {{states.sensor.wesdata.attributes| плавать }} ["SONDE1"]
Или состояние реле:
#Реле
весреле1:
Friendly_name: "Реле 1"
уникальный_ид: wesrelai1
value_template: >-
["relais"] {{states.sensor.wesdata.attributes| плавать }} ["RELAIS1"]
весреле2:
Friendly_name: "Реле 2"
unique_id: wesrelai2
value_template: >-
["relais"] {{states.sensor.wesdata.attributes| плавать }} ["RELAIS2"]
У нас также есть аналоговые входы, виртуальные переключатели и даже переменные.
В этом файле вы найдете полный код с правильными отступами и комментариями, которые помогут вам сориентироваться.
Разумеется, корректировать в соответствии с вашими потребностями. Со своей стороны, я использую только два измерителя TIC, 4 метрических усилителя и измеритель импульсов.
После сохранения конфигурации вам нужно будет перейти в «Инструменты разработки», затем нажать «Проверить конфигурацию», чтобы убедиться в отсутствии проблем в синтаксисе файла.

Если все в порядке, все, что вам нужно сделать, это нажать «Перезапустить».
После перезапуска Home Assistant, если вы зайдете в «Настройки» / «Устройства и службы» / «Объекты» и наберете «wes» в строке поиска, вы должны найти все датчики, созданные для WES:

Отсюда вы можете использовать их для запуска сценариев, создания информационных панелей мониторинга потребления и т. д.
НО пока не используйте их на панели управления Home Assistant Energy.
Интегрируйте WES в таблицу Home Assistant Energy
Приборная панель Home Assistant Energy действительно сделана очень хорошо. Но он принимает только индексы или счетчики общего потребления. Можно сказать, что это хорошо для WES, поскольку мы создали датчики индексов. За исключением того, что для появления в списке совместимых устройств на информационной панели Energy эти датчики должны иметь аргумент типа «state_class: total». Если этот аргумент можно поместить непосредственно в конфигурацию датчиков MQTT, то это не относится к датчикам, созданным здесь для WES, поскольку мы находимся в контексте вызовов REST, а не MQTT.
К счастью, мы можем изменить объявление датчика в файле custom.yaml, добавив код такого типа для каждого датчика, представляющего общее потребление:
датчик.westic1bleuhp:
государственный_класс: всего
устройство:
идентификаторы: «WES-сервер»
имя: «Сервер WES»
модель: "ВЕС"
производитель: «Картэлектроник»
Я оставляю вам свой полный файл здесь:
Просто поместите его в каталог homeassistant, а затем снова перезапустите Home Assistant (после проверки правильности кода).
Затем мы, наконец, можем добавить наши различные индексы на панель управления энергетикой, будь то телеинформация, потребление, производство, потребление воды и т. д.

Через некоторое время у нас появился мониторинг потребления с подробной информацией о часах непиковой и пиковой нагрузки (светло-синим цветом). Я также слежу за своим фотоэлектрическим производством желтым цветом:

Таким же образом я нахожу мониторинг потребления моего водонагревателя среди других отдельных устройств:

И вот оно!
Заключение
Постепенно перенося свою систему домашней автоматизации на Home Assistant, я потратил много времени на изучение того, как интегрировать мой WES-сервер, поскольку в отличие от Jeedom у него нет готового к использованию плагина Home Assistant. С этим связаны различные темы, в том числе:
- А сообщение на форуме производителя WES, Картаэлектронная
- А сообщение на форуме HACF
Документация Home Assistant также позволяет лучше понять, как работают устройства. Датчики ОТДЫХ.
Встроенная совместимость с MQTT значительно облегчила бы задачу, но в конечном итоге нам удалось восстановить все данные из WES, которые прекрасно можно использовать в Home Assistant, и это главное. У меня интеграция работает уже чуть больше месяца, и о проблемах не сообщалось. Я могу использовать свой WES, что избавляет меня от необходимости умножать датчики, поскольку он управляет многими вещами изначально. Если это руководство может помочь тем, кто, как и я, искал, как это сделать!