コンテンツへスキップ

wi-fiがなくても安心!ラズパイとIoTデバイスで家族を見守る方法

概要

スイッチボットのセンサーとハブを使ってリモートで通知する方法をまとめました。
ランニングコストを最安にするためにsoracom airとラズパイでwi-fiルーターを構築します。通信料は月300円程度になる見込みです。
今回はSwitchBot 開閉センサーがドアの開閉を検知し、リモートのアプリに通知が来るようにします。
通信のために使っているハブミニとラズパイは電源接続後、自動で起動します。再起動した時にそれぞれ自動で再接続してくれるので、停電後の復旧も安心です。

構成

ラズパイ(+AK-020)とハブミニ
開閉センサー(仮固定)

スイッチボットアプリのセットアップ

詳細はスイッチボットアプリのチュートリアルを参照してください。
大まかな手順は以下です。

  • アプリをスマホにインストール
  • ユーザー登録後、アプリにログイン
  • スマホからbluetoothでセンサー、ミニハブと接続
  • センサーをハブミニに接続
  • ミニハブをwi-fiに接続(後述のAP設定後)
  • シーンを設定(センサーが検知したらアプリに通知する)
センサーの状態(アプリ)
シーン設定(アプリ)
ハブをAPに接続(アプリ)AP設定後

動作

  • センサーがドアの開閉を検知し、リモートにあるアプリに通知が来る。
  • ハブミニまたはラズパイが再起動後、自動で再接続する。
  • ハブミニは接続後、白く点灯する。問題があると点滅する。
  • データ通信端末は接続後、短く緑色に点滅する。接続に問題があると赤く点灯する。
  • soracomのオンデマンドリモートアクセスを使って、ラズパイにリモートからsshログインできる。
通知画面(アプリ)
履歴画面(アプリ)

ラズパイAPのセットアップ

  1. OSをSDカードに書き込み
    参照:https://www.raspberrypi.com/software/
    Raspberry Pi Imagerを使用して書き込みました。
    初期設定でssh有効、ユーザー&パスワード、wifi設定を含めることができます。
  1. sshログイン
    ラズパイをディスプレイに接続して、ipアドレスを確認します。
    ターミナルでsshログインします。
ssh -p 22 user@192.168.1.100
  1. パッケージアップデート
sudo apt-get update
sudo apt-get upgrade
  1. dhcpcd, dnsmasq, hostapdをインストール
sudo apt-get install dnsmasq
sudo apt-get install iptables
sudo apt-get install hostapd
  1. soracomのインストール
    参照:https://soracom.jp/recipes_index/4171/

初期設定

curl -O https://soracom-files.s3.amazonaws.com/setup_air.sh
sudo bash setup_air.sh

初期設定後、データ通信端末を繋いだ状態だと3G回線が使用されます。

  1. オンデマンドリモートアクセス
    soracomのコンソールからオンデマンドリモートアクセスを有効にする。
ssh -p 12453 18-180-68-35.napter.soracom.io -l pi
  1. dhcpcd, dnsmasq, hostapdの設定ファイルの変更

dhcpcdの設定

interface wlan0
static ip_address=192.168.11.1/24
nohook wpa_supplicant

dnsmasqの設定

interface=wlan0
dhcp-range=tag:wlan0,192.168.11.2,192.168.11.127,24h
dhcp-option=tag:wlan0,option:router,192.168.11.1

hostapdの設定

ssid=[ssid]
wpa_passphrase=[password]
interface=wlan0
country_code=JP
driver=nl80211
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
DAEMON_CONF="/etc/hostapd/hostapd.conf"
  1. サービス起動
rfkill unblock wifi

sudo systemctl restart dhcpcd

sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
  1. ルーティング

以下を有効化する

net.ipv4.ip_forward=1

iptablesを追加する。

sudo iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

設定ファイルに書き込む。

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

起動時に設定ファイルからiptablesを復元する。

iptables-restore < /etc/iptables.ipv4.nat

再起動してアクセスポイントを起動する

設定が上手くいっていれば外部からAPに接続できるようになります。

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です