Адаптер e3oncan для ioBroker
Примечание: Навигационные ссылки в этом документе лучше всего работают при просмотре на GitHub . Относительные ссылки на другие документы (например, data-points.md ) также открываются на GitHub.
Немецкая версия. Документация доступна: README.de.md.
Оглавление
Обзор
Устройства серии Viessmann E3 (экосистема One Base) обмениваются большими объемами данных по шине CAN. Этот адаптер подключается к этому обмену данными и делает их доступными внутри ioBroker.
Два режима работы работают независимо и могут быть объединены:
| Режим | Описание |
|---|---|
| Собирать | Пассивно прослушивает шину CAN и извлекает данные в режиме реального времени по мере обмена ими между устройствами. Запросы не отправляются. Идеально подходит для быстро меняющихся значений, таких как поток энергии. |
| UDSonCAN | Активно считывает и записывает данные с использованием протокола UDS (Universal Diagnostic Services over CAN). Необходимо для заданных значений, расписаний и данных, не передаваемых автоматически. |
Доступные режимы зависят от топологии вашего устройства. Подробности см. в разделе «Топология устройства» . Примеры использования адаптера можно найти в разделе «Клинические примеры» .
Важные части этого адаптера основаны на проекте open3e . Реализация на Python, использующая только протокол MQTT и предназначенная для сбора данных, доступна на сайте E3onCAN .
Что нового в версии 1.2.0
Используется только ESP32 на шине CAN, все передачи осуществляются по протоколу TCP/IP.
Для работы со шлюзом open3e-esp32 шине CAN Viessmann требуется только ESP32 с CAN-трансивером. Хост ioBroker не нуждается в CAN-адаптере: он взаимодействует со шлюзом полностью по TCP/IP, через REST API шлюза (чтение и запись UDS) и MQTT-брокер (пассивный прием кадров). Функциональность адаптера остается неизменной: сканирование устройств и точек данных, сбор данных, счетчики энергии, расписания и запись. Для записи дополнительно необходимо включить запись в необработанном виде на шлюзе. Локальные CAN-адаптеры продолжают работать без изменений. Настройка описана в разделе «Альтернатива: шлюз open3e-esp32» .
Необработанный интерфейс для внешних декодеров
Шлюз предоставляет необработанные данные UDS и необработанные кадры CAN для программного обеспечения, которое декодирует их самостоятельно. В режиме шлюза адаптер использует этот путь; значение байтов остается за собственным кодеком ioBroker. См. Необработанный интерфейс шлюза .
Здоровье и самоисцеление от Gateway
Состояние соединения соответствует состоянию самого шлюза. Если шлюз становится неисправным, в журнале указывается, в чем причина неисправности: в брокере или в шине CAN, и соединение помечается как разорванное. После восстановления работы шлюза адаптер перезапускается для повторного подключения.
Быстрый старт
Предварительные требования
- USB-адаптер для подключения к CAN-шине или CAN-адаптер, подключенный к внешней или внутренней CAN-шине вашего устройства Viessmann E3.
- Хост-система на базе Linux (поддерживается только Linux).
- CAN-адаптер подключен и виден в системе, например, как
can0(проверить с помощьюifconfig). - Подробную информацию о настройке CAN-адаптера см. в вики-странице проекта open3e .
Важно: Убедитесь, что во время первой настройки этого адаптера не запущен ни один другой клиент UDSonCAN (например, open3e). Параллельная связь UDS приведет к ошибкам в обоих приложениях.
Первоначальная настройка – краткий обзор
- Установите адаптер и откройте диалоговое окно его настройки.
- Настройте свой CAN-адаптер(ы) на вкладке «CAN-адаптер» и сохраните изменения.
- Выполните поиск устройств E3 на вкладке «Список устройств UDS» .
- Поиск точек данных на вкладке «Список точек данных» (занимает до 5 минут).
- На вкладке «Задания» настройте расписание чтения и сохраните его.
Подробные шаги описаны в руководстве по настройке, приведенном ниже.
Руководство по настройке
Шаг 1 – CAN-адаптер
Откройте диалоговое окно настройки адаптера и перейдите на вкладку «CAN-адаптер» .
- Введите название вашего CAN-интерфейса (по умолчанию:
can0). - Установите флажок «Подключиться к адаптеру» для каждого интерфейса, который вы хотите использовать.
- Нажмите СОХРАНИТЬ . Экземпляр адаптера перезапустится и подключится к шине CAN.
Если у вас есть вторая шина CAN (например, внутренняя шина), настройте её здесь как второй адаптер. После настройки второго адаптера появится вторая вкладка «Назначения» .
Альтернативный вариант: шлюз open3e-esp32
Вместо локального CAN-адаптера, считывание данных с шины может осуществляться через шлюз open3e-esp32 . Установите тип подключения на «шлюз open3e-esp32» для данной шины и заполните следующие поля:
- REST-адрес шлюза , например
http://open3e-esp32.local - URL-адрес MQTT-брокера шлюза , например
mqtt://broker.localа также базовую тему MQTT . Базовая тема должна совпадать с темой шлюза.mqtt.baseTopicнастройка (по умолчанию)open3e). - Имя пользователя и пароль MQTT , если они требуются брокеру.
При каждом запуске адаптер сообщает шлюзу, какие CAN-идентификаторы следует передавать в необработанном виде. Список формируется на основе данных с счетчиков электроэнергии и идентификаторов сбора данных ваших устройств, поэтому его не нужно настраивать на шлюзе.
Для работы шлюза требуется open3e-esp32 версии 0.2.0 или новее. Эта версия предоставляет необработанный API версии 1, ожидаемый этим адаптером, и адаптер регистрирует версию прошивки, которую он обнаруживает при каждом запуске.
Правила для режима шлюза:
- Выбор точек данных шлюзом (вкладка «Точки данных») независим от выбора ioBroker. Настройте точки данных для чтения и их расписание в ioBroker как обычно; open3e-esp32 одновременно опрашивает и публикует свой собственный выбор в свои собственные декодированные MQTT-темы, и эти два процесса не мешают друг другу. Единственная настройка, которой управляет адаптер на шлюзе, — это список передаваемых необработанных CAN ID (см. выше): изменение, внесенное вручную в веб-интерфейсе шлюза, сохраняется только до следующего перезапуска адаптера.
- Для записи точек данных требуется параметр Rohes Schreiben на шлюзе. В режиме шлюза каждая запись проходит через необработанный путь записи шлюза. Включите параметр Rohes Schreiben freigeben в настройках шлюза → вкладка «Шина» , рядом с параметром Schreiben freigeben . Адаптер никогда не устанавливает этот параметр самостоятельно, поскольку он обходит проверки точек данных open3e.
- По шине может обмениваться данными только один ведущий узел. Не запускайте другой экземпляр open3e, например, на Raspberry Pi, на той же шине.
Шаг 2 – Сканирование устройства и обнаружение счетчика электроэнергии
Перейдите на вкладку «Список устройств UDS» и нажмите кнопку «Сканировать» .
- Сканирование занимает несколько секунд. Вы можете отслеживать ход выполнения в журнале адаптера (откройте вторую вкладку браузера).
- Будут перечислены все устройства E3, обнаруженные на шине. Вы можете переименовывать устройства во втором столбце — эти имена используются в качестве идентификаторов в дереве объектов ioBroker.
- После завершения нажмите кнопку СОХРАНИТЬ . Экземпляр перезапустится.
В процессе сканирования устройства адаптер также считывает конфигурацию формата данных устройства (точка данных 382), включая единицы измерения температуры (°C или °F) и форматы даты/времени. Эти данные сохраняются и используются при последующих сканированиях точек данных.
Обнаружение счетчика электроэнергии
Во время сканирования устройств адаптер пассивно прослушивает шину CAN на предмет сигналов от счетчиков электроэнергии E380 и E3100CB. Дополнительное время сканирования не требуется — обнаружение происходит параллельно. Результат сохраняется и отображается:
- В диалоговом окне настройки адаптера (вкладка «Список устройств UDS» ) в виде текстового описания.
- На странице данных e3oncan представлены отдельные карточки для каждого обнаруженного типа счетчика (см. ниже ).
Шаг 3 – Сканирование точек данных
Перейдите на вкладку «Список точек данных» , нажмите «Начать сканирование…» и подтвердите нажатием кнопки «ОК» .
Наберитесь терпения – сканирование может занять до 5 минут. Ход выполнения отображается в журнале адаптера.
Что делает сканирование:
- Обнаруживает все доступные точки данных для каждого устройства.
- Добавляет метаданные (описание, единица измерения, доступ для чтения/записи) к каждому объекту точки данных.
- Устанавливает физические единицы измерения на основе конфигурации формата устройства, полученной на шаге 2.
- Создает полное дерево объектов для каждого устройства в ioBroker.
- Обнаруживает устройства, поддерживающие функцию Collect, пассивно прослушивая передаваемые ими временные сигналы по шине CAN (дополнительное время сканирования не требуется — работает параллельно). Для каждого обнаруженного устройства в заголовке карточки устройства на странице данных e3oncan отображается значок булавки.
Этот шаг не является строго обязательным для использования в режиме только для чтения, но настоятельно рекомендуется — и необходим, если вы хотите записать данные в какую-либо точку данных.
Перезапустите устройство после сканирования, если планируете запись. Вновь обнаруженная в результате сканирования точка данных записывается на диск немедленно, но работающий экземпляр адаптера продолжает использовать словарь точек данных, загруженный при запуске, до перезапуска. Запись в только что обнаруженную в результате сканирования точку данных завершится ошибкой «Не удалось кодировать данные», пока вы не перезапустите адаптер. Точки данных, которые были известны до сканирования, остаются без изменений.
Сохранение значений точек данных в дерево объектов во время сканирования.
По умолчанию сканирование также записывает текущее значение каждой точки данных в дерево объектов. json, raw, tree (состояния). Вы можете настроить поведение, используя опцию «Сохранять значения точек данных в дереве объектов во время сканирования» над кнопкой сканирования. Если эта опция отключена, адаптер обновляет значения и метаданные для уже существующих объектов точек данных, но не создает новые — они создаются автоматически при первом получении данных после сканирования.
Эта опция полезна, если вы хотите избежать большого количества записей состояния во время сканирования (например, в системах с большим количеством устройств). Если вы ранее запускали сканирование с сохраненными значениями и теперь хотите начать с чистого листа, вы можете безопасно удалить данные любого устройства. json, raw, или tree Вложенные объекты из дерева объектов ioBroker — адаптер автоматически создаст их заново при следующем получении данных. Примечание: удаление большого количества объектов одновременно приводит к одновременному срабатыванию множества внутренних событий ioBroker, что может кратковременно увеличить использование оперативной памяти. Удаляйте объекты небольшими партиями, если ваша система испытывает нехватку памяти.
Примечание об адаптерах истории: удаление объектов не приводит к удалению исторических данных, хранящихся в адаптере истории (History, InfluxDB, SQL). Записанные значения остаются в бэкэнде адаптера и снова отображаются на графиках после повторного создания идентификатора состояния. Однако конфигурация подписки на историю (флаг "enabled" у объекта) теряется при удалении объекта и должна быть повторно включена вручную для нового объекта.
Предупреждение: Никогда не удаляйте
infoканал (например)e3oncan.0.infoВ нем хранятся результаты сканирования, данные об обнаружении счетчика электроэнергии, задержки, активные флаги, сводки топологии шины и состояние CAN-соединения. Удаление этого файла приведет к потере конфигурации, которую невозможно будет автоматически восстановить.
Анализ топологии шины
После завершения сканирования адаптер автоматически генерирует сводку топологии шины и сохраняет её в двух состояниях. info канал: info.topology (JSON) и info.topologyHtml (HTML). Подробности см. в разделе «Анализ топологии шины» ниже.
После сканирования просмотрите и управляйте обнаруженными точками данных, используя страницу точек данных e3oncan (см. ниже ).
Шаг 4 – Задания и расписания
Рекомендуемый способ настройки расписаний чтения и режима сбора данных для каждого устройства — страница точек данных e3oncan (см. ниже ).
счетчики электроэнергии
Если при сканировании устройства были обнаружены счетчики электроэнергии E380 или E3100CB, на странице данных e3oncan появится карточка для каждого обнаруженного счетчика. Активируйте сбор данных с помощью переключателя «Сбор» на карточке. Используйте поле «Задержка (с)» , чтобы установить минимальный интервал между обновлениями значений в ioBroker. Рекомендуется значение по умолчанию 5 секунд — счетчики электроэнергии передают более 20 значений в секунду, и установка этого значения на 0 создаст значительную нагрузку на ioBroker.
После завершения нажмите «Сохранить и закрыть» . Проверьте дерево объектов, чтобы убедиться, что данные собираются.
Анализ топологии шины
После сканирования точек данных адаптер анализирует все данные о топологии шины, собранные во время сканирования, и сохраняет результат в двух состояниях. info канал:
| Состояние | Роль | Содержание |
|---|---|---|
info.topology | json | Структурированный JSON: список доступных устройств UDS и всех элементов топологии, без дубликатов во всех матрицах топологии. |
info.topologyHtml | html | Отображаемая HTML-таблица, цветовая кодировка которой соответствует типу шины, с значком UDS на устройствах, также доступных через UDS. |
Отображение HTML-таблицы
Самый простой способ отобразить топологию в ioBroker — использовать инструмент панели мониторинга, который может отображать состояния в формате HTML:
- jarvis : Добавить виджет stateHTML → выбрать
e3oncan.x.info.topologyHtml. - vis / vis2 : Добавить базовый виджет – строковый (неэкранированный) или HTML- виджет → выбрать
e3oncan.x.info.topologyHtml.
Примечание:
info.topologyиinfo.topologyHtmlСостояния могут быть слишком большими для отображения в стандартном диалоговом окне редактора состояний административной панели ioBroker. Это известное ограничение административного интерфейса для состояний, содержащих большие строки. Состояния записываются корректно и могут использоваться обычным образом скриптами и виджетами.
вкладка "Точки данных e3oncan"
Страница точек данных e3oncan — это основное место для просмотра точек данных и настройки расписаний чтения UDSonCAN и режима сбора данных для каждого устройства. Она открывается в новой вкладке браузера при нажатии на кнопку ссылки «Точки данных» в строке экземпляра адаптера в представлении экземпляров администратора ioBroker.
Данные о просмотре
Все устройства и обнаруженные счетчики электроэнергии отображаются в виде разворачиваемых карточек, которые изначально свернуты, что позволяет быстро получить общий обзор всей системы. Щелкните заголовок карточки, чтобы развернуть ее. Поле поиска фильтрует данные по имени или идентификатору, и соответствующие карточки разворачиваются автоматически.
Если сканирование точек данных для устройства еще не выполнялось, в верхней части страницы отображается предупреждающий баннер в качестве напоминания. Если сканирование было выполнено, но функция автоматического обнаружения Collect, появившаяся в версии 1.x, еще не запущена, появляется информационный баннер с рекомендацией выполнить новое сканирование точек данных. Это подсказку можно навсегда закрыть для каждого экземпляра с помощью кнопки « Больше не показывать» .
Платы устройств
На каждой карточке устройства указаны точки данных с идентификатором, именем, кодеком и настройками расписания. В заголовке карточки отображается переключатель «Сбор данных» и минимальное время обновления. Если во время сканирования точек данных был обнаружен трафик сбора данных с устройства, в заголовке карточки отображается зеленая булавка в качестве подтверждения. Если какие-либо точки данных запланированы, появляется зеленый значок «N запланировано» — щелкните по нему, чтобы развернуть карточку и отобразить только запланированные точки данных. Щелкните по значку еще раз, чтобы снять фильтр; щелчок по заголовку карточки снимает фильтр и сворачивает или полностью разворачивает карточку, в зависимости от того, открывала ли ее карточка со значком.
Карты учета электроэнергии
Если в ходе сканирования устройств были обнаружены счетчики электроэнергии (см. Шаг 2 ), в верхней части страницы появится карточка для каждого обнаруженного счетчика. Используйте переключатель «Сбор данных» , чтобы активировать сбор данных, и поле «Задержка (с)» , чтобы установить минимальный интервал между обновлениями значений в ioBroker.
Планирование
Для каждой точки данных вы можете:
- Проверка при запуске – данные считываются один раз при запуске адаптера.
- Введите интервал (или интервалы) – точка данных считывается повторно с указанным интервалом.
Оба варианта можно комбинировать. Используйте фильтр расписания (Все / В начале / Интервал), чтобы быстро сосредоточиться на уже запланированных точках данных.
Топология
Кнопка «Топология» на панели инструментов открывает диаграмму топологии шины в модальном диалоговом окне. Диаграмма генерируется автоматически после сканирования каждой точки данных (см. Анализ топологии шины ). Кнопка неактивна до тех пор, пока не будут доступны данные топологии.
Сбережения
Нажмите «Сохранить» , чтобы применить изменения, не закрывая вкладку. «Сохранить и закрыть» сохраняет и закрывает вкладку, возвращая вас к представлению экземпляров. «Отменить и закрыть» закрывает вкладку без сохранения — перезапуск адаптера не запускается. Значок «Несохраненные изменения» появляется, когда есть ожидающие изменения.
Примечание: При сохранении расписания для всех устройств, отображаемых на этой вкладке, перестраиваются на основе текущего состояния пользовательского интерфейса. Расписания для устройств, не указанных здесь (например, добавленных непосредственно в диалоговом окне конфигурации адаптера), сохраняются без изменений. Если у одного и того же устройства есть расписания в обоих местах, при сохранении приоритет имеет вкладка «Точки данных». Дублирующиеся записи удаляются автоматически.
Чтение точек данных
Данные считываются автоматически в соответствии с настроенными вами расписаниями. Значения отображаются в дереве объектов ioBroker под именем устройства, организованные по категориям. json, raw и tree Вложенные объекты с удобочитаемыми именами и метаданными.
Считывание конкретной точки данных по запросу.
Вы можете запросить любую точку данных в любое время, отредактировав состояние. e3oncan.0.<DEVICE>.cmnd.udsReadByDid и ввод списка идентификаторов точек данных, например. [3350, 3351, 3352] Если точка данных доступна на устройстве, значение отобразится в дереве объектов и может быть использовано в расписаниях чтения.
В настоящее время диапазон числового сканирования ограничен (например, 256–3338 в версии 0.11.0). Используйте udsReadByDid для проверки точек данных за пределами этого диапазона.
Запись точек данных
Написание кода намеренно упрощено: изменить значение соответствующего состояния в ioBroker и сохранить его, не проверяя его. Acknowledged (ack) флажок. Адаптер обнаруживает неподтвержденную запись и отправляет ее на устройство.
Примерно через 2,5 секунды после записи адаптер считывает данные с устройства и сохраняет подтвержденное значение. Если после этого состояние не подтверждается, проверьте журнал адаптера для получения подробной информации об ошибке.
Белый список доступных для записи точек данных
Запись разрешена только для точек данных из белого списка, хранящихся по адресу:
e3oncan.0.<DEVICE>.info.udsDidsWritable
Вы можете расширить список, отредактировав это состояние. Сохраните его, не устанавливая флажок. Acknowledged.
Некоторые параметры данных нельзя изменить, даже если они внесены в белый список — устройство вернет отрицательный ответ. В этом случае адаптер повторит попытку, используя альтернативный сервис (только внутренняя шина CAN). Всегда проверяйте операции записи, убеждаясь, что значение было подтверждено.
Необработанный интерфейс шлюза
Шлюз open3e-esp32 предлагает два основных канала для программного обеспечения, которое самостоятельно декодирует данные CAN:
- ОТДЫХ:
GET /api/rawreadВозвращает неизмененные байты ответа UDS для до 10 идентификаторов точек данных на запрос.POST /api/rawwriteотправляет необработанные байты значений вместе со службой.0x2Eи только тогда, когда на шлюзе включена функция Rohes Schreiben freigeben . - MQTT: Идентификаторы CAN, указанные в шлюзе.
rawCanIdsНастройки публикуются без изменений.<base topic>/raw/<id-hex>, как{"dlc": 8, "data": "21fa01b3...", "ts": 1725455669123}.
Ни один из путей не использует кодек open3e или базу данных точек данных, поэтому ничего не декодируется и не проверяется на шлюзе. В режиме шлюза ioBroker.e3oncan использует этот интерфейс, и его собственный кодек определяет значение байтов. Подробная информация о протоколе и конечных точках сканирования приведена в файле docs/raw-gateway-api.md .
Точки данных и метаданные
Подробную информацию о структуре точек данных, работе с вариантами точек данных и метаданными, а также обработке форматов температуры/даты/времени см. в файле data-points.md .
счетчики электроэнергии
Счетчики электроэнергии обнаруживаются автоматически во время сканирования устройств. Ручная настройка не требуется. Адаптер присваивает имя состояния в дереве объектов ioBroker в зависимости от того, где был обнаружен каждый счетчик:
| Канал | CAN-адрес | Название штата |
|---|---|---|
| UDS CAN | 98 | e380 |
| UDS CAN | 97 | e380_97 |
| 2-й CAN | 98 | e380_98 |
| 2-й CAN | 97 | e380_97 |
e380 (без суффикса) используется для CAN-адреса 98 на CAN-канале UDS для сохранения обратной совместимости с существующими установками. e3100cb Этот параметр всегда используется для E3100CB.
Задержку сбора данных (по умолчанию 5 с) можно настроить для каждого типа счетчика на странице точек данных e3oncan . Изменения вступают в силу после перезапуска адаптера.
Данные и единицы измерения E380
Поддерживается подключение до двух счетчиков электроэнергии E380. Идентификаторы точек данных зависят от CAN-адреса устройства:
- CAN-адрес 97: точки данных с четными идентификаторами
- CAN-адрес 98: точки данных с нечетными идентификаторами.
| ИДЕНТИФИКАТОР | Данные | Единица |
|---|---|---|
| 592, 593 | Активная мощность L1, L2, L3, суммарная | В |
| 594, 595 | Реактивная мощность L1, L2, L3, суммарная | вар |
| 596, 597 | Абсолютный ток L1, L2, L3; cosPhi | А, — |
| 598, 599 | Напряжение L1, L2, L3; частота | В, Гц |
| 600, 601 | Совокупный импорт, экспорт | кВтч |
| 602, 603 | Полная активная мощность, полная реактивная мощность | В, вар |
| 604, 605 | Совокупный импорт | кВтч |
Данные и устройства E3100CB
| ИДЕНТИФИКАТОР | Данные | Единица |
|---|---|---|
| 1385_01 | Совокупный импорт | кВтч |
| 1385_02 | Совокупный экспорт | кВтч |
| 1385_03 | Состояние: −1 = подача электроэнергии / +1 = подача электроэнергии | — |
| 1385_04 | Суммарная активная мощность | В |
| 1385_08 | Активная мощность L1 | В |
| 1385_12 | Активная мощность L2 | В |
| 1385_16 | Активная мощность L3 | В |
| 1385_05 | Суммарная реактивная мощность | вар |
| 1385_09 | Реактивная мощность L1 | вар |
| 1385_13 | Реактивная мощность L2 | вар |
| 1385_17 | Реактивная мощность L3 | вар |
| 1385_06 | Текущий, абсолютный L1 | А |
| 1385_10 | Текущий, абсолютный L2 | А |
| 1385_14 | Текущий, абсолютный уровень L3 | А |
| 1385_07 | Напряжение L1 | В |
| 1385_11 | Напряжение L2 | В |
| 1385_15 | Напряжение L3 | В |
Часто задаваемые вопросы и ограничения
Почему стоит использовать Collect и UDsonCAN вместе?
Collect предоставляет данные в реальном времени обо всем, чем обмениваются устройства между собой – быстро меняющиеся значения, такие как поток энергии, и медленно меняющиеся значения, такие как температура, все обновляется в момент изменения. UDSonCAN позволяет получать доступ к данным, которые не передаются автоматически, как правило, к заданным значениям и параметрам конфигурации. Сочетание обоих методов дает наиболее полную и актуальную картину вашей системы.
Какие устройства поддерживают режим сбора данных?
В настоящее время протокол collect известен следующими особенностями:
- Витокал / HPMUMASTER (Получить удостоверение личности)
0x693(внутренняя шина CAN) - Vitocharge VX3 и Vitoair / EMCUMASTER (получите ID)
0x451(внешняя и внутренняя шина CAN)
Идентификаторы Collect CAN назначаются автоматически на основе имени устройства UDS во время сканирования устройств. У устройства, не указанного выше, идентификатор Collect не будет назначен автоматически; его можно ввести вручную в конфигурации адаптера.
Можно ли использовать Open3e одновременно?
Да, с условиями. Если в этом адаптере используется только режим Collect, open3e может работать параллельно без каких-либо ограничений. Если вы используете UDSonCAN, не запускайте open3e для одних и тех же устройств одновременно — это вызовет периодические ошибки связи в обоих приложениях.
Адаптер перестал работать после обновления Node.js. Что мне делать?
Начиная с версии адаптера 1.0.3, собственный модуль CAN (socketcan) использует N-API и больше не требует пересборки после обновления Node.js. Если вы используете более старую версию, сначала обновите адаптер. Если проблема сохраняется после обновления, пожалуйста, создайте заявку в службу поддержки.
Чем проект отличается от проекта open3e?
- Прямая интеграция с ioBroker: настройка через диалоги, данные отображаются непосредственно в дереве объектов.
- В дополнение к UDSonCAN доступен режим сбора данных в режиме реального времени.
- Запись данных проще: достаточно изменить значение состояния и сохранить без подтверждения.
- Протокол MQTT не требуется (хотя MQTT, конечно, доступен через стандартную конфигурацию ioBroker).
- 64-битное целочисленное кодирование для записи ограничено значениями ниже 2^52 (4 503 599 627 370 496). Декодирование корректно работает во всем 64-битном диапазоне.
Могу ли я запросить точки данных за пределами диапазона сканирования?
Да. Отредактируйте состояние. e3oncan.0.<DEVICE>.cmnd.udsReadByDid и введите список идентификаторов точек данных, например: [3350, 3351, 3352, 3353] Доступные точки данных отобразятся в дереве объектов и могут быть использованы в расписаниях чтения. Недоступные точки данных приведут к появлению сообщения «Отрицательный ответ» в журнале.
Пожертвовать
Если вам понравился этот проект — или вы просто чувствуете себя щедрым, — подумайте о том, чтобы угостить меня пивом. За ваше здоровье! :beers:
Changelog
WORK IN PROGRESS
- (MyHomeMyData) Added open3e-esp32 gateway as optional connection type per CAN bus (REST for UDS, MQTT for passively received frames)
- (MyHomeMyData) Gateway: device and data point scan run on the gateway's scan engine, with progress in the log
- (MyHomeMyData) Gateway: energy meters and Collect devices are detected as on a local bus
- (MyHomeMyData) Gateway: relayed CAN IDs are configured automatically on each start
- (MyHomeMyData) Gateway: connection state follows the gateway's health; the adapter restarts itself when the gateway recovers
- (MyHomeMyData) Requires Node.js 22.22.2 or newer, or Node.js 24.15 or newer. The adapter is tested with Node.js 22, 24 and 26
- (MyHomeMyData) Fixed the connection state after a reconnect during the device scan: a local CAN bus that stops afterwards is now reported and sets the connection state to disconnected
1.1.3 (2026-09-11)
- (MyHomeMyData) Fixed CAN connection dropping unexpectedly and never recovering on a healthy bus (updated
socketcanto 4.3.1, which stops treating a recoverable socket error the same as a real disconnect). Refer to issue #255.
1.1.2 (2026-07-16)
- (MyHomeMyData) Fixed missing update of meta data (unit, description) when user changes device specific data point definition
1.1.1 (2026-07-06)
- (MyHomeMyData) Update of list of data points for E3 devices to version 20260705 (common)
- (MyHomeMyData) Fixed duplicate display of variant data points in data point list of WebUI
1.1.0 (2026-07-05)
- (MyHomeMyData) Update of list of data points for E3 devices to version 20260701 (common) and 20260630 (variant)
- (MyHomeMyData) Added codec
O3ESwitchfor device-dependent data point structures selected by a discriminator byte - (MyHomeMyData) Added optional
decimalsparameter to numeric codecs to round decoded values - (MyHomeMyData) Added update of meta data during startup, when structure of data point has changed
1.0.3 (2026-06-02)
- (MyHomeMyData) Update of list of data points for E3 devices to version 20260528 for common and 20260527 for variant data points; For details see this changelog
- (MyHomeMyData) Suppress spurious variant-did warning when common dict covers the length
- (MyHomeMyData) User-defined variant data point structures in
udsDidsSpecificcan now be protected from automatic updates by adding"protected": true(and an optional"reason"text) to the entry; see documentation - (MyHomeMyData) Updated socketcan dependency to 4.2.1 (N-API) — the native CAN module no longer needs to be rebuilt after a Node.js upgrade
Older versions
Older changelog entries are available in CHANGELOG_OLD.md.
License
MIT License
Copyright (c) 2024-2026 MyHomeMyData juergen.bonfert@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.