Difference between revisions of "Connectivity/Agent Communication Protocol in MQTT"
From ESS-WIKI
Eric.liang (talk | contribs) |
Eric.liang (talk | contribs) |
||
| Line 95: | Line 95: | ||
"sendTS":160081026 | "sendTS":160081026 | ||
} | } | ||
| + | } | ||
| + | |||
| + | == Will Message == | ||
| + | |||
| + | *Description: While Client lost connection or keep-alive timeout, the will message will send to the client that subscribe the topic | ||
| + | *Type: Info | ||
| + | *Direction: Agent -> Broker | ||
| + | *Topic: /cagent/admin/devId/willmessage | ||
| + | *QoS: 0 | ||
| + | *Retained: 0 | ||
| + | *Payload: | ||
| + | |||
| + | { | ||
| + | "susiCommData": { | ||
| + | "devID": "000014DAE996BE04", | ||
| + | "hostname": "PC001104", | ||
| + | "sn": "14DAE996BE04", | ||
| + | "mac": "14DAE996BE04", | ||
| + | "version": "1.0.0.0", | ||
| + | "type": "IPC", | ||
| + | "product": "", | ||
| + | "manufacture": "", | ||
| + | "account": "anonymous", | ||
| + | "password": "", | ||
| + | "status": 0, | ||
| + | "commCmd": 1, | ||
| + | "requestID": 21, | ||
| + | "agentID": "000014DAE996BE04", | ||
| + | "handlerName": "general", | ||
| + | "sendTS": 1423536737 | ||
| + | } | ||
} | } | ||
| Line 141: | Line 172: | ||
} | } | ||
<div><br/></div> | <div><br/></div> | ||
| − | |||
== Auto Update Sensor Data Value == | == Auto Update Sensor Data Value == | ||
Revision as of 06:13, 15 June 2017
Contents
Overview
- Introduction for "WISEAgent communication protocol". WISEAgent communication protocol is base on standard MQTT protocol. We also define Advantech IoT Topic and message in JSON format. Follow standard to design our [Sensor Format in JSON ]
Protocol
Connect
- Description: Agent Client sends the "Connect Info" to RMM Server for on-line notification.
- Type: Info
- Direction: Agent -> Server
- Topic: /cagent/admin/<devID>/agentinfoack
- QoS: 2
- Retained: 0
- Payload:
{
"susiCommData": {
"devID":"0017000E40000001",
"hostname":"AAA",
"sn":"0017000E40000001",
"mac":"0017000E40000001",
"version":"3.1.23",
"type":"SenHub",
"product":"WISE-1020",
"manufacture":"",
"status":"1",
"commCmd":1,
"requestID":30002,
"agentID":"0017000E40000001",
"handlerName":"general",
"sendTS":160081026
}
}
OS Info
- Description: Agent Client sends the OS Info" to RMM Server for device OS information.
- Type: Info
- Direction: Agent -> Server
- Topic: /cagent/admin/<devID>/agentactionreq
- QoS: 0
- Retained: 0
- Payload:
{
"susiCommData":{
"osInfo":
{
"cagentVersion":"3.1.23",
"cagentType":"IoTGW",
"osVersion":"SnailOS",
"biosVersion":"",
"platformName":"",
"processorName":"SnailGW",
"osArch":"SnailX86",
"totalPhysMemKB":123,
"macs":"000E40ABCDEF",
"IP":"192.168.0.100"
},
"commCmd":116,
"requestID":109,
"agentID":"0000000E40ABCDEF",
"handlerName":"general",
"sendTS":1466730390
}
}
Disconnect
- Description: Agent Client sends the "Disconnect Info" to Server for off-line notification.
- Type: Info
- Direction: Agent -> Server
- Topic: /cagent/admin/<devID>/agentinfoack
- QoS: 2
- Retained: 0
- Payload:
{
"susiCommData": {
"devID":"0017000E40000001",
"hostname":"AAA",
"sn":"0017000E40000001",
"mac":"0017000E40000001",
"version":"3.1.23",
"type":"SenHub",
"product":"WISE-1020",
"manufacture":"",
"status":"0",
"commCmd":1,
"requestID":30002,
"agentID":"0017000E40000001",
"handlerName":"general",
"sendTS":160081026
}
}
Will Message
- Description: While Client lost connection or keep-alive timeout, the will message will send to the client that subscribe the topic
- Type: Info
- Direction: Agent -> Broker
- Topic: /cagent/admin/devId/willmessage
- QoS: 0
- Retained: 0
- Payload:
{
"susiCommData": {
"devID": "000014DAE996BE04",
"hostname": "PC001104",
"sn": "14DAE996BE04",
"mac": "14DAE996BE04",
"version": "1.0.0.0",
"type": "IPC",
"product": "",
"manufacture": "",
"account": "anonymous",
"password": "",
"status": 0,
"commCmd": 1,
"requestID": 21,
"agentID": "000014DAE996BE04",
"handlerName": "general",
"sendTS": 1423536737
}
}
Info or Update Device's Capability
- Description: Agent will send it's capability to Server for description all resource.
- Type: Auto update
- Direction: Agent-> Server
- Topic: /cagent/admin/<devID>/agentactionreq
- QoS: 0
- Retained: 0
- Payload:
Example: SenHub's Capability
{
"susiCommData":{
"infoSpec": {
"SenHub": {
"SenData": {"e":[ {"n":"Temperature","u":"Cel","v":0.000000,"min":-100.000000,"max":200.000000,"asm":"r","type":"d","rt":"ucum.Cel","st":"ipso","exten":""},
{"n":"Humidity","u":"%","v":0.000000,"min":0.000000,"max":100.000000,"asm":"r","type":"d","rt":"ucum.%","st":"ipso","exten":""},
{"n":"GPIO1","u":"","bv":0,"min":0.000000,"max":1.000000,"asm":"r","type":"b","rt":"","st":"ipso","exten":""},
{"n":"GPIO2","u":"","bv":0,"min":0.000000,"max":1.000000,"asm":"r","type":"b","rt":"","st":"ipso","exten":""}
],
"bn":"SenData"
},
"Info": {"e":[{"n":"Name","sv":"SenHub1","asm":"rw"},
{"n":"sw","sv":"1.0.00","asm":"r"}
],
"bn":"Info"
},
"Net": {"e":[{"n":"sw","sv":"1.0.00","asm":"r"},
{"n":"Neighbor","sv":"","asm":"r"},
{"n":"Health","v":"100.000000","asm":"r"}
],
"bn":"Net"
}
}
},
"commCmd":2052,
"requestID":2001,
"agentID":"0017000E40000001",
"handlerName":"general",
"sendTS":160081024
}
}
Auto Update Sensor Data Value
- Description: Agent will update latest value to server.
- Type: Auto update
- Direction: Agent-> Server
- Topic: /cagent/admin/<devID>/deviceinfo
- QoS: 0
- Retained: 0
- Payload:
{
"susiCommData":{
"data":{
"SenHub":{
"SenData":{
"e":[
{
"n":"Temperature",
"v":1
},
{
"n":"Humidity",
"v":57
},
{
"n":"GPIO1",
"bv":0
},
{
"n":"GPIO2",
"bv":0
}
],
"bn":"SenData"
},
"ver":1
}
},
"commCmd":2055,
"requestID":2001,
"agentID":"0017000E40000001",
"handlerName":"general",
"sendTS":160081031
}
}
Get Sensor Data
- Description: Server can send mqtt message to get sensor data value.
- Type: Request
- Direction: Server -> Agent
- Topic: /cagent/admin/<devID>/agentcallbackreq
- QoS: 0
- Retained: 0
- Payload:
{
"susiCommData":{
"sessionID":"2746E3B65BAB115338B9668CDC5C35C4",
"sensorIDList":{
"e":[
{
"n":"SenHub/Info/sw"
}
]
},
"commCmd":523,
"requestID":0,
"agentID":"",
"handlerName":"SenHub",
"sendTS":1466057267
}
}
- Description: Agent will reply its data value.
- Type: Reply
- Direction: Agent -> Server
- Topic: /cagent/admin/<devID>/agentactionreq
- QoS: 0
- Retained: 0
- Payload:
{
"susiCommData":{
"commCmd":524,
"handlerName":"SenHub",
"sessionID":"2746E3B65BAB115338B9668CDC5C35C4",
"sensorInfoList":{
"e":[
{
"n":"/Info/sw",
"sv":"1.0.00",
"StatusCode":200
}
]
}
}
}
Set Sensor Data
- Description: Server can send mqtt message to set sensor data value.
- Type: Request
- Direction: Server -> Agent
- Topic: /cagent/admin/<devID>/agentcallbackreq
- QoS: 0
- Retained: 0
- Payload:
{
"susiCommData":{
"sensorIDList":{
"e":[
{
"sv":"SenHub1",
"n":"SenHub/Info/Name"
}
]
},
"sessionID":"4DDF0B6DE2773176095F55E8C930507A",
"commCmd":525,
"requestID":0,
"agentID":"",
"handlerName":"SenHub",
"sendTS":1466088605
}
}
- Description: Agent will reply its result.
- Type: Reply
- Direction: Agent -> Server
- Topic: /cagent/admin/<devID>/agentactionreq
- QoS: 0
- Retained: 0
- Payload:
{
"susiCommData":{
"commCmd":526,
"handlerName":"SenHub",
"sessionID":"4DDF0B6DE2773176095F55E8C930507A",
"sensorInfoList":{
"e":[
{
"n":"/Info/Name",
"sv":"Success",
"StatusCode":200
}
]
}
}
}
EventNotify
- Description:
- Type: Auto update
- Direction: Agent -> Server
- Topic: /cagent/admin/<devID>/eventnotify
- QoS: ?
- Retained: ?
- Payload:
{
"susiCommData":{
"commCmd":2059,
"requestID":2001,
"agentID":"000014DAE996BE04",
"handlerName":"general",
"sendTS":1453356274,
"eventnotify":{
"subtype":"predictError", #predictError/predictInfo
"msg":"HDD smart 5 over the threshold",
"severity":2,
"handler":"MsgGen",
"extMsg":{
"predictMsg":{
"health":"Sick",
"suggestion1":"Please back up your HDD data. The HDD has the probability to break down in 30 days.",
"deviceName":"ST9250315AS"
},
"alertMsg":{
"warning":"Yes",
"suggestion1":"Please lower the environment temperature under 40C.",
"suggestion2":"Please make sure the cooling system is working properly.",
"deviceName":"ST9250315AS"
}
}
}
}
}
severity:
Severity_Emergency = 0,
Severity_Alert = 1,
Severity_Critical = 2,
Severity_Error = 3,
Severity_Warning = 4,
Severity_Informational = 5,
Severity_Debug = 6,
subtype:
THRESHOLD_CHECK_INFO
THRESHOLD_CHECK_ERROR