700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Nodejs设备接入阿里云IoT平台——设备接入类

Nodejs设备接入阿里云IoT平台——设备接入类

时间:2023-02-23 02:00:40

相关推荐

Nodejs设备接入阿里云IoT平台——设备接入类

1. 准备工作

1.1 注册阿里云账号

使用个人淘宝账号或手机号,开通阿里云账号,并通过__实名认证(可以用支付宝认证)__

1.2 免费开通IoT物联网套件

产品官网​​/product/iot​​

1.3 软件环境

Nodejs安装​​/en/download/​​

编辑器 sublimeText/nodepad++/vscode

MQTT lib​​/package/mqtt​​

2. 开发步骤

2.1 云端开发

1) 创建高级版产品

2) 功能定义,产品物模型添加属性

添加产品属性定义

物模型对应属性上报topic

/sys/替换为productKey/替换为deviceName/thing/event/property/post

物模型对应的属性上报payload

{id: 123452452,params: {temperature: 26.2,humidity: 60.4},method: "thing.event.property.post"}

3) 设备管理>注册设备,获得身份三元组

2.2 设备端开发

我们以nodejs程序来模拟设备,建立连接,上报数据。

1.创建文件夹 aliyun-iot-demo-nodejs2.进入文件夹,创建package.json文件,添加内容3.执行npm install命令,安装sdk4.创建thermometer.js文件,添加内容5.执行node thermometer.js命令

1) package.json添加阿里云IoT套件sdk依赖

{"name": "aliyun-iot","dependencies": {"mqtt": "2.18.8"},"author": "wongxming","license": "MIT"}

2) 下载安装SDK

在aliyun-iot-demo-nodejs文件夹下,执行命令

$ npm install

3) 应用程序目录结构

4) 模拟设备thermometer.js代码

/**"dependencies": { "mqtt": "2.18.8" }*/const crypto = require('crypto');const mqtt = require('mqtt');//设备身份三元组+区域const deviceConfig = require("./iot-device-config.json");const options = {productKey: deviceConfig.productKey,deviceName: deviceConfig.deviceName,timestamp: Date.now(),clientId: Math.random().toString(36).substr(2)}options.password = signHmacSha1(options, deviceConfig.deviceSecret);options.clientId = `${options.clientId}|securemode=3,signmethod=hmacsha1,timestamp=${options.timestamp}|`;options.username = `${options.deviceName}&${options.productKey}`;const url = `tcp://${deviceConfig.productKey}.iot-as-mqtt.${deviceConfig.regionId}.:1883`;//建立连接const client = mqtt.connect(url,options);//属性上报的Topicconst topic = `/sys/${deviceConfig.productKey}/${deviceConfig.deviceName}/thing/event/property/post`;setInterval(function() {//发布数据到topicclient.publish(topic, getPostData());}, 5 * 1000);function getPostData(){const payloadJson = {id: Date.now(),params: {temperature: Math.floor((Math.random() * 20) + 10),humidity: Math.floor((Math.random() * 40) + 60)},method: "thing.event.property.post"}console.log("===postData topic=" + topic)console.log(payloadJson)return JSON.stringify(payloadJson);}/*生成基于HmacSha1的password参考文档:/document_detail/73742.html?#h2-url-1*/function signHmacSha1(options, deviceSecret) {let keys = Object.keys(options).sort();// 按字典序排序keys = keys.sort();const list = [];keys.map((key) => {list.push(`${key}${options[key]}`);});const contentStr = list.join('');return crypto.createHmac('sha1', deviceSecret).update(contentStr).digest('hex');}

设备配置文件

{"productKey": "替换productKey","deviceName": "替换deviceName","deviceSecret": "替换deviceSecret","regionId": "cn-shanghai"}

3. 启动运行

3.1 设备启动

$ node thermometer.js

3.2 云端查看设备运行状态

物联网平台产品介绍详情:​​/product/iot/iot_instc_public_cn​​

阿里云物联网平台客户交流群

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