このトピックでは、WebSocket接続でMQTT (Message Queuing Telemetry Transport) プロトコルを使用してデバイスをIoT Platformに接続する方法について説明します。 このトピックでは、Node.jsに対応するサンプルコードも提供します。
前提条件
プロダクトとデバイスは、IoT Platformコンソールで作成されます。 デバイス証明書が取得されます。 証明書情報には、ProductKey、DeviceName、およびDeviceSecretが含まれます。 この例では、device2という名前のデバイスが作成されます。 詳細については、以下のトピックをご参照ください。
- プロダクトの作成
- デバイスの作成Create a device
背景情報
WebSocketプロトコルを使用してデバイスをIoTプラットフォームに接続する方法については、「MQTT over WebSocket接続の確立」をご参照ください。このトピックでは、IoT Platformが提供するデバイスLink SDKを使用してデバイスを接続し、アップストリームおよびダウンストリームメッセージングを実行する方法について説明します。
説明 デバイスリンクSDKは、Transport Layer Security (TLS) 暗号化機能と統合されています。 手動設定は必要ありません。
手順
- iot_device.jsなどのJavaScriptファイルをコンピューターに作成し、Node.jsサンプルコードを保存します。 次のNode.jsサンプルコードが使用されます:
const iot = require('alibabacloud-iot-device-sdk'); // デバイス証明書情報を指定します。 const productKey = 'a1W *** '; const deviceName = 'device2'; const deviceSecret = 'ff01e59d1a *** '; // 新しいバージョンのパブリックインスタンスまたはEnterprise EditionインスタンスのインスタンスIDを指定します。 旧バージョンのパブリックインスタンスを使用する場合、インスタンスIDを指定する必要はありません。 const instanceId = ''; // プロダクトとデバイスが属するリージョンのIDを指定します。 const region = 'cn-shanghai'; const brokerUrl = instanceId ? 'wss://${instanceI d}.mqtt.iothub.aliyuncs.com:443' : 'wss://${productKey}.iot-as-mqtt.${regio n}.aliyuncs.com:443 '; const device = iot.de vice({ productKey: '${productKey}' 、 deviceName: '${deviceName}' 、 deviceSecret: '${deviceSecret}' 、 brokerUrl、 tls: true、}); // 接続イベントをリッスンする: MQTT接続を介してデバイスをIoT Platformに接続し、デバイスがカスタムトピックをサブスクライブできるようにし、カスタムトピックを使用してIoT Platformにメッセージを送信します。 device.on('connect', () => { device.subscribe('/${productKey}/${deviceName}/user/get'); console.log('connect successfully!'); device.publish('/${productKey}/${deviceName}/user/update', 'hello world!'); }); // メッセージイベントを聞きます。 device.on('message', (topic, payload) => { console.log(topic, payload.toString()); }); // エラーイベントをリッスンします。 device.on('error', (エラー) => { console.error (エラー); }); // デバイスをIoT Platformから切断するには、次のコードの先頭にあるダブルスラッシュ (//) を削除し、end関数を呼び出します。 // device.end();デバイス情報などの実際のユースケースに基づいて、次の表に示すパラメーターを設定する必要があります。
パラメーター 例 説明 productKey a1W *** デバイスの追加後に保持されるデバイス証明書。 詳細については、「デバイスの作成」をご参照ください。 device2の証明書情報は、IoT Platformコンソールの [デバイスの詳細] ページで取得できます。
deviceName device2 deviceSecret ff01e59d1a *** instanceId '' インスタンスの ID です。 インスタンスのIDは、IoT Platformコンソールの [概要] ページで確認できます。 - インスタンスIDが表示されている場合は、このパラメーターを設定する必要があります。
- [概要] ページまたはインスタンスIDがIoT Platformコンソールに表示されない場合、このパラメーターに空の文字列 (
iotInstanceId = "") を指定します。
IoT Platformインスタンスの詳細については、「概要」をご参照ください。
region cn-shanghai IoT Platformインスタンスが存在するリージョンのID。 リージョンIDの詳細については、「リージョン」をご参照ください。 - コマンドプロンプトを開き、cdコマンドを実行して、iot_device.jsファイルが格納されているディレクトリに移動します。 このディレクトリで、npmコマンドを実行してデバイスLink SDKライブラリをダウンロードします。 ダウンロードしたライブラリを次の図に示します。
npm install alibabacloud-iot-device-sdk -- save
- コマンドプロンプトで、次のコマンドを入力してiot_device.jsファイルを実行し、デバイスを起動します。
ノードiot_device.js次の応答は、デバイスがIoT Platformに接続され、メッセージが公開されていることを示します。
ログの表示とダウンストリームメッセージングのテスト
- IoT Platformコンソールにログインします。
- コンソールの左上隅で、IoT Platformが存在するリージョンを選択します。 [概要] ページで、[管理するインスタンス] をクリックします。 説明 [概要] ページが表示されない場合は、[製品] ページにリダイレクトされます。
- 左側のナビゲーションウィンドウで、 を選択します。 device2は [デバイスリスト] タブに表示され、デバイスは [オンライン] 状態です。

- device2の [操作] 列で、[表示] をクリックします。 [デバイスの詳細] ページで、[デバイスログ] タブをクリックし、[表示] をクリックします。 デバイスログページの [クラウド実行ログ] タブでデバイスログを表示します。

- ログリストで、ワークロードの種類が [デバイスからクラウドへのメッセージ] であるメッセージを見つけ、[表示] をクリックしてメッセージの内容を表示します。

- IoT Platformからデバイスにメッセージを送信して、ダウンストリームメッセージングをテストします。
- を選択します。 [デバイス] ページの [デバイスリスト] タブで、[デバイス2] を見つけ、[操作] 列の [表示] をクリックします。
- [デバイスの詳細] ページで、[トピックリスト] タブをクリックし、[購読したトピック] セクションで
/a1W ***/device2/user/getトピックを見つけ、[公開] をクリックします。 - メッセージを入力し、[OK] をクリックします。

- コマンドプロンプトに戻り、デバイスがメッセージを受信したかどうかを確認します。 ダウンストリームメッセージングが適切に機能する場合、メッセージが受信されます。

[クラウド実行ログ] タブに戻って、メッセージングログを表示することもできます。
