★この記事は「SORACOM Advent Calendar 2016」の22日分のエントリーになります
注意
- 機能/サービスの検証とスクリーンショットの取得は
2016/12/17
に行いました。 - それ以降に変更が加えられた場合は結果が異なる可能性がありますのでご注意下さい。
はじまり
ある日 こんなのありますよ!
とのメッセージと上記のURLが送られてきましたw
名指しとあらば可能なことは断らずに受けていくスタイルなので書くことにっ!
あれ、これなんか見たことある流れだw とは言え、転職した後はIoTというかSORACOMに触る機会もなかなかなく・・・
しかし、SORACOMの皆様には非常にお世話になっている&SORACOMのサービスは触っていて楽しいので何とかネタを探して行くしかない!
これまで
去年の今頃はちょうどSORACOMさんにお邪魔してトンカツ食べてた頃ですねw あれからもう1年なのかまだ1年なのか。
しかし、いまだ公開事例化ができるようなものがないっぽいのは非常に残念ですねぇ。前職の中の人は是非とも頑張っていただきたい。
他には SORACOM Conference “Connected.”
のセッションでプロトタイピング中のものを紹介してもらったりしました。
www.slideshare.net
プロトタイピングしてたものは↓な感でした。
あとは、前職の退職も決まった頃の最高に楽しかったハンズオンの会場係! いい思い出だ!
何を書くか
最近は全然SORACOMを触ってないのでネタが・・・
せっかくだから約1年前にやってたことで これどーしようかな?
と考えてたことが、この1年間のSORACOMのアップデートでどうなったのか?を書いてみようと思います。
デバイスとSIM
作っていたのは 位置情報
を定期的に送信して位置を確認するようなものでした。不特定多数が乗り降りするような動体に設置することを想定していましたので、デバイス丸ごとの持ち出しとSIMだけを持ち出される懸念がありました。
その当時に考えたのは、仕様として定期的にデータを送信するため1日に送信されるデータ量がおおよそ予測可能だったため データ通信量の監視
機能を利用して、通信料が増えたら通知して貰えば不正利用もわかるかなーと
ただ、これでも通知される範囲内で利用された場合は検知できない可能性も・・・デバイスとSIMをセットで管理できると楽なのになぁーと感じていました。
IMEI ロック
それから1年後の今はどうかというとデータ通信量の監視
に加えてアップデートで追加されたIMEI ロック
があります。
IMEI ロックを利用すると、デバイスとSIMを結びつけて特定のデバイスでしかそのSIMが利用できないようにロックすることが可能になります。これにより、SIMだけを持ち出された場合でも他のデバイスでの利用が不可能になります。
特別な作り込みも必要なくSORACOM のユーザコンソールから利用できるのも手軽で非常に良いですよねー
通信距離と電力
作っていたの 定期巡回
するような動体の位置把握でしたので、動体そのものから定期的に位置情報を発信して現在地を表示していました。
しかし、要件としては細かい現在位置というよりはある一定の範囲に入ったら情報を表示できれば良いという感じのものでした。
これを実現するとなると、ゲートウェイ製品を必要なポイントに立てて、ゲートウェイ単位でなんとかするとかかなぁ?ぷらっとホーム
さんの OpenBlocks
とかを使えば行けそうかなぁ? とか考えていました。
実際にWebを確認すると位置測位のソリューションを展開されているんですねーまぁーそうなりますよねー
ただコストやメンテナンスなんかの兼ね合いもあり、その当時だとこの選択ななかなか難しいなぁーという結論に・・・
LoRaWAN
それから1年後の今はどうかというと、SORACOMさんとM2Bコミュニケーションズがパートナーシップを結んだことにより、LoRaWAN と SORACOM プラットフォームとの連携が可能になっています。
LoRaWAN は通信できる範囲が広いので上手く活用できればゲートウェイの数が減らせるのでコストやメンテナンス周りでマッチする可能性もありますね。
現在はまだPoCキットの提供となっていますが今後が楽しみですね。
まとめ
- 1年前に比べてアップデートで進化しているSORACOM
- 使っていればそれだけで新しい解決方法が提示されている
- 当然ながら利用する側もこのアップデートになるべく追随して恩恵を受ける方がいい
- LoRaWAN のようなこれまでの発想と違った技術とも連携が取れる
- 大型の機能追加以外も多くサービスとして完成度が上がっている
- 最近SORACOM触れてないので久々に楽しかったです
- 今後の機能追加とアップデートも期待してワクワクしながら待っています!
なぜか・・・
twitter.comSORACOM #AdventCalendar 2016、14日、19日、22日にサーバーワークスのメンバーが参加させていただきます!!おたのしみに☆ #Qiitahttps://t.co/OPC0Lh96EF#swx#iot
— サーバーワークス (@serverworks) December 12, 2016
なぜか会社の公式Twitterがハードルを上げてきたので、他にも何かネタを考えないとかなぁーと。せっかくなので 位置情報取得
を使って何かしてみようかと思います。
前提
SORACOM Air
を利用するのは当然なので、使える機器を家で探したわけですが・・・↓ ぐらいしかなかった・・・ドコモさんの機器が家にないのがわかりましたw
使えるのは標準SIMだったので、素敵なアダプターで変換をして利用しました。このノベルティー実用性も高くて素敵ですよね。
あとは位置情報を収集するための簡単なプログラム書いて SORACOM Air
で送信するだけですね!
SORACOM Harvest
2016年11月30日に追加された新サービスで IoT デバイスからのデータ収集および可視化サービスです
と公式で説明されています
SORACOM Airを利用して送信するので安心かつ自前でデータ保持や可視化の環境を持たなくてもSORACOMがすべてやってくれるというフルマネージドのサービスですね。
簡単かつ気軽に利用できるのは本当に便利ですばらしいですね
で、今回はこれに位置情報を送ってみようと思います。 それなんか意味あるの?的な結果になりそうですが・・・
使ってみる
SORACOMのサービスは大変親切な Getting Started
が用意されているので、↓に沿って進めていきます
ドキュメントが丁寧に書かれているので特に迷うことなく使い始めることができますね。
位置情報
今回は手軽に位置情報を取得したいので、HTML5で利用できる Geolocation API
を使って取得を行います。
Geolocation API Specification 2nd Edition
https://www.w3.org/TR/geolocation-API/
継続的に位置情報を取得したいので navigator.geolocation.watchPosition
を利用ています。
実際の利用法はGoogle先生で調べれば色々出てきますが非常に簡単に利用できます。
1点注意が必要なのはブラウザ側の制限で位置情報を取得するには HTTPS
が必須となっています。
今回はローカルで検証を行うため file:///
から始まるものにはこの制限は関係ないようです。通常と同じように位置情報取得を許可してもらえれば取得が可能になります。
実際に試してみる
簡単なHTMLとJavaScriptで位置情報を取得できるようにして、実際にSORACOM Harvest
に向けて送ってみましたが・・・ローカルだと以下のようなエラーが
ローカルだからかなぁ?と思いS3とCloudFrontでHTTPSで公開して試してみると
SORACOM Harvest のエンドポイントが HTTP
なのでHTTPSとの混在を怒られて送れないらしいので、ブラウザを↓のように操作してHTTPでも読み込むようにします。
しかし、残念ながらまだエラーが出ます
最初と同じ CORS
のエラーですね・・・これはSORACOM Harvest のエンドポイントが対応してないってことなのか。残念。
結局
通常のWebであれば、AmazonAPIGatewayなどを手前にかぶせてCORSに対応してしまうこともできるのですが、SORACOM Harvestのエンドポイントにアクセスするには、SORACOM Air経由である必要があるわけなので・・・今回はこう言った手法は使えないことに。
ただ今回はローカルだけで検証するつもりだったので、JavaScriptから位置情報をPOTSする先をローカルに立てたサーバーし、そのサーバーからSORACOM Harvestのエンドポイントに再POSTすることにしました。
golangで簡単なプログラムを組んで上記のことを実現してますが、よく考えたらDockerでnginx動かしても簡単で良かったかもしれないですね。
で、実際に位置情報をSORACOM Harvestに入れたら↓になりましたーやはりあんまり意味なしな結果にw まーそりゃそうだ。
しかし、雑にJSONを送るだけで可視化して値も見ることが出来るのは手軽でいいですねーSORACOM Funnelとは違った便利さがあって素敵です。
まとめ
- SORACOM のプラットフォームを利用していると、プラットフォーム側のアップデートによりそれまで不可能だったことが可能になったり、複雑な仕組みが必要なくなったりする。
- AWSなどのクラウドプラットフォームと同様に、SORACOMのプラットフォームもマネージドサービスを積極的に利用して楽をしよう
SORACOM Harvest
は非常に手軽にデータの送信、蓄積、可視化を行える- あまり無いかもしれないが、ブラウザのJavaScriptからSORACOMのエンドポイントにデータを送信する場合には
CORS
に注意する - スマホ+ブラウザでSORACOMサービスを利用することは、今後ありそうなので解決方法があれば知りたいです。
- 今回使ったプログラム類はGitHub上に上がってます。簡単なので必要ないかもしれませんが試してみたい方は覗いてみてください。
#ソラコムサンタ
今年も #ソラコムサンタ
がやってきてくれるとのこと。
せっかくなので細々してるお願いをまとめて書いてみました。
- 手軽に使えるSIMフリーの機器があると嬉しいです。
- 今回も検証そのものよりも使える状態にするまでが時間がかかった・・・
- IoTでは遭遇する機会はなさそうですが
CORS
の回避ルートが欲しいですSORACOM Beam
経由ならもしかしたら!と思ったけどダメだった・・・- 多少手間がかかる方法でもなんとかなる道があると嬉しいです
- ユーザーコンソールの検索で
ワイルドカード
が使いたいです- prefix 付きで名前をつけても完全一致以外は検索できないっぽい?
- 検索文字列がなくなった後の再ロードがちょっと重い
- この辺はSIMの登録数とかPCのスペックとかに関係ありそうなので、一概には言えなさそう・・・
- ユーザーコンソールで地図を表示して欲しい。
- グローバル・カバレッジのユーザーコンソール画面ですでに表示されているっぽい?
各SIMの詳細画面では、基地局情報が取得できる場合には地図上での位置を表示したりセッション情報(いつ接続したか、切断されたか)を表示することができます。 blog.soracom.jp
- 地図があれば地図上から
ジオフェンシング
の範囲を指定したい - これが出来ると、ある一定の範囲から出たら/入ったらでトリガーが引けそう
- そうなると、動いちゃいけないデバイスがある範囲から動いたら通知とか、家に帰ってきたから3GをOFFにするとか出来そう
- もちろん Harvest で今回やったみたいに動体管理が出来ちゃうとしたら作り込みいらなくて最高
- グローバル・カバレッジのユーザーコンソール画面ですでに表示されているっぽい?
すでに実現済みで私が知らないだけっていうのもありそうな気もしますが・・・その場合はお手数ですが教えていただけると大変助かります。
宣伝
弊社サーバーワークスは SPS 認定済インテグレーションパートナー
です。SORACOMを利用したIoTについてご興味ある方は是非お問い合わせください。
まだまだ続く「SORACOM Advent Calendar 2016」
12/25 の最終日までまだまだ続く SORACOM Advent Calendar 2016
明日以降の投稿も楽しみですね!
以上になります。