raspiとSORACOMLagoonによる位置情報共有システムを数千円で作ってみた!

こんにちは。クーコムの大越です。

突然ですが僕は普段、サバイバルゲームを嗜んでおります。
一応サバイバルゲームを知らない人向けに簡単に説明するとBB弾という6mm程度のプラスチック弾をエアソフトガン(準空気銃)で撃ち合う戦争ごっこなのです。
サバイバルゲーム 出典: フリー百科事典『ウィキペディア(Wikipedia)』より

BB弾が体のどこかにあたった場合は戦死扱いになるので
無線機で「俺、死んだわ」と応答することもできません。
なのでいつの間にか近くの味方が全滅しており、周りには敵しかいなかった。。。なんてことがざらにあります。

そこで「味方の位置情報とか、生きてるか死んでるかがわかればサバゲに革命起きるんじゃね?」という思いからこの開発がスタートしました。

既存サービスに似たようなのいっぱいあるよ!!

知ってます。
そういったAndroidアプリはすでにいくつかあり、実際に使っておりました。
が、一般的なスマホでそのアプリを起動していると、電源が4時間で切れる上に熱暴走でOSが再起動するという実用に耐えないものが多かった。。。

あとは、~~近年稀に見るほどの情弱な方~~ 物を大切に使う年配の方がうちのサバゲチームには多いのでIT知識がない方でも操作できるレベルを目指しました。

作ってみた!

  • 完成図

Raspi本体とBlueToothボタン、モバイルバッテリー

SORACOM Lagoon画面

  • おおざっぱな構成図

    ※raspi⇔SORACOM間はスマホのデザリングで一時対応しました

raspiはGPSモジュールからGPS情報を受取り次第、POSTリクエストをSORACOMへ送信
またBluetoothでペアリングしているボタンが押されたかどうかもPOSTリクエストに含めて送信している
(これだけ!チョー簡単!)

ソースコード (20190105追加)

めちゃくちゃ汚いです
絶賛リファクタリング中

https://github.com/YuutaOokoshi/location_info_shared_system

利用しているサービス

利用しているモジュール

利用している言語

  • Python3.5
  • shellscript

実工数としては10h~20hほどです

構築するうえで気にした点

  • 位置情報を共有するスマホアプリだと電池消耗が激しく4時間で電源が落ちてしまうので二の舞にならないようにする
  • 表示する端末と情報を送信する端末を別々にした
  • スマホを持っていない人でも位置情報を送信できるようにする
  • 送信端末にRaspiを導入
  • 20代のさみしいポケットマネーでも導入できる値段に抑える
  • 送信機側は1台につき5000円で構築!
  • サーバーサイドは(SORACOM利用料含めて)月々1000円ほど
  • ITに疎い人でも送信機を運用できるようにする
  • 目指せ、ゼロ設定
  • ダッシュボードのアカウント管理はできるようにする
  • SORACOMLagoonのSAMアカウント管理にて解消
  • ここのSAMアカウントはSORACOMが管理しているわけではなくLagoonの中で管理することができる
  • フロントエンド側にあまり工数を割きたくない
  • SORACOMさん本当にありがとう!
  • Lagoonのダッシュボードとってもかっこいいし拡張性抜群です

SORACOM Lagoonでダッシュボード作ってみた

  • SORACOMのアカウントを持っていない人でもこのダッシュボードのURLを送ってもらうだけで見ることが出きます。

  • ダッシュボード画面

  • このDeadとAliveの部分が僕的にお気に入り



– Raspiごとのダッシュボードも作成

– ~構築風景~

気が付いた点・今後の改善点

  • 戦闘中は忙しくてスマホの画面見れない。。。!
  • Bluetoothの接続が数十分ごとに勝手に切れてしまうみたい。。。?
  • 原因調査中
  • Bluetoothのペアリングが切れるとプロセスが落ちてしまう
  • プログラムを修正します!
  • プロセスが死ぬと現場でノーパソ開いてSSHしてプロセス立ち上げないといけないのでとてもめんどくさい
  • プロセスをデーモン化してRaspiを再起動すれば起動するようにする
  • Raspi⇔SORACOM間の通信はスマホのデザリングを利用しているが、デザリング未対応のユーザーがいた
  • SORACOM SIMを導入?しかし3GやLTE基板は高い。。。
  • LPWAN利用して別途Iotゲートウェイ作るのも検討する
  • 1ゲームごとに軌跡を区切ったりできると見やすくなりそう
  • 定期的にGPS情報をPOSTするだけのスマホアプリとかを作ったほうが効率いいのでは?と思ったので今後作ってみようと思います
  • (SORACOMさん曰くなんだかんだIotデバイスがスマホに回帰することが多々ある様子。。。)

1日中動かしても2000mAhも使ってないぽい?

  • 25000mAhのバッテリーにつなぎながら12時間以上連続運用していたが画像の通り10%ぐらいしか減っていなかった!
  • もちろんプロセスが落ちてる時間帯もあったのでそこまで参考にはできないが、サバゲ中に電池切れることはなさそう

  • サバゲから帰ってきたときの残容量

その他

サバイバルゲームは弾が当たったかどうかは自己申告制なので、当たったことに気が付かずにゲームを続行してしまう行為(ゾンビ行為)がよく問題になっています。

ですがこれを参加者全員に装着し、人がよく通るエリアや激戦区などを把握、その場所にスタッフさんを常駐してもらうようにすれば、闇雲にマイクや拡張機でアナウンスするよりかなり効果的なのではないかと思いました。

さらに参加者からゾンビ報告を上げてもらった時、その場所の近くに誰がいたのかがわかるので的確に注意することも可能になる上に、「監視されている」という感覚から自己判定を厳しくしてもらえるようになります。

サバゲ参加者側のメリットとしては、数千円の投資で詳細なAARを取れるのでタクティカルなサバゲを目指している人にもおすすめです!
しかし5万人前後の市場ではビジネス化は難しそうと思ったのはここだけのお話。。。

今度は特小無線の電波を受信してツイッターに投稿するみたいなの作りたい!
サバゲ中になると日ごろ言わないようなセリフを言う人が多くかなりのカオスが巻き起こっているのできっと楽しいはず。
GCPとつなぎこんでボイスToテキストとか目指してみようと思います。