【RotorHazard】ラズパイ3Bのホットスポット設定 (アクセスポイント化)

# 33. WiFiホットスポットにしてスタンドアロン運用ができるように！

全体設定やRotorHazardインストールもできたことと思いますので、基本的な設定を施したら当然お外へ持ち運びたくなるところかと思います。外部イベントや飛行練習会などの様々なシチュエーションで稼働させてみましょう。ですがそれにはネットワークに接続していない(WiFi等がない、またはご自身のテザリング環境がない)場合も考慮して、RotorHazard自身をホットスポット化し、そこにPCやスマホ各種をアクセスできるようにすることで自由な利用が可能です。

### 33-1. うほっ！最新Raspberry Pi OS (bookworm版)は非常にホットスポット化が簡単にぃ！

実は以前は色々と手を加えないといけなくて、ハードルは高かったものと思いますが、現在リリースしているRaspberry Pi OS (bookworm,64-bit) ※Debian12ベースの標準で搭載されるホットスポット機能が便利に使えるとのことです。詳しくは下記内容も同時にご確認ください。

https://www.raspberryconnect.com/projects/65-raspberrypi-hotspot-accesspoints/203-automated-switching-accesspoint-wifi-network

まずはホットスポットの簡単運用が可能となる **AccessPopup** スクリプトをサイトからダウンロードします。
```
curl "https://www.raspberryconnect.com/images/scripts/AccessPopup.tar.gz" -o AccessPopup.tar.gz
```
tar.gz形式の圧縮なので、ダウンロードした自分のホームディレクトリで解凍します。解凍できたら、そのフォルダ以下へ移動します。
```
tar -xvf ./AccessPopup.tar.gz
cd AccessPopup
```
その中にシェルスクリプトがあるのですが、この後インストールを伴うため管理者権限で実行します。
```
sudo ./installconfig.sh
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/e9e67c5f-6a7d-668f-7207-2347559b29db.png)
スクリプトが実行されると、上記のようにメニューが出ます。

### 33-2. AccessPopupスクリプトのインストールと設定

それでは、インストールと設定を進めていきましょう。スクリプトに書いてあるメニューオプションの意味は下記のような感じです。

### Menu Options:
**1 = Install AccessPopup Script**
AccessPopupスクリプトをインストールし、2分間隔でWiFi接続をチェックします。(基本動作は、事前に自宅や定常場所で提供されるWiFi環境範囲内のネットワークに参加、それ以外はRotorHazard自身がホットスポットとなる設定です。これを2分間隔でチェックします。)

**2 = Change the Access Points SSID or Password**
アクセスポイントとなる初期値のWiFi名称(SSID)は **AccessPopup**、パスワードは **1234567890** となっていますが、このオプションを選択し、パスワードもしくは両方の文字列を変更してください。(パスワード文字列はぜひ必須で変更ください。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/177fe010-e9e2-6567-17c8-09c82f09ddb1.png)

**3 = Change the Access Points IP Address**
アクセスポイントのIPアドレスは **192.168.50.5/24**です。このオプションを用い、10.0.#.#または192.168.#.#等、新しいIPアドレスに変更できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/50186198-57f6-7e78-c7e8-6814312d07c1.png)

**4 = Live Switch between: Network WiFi <> Access Point**
このオプションを選択すると、次の再起動までRaspberry Piをアクセスポイントとし続けるか、提供範囲内のWiFiネットワークに切り替えるかを、オンデマンドで切り替えることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/fe7fa618-ab36-897f-b1f2-4647d3277d20.png)

**5 = Setup a New WiFi Network or change the password to an existing Wifi Network**
このオプションは、近くのローカルWiFiネットワークをスキャンし、新しいWiFiネットワークへ接続したり、既存プロファイルのパスワードを変更したりすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/5e703cc6-d0a5-6b93-98af-5d1f5e9d8216.png)

**6 = Change Hostname**
システムのホスト名を変更し、IPアドレスではなくホスト名で接続できるようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/d090e896-a9e0-f531-00e5-1fa26fb8f432.png)

**7 = Uninstall AccessPopup**
AccessPopupスクリプトをアンインストールし、Raspberry Piをデフォルトの無線LAN設定に戻します。

**8 = Run AccessPopup now. It will decide between a suitable WiFi network or AP**
このオプションは、実行後すぐに接続可能なWiFiネットワークへの接続、もしくはアクセスポイント化を実施します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/22cd648a-7778-a1cc-a2bb-d50f367f0264.png)

**9 = Exit**

項番【 **3** 】【 **6** 】のIPアドレス変更、ホスト名変更は、まずは実施しなくても良いかと思います。実際に順番に番号を入力してEnterし、設定を進めていってください。スクショを貼りましたが、インターフェイス画面はあまり意識せずとも直観で対応できると思います。

### 33-3. GUI側でも設定チェックをしてみよう！

先に紹介したスクリプトの手順サイトにも記載されていますが、GUIで実施できる場合はわざわざこのスクリプトを導入しなくても手動で同じ設定ができます。逆を言いますと…このスクリプトを実行することで、コマンドウィザードにてローカルWiFI設定、ホットスポット設定を半自動化でプロファイル作成することができる！という訳なのです。
当然スクリプト側で反映させれば、そちらの値で覚えている文字列が反映されますし、GUI側で個別に設定すれば、その設定が活きになります。なので設定し直しなどを行う場合には情報がお互い食い違わないように気を付けてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/2becd838-af78-c38c-871d-0d0836bf00cf.png)

* **接続を編集する** を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/fda4810d-a074-b060-3c27-a8e720bea231.png)

* **Wi-Fi ⇒ AccessPopup** をクリック 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/dd85e02f-3d4a-003a-7e6d-60e079b164bf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/db5e123f-1f5f-5de5-f015-f3251c9a960c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/1120ae6c-5af7-4b05-e90b-330f6fdb5a2a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/a0b2f777-2753-b92b-b104-acfdac0dd99f.png)

### 33-4. あれ？なんかおかしい…PCはOKなのに、スマホは(Android、iPhoneどちらも)NG！(解消方法あり)

**AccessPopup** で設定をしてSSID、パスワードを指定し、再起動もするのですが、PC(Windows10)はOKなのに、Android、iPhoneのスマホはNGという症状に見舞われました。PCの設定を見てみると、2.4GHz帯 IEEE802.11g/n接続、暗号化はWPA2-Personalになります。これといってNGの環境ではないものかと。
接続の挙動ですが、Androidは接続を試みますが、一瞬 **接続済み** になるものの再度接続をしにいく…フラップ(繰り返している)状況で最終的に **無効** 表示になります。iPhoneは接続して直ぐに **パスワードが違います** のポップアップがっ！PCがOKなのに何故このような事象が起きる？という感じでした。

まあ、ここいらは長年の勘所？で、スクリプトのウィザード中に入力するパスワード文字列がUTF-8ないしEUC。あそこらへんの文字コードが悪さしていてスクリプト内文字列をOS側のプロファイルに正常に渡せていないかしら？と思い、GUI側であえて一度パスワード文字列を削除、GUI側で同じ文字列を入れ込んで保存。そしてOS再起動をしました。
### うんっ！OKｗ
まあ、こんなもんかとｗｗｗ もしかしたら、そのうちにバグとしてどなたかが報告してくれることを期待しますｗ っということで、これでPC、Android、iPhone(iOS)とちゃんとRotorHazard BOXへのホットスポット・アクセスが可能となり、
### https://192.168.50.5:5000
でRotorHazardへのログインができました。そのため、例えばイベント会場でRotorHazardの一般ユーザログイン情報を共有すると、リザルトや実際のレースをリアルタイムで提供できたり、事前に仕込んだ定型アナウンスや効果音なども手元のスマホで聞くことができるようになったりします。
多分、他のプラグインとかも絡ませると色々遊べるのではないか？とは思うのですが、その実用方法に関してはぜひ皆さんで良きアイディアを考えてみてくださいませー。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500291/43b2025f-be95-2945-64b7-9eac8bc3d6d3.png)
※こちらはAndroidスマホでの表示画面です。iPhoneもほぼ同じ表示になります。