Этот адаптер обеспечивает прямое и локальное подключение ioBroker к устройствам Victron Energy GX ( Cerbo GX, Venus GX, Ekrano GX ) — без каких-либо обходных путей через Home Assistant или облако VRM.
Для чего нужен этот адаптер?
Обеспечивает прямое и локальное подключение ioBroker к устройствам Victron GX через локальный протокол MQTT. Поддерживает чтение всех данных устройства и полное управление системами накопления энергии/инверторами через Modbus TCP.
- Все данные с устройства обнаруживаются автоматически и создаются как состояния ioBroker.
- Записываемые точки данных располагаются непосредственно под
devices.*–common.writeОтражает, включен ли в данный момент переключатель управления соответствием (Modbus / MQTT). - Работает с однофазными и трехфазными системами.
- Автоматическое определение идентификатора устройства Modbus
- Низкий расход оперативной памяти : стабильно работает при ~130 МБ.
- Виртуальные устройства через Node-RED (
dbus-victron-virtual) полностью поддерживаются
Требования
На устройстве GX:
- Включить MQTT:
Settings → Integrations → MQTT access → On - Для управления по протоколу Modbus:
Settings → Integrations → Modbus TCP Server → Enabled - Доступ на запись:
Access level → Write access allowed
В ioBroker:
- Node.js >= 22
- Администратор >= 7.7.28
Установка
Через административную панель ioBroker (рекомендуется)
Поскольку этот адаптер ещё не включен в официальный репозиторий ioBroker, установите его через вкладку npm в административном интерфейсе:
- Откройте административную панель ioBroker.
- Перейти к адаптерам
- Нажмите на значок GitHub/Cat (в правом верхнем углу).
- Выберите вкладку npm
- Входить
iobroker.victron-gxи нажмите «Установить»
После установки
- Настройте экземпляр:
- Введите IP-адрес устройства GX
- Порт MQTT:
1883(по умолчанию) - Дополнительно: управление по протоколу Modbus (регистры ESS/инвертора становятся доступными для записи через Modbus TCP).
- Дополнительно: управление по протоколу MQTT (переключатели, зарядное устройство для электромобилей, заданные значения температуры становятся доступными для записи через MQTT).
Примечание: Требуется Node.js версии не ниже 22. Если ваш ioBroker работает на Node.js версии 20, пожалуйста, сначала обновите его.
Конфигурация

| Поле | Описание |
|---|---|
| IP-адрес устройства GX | Локальный IP Cerbo/Venus/Ekrano GX |
| порт MQTT | По умолчанию: 1883 |
| Имя пользователя/пароль MQTT | Только если на GX настроена аутентификация MQTT. |
| Управление Modbus | Обеспечивает возможность записи данных ESS/инвертора (vebus, system) через Modbus TCP. |
| порт Modbus | По умолчанию: 502 |
| Управление MQTT | Позволяет записывать параметры переключателей, зарядного устройства для электромобилей и заданные значения температуры через MQTT. |
Поддерживаемые устройства
Адаптер автоматически обнаруживает все устройства, подключенные к устройству GX:

| Тип устройства | Описание |
|---|---|
battery | Системы на основе батарей (например, SerialBattery/LLT/JBD) |
vebus | Инверторы MultiPlus/Quattro |
grid | Сетевые счетчики (например, Shelly 3EM, Carlo Gavazzi) |
pvinverter | фотоэлектрические инверторы |
acload | Нагрузки переменного тока (включая Shelly 1PM с переключаемым выходом) |
switch | Переключаемые выходы (виртуальные переключатели Node-RED, Shelly Pro3/Pro4/1PM, внутреннее реле GX) |
evcharger | Зарядные устройства для электромобилей (чтение + управление) |
temperature | Датчики температуры |
meteo | Метеостанции |
tank | датчики уровня в резервуаре |
system | Обзор системы |
Структура объекта

victron-gx.0
├── devices.* → All discovered devices - common.write on the individual datapoint tells
│ │ you whether it's currently writable (see "Writable Data Points" below)
│ ├── battery.*
│ ├── vebus.* → Mode, Ac.In1.CurrentLimit, Hub4.* writable (Modbus control)
│ ├── grid.*
│ ├── pvinverter.*
│ ├── acload.<Group>.<Serial>.
│ │ ├── Ac.* → measurements (unchanged)
│ │ └── outputs.<N>. → switchable output, if the device has one (e.g. Shelly 1PM)
│ │ ├── State bool, writable (MQTT control)
│ │ ├── Status bool, read-only
│ │ ├── Name / CustomName string
│ │ └── Group string
│ ├── switch.<Group>.<Serial>.
│ │ └── outputs.<N>. → one sub-channel per output (Node-RED: one, Shelly Pro3/4: up to four)
│ │ ├── State / Status / Name / CustomName / Group (same as above)
│ ├── evcharger.<Serial>. → SetCurrent, StartStop, Mode writable (MQTT control)
│ ├── temperature.<Serial>. → Offset, Scale, FilterLength writable (MQTT control)
│ ├── meteo.*
│ ├── tank.*
│ └── system.<Serial>. → GridSetpoint, EssMode, MinimumSoc, ... writable (Modbus control);
│ also carries outputs.0.* for the GX internal relay (MQTT control)
├── overview.* → System overview (from system/0), read-only
└── info.* → Connection status
<Group> Это необязательная промежуточная папка, которая присутствует только в том случае, если для данного канала/устройства задано имя группы. Подробнее см. раздел «Интеграция с Shelly и поддержка многоканального доступа» ниже.
Список устройств (администратор)

На вкладке «Устройства» отображаются все обнаруженные устройства с указанием типа, серийного номера, имени и количества точек данных. Список можно загрузить в виде файла JSON — это полезно для запросов в службу поддержки.
Каталог тем (Администратор)

На вкладке «Все темы» отображаются все темы MQTT, отправленные устройством GX с момента последнего запуска адаптера. Темы, обработанные адаптером, отмечены знаком ✓. Каталог можно загрузить в виде файла JSON.
Записываемые точки данных
Начиная с версии 0.10.0 , отдельного модуля нет.control.* Дерево больше не существует. Каждая записываемая точка данных находится непосредственно под деревом.devices.* , прямо рядом со своими аналогами, доступными только для чтения –common.write Информация о самом объекте (а также в административном интерфейсе/визуализации) показывает, доступен ли он в данный момент для записи. Два независимых переключателя конфигурации регулируют этот параметр:
- Управление по протоколу Modbus – регистры ESS/инвертора включены.
devices.vebus.*иdevices.system.* - Управление по протоколу MQTT – переключатели (
devices.switch.*/devices.acload.*/devices.system.*выходы), зарядное устройство для электромобилей и заданные значения калибровки датчика температуры
Если переключатель выключен, точка данных все равно существует (поэтому привязки истории/визуализации и скрипты продолжают работать), ноcommon.write являетсяfalse А операции записи игнорируются с предупреждением в журнале — больше никаких незаметных операций записи в точку данных, которая выглядела доступной для записи, но на самом деле таковой не являлась.
До → после (обновление с версии 0.9.x)
| Старая версия (control.*, удалена в версии 0.10.0) | Новые (устройства.*) |
|---|---|
control.inverter.Mode | devices.vebus.<Serial>.Mode |
control.inverter.AcPowerSetpoint | devices.vebus.<Serial>.Hub4.L1.AcPowerSetpoint |
control.inverter.AcIn1CurrentLimit | devices.vebus.<Serial>.Ac.In1.CurrentLimit |
control.inverter.DisableCharge | devices.vebus.<Serial>.Hub4.DisableCharge |
control.inverter.DisableFeedIn | devices.vebus.<Serial>.Hub4.DisableFeedIn |
control.system.GridSetpoint | devices.system.<Serial>.GridSetpoint |
control.system.EssMode | devices.system.<Serial>.EssMode |
control.system.MinimumSoc | devices.system.<Serial>.MinimumSoc |
control.system.BatteryLifeState | devices.system.<Serial>.BatteryLifeState |
control.system.MaxFeedInPower | devices.system.<Serial>.MaxFeedInPower |
control.system.AcFeedInEnabled | devices.system.<Serial>.AcFeedInEnabled |
control.system.DcFeedInEnabled | devices.system.<Serial>.DcFeedInEnabled |
control.system.DvccMaxChargeCurrent | devices.system.<Serial>.DvccMaxChargeCurrent |
control.system.MaxDischargePower | devices.system.<Serial>.MaxDischargePower |
control.evcharger.<Instance>.SetCurrent | devices.evcharger.<Serial>.SetCurrent |
control.evcharger.<Instance>.StartStop | devices.evcharger.<Serial>.StartStop |
control.evcharger.<Instance>.Mode | devices.evcharger.<Serial>.Mode |
Что делать: обновите все скрипты, виджеты Vis или правила Blockly, которые ссылаются на...control.* Напрямую, и убедитесь, что соответствующий переключатель (управление Modbus / управление MQTT) включен в настройках экземпляра, если вы используете запись в любой из этих каналов. Адаптер переименовывает ключ конфигурации.controlEnabled кmodbusControlEnabled автоматически при первом запуске версии 0.10.0 (ваши настройки сохраняются) –mqttControlEnabled Остаток не изменился. Однократная очистка удаляет все остатки.control.* объектов, и при каждом запуске в версиях 0.10.x/0.11.x в качестве напоминания записывалось предупреждение (удалено в версии 0.12.0).
Теперь переключатели тоже имеют шлюзы:outputs.<N>.State Раньше запись была доступна без каких-либо условий; теперь для этого требуется включить управление MQTT , как и для всего остального, что находится в этом переключателе.
Примеры
Уставка ESS Grid Setpoint (простейший подход) – записьdevices.system.<Serial>.GridSetpoint [В]:
0→ нулевая подача электроэнергии в сеть (алгоритм Victron ESS поддерживает мощность сети на уровне 0 Вт)-3000→ подача 3000 Вт в сеть (разряд батареи)+500→ Потребляет 500 Вт от сети (зарядка аккумулятора)
Поддержание соединения не требуется — значение сохраняется постоянно.
ESS Live Setpoint (прямое управление) – записьdevices.vebus.<Serial>.Hub4.L1.AcPowerSetpoint [В]:
- Требует
devices.system.<Serial>.EssMode = 3(Внешний контроль) - Адаптер повторно отправляет значение каждые 800 мс, пока оно равно ≠ 0 (сторожевой таймер Victron).
- Установить на
0вернуть управление алгоритму Victron ESS.
Отключить зарядку/подачу электроэнергии:
devices.vebus.<Serial>.Hub4.DisableCharge = 1→ батарея не заряжаетсяdevices.vebus.<Serial>.Hub4.DisableFeedIn = 1→ Инвертор не будет подавать сигнал в сеть
Ограничения DVCC (требуется включение DVCC на GX):
devices.system.<Serial>.DvccMaxChargeCurrent[A]: общесистемное ограничение тока заряда (-1 = отключено)devices.system.<Serial>.MaxDischargePower[Вт]: предел мощности разряда
Виртуальные коммутаторы (Node-RED) – настройкаoutputs.<N>.State кtrue /false → Запись в MQTT → GX → Node-RED → ретранслятор
Зарядное устройство для электромобилей – написатьdevices.evcharger.<Serial>.SetCurrent [А] /StartStop [логическое значение] /Mode (0=Вручную, 1=Автоматически, 2=По расписанию)
Калибровка датчика температуры – записьdevices.temperature.<Serial>.Offset [°C] /Scale /FilterLength
Виртуальные устройства (Node-RED)
Адаптер полностью поддерживает виртуальные устройства, созданные через Node-RED.dbus-victron-virtual упаковка:
- Виртуальные фотоэлектрические инверторы
- Виртуальные нагрузки переменного тока
- Виртуальные коммутаторы (с групповыми и индивидуальными именами)
- Виртуальные датчики температуры
- Виртуальные метеостанции
- Виртуальные датчики резервуара
Интеграция с Shelly и многоканальная поддержка
Теперь устройства Shelly, подключенные к интеграции GX (Cerbo/Venus/Ekrano), полностью поддерживаются, наряду с виртуальными коммутаторами Node-RED:
- Shelly Pro3 / Pro4 : каждое физическое устройство сообщает о своих каналах как об отдельных экземплярах MQTT-устройств, имеющих один и тот же серийный номер. Адаптер автоматически объединяет их в единое дерево объектов.
devices.switch.<Group>.<Serial>.outputs.<0..3>.*). - Шелли 1PM : значения измерений (
Ac.*) и переключаемый выход (outputs.0.*) находятся в том же дереве устройств, что иdevices.acload.<Group>.<Serial>. - Внутреннее реле GX : реле, встроенное в само устройство GX.
system/0) переключается приdevices.system.<Serial>.outputs.0.StateПосле включения управления MQTT (см. Записываемые точки данных ).
Все переключаемые выходы — независимо от типа устройства — имеют одинаковую подструктуру, поэтому селекторы с подстановочными знаками работают по всей вашей системе:
// Every switchable output, any device type, any group
'victron-gx.0.devices.*.*.*.outputs.*.State'
// Just the custom names, for a device overview
'victron-gx.0.devices.*.*.*.outputs.*.CustomName'
⚠️ Критическое изменение (v0.9.x)
Выходы коммутатора раньше располагались непосредственно под каналом устройства; теперь они находятся под другим каналом.outputs.<N> подканал. Node-REDoutput_1 нормализовано кoutputs.1 :
| Старая версия (v0.8.x) | Новая версия (v0.9.x) |
|---|---|
devices.switch.<Group>.<Serial>.State | devices.switch.<Group>.<Serial>.outputs.1.State |
devices.switch.<Group>.<Serial>.Status | devices.switch.<Group>.<Serial>.outputs.1.Status |
Обновите все скрипты, виджеты Vis или правила Blockly, которые напрямую ссылаются на старые пути.
Если вы хотите удалить оставшиеся старые объекты, выполните следующую команду в CLI ioBroker (цикл обработки обходит известную ошибку "Invalid ID: undefined" при удалении через административный интерфейс):
iobroker object list | grep -oP 'victron-gx\.0\.devices\.switch\.[^.]+\.[^.]+\.(State|Status)