SORACOM LTE-M Button Plusと100均ショップの商品でIoTポストを作ってみた

SORACOM LTE-M Button PlusとダイソーのLEDセンサーライトでIoTポストを作ってみました。通販での買い物が多くなっても荷物の到着がすぐに分かるようになります!
2020.06.22

昨今は徐々に自粛が解除されていますが、まだまだ以前のように気軽に出社というわけにもいかず、買い物は通販を利用する機会が多くなってきました。

通販が多くなると荷物が届いたかどうか何度もポストに確認に行くのが面倒になります。 最近では、宅配通知を行ってくれるサービスもありますが、すべての宅配事業者で提供されているわけではありません。

そこで、今回は「SORACOM LTE-M Button Plus」を使って、「荷物がポストに届いたら通知してくれるIoTポスト」を作ってみたいと思います。

構成図

今回作る仕組みの全体構成図は下記の様になります。これを今回のゴールとして作っていきたいと思います。

00-soracom-diagram-all

SORACOM LTE-M Button Plusとは?

SORACOM LTE-M Button Plus はIoT SIM(plan-KM1)内蔵した「LTE-M Button」シリーズのモデルの1つです。
物理的なボタンアクションによるデータ送信もできますが、最大の特徴は「接点入力を備えている」という点です。これによりドアの開閉や人感センサーによるデータ送信が可能になります。

また、交換可能な乾電池(単4電池x2個)で動くので、電源確保という観点でも魅力的なデバイスです。

使うもの

今回のIoTポストに必要なものを揃えます。

  • SORACOM LTE-M Button Plus(Plus ボタン)
  • DAISOの100円のセンサー
    • ポスト投函口の開閉センサーとして使います
  • ワニクリップ
    • センサーとPlusボタンを簡易的につなぎます
  • Slack
    • 投函の通知をSlackに送ってみます

とりあえずつなげてみる

センサーとPlusボタンをつないだ図です。簡単にする為にワニクリップで繋いでます。
(Plusボタンのケーブルは時期によって異なるそうですが、分かりやすくするために黒と赤で表示しています。極性は無いので気にする必要はありません。)

右側のセンサーで、ケーブルが繋がっていないパーツを近づけたり離したりすることで、Plusボタンが信号を検知してデータを送ります。

00-diagram1

センサーの確認

今回は、手元にあった100円ショップの商品を流用します。

17-daiso-led

これは、いわゆる「ドア開閉センサー」と呼ばれるものと同じ類のものです。
タンスの引き出しなどにつけて、引き出しを明けたらLEDが点灯して暗い箇所でも見やすくなる、という商品です。

今回は、LEDの部分は不要でセンサー部分だけ使いたいので、ケーブルを切断して皮膜を剥いておきます。

18-only-sensor

ちなみに、被膜を取るための道具(ワイヤーストリッパー)もダイソーで売られていたので、今回試しに使ってみました。非常に簡易的な作りですが今回の作業では問題ありませんでした。

19-wire-stripper

センサーの動作確認

さて、今回利用するセンサーは、100均の商品を流用するのでセンサー自体の仕様に関する情報がありません。

そこで、仕様を把握するために思い切って分解してみました。すると、下の写真のように、単純に「リードスイッチ」が使われていることが分かりました。もう一方の部品には磁石が入っていました。この磁石が近づいたり離れたりすることで電源の開閉が動作します。

20-box-inside

次の動画は、電源の開閉の動作を実際に確認しているところです。「磁石を近づけるとPlusボタンのLEDが点滅(Plusボタンが信号検知)」しているのが分かります。

Plusボタンの仕様は、「信号検知:Open→Closeの片エッジ」ですので、このスイッチは「磁石を近づけるとClose(スイッチがON)になって、磁石を離すとOpen(スイッチがOFF)になる、Normal Openなスイッチ」であることが分かりました。

01-no-sensor

実際に、Plusボタンを回路から外して市販のLEDで試してみたところ、下記の動作を確認できたので、このスイッチがNormal Open(a接点、常開接点)であることは確かなようです。

  • 磁石を近づけるとLEDが点灯
  • 磁石を離すとLEDが消灯

想定外なセンサーの動作

ここまで確認してきて、ふと1つの疑問が湧いてきました。

このセンサーは、商品としてはタンスの引き出しなどに貼って、「引き出しが開くとLEDが点灯」するものでした。つまり「磁石が離れるとClose(スイッチON)」になっていて、上記の動作と逆になっているように思えます。

02-nc-sensor

色々調べると、下記の記事にあるように、どうやらLEDライト側に入っている基板で信号を反転させていることが原因のようでした。(著者の方に感謝です)

ここまでの説明で、スイッチがNormal Openとかb接点とか不慣れな言葉が出てきたかもしれませんが、スイッチの説明自体は本記事では省略させていただきます。下記を参考にしていただければと思います。

どういう仕様で作るか

センサーの動きが分かったので、これを踏まえてIoTポストをどう作るか検討します。

普通に考えると、「ポストの投函口が開くと信号を検知」してほしいと思います。しかしこのセンサーを投函口に使うと、「投函口が閉まると信号を検知」することになります。

そのため、この課題をクリアする方法を考えます。

対策その1 〜マイコンで信号を反転させる〜

「ポストの投函口が開くと信号を検知」するためには、先程紹介したブログにもあったように「ラズパイなどのマイコンで信号を反転」させれば良さそうです。

しかし、集合住宅などの場合も考えるとポストの近くにマイコン用の電源を確保するのは難しいように思います。(一戸建ての場合でも、電源確保は難しい場合が多いのではないかと思います。)

05-post-ng

対策その2 〜センサーを変える〜

この記事では、100均の商品から取り出したセンサーを使う予定ですが、別のタイプ(Normal Close)のセンサーを使うことにすれば、問題は簡単に解決できそうです。

そこで、某通販サイトで安いNCタイプのセンサーを購入してみました。しかし、実際に動作を確認するとNOタイプであることが分かりました。

商品のレビューにも「NCじゃなくてNOタイプでした!」と書かれているものが多かったのですが、中には「NOとして動作したよ」というレビューもあったので、一縷の望みをかけていたのですが届いた実物はやはりNCタイプでした。

他の通販サイトでも探してみたのですが、なぜか「NCタイプ」のものがあまり売られておらず、数千円するような高額なものしか見つけられなかったり、見つかっても個人への販売はしていないものもありました。

そのため、センサーを変えることは一旦諦めることにしました。

対策その3 〜体験キットで課題を全クリする〜

これは対策とは言えないかもしれませんが、この検証をしているときにソラコムさんにて、全く同じことができる「IoT 体験キット」なるものが8,800円で販売されていることに気が付きました。

このキットでは、NO, NCどちらのタイプにも使えるセンサーが使われており、Plusボタンを持ってない方はこちらのキットがオススメです。

しかし、私は既にPlusボタンを単独で購入しており、追加で1万円近い出費は厳しかったので断念しました。

結論と注意事項

対策1〜3はいずれも解決の糸口になりそうではあるものの、すぐに解決できそうになかったので、このまま100均のセンサーで作ることにしました(苦笑)

このままでも「IoTポスト」は作れますが、このセンサーを使う場合は消費電力について考慮しておく必要があります。

普段ポストの投函口は閉じているので、スイッチ的にもCloseな状態です。つまり、常に通電している状態になるのでPlusボタンの電池の消耗が大きくなる、という問題があります。これは公式ページでも注意事項として記載されています。

Close 状態を維持し続けた場合、その間の消費電力が増加します。通常時は Open になるようにシステム設計をしてください。

他にも色々と改善点が出てきそうですが、今回は試作ということでこのまま進めることにしました。

備考

後日、安いNCタイプのスイッチを見つけたので、入手できたら入れ替えて試してみたいと思います。入荷は1ヶ月ほど先になるようです…

最終的なイメージ

それでは実際に試作品を作る前に全体を振り返って、ポストの構成イメージを考えてみます。構成そのものは基本的には変わりません。

00-diagram2

IoTポストを試作する

方針が決まったので試作品を作っていきます。
今回このセンサーの設置を考えている自宅のポストはやや変わった形をしていて、箱の上側がバコッと割れるような形で開きます。 (投函口がヒラヒラ動くような形ではない)

いきなり実際のポストに付けると実験しづらいので、100均で似たような形のボックスを買ってきました。そしてこれにPlusボタンとスイッチをテープで取り付けたものが以下の写真のものです。これを仮に「試作ポスト」と呼ぶことにします。

07-box-outside

箱を開いた中身です。これがポストへの投函時に近い状態です。
手前の白い四角い物体がセンサーで、奥の白い物体に磁石が入っています。この箱にはロフトのように小物を入れる棚のようなものが付いています。ここにPlusボタンを置いています。

08-box-inside1

違う角度で見るとこんな感じです。Plusボタンとセンサーを単純にワニクリップで繋いでいます。  

09-box-inside2

本格的に使う場合は、ワニクリップではなく熱収縮チューブなどで接続するのがいいと思います。そしてそのチューブもダイソーで売られていました。100均ショップはホントに何でも売ってますね。

10-tube

実際にフタを閉じて、Plusボタンが信号を検知できるかセンサーと電池の配置を確認してみます。
動画の通り、フタが閉まるとLEDが点滅(信号検知)しているので問題なさそうです。

検知したデータも確認してみましょう。SORACOMのコンソールよりHarvest Dataを確認してみます。試作ボックスのフタが閉まったときは「クリックタイプ:3」として記録されますが、グラフとその下のデータ内容からも「信号を検知してデータを記録できている」ことが分かります。

11-soracom-harvest

なお、今回は初期設定済みのPlusボタンを使っています。初めて利用される場合は、下記の内容を参考にセットアップしてみてください。(とても簡単です)

通知設定

あとは、フタが閉まった時(荷物が投函された時)に通知できれば、とりあえず完成です。(はや)

通知させる仕組みはいくつかありますが、今回は「SORACOM Lagoon」を使います。「SORACOM Lagoon」は先程グラフをみたように、「SORACOM Harvest」に集まったデータをグラフなどで可視化してダッシュボードを提供してくれるサービスです。

さらにデータに対してアラートを設定することができて、Slackやメールで通知することも可能です。

監視の仕組みを使うのでリアルタイム性は劣りますが、荷物の投函を「秒を競う速さ」でリアルタイムに把握したいニーズも少ないと思うので、一旦これでよしとします。

Lagoonなどソラコム側プラットフォームの構成も加えると、最終的な全体構成は下記のようになります。

00-soracom-diagram

通知先(チャンネル)や監視の設定はLagoonの画面より行います。下記はSlackに通知する設定です。事前にSlack側でWeb hookの設定を行っておきましょう。

14-slack-notify-channel

次に、Plusボタンから送られてくるデータのclickTypeの値に対する監視設定です。
ここでは、すぐに確認できるように「評価間隔」を30秒にしていますが、指定できる最短時間はLagoonの契約プランにより変わります。

「試作ポスト」のフタが閉まると"clickType":"3"のデータが記録されるので、アラートの条件として、「過去1分間で最後の値が2より大きな値になると通知」と設定しています。

12-lagoon-alert

通知設定では、事前に作成したチャンネルとメッセージを指定することができます。下記は、Slackとメールで通知するようになっています。メールタブが青色になっているのはメール通知をデフォルトに指定している為です。(自由に変更できます)

13-config-alert-notification

Lagoonの使い方もとても簡単なので、詳細な作業は割愛しています。下記を参考にダッシュボードを作成してみてください。

SORACOM Lagoon を利用してダッシュボードを作成する | Getting Started | SORACOM Users

Slackへの通知設定は下記がそのまま参考になると思います。

SORACOM Lagoon を利用してアラートを設定する | Documents | SORACOM Users

SORACOMサービスはドキュメントも多くないので、非常に簡単に素早くプラットフォームを構築できる点が素晴らしいと思います。
また、より複雑なことがしたい場合は、AWSなどのクラウドと連携すればいいのですが、それも簡単にできるのでプロトタイプの開発が迅速にできます。

投函テスト

ここまでの作業で必要な作業は完了しました。
それでは、荷物が届いたことを想定して「試作ポスト」のフタを開け閉めしてみましょう。

下記のように、SlackへポストされていればOKです。(監視間隔を30秒にしているので、すぐにPostされると思います)

15-slack-post

完成後に見えてきた課題

これで、簡易的であるものの「IoTポスト」ができましたが、実際に利用するにはいくつか課題も見えてきました。

課題その1 〜鉄製ポストとセンサーの相性が悪い〜

実際のポストは金属製である場合が多いと思います。利用しているセンサーは「磁力」を利用したものなので、ポストの「鉄」からの影響を受ける可能性があります。なんらかのスペーサーを利用して工夫する必要があります。

課題その2 〜別センサーに変えると電源が確保できない〜

磁石の影響を受けるなら感圧センサーなど別のものに変えてしまう方法もあると思います。

ただし、この場合はおそらく別途リレースイッチ、マイコンなどを組み合わせて使う必要があるのではと思っています。(未検証なので今後試してみたいと思います)
そうなるとマイコン用の電源確保が必要になってしまいます…

課題その3 〜通知メッセージをカスタムしたい〜

下記は実際のPost内容です。「荷物が投函されました」というメッセージは任意で指定できる部分ですが、他の内容はカスタムできません。また、監視の仕組み上、復旧通知も受信します。気にしなくてもいいのですが可能なら消したいです。
これらをカスタムしたい場合は、AWSと連携してLambdaで処理させてしまうのがよさそうです。

16-slack-posts

課題その4 〜Plusボタンの消費電力を抑えたい〜

最初に仕様を考えたときに認識した問題です。やはり実際に利用する場合は電池交換も極力少なくしたいので、Normal Closeなセンサーに変更するのがよいと思います。

こちらは新たにセンサーを入手でき次第、交換したいと思います。

最後に

今回のIoTポストは、SORACOMの設定が簡単なこともあり、すぐに組み上げることができました。しかし、そもそも私がスイッチそのものに不勉強なことから、センサーの仕様を把握するのに時間がかかりました。
また、この仕組を実際に使おうとすると、色々と課題があることも分かりました。
商用に展開する際には、今回出てきた課題の他にも、データ送信時のセキュリティ、デバイス管理、パフォーマンスなども考慮する必要があります。

とはいえ、普段クラウド側の視点で考えることが多い分、実際にデバイスも含めて作っていくのはとても楽しい時間でした。

引き続き、課題をつぶしながら「IoTポスト」の改善を行っていきたいと思います。機会があればまたご紹介したいと思います。

以上です。