对接大屏设备
实现机制
大屏对接使用MQTT的P2P通信方式来对接,闸机设备认证通过后把认证的信息通过MQTT,发送给大屏做实时的信息展示,下发给人脸闸机或闸机宝的参数中有 screenId
参数。
这个参数需要登录项目管理平台-->进入劳务管理系统-->现场管理-->设备列表,模块下进入单个闸机设备详情,进行设置:
假如要通知的大屏设备号为:71201906260001
那么闸机设备需要往 GLM/p2p/GID_GLM@@@71201906260001
这个topic发送实时消息,通知大屏发生人员进出场事件,GID_GLM@@@71201906260001
为阿里云设备的 clientId
topic 和 groupId 都需要从 Iot init 接口中动态获取,千万不要硬编码设置为静态变量,下方示例为当前配置,后续可能动态变化
topic 测试环境目前是IOT_DEV,正式环境目前是:TIC_PRODUCT_GLM
groupId 测试环境目前是GID_DEV_GLM,正式环境目前是:GID_PRODUCT_GLM
groupId 仅在阿里云会用到
P2P通信地址拼接规则
阿里云:${Topic}/p2p/${GroupId}@@@${大屏设备id}
华为云:${Topic}/p2p/{大屏设备id}
目前正式环境P2P通信地址
阿里云:TIC_PRODUCT_GLM/p2p/GID_PRODUCT_GLM@@@大屏设备id
华为云:GLM/p2p/大屏设备id
消息结构
发送的图片大小不等,可能超过mqtt 承载最大范围,所以bitmap 转base64字符串后可能还需要截取字符串后,分批次上传,每次上传最大字符数length 100000
{
"client":"04201811000002",
"data":{
"currentNum":0,
"deviceId":"04201811000002",
"img":"123",
"intout":1,
"maxNum":1,
"time":"1561535836918",
"workerId":"100185"
},
"event":"MQTT_FACESCREEN_EVENT"
}
client
04201811000002 人脸设备 设备id
time
图片生成时间,唯一表识(如一张图片分三次上传 time 必须都是一致)
workerId
工人id
event
MQTT_FACESCREEN_EVENT 固定写死
maxNum
一张图片分批上传次数
currentNum
当前所属批次
intout
0 代表出 1代表进
img
base64 字符串
deviceId
人脸设备id