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:操作记录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":"农场名称"}