スマモッチャーの設定③:Wifiルーターへの接続

2019年10月30日水曜日

IPカメラ

t f B! P L
スマモッチャーはアクセスポイントとして動作しています。
そのためカメラの動画を閲覧するためにはPCやスマホをスマモッチャーにWifi接続し直さないといけないので不便です。
さらに”Key”が設定されていないので誰でもアクセスし放題となり問題です。
ということでスマモッチャーのWifiアクセスポイント機能を停止し、自宅で使用している
Wifiルータへクライアント接続してみたいと思います。

[参考]

スマモッチャーは起動直後にカードスロットにセットされたMicroSDカード内にある「debug_cmd.sh」を実行するようです。非公式modもこれを利用しています。
同じようにこれを利用してWifiルーターへの接続設定を追加します

Wifiアクセス設定手順

1.セキュリティーキーの暗号化

Wifiルーターに接続するためのキーを暗号化して設定する必要があります。
LinuxのPCで、「wpk_passphrase」を使用し、接続したいWifiルーターのSSID・パスフレーズの暗号文を生成します。
下記コマンドの結果をコピーしておきます。
wpk_passphrase <対象のSSID> <パスフレーズ(Key)>

2.スマモッチャーにtelnetまたはsshで接続

PCから、「ssh root@<スマモッチゃーのIPアドレス>」等を実行します。

3.設定ファイルの作成

設定ファイルを下記コマンドでSDカードにコピーします。
cp /tmp/wpa_supplicant.conf /media/opt/


4.パスフレーズの追記

「vi」を使用し「wpa_supplicant.conf」に「wpk_passphrase」の結果を追記します。

5.自動接続のためスクリプト作成

wifiアクセスポイントに接続するためのシェルスクリプト「connect_wifi.sh」をSDカード内に作成しました。
touch /media/opt/connect_wifi.sh
chmod +x /media/opt/connect_wifi.sh
vi /media/opt/connect_wifi.sh

「connect_wifi.sh」の内容は以下のとおりです。
sleep 30s
/home/ap/stop-ap.sh
wpa_supplicant -B -iwlan0 -c /media/opt/wpa_supplicant.conf
ifconfig wlan0 192.168.1.70
ntpd -q -p 192.168.1.1

作成したこの「connect_wifi.sh」は非公式modの「debug_cmd.sh」から呼び出す方針です。
しかし、Wifiアクセスポイントを起動する「/home/ap/start-ap.sh」が一番最後に実行されるようなので、最初に30秒の待ち時間をもうけることでWifiアクセスポイント設定の後にWifi接続を実行します。
2行目の「stop-ap.sh」は実行しないとDHCPサーバーが起動したままなので、そのままWifiルーターに接続すると自宅内Lanでトラブルの元となります。
3行目でWifiルーターへ接続し、4行目でスマモッチャーのIPアドレスを設定しています。
デフォルトゲートウェイは指定していないため、LANより外のインターネットには接続できませんが、漏洩対策になるのでかえって良いと思います。
5行目ではついでにntpで時刻合わせの設定も追記しておきました。

6.Wifi接続実行の呼び出し設定 

「debug_cmd.sh」に「connect_wiri.sh」を呼び出す行を追記します。非同期の並列実行させたいので「&」を付けます。
 スマモッチャーを起動したままssh経由で「debug_cmd.sh」を編集しても反映されなかったので別のLinuxノートPCで作業しました。

vi /media/SD-Card/debug_cmd.sh

以下を最終行に追記します
/media/opt/connect_wifi.sh &


概念的には以下のようなプロセスで設定されるのでスマモッチャーの起動順序による制限を回避してWifiアクセス設定することを狙っています。
  1. スマモッチャー起動後「debug_cmd.sh」が実行される
  2. 「debug_cmd.sh」から「connect_wiri.sh」を非同期で呼び出す
  3. 「connect_wiri.sh」の実行を「sleep 30」で一時停止しておく
  4. スマモッチャーの起動プロセスが進行する。その中でWifiアクセスポイントの起動が行われる
  5. 非同期で実行されながら30秒停止していた 「connect_wiri.sh」の残りの処理を実行し、Wifiアクセスポイントを停止してWifiクライアントとして接続実行する。

以上の設定をしたMicroSDカードをセットしたスマモッチャーを起動すると、Wifiルーターに接続され、自宅LAN内経由で接続することだできます。 Wifiルーターに接続するためのスクリプトはMicroSDカード内に保存しているため、カードを挿入しないで起動するとノーマルの状態で起動するのでスマートだと思います。

Translate

QooQ