Commit fa300229f8355075a641567bab544ef8c6d97591
1 parent
1b9eb0a4
重新整理MQ消息定义和格式
Showing
1 changed file
with
203 additions
and
0 deletions
wisfarm/MQ消息定义v1.1.0.md
0 → 100644
| 1 | +#控制信文内容# | ||
| 2 | +######v1.1.0 by zcx 11/14/2017 5:57:56 PM | ||
| 3 | + | ||
| 4 | +**1. 文档说明** | ||
| 5 | + | ||
| 6 | +在平台内部,有许多地方会使用到MQ来作为信息同步的工具。为了规范webS1、IotAdapter、Task等服务在MQ通讯过程中的消息格式,特编写了本文档。webS1可根据该文档中规定的内容衍生与web端交互的接口,需要的字段可自行增加。 | ||
| 7 | + | ||
| 8 | +**2. 正文内容** | ||
| 9 | + | ||
| 10 | +消息类型分为控制消息、通知消息两大类。MQ通讯时使用Topic Exchange进行数据分发,Routing key的组成规则如下:from.to.dowhat.type。 | ||
| 11 | + | ||
| 12 | +**2.1 控制消息以及对应Routing key** | ||
| 13 | + | ||
| 14 | +控制消息包含:设备控制、传感器控制、触发器控制、流程控制。 | ||
| 15 | + | ||
| 16 | +- 2.1.1 设备控制 | ||
| 17 | + | ||
| 18 | + Exchange name:wisfarm.v1 | ||
| 19 | + Queue:webS1.control | ||
| 20 | + Routing key:webS1.*.ctl | ||
| 21 | + 消息内容:{"toId":目标设备序列号,"action":控制命令,"msgId":消息Id,"time":命令时间戳,"type":device,"recordId":操作记录Id} | ||
| 22 | + action: | ||
| 23 | + stop:设备停止 | ||
| 24 | + restart:设备重启 | ||
| 25 | + start:设备启动 | ||
| 26 | + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 | ||
| 27 | + time:时间戳 | ||
| 28 | + recordId:操作记录Id | ||
| 29 | + | ||
| 30 | +- 2.1.2 传感器控制 | ||
| 31 | + | ||
| 32 | + Exchange name:wisfarm.v1 | ||
| 33 | + Queue:webS1.control.sensor | ||
| 34 | + Routing key:webS1.*.ctl.sensor | ||
| 35 | + 消息内容:{"deviceNo":"设备序列号","regAddr":"传感器寄存器地址","recordId":"操作记录Id","action":控制命令,"value":写入值,"msgId":消息Id,"time":命令时间戳,"type":sensor,"timeout":"命令超时时间"} | ||
| 36 | + deviceId:设备序列号 | ||
| 37 | + regAddr:寄存器地址 | ||
| 38 | + recordId:操作记录Id | ||
| 39 | + action: | ||
| 40 | + open:传感器打开 | ||
| 41 | + close:传感器关闭 | ||
| 42 | + write:向传感器写值 | ||
| 43 | + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 | ||
| 44 | + time:时间戳 | ||
| 45 | + timeout:命令的超时时间,默认5000毫秒 | ||
| 46 | + 注意:*同组sensor执行的动作必须一致; | ||
| 47 | + *value(写入值)只在action==write时有用,其他时候可写任意值 | ||
| 48 | + | ||
| 49 | + | ||
| 50 | +- 2.1.3 触发器控制 | ||
| 51 | + | ||
| 52 | + Exchange name:wisfarm.v1 | ||
| 53 | + Queue:webS1.control.strategy | ||
| 54 | + Routing key:webS1.*.ctl.strategy | ||
| 55 | + 消息内容:{"toId":触发器Id,"action":控制命令,"msgId":消息Id,"time":命令时间戳,"type":trigger",recordId":操作记录Id} | ||
| 56 | + action: | ||
| 57 | + enable:使能开启 | ||
| 58 | + disable:使能关闭 | ||
| 59 | + retry:触发器重试 | ||
| 60 | + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 | ||
| 61 | + time:时间戳 | ||
| 62 | + recordId:操作记录Id | ||
| 63 | + | ||
| 64 | +- 2.1.4 流程控制 | ||
| 65 | + | ||
| 66 | + Exchange name:wisfarm.v1 | ||
| 67 | + Queue:webS1.control.strategy | ||
| 68 | + Routing key:webS1.*.ctl.strategy | ||
| 69 | + 消息内容:{"toId":流程Id,"action":控制命令,"msgId":消息Id,"time":命令时间戳,"type":flow,"recordId":操作记录Id} | ||
| 70 | + action: | ||
| 71 | + enable:流程使能开启 | ||
| 72 | + disable:流程使能关闭 | ||
| 73 | + pause:流程暂停 | ||
| 74 | + continue:流程继续 | ||
| 75 | + recover:流程恢复 | ||
| 76 | + stop:流程终止 | ||
| 77 | + execute:流程立即执行 | ||
| 78 | + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 | ||
| 79 | + time:时间戳 | ||
| 80 | + recordId:操作记录Id | ||
| 81 | + | ||
| 82 | + | ||
| 83 | +**2.2 通知消息** | ||
| 84 | + | ||
| 85 | +通知消息用于在多个服务间进行数据同步和传输,并在一定程度上承担着负载均衡的作用。 | ||
| 86 | + | ||
| 87 | + 1. 平台web端发生编辑事件后,通过MQ告知IotAdapter/Task服务。 | ||
| 88 | + 2. IotAdapter 发送实时数据给LTS | ||
| 89 | + 3. 平台与Tx800通过MQ进行通讯。 | ||
| 90 | + | ||
| 91 | +- 2.2.1 平台web端发出通知事件给IotAdapter/Task服务 | ||
| 92 | + | ||
| 93 | + 2.2.1.1 web端设备配置信息编辑 | ||
| 94 | + | ||
| 95 | + Exchange name:wisfarm.v1 | ||
| 96 | + Queue:webS1.editEvent | ||
| 97 | + Routing key:webS1.*.event | ||
| 98 | + 消息内容:{"srcId":设备序列号,"action":事件,"msgId":消息Id,"time":时间戳,"type":"device","oldId":旧的设备序列号} | ||
| 99 | + action: | ||
| 100 | + delete:删除 | ||
| 101 | + cu:createOrUpdate新建/更新 | ||
| 102 | + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 | ||
| 103 | + time:时间戳 | ||
| 104 | + oldId:当修改设备序列号时,这字段的值为修改前的设备序列号,其他情况为null | ||
| 105 | + | ||
| 106 | + 2.2.1.2 web端触发器配置信息编辑 | ||
| 107 | + | ||
| 108 | + Exchange name:wisfarm.v1 | ||
| 109 | + Queue:webS1.editEvent.strategy | ||
| 110 | + Routing key:webS1.*.event.strategy | ||
| 111 | + 消息内容:{"srcId":触发器Id,"action":事件,"msgId":消息Id,"time":时间戳,"type":"trigger"} | ||
| 112 | + action: | ||
| 113 | + delete:删除 | ||
| 114 | + create:新建 | ||
| 115 | + update:修改 | ||
| 116 | + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 | ||
| 117 | + time:时间戳 | ||
| 118 | + | ||
| 119 | + 2.2.1.3 web端流程控制配置信息编辑 | ||
| 120 | + | ||
| 121 | + Exchange name:wisfarm.v1 | ||
| 122 | + Queue:webS1.editEvent.strategy | ||
| 123 | + Routing key:webS1.*.event.strategy | ||
| 124 | + 消息内容:{"srcId":流程Id,"action":事件,"msgId":消息Id,"time":时间戳,"type":"flow"} | ||
| 125 | + action: | ||
| 126 | + delete:删除 | ||
| 127 | + create:新建 | ||
| 128 | + update:修改 | ||
| 129 | + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 | ||
| 130 | + time:时间戳 | ||
| 131 | + | ||
| 132 | + | ||
| 133 | + 2.2.1.4 web端虚拟tx800设备配置信息通知 | ||
| 134 | + | ||
| 135 | + Exchange name:wisfarm.v1 | ||
| 136 | + Queue:webS1.editEvent | ||
| 137 | + Routing key:webS1.*.event | ||
| 138 | + 消息内容:{"srcId":虚拟tx800设备ID,"action":事件,"msgId":消息Id,"time":时间戳,"type":"config"} | ||
| 139 | + action: | ||
| 140 | + local:控制权-平台 | ||
| 141 | + plat:控制权-tx800或其他终端 | ||
| 142 | + lock:控制权被锁定 | ||
| 143 | + unlock:控制权未被锁定 | ||
| 144 | + enable:配置数据生效 | ||
| 145 | + disable:配置数据作废 | ||
| 146 | + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 | ||
| 147 | + time:时间戳 | ||
| 148 | + | ||
| 149 | + 2.2.1.4 web端虚拟tx800设备映射传感器信息通知 | ||
| 150 | + | ||
| 151 | + Exchange name:wisfarm.v1 | ||
| 152 | + Queue:webS1.editEvent | ||
| 153 | + Routing key:webS1.*.event | ||
| 154 | + 消息内容:{"srcId":tx800传感器id,"action":事件,"msgId":消息Id,"time":时间戳,"type":"config"} | ||
| 155 | + action: | ||
| 156 | + analyze_yes:解析对应的平台传感器 | ||
| 157 | + analyze_no:不解析对应的平台传感器 | ||
| 158 | + msgId:该Routing下的消息自然数增加,最大值为Int型最大值,超过最大值后自动复归至1 | ||
| 159 | + time:时间戳 | ||
| 160 | + | ||
| 161 | + | ||
| 162 | +- 2.2.2 IotAdapter 通知 LTS | ||
| 163 | + | ||
| 164 | + 2.2.2.1 IotAdapter发送传感器实时数据给LTS | ||
| 165 | + | ||
| 166 | + Exchange name:wisfarm.v1 | ||
| 167 | + Queue:iot.lts.sensor.data | ||
| 168 | + Routing key:iot.lts.sensor.data.key.* | ||
| 169 | + 消息内容:{"sensorId":"传感器id","value":"传感器当前值","online":"在线状态"} | ||
| 170 | + | ||
| 171 | + | ||
| 172 | +- 2.2.3 平台通知tx800事件 | ||
| 173 | + | ||
| 174 | + 2.2.3.1 平台web发送召唤设备通知到Tx800 | ||
| 175 | + | ||
| 176 | + Exchange name:wisfarm.v1 | ||
| 177 | + Queue:wisfarm.bridge.tx800.default.queue | ||
| 178 | + Routing key:wisfarm.bridge.tx800.default.routing.{farmNo} | ||
| 179 | + 消息内容:{"data":"tx800农场No","time":时间戳,"type":"call_request"} | ||
| 180 | + | ||
| 181 | + | ||
| 182 | +- 2.2.4 tx800通知平台事件 | ||
| 183 | + | ||
| 184 | + 2.2.4.1 Tx800响应平台召唤 | ||
| 185 | + | ||
| 186 | + Exchange name:wisfarm.v1 | ||
| 187 | + Queue:tx800.bridge.wisfarm.default.queue | ||
| 188 | + Routing key:wisfarm.bridge.tx800.default.routing.{farmNo} | ||
| 189 | + 消息内容:{"data":DeviceDTO,"time":时间戳,"type":"call_request"} | ||
| 190 | + DeviceDTO:设备对象Array,数据结构: | ||
| 191 | + [{"farmNo":"农场Mo","deviceId":"设备ID","deviceNo":"设备序列号","deviceName":"设备名称","sensors",SensorDTO}] | ||
| 192 | + SensorDTO :传感器对象Array,数据结构: | ||
| 193 | + [{"sensorId":"传感器ID","sensorName":" 传感器名称 ","sensorType":"传感器类型"}] | ||
| 194 | + | ||
| 195 | + 2.2.4.2 Tx800写农场信息 | ||
| 196 | + | ||
| 197 | + Exchange name:wisfarm.v1 | ||
| 198 | + Queue:tx800.bridge.wisfarm.default.queue | ||
| 199 | + Routing key:tx800.bridge.wisfarm.default.routing.{farmNo} | ||
| 200 | + 消息内容:{"data":Farm,"time":时间戳,"type":"call_request"} | ||
| 201 | + Farm:农场对象,数据结构: | ||
| 202 | + {"farmNo":"农场编号","farmName":"农场名称"} | ||
| 203 | + | ||
| 0 | \ No newline at end of file | 204 | \ No newline at end of file |