阿里云iot物联网平台监控设备在线离线状态解决方案

需求

目前使用阿里云的iot作为物联网平台应用,在整个系统内有很多设备,每天都会在固定的时间段内在线和离线。

我们需要监控这些设备的状态,如果设备在线或者离线,给管理员发送通知(短信),以便让相关人员及时处理。

具体实现

服务端订阅

在产品详情的服务端订阅中,可以通过服务端订阅来接受iot平台的消息。

其中:

  • 服务端订阅,通过HTTP2通道推送,目前只提供了Java和**.NET**语言的SDK。
  • 服务端订阅 (推送MNS)。将物联网平台的消息推送到队列中,然后服务端基于SDK从队列中获取消息实现通信。

由于语言限制,我们选择MNS的方式进行消息接受,需求是监控状态,所以只选择设备状态变化通知

同步监控消息

通过上一步之后,阿里云会在MNS上创建一个对应的消息队列,如果设备有在线离线状态的变更,对应的消息就会被推送到对应的队列中。


列表的操作部分可以直接接收消息,当然这样做消息会被消费,如果队列已经写入系统逻辑,就需要谨慎操作。

拉取MNS队列并处理消息

从控制台的拉取消息看,主要数据内容在payload中,通过文档可以查看,通过base64可以解析得到消息的详细内容。

{"status":"online|offline","productKey":"12345565569","deviceName":"deviceName1234","time":"2018-08-31 15:32:28.205","utcTime":"2018-08-31T07:32:28.205Z","lastTime":"2018-08-31 15:32:28.195","utcLastTime":"2018-08-31T07:32:28.195Z","clientIp":"123.123.123.123"
}


下面列出PHP作为服务端处理的主要逻辑代码,作为参考。

    /*** 拉取状态队列消息*/public function actionIotStatus(){$endPoint  = "https://************.mns.cn-shanghai.aliyuncs.com";$accessId = \Yii::$app->params['aliyun']['accesskeyid'];$accessKey = \Yii::$app->params['aliyun']['accesssecret'];$queueName = \Yii::$app->params['iot']['mnskey'];$client = new Client($endPoint, $accessId, $accessKey);$queue = $client->getQueueRef($queueName);$receiptHandle = NULL;try{$res = $queue->receiveMessage(30);$receiptHandle = $res->getReceiptHandle();//得到消息句柄$body =   $res->getMessageBody();$bodyArr = json_decode($body,true);$payload = json_decode(base64_decode($bodyArr['payload']),true); //解析$deviceName = $payload['deviceName'];//todo 这里写的逻辑是给管理员发送短信和通知//删除消息,避免再次被接收到try{$res = $queue->deleteMessage($receiptHandle);echo "DeleteMessage Succeed! \n";}catch (MnsException $e){echo "DeleteMessage Failed: " . $e;return;}}catch (MnsException $e){echo "ReceiveMessage Failed: " . $e;return;}}

总结

  • 详细看文档的好处在于一旦有需求就能找到最合适的实现方式。

参考资料

  • https://help.aliyun.com/document_detail/73736.html?spm=a2c4g.11186623.2.11.47f024bddFMFe5#concept-ap3-lql-b2b
  • https://help.aliyun.com/document_detail/30594.html?spm=a2c4g.11186623.6.678.6f793eefg65gju

【物联网】阿里云iot物联网平台监控设备 在线离线状态 解决方案相关推荐

  1. 基于TCP协议的GPS定位器设备迁移到阿里云IoT物联网平台实践——实践类

    背景 GPS定位器是内置了GPS模块和移动通信模块的终端,用来将GPS模块获得的定位数据通过移动通信模块传至Internet上的一台服务器上,从而可以实现在电脑或手机上查询终端位置. GPS定位器可用 ...

  2. 揭秘 | 阿里云IoT物联网平台亿级设备接入方案大揭秘

    一.前言 不同的接入层 互联网的产品基本都需要解决终端的接入问题,每个接入层会因为终端数量.终端能力.网络环境等不同的因素有各自的设计特性,比如:淘宝网需要解决海量短连接问题.微信需要解决海量长连接问 ...

  3. 【小程序案例】支付宝小程序-MQTT模器,IoT设备通过WSS接入阿里云IoT物联网平台...

    支付宝小程序-MQTT模拟器通过WSS接入阿里云IoT物联网平台 准备工作 1.1 注册阿里云账号 开通阿里云账号,并通过支付宝实名认证 https://www.aliyun.com 1.2 免费开通 ...

  4. 阿里云IoT物联网平台

    IoT物联网平台 一.工作原理 1.MQTT(Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议,专门设计用于物联网(IoT)应用中的通信.它是一种发 ...

  5. 揭秘阿里云IoT安全平台Link Security如何实现物联网产品全生命周期管理

      全世界99%的物体尚未联网,一场由物联网(IoT)技术引发的"万物智联"革命正在加速到来.但是随之而来的物联网安全问题,也显得非常重要.这里既包括物联网终端的安全,也包括物联网 ...

  6. 解密阿里云IoT物联网平台MQTT Access Server核心架构

    MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布.订阅信息传输协议.MQTT已逐渐成为IoT领域最热门的协议,也是国内外各大物联网平台最主流的传输协议,阿里云IoT物联网平台 ...

  7. 支付宝小程序使用MQTT over WebSocket连接阿里云IoT物联网平台

    前言 之前写了一篇微信小程序使用MQTT over WebSocket连接阿里云IoT物联网平台,介绍了如何使用mqtt.js在微信小程序上连接mqtt服务器,文中顺带提了mqtt.js是支持支付宝小 ...

  8. 下载 | mqtt4aliyun 阿里云 IoT 物联网 设备模拟器 Mac , Windows版本

    mqtt4aliyun 是基于 MQTT X 开源版本修改,用于连接阿里云IoT物联网平台的 MQTT模拟器,支持 macOS, Windows系统,支持简体中文/English切换.相比于 MQTT ...

  9. HaaS学习笔记 | 终端设备接入和断开阿里云IoT物联网平台的明细教程

    [1]题目要求 [本教程视频]:终端设备连接阿里云物联网平台 [2]理论基础 aliyunIoT是HaaS轻应用扩展库中模块,能帮助厂商将设备安全地接入到阿里云IoT物联网平台,继而让设备可以被物联网 ...

  10. MQTT协议与阿里云IoT物联网平台

    1.MQTT协议介绍 1.1 MQTT协议 MQTT(消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的支持在各方之间异步通信的消息协议.MQTT在空间和时间上将消息发送者与接收者分离,因此可以 ...

最新文章

  1. gdb 设置一个函数, 出现4个断点的原因
  2. 使用WindowManager添加View——悬浮窗口的基本原理
  3. ActiveMQ中Queue生产者
  4. python中a=str(int(a))什么意思_如何解决TypeError:只能将str(而不是“int”)连接到str - python...
  5. linux网络相关常见问题
  6. 深入浅出CSS(二):关于雪碧图、background-position与steps函数的三角恋情
  7. linux通过html显示图片,如何在Linux上将HTML页面转化成Png图片?
  8. mysql获取时间戳_服了!阿里Mysql三位封神专家总结1200多页性能优化的千金良方...
  9. TensorFlow中Variable()和get_variable()
  10. Bootstrap3 带表格的面板
  11. 业务爆发式增长,音视频服务如何做好质量监控与优化?
  12. 【Guava】对Guava类库的注释类型 VisibleForTesting的理解
  13. hdu 1800 Flying to the Mars
  14. 《Algorithms》—— 下压(LIFO)栈(能够动态调整数组大小的实现)
  15. 12v直流电机并联多大电容_对电容的理解
  16. linux下安装与部署redis
  17. PCL库——点云数据处理
  18. python练手_opencv面部相似度标记
  19. 蓝桥杯训练系统 分解质因数
  20. 最新全国姓名报告出炉!

热门文章

  1. 将公式插入WPS/Word中
  2. 实例!从EIQ-ABC分析法到自动化方案规划设计
  3. 微信小程序简单爱心点赞动画
  4. 抖音上热门的六大规律
  5. matlab对数坐标的使用
  6. 网络发现不了其他计算机,win10网络发现不了其他电脑怎么办_win10网络里找不到其他电脑如何处理...
  7. vs配置python环境_VS2017中安装Python开发环境[TZZ]
  8. 直面程序人生,始于当下,奔赴未来!
  9. 小白学习MySQL - 表空间碎片整理方法
  10. java excel 冻结_poi excel 常用操作 [冻结、合并、链接]