MQTT消息格式定义v1.06.md 4.05 KB

#MQTT消息类型及定义

######v1.0.6 by zcx 6/28/2017 6:31:07 PM

1. 控制反馈类

目前WEB、APP端在对设备进行操作时,均采用HTTP POST方式向WebS1发送控制命令,WebS1在对控制命令有效性进行验证验证后,通过HTTP协议对操作进行响应,如果命令有效则转发至实际设备,如果验证失败则不再执行。特别地,命令的转发及执行过程需要较长时间,整个系统的异步特性明显,因此采用MQTT来反馈控制结果较为合适。

  • 通过HTTP反馈的信文为:控制命转发成功/失败

  • 客户端通过MQTT接收反馈的信文为:命令被网关接收成功,命令被执行成功,执行后的实时数据三大类;

  • 客户端接收反馈信文的主题前缀为:设备序列号/传感器ID;

1.1 传感器类

  • 注:客户端要接收传感器的相关数据时,可以通过设备序列号/#来接收来自于某个设备下的所有数据

  • 传感器实时状态(单个)

    • topic:设备序列号/+/data
    • 内容格式:
{"sensorId":123,"line":0,"type":1,"value":1,"time":1488528701811}
    sensorId:传感器Id,全系统唯一
    line:数值型,0:在线,1:离线
    type:传感器值类型,1:Int型;2:String型。
    value:传感器值,type=1时,0:关闭状态,1:打开状态
    time:时间戳
  • 传感器控制反馈

    • topic:设备序列号/传感器ID/ctlresp
    • 内容格式: > {"sensorId":123,"code":1,"time":1488528701811} sensorId:传感器ID,数值型 code:控制反馈码,Int型,1:命令接收成功,2:命令接收失败,3:命令执行成功,4:命令执行失败,其他值非法 time:时间戳

2.1 设备类

  • 设备控制反馈

    • topic:设备序列号/ctlresp
    • 内容格式: > {"deviceId":"AB3D","code":1,"time":1488528701811} deviceId:设备Id,String型 code:控制反馈码,Int型:1:命令接收成功,2:命令接收失败,3:命令执行成功,4:命令执行失败,其他值非法 time:时间戳

3.1 流程控制类

  • 流程实时状态更新

    • topic:流程ID/flow/data
    • 内容格式: >
      {"flowId":12,"fTaskId":1,"progress":20,"code":1,"time":1488528701811} flowId:主流程ID,Int型 fTaskId:子流程ID,Int型 progress:流程执行进度,取值范围[0~100] code:状态码,Int型:0待执行,1执行中,2暂停,3执行失败,4执行成功,5已过期; time:时间戳

3.2 触发器类

  • 触发器实时状态更新

    • topic:触发器ID/trigger/data
    • 内容格式: >
      {"triggerId":12,"state":1,"time":1488528701811} triggerId:触发器ID,Int型 state:状态码,Int型:10待触发,11正在触发,20触发失败,30已过期,100已触发; time:时间戳

3.3 告警消息

  • 具体用户-告警消息推送

    • topic:农场ID/用户id/alarm/msg
    • 内容格式: >
      {"recordId":1,"recordTime":1488528701811,"recordMsg":"西区温度传感器温度过高,请处理","recordTitle":"温度过高","farmId":22,"hasRead":false} recordId:消息编号 recordTime:日期 recordMsg:消息体 recordTitle:消息标题 farmId:农场id hasRead:是否阅读 false 未阅;true 已阅
  • 农场-告警消息推送

    • topic:农场ID/alarm/msg
    • 内容格式: >
      {"recordId":1,"recordTime":1488528701811,"recordMsg":"西区温度传感器温度过高,请处理","recordTitle":"温度过高","farmId":22,"hasRead":false} recordId:消息编号 recordTime:日期 recordMsg:消息体 recordTitle:消息标题 farmId:农场id hasRead:是否阅读 false 未阅;true 已阅
  • 注:客户端要接收时,运维人员可以通过#/alarm/msg来接收所有告警数据;农场主和普通用户通过农场ID/用户id/alarm/msg农场ID/alarm/msg来接受对应的告警数据

3.3 策略消息

  • 策略所属农村

    • topic:农场ID/msg
    • 内容格式: >
      {"sgId":1,"sgTitle":"流程控制xxxxx开始执行","sgContent":"流程控制xxxxx开始执行","sgTime":1488528701811} sgId:消息编号 sgTitle:消息标题 sgContent:消息体 sgTime:消息时间