智能梯控接入

更新时间:2024-06-20 03:43:37下载pdf

本文介绍了涂鸦智慧行业智能梯控接入协议和具体方案。适用于将不具备与涂鸦开发者平台通信能力的梯控设备,通过涂鸦 边缘网关 实现与平台通信的能力。

方案架构

涂鸦提供了接入的方案,帮助您的梯控设备快速接入涂鸦开发者平台。梯控网关接入边缘网关的方案架构如下图所示:

智能梯控接入

梯控网关采用 MQTT 协议接入边缘网关并进行通信。

设备功能列表

序号 设备功能 功能说明 devType
1 呼梯指令下发 边缘网关发送的呼梯信息,包含外呼、内呼、内外呼 elevatorController
2 楼层状态查询指令下发 边缘网关发送的状态查询消息指令 elevatorController
3 楼层状态上报 梯控网关收到边缘网关发送的状态查询消息指令后,上报当前楼层状态 elevatorController
4 添加用户指令下发 添加用户信息 elevatorController
5 更新用户指令下发 更新用户信息 elevatorController
6 删除用户指令下发 删除用户信息 elevatorController
7 添加人脸指令下发 添加人脸信息 elevatorController
8 更新人脸指令下发 更新人脸信息 elevatorController
9 删除人脸指令下发 删除人脸信息 elevatorController
10 添加/更新二维码指令下发 添加/更新二维码信息 elevatorController
11 删除二维码指令下发 删除二维码信息 elevatorController
12 添加/更新卡信息下发 添加/更新卡信息 elevatorController
13 删除卡信息指令下发 删除卡信息 elevatorController
14 冻结卡信息下发 冻结卡信息 elevatorController
15 解冻卡信息指令下发 解冻卡信息 elevatorController
17 通行记录上报 通行信息 elevatorController
1001 设备上下线信息上报 上报设备的上线、离线消息 elevatorController
1 设备数据同步指令下发 边缘网关发送设备列表同步请求,梯控网关同步设备列表 gateway
2 设备数据同步消息上报 梯控网关收到边缘网关发送设备列表同步请求,通过该接口上报梯控网关下的梯控设备信息给边缘网关 gateway

对接协议

梯控网关用 MQTT 协议与边缘网关进行通信。其中梯控网关做客户端,边缘网关做 MQTT 代理(Broker)。

连接认证

  • ip:MQTT Broker 设备的 IP。与涂鸦开发者平台联调时,由涂鸦提供。

  • port:21883

  • clientId:即 gatewayID,表示您的梯控网关 ID。

  • username:梯控网关设备厂商标识,与涂鸦开发者平台联调时由涂鸦提供。

  • password:sub(md5(clientId + username), 0, 16)。password 生成示例:

    clientId: abcd1234
    username: tuya
    password: sub(md5(clientId + username), 0, 16)-> c88ba730489ed678
    

    ipportclientIdusername 需要提前配置到梯控网关,便于您的梯控网关每次启动都能读取到这些参数,从而连上边缘网关。

梯控网关上报消息 Topic

  • 推送:gateway/elevator/out/{gatewayID}
  • payload:base64.Encode(aes.encrypt(Msg, password))

消息示例

password: "c88ba730489ed678"
payload: "{\"t\":1598010614705,\"reqId\":\"1231231231\",\"cid\":\"123122\",\"reqType\":1,\"devType\":\"elevatorController\",\"data\":{\"actionType\":\"inCall\",\"startFloor\":1,\"endFloor\":2,\"direction\":1,\"permissionFloor\":[3]}}"
secPayload: "Qsm7rT3i7lJj1ZRHvEH5X7Mxuu0lRttpd4elASdoyyV+leNnd2C6+QQWS0xag0P1mlyAzwG1yM/GEg+vQgrk9elpAIeThHRkQi5HPEcVTiLggzKBhkbG3Q6PM7PLdnX9tLF+a0cbB/KyeLuDOSn4lH7JMgCBuxuUub2Ue87/tUTKPrGfX2U5s05zC5HJmtDJ+7c09BUz7seaEH9RgdxkcZrKXKvyuIzEmBxYW1LcA6VyQX0zKvz7+0uGcam4SX/ptB4vQUY2/nwZ7tdg2U9SGg=="

梯控网关订阅消息 Topic

  • 推送:gateway/elevator/in/{gatewayID}
  • payload:base64.Decode(aes.decrypt(Msg, password))

消息示例

password: "c88ba730489ed678"
secPayload: "Qsm7rT3i7lJj1ZRHvEH5X7Mxuu0lRttpd4elASdoyyV+leNnd2C6+QQWS0xag0P1mlyAzwG1yM/GEg+vQgrk9elpAIeThHRkQi5HPEcVTiLggzKBhkbG3Q6PM7PLdnX9tLF+a0cbB/KyeLuDOSn4lH7JMgCBuxuUub2Ue87/tUTKPrGfX2U5s05zC5HJmtDJ+7c09BUz7seaEH9RgdxkcZrKXKvyuIzEmBxYW1LcA6VyQX0zKvz7+0uGcam4SX/ptB4vQUY2/nwZ7tdg2U9SGg==
"
payload: "{\"t\":1598010614705,\"reqId\":\"1231231231\",\"cid\":\"123122\",\"reqType\":1,\"devType\":\"elevatorController\",\"data\":{\"actionType\":\"inCall\",\"startFloor\":1,\"endFloor\":2,\"direction\":1,\"permissionFloor\":[3]}}"

消息加密和解密

设备推送和接收的消息要进行 AES 加密及解密:

  • 加密解密方式:AES-ECB。
  • 加密解密密码:采用 连接认证 时使用的密码(password)。

加密或解密代码示例

password := "c88ba730489ed678"
payload := "{\"t\":1598010614705,\"reqId\":\"1231231231\",\"cid\":\"123122\",\"reqType\":1,\"devType\":\"elevatorController\",\"data\":{\"actionType\":\"inCall\",\"startFloor\":1,\"endFloor\":2,\"direction\":1,\"permissionFloor\":[3]}}"
data, err := aes_crypto.AesECBEncrypt([]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_crypto.AesECBDecrypt(dataE, []byte(password))
t.Log(err)
t.Log(string(dataD))

设备控制

呼梯指令下发

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 1,表示呼梯。
devType String 设备类型,默认 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
actionType String
  • unifycall:内外呼兼容模式。对 startFloorendFloor 字段同时生效,电梯点亮外部上下行按钮,并且在电梯到达后点亮内部楼层按钮。
  • outCall:外呼模式。对 startFloor 字段生效,endFloor 字段可为空,电梯到达 startFloor 楼层并点亮外部上下行。
  • inCall:内呼模式,确认用户在电梯内部时触发。对 endFloor 字段生效,startFloor 可为空,电梯点亮内部楼层按钮。
  • permissionCall:指给某些楼层附加楼层权限。
最大长度为 32 字符。
startFloor Integer 起始楼层。必须是物理楼层,从 1 开始。
endFloor Integer 目的楼层。必须是物理楼层,从 1 开始。
direction Integer 电梯上下行。
permissionFloor array 权限楼层。必须是物理楼层,从 1 开始。

Msg 消息格式

{
  "t":159801061****,
    "reqId":"123123****",
    "cid":"12****",
    "reqType":1,
    "devType":"elevatorController",
    "data":{
            "actionType":"inCall"/"outCall"/"permissionCall"/"unifyCall",
            "startFloor":1,
            "endFloor":2,
            "direction":1,
            "permissionFloor":[1,3],
    }

返回结果消息格式

{
  "t":159801061****,
  "reqId":"123123****",
  "cid":"12****",
  "reqType":1,
  "devType":"elevatorController",
  "data":{
  "success":true,
   "msg":"success",
   "code":200
  }
}

字段 cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

楼层状态查询指令下发

请求参数

参数 类型 描述 是否必填
t Long 推送开始时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 2,表示楼层状态查询。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
liftNum Integer 电梯井号,涂鸦不传该值

Msg 消息格式

{
    "t":159801061****,
    "reqId":123123****,
    "cid":"12****",
    "reqType":2,
    "devType":"elevatorController"
    "data":{
    "liftNum":1,
    }
}

返回结果消息格式

{
  "t":159801061****,
  "reqId":"123123****",
  "cid":"12****",
  "reqType":2,
  "devType":"elevatorController",
  "data":{
   "success":true,
   "msg":"success",
   "code":200
  }
}

cidreqIdreqTypedevType 即为订阅时的 cidreqIdreqTypedevType

楼层状态上报

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 3,表示楼层状态上报。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
liftNum Integer 电梯井号
status Integer
  • 0:停止
  • 1:上行中
  • 2:下行中
  • 3:故障
direction Integer
  • 0:上行
  • 1:下行
curFloor Integer 当前楼层。必须是物理楼层,从 1 开始。

Msg 消息格式

{
    "t":15980106****,
    "reqId":"112****",
    "reqType":3,
    "devType":"elevatorController",
    "cid":"12****",
    "data":{
        "devs":[
            {
                "liftNum":3,
                "status":0,
                "direction":0,
                "curFloor":2
            }
        ]
    }
}

订阅执行结果消息格式

{
  "t":15980106****,
  "reqId":"123123****",
  "cid":"12****",
  "reqType":3,
  "devType":"elevatorController",
  "data":{
      "success":true,
      "msg":"success",
      "code":200
  }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

用户管理

添加用户

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 4,表示添加用户信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
beginTime int64 开始时间。
endTime int64 结束时间。
idCard String ID 身份卡。最大长度为 64 字符。
secretKey String ⽤户密钥。⻓度 32 位,建议 UUID ⽣成。App 端和设备端基于同⼀个密钥⽣成动态⼆维码。最大长度为 64 字符。
refreshTime int64 ⼆维码刷新时间,默认 300000 毫秒,单位毫秒。
name String 用户名字。最大长度为 64 字符。
phone String 用户电话号。最大长度为 64 字符。
uid String 用户唯一识别 ID。最大长度为 64 字符。
permissionFloor [ ]int 权限楼层。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":4,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "beginTime":1582959882104,
        "endTime":1661666512292,
        "idCard":"123****",
        "secretKey":"wedsddfkkdsdfxdldwddiokfghed****",
        "refreshTime":300000,
        "name":"tuyaFamily",
        "phone":"1732606****",
        "uid":"3****"
        "permissionFloor":[1,3],
    }
}

返回结果消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":4,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
     "success":true,
         "msg":"success",
         "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

更新用户

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 5,表示更新用户信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
beginTime int64 开始时间。
endTime int64 结束时间。
idCard String ID 身份卡。最大长度为 64 字符。
secretKey String ⽤户密钥。⻓度 32 位,建议 UUID ⽣成。App 端和设备端基于同⼀个密钥⽣成动态⼆维码。最大长度为 64 字符。
refreshTime int64 ⼆维码刷新时间,默认 5 分钟,单位毫秒。
name String 用户名字。最大长度为 64 字符。
phone String 用户电话号。最大长度为 64 字符。
uid String 用户唯一识别 ID。最大长度为 64 字符。
permissionFloor [ ]int 权限楼层。

Msg 消息格式

{
    "t":159801061****,
    "reqId":123123****,
    "reqType":5,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "beginTime":1582959882104,
        "endTime":1661666512292,
        "idCard":"123****",
        "secretKey":"wedsddfkkdsdfxdldwddiokfghedfkfd",
        "refreshTime":300000,
        "name":"tuyaFamily",
        "phone":"1732606****",
        "uid":"3****"
        "permissionFloor":[1,3],
    }
}

返回结果消息格式

{
    "t":159801061****,
    "reqId":123123****,
    "reqType":5,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "success":true,
        "msg":"success",
        "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

删除用户

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 6,表示删除用户信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
uid String 用户唯一识别 ID。最大长度为 64 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":6,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "uid":"123****"
    }
}

返回结果消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":6,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
        "success":true,
       "msg":"success",
       "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

添加人脸

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 7,表示添加人脸信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
uid String 用户唯一识别 ID。最大长度为 64 字符。
faceid String 人脸图像唯一识别 ID。最大长度为 64 字符。
url String 人脸图像 URL。最大长度为 256 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":7,
    "devType":"elevatorController",
    "cid":"123****"
    "data":{
    "uid":"375****",
        "faceid":"663****",
        "url":"https://s1.ax1x.com/2020/07/22/****.png"
    }
}

返回结果消息格式

{
    "t":15980106****,
    "reqId":123****,
    "reqType":7,
    "devType":"elevatorController",
    "cid":"123****"
    "data":{
    "success":true,
        "msg":"success",
        "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

更新人脸

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 8,表示更新人脸信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
uid String 用户唯一识别 ID。最大长度为 64 字符。
faceid String 人脸图像唯一识别 ID。最大长度为 64 字符。
url String 人脸图像 URL。最大长度为 256 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":8,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "uid":"375****",
        "faceid":"6666",
        "url":"https://s1.ax1x.com/2020/07/22/****.png"
    }
}

返回结果消息格式

{
    "reqId":123123****,
    "reqType":8,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "success":true,
        "msg":"success",
        "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

删除人脸

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 9,表示删除人脸信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
faceid String 人脸图像唯一识别 ID。最大长度为 64 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":9,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
        "faceid":"66****"
    }
}

返回结果消息格式

{
    "reqId":123123****,
    "reqType":9,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
        "success":true,
       "msg":"success",
       "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

添加或更新二维码

设备侧维护二维码(qrcode)与人员的映射关系,识别到 qrcode 后识别对应的人员及相应的楼层信息。

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 10,表示添加/更新二维码信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
uid String 用户唯一识别 ID。最大长度为 64 字符。
qrcode String 16 位十六进制字符串。最大长度为 64 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":7,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "uid":"375****",
        "qrcode":"fff****",
    }
}

返回结果消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":10,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "success":true,
        "msg":"success",
       "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

删除二维码

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 11,表示删除二维码信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
uid String 用户唯一识别 ID。最大长度为 64 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":11,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "uid":"375****",
    }
}

返回结果消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":11,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "success":true,
        "msg":"success",
       "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

添加或更新卡信息

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 12,表示添加或更新卡信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
uid String 用户唯一识别 ID。最大长度为 64 字符。
cardId String 卡 ID。最大长度为 64 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":12,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "uid":"375****",
    "cardId":"123****"
    }
}

返回结果消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":12,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "success":true,
        "msg":"success",
        "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

卡信息删除

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 13,表示删除卡信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
cardId String 卡 ID。最大长度为 64 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":13,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "cardId":"123****"
    }
}

返回结果消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":13,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "success":true,
        "msg":"success",
       "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

冻结卡信息

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 14,表示冻结卡信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
cardId String 卡 ID。最大长度为 64 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":14,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "cardId":"12****"
    }
}

返回结果消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":14,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
        "success":true,
       "msg":"success",
      "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

卡信息解冻

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 15,表示解冻卡信息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
cardId String 卡 ID。最大长度为 64 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":15,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
    "cardId":"123****"
    }
}

返回结果消息格式

{
    "t":15980106****,
    "reqId":123123****,
    "reqType":15,
    "devType":"elevatorController",
    "cid":"12****"
    "data":{
        "success":true,
        "msg":"success",
       "code":200
    }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

卡通行记录上报

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 17,表示通行记录上报。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
liftNum Integer 电梯井号
uid String 用户 ID。最大长度为 64 字符。
startFloor Integer 刷卡楼层
endFloor Integer 目的楼层
operTime Integer 发生时间(秒)
way Integer 通行方式:
  • 1:卡
  • 2:密码
  • 3:⼆维码
  • 4:⼈脸
  • 5:指纹
  • 9:远程
  • 10:其它
imageUrl String 通行图片 URL 地址。最大长度为 256 字符。
temp float64 体温
isSuccess bool 是否成功
message String 失败信息。最大长度为 256 字符。

Msg 消息格式

{
    "t":15980106****,
    "reqId":"112****",
    "reqType":17,
    "devType":"elevatorController",
    "cid":"12****",
    "data":{
        "devs":[
            {
                "liftNum":3,
                "uid":"234****",
                "startFloor":1,
                "endFloor":2,
                "operTime": 3223454989032,
                "way": 1,
                "isSuccess": true
            }
        ]
    }
}

订阅执行结果消息格式

{
  "t":15980106****,
  "reqId":"123123****",
  "cid":"12****",
  "reqType":17,
  "devType":"elevatorController",
  "data":{
      "success":true,
      "msg":"success",
      "code":200
  }
}

设备管理

设备上下线上报

梯控设备通过梯控网关接入边缘网关,梯控网关下的设备上、下线事件,都需要上报给边缘网关。

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。推荐 UUID 生成,访客机可以根据 reqId 监听本次推送的结果。最大长度为 64 字符。
reqType Integer reqType = 1001,表示表示子设备上下线消息。
devType String 设备类型,默认为 elevatorController。最大长度为 32 字符。
cid String 三方设备 ID。建议采用设备端可读取的唯一标识作为 cid,例如设备的 SN 号、Mac 地址、IMEI 号等。最大长度为 64 字符。
status Integer 设备状态,
  • 0:设备离线
  • 1:设备在线

Msg 消息格式

{
    "t":15980106****,
    "reqId":"123123****",
    "cid":"01D728C3****",
    "reqType":1001,
    "devType":"elevatorController",
    "data":{
        "status":1
    }
}

订阅执行结果消息格式

{
  "t":15980106****,
  "reqId":"123123****",
  "cid":"01D728C3****",
  "reqType":1001,
  "devType":"elevatorController",
  "data":{
      "success":true,
      "msg":"success",
      "code":200
  }
}

cidreqIdreqTypedevType 即为上报时的 cidreqIdreqTypedevType

设备数据同步指令下发

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。最大长度为 64 字符。
reqType Integer reqType =1 表示请求设备同步
devType String 设备类型。默认为 gateway,最大长度为 32 字符。
syncDevType String 同步设备类型,默认为 elevatorController。最大长度为 32 字符。

Msg 消息格式

{
    "t":123123****,
  "reqId":"12****",
    "reqType":1,
    "devType":"gateway"
    "data":{
            "syncDevType":"elevatorController"
    }
}

返回结果消息格式

{
  "t":15980106****,
  "reqId":"123123****",
  "reqType":1,
  "devType":"gateway",
  "data":{
      "success":true,
      "msg":"success",
      "code":200
  }
}

设备数据同步消息上报

梯控网关收到边缘网关下发的设备数据同步指令后,通过该接口上报梯控网关下的梯控设备数据。

请求参数

参数 类型 描述 是否必填
t Long 消息推送时间。
reqId String 请求流水号。最大长度为 64 字符。
reqType Integer reqType = 2,表示设备数据同步上报。
devType String 设备类型。默认为 gateway,最大长度为 32 字符。
cid String 梯控设备 ID,建议采用设备端可读取的唯一标识作为 CID,例如设备的 SN 号、MAC 地址、IMEI 号等。最大长度为 64 字符。
name String 梯控设备名称。最大长度为 64 字符。
installLocation String 梯控设备安装地址。最大长度为 256 字符。
initFloor Integer 起始楼层。例如 -1
syncDevType String 同步设备类型,默认为 elevatorController。最大长度为 32 字符。
wellDevs list 电梯轿厢信息。需将梯控连接的所有电梯井填充进去。
wellNum int 电梯轿厢井号。

Msg 消息格式

{
    "t":15980106****,
    "reqID":"123123****",
    "reqType":2,
    "devType":"gateway",
    "data":{
        "devs":[
            {
                "cid":"123****",
                "name":"No. 1 Elevator, Building 3",
                "installLocation":"No. 1 Elevator, Building 3",
                "initFloor":1,
                "wellDevs":{
                    "wellNum":1,
                    "wellNum":2
                }
            },
            {
                "cid":"123****",
                "name":"No. 2 Elevator, Building 3",
                "installLocation":"No. 2 Elevator, Building 3",
                "initFloor":1
            }
        ],
        "syncDevType":"elevatorController"
    }
}

wellDevs 用于电梯井号信息。

订阅执行结果消息格式

{
  "t":15980106****,
  "reqId":"123123****",
  "reqType":2,
  "devType":"gateway",
  "data":{
      "success":true,
      "msg":"success",
      "code":200
  }
}

动态二维码

设备端需要⽀持 1.0 和 2.0 两种版本的⼆维码格式。

1.0 版本⼆维码

格式:

7421371370865597349888943036

2.0 版本⼆维码

格式:

{
    "qrcode":"YXkxNjExMDU4MTc4MTM4N240Mjd8ZTRhZjIzZTY=" //取值为 Base64 编码后的字符串
}

校验二维码

设备扫描⼆维码后的校验步骤:

  1. 根据⼆维码的内容判断⼆维码是 1.0 版本还是 2.0 版本。

    • 如果是 1.0 版本,直接和用户的⼆维码进⾏⽐较,⽐较成功则允许通⾏。
    • 如果是 2.0 版本,则先通过 Base64⽅法对内容进⾏解码,解析出⼆维码信息。
  2. 进⾏静态⼆维码对⽐校验,⼆维码信息和用户的⼆维码进⾏⽐较,⽐较成功并且在有效期则允许通⾏。

  3. 如果⽐对失败,则通过动态⼆维码验证接⼝进⾏验证。

    • 如果验证成功,则允许通⾏。
    • 如果验证失败,则不允许通⾏。

验证动态⼆维码

接口说明

TOTPUtils.java
 /**
* 动态⼆维码验证
*
* @param uid 涂鸦⽤户 ID
* @param secretKey ⽤户秘钥, 32 位字符串
* @param willVerifyTotp 待验证的⼆维码信息
* @param refreshTime ⼆维码刷新时间
* @return boolean ⼆维码验证结果
*/
 public static boolean verifyTOTPFlexibility(string uid, string secretKey, string
willVerifyTotp, Long refreshTime)

2.0 版⼆维码示例

  • ⼆维码内容:

    {
        "qrcode":"YXkxNjExMDU4MTc4MTM4N240Mjd8ZTRhZjIzZTY=" //取值为 Base64 编码后的字符串
    }
    
  • 验证过程:

    1. YXkxNjExMDU4MTc4MTM4N240Mjd8ZTRhZjIzZTY Base64 解码后获得字符串 "ay16110581781387n427 | e4af23e6",则表示:

      • ⽤户 ID:ay16110581781387****
      • ⼆维码信息:e4af23e6****
    2. 根据⽤户 ID 获取静态⼆维码进⾏对⽐。如果对⽐失败,则进⾏动态⼆维码校验。

    3. ⼆维码刷新时间为 5 * 60 * 1000= 300,000 毫秒,即 5 分钟。

    4. 根据⽤户 ID 查询到⽤户的秘钥 secretKey

    5. 调⽤动态⼆维码验证接⼝ TOTPUtils.verifyTOTPFlexibility,返回 true,校验通过。