利用规则引擎的M2M实现设备之间联动

简介: 利用规则引擎的M2M实现设备之间联动

利用M2M实现设备之间联动

方案设计

基于IoT物联网平台中规则引擎的M2M能力,我们可以实现设备间联动通信,技术方案如下:
image.png

1.创建产品

1.1 油烟机

创建设备
image.png
通信Topic
image.png

1.2 燃气灶

创建设备
image.png
通信Topic
image.png

2.注册设备

2.1 油烟机设备

image.png

2.2 燃气灶设备

注册设备,并绑定目标油烟机
image.png

3.规则引擎配置 M2M规则


image.png

3.1 处理数据

image.png

SELECT 
attribute('targetId') as rangehoodId,
status, 
windPower 
FROM 
"/a****h/+/user/change/rangehood"

3.2 转发数据

image.png

4.设备开发

4.1 油烟机设备

设备端开发

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)
})

4.2 燃气灶设备

设备端开发

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);
}

5.联机运行

5.1 设备启动

油烟机

$ node range-hood.js 

sub topic => /a1zTlSPM9Ni/s001/user/control/params
message => {"windPower":"high","rangehoodId":"s001","status":"on"}

燃气灶

$ node gas-stove.js 

Pub Topic => /a****h/z001/user/change/rangehood
Payload => {"status":"on","windPower":"high"}

5.2 设备运行日志

image.png


image.png

【往期回顾】

1.自建MQTT集群迁移阿里云IoT平台
2.IoT时代:WiFi配网技术剖析
3.微信小程序和IoT智能家居实践
4.IoT云端通用数据解析脚本实践

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
7月前
|
机器学习/深度学习 人工智能 物联网
大模型微调有必要做吗?全参数微调、LoRA还是RAG?看完这篇你就懂了
在人工智能时代,若想以最小成本、最高效率赋能通用大模型专业的行业能力,关键在于找到效果、成本与灵活性的黄金平衡点......
890 5
大模型微调有必要做吗?全参数微调、LoRA还是RAG?看完这篇你就懂了
|
编解码 计算机视觉 Python
Opencv学习笔记(九):通过CV2将摄像头视频流保存为视频文件
使用OpenCV库通过CV2将摄像头视频流保存为视频文件,包括定义视频编码格式、设置保存路径、通过write写入视频文件,并提供了相应的Python代码示例。
876 0
|
JSON 安全 API
淘宝订单接口对接实战:从申请到代码实现的全流程
随着电子商务的飞速发展,订单管理已成为电商生态中的核心环节。为了更高效地进行订单管理,许多商家选择通过API接口与外部系统进行数据交互。本文以淘宝订单接口为例,详细介绍如何从申请到代码实现,成功对接淘宝订单接口。
|
开发框架 前端开发 JavaScript
利用Spire.Pdf实现PDF添加印章的操作
利用Spire.Pdf实现PDF添加印章的操作
|
计算机视觉 Python
Opencv学习笔记(十):opencv和base64之间的转换
本文介绍了如何使用Python和OpenCV库将图像在Base64编码和OpenCV可读格式之间进行转换。
771 0
|
机器人 芯片
ChatGPT提问技巧——对话提示
ChatGPT提问技巧——对话提示
1332 8
|
缓存 移动开发 监控
Flutter 流畅度优化实践总结
“围绕 Flutter 流畅度体感优化,分享了挑战、线上线下监控工具建设、优化手段在组件容器沉淀,最后给出了优化建议。"
2655 0
Flutter 流畅度优化实践总结
|
边缘计算 运维 Kubernetes
在K8S中,常见部署K8S方式有哪些?
在K8S中,常见部署K8S方式有哪些?
|
存储 自然语言处理 Go
|
Java
Java中判断String类型为空和null的方法
Java中判断`String`变量是否为空或`null`需用`== null`和`.isEmpty()`。示例代码提供两种方法:`main`方法直接判断,`safeGetString`方法提供默认值。当输入为`null`或空时,返回默认值。代码包含三个测试案例,分别处理`null`、空字符串和非空非`null`字符串。
1221 0