koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

NeoPixel でプラモデルをライトアップする~遠隔操作編~

ちょっと前に NeoPixel でプラモデルをライトアップする~Lチカ編~ - koudenpaのブログ として、NeoPixelをESP8266から制御した。

目的はプラモデルをいい感じにライトアップすることなので、どういう光らせ方にすればいい感じになるのかの調整をしたい。

でも、光らせ方を変えるのにイチイチコードを再コンパイル、転送なんてやってられない。

かといって入力機器をマイコンにつなぐのはクッソ面倒くさい。

なので、ESP8266自身をアクセスポイントかつWebサーバにして設定を変えられるようにしたいと思い、実際した

が、非常にタイムリーにそのうち試したいと思っていた ESP8266 と Azure IoT Hub を繋ぐライブラリ が公開されてしまった。

となれば試してみるしかないじゃない? というわけで、試した結果が以下の動画です。

www.youtube.com

このライブラリを使って ESP8266 を IoT Hub に繋ぐチュートリアル記事はこちら。

qiita.com

LEDの色を遠隔操作するためにやったこと

バイ

自分がAPになって HTTP Post されたメッセージをLEDに反映していたものを、 ライブラリを使って IoT Hub からのC2DメッセージをLEDに反映するようにした。

github.com

クラウド

Azure IoT Hub は共有秘密鍵を使って認証したうえでメッセージをデバイスに送るので、 フロントエンドをHTML+JavaScriptで済ますのはなかなかハードルが高い。

なので、ASP.NET MVC5 でちょこっとアプリケーションを作って Microsoft Azure App Service にデプロイした。

github.com

Core にしようかとも思ったのだけれど、結構変なところにはまったりするのでやめておいた。

かなり恥ずかしい作りなのでそのうち直していきたい。 (これは何もしないパターン)

おおむね以下のようなことを行った。

IoT Hub はガスガス機能追加がされているので全然追いつけていない。 そのうちこの辺も試しておきたい。 (これは何もしないパターン)

AWSに負けていたデバイスのメタ情報をいい感じに管理できる機能、、、だと思う。 それがなかった時代の構成済みシステムである IoT Suite なんかはその辺をDocument DB に入れていたり自前管理をしているのだけれど、マネージドサービスなのだから密結合する関連情報は同じサービス内で扱えてくれた方がありがたい。

azure.microsoft.com

とはいえ IoT Hub を使うのはかなり遠回り

ぶっちゃけ、こんなこと(MQTTでメッセージ送ってLチカ)くらい先人がいくらでもやっている。 特に、目的を簡単に達成するなら Milkcocoa などのMQTTブローカーのラッパーを使ってHTMLとJavaScriptで済ますのが簡単だと思う。

このデモはそんな感じの構成だった。

IoT Hub の利点は、デバイス毎にIDを発行してメッセージの送受信や管理を行えるところにある。 要はPaaSとして完全にエンタープライズ指向なのだ。 その分機能が重たいため、単純にメッセージを送受信するだけには重めな部分もある。

とはいえ、Freeなら無料で8000メッセージ(0.5KB)/日を処理できるので、 試してみて損はないサービスだとは思う。

8000メッセージは結構きつい制限だけれど、課金プランは5000円~なので、 趣味で遊ぶにはちょっとお高め(僕にとっては)。

明日はどっちだ

次こそはいい感じに光らせる調整をしていきたい。