Skip to content

对接大屏设备

实现机制

大屏对接使用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