微信小程序利用MTTQ連接阿里云IoT

一闷愤、小程序開發(fā)準(zhǔn)備

首先在小程序注冊(cè)網(wǎng)站注冊(cè)賬號(hào)獲取AppID為后續(xù)發(fā)布做準(zhǔn)備
微信開發(fā)工具網(wǎng)站下載開發(fā)者工具進(jìn)行微信小程序開發(fā)

微信小程序開發(fā)工具

二膝宁、MTTQ連接準(zhǔn)備材料

  1. 在GitHub上下載MTTQ.js庫(kù)癞埠,庫(kù)中有編程方法的案例供參考,本人沒使用這個(gè)庫(kù)(聽說容易報(bào)錯(cuò))。但還有現(xiàn)成的單文件可用的,mqtt.min.js,右鍵點(diǎn)擊下載鏈接文件即可梁沧。

  2. 阿里云官方庫(kù)下載hmac-sha1算法庫(kù)hex_hmac_sha1.js,右鍵點(diǎn)擊下載鏈接文件即可蝇裤。(以前看官方文檔是沒有小程序開發(fā)的廷支,最近我查閱阿里云官方文檔是有小程序開發(fā)的)

    阿里云官方小程序開發(fā)

    如果大家成功了可以與我分享分享

  3. 打開微信開發(fā)者工具創(chuàng)建項(xiàng)目

  4. 拷貝上面提供的兩個(gè)mqtt.min.js和hex_hmac_sha1.js到項(xiàng)目中utils目錄中去,下圖為小程序默認(rèn)創(chuàng)建的小程序項(xiàng)目目錄


    utils目錄
  5. 域名的設(shè)置:(1). 使用不校驗(yàn)域名的方法栓辜,在開發(fā)者工具項(xiàng)目中的菜單欄的詳情中勾選【不校驗(yàn)合法域名恋拍、web-view(業(yè)務(wù)域名)、TLS 版本以及 HTTPS 證書】(2).注冊(cè)了小程序后藕甩,在后臺(tái)可以添加socket 合法域名施敢,格式為:wxs://productKey.iot-as-mqtt.cn-shanghai.aliyuncs.com(替換productKey為自己的產(chǎn)品productKey)

代碼

隨便在一個(gè)頁(yè)面的js文件中加入以下代碼,注意替換參數(shù)為自己產(chǎn)品和設(shè)備的參數(shù)

//logs.js
const util = require('../../utils/util.js')
var mqtt = require('../../utils/mqtt.min.js')
const crypto = require('../../utils/hex_hmac_sha1.js');
Page({
  data: {
   
  },
  onLoad: function () {
    this.doConnect()
  },
  doConnect(){
    const deviceConfig = {
      productKey: "替換",
      deviceName: "替換",
      deviceSecret: "替換",
      regionId: "cn-shanghai"
    };
    const options = this.initMqttOptions(deviceConfig);
    console.log(options)
    //替換productKey為你自己的產(chǎn)品的
    const client = mqtt.connect('wxs://productKey.iot-as-mqtt.cn-shanghai.aliyuncs.com',options)
    client.on('connect', function () {
      console.log('連接服務(wù)器成功')
      //訂閱主題,替換productKey和deviceName
      client.subscribe('/productKey/deviceName/get', function (err) {
        if (!err) {
          //這里其實(shí)不能發(fā)布的僵娃,需要后臺(tái)設(shè)置權(quán)限羡藐,請(qǐng)參考阿里云官方文檔
          client.publish('presence', 'Hello mqtt')
        }
      })
    })
    //接收消息
    client.on('message', function (topic, message) {
      // message is Buffer
      console.log('收到消息:'+message.toString())
     //關(guān)閉連接 client.end()
    })
  },
  //IoT平臺(tái)mqtt連接參數(shù)初始化
 initMqttOptions(deviceConfig) {

    const params = {
      productKey: deviceConfig.productKey,
      deviceName: deviceConfig.deviceName,
      timestamp: Date.now(),
      clientId: Math.random().toString(36).substr(2),
    }
    //CONNECT參數(shù)
    const options = {
      keepalive: 60, //60s
      clean: true, //cleanSession不保持持久會(huì)話
      protocolVersion: 4 //MQTT v3.1.1
    }
    //1.生成clientId,username悯许,password
    options.password = this.signHmacSha1(params, deviceConfig.deviceSecret);
    options.clientId = `${params.clientId}|securemode=2,signmethod=hmacsha1,timestamp=${params.timestamp}|`;
    options.username = `${params.deviceName}&${params.productKey}`;

    return options;
  },

/*
  生成基于HmacSha1的password
  參考文檔:https://help.aliyun.com/document_detail/73742.html?#h2-url-1
*/
 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.hex_hmac_sha1(deviceSecret, contentStr);
  }
})

運(yùn)行代碼即可看到:


運(yùn)行后

更多的參數(shù)設(shè)置請(qǐng)查看mqtt.js文檔和阿里云物聯(lián)網(wǎng)Iot官方文檔

我自己的開發(fā)代碼就不貼出了,大家可以根據(jù)本文章進(jìn)行自己個(gè)人的開發(fā)

參考:
微信小程序-MQTT模擬器 連接阿里云IoT物聯(lián)網(wǎng)平臺(tái)
https://blog.csdn.net/ngl272/article/details/87887885

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辉阶,一起剝皮案震驚了整個(gè)濱河市先壕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谆甜,老刑警劉巖垃僚,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異规辱,居然都是意外死亡谆棺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門罕袋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來改淑,“玉大人,你說我怎么就攤上這事浴讯《湎模” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵榆纽,是天一觀的道長(zhǎng)仰猖。 經(jīng)常有香客問我,道長(zhǎng)奈籽,這世上最難降的妖魔是什么饥侵? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮衣屏,結(jié)果婚禮上躏升,老公的妹妹穿的比我還像新娘。我一直安慰自己勾拉,他們只是感情好煮甥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藕赞,像睡著了一般成肘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斧蜕,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天双霍,我揣著相機(jī)與錄音,去河邊找鬼。 笑死洒闸,一個(gè)胖子當(dāng)著我的面吹牛染坯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播丘逸,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼单鹿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了深纲?” 一聲冷哼從身側(cè)響起仲锄,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎湃鹊,沒想到半個(gè)月后儒喊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡币呵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年怀愧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片余赢。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芯义,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妻柒,到底是詐尸還是另有隱情毕贼,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布蛤奢,位于F島的核電站鬼癣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏啤贩。R本人自食惡果不足惜待秃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痹屹。 院中可真熱鬧章郁,春花似錦、人聲如沸志衍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)楼肪。三九已至培廓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間春叫,已是汗流浹背肩钠。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工泣港, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人价匠。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓当纱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親踩窖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坡氯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 這兩天剛開始跟著視頻教程學(xué)習(xí)微信小程序,視頻里將小程序后端部署到了騰訊云洋腮,進(jìn)行聯(lián)調(diào)開發(fā)廉沮。因本人只有阿里云服務(wù)器所以...
    SeLiNnnn丶Y閱讀 7,649評(píng)論 0 7
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,104評(píng)論 1 32
  • 2015.8.30 星期日 晴 高中的晚自習(xí)使我頗有成就感,望著天漸漸的黑下來徐矩,漫步在小路上,抬頭仰望天空叁幢,只...
    木槿111閱讀 79評(píng)論 0 1
  • 1. 安裝 https://www.elastic.co/cn/downloads/logstash當(dāng)前版本6.5...
    阿爾卡雷特閱讀 1,648評(píng)論 0 0
  • 題記:思念這種東西真的是像一壺老酒滤灯,時(shí)間越久發(fā)酵的越深。 在還是一個(gè)青澀懵懂的少年時(shí)期曼玩,我開始覺得自己喜歡那些...
    獨(dú)自澆愁閱讀 213評(píng)論 3 1