5.2 IoT ağ geçidi (/IoTGateway , WebSocket)

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > Netsim System Agent İstemci Protokolü Referansı > 5. Mesaj kuyruğu ve kanallar >

5.2 IoT ağ geçidi (/IoTGateway , WebSocket)

İşlemci IoTGateway, kendi oturum yöneticisiyle (IoTGateway). Her ileti JSON bir metin çerçevesidir, command alanıyla seçilir; hata yanıtı {"result": false, "message": …}. Cihaz tanımları MASTER'ın iot$device tablosundadır (kılavuz "IoT cihazları ve cihaz istemcileri"). İki tür bağlantı vardır:

  • Cihaz (cihaz görevi, iot$legacy_device): deviceConnect {deviceId, secretKey}, getDeviceInfo {deviceId}, valuesChanged {values} (yanıtsız; feedback: true ile {result, messageId, subscriberCount}), setStates {states} (her değer metin olarak saklanır), getNextMQMessage (kendisine gelen setValues).
  • Düğüm (istemci, ör. TIoTDeviceDataSet): login {userName, password} (MASTER login'i), logout, subscribe / unsubscribe {deviceId}, getValues {deviceId, sequence?, keepMessage?}, getStates {deviceId, keys?}; yönetici (SYSADMIN) ayrıca setValues {deviceId, values}, setStates {deviceId, states}, getDeviceList, getDeviceInfo {deviceId}.

Abonenin kuyruğuna ileti girince ağ geçidi {"command": "notification", "notification": "MessageQueueChanged"} çerçevesi yollar; istemci getValues ile alır: {"result": true, "waitingMessages": n, "sequence": n, "messageId": "…", "topic": "<deviceId>", "values": {…}}. Bir oturum birden çok cihaza aboneyse iletiler tek kuyruktan gelir, topic ile ayrılır. values'un biçimi cihaz sınıfınındır; ham metin cihazlarında (COM, TCP):

İleti values
Çerçeve {"value": "<ham çerçeve>", "timestamp": "<ISO-8601>", "frameSequence": n}
Bağlantı durumu {"event": "state", "connected": true \| false, "error": "<metin>", "timestamp": "<ISO-8601>"} (value taşımaz)

Güncel durum getStates {deviceId} → {"result": true, "values": {"connected": "true" | "false", "error": "…", "stateTime": "&lt;ISO-8601>"}} (değerler metin; kayıt yoksa {"result": false, "message": "no data found"}). Sonradan abone olan istemci ilk durumu buradan okur. setValues {deviceId, values: {"value": "<metin>"}} metni cihaza olduğu gibi yazar (istek, röle); cihaz bağlı değilse görev günlüğe yazar, istemciye ayrıca yanıt gitmez.