失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【物联网】阿里云iot物联网平台监控设备 离线状态 解决方案

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

时间:2022-06-28 06:53:11

相关推荐

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

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

需求

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

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

具体实现

服务端订阅

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

其中:

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

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

同步监控消息

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

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

拉取MNS队列并处理消息

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

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

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

/*** 拉取状态队列消息*/public function actionIotStatus(){$endPoint = "https://************.-";$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;}}

总结

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

参考资料

/document_detail/73736.html?spm=a2c4g.11186623.2.11.47f024bddFMFe5#concept-ap3-lql-b2b/document_detail/30594.html?spm=a2c4g.11186623.6.678.6f793eefg65gju

如果觉得《【物联网】阿里云iot物联网平台监控设备 离线状态 解决方案》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。