连接方法:先HTTPS认证再连接
/*
*阿里云物联网套件nodejs连接示例
*Created by 薛将军 on 2018/1/8.
*/ var mqtt = require('mqtt'); //mqtt
var request = require('request'); //request用于https认证
var crypto = require('crypto'); //加密模块 var productKey = '物联网套件key'; //产品key
var deviceName = '物联网套件设备名称'; //设备名称
var clientId = Math.random().toString(16).substr(2, 8); //自id
var deviceSecret = '物联网套件设备密码'; //设备密码
var host = `mqtt://${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883`; //阿里mqtt host var content = {
productKey: productKey,
deviceName: deviceName,
clientId: clientId
} //字典排序
function sign_hmac(ct) {
var secretString = '';
for (let key of Object.keys(ct).sort()) {
secretString += key + content[key];
}
return secretString;
}
//加密 crypto.createHmac('sha1', deviceSecret).update('待加密字串').digest('hex');
var sign = crypto.createHmac('sha1', deviceSecret).update(sign_hmac(content)).digest('hex'); var url = 'https://iot-auth.cn-shanghai.aliyuncs.com/auth/devicename' var requestForm = {
productKey: productKey,
deviceName: deviceName,
sign: sign,
clientId: clientId,
signmethod: 'hmacsha1'
} var params = {
url: url,
form: requestForm
} //HTTPS认证
request.post(params, function(error, response, body) {
if (error) {
console.log(error)
}
if (!error && response.statusCode == 200) {
var res = JSON.parse(body) var options = {
clientId: clientId,
username: res.data.iotId,
password: res.data.iotToken, } var client = mqtt.connect(host, options);
client.on('connect', function() {
console.log('MQTT服务器链接成功!')
client.subscribe(`/${productKey}/${deviceName}/send_push`)
}) client.on('error', function(err) {
console.log(err)
}) //topic
client.on('message', function(topic, message) {
// message is Buffer
console.log('收到:' + topic + '消息:' + message.toString())
client.end() //结束连接
})
}
})

nodejs连接阿里云物联网套件(mqtt)的更多相关文章

  1. 【物联网云端对接-2】通过MQTT协议与阿里云物联网套件进行云端通信

     在<程序员>杂志2017.4刊上,曾写过一篇<微软百度阿里三大物联网平台探析>,上面曾介绍了阿里云物联网套件的一些内容,在写该篇文章的时候,凌霄物联网网关还无法对接到此平台( ...

  2. 阿里云物联网套件(iot)设备间通信(M2M)在web端的实践

    之前通过nodejs连接到阿里云物联网mqtt,后又用浏览器连接,总结一下: 由于项目是SPA,使用webpack,关键代码: 同样使用mqtt.js之前先install: npm install - ...

  3. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:1. 连接阿里云物联网

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  4. 阿里云物联网平台: Android 连接阿里云物联网平台

    说明 这节是是为下一节做铺垫的 只要是按照我提供的学习路线一节一节的认认真真学过来的,这节就十分的简单 有了前两节的基础,这节呢咱让Android 连接阿里云物联网平台 使用这节的代码  https: ...

  5. ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试MQTT连接阿里云物联网平台

    前言 这节看一下在阿里云上实现MQTT通信是个怎样的流程 看了很多网上的教程,感觉讲的迷迷糊糊.... 其实感觉他们是对MQTT不够透彻,所以写的文章就是个比着葫芦画瓢的感觉 在我面前这东西就是玩具. ...

  6. mqtt网关服务器连接阿里云关联物模型

    mqtt网关服务器连接阿里云关联物模型 卓岚专门为工业环境设计的RS485设备数据采集器/物联网网关,兼具串口服务器.Modbus网关.MQTT网关.RS485转JSON等多种功能于一体. 可以连接阿 ...

  7. django 通过MQTT连接阿里云

    Django MQTT 连接阿里云 目录 Django MQTT 连接阿里云 目录 一.安装库 1.安装Python对接mqtt协议库,paho-mqtt 二. 设备认证,一机一密型接入 三.问题 1 ...

  8. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:2. IoT 客户端

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  9. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:3. 订阅Topic与响应Topic

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

随机推荐

  1. 【1】HTTP协议和Socket接口区别

    内容提要: 1.网络七层模型 2.什么是HTTP协议 3.什么是Socket接口 1.网络七层模型 第一层:物理层 为设备之间的信息提供传输提供可靠环境,那么这个环境是什么呢? 如:同轴电缆,插头,接 ...

  2. cropper截图不压缩PHP上传裁剪后的图片

    cropperjs使用不多说网上都有很详细的介绍如下面: https://blog.csdn.net/lxy4239/article/details/78920979 主要讲下使用的经历 裁剪后图片不 ...

  3. 开个小灶——turtle 海龟图形

    turtle 海龟图形 turtle数据库是python语言中最流行的绘制函数图形的数据库,绘制笔头像个小海龟,因此一般称为 海龟图形.海龟数据库的导入   import turtle 1 画布大小设 ...

  4. 微信为什么不能下载apk 微信不能打开App下载地址的问题

    此方法可以实现微信内置浏览器跳转到手机其它浏览器,现在网上其它的方法都只是一个页面,让访问者自己手动点右上角浏览器打开,而这个不同,是可以直接自动跳转的.       <?php   error ...

  5. transform,transtion属性

    transform:变化类型,transtion变化方式

  6. springboot秒杀课程学习整理1-2

    1)从数据库到前端,做了三层转换,最后统一返回给前端的格式 DO-> model: 放在service中,目的是为了组装来自于数据库的数据,有些字段来自于不同的表的取,这一层相当于真正的业务模型 ...

  7. 强大的金融类图表库 TradingView 使用分享

    这段时间刚好做币圈交易所,运用到了现在最火的金融类图表库 -- TradingView ,就是强大,基本上现在的火币网(https://www.huobi.com),币安网(https://www.b ...

  8. unity中的UGUI一些组件的使用

    一.Toggle Group(Script) LeftButtons上添加Toggle Group组件,属性Allow Switch Off打对勾,代表它的所有子物体上带有Toggle组件的属性Is ...

  9. git hub 的使用步骤

    1:准备环境 ①电脑已安装git ②注册github账号 一:使用git控制台进行本地操作 ①打开 GitBash ②填写用户名和邮箱作为标识 分别输入以下命令: git config  --glob ...

  10. jjava:将jar包引入环境变量的一个骚操作以及因此搞出来的扑街问题

    现在我有一个java文件,我只想javac启动,但是这货import了一堆jar里面的东西. 于是我下回了所有的jar包,将这些jar包丢到jdk1.8.0_162\jre\lib\ext里面就ok了 ...