IoT设备远控方案

1 远控需求:

1.1 控制端:

  1. 能实时感知注册的设备上/下线状态,提供查询接口
  2. 能广播命令,在线的设备端能收到并同步执行
  3. 能对指定的在线设备发布命令,设备端能收到并执行
  4. 能提供环境参数接口,供设备端查询

 

1.2 设备端:

  1. 能自检上/下线状态,系统服务状态
  2. 能向控制端主动汇报运行消息
  3. 能实时感知包括 版本更新 / 消息通知 / 通讯质量 在内的环境信息
  4. 能实时接受控制端命令,做出相应动作与结果报告

 

 

2 方案:

经过评估与分析,我们将以物联网IoT实现的方式来解决问题,以支持MQTT协议的消息服务器作为中间件解耦,所有的远控命令与交互信息将通过消息服务器分别传递到两端。

2.1 原理说明:

  • 每个设备端都有自己的client id
  • 当设备端正常连接上MQTT服务器后,服务器会建立对应该client id的临时消息队列,设备端以此订阅控制端提供的各项功能Topics, 解析消息内容,形成执行命令
  • MQTT服务器有预设的队列,如: mqtt.devices.status, mqtt.devices.report 等,接收设备消息
     

2.2 实现说明:

  • 消息服务器实现:
    Rabbitmq + MQTT plugin,在线设备查询采用redis 集合,并用多进程任务服务器在消息队列中获取上下线信息实现状态同步
     
  • 设备端自检方案:
    创建自订阅的Topic,定时发送QoS0消息自检
    参考:https://help.aliyun.com/document_detail/101125.html?spm=a2c4g.11186623.2.11.6a292f84ghL1zT
     
  • 设备端上下线方案:
    - 上线:连接后,设备端发布上线消息到设备状态Topic(devices.status),消息服务器转发到设备状态队列,由监控进程捕捉并刷新redis 数据集
    - 正常下线:设备端发布下线消息到设备状态Topic(devices.status),消息服务器转发到设备状态队列,由监控进程捕捉并刷新redis 数据集
    - 异常下线:设置连接参数 LWT(消息遗嘱),当异常中断时,服务器产生下线消息到设备状态队列,由监控进程捕捉并刷新redis 数据集

     
  • 设备端命令执行方案:
    - 设备端连接后订阅消息命令Topic, 等待命令消息
    - 预定义命令集合类,根据收到的命令实例化并执行
     
  • 设备查询接口方案:
    - 提供公共的服务rest api供设备查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bennybi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值