From fa300229f8355075a641567bab544ef8c6d97591 Mon Sep 17 00:00:00 2001 From: zhangchuanxi <154940001@qq.com> Date: Tue, 14 Nov 2017 18:01:13 +0800 Subject: [PATCH] 重新整理MQ消息定义和格式 --- wisfarm/MQ消息定义v1.1.0.md | 203 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+), 0 deletions(-) create mode 100644 wisfarm/MQ消息定义v1.1.0.md diff --git a/wisfarm/MQ消息定义v1.1.0.md b/wisfarm/MQ消息定义v1.1.0.md new file mode 100644 index 0000000..aaed78a --- /dev/null +++ b/wisfarm/MQ消息定义v1.1.0.md @@ -0,0 +1,203 @@ +#控制信文内容# +######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:操作记录Id + +- 2.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:操作记录Id + +- 2.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:当修改设备序列号时,这字段的值为修改前的设备序列号,其他情况为null + + 2.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":"农场名称"} + \ No newline at end of file -- libgit2 0.21.4