ルーターを通したSORACOM通信をしたいと思ったのですが、手元にSIM指せるルーターが無かったので、Raspberry PiとSORAOCM SIMを使ったWiFiルーターを自動構築できるテンプレートを作成しました。
Ansibleテンプレート
こちらで公開しています。
動かしてみる
せっかくなので動かしてみます。
以下のようにスマホをRaspberry Piのルーターに接続することで、SORACOM経由でLambdaを実行してみます。
環境構築手順
SORACOM Funk設定
Lambda準備
SORACOM Funkから実行するために、以下のような簡単なLambdaを準備しておきます。
import json def lambda_handler(event, context): return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!'), 'event': json.dumps(event), }
SORACOM Funk設定
SORACOM Funkで上記のLambdaを実行するように設定します。
Raspberry Pi をルーター化
Raspberry Pi ルーター準備
前提
- Raspberry Pi OSをインストールして、鍵認証でSSHログインできるようにしておきます
- こちらに記載されているスクリプトを利用しているので、これに対応するUSBドングルをRaspbery Piに指して利用します。
- Raspberry Pi 3 / 4では動作確認できました
今回利用するマシンは以下のような感じです。
Ansible実行
Raspberry Piのマシン準備ができたら、以下のようにAnsilbe適用してルーター化します。
# AnsilbeテンプレートをClone $ git clone https://github.com/yomon8/raspberrypi-soracom-router.git # Pythonのパッケージをインストール $ poetry install $ poetry shell # Raspberry PiのIPアドレスを設定 $ ROUTER_HOST_IP=xxx.xxx.xxx.xxx # WifIアクセスポイントとしてSSIDとWPAのパスフレーズを設定 $ SSID=raspberrypi $ WPA_PASS=abcdefgh # ansibleを実行 $ ansible-playbook -i ${ROUTER_HOST_IP}, -e ssid=${SSID} -e wpapass=${WPA_PASS} ./soracom_router.yaml
実行が完了しました。最後にOSの再起動が走ります。
確認テスト
Raspberry Piが起動してきたらWiFiルーターとして利用できるはずです。
手持ちのAndroidスマホからWiFiを確認してみるとSSIDで設定した rapsberrypi
のアクセスポイントが確認できます。
アクセスポイントに繋いでみて、SORACOM FunkのHTTPエンドポイントである http://funk.soracom.io
にPOSTリクエスト送ってみようと思います。テストにはRestlerというアプリ使ってみます。
以下のようにメッセージをPOSTしてみると、
無事にLambdaが実行されました。