本文提供Node.js語言的示例代碼,介紹設備通過MQTT-WebSocket通道接入物聯網平臺。
前提條件
已在物聯網平臺控制臺對應實例下,創建產品和設備(例如device2),并獲取設備證書信息(ProductKey、DeviceName和DeviceSecret)。具體操作,請參見:
背景信息
使用WebSocket方式接入設備的詳細說明,請參見MQTT-WebSocket連接通信。Node.js環境下設備端Link SDK的配置與使用,請參見環境要求與配置和認證與連接。
本示例使用物聯網平臺提供的設備端Link SDK,模擬設備接入和上下行通信過程。
說明 設備端Link SDK已配置TLS加密,您無需自行配置。
操作步驟
- 在Windows系統或Linux系統下載并安裝Node.js。本文以Windows 10(64位)系統為例,下載安裝包node-v14.15.1-x64.msi。
- 安裝成功后,打開CMD窗口,通過以下命令查看node版本。
node --version
顯示如下版本號,表示安裝成功。v14.15.1
- 在本地計算機創建一個JavaScript文件(例如iot_device.js),用來存放Node.js示例代碼。Node.js示例代碼如下:
const iot = require('alibabacloud-iot-device-sdk'); // 設備證書信息。 const productKey = 'a1W***'; const deviceName = 'device2'; const deviceSecret = 'ff01e59d1a***'; // 新版公共實例和企業版實例,必須填寫實例ID,舊版公實例無需填寫。 const instanceId = ''; // 當前產品和設備所屬地域的ID。 const region = 'cn-shanghai'; const brokerUrl = instanceId ? `wss://${instanceId}.mqtt.iothub.aliyuncs.com:443` : `wss://${productKey}.iot-as-mqtt.${region}.aliyuncs.com:443`; const device = iot.device({ productKey: `${productKey}`, deviceName: `${deviceName}`, deviceSecret: `${deviceSecret}`, brokerUrl, tls: true, }); // 監聽connect事件:建立MQTT連接,訂閱自定義Topic,通過自定義Topic向物聯網平臺發送消息。 device.on('connect', () => { device.subscribe(`/${productKey}/${deviceName}/user/get`); console.log('connect successfully!'); device.publish(`/${productKey}/${deviceName}/user/update`, 'hello world!'); }); // 監聽message事件。 device.on('message', (topic, payload) => { console.log(topic, payload.toString()); }); // 監聽error事件。 device.on('error', (error) => { console.error(error); }); // 如果您希望主動斷開與物聯網平臺的連接,可以刪除下一行注釋符號,調用end函數斷開與物聯網平臺的連接。 //device.end();
您需參照下表,替換對應參數的值為實際場景中設備的信息。
參數 示例 說明 productKey a1W*** 您添加設備后,保存的設備證書信息,請參見獲取設備證書。 您也可在控制臺中設備device2的設備詳情頁面查看。
deviceName device2 deviceSecret ff01e59d1a*** instanceId '' 實例ID。您可在物聯網平臺控制臺的實例概覽頁面,查看當前實例的ID。 - 若有ID值,必須傳入該ID值。
- 若無實例概覽頁面或ID值,傳入空值,即
iotInstanceId = ''
。
實例的詳細說明,請參見實例概述。
region cn-shanghai 您物聯網平臺設備所在地域的代碼。地域代碼表達方法,請參見地域列表。 - 打開CMD窗口,使用cd命令找到iot_device.js文件所在路徑,在該路徑下使用npm命令下載阿里云IoT的Link SDK庫。下載后的庫文件如下圖所示。
npm install alibabacloud-iot-device-sdk --save
- 在CMD窗口輸入如下命令,運行iot_device.js代碼,啟動設備。
node iot_device.js
返回如下信息,表示設備接入成功,并成功發布消息。
查看運行日志和測試下行通信
- 登錄物聯網平臺控制臺。
- 在控制臺左上方,選擇物聯網平臺設備所在地域,然后在實例概覽頁面,單擊目標實例。說明 若無實例概覽頁面,會直接進入物聯網平臺功能頁面。
- 在左側導航欄,選擇 。在設備列表頁簽,可查看設備device2的狀態為在線。
- 單擊設備device2對應操作欄的查看,在設備詳情頁面,單擊日志服務,然后單擊前往查看。在云端運行日志頁簽,查看日志消息。
- 在日志列表,找到設備到云消息,單擊查看,查看設備上報到物聯網平臺的信息。
- 測試下行通信:從物聯網平臺向設備發送消息。
- 返回 頁面,在設備列表頁簽,單擊設備device2操作欄的查看。
- 在設備詳情頁面,單擊Topic列表頁簽,找到已訂閱的Topic:
/a1W***/device2/user/get
,單擊發布消息。 - 輸入消息內容,單擊確認。
- 返回設備運行窗口,查看設備能接收消息,表示通信正常。
您也可返回云端運行日志頁簽,查看詳細的通信日志。
文檔內容是否對您有幫助?