基于Topic消息路由的M2M设备间通信Node JS SDK 示例

简介: M2M(即Machine-to-Machine)是一种端对端通信技术。本章节以Node JS SDK为例,使用基于Topic消息路由的M2M设备间通信,主要介绍如何基于物联网平台构建一个M2M设备间通信架构。

概述

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、测试运行

_

参考链接

基于Topic消息路由的M2M设备间通信

相关文章
|
JavaScript 小程序 物联网
基于Topic消息路由的M2M设备间通信Node JS SDK 示例
本章节以Node JS SDK为例,使用基于Topic消息路由的M2M设备间通信,主要介绍如何基于物联网平台构建一个M2M设备间通信架构。
基于Topic消息路由的M2M设备间通信Node JS SDK 示例
|
1月前
|
Web App开发 JavaScript 前端开发
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
32 2
2024年5月node.js安装(winmac系统)保姆级教程
|
1月前
|
存储 JavaScript 搜索推荐
Node框架的安装和配置方法
安装 Node 框架是进行 Node 开发的第一步,通过正确的安装和配置,可以为后续的开发工作提供良好的基础。在安装过程中,需要仔细阅读相关文档和提示,遇到问题及时解决,以确保安装顺利完成。
95 2
|
3月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
2月前
|
JavaScript 开发工具 git
已安装nodejs但是安装hexo报错
已安装nodejs但是安装hexo报错
40 2
|
2月前
|
JavaScript 算法 内存技术
如何降低node.js版本(nvm下载安装与使用)
如何降低node.js版本(nvm下载安装与使用)
|
3月前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)
|
2月前
|
Web App开发 JavaScript 前端开发
JavaWeb 22.Node.js_简介和安装
JavaWeb 22.Node.js_简介和安装
|
3月前
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接
|
3月前
|
JavaScript Linux 开发者
一个用于管理多个 Node.js 版本的安装和切换开源工具
【9月更文挑战第14天】nvm(Node Version Manager)是一个开源工具,用于便捷地管理多个 Node.js 版本。其特点包括:版本安装便捷,支持 LTS 和最新版本;版本切换简单,不影响开发流程;多平台支持,包括 Windows、macOS 和 Linux;社区活跃,持续更新。通过 nvm,开发者可以轻松安装、切换和管理不同项目的 Node.js 版本,提高开发效率。
131 4