第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Nodejs设备接入阿里云IoT平台

Nodejs设备接入阿里云IoT平台

时间:2024-07-30 18:04:57

相关推荐

Nodejs设备接入阿里云IoT平台

1. 准备工作

1.1 注册阿里云账号

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

1.2 免费开通IoT物联网套件

产品官网 /product/iot

1.3 软件环境

Nodejs安装

2. 开发步骤

2.1 IoT云端开发

1)创建高级版产品

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

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

2.2 设备端开发

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

1)创建设备端项目

创建文件夹 iot-demo

创建2个文件 package.json 和 device.js

2)package.json文件

添加阿里云IoT套件sdk依赖

{"name": "aliyun-iot-demo","dependencies": {"mqtt": "2.18.8"}}

3)npm下载安装IoT套件SDK

$ npm install

4)device.js 应用程序代码

/**"dependencies": { "mqtt": "2.18.8" }*/const crypto = require('crypto');const mqtt = require('mqtt');//设备身份三元组+区域const deviceConfig = {productKey: "替换",deviceName: "替换",deviceSecret: "替换",regionId: "cn-shanghai"};//根据三元组生成mqtt连接参数const options = initMqttOptions(deviceConfig);const url = `tcp://${deviceConfig.productKey}.iot-as-mqtt.${deviceConfig.regionId}.:1883`;//2.建立连接const client = mqtt.connect(url, options);//3.属性数据上报const topic = `/sys/${deviceConfig.productKey}/${deviceConfig.deviceName}/thing/event/property/post`;setInterval(function() {//发布数据到topicclient.publish(topic, getPostData());}, 5 * 1000);//4.订阅主题,接收指令const subTopic = `/${deviceConfig.productKey}/${deviceConfig.deviceName}/control`;client.subscribe(subTopic)client.on('message', function(topic, message) {console.log("topic " + topic)console.log("message " + message)})//IoT平台mqtt连接参数初始化function initMqttOptions(deviceConfig) {const params = {productKey: deviceConfig.productKey,deviceName: deviceConfig.deviceName,timestamp: Date.now(),clientId: Math.random().toString(36).substr(2),}//CONNECT参数const options = {keepalive: 60, //60sclean: false, //cleanSession保持持久会话protocolVersion: 4 //MQTT v3.1.1}//1.生成clientId,username,passwordoptions.password = signHmacSha1(params, deviceConfig.deviceSecret);options.clientId = `${params.clientId}|securemode=3,signmethod=hmacsha1,timestamp=${params.timestamp}|`;options.username = `${params.deviceName}&${params.productKey}`;return options;}function getPostData() {const payloadJson = {id: Date.now(),params: {temperature: Math.floor((Math.random() * 20) + 10),humidity: Math.floor((Math.random() * 20) + 60)},method: "thing.event.property.post"}console.log("===postData\n topic=" + topic)console.log(payloadJson)return JSON.stringify(payloadJson);}/*生成基于HmacSha1的password参考文档:/document_detail/73742.html?#h2-url-1*/function signHmacSha1(params, deviceSecret) {let keys = Object.keys(params).sort();// 按字典序排序keys = keys.sort();const list = [];keys.map((key) => {list.push(`${key}${params[key]}`);});const contentStr = list.join('');return crypto.createHmac('sha1', deviceSecret).update(contentStr).digest('hex');}

3.设备运行

3.1 设备启动

3.2 IoT控制台查看设备运行状态

至此,完成了物联网设备接入阿里云IoT物联网云平台的开发实践

IoT物联网技术公共账号

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