本トピックの Node.js サンプルコードを使用して、MQTT-WebSocket チャネル経由でデバイスを IoT Platform に接続します。
前提条件
インスタンスの IoT Platform コンソール で、プロダクトと、[device2] などのデバイスを作成します。ProductKey、DeviceName、DeviceSecret を含むデバイス証明書を取得します。詳細については、以下をご参照ください。
背景情報
WebSocket ベースのデバイス接続の詳細については、「MQTT-WebSocket 接続」をご参照ください。
この例では、IoT Platform デバイス側 Link SDK を使用してデバイス接続とメッセージングをシミュレートします。
デバイス側 Link SDK では TLS 暗号化が有効になっています。追加の設定は不要です。
操作手順
-
IoT Platform コンソールにログインします。
-
[インスタンス概要] ページで、対応するデータタイプのインスタンスを見つけてクリックし、[インスタンス詳細] ページに移動します。
-
ローカルコンピューターに、Node.js サンプルコードを保存する JavaScript ファイル (例: iot_device.js) を作成します。
以下の Node.js サンプルコードを使用します。
const iot = require('alibabacloud-iot-device-sdk'); // デバイス証明書情報 const productKey = 'a1W***'; const deviceName = 'device2'; const deviceSecret = 'ff01e59d1a***'; // 新しいパブリックインスタンスおよびエンタープライズインスタンスの場合、インスタンス ID を指定する必要があります。古いパブリックインスタンスの場合、インスタンス 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 接続を確立し、カスタムトピックをサブスクライブし、カスタムトピックを介して IoT Platform にメッセージを送信します。 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); }); // IoT Platform から切断する場合は、次の行のコメントを解除して end() 関数を呼び出します。 //device.end();次の表の説明に従って、パラメータ値を実際のデバイス情報に置き換えてください。
パラメータ
例
説明
productKey
a1W***
デバイス作成時に保存したデバイス証明書情報。詳細については、「デバイス証明書の取得」をご参照ください。
この情報は、コンソールの [device2] デバイスの[デバイス詳細]ページでも確認できます。
deviceName
device2
deviceSecret
ff01e59d1a***
instanceId
''
IoT Platform コンソールの [インスタンスの概要] ページで確認できるインスタンス ID です。
-
ID が表示されている場合は、指定する必要があります。
-
[インスタンス概要] ページが存在しないか、 ID が利用できない場合は、このパラメーターを空のままにします。 たとえば、
iotInstanceId = ''です。
インスタンスの詳細については、「インスタンスの概要」をご参照ください。
region
cn-shanghai
IoT Platform デバイスが配置されているリージョンのリージョンコード。サポートされているリージョンコードについては、「リージョン一覧」をご参照ください。
-
-
コマンド プロンプト ウィンドウを開き、iot_device.js ファイルが保存されているディレクトリに移動します。次のコマンドを実行して、Alibaba Cloud IoT SDK ライブラリをインストールします。
npm install alibabacloud-iot-device-sdk --save
-
コマンド プロンプト ウィンドウで、次のコマンドを実行して iot_device.js ファイルを実行し、デバイスを起動します。
node iot_device.js出力には、デバイスが接続され、メッセージがパブリッシュされたことが示されます。

運用ログの表示と下り通信のテスト
-
IoT Platform コンソール にログインします。
-
コンソールの左上隅で、インスタンスが配置されているリージョンを選択します。次に、[インスタンス概要] ページで、対象のインスタンスをクリックします。
説明[インスタンス概要] ページが表示されない場合、代わりに IoT Platform 機能ページが表示されます。
-
左側のナビゲーションペインで、 を選択します。
[デバイスリスト] タブでは、[device2] デバイスのステータスは [オンライン] です。

-
[device2] デバイスの「操作」列で [表示] をクリックします。[デバイス詳細] ページで、[ログサービス] タブをクリックし、次に [ログの表示] をクリックします。
[IoT プラットフォームログ] タブで、ログメッセージを表示します。

-
ログリストで、[デバイスからクラウドへのメッセージ] を見つけ、[表示] をクリックして、デバイスが IoT Platform に送信した情報を確認できます。

-
IoT Platform からデバイスにメッセージを送信して、下り通信をテストします。
-
ページに戻ります。[デバイスリスト] タブで、[device2] の 操作 列にある [表示] をクリックします
-
[デバイス詳細] ページで [トピックリスト] タブをクリックし、サブスクライブしたトピック
/a1W***/device2/user/getを見つけて [メッセージを公開] をクリックします。 -
メッセージを入力し、[確認] をクリックします。
-
デバイスが実行されているコマンド プロンプト ウィンドウに戻ります。デバイスがメッセージを受信し、通信が成功したことがわかります。

また、[IoT Platform Logs] タブに戻って、詳細な通信ログを表示することもできます。

-