##概要
自宅ではWiFiのクライアント動作し、WiFiのない環境では自らWiFiのサーバ(アクセスポイント)になることで、いつでもラズパイにアクセスしたいと思い、以前、別の記事でWiFiドングルを2つ接続することで実現しました。
しかし、Zeroだと、USBポートも少ないし、消費電力的にも厳しいと思い、(手動ですが)簡単に切り替えられる仕組みを考えてみました。
自宅の環境(例えば、ファイルサーバ、Webサーバ等)をモバイルでも使用(公開)できて便利ですよ。
##構成イメージ
自宅
Wifiルータ(アクセスポイント)
└ Raspberry Zero W(WiFiクライアント:wlan0:192.168.1.2)
└ 端末(Wi-fiクライアント:192.168.1.100~200)
外出先
Raspberry Zero W(アクセスポイント:wlan0:192.168.2.1)
└ 端末(Wi-fiクライアント:192.168.2.100~200)
##自宅設定(WiFiモード)
それぞれだと思うので参考程度に。。
$ sudo vi /etc/network/interfaces
・・・
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
・・・
network={
ssid="使用するSSID"
psk="上記SSIDのパスワード"
}
##外出先設定の構築(APモード)
外出先設定を上書きしてしまうので、まずはバックアップしてから編集し、同様にバックアップ。
$ sudo cp -p /etc/network/interfaces ~/wifi_interfaces
$ sudo vi /etc/network/interfaces
・・・
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.2.1
netmask 255.255.255.0
$ sudo cp -p /etc/network/interfaces ~/ap_interfaces
アクセスポイントとDHCPサーバの環境構築は別の記事参照。
違いはwlan1でなくwlan0。
##切替
現在APモードとして動作している前提で、WiFiモードに切り替えます。
$ sudo systemctl disable hostapd
$ sudo systemctl disable isc-dhcp-server
$ sudo cp -p wifi_interfaces /etc/network/interfaces
$ sudo reboot
再起動後、WiFiモードになっていれば成功。次はその逆。
$ sudo systemctl enable hostapd
$ sudo systemctl enable isc-dhcp-server
$ sudo cp -p ap_interfaces /etc/network/interfaces
$ sudo reboot
再起動後、APモードになっていれば成功。
もう少し楽するため、スクリプト化。
$ vi ~/netch.sh
#!/bin/bash
if [ "$1" == "ap" ]; then
sudo systemctl enable hostapd
sudo systemctl enable isc-dhcp-server
sudo cp -p /etc/network/interfaces /etc/network/interfaces.bak
sudo cp -p ap_interfaces /etc/network/interfaces
elif [ "$1" == "wifi" ]; then
sudo systemctl disable hostapd
sudo systemctl disable isc-dhcp-server
sudo cp -p /etc/network/interfaces /etc/network/interfaces.bak
sudo cp -p wifi_interfaces /etc/network/interfaces
else
echo "abort."
exit
fi
cat /etc/network/interfaces
read -p "reboot ok? (y/N): " yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
sudo reboot
WiFiモードにする場合
$ ./netch.sh wifi
・・・
reboot ok? (y/N):y
APモードにする場合
$ ./netch.sh ap
・・・
reboot ok? (y/N):y
##応用
Raspberry Pi Zero W は Bluetooth が使用できるので、Bluetoothリモートシャッターで写真撮影を参考に、多少改造すれば、ボタン操作での切り替えも可能ですね。