基于Topic消息路由的M2M设备间通信Node JS SDK 示例
概述
M2M(即Machine-to-Machine)是一种端对端通信技术。本章节以Node JS SDK为例,使用基于Topic消息路由的M2M设备间通信,主要介绍如何基于物联网平台构建一个M2M设备间通信架构。
实验步骤
第一部分:配置相关
1、产品、设备、Topic的创建参考链接
消息路由建立
本部分目前不支持门户直接配置,需要基于管理API: CreateTopicRouteTable 来建立消息路由关系。
测试可以直接使用OpenAPI来快速实现相关功能,本地集成相关功能直接基于SDK即可。
2、JAVA SDK Demo
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.iot.model.v20170420.CreateTopicRouteTableRequest; import com.aliyuncs.iot.model.v20170420.CreateTopicRouteTableResponse; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; import java.util.*; public class CreateTopicRouteTable { public static void main(String[] args) { DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "LTAIOZZg********", "v7CjUJCMk7j9aKduMAQLjy********"); IAcsClient client = new DefaultAcsClient(profile); CreateTopicRouteTableRequest request = new CreateTopicRouteTableRequest(); request.setRegionId("cn-shanghai"); List<String> dstTopicList = new ArrayList<String>(); dstTopicList.add("/a12OcQ4****/device2/user/RouteData"); request.setDstTopics(dstTopicList); request.setSrcTopic("/a12OcQ4****/device1/user/RouteData"); try { CreateTopicRouteTableResponse response = client.getAcsResponse(request); System.out.println(new Gson().toJson(response)); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { System.out.println("ErrCode:" + e.getErrCode()); System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); } } }
注意:SDK版本差异按照实际版本调整即可。
3、查询路由关系
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.iot.model.v20170420.QueryTopicRouteTableRequest; import com.aliyuncs.iot.model.v20170420.QueryTopicRouteTableResponse; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; public class QueryTopicRouteTable { public static void main(String[] args) { DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "LTAIOZZgY********", "v7CjUJCMk7j9aKduMAQLjy********"); IAcsClient client = new DefaultAcsClient(profile); QueryTopicRouteTableRequest request = new QueryTopicRouteTableRequest(); request.setRegionId("cn-shanghai"); request.setTopic("/a12OcQ4****/device1/user/RouteData"); try { QueryTopicRouteTableResponse response = client.getAcsResponse(request); System.out.println(new Gson().toJson(response)); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { System.out.println("ErrCode:" + e.getErrCode()); System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); } } }
运行结果
{"requestId":"9404FD71-7461-478E-B064-0AEB15C91111","success":true,"dstTopics":["/a12OcQ4****/device2/user/RouteData"]}
第二部分:客户端代码相关
4、Node JS SDK安装参考链接
5、设备端业务代码
device1
// node引入包名 const iot = require('alibabacloud-iot-device-sdk'); // 浏览器、微信小程序,支付宝小程序引入./dist编译的js文件 // const iot = require('./dist/alibabacloud-iot-device-sdk.js'); // js版本下载地址: // https://github.com/aliyun/alibabacloud-iot-device-sdk/tree/master/dist 或 // alibabacloud-iot-device-sdk.js 下载地址 https://unpkg.com/alibabacloud-iot-device-sdk@1.2.4/dist/alibabacloud-iot-device-sdk.js 或 // alibabacloud-iot-device-sdk.min.js 下载地址 https://unpkg.com/alibabacloud-iot-device-sdk@1.2.4/dist/alibabacloud-iot-device-sdk.min.js // const device = iot.device({ productKey: 'a12OcQ4****', deviceName: 'device1', deviceSecret: '3yWqKtWxN7VPuWEEDEn4eKWN********' // 支付宝小程序和微信小程序额外需要配置协议参数 // "protocol": 'alis://', "protocol": 'wxs://', }); device.on('connect', () => { console.log('connect successfully!'); // 发送消息到指定的Topic,等待规则引擎转发到另外的一个设备的Topic device.publish('/a12OcQ4****/device1/user/RouteData', '{"ke1":"value1 test"}'); device.publish('/a12OcQ4****/device1/user/RouteData', 'This is my test job.'); });
device2
// node引入包名 const iot = require('alibabacloud-iot-device-sdk'); // 浏览器、微信小程序,支付宝小程序引入./dist编译的js文件 // const iot = require('./dist/alibabacloud-iot-device-sdk.js'); // js版本下载地址: // https://github.com/aliyun/alibabacloud-iot-device-sdk/tree/master/dist 或 // alibabacloud-iot-device-sdk.js 下载地址 https://unpkg.com/alibabacloud-iot-device-sdk@1.2.4/dist/alibabacloud-iot-device-sdk.js 或 // alibabacloud-iot-device-sdk.min.js 下载地址 https://unpkg.com/alibabacloud-iot-device-sdk@1.2.4/dist/alibabacloud-iot-device-sdk.min.js // const device = iot.device({ productKey: 'a12OcQ4****', deviceName: 'device2', deviceSecret: 'X9fzX9u0aIOORNghPyfYKq22********' // 支付宝小程序和微信小程序额外需要配置协议参数 // "protocol": 'alis://', "protocol": 'wxs://', }); // 定于规则引擎转发过来的消息 device.subscribe('/a12OcQ4****/device2/user/RouteData'); device.on('connect', () => { console.log('connect successfully!'); }); device.on('message', (topic, payload) => { console.log(topic, payload.toString()); });
8、测试运行
参考链接
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
基于规则引擎的M2M设备间通信Node JS SDK 示例
概述 M2M(即Machine-to-Machine)是一种端对端通信技术。本章节以Node JS SDK为例,使用规则引擎数据流转来实现M2M设备间通信,主要介绍如何基于物联网平台构建一个M2M设备间通信架构。 实验步骤 第一部分:配置相关 1、创建产品 2、定义Topic 3、产品下面添加设备1和设备2 4、规制引擎配置 5、启动规则引擎 第二部分:客户端代码相关 6、Node JS 设备端SDK安装 npm install alibabacloud-iot-device-sdk --save 7、设备端业务代码 设备1 // node引入包名 const iot = require('alibabacloud-iot-device-sdk'); // 浏览器、微信小程序,支付宝小程序引入./dist编译的js文件 // const iot = require('./dist/alibabacloud-iot-device-sdk.js'); // js版本下载地址: // https://github.com/aliyun/alibabacloud-iot-device-sdk/...
- 下一篇
AliOS Things开发:AliOS Studio使用说明
介绍 AliOS Studio是一套基于vscode的开发环境,支持windows、linux、macOS。AliOS Studio有以下功能: 极佳开发体验、简单操作界面 支持AliOS Things应用开发 代码补全、索引、提示等 编译/下载/调试 AliOS Things 适配多种开发板 串口工具、TSL转换工具等 安装 下载并安装 Visual Studio Code 访问 https://code.visualstudio.com/ 下载并安装vscode。 安装 AliOS Studio 插件 打开vscode,按照下图所示安装AliOS Studio插件: 安装 aos-cube AliOS Studio 依赖 aos-cube,如果想要手动安装 aos-cube 的话,请参考 System environment setup,同时AliOS Studio也支持一键安装aos-cube,如下图所示: 使用AliOS Studio一键安装功能首先需要安装python2.7和pip。 AliOS Studio一键安装的aos-cube是安装在虚拟python环境里面的(vir...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境