Difference between revisions of "Connectivity/AdvHeartBeat"
From ESS-WIKI
(→Client Site) |
(→AdvHeartBeat Protocol) |
||
Line 69: | Line 69: | ||
=AdvHeartBeat Protocol= | =AdvHeartBeat Protocol= | ||
− | |||
− | |||
− | |||
− | |||
− | |||
==AdvHeartBeat Topic & Payload== | ==AdvHeartBeat Topic & Payload== | ||
Topic: /cagent/admin/<devID>/notify | Topic: /cagent/admin/<devID>/notify | ||
Line 80: | Line 75: | ||
Payload: ~ 35 character | Payload: ~ 35 character | ||
{"hb":{"devID":"0017000E40000001"}} | {"hb":{"devID":"0017000E40000001"}} | ||
+ | |||
+ | ==Client Site== | ||
+ | :Agent needs send "AdvHeartBeat" message ( refer to AdvHeartBeat Topic & Payload ) by period as below picture. | ||
+ | |||
+ | [[File:AdvHeartBeat-FC-1.jpg|500x500px|AdvHeartBeat Protocol]] | ||
+ | |||
+ | |||
+ | ==Server Site== | ||
+ | #Server updates latest update time after receiving a AdvHeartBeat message at this AdvHeartBeat table list ( NoSQL ). | ||
+ | #Server need to check update time from AdvHeartBeat Table only. | ||
+ | #If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate => 3 x 60 = 180 sec tolerate drop 2 AdvHeartBeat MSG ). | ||
+ | ##If it is timeout & status is connected => then change status to disconnect & send a re-connect message to this device | ||
+ | #If server check there is latest AdvHeartBeat message in table but there are not device information in device list table ( SQL ). | ||
+ | ##Server sends a re-connect message to this device. |
Revision as of 07:46, 1 July 2016
Contents
How to confirm the Agent supports "AdvHeartBeat" protocol?
1. Check the version in deviceinfo
Agent will support "AdvHeartBeat" in version "3.2". >= 3.2 : Agent supports AdvHeartBeat < 3.2 : Agent doesn't support AdvHeartBeat
2. Query the parameters of "AdvHeartBeat" by "Query parameters of "AdvHeartBeat"
Parameters of "AdvHeartBeat Protocol"
Sending Rate
Unit: second Default: 60 Range: 1 ~ 0xFFFFFFFF -1 => Agent doesn't send "AdvHeartBeat" message
Query parameters of "AdvHeartBeat"
Type: Request Direction: Server -> Agent Topic: /cagent/admin/<devID>/agentcallbackreq Payload: { "susiCommData": { "commCmd": 127, "handlerName": "general", "sessionID": "123465" } }
Type: Response Direction: Agent -> Server Topic: /cagent/admin/<devID>/agentactionreq Payload: { "susiCommData": { "commCmd": 128, "handlerName": "general", "heartbeatrate": 60, "sessionID": "123465" } }
Change parameters of "AdvHeartBeat"
Type: Request Direction: Server -> Agent Topic: /cagent/admin/<devID>/agentcallbackreq Payload: { "susiCommData": { "commCmd": 129, "handlerName": "general", "heartbeatrate": 20, "sessionID": "123465" } }
Type: Response Direction: Agent -> Server Topic: /cagent/admin/<devID>/agentactionreq Payload: { "susiCommData": { "commCmd": 130, "handlerName": "general", "result":"SUCCESS", //or "FALSE" "sessionID": "123465" } }
AdvHeartBeat Protocol
AdvHeartBeat Topic & Payload
Topic: /cagent/admin/<devID>/notify QoS: 0 Retained: 0 Payload: ~ 35 character {"hb":{"devID":"0017000E40000001"}}
Client Site
- Agent needs send "AdvHeartBeat" message ( refer to AdvHeartBeat Topic & Payload ) by period as below picture.
Server Site
- Server updates latest update time after receiving a AdvHeartBeat message at this AdvHeartBeat table list ( NoSQL ).
- Server need to check update time from AdvHeartBeat Table only.
- If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate => 3 x 60 = 180 sec tolerate drop 2 AdvHeartBeat MSG ).
- If it is timeout & status is connected => then change status to disconnect & send a re-connect message to this device
- If server check there is latest AdvHeartBeat message in table but there are not device information in device list table ( SQL ).
- Server sends a re-connect message to this device.