MQ消息定义v1.1.0.md
7.29 KB
#控制信文内容# ######v1.1.0 by zcx 11/14/2017 5:57:56 PM
1. 文档说明
在平台内部,有许多地方会使用到MQ来作为信息同步的工具。为了规范webS1、IotAdapter、Task等服务在MQ通讯过程中的消息格式,特编写了本文档。webS1可根据该文档中规定的内容衍生与web端交互的接口,需要的字段可自行增加。
2. 正文内容
消息类型分为控制消息、通知消息两大类。MQ通讯时使用Topic Exchange进行数据分发,Routing key的组成规则如下:from.to.dowhat.type。
2.1 控制消息以及对应Routing key
控制消息包含:设备控制、传感器控制、触发器控制、流程控制。
2.1.1 设备控制
Exchange name:wisfarm.v1 Queue:webS1.control Routing key:webS1.*.ctl 消息内容:{"toId":目标设备序列号,"action":控制命令,"msgId":消息Id,"time":命令时间戳,"type":device,"recordId":操作记录Id} action: stop:设备停止 restart:设备重启 start:设备启动 msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 time:时间戳 recordId:操作记录Id2.1.2 传感器控制
Exchange name:wisfarm.v1 Queue:webS1.control.sensor Routing key:webS1.*.ctl.sensor 消息内容:{"deviceNo":"设备序列号","regAddr":"传感器寄存器地址","recordId":"操作记录Id","action":控制命令,"value":写入值,"msgId":消息Id,"time":命令时间戳,"type":sensor,"timeout":"命令超时时间"} deviceId:设备序列号 regAddr:寄存器地址 recordId:操作记录Id action: open:传感器打开 close:传感器关闭 write:向传感器写值 msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 time:时间戳 timeout:命令的超时时间,默认5000毫秒 注意:*同组sensor执行的动作必须一致; *value(写入值)只在action==write时有用,其他时候可写任意值2.1.3 触发器控制
Exchange name:wisfarm.v1 Queue:webS1.control.strategy Routing key:webS1.*.ctl.strategy 消息内容:{"toId":触发器Id,"action":控制命令,"msgId":消息Id,"time":命令时间戳,"type":trigger",recordId":操作记录Id} action: enable:使能开启 disable:使能关闭 retry:触发器重试 msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 time:时间戳 recordId:操作记录Id2.1.4 流程控制
Exchange name:wisfarm.v1 Queue:webS1.control.strategy Routing key:webS1.*.ctl.strategy 消息内容:{"toId":流程Id,"action":控制命令,"msgId":消息Id,"time":命令时间戳,"type":flow,"recordId":操作记录Id} action: enable:流程使能开启 disable:流程使能关闭 pause:流程暂停 continue:流程继续 recover:流程恢复 stop:流程终止 execute:流程立即执行 msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 time:时间戳 recordId:操作记录Id
2.2 通知消息
通知消息用于在多个服务间进行数据同步和传输,并在一定程度上承担着负载均衡的作用。
1. 平台web端发生编辑事件后,通过MQ告知IotAdapter/Task服务。
2. IotAdapter 发送实时数据给LTS
3. 平台与Tx800通过MQ进行通讯。
2.2.1 平台web端发出通知事件给IotAdapter/Task服务
2.2.1.1 web端设备配置信息编辑
Exchange name:wisfarm.v1 Queue:webS1.editEvent Routing key:webS1.*.event 消息内容:{"srcId":设备序列号,"action":事件,"msgId":消息Id,"time":时间戳,"type":"device","oldId":旧的设备序列号} action: delete:删除 cu:createOrUpdate新建/更新 msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 time:时间戳 oldId:当修改设备序列号时,这字段的值为修改前的设备序列号,其他情况为null2.2.1.2 web端触发器配置信息编辑
Exchange name:wisfarm.v1 Queue:webS1.editEvent.strategy Routing key:webS1.*.event.strategy 消息内容:{"srcId":触发器Id,"action":事件,"msgId":消息Id,"time":时间戳,"type":"trigger"} action: delete:删除 create:新建 update:修改 msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 time:时间戳2.2.1.3 web端流程控制配置信息编辑
Exchange name:wisfarm.v1 Queue:webS1.editEvent.strategy Routing key:webS1.*.event.strategy 消息内容:{"srcId":流程Id,"action":事件,"msgId":消息Id,"time":时间戳,"type":"flow"} action: delete:删除 create:新建 update:修改 msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 time:时间戳2.2.1.4 web端虚拟tx800设备配置信息通知
Exchange name:wisfarm.v1 Queue:webS1.editEvent Routing key:webS1.*.event 消息内容:{"srcId":虚拟tx800设备ID,"action":事件,"msgId":消息Id,"time":时间戳,"type":"config"} action: local:控制权-平台 plat:控制权-tx800或其他终端 lock:控制权被锁定 unlock:控制权未被锁定 enable:配置数据生效 disable:配置数据作废 msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 time:时间戳2.2.1.4 web端虚拟tx800设备映射传感器信息通知
Exchange name:wisfarm.v1 Queue:webS1.editEvent Routing key:webS1.*.event 消息内容:{"srcId":tx800传感器id,"action":事件,"msgId":消息Id,"time":时间戳,"type":"config"} action: analyze_yes:解析对应的平台传感器 analyze_no:不解析对应的平台传感器 msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 time:时间戳2.2.2 IotAdapter 通知 LTS
2.2.2.1 IotAdapter发送传感器实时数据给LTS
Exchange name:wisfarm.v1 Queue:iot.lts.sensor.data Routing key:iot.lts.sensor.data.key.* 消息内容:{"sensorId":"传感器id","value":"传感器当前值","online":"在线状态"}2.2.3 平台通知tx800事件
2.2.3.1 平台web发送召唤设备通知到Tx800
Exchange name:wisfarm.v1 Queue:wisfarm.bridge.tx800.default.queue Routing key:wisfarm.bridge.tx800.default.routing.{farmNo} 消息内容:{"data":"tx800农场No","time":时间戳,"type":"call_request"}2.2.4 tx800通知平台事件
2.2.4.1 Tx800响应平台召唤
Exchange name:wisfarm.v1 Queue:tx800.bridge.wisfarm.default.queue Routing key:wisfarm.bridge.tx800.default.routing.{farmNo} 消息内容:{"data":DeviceDTO,"time":时间戳,"type":"call_request"} DeviceDTO:设备对象Array,数据结构: [{"farmNo":"农场Mo","deviceId":"设备ID","deviceNo":"设备序列号","deviceName":"设备名称","sensors",SensorDTO}] SensorDTO :传感器对象Array,数据结构: [{"sensorId":"传感器ID","sensorName":" 传感器名称 ","sensorType":"传感器类型"}]2.2.4.2 Tx800写农场信息
Exchange name:wisfarm.v1 Queue:tx800.bridge.wisfarm.default.queue Routing key:tx800.bridge.wisfarm.default.routing.{farmNo} 消息内容:{"data":Farm,"time":时间戳,"type":"call_request"} Farm:农场对象,数据结构: {"farmNo":"农场编号","farmName":"农场名称"}