本文提供Node.js語言的範例程式碼,介紹裝置通過MQTT-WebSocket通道接入物聯網平台。
前提條件
已在物聯網平台控制台對應執行個體下,建立產品和裝置(例如device2),並擷取裝置認證資訊(ProductKey、DeviceName和DeviceSecret)。具體操作,請參見:
背景資訊
使用WebSocket方式接入裝置的詳細說明,請參見MQTT-WebSocket串連通訊。本樣本使用物聯網平台提供的裝置端Link SDK,類比裝置接入和上下行通訊過程。
說明 裝置端Link SDK已配置TLS加密,您無需自行配置。
操作步驟
- 在本機電腦建立一個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對應操作欄的查看,在裝置詳情頁面,單擊Log Service,然後單擊前往查看。在雲端作業記錄頁簽,查看日誌訊息。
- 在日誌列表,找到裝置到雲訊息,單擊查看,查看裝置上報到物聯網平台的資訊。
- 測試下行通訊:從物聯網平台向裝置發送訊息。
- 返回 頁面,在裝置列表頁簽,單擊裝置device2操作欄的查看。
- 在裝置詳情頁面,單擊Topic列表頁簽,找到已訂閱的Topic:
/a1W***/device2/user/get
,單擊發布訊息。 - 輸入訊息內容,單擊確認。
- 返回裝置運行視窗,查看裝置能接收訊息,表示通訊正常。
您也可返回雲端作業記錄頁簽,查看詳細的通訊日誌。