最近盛り上がっているIoT(Internet Of Things)。いわゆるモノのインターネットと呼ばれるものですが、mBaaSとの相性はとても良いようです。理由は別途記事にするとして、まずはどういったことができるのかを紹介したいと思います。
Arduinoと組み合わせてみる
Arduinoはスタンドアロン型のマイコン基盤で、Processingと言うプログラミング言語で制御します。シールドと呼ばれる応用基盤が多数発売されていて、それらを組み合わせることでIoTデバイスとしての真価を発揮します。
たとえば今回はWiFiシールドを使って、Arduinoからインターネットへアクセスできるようにしました。
void loop() { val = digitalRead(BUTTON); if (val == HIGH && connecting == 0) { get(); digitalWrite(LED, HIGH); }else{ digitalWrite(LED, LOW); } delay(100); }
これは起動後の待機時の処理抜粋ですが、digitalRead(BUTTON)としてボタンの押された状態を取得して、HIGI(押されている)時にgetという処理を実行しています。このgetという処理内で、インターネットアクセスします。
どこにアクセスするかというと、NCMB Rubyライブラリにプッシュ通知作成機能を追加しました という記事で紹介した、Webアクセスするだけでプッシュ通知するサーバになります。
つまり、
- Arduinoのボタンを押す
- ArduinoからWebアクセス
- アクセスされたサーバからニフティクラウド mobile backendへプッシュ通知登録
- スマートフォンでプッシュ通知受信
といった流れになります。Arduinoから直接ニフティクラウド mobile backendにポストできると格好良いですが、署名周りなどが大変なのでサーバを経由してしまいます。
実際に試したデモがこちらになります。
https://www.youtube.com/watch?v=XkjrnC_bqIo
ボタンを押すと、Webアクセスが開始して、その後iPhoneにプッシュ通知が届いているのが分かるかと思います。
他の応用
今回はボタンを起点としていますが、Felicaリーダーと組み合わせることでSuica/Pasmoでタッチするとプッシュ通知が飛ぶ仕組みを作ったり、温度や湿度センサーと組み合わせてプッシュ通知を受け取ることもできます。もちろん、その際の値をデータストアに保存することで入退室記録にしたり、温度/湿度変化を計測するといった使い方もできるでしょう。
IoTデバイスは一般的に小さなデバイスが多いので、単体ですべてのデータを保存しておいたり、常にネットワーク経由での外部アクセスを待つというのは不向きです。計測されるデータを後で分析に回せるようにするためには一旦どこかに保存しておくのが良いと思います。ニフティクラウド mobile backendは無料枠のBasicプランでも5GBまで保存できますので、そういったデータ蓄積用途にぴったりではないでしょうか。