#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:消息时间