SORACOM SIMでルーター化したRaspberry Piを構築するAnsibleテンプレート

ルーターを通したSORACOM通信をしたいと思ったのですが、手元にSIM指せるルーターが無かったので、Raspberry PiとSORAOCM SIMを使ったWiFiルーターを自動構築できるテンプレートを作成しました。

Ansibleテンプレート

こちらで公開しています。

github.com

動かしてみる

せっかくなので動かしてみます。

以下のようにスマホを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が実行されました。

参考

qiita.com

qiita.com