Публичное описание получения данных по Websocket
Event Stream в Rightech IoT Core
Заголовок раздела «Event Stream в Rightech IoT Core»Event Stream позволяет получать события от объектов и системы в реальном времени.
Поддерживаемые протоколы:
-
WebSocket (рекомендуется)
-
SSE (Server-Sent Events)
-
HTTP (long polling / поток)
Endpoint:
https://dev.rightech.io/events/stream
Авторизация
Заголовок раздела «Авторизация»Используется тот же токен, что и для REST API (подробнее https://rightech.io/ru/developers/http/auth)
Заголовок:
Authorization: Bearer <TOKEN>Где получить токен:см. документацию Rightech API.
Формат событий
Заголовок раздела «Формат событий»Все события имеют общий формат:
{ "_msgid": "string", "_oid": "object_id", "time": 1664803947450, "event": "event-type", "data": { ... } }| Поле | Описание |
|---|---|
| _msgid | ID сообщения |
| _oid | ID объекта |
| time | Время события (Unix, ms) |
| event | Тип события |
| data | Данные события |
Типы описаны в:
https://github.com/Rightech/rest-api/blob/master/types/events.d.ts
Подключение через WebSocket (рекомендуется)
Заголовок раздела «Подключение через WebSocket (рекомендуется)»Пример на JavaScript (браузер / Node.js)
Заголовок раздела «Пример на JavaScript (браузер / Node.js)»const token = "YOUR_API_TOKEN";const ws = new WebSocket("wss://dev.rightech.io/events/stream", { headers: { Authorization: `Bearer ${token}` },});ws.onopen = () => { console.log("Connected to Rightech event stream");};ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log("Event:", data);};ws.onerror = (err) => { console.error("WebSocket error:", err);};ws.onclose = () => { console.log("Connection closed");};В браузере заголовки могут не поддерживаться — используйте Node.js (ws) или передавайте токен через query-параметр (если разрешено сервером).
Типы событий
Заголовок раздела «Типы событий»1. object-packet — пакет от объекта
Заголовок раздела «1. object-packet — пакет от объекта»Приходит при получении данных от устройства.
{ "event": "object-packet", "data": { "_ts": 1664803947447731, "payload": "9", "temperature": 9, "time": 1664803947447, "topic": "base/state/temperature" }}Полезно для:
Заголовок раздела «Полезно для:»-
телеметрии
-
MQTT данных
-
показаний датчиков
2. object-update — изменение объекта
Заголовок раздела «2. object-update — изменение объекта»При изменении любого поля объекта.
{ "event": "object-update", "data": { "diffs": [{ "op": "replace", "path": "/description", "value": "test-02" }] }}Формат diffs соответствует:
Операции:
-
add
-
remove
-
replace
-
move
-
copy
-
test
3. Пользовательские события из автомата
Заголовок раздела «3. Пользовательские события из автомата»Вызываются через state machine / automation.
{ "event": "test-event-01", "data": { "hello": "world" }}Готовые примеры
Заголовок раздела «Готовые примеры»JS пример:
https://github.com/prohazko2/odoo-pacs/blob/main/src/pacs.js#L51
Типы событий:
https://github.com/Rightech/rest-api/blob/master/types/events.d.ts