Перейти к содержимому

Публичное описание получения данных по Websocket

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": { ... } }
ПолеОписание
_msgidID сообщения
_oidID объекта
timeВремя события (Unix, ms)
eventТип события
dataДанные события

Типы описаны в:

https://github.com/Rightech/rest-api/blob/master/types/events.d.ts

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-параметр (если разрешено сервером).

Приходит при получении данных от устройства.

{
"event": "object-packet",
"data": {
"_ts": 1664803947447731,
"payload": "9",
"temperature": 9,
"time": 1664803947447,
"topic": "base/state/temperature"
}
}
  • телеметрии

  • MQTT данных

  • показаний датчиков

При изменении любого поля объекта.

{
"event": "object-update",
"data": {
"diffs": [{ "op": "replace", "path": "/description", "value": "test-02" }]
}
}

Формат diffs соответствует:

https://jsonpatch.com/

Операции:

  • add

  • remove

  • replace

  • move

  • copy

  • test

Вызываются через 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