ioBroker.ws
Этот адаптер используется веб-приложениями и адаптерами для связи с ioBroker с помощью веб-сокетов.
Это почти то же самое, что и...ioBroker.socketio , но не использует библиотеку socket.io, а только имитирует её.
Важное примечание: начиная с версии 4.0 этого адаптера, используются исключительно чистые WebSocket! Socket.io больше не реализован в библиотеке socket.io, а имитируется с помощью чистых WebSocket!
Пользователи могут использовать этот адаптер для подключения своих продуктов к ioBroker через веб-сокеты. Фактически, этот адаптер может использоваться echarts, vis и многими другими адаптерами для извлечения данных из ioBroker.
В каталоге с примерами вы найдете простое приложение, которое использует этот интерфейс для отображения некоторых данных.
Пользователю, использующему интерфейс socket.io, необходимо понимать основы и концепцию системы.
Полезно также почитать о структуре объектов .
Этот адаптер использует библиотеки Sentry для автоматического сообщения разработчикам об исключениях и ошибках в коде. Более подробную информацию, а также сведения о том, как отключить отправку сообщений об ошибках, см. в документации Sentry-Plugin ! Система отчетности Sentry используется начиная с js-controller 3.0.
Краткое описание концепции
Объект
Объект — это описание точки данных или группы данных. Группа может содержать другие точки данных, в этом случае она называется каналом. Если группа состоит из других каналов, в этом случае она называется устройством.
Объект представляет собой метаинформацию, описывающую точку данных и ее содержимое: максимальное/минимальное значение, единица измерения, имя, значение по умолчанию, тип значения, информация об адаптере для связи (например, IP-адрес) и так далее.
Состояние
State — это фактическое значение точки данных, представленное объектом JavaScript:
const state = {
"val": VALUE,
"ack": ACKNOWLEDGED,
"ts": TIMESTAMP, // could be converted into time with "new Date(state.ts)" (In older version of js-controller - "new Date(state.ts * 1000)")
"lc": TIMESTAMP_of_last_change,
"from": ADAPTER_NAME,
"q": QUALITY
}
Состояния изменяются очень часто по сравнению с объектами. (Обычно объекты изменяются только один раз при создании, и на этом всё.)
Благодарность
Каждый штат обладает этим атрибутом.ack Это показывает направление команды.
- Если ack=false, это означает, что какой-то другой адаптер хочет управлять (записывать) эту переменную, чтобы команда была выполнена (например, включился свет).
- Если ack=true, это означает, что устройство сообщает о новом значении (например, свет был включен вручную или было обнаружено движение).
Пример : у нас есть адаптер домашней автоматизации (HAA), к которому подключена одна лампа по указанному адресу.haa.0.lamp1 .
- Лампу можно включить вручную с помощью физического выключателя или через Wi-Fi с помощью HAA.
- Если vis хочет включить лампу через Wi-Fi, он должен установить новое значение с помощью
{ value: true, ack: false }. - Когда лампа включается, она обычно сообщает HAA о новом состоянии, и это значение должно быть немедленно перезаписано.
{ value: true, ack: true }. - Если лампа выключается вручную с помощью физического выключателя, это сообщает HAA о новом состоянии.
{ value: false, ack: true }.
Качество
Каждая точка данных имеет атрибут.q - качество .
Использование
Описание всех поддерживаемых методов можно найти здесь .
Рекомендуется использовать класс сокета для обмена данными.
Changelog
5.0.2 (2026-08-31)
- (@GermanBluefox) Updated packages
5.0.1 (2026-08-28)
- (@GermanBluefox) Updated packages
5.0.0 (2026-06-20)
- (@GermanBluefox) Updated packages
- (@GermanBluefox) Migrated to TypeScript 6.0
- (@GermanBluefox) Used a common server library for WebSockets
4.1.0 (2026-04-13)
- (@GermanBluefox) Updated packages
- (@GermanBluefox) Fixed possible bugs
4.0.0 (2026-02-17)
- (@GermanBluefox) Updated packages
- (@GermanBluefox) Removed support for node.js 18