Architecture
Topic Overview
Topic Category | Topic | Content | Publisher | Subscriber |
---|---|---|---|---|
Device Status Report | iot/{gw}/{device}/status | { "status":"CONNECTED", "time":1524448722} | Gateway | Platform |
Device Data Report | iot/{gw}/{device}/data | { "type":"MeasureData", "values":{ "blood_oxygen":96, "heart_rate":64 }, "time":1524448722} | Gateway | Platform |
Device Command | iot/{gw}/{device}/command | { "type":"StartMeasure", "args":{ } } | Platform | Gateway |
Device Command Response | iot/{gw}/{device}/command_reply | { "type":"StartMeasure", "result":{ "status":"ok", "detail":""}} | Gateway | Platform |
Server Ping to Gateway | iot/{gw}/connect/ping | {} | Platform | Gateway |
Gateway Ping Response to Server | iot/{gw}/connect/pingresp | {} | Gateway | Platform |
Gateway Will Topic | iot/{gw}/connect/will | {} | Broker | Platform |
Gateway Devices Topic When Connected | iot/{gw}/sub_devices/dev_list | There may be two types of messages: 1. Gateway Side Err msg: { "err_msg": "xxx"} 2. Devices List Of Gateways: [{ "name": "Pulse Oximeter Watch 1", "deveui": "2CAB33CC8FFA", "product_name": "Prince-100G", "product_category": "watch"}, { "name": "Blood Pressure Monitor\t1", "deveui": "D1F001013720", "product_name": "U80M", "product_category": "blood_pressure"}] |
Gateway | Platform |
Flow Chart
Device Status Report
Device Data Report
Device Command
Gateway Devices Topic When Connected
Topic Details
Device Status Report
Field | Field Description | Type | Optional | Example |
---|---|---|---|---|
status | Device status, CONNECTED or DISCONNECTED | string | Required | CONNECTED |
time | Timestamp (seconds since the Unix epoch) | number | Required | 1524448722 |
Device Data Report
Field | Field Description | Type | Optional | Example |
---|---|---|---|---|
device.mac | Device Mac | string | Required | 2cab33cc8ffa |
device.make | Manufacturer | string | Required | ATH |
device.model | Product name | string | Required | Prince-100G |
measure.type | Type of measure data | string | Required | pulseox |
measure.time | UTC represented in ISO8601 format using the timezone representation +00:00 | string | Required | 2023-11-23T11:59:05+00:00 |
measure.data | Measure data of device | JSON | Required | {"heartRate":{"value":69,"unit":"bpm"},"spo2":{"value":98,"unit":"%"}} |
Complete example:
{
"device": {
"mac": "2cab33cc8ffa",
"make": "ATH",
"model": "Prince-100G"
},
"measure": {
"type": "pulseox",
"time": "2023-11-23T11:59:05+00:00",
"data": {
"heartRate": {
"value": 69,
"unit": "bpm"
},
"spo2": {
"value": 98,
"unit": "%"
}
}
}
}
Measure Data supported by the device refers to Supported Devices
Device Command
Field | Field Description | Type | Optional | Example |
---|---|---|---|---|
type | Type of command | string | Required | StartMeasure |
args | Command args | JSON | Required | {} |
Commands supported by the device refers to Supported Devices
Device Command Response
Field | Field Description | Type | Optional | Example |
---|---|---|---|---|
type | Type of command | string | Required | StartMeasure |
result | Result of command | JSON | Required | |
result.status | command result statusOk or Fail | string | ok | |
result.detail | command result detail | string | Optional |
Gateway Devices Topic When Connected
Gateway Side Err msg
Field | Field Description | Type | Optional | Example |
---|---|---|---|---|
err_msg | Gateway side error msg, when gateway get value from nvs | string | Required | {\"err_msg\":\"xxx\"} |
Devices List Of Gateways
Field | Field Description | Type | Optional | Example |
---|---|---|---|---|
name | Device name | string | Required | Pulse Oximeter Watch 1 |
deveui | Device mac | String | Required | 2CAB33CC8FFA |
product_name | Product name | String | Required | Prince-100G |
product_category | Product category | String | Required | watch |