インドに行ってきました(リゾート編)

仕事の都合で7/6~14の7泊9日でインドのバンガロール(ベンガルールゥ)に行ってきました。

今回はリゾート(?)編です(前回は出発編でした)。

旧友との再会

実は今回のインド訪問は2回目で、1回目は友人の結婚式に参加するために11年前(2013年)に訪問しました。
その友人というのが、私がかつて派遣でお世話になっていた会社に来ていたKumar(クマール)さんです。
Kumarさんの職場の先輩が私の最初のインド人友達Sunil(スニール)さん。
今回、到着翌日の日曜日、その2人がわざわざ会いに来てくれました。

移動翌日で休養日の予定でしたが、リゾート(?)に連れて行ってくれるとのことで行ってきました。

1日車をチャーターしてくれたようで、以前日本で会ったVijay(ヴィジャイ)さん、初対面のVinay(ヴィナイ)さんと朝9時過ぎにホテルに到着。
歓迎のお土産(大量のスパイス)と花(!!)を持ってきてくれました。

11年ぶりの再会が嬉しかったし、あちらも喜んでくれているのが嬉しかったー!

リゾート!!

移動中の車ではビルの並ぶオフィス街と脇道に入ると旧式の家という、発展途上の表と裏を体験。

車で30分くらいでクラブカバナという施設に到着!

「リゾートって何?」だったんですが、プールとバーに加えて、ボウリングやビリヤード、アーチェリーなどの遊戯設備が一体となった設備でした。

その昔、広島にあった「ナタリー」を思い出しました。

一番盛り上がったのがボウリング!
4レーンしかないボウリング場をほぼ貸し切り状態で楽しみました。

個人的には1ゲーム目は83で最下位(アウェイの洗礼)、2ゲーム目は144でトップ(抜群の修正力)という成績でした。

電力が不安定なインドですが、ボウリング場は停電でもスコアが消えないBCP対策がされていたことと、スコア表示のPCのOSが中国版Windows XPだったのが印象的でした。

一番長く過ごしたのがバーで、朝からダラダラ飲むビール(キングフィッシャー)は最高でした!

リゾート内では食事もとれました。
朝食、昼食、おやつと地元ならではのものが食べられました。

そんなこんなで半日めちゃくちゃ堪能しました。

夕食

チャーター車で街に戻り夕食へ。

KumarさんもSunilさんも途中に何度も電話がかかってきてて、「偉くなったんだなー」と思いました(マネージャーになったらしい)。

お別れ

夕食後、チャーター車でホテルまで送ってもらってお別れしました。

Sunilさんはチェンナイという離れたところから、このためだけに来てくれたそうで、その日の夜行バスで帰り、明日は仕事とのことでした(ありがたいが申し訳ない)。

感謝を伝えると、「自分たちが広島に行ったときにすごくよくしてくれたから感謝してるんだよ」と言ってくれてちょっとウルっときました。

インド人の温かさ、Kumarさんの明るさ、Sunilさんのやさしさに触れ、元気もらった1日となりました。
みんな、元気でまた会おうな!

インドに行ってきました(出発編)

私の働く会社はベトナム、インドに海外拠点があります。
ベトナム社は2022年に行ったのですが、インド社には行けてなかったので、今回、7/6~14の7泊9日でインドのバンガロール(正しくはベンガルールゥ?)に行ってきました。

これから数回に分けて報告していきたいと思います。

いざ出発

バンガロール行きの航空機は唯一、成田空港からJALの直行便が出ています(2024年現在)。

ただ到着時刻が深夜になることと、広島から成田までの移動が煩わしかったので、福岡空港からシンガポール航空で行くことにしました。

シンガポール空港で5時間の待ちがあるものの、JALに比べて費用が半額くらいで安く、LCCではないので、食事や設備(個別モニタや機内Wi-Fiなど)もしっかりしてて快適でした。

※出発直後に異臭騒ぎで機内パニックになったのもいい思い出

シンガポールでトランジット

乗り換えで5時間滞在したシンガポールのチャンギ国際空港、世界で最も快適な空港らしく、無料の仮眠スペースもあって、これもまた快適でした。

空港内のフードコートでシンガポール名物のチキンライスの注文にも成功し、満足満足。

インド到着

福岡⇒シンガポール便はガラガラだったけど、シンガポール⇒インド便はほぼ満席・・
後で聞いたらインドからシンガポールに観光に行くインド人が多いらしいです。
物価高のシンガポールに観光とは、インド人お金持ちなんだなぁ・・

出発が1時間くらい遅れ、乗り換え後、4時間くらいでバンガロールのケンペゴウダ国際空港に到着。
到着は現地時刻で夜11時ですが、日本との時差が3時間半あるので、体感は深夜でクタクタです。

インドはビザが要るのですが、事前申請よりオンアライバルビザ(VOA)が楽と聞いていたので、入国審査時にビザ申請したのですが、係のおじさんたちが慣れていないようで4,5人がかりでめっちゃ時間かかりました。
申請料は2000ルピー、日本円で4000円弱です(カード使えました)。
VOAは以下に詳しくありました。

https://www.tokutenryoko.com/news/passage/12474#india_voa

事前に準備してくれていたタクシー(約3000ルピー、高!)でホテルに無事到着。

寝酒に先輩が準備してくれていたビールをいただき、長い一日が終わりました・・続く。

おまけ:楽天モバイル、Gemini大活躍

今回、出発前に業務がバタバタしてたので、事前調査があまりできませんでした(特にシンガポール)。
でも今回は楽天モバイルの無料海外ローミング(対象国で2Gまで無料)とGoogleの生成AI、Gemini(無償版)のアプリのおかげで不自由なくたどり着くことができました。

海外ローミングのおかげでSIM購入することなく着陸後すぐにネットにつながる、わからないことがあればGeminiが教えてくれる。
テクノロジーに感謝!

Gemini
わからんことはGemini先生に相談

組織と自分について考えてみた

昨日(10/23)、所属する会社の70周年記念式で宇宙飛行士の野口聡一さんのご講演を聴かせていただきました。

野口さんのお話の中で「言語化」というキーワードがありました。

以前から、自分には自分の考えを言葉にする言語化能力が足りていないと感じ続けていたのですが、(多分後悔するということは知りつつ)悶々とする思いを文章化してみようと思います。

野口さんのお話は「NASAのチームビルディング」がメインでした。

講演のなかで個性あふれる寄せ集めチームがドリームチームになるにはどういう過程を経る必要があるか・・というお話があり、チームとなるには四季:春はフォーミング(交流するとき)、夏はストーミング(ぶつかりながら理解しあうとき)、秋はノーミング(成果を出し始めるとき)、冬は・・で、日本人て春(フォーミング)は得意だけど、夏(ストーミング)は苦手だよね、でもここ乗り越えないと真のチームにはなれないよっていう・・(本当はもっと深いお話でしたが、文章力の無さが故・・)。

過去の経験で仕事でチームを作ろうとしたけど、夏:ストーミングが乗り越えられなかったので、自分にはリーダーは無理だ!と逃げるように異動させてもらいました。

でも私はチームというものが好きです。

ハッカソン(答えのない課題について考えて、参加者の知識や技量で解決するアイデアを出すイベント)に参加して、得意分野を持つ個々がコラボするという経験を経て、自分の想像を超える成果を出すことに震えた経験があったからです。

でも今、所属する会社ではチームはありません。放棄したので。

それでも会社でのチームワークを放棄した今、自分がするのは職場ではなく、コミュニティなどを含む自分の周りの人々と創る、本当のチームビルディングな気がしてきています。

今日は日本駐在中に仲良くしてもらっていたインド社の代表と、ベトナム社の副代表と会いました。

二人とも答えの無いチームビルディングに挑んでいます。

もっとがんばろう!と思いました。

情シス活動ふりかえり

こちらはcorp-engr 情シスSlack(コーポレートエンジニア x 情シス)#2 Advent Calendar 2022の22日目の投稿です。

初の情シス関連の書き込みです。

緊張と文才の問題で拙い内容ではありますが、温かい目で見守ってやってください。

自己紹介

改めてではありますが、私の属性です。

  • 広島県の非IT企業の情シス
  • プログラマー→派遣SE→総務の情シス(2013年~主にインフラ担当)
  • 3児の父(中年おじさん)

活動のふりかえり

かつての私

属性でも挙げましたが、私は非IT企業の情シスです。

しかも創業70年近い古い会社で、部署には「自営が正義」の風潮があり、私も「サーバーのお守りしながら残りの社会人生活を送るのかなー・・」と思っていました。

コミュニティ参加

ところが2018年、ある講座への参加をきっかけに、誘われるがまま地域のIT関連のコミュニティに参加するようになりました。

その関連で2020年つくばミニメイカーフェアに参加した際、懇親会でご一緒した方から「情シスSlack」の存在を教えてもらい、参加させていただくこととなりました。

正直、情シスSlackではあまり積極的に活動できていませんが、ツヨツヨ情シスの皆さんに気後れしながらも、他社の皆さんの活動を参考にさせていただいております。

この場をお借りして御礼申し上げます!

モブプログラミング導入

2013年の情シス異動後、システム開発からは離れていたのですが、2020年のIT系のイベントの発表者の方からでモブプログラミングというものを教えてもらいました。

当時はインフラ担当で「もう開発とかできないんだろうなぁ・・」と諦めていたところに、発表者の方にズドーンと衝撃を与えられ、「これだ!」と役員に直談判してシステム開発部隊に混ぜてもらい、プログラマーにカムバックを果たしました。

このあたりのお話はこちらのイベントで発表させてもらいました。

現在はほとんど活動停止状態ですが、いろいろな意味でいい経験となりました。

採用活動

他社の情シスの方も同じかと思いますが、弊社もIT人材の採用が大きな課題です。

IT人材は売り手市場ですし、まして地方の非IT企業なので、好んで来てくれる人なんて・・。

そこであるコミュニティで知り合った職業訓練をされている吉田先生に相談したところ、IT未経験ながらスジの良い訓練生を紹介してくれ、職場実習を経て入社してくれました。

吉田先生はbitzemiという会社で「市民開発者」の育成をされており、Power Platformのイベントで取り組みが紹介されていました(スゴイ!!)。

入社してくれたIT未経験の若者も約1年経ちましたが、元気に頑張ってくれています。

ご縁に感謝です。

インフラのクラウド移行

2019年、とあるイベントの懇親会で、他社の情シスの方とお話する機会があり、その時の自社の状況(サーバー自営)を話したところ、「え!まだそんなことやってるんですか?」と言われ、「このままじゃいかん!」と思いマインドを変えて動き始めました。

DNSはマネージドサービスに、Webはレンタルサーバーに、残ったサーバーはSaaS移行かIaaS環境にリフト・・少し時間がかかりましたが、2022年の6月に移行が完了しました。

異動

クラウド化を終え、やや燃え尽き症候群のような感じになりました。

また以前から総務の下の情シスとして働くことに限界を感じており、転職も考えたりしたのですが、ダメもとで異動を直訴したところ、経営戦略の部隊にIT担当として異動させてもらうことができました。

このあたりの話はちらのイベントで語らせてもらいました。

まだ役割はぼんやりしていますが、事業に貢献できる情シスとなれるよう、これから精進してまいります!

まとめ

だらだらと書き連ねてしまいましたが、何が言いたいかというと、社外のコミュニティやイベントの人とのつながりに助けられ、今の自分があるということです。

ここには書ききれませんでしたが、いろいろな人から学び、刺激を受け、自分が日々新しいことに挑戦できているなと実感します。

皆様、本当にありがとうございます!そして今後も仲良くしてやってください!!

それでは皆様、よいお年を。

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 ArcとラズパイZeroで監視カメラ

前置き

もはや悪びれず言います。

イベント滑り込みです。

https://www.lp.soracom.jp/202108-soracom-arc-blog-contest

そしてコンテストなのに内容も薄めです。

概要

前回の投稿ではラズパイとWebカメラを使った監視カメラを作りました。

このカメラ部分をラズパイZero WSORACOM Arcを使って実現してみたいと思います。

SORACOMのプラットフォームはこれまで、基本SORACOMのSIMを使った通信が前提となっており、前回の監視カメラは以下の構成となっていました。

SORACOM Arcは既設のインターネット環境を使ってSORACOMプラットフォームが使えるようになるので、専用のルーターも不要になります。

「で?」って感じですが、気軽にSORACOMサービスを試したり、(通信料がSIMより安いので)大容量の通信をする場合に良さそうに思います。

やったこと

ラズパイZero

ハードウェア

使ったハードは以下の通りです。

組み合わせるとこんな感じになります。

このコンパクトな感じでLinuxが動かせるのがZeroの魅力だと思います。

OSインストール

Raspberry Pi Imagerを使ってRaspbianをインストールします。

※手順は割愛させていただきます。

以降の作業はラズパイZeroにSSH接続した前提で進めます。

カメラの有効化

ラズパイカメラを使うため、raspi-configコマンドを実行して、以下の手順で有効化しします。

$ sudo raspi-config
  1. Interfacing Options → Camera を選択
  2. Enterキー押下
  3. Yes (はい)押下
  4. Ok (了解)押下
  5. Finish 押下で再起動

設定完了後、以下のコマンドで写真が撮影できるようになります。

$ raspistill -o image.jpg

WireGuardインストール

ラズパイでSORACOM Arcを使う場合、soratunというツールが便利(らしい)ですが、残念ながらZeroでは使うことができません。

代わりにラズパイZeroにWireGuardというVPN接続アプリを入れて作業します。

以下のコマンドでWireGuardをインストールします。

$ sudo apt install wireguard

SORACOM Arc

以下の手順に沿ってコンソール&ラズパイの設定を進めるとArcの設定ができます。

https://users.soracom.io/ja-jp/docs/arc/create-virtual-sim-and-connect-with-wireguard

画像

このままだと起動時に手動接続しなくてはいけないので、自動接続できるようにします。

$ sudo systemctl enable wg-quick@wg0

SORACOM Harvest Files、Lagoon

以下のレシピ「カメラの画像を SORACOM Harvest Files にアップロードする」以降を参考に設定します。

https://soracom.jp/recipes_index/2956

※手抜きですみません・・

撮影&送信

エラー処理とかまったく考えなければ、cronの設定のみできます。

$ crontab -e

最下行に以下を追記します。

*/15 * * * * /usr/bin/raspistill -rot 270 -w 640 -h 480 -o image.jpg; /usr/bin/curl -X POST -H 'Content-Type: image/jpeg' --data-binary '@image.jpg' harvest-files.soracom.io

設定の内容、オプションは以下の通りです。

  • */15:15分毎に実行するようにしています
  • -rot 270:前述の設置状況なので、3/4回転(270°)させてます
  • -w 640 -h 480:無駄に画質上げても・・なので640×480にしてみました

適宜変更いただければと思います。

結果

15分おきに写真がアップできるようになりました。

正直、現状どう使っていくかは未定ですが、通信料を気にしてエッジ処理とか考えてたところがエイヤーでクラウドに投げれそうな予感がしています。

これから知恵絞ります・・。