php 实现mqtt 订阅监听功能出错_IoT物联网实现M2M设备之间联动实战
M2M(即Machine-to-Machine)是一种端对端通信技术。IoT物联网平台支持使用规则引擎的Topic转发功能,实现M2M通信,您不用担心高并发场景下的稳定通信、低延时等技术难点,也不需要购买大量服务器去承载这些请求,您只需要根据自己的业务配置好转发规则即可。
本次实战,我们讲解在厨房场景中如何实现不同消费者购买的燃气灶和抽油烟机的联动,同样适用于智能家居场景中温湿度传感器和空调联动,空气质量传感器和空气净化器联动等。
技术方案
基于IoT物联网平台中规则引擎的M2M能力和设备标签功能,我们可以组合出设备之间联动的技术方案,如下:
消费者A购买我们的燃气灶z001和油烟机s001后,业务系统会在IoT物联网平台给燃气灶z001打上设备标签targetId:s001 。
当燃气灶z001发送特定Topic: /a***h/z001/user/change/rangehood 后,会在云端规则引擎处理后,转发给油烟机s001订阅的Topic: /a***i/s001/user/control/params ,并携带业务信息,以便抽油烟机判断是否开机和转速等级。
创建产品
1.抽油烟机
在控制台创建抽油烟机产品。
添加自定义Topic,用来监听运行指令。
2.燃气灶
在控制台创建燃气灶产品。
添加自定义Topic,用来发送控制油烟机运行的参数。
注册设备
3.油烟机设备
在控制台注册油烟机设备s001。
4.燃气灶设备
在控制台注册燃气灶设备z001,并添加标签信息: targetId:s001,来绑定抽油烟机设备s001。
配置M2M规则
通过规则引擎,配置云产品流转规则,如下:
处理数据
通过SQL规则,我们抽取出 rangehoodId,status,windPower 共3个业务参数。
SELECT attribute('targetId') as rangehoodId,status, windPower FROM "/a****h/+/user/change/rangehood"
转发数据
转发数据过程中,我们用 ${rangehoodId} 来动态替换目标设备。
设备开发
我们以Nodejs脚本来模拟设备行为。
5.油烟机设备
油烟机设备s001主要通过subscribe特定Topic来监听云端指令。
const mqtt = require('aliyun-iot-mqtt');var options = { productKey: "替换", deviceName: "替换", deviceSecret: "替换", regionId: "cn-shanghai"};//建立连接const client = mqtt.getAliyunIotMqttClient(options);client.subscribe(`/${options.productKey}/${options.deviceName}/user/control/params`)client.on('message', function(topic, message) { console.log("sub topic => " + topic) console.log("message => " + message)})
6.燃气灶设备
燃气灶设备z001根据自身状态,上报业务数据到云端。
const mqtt = require('aliyun-iot-mqtt');var options = { productKey: "替换", deviceName: "替换", deviceSecret: "替换", regionId: "cn-shanghai"};var pubTopic = `/${options.productKey}/${options.deviceName}/user/change/rangehood`;//建立连接const client = mqtt.getAliyunIotMqttClient(options);//上报数据client.publish(pubTopic, getPostData(), { qos: 0 });function getPostData() { const payloadJson = { status: "on", //on,off windPower: "high" //low,middle,high } console.log("Pub Topic => " + pubTopic) console.log("Payload => " + JSON.stringify(payloadJson)) return JSON.stringify(payloadJson);}
联机运行
我们先启动油烟机s001模拟程序,再启动燃气灶z001模拟程序。
7.燃气灶设备运行日志
我们看到燃气灶z001上报运行数据到IoT物联网平台,通过预先配置M2M规则,流转控制指令给油烟机设备s001。
8.油烟机设备运行日志
我们看到油烟机s001收到了IoT物联网平台流转过来的设备运行指令。
php 实现mqtt 订阅监听功能出错_IoT物联网实现M2M设备之间联动实战相关推荐
- Web3j监听功能代码研究
Web3j监听功能代码研究 高洪涛 2021-03-19 本周深入研究了web3j工具包实现以太坊的监听功能,实现了交易监听和代币监听的方法,对监听过程中的常见问题进行了处理,本文就是对这部分开发经验 ...
- SpringBoot监听redis订阅监听和发布订阅
前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package ...
- Android监听作用,Android开发之CheckBox的简单使用与监听功能示例
本文实例讲述了Android开发之CheckBox的简单使用与监听功能.分享给大家供大家参考,具体如下: activity_main.xml android:layout_width="ma ...
- 基于uniapp开发的SUPOIN(销邦) PDA使用广播扫码监听功能
广播扫码监听功能 扫码方案 摄像头 激光 封装组件 手持 PDA 是 Android 平台,其扫码的解决方案也有摄像头和激光扫描等多种解决方案,这里结合 uni-app 的开发特性,记录一下具体的实现 ...
- FreeSwtich的监听功能
FreeSwitch 提供了一个APP实现通道的监听功能,它的名字是:eavesdrop. 如果要持续监听某个用户,那么要用mod_spy里实现. 用法 Usage eavesdrop [<uu ...
- freeswitch实现监听_Freeswitch监听功能--单向监听
标签: 1.监听函数:eavesdrop lua脚本中调用监听: local cmd = "originate loopback/3333 &eavesdrop("..uu ...
- 获取mongodb数据变更_支持mysql、MongoDB数据变更订阅/监听分发
1 概述 mysql.MongoDB数据变动监听分发 本项目意在简化监听mysql.MongoDB数据库的不同表的各种数据变动 项目依赖redis,mysql 使用场景:刷新缓存.异构系统... 2 ...
- ionic2.0消息订阅监听机制
2019独角兽企业重金招聘Python工程师标准>>> 两种方案:1.session.watchCurrentCustomer().subscribe(data => {}); ...
- 基于uniapp开发的ZEBRA(斑马) PDA使用广播扫码监听功能(文件配置+插件使用)
一.首先进行DataWedge的配置 以ZEBRA TC52为例 1.点击桌面的DataWedge软件 2.点击第一项Profile0(default)进行配置 3.勾选"配置文件已启用&q ...
最新文章
- 中介分析 相对直接效应 相对简介效应_中介效应分析方法和流程
- 系统集成项目管理之项目采购管理
- 生成pojo mysql_通过数据库表反向生成pojo类
- 快速找到SAP CRM WebClient UI thtmlbUtil的定义位置
- 西华大学计算机学院陈鹏,中国计算机学会CCF服务计算专委会走进西华大学
- 47 - 算法 - Leetcode-160 -相交链表
- 面向对象的超级面试题,涉及封装多态继承等多方面考核,异常烧脑,90%的面试官必问题目,不会这个的,只是会搬砖的码农
- apk 反编译工具及使用
- Wordpress中wp-admim管理后台(404)无法进入,无限循环跳出解决方法
- 审计工作存在的难点和问题_浅谈审计整改工作存在的困难及对策
- HTML <thead> 标签
- hdoj 瞬间移动 5698(逆元)
- 2022 最新 IntelliJ IDEA 2022 详细配置步骤演示(图文版)
- 表格边框不显示怎么办
- 2023二建各科入门帮助
- vartualBox安装oracle数据库
- 使用Spring实现读写分离(MySQL实现主从复制)
- 计算机正确的坐姿教案,礼仪课坐姿教案.doc
- 【转】情牵牛仔裤 情色一生
- 计算机网络期末复习整理
热门文章
- Docker学习总结(35)——Docker全面认识再总结
- Spring MVC学习总结(10)——Spring MVC使用Cors跨域
- Maven学习总结(21)——Maven常用的几个核心概念
- 线程打印_经典面试题——两个线程交替打印奇数和偶数
- fastslam matlab,fastslam 快速定位和构图的源码,一个简单的例子,3D建模,可以用作学习智能机器人自主移动 matlab 272万源代码下载- www.pudn.com...
- SpringMVC 中整合JSON、XML视图二
- POJ 2299 Ultra-QuickSort(线段树+离散化)
- OPENSSL编程 第二十章 椭圆曲线
- Codewar-008: Playing with passphrases 玩玩加密口令
- Windows Server 2012安装 .NET Framework 3.5