2022年SORACOM活動ふりかえり

こちらはSORACOM Advent Calendar2022の18日目の投稿です。

https://qiita.com/advent-calendar/2022/soracom

これまでは技術寄りの投稿が多かったですが、これというネタが無いので、今年のSORACOM関連の活動(アウトプット)の振り返りをしてみたいと思います。

1/25 SORACOM UG Online #9 ~新春LT祭り~

登壇したことも忘れていましたが、年明け早々、全国イベントでLT登壇していました。

https://soracomug-tokyo.connpass.com/event/233053

発表内容はこのブログでも紹介したGPSマルチユニットで子供の幼稚園バスをトラッキングするネタ。

オチがイマイチでしたが、実生活でのIoT活用方法が紹介できたのと、Twitterで尊敬する方からコメントがもらえて、感激でした。

4/28 SORACOM UG 九州 #12

たまたま仕事の出張と日程が重なり、UG九州のオフラインイベントに参加できました。

https://soracomug-tokyo.connpass.com/event/244740

初めて広島以外の地方支部参加でしたが、非常にハイレベルな中、厚かましく拙いLTで登壇させていただきました。

ちなみにここで宣伝した草刈りeスポーツ大会ですが、構想から3年、コロナによる延期を乗り越えようやく5/14にイベント開催できました。(プロジェクトのリーダーのブログ)

私はIoTデバイス担当で、M5StickC+SORACOMのシステム実装をやらせてもらいました。

トラブルもありましたが、無事にイベントを終えることができ、安心しました。

10/22 SORACOM UG Explorer 2022 @UG広島 〜秋のハンズオン祭り〜

ご参加の方はご存知かと思いますが、今年のExplorerは「秋のハンズオン祭り」ということで、全国5か所のサテライト会場を中継で繋ぎ、ハンズオンを実施しました。

私は広島会場の運営として参加させていただき、ほんの少しだけ発表もさせてもらいました。

https://soracomug-tokyo.connpass.com/event/261634

他会場のそうそうたる運営メンバーの皆様の中で気後れしまくりでしたが、大きなトラブルもなく、乗り切れました。

ご来広いただきましたkoyaさん、ご参加いただきました皆様、ありがとうございました!

11/24 Try SORACOMキャンペーン参加

完全におまけですが、年末に久々のTry! SORACOMキャンペーンがあり、ネタが浮かばず諦めかけましたが、何とか投稿できました。

過去イチ薄い内容でしたが・・

まとめ

今年は諸々の事情もあり、ちょっと活動少なめだったなぁと反省しています。

来年はUG広島オフラインイベント開催とかできればいいなぁと勝手に思っています。

それでは皆様、よいお年を!(雑っ!!)

ベトナムでソラカメ使ってみた

SORACOMのイベントで「好きなSORACOMサービスは『Try! SORACOMキャンペーン』です!」と言って失笑されるozkです。

久しぶり(約1年ぶり?)でしょうか、待望の「Try! SORACOMキャンペーン」です。

https://www.lp.soracom.jp/202210-blog-campaign

今回は色々とバタバタで過去イチ内容が薄いですが、せっかくなので挑戦してみます。

MEは何しにベトナムへ?

実はこのブログはベトナムのホテルで執筆しております。

私の所属する会社はベトナムとインドに拠点があり、ベトナム社はASEAN地区の案件対応の拠点として2014年から営業をしており、徐々に結果が出始めています。

とはいえまだ少人数でIT専任はおろか、兼任スタッフもおらず、情報セキュリティ対策など多くの課題を抱えているため、現地の状況確認という名目で1週間の滞在予定で、11/20から来ています。

2019年(深セン)以来やく3年ぶりの海外、コロナの心配や文化の異なるスタッフとの交流の難しさもありますが、異国情緒を楽しんでおります。

ベトナムの米麵料理、フォー

ソラカメとは

ご存じの方にはかなり今更感ですが、Soracom Cloud Camera Services ソラカメはクラウド録画機能を持つネットワークカメラです。

https://soracom.jp/sora_cam

低価格で高性能なAI機能付きネットワークカメラ、ATOM Camにクラウド常時録画機能が付いたものです。

ちなみに私が持っているのは上下左右に首振り可能なATOM Cam Swingです。

たった5000円弱でこんなに!と驚愕のコスパです(クラウド録画機能は月額費用が発生します)。

今回はこれをベトナムオフィスにこっそり持ち込み、使ってみました。

結果

早速ですが結果です。

以下のように配置し、事務所の無線LANに接続しました。

はい、見れました!

スマホアプリのライブ表示画面

…で?って感じですが、以下に先日公開されたソラカメAPIを使ってタイムラプス動画を作る方法が公開されています。

https://soracom.github.io/iot-recipes/iot-workshop-sora-cam-api-timelapse/#0

帰国後、これを参考にダレトクの私のベトナム勤タイムラプス動画にまとめたいと思います。

現場からは以上です。

(おまけ)ベトナムでSoracom Mobile使ってみた

以下のSoracom Mobileというサービスを先日知り、タイムリーに海外出張が入ったので使ってみました。

https://soracommobile.com/ja

飛行機着陸後、機内モード解除するとすぐネットに接続!

いやー、便利ですねー。

iPhoneお持ちで海外にお出かけの方、是非使ってみていただければと思います。

まとめ

今回は本当に薄っすい内容でした。

もしかしたら海外オフィスの監視に使えるんじゃない?という可能性を匂わせて終わりとさせていただきます。

追伸

キャンペーン開始時、締め切りが11/24だったので急いで書いたのですが、12/25に延長されていました(ガーン)。

ただせっかくなので、「海外で書いた」という響きに憧れて、薄い内容ですが当初の締め切り日に投稿させていただきます。

末筆ではございますが、ソラコムさん、いつもアウトプットの機会をいただき、ありがとうございます。

今後とも何卒よろしくお願いいたします。

幼稚園バストラッカー続編

例によって「Try! SORACOMキャンペーン」です!

https://www.lp.soracom.jp/202112-blog-campaign

はじめに

前回の投稿でSORACOMのGPSマルチユニットを使った幼稚園バストラッカーを紹介しました。

既製品のデバイスを手軽に使えて良かったのですが、このシステム、以下が課題だなーと思ってました。

  1. (デバイスの仕様上)位置情報の送信が1分に1回しかできない
  2. (機能が無いので)距離が正確に算出できない
  3. (機能の都合で)移動していない時も1分に1回情報を送り続ける

「もっと細かい設定ができたらなー・・」と思ってたら、ハッ!

前々回の投稿でスマホ(RedMobile)という絶好のIoTデバイス(武器)を手に入れていました。

早速調べると、やはりありました!locationノード。

お試し

最低限で以下のフローで動かせます。

subscribeノードのSensorを「GeoLocation」にしてデプロイします。

subscribeノード

injectノード実行でデバッグウィンドウに数秒おきに緯度経度が表示されます。

RedMobile最高!

ついでにダッシュボードに表示。

実装

ここからSORACOMです。

SIMグループのHarvest Data設定などは割愛させていただきます。

まず取得した緯度経度をflow変数にセットします。

そしてinjectノードで設定した周期でSORACOM(Unified Endpoint)にhttp request。

injectノード
http requestノード

「送信データ作成」functionノードは以下。

var data = {};
data["lat"] = flow.get("lat");
data["lon"] = flow.get("lon");

msg.payload = data;

return msg;

これで課題1(短周期での送信)が解決!

続いて課題2(ちゃんとした距離の算出)。

2点の距離は緯度経度、三角関数で出せるそうです。

前回は緯度経度を使い、三平方の定理もどきで距離っぽいものを出していましたが、今回はコレが使えます。

距離取得のfunctionノードを追加します。

var base_lat = (起点の緯度);
var base_lon = (起点の経度);
var now_lat = msg.payload.latitude;
var now_lon = msg.payload.longitude;

var dist = 6371 * Math.acos(Math.cos(base_lat * Math.PI / 180) * Math.cos(now_lat * Math.PI / 180) * Math.cos(now_lon * Math.PI / 180 - base_lon * Math.PI / 180) + Math.sin(base_lat * Math.PI / 180) * Math.sin(now_lat * Math.PI / 180)) * 1000;
flow.set("dist", dist);
msg.payload = dist;

return msg;

そして送信データに距離を追加するだけ。

var data = {};
data["lat"] = flow.get("lat");
data["lon"] = flow.get("lon");
data["dist"] = flow.get("dist");

msg.payload = data;

return msg;

課題3(移動時のみ位置データ送信)は同じ方法で前回の送信場所からの移動距離を判定して「移動していなければ送らない」を実装して解決(手抜きですみません・汗)。

実証

開発はSORACOM Arcでやりましたが、本番はSORACOM Air(SIM)を挿して息子のバッグに忍ばせます。

そしていつものSORACOM Lagoonで可視化。

いい感じです。

拡大するとわかるのですが、短周期なので、より細かいトラッキングができていました。

前回のオチで書いた通り、世のシステムが立派すぎてコレもお蔵入りですが、今後どこかで使えたらいいなーって思います。

補足

せっかく作ったので、通勤の時に持って歩いたところ、アレ?

実際のルート(赤線)は直線的なのに超ジグザグ・・

というのも私、河川敷を徒歩で通勤しているのですが、どうやらRedMobileのlocationは道じゃないところは苦手なようです。

やってみてわかることってあるなーと感じた2021年年末でした(雑な結び)。

みなさま、よいお年を・・

IoTで子育てHack

この記事は、「子育てエンジニアAdvent Calendar 2021」17日目の記事です。

私事ではありますが、10月に第三子(長女)が生まれ、10月中旬から1カ月強の育休をいただきました。

今回このアドベントカレンダーを知り、たぶん人生で最初で最後の育児休暇の間の育児と家事を通じ、エンジニアとして何か改善できないか取り組んだ記録を残してみたいと思います。

自己紹介と家族構成

私は社会人21年目の中年おじさんで、プログラマーとしてキャリアをスタートし、いろいろ経て今は社内情シス(主にインフラと雑用)をしているなんちゃってエンジニアです。

妻(専業主婦)と息子2人(5歳と3歳)、新入りの長女の5人で暮らしています。

幸い私も妻も実家が近い地元暮らしなので、母と義母に助けてもらいながら子育てができる恵まれた環境(感謝!)で、少しですが趣味の時間もとれる状況です。

育休中大変だったこと

育休中、家事と育児、色々大変でしたが、その一つが長男(5歳)の幼稚園バスのバス停までの送迎です。

特に行きはバスの到着時間がまちまちで、待ち時間が長いときは「なんだかなぁ」と思ってました。

幼稚園バスのイラスト

IoTで課題解決

概要

なんちゃってエンジニアの私ですが、2018年からIoT(Internet of Things)にちょろちょろ携わっていて、特にソラコムのデバイスやサービスを使うのが好きです。

今回、以下のGPSマルチユニットを使って、幼稚園バスの現在地を可視化(および通知)をしてみようと思い、挑戦しました。

https://soracom.jp/store/5235

実装

GPSマルチユニットの設定の方法は以下にあります。

https://users.soracom.io/ja-jp/guides/iot-devices/gps-multiunit

今回は送信モードを「定期送信 – 手動モード」、送信間隔を最短の「1分」にしました。

さらに高頻度に送信するため、加速度割込みも設定します。

これにより移動中は1分未満で位置情報が送れます(たぶん)。

可視化はSORACOM Lagoonというツールを使い、Soracom MAPパネルを使って地図を表示します。

https://soracom.jp/services/lagoon

実験

いきなり幼稚園に「バスにコレ載せてください」はお願いしにくいので、息子のカバンに手持ちの2台のGPSマルチユニットを忍ばせました(それもどうなの・・?って感じですが・汗)。

結果、いい感じでデータとれました。

行き(マップはぼかしてます)

残念ながらSORACOM Lagoonには距離を取得する機能がない(知らないだけかも)ので、下段の幼稚園の距離は幼稚園とバスの緯度経度の差の二乗和(×1,000,000)で出してみました(SQRTもなく苦肉の策)。

「緯度」と「経度」は幼稚園の緯度経度
($A - 幼児園の緯度) * ($A - 幼稚園の緯度) + ($B - 幼稚園の経度) * ($B - 幼稚園の経度) * 1000000

※幼稚園の緯度と経度はGoogleマップから取得しました。

この値でアラート機能を使えば出発&お迎え通知機能もできそうです。

オチ

「さて、幼稚園に提案しようかな」と思ったのですが、ふと「幼稚園バス GPS」でググってみたら、月にわずか数千円で使えて、より高機能なサービスが山のように。

ま、そりゃそうか・・

しかしこういうものがDIYでできるようになったのは「テクノロジーの民主化」、すごいなーって思います。

今回は微妙な結果でしたが、引き続き子育てや家事に役立つシステムを日曜大工的に作るのも悪くないなーと感じたなんちゃってエンジニアおじさんでした。

スマホで簡単IoT

今回の投稿は以下のイベントで発表した内容です。

https://iotlt.connpass.com/event/227874

せっかくなので、(締め切り直前ですが)いつものキャンペーンに参加してみます。

https://www.lp.soracom.jp/202110-blog-campaign

経緯

私事ではありますが、先日第三子(長女)が生まれ、育休をいただいています(現在4週目)。

育休中、資格の勉強や積読(つんどく)&積みデバイスの片付けをしたかったのですが、(先人の教えの通り)家事&育児でほとんどできていませんでした。

そこにイベント登壇の依頼があったので、せっかくなので育児にかかわるシステムを作りたいと思い立ち、赤ちゃんの見守りシステムを作ってみることにしました。

どうやって?

SORACOM UGでもお世話になっている「しょーちゃん」さんが先日、スマホでPoCするブログをアップされていました。

https://zenn.dev/showm001/articles/2021-08-12-01

今回、このAndroidスマホ+Node-RED(RedMobile)+SORACOMサービスで挑戦しました。

準備

RedMobile

RedMobileはスマホ内蔵センサーのノードを組み込んだNode-RED環境を提供するもので、有償(500円)ですが、Google Playからインストールするだけで使えます。

インストール後Wi-Fiに接続した状態でアプリを起動し、Startをタップします。

RedMobileの起動

Node-REDが起動され、「http://(ローカルIP):1880/red」と表示されます。

Node-RED起動後の画面

同一ネットワークのパソコンでブラウザを起動し、先ほどの 「http://(ローカルIP):1880/red」 にアクセスするとNode-REDの編集画面になります。

Node-RED編集画面

SORACOM Arc

SORACOM Arcというサービスを使うと、SIM不要でインターネット環境からSORACOMのサービスを利用することができます。

SORACOM ArcはスマートフォンにWireGuardというアプリをインストールして設定します。

詳細の手順は前述の「しょーちゃん」さんのブログをご参照ください。

つくったもの

以下の機能を持つ赤ちゃんの見守りシステムにしました。

  • スマホ内蔵の明るさセンサーで夜間の照明点灯時間を計測
    →授乳回数やおむつ交換の参考とする
  • スマホカメラで赤ちゃんの睡眠の様子を観察する

携帯画面

Node-REDのダッシュボード機能でこんな画面を作りました。

携帯画面

SORACOMダッシュボード

SORACOMサービスとしては、明るさセンサーのデータはSORACOM Harvest Data、カメラで撮影した画像はSORACOM Harvest Filesに保存し、SORACOM Lagoonで可視化しました。

Lagoon画面

実装

Node-RED

以下のようなフローとなりました。

Node-REDフロー

詳細は別の機会に紹介できればと思います。

SORACOM

光センサーデータの送信は「しょーちゃん」さんのブログ、画像の送信&可視化は以下を参考に実装しました。

https://users.soracom.io/ja-jp/docs/harvest/send-files

https://users.soracom.io/ja-jp/docs/harvest/lagoon

画像送信はいろいろ問題があったので、後日まとめてQiitaにでも上げておきます。

テストの結果

結論から言うと失敗でした。

理由はスマホの明るさセンサーが作業時の常夜灯に反応せず、0だったが原因です。

写真も当たり前ですが、電気を消すと真っ暗…

テスト運用結果画面

まとめ

今回の開発システムは失敗でしたが、特別なデバイスを使わず、スマホだけでセンサーデータ、カメラ画像をSORACOMにアップロードできるのはいろいろと可能性が広がります。

また、「スマホだけでできる」というのはビギナーにとって「試してみる」のハードルを下げられるのではないかと思っています。

謝辞

くどいですが今回のシステムは「しょーちゃん」さんのブログのおかげで作ることができました。

また「しょーちゃん」さんには「もくもく会」でも直接アドバイスをいただき、感謝です。

https://soracomug-tokyo.connpass.com/event/229776

またイベント登壇のお声がけをいただきました武村さん、ブログ書くモチベーションをくださるソラコムさんいつもありがとうございます。

SORACOMを使ったIoT草刈りゲーム「草刈ルゥーーン」

先日、つくばミニメイカーフェアというイベントでチーム「まさお」としてIoT草刈りゲーム「草刈ルゥーーン」というものを展示してきました。

展示に関する紹介はこちらです。

ホーム

技術的にはすごくシンプルで、草刈り機にGPSを取り付け、刈った範囲を可視化するものです。

このシステム(?)の通信から可視化についてはIoTプラットフォーム「SORACOM」のサービスで構築しています。

簡単に説明すると、草刈り機が動いている間、一定の間隔でSORACOMに位置情報を送り、Harvestにデータを溜めて、Lagoonで可視化するプロトタイプです。

試作機

1号機

電子工作未経験だったこともあり、Groveというはんだ付け不要のキットをSORACOMのサイトで購入しました。
https://soracom.jp/products/kit/grovestarter_kit_lte/

このキットにはGPSとSORACOMのSIMカード(SORACOM IoT SIM)も含まれています。

 

草刈り機が動いているかの判定はエンジン部に取り付けた振動センサで行います。

 

ついでに稼働時間をカウントするディスプレイも取り付けました。

 

実際の機器はこうなっています。

この機器を使い、広島県呉市のレモン農家、末岡新果園さんご協力のもと、実際のレモン農場で実証試験を行いました。

前日にすったもんだありましたが、初の実証試験、無事に動きました。

SORACOM Lagoonでも無事表示できました。

また、この実証試験の様子は「地方版IoT推進ラボ」というサイトでも紹介いただきました。
https://local-iot-lab.ipa.go.jp/article/hiroshima-pref-iot-2002091438.html?fbclid=IwAR3v8xGMnQJeZ3oxbYWl_H9YXcsXLzq4sLvNQ6k0akqUzYwpr8ZkIDgquO0

2号機

実証試験のあと、つくばミニメイカーフェアまで少し時間があったので、別の用途で購入していたM5Stackで2号機を作ることにしました。

振動センサは1号機と同じものを使い、GPSと3G通信は別途モジュールを購入しました。

そしてここでもソラコムさんにも大変お世話になりました。

というのも、GPSモジュールと3G拡張ボードはそのままでは同時に使えないとのこと・・

対応方法をソラコムのMAXこと松下さんがQiitaにて紹介してくれていました。
https://qiita.com/ma2shita/items/e6f84f1d2e8c94e12e31

ソースコードまで提供いただき、実際には半日程度で開発できました。

展示

2月のつくばミニメイカーフェアはリーダーが突貫で制作したバーチャル草刈りもあり、非常に盛り上がりました。

実際の草刈り機は展示できないので、1号機、2号機をおもちゃに取り付けました。

デモデータを取ってみました。

まとめ

この「草刈ルゥーーン」のアイデアはハッカソンから生まれましたが、実装は「IoTの民主化」を掲げるソラコムさんをはじめ、Qiitaなどの先人たちの知恵を借りて容易に実現できました。

まだまだ課題は多いですが、引き続き改良し、社会実装を目指してユルユルと頑張ります。