ESP-WROOM-02でデバイスハブに繋いでみた

  • このエントリーをはてなブックマークに追加

こんにちは!IoTデザインセンター所属の呉屋と申します。

IoTデザインセンターでデバイスを触って得た知見や作成物を紹介していきます。

今回は、IoTプラットフォームのデバイスハブと
Wi-Fiモジュールとして有名なESP-WROOM-02を繋いで見たいと思います。

本記事の要点

デバイスハブが提供しているRESTAPIを使用し
イベント送信とコマンド受信を実装した
使用したデバイスはESP-WROOM-02

デバイスハブとは

デバイスの認証、管理を行なうIoTプラットフォームとなっています。
デバイスハブが公式でサポートしているデバイスとしては

  • Texas Instruments CC3200
  • Raspberry Pi 2
  • Intel Edison
  • Armadillo-IoT

となっており、今回使用するESP-WROOM-02はサポートされていません。
今回はデバイスハブが提供しているRESTAPIを使って接続を行なっていきます。
デバイスハブのRESTAPIのリファレンスはまだ公開されていませんが、
デバイスハブのRESTAPIはMODEのRESTAPIと互換性があるので、MODEのRESTAPIリファレンスを参考にしながら進めていきます。

やってみる

ESP-WROOM-02とデバイスハブを連携させるには

  • デバイス登録
  • デバイスとホームの連携
  • イベント送信
  • コマンド受信

が必要なためそれぞれ説明していきます。

デバイス登録

デバイスハブにアクセスすると次のような画面になります。
画像はプロジェクトが存在していますが、通常は存在していません。

device-hub-top

まず初めにプロジェクトを作成します。
右上の「New」から、Name、Description、User Accountsを記入しSAVEをクリック
作成したプロジェクトをクリックし、ダッシュボード画面に移動。

device-hub-dashboard

左側のDevicesをクリックし、Device Class画面へ移動。

device-hub-device

Device Classを作成する必要があるので
右上の「New」から、ClassID、Descriptionを記入しSAVEをクリック
作成したDevice Classをクリックし、Device管理画面へ移動。

device-hub-device-top

Device ListのNewから、Tagを記入してADDをクリックするとデバイス登録完了です。

device-hub-device-top2

登録したデバイスのDevice IDやAPI Keyはイベント送信、コマンド受信のときに使用します。
また、次のホーム連携でデバイスシミュレータ画面が必要になるため、
Launch Simulatorをクリックし、デバイスシミュレータを起動します。

device-hub-device-simulator

デバイスとホームの連携

デバイスとホームの連携はAPIからでもできますが、今回はシミュレータから連携をします。
左側のAppsをクリックし、App List画面へ移動。

device-hub-app

Appを作成する必要があるので
右上のNewから、App ID、Descriptionを記入しSAVEをクリック。
作成したAppをクリックし、App管理画面へ移動

device-hub-app-top

Launch Simulatorをクリックすると、アプリシミュレータが起動します。

device-hub-app-aimulator-top

ユーザ登録をする必要があるので
Register New Userから、Name、Email Address、Passwordを記入しRegisterをクリックすると
次のような画面へ移動します。

device-hub-app-aimulator-verified

記入したメールアドレス宛にメールが届くので、そのメールにあるURLをアクセスした後
I’m verifiedをクリックすると、ユーザ登録が完了しアプリシミュレータのホーム画面へ移動します。

device-hub-app-aimulator-home-top

左側のDevicesをクリックし、デバイス連携画面に移動します。

device-hub-app-simulator-home-device

デバイスとホーム連携するにはデバイスをDLAIM MODEにした状態でClaim codeを登録するがあります。
デバイスシミュレータに戻り、デバイスをCLAIM MODEに変更し、Claim codeをコピーします。

アプリシミュレータのデバイス連携画面に戻り
右上のNewから、Claim codeを記入しADDをクリックするとデバイスとホーム連携は完了です。

イベントの送信

MODEのRESTAPIリファレンスを見ると

send_event

とあるので、APIエンドポイント/device/{deviceId}/eventにPUTメソッドを用いて送信すれば良いことがわかります。

apiKeyとdeviceIdはグローバルに定義されているものとします。
第二引数はjson形式の文字列を渡します。

それでは実際にデバイスハブへイベントを送信します。
今回はeventTypeは”test”, eventDataは”{\”score\”: 3}”
を送信しました。アプリシミュレータを確認すると下の画像のようになりました。

home_receive_event

正常にイベントが届いていることが確認できます。

コマンドの受信

こちらもMODEのRESTAPIリファレンスで探してみると

Websocketの項目の中に

receive_command

とあるので、APIエンドポイント/devices/{deviceId}/commandをWebsocketで接続すれば良いことが分かります。
しかし、ESP-WROOM-02は標準ライブラリにWebSocketが無いためこちらのライブラリを使用しました。

webSocketはグローバルに定義されているものとします。

次のようなコマンドを送り

home_send_command

実際にコマンドを受信できるか確かめました。以下ESP-WROOM-02のシリアル通信のログとなります

wroom_receive_command

正常に接続とコマンド受信ができていることが分かります。

まとめ

今回ESP-WROOM-02でデバイスハブと接続し、イベント送信やコマンド受信を行うことができました。
デバイスハブは使いやすいRESTAPIを提供しているため、SDKが無いデバイスでも今回のようにリファレンスを見ながらイベント送信とコマンド受信を実装することができました。(宣伝です)

全体のソースコード (使う場合はssid, pass, apikey, deviceIdを記入してください)

参考にしたページ

ESP-WROOM-02でデバイスハブに繋いでみた
  • このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です