クロスプラットフォームIoT:デバイス操作

こんにちは、Habr! IoT Hub Explorerは、Windows、Mac、またはLinuxで実行できるIoT Hubを使用してデバイスを管理するためのクロスプラットフォームのnode.jsベースのツールです。 今日は、IoT Hub Azureの診断と改善の一環としてそれについてお話しします。 詳細は猫の下を見てください!







一連の記事「クロスプラットフォームIoT」



1. クロスプラットフォームIoT:Azure CLIとAzure IoT Hubの使用

2. クロスプラットフォームIoT:デバイスの操作

3. クロスプラットフォームIoT:トラブルシューティング

3.読み込み中...


IoT Hub Explorerを使用すると、デバイスの作成、既存のデバイスへのメッセージの送信など、IoT Hubでの操作を簡単に実行できます。AzureInternet of Thingsの開発をテストしたり、機能を実証する場合でも、この機能は特に役立ちます。 理論的には、作業環境の診断に使用できます。 ただし、これらのシナリオを実行するには、適切なテレメトリデータと運用制御チャネルが必要です。 このツールのお気に入りの機能の1つは、IoT Hubデバイスのメッセージを監視し、センターのデバイスの操作に関するイベントデータと統計を受信することです。 このツールを使用して、デバイスを作成し、IoT Hubメッセージを表示します。 IoT Hub Explorerは、 こちらの GitHub 入手できます



前の資料で説明したAzure IoT CLIもデバイス管理をサポートし、その機能はIoT Hub Explorerの機能と部分的に一致することに注意してください。 これが発生した場合、Azure CLIはすべてのIoT Hub操作を操作するためのメインツールと見なされます。



IoT Hubブラウザーを使用して、デバイスを作成および監視しましょう。 これを行う前に、インストールする必要があります。 これはノードパッケージであるため、npmを使用してインストールできます。



npm install -g iothub-explorer
      
      





IoT Hub Explorerは別のプログラムであるため、最初にIoT Hubの接続文字列を使用してログインする必要があります。 bashターミナルを開き、次を入力します。



 iothub-explorer login "HostName=yourhub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=yourkey"
      
      





接続文字列が手元にない場合は、前のセクションで説明したコマンドaz iot hub show-connection-string -g youresourcegroup



して、IoT Hubの接続文字列を取得できます。 承認チームは、IoTセンターへのアクセス権の固定ポリシーを使用して一時的なセッションを開く必要があります。 デフォルトでは、このセッションの有効期間は1時間です。



 Session started, expires on Wed Mar 15 2017 19:59:05 GMT-0500 (CDT) Session file: /Users/niksac/Library/Application Support/iothub-explorer/config
      
      





上記のコマンドは、IoTセンターの完全な制御を提供するiothubownerポリシーの接続文字列を使用することに注意してください。



新しいデバイスを作成する



IoT Hub Explorerを使用して新しいデバイスを作成するには、次のコマンドを入力します。



 iothub-explorer create -a
      
      





-a文字は、作成時にIdおよびデバイスクレデンシャルを自動的に生成するために使用されます。 デバイスIDを自分で指定するか、デバイスJSONファイルを追加して、作成プロセスを個別にカスタマイズすることもできます。 対称キーやX.509証明書など、資格情報を指定する方法は他にもあります。 IoT Hubのセキュリティに関する別の記事を公開し、これらの方法を検討します。 現在、IoT Hubによって生成された標準の資格情報を使用しています。



すべてがうまくいった場合、次のような答えが表示されます。



 deviceId: youdeviceId generationId: 63624558311459675 connectionState: Disconnected status: enabled statusReason: null connectionStateUpdatedTime: 0001-01-01T00:00:00 statusUpdatedTime: 0001-01-01T00:00:00 lastActivityTime: 0001-01-01T00:00:00 cloudToDeviceMessageCount: 0 authentication: symmetricKey: primaryKey: symmetrickey1= secondaryKey: symmetrickey2= x509Thumprint: primaryThumbprint: null secondaryThumbprint: null connectionString: HostName=youriothub.azure-devices.net;DeviceId=youdeviceId;SharedAccessKey=symmetrickey=
      
      





ここにはいくつかの重要なことがありますが、そのうちの1つは明らかにconnectionString



です。 一意のデバイス接続文字列を提供し、それと通信できるようにします。 デバイス接続文字列の権限は、IoTセンターでデバイスに定義されたポリシーに基づいており、権限はDeviceConnect



機能によってのみ制限されます。 ポリシーベースのアクセスは、エンドポイントを保護し、使用範囲を特定のデバイスに制限します。 IoT Hubデバイスのセキュリティの詳細については、こちらをご覧ください。 また、デバイスがアクティブ化され、ステータスが無効になっていることに注意してください。 これは、デバイスがIoTセンターに正常に登録されたが、アクティブな接続がないことを意味します。



メッセージの送受信



デバイスを受信する要求を送信して、接続を開始しましょう。 IoT Hubブラウザーでメッセージを送受信するには、いくつかの方法があります。 1つの効果的なオプションは、 simulate-device



コマンドです。 simulate-device



コマンドを使用すると、ツールをデバイスコマンドシミュレーターおよびデバイス受信シミュレーターとして機能させることができます。 これは、デバイスに代わってユーザー定義のテレメトリメッセージまたはコマンドを送信するために使用できます。 これらの機能の利便性は、コードの量を削減するため、デバイスで開発統合をテストするときに明らかになります。 メッセージを作成すると同時に、送受信のフローを追跡できます。 このコマンドは、シミュレーションの構成を可能にするsend-interval, send-count



receive-count



などの機能も提供します。 これは負荷や侵入をテストするためのツールではなく、より詳細なテストに先行する初期テストを実行するために使用できることを考慮する価値があります。 (パート1から)作成したデバイスに一連のメッセージを送信し、コマンドでメッセージを受け入れましょう。



メッセージ送信



次のコマンドは、特定のIDを持つデバイスに2分ごとに5つのメッセージを送信します。



 niksac$ iothub-explorer simulate-device --send "Hello from IoT Hub Explorer" --device-connection-string "HostName=youriothubname.azure-devices.net;DeviceId=D1234;SharedAccessKey==" --send-count 5 --send-interval 2000
      
      





最終的なメッセージは次のようになります。



 Message #0 sent successfully Message #1 sent successfully Message #2 sent successfully Message #3 sent successfully Message #4 sent successfully Device simulation finished.
      
      





メッセージ監視



IoT Hub Explorerのもう1つの便利な機能は、デバイスまたはIoT Hubの一般的なイベントを監視する機能です。 これは、IoT Hubのインスタンスを診断する場合に非常に便利です。 たとえば、IoT Hubでメッセージが正しく配信されていることを確認します。 monitor-eventsコマンドを使用して、端末のすべてのデバイス関連イベントを記録できます。 monitor-opsコマンドを使用して、IoTセンターでの操作のエンドポイントを追跡することもできます。



イベントを監視するには、次を入力します。



 iothub-explorer monitor-events --login "HostName=youriothub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=="
      
      





その結果、IoTセンター全体のアクティビティをキャプチャするリスナーができます。 前述のように、デバイス接続文字列を指定して特定のデバイスを監視できます。



これで、IoT Hubのデバイスにメッセージまたはコマンドを送信すると、最終結果がターミナルに表示されます。 たとえば、ターミナルウィンドウでモニターイベントリスナーを開き、 simulate-device --send



simulate-device --send



と、次の結果がターミナルに表示されます。



 Monitoring events from all devices... ==== From: D1234 ==== Hello from IoT Hub Explorer ==================== ==== From: D1234 ==== Hello from IoT Hub Explorer ==================== ==== From: D1234 ==== Hello from IoT Hub Explorer ==================== ==== From: D1234 ==== Hello from IoT Hub Explorer ==================== ==== From: D1234 ==== Hello from IoT Hub Explorer ====================
      
      





IoT Hub Explorerでは、デバイスのインポート/エクスポート、SASでのアクセス権の再作成、デバイス管理コマンドなど、他の多くのコマンドを使用できます。 教育目的でIoT Hub Explorerのさまざまなオプションとコマンドを使用する必要があります。 これにより、標準操作のコードを書く必要がなくなります。



All Articles