我是靠谱客的博主 甜蜜画笔,最近开发中收集的这篇文章主要介绍Nodejs设备接入阿里云IoT物联网平台,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 准备工作

1.1 注册阿里云账号

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

1.2 免费开通IoT物联网套件

产品官网 www.aliyun.com/product/iot

1.3 软件环境

Nodejs安装 nodejs.org

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}.aliyuncs.com:1883`;

//2.建立连接
const client = mqtt.connect(url, options);

//3.属性数据上报
const topic = `/sys/${deviceConfig.productKey}/${deviceConfig.deviceName}/thing/event/property/post`;
setInterval(function() {
    //发布数据到topic
    client.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, //60s
        clean: false, //cleanSession保持持久会话
        protocolVersion: 4 //MQTT v3.1.1
    }
    //1.生成clientId,username,password
    options.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("===postDatan topic=" + topic)
    console.log(payloadJson)

    return JSON.stringify(payloadJson);
}

/*
  生成基于HmacSha1的password
  参考文档:https://help.aliyun.com/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物联网技术,敬请关注公共账号

转载于:https://juejin.im/post/5c1763c65188253dfc63120b

最后

以上就是甜蜜画笔为你收集整理的Nodejs设备接入阿里云IoT物联网平台的全部内容,希望文章能够帮你解决Nodejs设备接入阿里云IoT物联网平台所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部