Téigh chuig an ábhar

Sonraí beo (WebSocket)

Leis an WebSocket, faigheann tú léamha agus athruithe na ngléasanna an nóiméad a tharlaíonn siad. Úsáideann aip HAM an ceangal céanna. Le haghaidh léimh amháin ag an am, tá an REST API níos simplí.

wss://DEVICE_SERVER:9001
  • Is é DEVICE_SERVER luach an réimse device_server de gach gléas. Faigheann tú é le get_user_devices.php.
  • Is féidir le gléasanna cuntais amháin a bheith ar fhreastalaithe difriúla. Oscail ceangal amháin do gach freastalaí difriúil, ní ceangal amháin do gach gléas.
  • Caithfidh port 9001 a bheith oscailte do cheangail amach. Féach na Riachtanais líonra (do TF).

Is eagar JSON gach teachtaireacht a sheolann tú:

[command_id, payload]

Is slánuimhir é an command_id. Tosaigh ag 1 agus méadaigh é le gach teachtaireacht. Tá an command_id céanna ag an bhfreagra.

Is é 20 KiB uasmhéid teachtaireachta. Dúnann an freastalaí an ceangal má sheolann tú teachtaireacht níos mó.

Is í an chéad teachtaireacht tar éis an cheangail an fíordheimhniú:

[1, {"api_key": "YOUR_API_KEY"}]

Is féidir leat {"access_token": "YOUR_ACCESS_TOKEN"} a sheoladh freisin. Féach fíordheimhniú.

Freagra Brí
[] D’éirigh leis
["Access Denied"] Eochair nó comhartha mícheart. Dúnann an freastalaí an ceangal.
[1,[{},"Rate limit"]] An iomarca ceangal in am gearr

Teorainn cheangail: 15 in aghaidh 60 soicind d’eochair API amháin. 25 in aghaidh 60 soicind do chomhartha rochtana amháin.

2. Liostáil le gléasanna (SUBSCRIBE)

Rannán „2. Liostáil le gléasanna (SUBSCRIBE)“
[2, {"c": "SUBSCRIBE", "server": true, "serialnos": ["e11:123", "e9:456"], "unsubscribe-others": true}]
Réimse Brí
c SUBSCRIBE
server true i gcónaí
serialnos Sraithuimhreacha na ngléasanna ar an bhfreastalaí seo
unsubscribe-others true: stopann an freastalaí liostálacha níos luaithe an cheangail seo

Freagra: [2,[{},""]]. Ní thugann an freastalaí aird ar na gléasanna nach bhfuil rochtain agat orthu. Ní sheolann sé earráid dóibh.

Chun na liostálacha go léir a stopadh, seol [3, {"c": "UNSUBSCRIBE", "server": true}].

Díreach tar éis na liostála, seolann an freastalaí staid reatha gach gléis. Ansin seolann sé nuashonrú gach uair a athraíonn rud éigin.

Is oibiachtaí JSON iad na nuashonruithe, ní eagair:

{
"serialno": "e11:123",
"R": { "T": 2082, "GI": 1, "GIC": 0, "GI2": 1, "GI2C": 0 },
"O": [],
"alarms": [],
"is_local": false
}
Réimse Ábhar
serialno An gléas
R Na léamha, amh, de réir cóid léimh
O Luachanna na n-aschur, in ord output_names
T Sceidil an ghléis
S Socruithe an ghléis
previous Luachanna carnacha na tréimhse roimhe, do ghléasanna le háiritheoirí
alarms Na haláraim ghníomhacha
is_local true má tá do cheangal agus an gléas ar an líonra céanna
  • Is féidir nach mbeidh ach na réimsí a d’athraigh i nuashonrú. Cumaisc é leis an staid atá agat cheana.
  • Grúpálann an freastalaí athruithe ar feadh thart ar 100 ms sula seolann sé nuashonrú.
  • Ná tabhair aird ar theachtaireachtaí nach n-aithníonn tú.

Chun na luachanna amha a thiontú, úsáid sainmhínithe na dteaghlach. Féach an REST API.

Coinnigh an ceangal oscailte

Rannán „Coinnigh an ceangal oscailte“
  • Seolann an freastalaí pinganna WebSocket. Caithfidh do leabharlann freagra a thabhairt le pong. Déanann an chuid is mó de leabharlanna é seo go huathoibríoch.
  • Má dhúntar an ceangal, ceangail arís. Fanann an aip 100 ms an chéad uair agus 10 soicind ina dhiaidh sin.
  • Tar éis ceangail nua, seol an fíordheimhniú agus an liostáil arís.

Tá WebSocket ionsuite ag Node.js 22.

const ws = new WebSocket('wss://DEVICE_SERVER:9001');
let id = 1;
ws.onopen = () => {
ws.send(JSON.stringify([id++, { api_key: 'YOUR_API_KEY' }]));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (Array.isArray(msg) && msg.length === 0) {
ws.send(JSON.stringify([id++, {
c: 'SUBSCRIBE', server: true,
serialnos: ['e11:123'], 'unsubscribe-others': true
}]));
} else if (!Array.isArray(msg) && msg.serialno) {
console.log(msg.serialno, msg.R);
}
};

Tá sampla iomlán Node.js in nodejs_hamapi_example.zip. Tá an leabharlann hamapi.js agus an comhad example.js ann.

  1. In example.js, socraigh server, api_key agus na sraithuimhreacha.
  2. Rith npm install, ansin node example.js.

Ní cheanglaíonn an leabharlann arís nuair a dhúntar an ceangal. Cuir é seo le do chód.

Comhrá leis an tacaíocht