微信小程序連接到阿里云物聯網平臺

目錄

    • 準備階段
    • 阿里云配置
    • 下載mqtt.min.js文件
    • 小程序實現
      • 注意
    • 小程序配置服務器域名

概述:介紹使用微信小程序連接到阿里云平臺的快捷方法和完整過程。
阿里云平臺建立設備,提供mqtt連接參數,小程序借助mqtt.min.js,也就是基于Github下的MQTT.js 庫,實現mqtt通信連接到阿里云,過程簡單清晰。

https://github.com/mqttjs/MQTT.js

準備階段

1.需要有阿里云物聯網平臺賬號,已注冊。
2.需要下載好微信開發者工具。
3.下載mqtt.min.js文件。

阿里云配置

阿里云上創建設備獲取相關連接信息的參數,相關操作可參考物聯網平臺配置(MQTT)

需要用到的參數如下圖所示:

在這里插入圖片描述

下載mqtt.min.js文件

這個的話,確實也是網上找的資源,鏈接:源代碼
但是需要自己保存為文件。
我也保存了文件,大家可以直接免費下載使用。
通過網盤分享的文件:mqtt.min.js
鏈接: https://pan.baidu.com/s/1IXoG50OWMruQ6I4iYeNtWg?pwd=wbs9 提取碼: wbs9

小程序實現

首先創建項目
在這里插入圖片描述
選用測試號即可,這里不用選云服務,看個人需求吧,模板選js 基礎模板即可。

界面控件什么的就不多說了,自己隨便弄個開關什么,按鈕什么的即可。
或者直接就是登錄到該界面就直接后臺自動連接到阿里云平臺。

先說下目錄結構

vx-app-test/
├── app.js                  # 小程序全局邏輯
├── app.json                # 全局配置
├── app.wxss                # 全局樣式
├── project.config.json     # 項目配置文件
├── pages/
│   └── index/              # 首頁
│       ├── index.js
│       ├── index.json
│       ├── index.wxml
│       └── index.wxss
└── utils/└── mqtt-client.js       # 封裝的MQTT連接模塊

index.js是json源碼,控制邏輯實現,index.wxml和 index.wxss這個是界面配置文件,login.json和頁面也有關聯,默認即可。mqtt-client.js 可以理解為接口庫。
index.js的詳細源碼:

const mqtt = require('../../utils/mqtt.min.js');
const subTopic = "" //訂閱的topic,接收訂閱信息
const publishTopic = "" //發布的topic,用來向平臺傳遞信息
Page({
//定義全局變量data: {userInfo: null,          // 用戶信息mqttStatus: '未連接',     // MQTT連接狀態mqttConnected: false,    // MQTT連接標識mqttClient: null,		//MQTT連接},onLoad() {  // 初始化MQTT連接this.initMQTT()},onUnload() {// 頁面卸載時斷開MQTT連接this.data.mqttClient.disconnect()},initMQTT(){const options = {keepalive: 60, //60sclean: true, //cleanSession不保持持久會話protocolVersion: 4 //MQTT v3.1.1}//將前面阿里云平臺獲取到的連接信息,復制到下面對應變量中即可。options.clientId =""options.username =""options.password = ""const mqtt_url = "wxs:/{ProductKey}.iot-as-mqtt.{Region ID}.aliyuncs.com"const client = mqtt.connect(mqtt_url ,options)//連接事件client.on('connect', function () {console.log('連接服務器成功')//連接后可進行訂閱// 訂閱多個主題// client.subscribe(['topic1', 'topic2'], {qos: 0}, function(err)/*QoS級別說明:0:最多一次,發送者只發送一次消息,不進行重試1:至少一次,確保消息到達Broker2:恰好一次,使用兩階段確認保證消息不丟失不重復*/client.subscribe(subTopic, {qos: 1}, function (err) {if (!err) {console.log('訂閱成功!');}})});//接收消息監聽client.on('message', function (topic, message) {// message is Buffer  // message 是 Buffer 類型,需要轉換為字符串let msg = message.toString();console.log('收到消息:'+ msg);//關閉連接 client.end()});//理論上有這兩個就夠了,訂閱后,接收消息,處理消息。//錯誤事件client.on('error', function(error) {console.error('連接錯誤:', error);});    this.data.mqttClient = client; // 保存到全局},//舉例一個開關觸發接口,實現消息上報。
// 開關狀態變化onPowerChange(e) {const powerOn = e.detail.value//獲取開關值this.setData({ powerOn })    // 發送控制命令 構建msg消息,字符或者整型,自行處理,最終需要轉為json// const msg = {staus: powerOn ? '1' : '0' };const message = JSON.stringify({cmd: 'status',value: powerOn ? 1 : 0})this.data.mqttClient.publish(publishTopic , message, {qos: 1});},
})

一些其他接口

//重連事件
client.on('reconnect', function() {console.log('正在嘗試重新連接...');
});//斷開連接事件
client.on('close', function() {console.log('連接已關閉');
});

注意

這里有幾個需要注意的地方

mqtt鏈接域名問題

const mqtt_url = "wxs:/{ProductKey}.iot-as-mqtt.{Region ID}.aliyuncs.com"

這里的{ProductKey},要替換為你的產品key,來自阿里云平臺,這里的{Region ID}也需要替換為你的地域。

物聯網平臺中的地域是什么,如何查詢?

在這里插入圖片描述

常用地域對照表

地域名稱所在城市Region ID
華北 2北京cn-beijing
華東 2上海cn-shanghai
華南 1深圳cn-shenzhen

官網地域對照表鏈接

綜上:一個案例,ProductKey : h6xxxxxwI , Region ID:cn-shanghai

const mqtt_url = "wxs:h6xxxxxwI.iot-as-mqtt.cn-shanghai.aliyuncs.com"

小程序配置服務器域名

此外小程序需要設置服務器域名,才能訪問,不然無法訪問阿里云物聯網平臺。
登錄微信公眾平臺-》掃碼登錄(用開發者助手同一個vx)
登錄的時候會有一個選項,需要根據開發者助手中的信息選擇登錄。

在這里插入圖片描述

登錄后可以找到下面的頁面,修改并在對應欄下添加域名即可。

注意一個關鍵的地方,這里輸入的域名是wss:的,而實際代碼中使用的是wssd :

const mqtt_url = "wxs:h6xxxxxwI.iot-as-mqtt.cn-shanghai.aliyuncs.com"

注意將代碼中的mqtt_url進行替換為:

wss:h6xxxxxwI.iot-as-mqtt.cn-shanghai.aliyuncs.com

這不會影響連接。

在這里插入圖片描述

完成以上操作,編譯后,觀察控制臺輸出正常,就可以觀察阿里云設備在線就說明成功登錄,建立連接了。

以上就是小程序連接阿里云的全部過程了,看了下網上一些其他的博客,有點亂,還要用上加密方法,實際上是不需要的,可以直接使用阿里云中的連接參數就可以了,當然這可能是不安全的,其他考慮就需要各位自己考慮了,有啥問題歡迎評論區留言。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94050.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94050.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94050.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2-3〔O?S?C?P? ? 研記〕? 漏洞掃描?AppScan(WEB掃描)

鄭重聲明: 本文所有安全知識與技術,僅用于探討、研究及學習,嚴禁用于違反國家法律法規的非法活動。對于因不當使用相關內容造成的任何損失或法律責任,本人不承擔任何責任。 如需轉載,請注明出處且不得用于商業盈利。 …

LeetCode 刷題【47. 全排列 II】

47. 全排列 II 自己做 解1&#xff1a;檢查重復 class Solution { public:void circle(vector<int> nums, vector<vector<int>> &res,int start){int len nums.size();if(start len - 1){ //到頭了//檢查重復bool is_exist fa…

Https之(一)TLS介紹及握手過程詳解

文章目錄簡介 TLSTLS第一次握手1.Client HelloTLS第二次握手2.Server Hello3.Certificate4.Server Hello DoneTLS第三次握手5.Client Key Exchange6.Change Cipher Spec7.Encrypted Handshake MessageTLS第四次握手8.New Session Ticket9.Change Cipher Spec10.Encrypted Hands…

【WEB 】從零實現一個交互輪播圖(附源碼)

文章目錄 一、輪播圖整體功能規劃二、HTML結構深度解析三、CSS樣式實現細節1. 定位系統詳解2. 顯示/隱藏機制3. 按鈕交互效果實現4. 純CSS箭頭實現5. 指示器&#xff1a;當前位置可視化 四、JavaScript邏輯深入解析1. 核心變量與DOM獲取2. 圖片切換函數&#xff08;核心邏輯&am…

機器學習--PCA降維

一核心部分 1解決的問題&#xff1a;應對高維數據帶來的計算量大、冗余信息多、易出現過擬合等問題&#xff0c;在減少數據維度的同時盡可能保留原始數據的關鍵信息。2核心思想&#xff1a…

leetcode 1277. 統計全為 1 的正方形子矩陣 中等

給你一個 m * n 的矩陣&#xff0c;矩陣中的元素不是 0 就是 1&#xff0c;請你統計并返回其中完全由 1 組成的 正方形 子矩陣的個數。示例 1&#xff1a;輸入&#xff1a;matrix [[0,1,1,1],[1,1,1,1],[0,1,1,1] ] 輸出&#xff1a;15 解釋&#xff1a; 邊長為 1 的正方形有…

知識蒸餾 - 各類概率分布

知識蒸餾 - 各類概率分布 flyfish一、離散概率分布 離散分布描述的是取值為離散值&#xff08;如0,1,2,…&#xff09;的隨機變量的概率規律&#xff0c;通常用概率質量函數&#xff08;PMF&#xff09; 表示某一取值的概率。 1. 伯努利分布&#xff08;Bernoulli Distribution…

軟件測試-Selenium學習筆記

""" 目標&#xff1a; driver.find_element() 需求&#xff1a; 1. 使用driver.find_element()方法 2. 輸入用戶名&#xff1a;admin 3. 輸入密碼&#xff1a;123456 """ # 導包 from selenium import webdriver from time import …

知微傳感3D相機上位機DkamViewer使用:給相機升級固件

寫在前面 本人從事機器視覺細分的3D相機行業。編寫此系列文章主要目的有&#xff1a; 1、便利他人應用相機&#xff0c;本系列文章包含公司所出售相機的SDK的使用例程及詳細注釋&#xff1b;2、促進行業發展及交流。 知微傳感Dkam系列3D相機可以應用于定位分揀、焊接焊縫提取、…

CMake進階: CMake Modules---簡化CMake配置的利器

目錄 1.簡介 2.為什么需要 CMake Modules&#xff1f; 3.內置模塊&#xff1a;開箱即用的工具 3.1.依賴查找模塊&#xff08;FindXXX.cmake&#xff09; 3.2.功能檢測模塊&#xff08;CheckXXX.cmake&#xff09; 3.3.通用工具模塊&#xff08;如 FetchContent.cmake、CT…

【Docker】Ubuntu上安裝Docker(網絡版)

【Docker】Ubuntu上安裝Docker注意&#xff1a;一、環境準備1. 系統要求2. 卸載舊版本二、安裝步驟1.配置倉庫源2.安裝 Docker引擎3.驗證安裝情況三、解決報錯1、檢查網絡連接2、檢查Docker服務狀態3、換源4.重載生效、重啟服務、查看是否配置成功5.驗證解決情況四、權限與配置…

Socket 編程 TCP

TCP 網絡程序 和剛才 UDP 類似. 實現一個簡單的英譯漢的功能。TCP是面向字節流的可靠傳輸&#xff0c;如同前文的管道流&#xff0c;只要是流&#xff0c;它的操作就是文件的寫出與讀入。TCP socket API 詳解下面介紹程序中用到的 socket API,這些函數都在 sys/socket.h 中。so…

使用AWS S3 + Lambda + MediaConvert 實現上傳視頻文件并自動轉碼

前言 最近團隊在做短視頻平臺的技術調研&#xff0c;其中有一個環節便是音視頻開發&#xff0c;即對用戶上傳的視頻進行自適應轉碼。自適應的原理其實就是預先將視頻轉換為幾個常用的分辨率&#xff0c;app端根據用戶手機分辨率拉取相應分辨率的視頻。 目前嘗試了兩種方案&…

QT之QWaitCondition降低cpu占用率,從忙等待到高效同步

在多線程編程中&#xff0c;線程間的同步是一個核心問題。在處理線程等待時&#xff0c;經常會寫出高CPU占用率的代碼&#xff0c;其中最典型的就是使用忙等待&#xff08;busy waiting&#xff09;。本文將詳細介紹如何使用Qt框架中的QWaitCondition類來優雅地解決這一問題&am…

pcl求平面點云的邊界凸包點

基本流程1&#xff0c;讀入點云&#xff0c;并去除無效點2&#xff0c;擬合平面3&#xff0c;去除離平面距離較遠的點4&#xff0c;對點云進行平面投影5&#xff0c;進行convex_hull運算初學者&#xff0c;暫時不知道能用來干嘛。練手還是非常不錯的&#xff01;#define _CRT_S…

Windows系統上使用GIT

首先破除一下畏懼心理&#xff1a;在Windows上使用git和在linux系統中的使用方法是一樣的&#xff0c;只是安裝方式沒那么便捷&#xff0c;畢竟linux中安裝git只需要一行命令 GIT下載地址 如果你的電腦的CPU是64位的&#xff0c;就點擊&#xff1a; Git-2.50.1-64-bit.exe 如果…

《設計模式之禪》筆記摘錄 - 17.模板方法模式

模板方法模式的定義模板方法模式(Template Method Pattern)是如此簡單&#xff0c;以致讓你感覺你已經能夠掌握其精髓了。其定義如下&#xff1a;Define the skeleton of an algorithm in an operation, deferring some steps to subclasses.Template Method lets subclasses r…

SpreadJS 協同服務器 MongoDB 數據庫適配支持

為了支持 SpreadJS 協同編輯場景&#xff0c;協同服務器需要持久化存儲文檔、操作、快照及里程碑數據。本文介紹了 MongoDB 數據庫適配器的實現方法&#xff0c;包括集合初始化、適配器接口實現以及里程碑存儲支持。 一、MongoDB 集合初始化 協同編輯服務需要以下集合&#x…

Ubuntu 主機名:精通配置與管理

主機名&#xff08;hostname&#xff09;是Linux系統中用于標識網絡上特定設備的名稱&#xff0c;它在網絡通信、服務配置&#xff08;如 Kubernetes 集群、數據庫&#xff09;以及日志記錄中扮演著至關重要的角色。對于初學者來說&#xff0c;配置主機名似乎很簡單&#xff0c…

C/C++ 協程:Stackful 手動控制的工程必然性

&#x1f680; C/C 協程&#xff1a;Stackful 手動控制的工程必然性 引用&#xff1a; C/C 如何正確的切換協同程序&#xff1f;&#xff08;基于協程的并行架構&#xff09; #mermaid-svg-SXgplRf3WRYc8A7l {font-family:"trebuchet ms",verdana,arial,sans-serif;…