更新时间:2024-06-18 09:50:13下载pdf
本文介绍了涂鸦智慧行业周界设备接入方案。
涂鸦提供了接入方案,帮助周界设备快速接入 涂鸦开发者平台。方案架构如下图所示:
周界系统在涂鸦开发者平台被抽象为三种元素:周界主机、周界分区和周界防区。
周界主机:直连涂鸦边缘网关的周界报警主机,处理探测器的信号。
周界防区:报警触发器、探测器等直连周界主机的检测点。
周界分区:防区的逻辑分区,可将防区进行分组划分。布防/撤防等操作是以分区为粒度进行。如果对接系统无分区概念且整个主机统一布撤防,则可将整个主机做为一个防区进行操作。但如果主机支持单个防区单独布撤防,则可将每个防区抽象为一个分区进行操作。
周界防区主机采用 MQTT 协议接入涂鸦边缘网关并进行通信。
reqType | 功能 | 描述 | 消息类型 |
---|---|---|---|
1 | 主机设备数据上报请求指令下发 | 涂鸦边缘网关向周界主机主动发起设备的信息同步请求。 | 下发 |
2 | 主机设备数据上报 | 主机设备收到协议 1 同步请求进行数据上报,也可定时数据上报。 | 上报 |
3 | 分区数据上报请求指令下发 | 涂鸦边缘网关向周界主机发送分区信息同步请求。 | 下发 |
4 | 分区数据上报 | 主机设备收到协议 3 同步请求,进行分区数据上报,也可定时上报数据。 | 上报 |
5 | 布撤防下发 | 涂鸦边缘网关向周界主机下发布撤防消息。主机收到消息后,按分区执行布撤防。 | 下发 |
6 | 分区消音下发 | 涂鸦边缘网关向周界主机下发分区消音消息。主机收到消息后,按分区消音。 | 下发 |
7 | 防区设备数据上报请求指令下发 | 涂鸦边缘网关向周界主机下发防区设备数据上报请求指令。 | 下发 |
8 | 防区设备数据上报 | 主机设备收到协议 7 的防区设备数据上报请求,进行防区设备数据上报,也可定时上报。 | 上报 |
9 | 防区旁路/取消旁路下发 | 涂鸦边缘网关向周界主机主动发起某一防区的旁路/取消旁路请求。收到消息后,主机控制防区设备进入旁路状态/取消旁路。 | 下发 |
10 | 防区消音下发 | 涂鸦边缘网关向周界主机主动发起某一防区的防区消音请求。收到消息后,主机控制防区设备对正在告警的防区进行消音。 | 下发 |
1001 | 主机/防区设备上下线信息上报 | 主机/防区设备上下线信息上报,可定时上报。 | 上报 |
ip
:MQTT Broker 设备的 IP 地址。与涂鸦开发者平台联调时,由涂鸦提供。
port
:MQTT Broker 设备的端口。与涂鸦开发者平台联调时,由涂鸦提供。
clientId
:周界主机 ID,最大长度 32 个字符。
username
:周界厂商标识。与涂鸦开发者平台联调时,由涂鸦提供。
password
:sub(md5(cid + username), 0, 16)
。
password
生成示例:
clientId: abcd1234***
username: tu***
password: sub(md5(cid + username), 0, 16)-> c88ba730489ed678
ip
、port
、clientId
和 username
需要提前配置到周界本地网关,便于周界本地网关每次启动都能读取到这些参数,从而连上涂鸦边缘网关。
推送:gateway/perimeter/out/{gatewayID}
Payload:base64.Encode(aes.encrypt(Msg, password))
加密示例
password := "c88ba730489ed***"
payload := "{\"t\":1598010614***,\"reqId\":\"1231231***\",\"cid\":\"123122***\",\"reqType\":2,\"data\":{\"devName\":\"东大门消防区***\",\"devInstallAddr\":\"东大门***\",\"ipAddr\":\"127.0.0.1\"}}"
secPayload: "mEtVf8YFr1SvlzgWDdLaef4jSL0olvsfdk9W7mpDSof961PQOdL0J784WFuGeHj9L25sdhcXSg4lZRdUnyfmhNSMXiie5WdbeK7R5fkc/OzL3NNvOnxi8mI2R2Bq24K3AnmGEkAjFtxNa2+6XmMSgSFNAHJlZBg8H4TACvpQxXYlj2R550KKRXLEXuE8X4khLQp1VhtvIhXEimGujz8T8uBdNLCb8o2CzRquRvjosZM1DKwSxNzc5oRFyrFz****"
推送:gateway/perimeter/in/{gatewayID}
Payload:base64.Decode(aes.decrypt(Msg, password))
解密示例
password := "c88ba730489ed***"
secPayload: "mEtVf8YFr1SvlzgWDdLaef4jSL0olvsfdk9W7mpDSof961PQOdL0J784WFuGeHj9L25sdhcXSg4lZRdUnyfmhNSMXiie5WdbeK7R5fkc/OzL3NNvOnxi8mI2R2Bq24K3AnmGEkAjFtxNa2+6XmMSgSFNAHJlZBg8H4TACvpQxXYlj2R550KKRXLEXuE8X4khLQp1VhtvIhXEimGujz8T8uBdNLCb8o2CzRquRvjosZM1DKwSxNzc5oRFyrFz****"
payload := "{\"t\":1598010614***,\"reqId\":\"1231231***\",\"cid\":\"123122***\",\"reqType\":2,\"data\":{\"devName\":\"东大门消防区***\",\"devInstallAddr\":\"东大门***\",\"ipAddr\":\"127.0.0.1\"}}"
加密或解密代码示例
password := "c88ba730489ed***"
payload := "{\\\"t\\\":1598010614***,\\\"reqId\\\":\\\"1231231231***\\\",\\\"cid\\\":\\\"123122***\\\",\\\"reqType\\\":2,\\\"data\\\":{\\\"devName\\\":\\\"东大门消防区***\\\",\\\"devInstallAddr\\\":\\\"东大门***\\\",\\\"ipAddr\\\":\\\"127.0.0.1\\\"}}"
data, err := aes_ecb_psk5.Encrypt([]byte(payload), []byte(password))
t.Log(err)
base64str := base64.StdEncoding.EncodeToString(data)
t.Log(base64str)
dataE, err := base64.StdEncoding.DecodeString(base64str)
t.Log(err)
dataD, err := aes_ecb_psk5.Decrypt(dataE, []byte(password))
t.Log(err)
t.Log(string(dataD))
涂鸦边缘网关向周界主机主动发起设备的信息同步请求。主机收到后,上报主机信息。
请求参数
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 1,主机设备数据上报请求指令下发。 |
是 |
cid | String | 主机设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 1,
"data": {}
}
上报执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 1,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
主机设备收到协议 1 同步请求进行数据上报,也可定时数据上报。
上报参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 2,主机设备数据上报。 |
是 |
cid | String | 主机设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
+ devName | String | 设备名称。最大长度为 64 个字符。 | 是 |
+ devInstallAddr | String | 设备安装地址。最大长度为 64 个字符。 | 否 |
+ ipAddr | String | 设备安装地址。最大长度为 64 个字符。 | 否 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 2,
"data": {
"devName": "东大门消防区***",
"devInstallAddr": "东大门***",
"ipAddr": "127.0.0.1"
}
}
返回执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 2,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
涂鸦边缘网关向周界主机发送分区信息同步请求。主机收到后,上报分区信息。
请求参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 3,分区数据上报请求指令下发。 |
是 |
cid | String | 主机设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 3,
"data": {}
}
上报执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 3,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
主机设备收到协议 3 同步请求进行分区数据上报,也可定时上报数据。
上报参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 4,分区数据上报。 |
是 |
cid | String | 主机设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
+ areas | Array | 分区数据。 | 是 |
++ areaId | String | 分区 ID。最大长度为 64 个字符。 | 是 |
++ areaName | String | 分区名称。最大长度为 64 个字符。 | 是 |
++ pointCids | []String | 分区包含的防区设备的 cid 列表。单个 cid 最大长度为 64 个字符。 |
是 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 4,
"data": {
"areas": [{
"areaId": "a_1",
"areaName": "小区东区***",
"pointCids": [
"11112***",
"11113***",
"11114***"
]
},
{
"areaId": "a_2***",
"areaName": "小区西区***",
"pointCids": [
"11114***",
"11115***",
"11116***"
]
}
]
}
}
返回执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 4,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
涂鸦边缘网关向周界主机下发布撤防消息。主机收到消息后,按分区执行布撤防。
请求参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 5,分区布撤防下发。 |
是 |
cid | String | 主机设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
+ areaId | String | 布撤防的分区 ID。 | 是 |
+ armed | Boolean | true :布防,false :撤防 |
是 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 5,
"data": {
"areaId":"a-1",
"armed": true
}
}
上报执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 5,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
涂鸦边缘网关向周界主机下发分区消音消息。主机收到消息后,按分区消音。
请求参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 6,分区消音下发。 |
是 |
cid | String | 主机设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
+ areaId | String | 布撤防的分区 ID。 | 是 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 6,
"data": {
"areaId":"a-1",
}
}
返回执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 6,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
涂鸦边缘网关向周界主机下发防区设备数据上报请求指令。主机收到消息后,会上报防区信息。
请求参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 7,主机设备数据上报请求指令下发。 |
是 |
cid | String | 防区设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 7,
"data": {}
}
上报执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 7,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
主机设备收到协议 7 的防区设备数据上报请求进行防区设备数据上报,也可定时上报。
上报参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 8,主机设备数据上报。 |
是 |
cid | String | 主机设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
+ points | Array | 业务数据。 | 是 |
++ pointCid | String | 防区设备 cid 。最大长度为 64 个字符。 |
是 |
++ devName | String | 设备名称。最大长度为 64 个字符。 | 是 |
++ devInstallAddr | String | 设备安装地址。最大长度为 64 个字符。 | 否 |
++ ipAddr | String | 设备安装地址。最大长度为 64 个字符。 | 否 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 8,
"data": {
"points": [{
"pointCid": "p-1",
"devName": "东大门消防区***",
"devInstallAddr": "东大门***",
"ipAddr": "127.0.0.1"
},
{
"pointCid": "p-2",
"devName": "东大门消防区***",
"devInstallAddr": "东大门***",
"ipAddr": "127.0.0.1"
}
]
}
}
返回执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 8,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
涂鸦边缘网关向周界主机主动发起某一防区的旁路/取消旁路请求。收到消息后,主机控制防区设备进入旁路状态/取消旁路。
请求参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String (最大 64 字符) | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 9,防区旁路下发。 |
是 |
cid | String (最大 64 字符) | 防区设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
+ byPass | Boolean | true :旁路,false :取消旁路。 |
是 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 9,
"data": {
"byPass":true,
}
}
返回执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 9,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
涂鸦边缘网关向周界主机主动发起某一防区的防区消音请求。收到消息后,周界主机控制防区设备对正在告警的防区进行消音。
请求参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 10,防区消音下发。 |
是 |
cid | String | 防区设备 ID。建议采用设备端可读取的唯一标识作为 cid ,例如设备的 SN 号、MAC 地址和 IMEI 号等。最大长度为 64 个字符。 |
是 |
data | Object | 业务数据。 | 是 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 10,
"data": {}
}
返回执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"cid": "123***",
"reqType": 10,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
主机/防区设备上下线信息上报,可定时上报,将设备的 cid
填充入 online
或 offline
参数中。
上报参数如下:
参数 | 类型 | 描述 | 是否必传 |
---|---|---|---|
t | Long | 推送时间。 | 是 |
reqId | String | 请求流水号,推荐 UUID 生成。访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 个字符。 |
是 |
reqType | Integer | reqType = 1001,设备上下线数据上报。 |
是 |
data | Object | 业务数据。 | 是 |
+ online | []String | 主机/防区设备 cid 列表。单个 cid 最大长度为 64 个字符。 |
是 |
+ offline | []String | 主机/防区设备 cid 列表。单个 cid 最大长度为 64 个字符。 |
是 |
Msg 消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"reqType": 1001,
"data": {
"online": ["h-1","p-1"],
"offline": []
}
}
返回执行结果消息格式:
{
"t": 1598010614***,
"reqId": "1231231***",
"reqType": 1001,
"data": {
"success": true,
"msg": "sucess",
"code": 200
}
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈