LoginSignup
9

More than 1 year has passed since last update.

RaspberryPiをSMSで起動してみる

Last updated at Posted at 2021-03-01

メカトラックスエバンジェリストのしかじろうです、こんにちは。今回はLTEモジュール4GPiと電源監視モジュールslee-Piで色々遊んでみました。@MechaTracks「しかさん、RaspberryPiはSMSで起動できるんだよ」と聞いてワクワクが止まらないので先人の知恵を借りながら試してみました。

PXL_20210224_152655649.jpg

概要

RaspberryPiに4GPiとslee-Pi3を繋いでSORACOM経由でSMSを送って起動する

参考

先人の記事を参考にしました。
3GPi Ver.2とslee-Pi2を使用して、SMS着信でラズパイ遠隔起動~シャットダウン - Qiita

必要機材の紹介

RaspberryPi3

Buy a Raspberry Pi 3 Model B – Raspberry Pi
877fb653\-7b43\-4931\-9cee\-977a22571f65\_3b\+Angle\+2\+refresh\.jpg \(600×400\)
みんな大好きRaspberryPi。最新は4ですが、今回は知見が多い3を使いました。OSは安心と信頼の4GPi用のRaspbianを採用しました。

4GPi

ラズベリーパイ用4G(LTE)通信モジュール「4GPi」 | 製品の紹介
4gpi4@2x\.png \(800×684\)

4GPiはRaspberryPi用のLTE通信モジュールです。ドッキングするだけで使えます。例えばビニールハウスや倉庫の中など、wifi回線がない場所でもネットに繋げることができます。後述するSoracom Napterを使えばSSHでログインできるので開発が捗ります。

slee-Pi3

ラズベリーパイ用電源管理/死活監視モジュール「slee-Pi」 | 製品の紹介
sleepi3@2x\.png \(800×684\)

slee-PiはRaspberryPi用の電源管理・死活監視モジュールです。起動・停止をスケジューリングさせたり、起動サービスが止まったら再起動などができます。使わないときは電気を使わないので省エネにもなるし、システムの死活監視⇒再起動も可能です。4GPiと組み合わせることで、SMS着信で起動もできます。

SORACOM IoT SIM

SORACOM IoT SIM (カード型 SIM) - IoTデバイス通販 - SORACOM(ソラコム)IoTストア
スクリーンショット 2021-02-25 0.38.03.png

SORACOMはIoT向けの通信プラットフォームです。SMSを使う場合はSMS可のSIMを購入する必要があります。(1敗)

SORACOM Napterを使うとRaspberryPiにSSHできるので、RaspberryPiを設置した後も開発・保守ができます。

ハードウェアの準備

4GPiジャンパピン

電源

JP1の供給ピンを両方とも抜きます。電源の供給はslee-Piに任せるためです。

SMS

JP2にジャンパピンを刺します。他と同様にGPIO16を使うので左側と中央をつなげます。これでSMSを着信するようになります。

4gpi\_jumper\_pins\.png \(3216×1963\)

slee-Piジャンパピン

sleepi3\.png \(1554×1071\)

SMS

JP1に2mmピッチジャンパピンを刺します。4GPiと合わせてGPIO16を使うので左側・中央を繋ぐようにします。

ジャンパピンには2.54mmピッチと2mmピッチがあるので、間違えないように購入します(1敗)

電源

今回は以下の2系統で構成しました。
1. Slee-Pi -> RaspberryPi
2. 4GPi

Slee-Piと4GPi両方に電源を繋ぐ必要があります。RaspberryPiへの給電はSlee-Piが行います。

ソフトウェアの準備

OSは4GPiが提供している4gpi-buster-lite-20200902.zip を採用しました。(この記事書いてたら4gpi-buster-lite-20210204が出ました)

piユーザーのパスワードが raspberry から変更されているので、初期ログイン情報カードを見てログインしてください。

ジャンパピンの設定

ジャンパピンを変更したので、設定ファイルを書き換えます。

sudo nano /etc/default/4gpi

#
# 4GPi settings
#
...
# Power off 4GPi at shutdown
#  AUTO_OFF=0: disable auto power off
#  AUTO_OFF=1: enable auto power off
AUTO_OFF=0

# Enable the modem to wake up on ring during standby
#  WAKE_ON_RING=0: disable Wake-on-Ring
#  WAKE_ON_RING=1: enable Wake-on-Ring (AUTO_OFF=0 is required)
WAKE_ON_RING=1

# Store SMS at Wake-on-Ring (WAKE_ON_RING=1 is required)
#  STORE_SMS_ON_RING=0: do not store the sms
#  STORE_SMS_ON_RING=1: store the sms
STORE_SMS_ON_RING=0

設定後は再起動を忘れずに。

slee-Pi 関連ライブラリ

4GPi関連ライブラリはインストールされていますが、slee-Pi関連ライブラリは同梱されてないので追加でインストールします。

sudo apt-get update
sudo apt-get install sleepi3-firmware sleepi3-utils sleepi3-monitor

SORACOM 接続

SORACOMに接続する設定を追加します。

sudo nmcli con add type gsm ifname "*" con-name soracom apn soracom.io user sora password sora

セキュリティ

ファイアーウォールにufwが同梱されています。デフォルトで wwan0とppp0が受信拒否になっています。これだと、SSH接続ができません。検証ということで一旦disableにします。(1敗)

sudo ufw disable

disableは再起動するともとに戻るので注意。(1敗)

ルーティング

RaspberryPiをwifiに繋いでいる場合はルーティングをきちんと設定しないと4GPiがうまく動きません。設定は結構大変なので、とりあえず動かす場合はwifiをoffにするのがおすすめです。

開発環境を整える

ここまでで、RaspberryPi, 4GPi, slee-Piが起動してSORACOMにも疎通ができています。SORACOMコンソールを確認するとオンラインになっています。

スクリーンショット 2021-02-23 17.29.23.png

SORACOM Napterを使うとLTE通信経由でRaspberryPiにSSH接続できます。RaspberryPiを目的の場所に設置した後も開発できます。SORACOMマジ便利。

Napter

SORACOM Napter を使うとSIMに対してSSHできるようになります。昔はこれができなくて修正のたびに現地に赴いたり、開発がとても大変でした。理想環境にRaspberryPiを設置して、自宅から開発ができるので、これは本当に便利です。

スクリーンショット_2021-02-23_16_53_13.png

接続したいSIMを選んでオンデマンドリモートアクセスを選択します。

スクリーンショット_2021-02-23_17_34_57.png

アクセス可能時間を選択します。無期限に開きっぱなしにはできないので、接続するたびに時間を決めてアクセスします。セキュリティ的に安心ですね。
ポート変更したり、アクセス元IPレンジ変えたりもできます。とりあえず繋ぐ分には無視でOKです。
TLSを有効にすれば、httpsサーバーを公開することもできるみたいです。
スクリーンショット_2021-02-23_17_43_08.png

SSHで接続できるようになりました。SORACOM側のportの値は都度変わります。サンプルが表示されますが、userでは接続できないので、piに変更します。

ssh -p 36792 pi@1-2-3-4.napter.soracom.io

スクリーンショット_2021-02-23_17_48_48.png

うまくいくとこんなメッセージがでてきます。🎉

SMS起動

ここまでで、RaspberryPiの遠隔開発ができるようになりました。しかし、電源が切れていたらどうしようもありません。SMSを送ってRaspberryPiを起動してみます。

ただし、スマホのSMSのように誰からでもSMSを遅れるわけではないです。公式サイトにあるように、同じオペレーター配下のSIM同士じゃないと送受信はでき内容です。

IoT SIM(plan01s)の SMS 機能を使用する | Getting Started | SORACOM Users

IoT SIM は同じオペレーター配下の SIM 同士で SMS の送信ができます。他のオペレーター配下の SIM や SORACOM 以外の SIM、plan-D などの特定地域向け IoT SIM とは SMS の送受信はできません。

slee-Piを使って電源のon/offをやってみます。とりあえずsudo poweroff で電源を落としておきます。

スクリーンショット 2021-02-23 18.24.07.png

SORACOMの画面で該当SIMを選んでSMSを送信します。

スクリーンショット_2021-02-23_18_24_52.png

本文によって受け取ったRaspberryPi側で処理を分岐できますが、今回は適当に入れました。

slee-piの赤いLEDが点いてRaspberryPiが起動します🎉

起動要因の確認

mechatrax/sleepi3-utils を使うと起動要因などを確認できます。

poweron : 電源接続が起動要因です。
watchdog : ウォッチドッグタイマのタイムアウトによる再起動が起動要因です。
alarm : リアルタイムクロックのアラーム発生が起動要因です。
switch : プッシュスイッチの押下が起動要因です。
extin : 外部入力の検出が起動要因です。
ri : RI 信号の検出が起動要因です。
restore : 電源復旧の検知が起動要因です。

$ sleepi3ctl -g wakeup-flag
ri

SMSの場合はriになるので、うまく動いています!

API経由でSMS呼び出し

上にも書きましたが、SMSは同じオペレーター配下のSIM同士でしか送受信できないので、利用が限られます。SORACOMではAPIによる呼び出しでSMSを利用することができます。
IoT SIM(plan01s)の SMS 機能を使用する | Getting Started | SORACOM Users

soracomのログインIDとパスワードでtokenを取得できます。

$ curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d "{\"email\": \"<ログインID>\",\"password\": \"<パスワード>\"}" "https://g.api.soracom.io/v1/auth"

こんな感じで返ってきます。(ほとんど見せれない)
スクリーンショット_2021-02-26_20_54_14.png

取得したapi-key,token SORACOMコンソールで確認できるIMSIを指定して、SMSを送信できます。

$ curl -X POST  -H "content-type:application/json" -H "X-Soracom-API-Key: <apiKey>" -H "X-Soracom-Token: <token>"  -d "{\"body\":\"<メッセージ>\"}" https://g.api.soracom.io/v1/subscribers/<imsi>/send_sms

IMSIはSIMの詳細ページのここにあります。
スクリーンショット_2021-02-26_20_59_05.png

こんな感じでmessageIdが返ってくれば成功です。

スクリーンショット_2021-02-26_21_00_39.png

API化することで、プログラムの中にRaspberryPiの起動を組み込むことが可能になります。

まとめ

RaspberryPiに4GPi,SORACOM,slee-Piを連携させることで、場所・電源・省エネなどの環境の幅が広がりました。次回はこれらを組み合わせて実用的なアプリケーションを作ってみたいと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9