【物联网】阿里云iot物联网平台监控设备 在线离线状态 解决方案
阿里云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物联网平台监控设备 在线离线状态 解决方案相关推荐
- 基于TCP协议的GPS定位器设备迁移到阿里云IoT物联网平台实践——实践类
背景 GPS定位器是内置了GPS模块和移动通信模块的终端,用来将GPS模块获得的定位数据通过移动通信模块传至Internet上的一台服务器上,从而可以实现在电脑或手机上查询终端位置. GPS定位器可用 ...
- 揭秘 | 阿里云IoT物联网平台亿级设备接入方案大揭秘
一.前言 不同的接入层 互联网的产品基本都需要解决终端的接入问题,每个接入层会因为终端数量.终端能力.网络环境等不同的因素有各自的设计特性,比如:淘宝网需要解决海量短连接问题.微信需要解决海量长连接问 ...
- 【小程序案例】支付宝小程序-MQTT模器,IoT设备通过WSS接入阿里云IoT物联网平台...
支付宝小程序-MQTT模拟器通过WSS接入阿里云IoT物联网平台 准备工作 1.1 注册阿里云账号 开通阿里云账号,并通过支付宝实名认证 https://www.aliyun.com 1.2 免费开通 ...
- 阿里云IoT物联网平台
IoT物联网平台 一.工作原理 1.MQTT(Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议,专门设计用于物联网(IoT)应用中的通信.它是一种发 ...
- 揭秘阿里云IoT安全平台Link Security如何实现物联网产品全生命周期管理
全世界99%的物体尚未联网,一场由物联网(IoT)技术引发的"万物智联"革命正在加速到来.但是随之而来的物联网安全问题,也显得非常重要.这里既包括物联网终端的安全,也包括物联网 ...
- 解密阿里云IoT物联网平台MQTT Access Server核心架构
MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布.订阅信息传输协议.MQTT已逐渐成为IoT领域最热门的协议,也是国内外各大物联网平台最主流的传输协议,阿里云IoT物联网平台 ...
- 支付宝小程序使用MQTT over WebSocket连接阿里云IoT物联网平台
前言 之前写了一篇微信小程序使用MQTT over WebSocket连接阿里云IoT物联网平台,介绍了如何使用mqtt.js在微信小程序上连接mqtt服务器,文中顺带提了mqtt.js是支持支付宝小 ...
- 下载 | mqtt4aliyun 阿里云 IoT 物联网 设备模拟器 Mac , Windows版本
mqtt4aliyun 是基于 MQTT X 开源版本修改,用于连接阿里云IoT物联网平台的 MQTT模拟器,支持 macOS, Windows系统,支持简体中文/English切换.相比于 MQTT ...
- HaaS学习笔记 | 终端设备接入和断开阿里云IoT物联网平台的明细教程
[1]题目要求 [本教程视频]:终端设备连接阿里云物联网平台 [2]理论基础 aliyunIoT是HaaS轻应用扩展库中模块,能帮助厂商将设备安全地接入到阿里云IoT物联网平台,继而让设备可以被物联网 ...
- MQTT协议与阿里云IoT物联网平台
1.MQTT协议介绍 1.1 MQTT协议 MQTT(消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的支持在各方之间异步通信的消息协议.MQTT在空间和时间上将消息发送者与接收者分离,因此可以 ...
最新文章
- gdb 设置一个函数, 出现4个断点的原因
- 使用WindowManager添加View——悬浮窗口的基本原理
- ActiveMQ中Queue生产者
- python中a=str(int(a))什么意思_如何解决TypeError:只能将str(而不是“int”)连接到str - python...
- linux网络相关常见问题
- 深入浅出CSS(二):关于雪碧图、background-position与steps函数的三角恋情
- linux通过html显示图片,如何在Linux上将HTML页面转化成Png图片?
- mysql获取时间戳_服了!阿里Mysql三位封神专家总结1200多页性能优化的千金良方...
- TensorFlow中Variable()和get_variable()
- Bootstrap3 带表格的面板
- 业务爆发式增长,音视频服务如何做好质量监控与优化?
- 【Guava】对Guava类库的注释类型 VisibleForTesting的理解
- hdu 1800 Flying to the Mars
- 《Algorithms》—— 下压(LIFO)栈(能够动态调整数组大小的实现)
- 12v直流电机并联多大电容_对电容的理解
- linux下安装与部署redis
- PCL库——点云数据处理
- python练手_opencv面部相似度标记
- 蓝桥杯训练系统 分解质因数
- 最新全国姓名报告出炉!
热门文章
- 将公式插入WPS/Word中
- 实例!从EIQ-ABC分析法到自动化方案规划设计
- 微信小程序简单爱心点赞动画
- 抖音上热门的六大规律
- matlab对数坐标的使用
- 网络发现不了其他计算机,win10网络发现不了其他电脑怎么办_win10网络里找不到其他电脑如何处理...
- vs配置python环境_VS2017中安装Python开发环境[TZZ]
- 直面程序人生,始于当下,奔赴未来!
- 小白学习MySQL - 表空间碎片整理方法
- java excel 冻结_poi excel 常用操作 [冻结、合并、链接]