WiFi接続用のQRコードをGoogle Spreadsheetで作成・管理する
自宅のWi-Fiルータやスマートフォンのテザリングなど、Wi-Fiは日常的に使用しますが、接続パスフレーズを複雑にすると入力が面倒ですし、かといって簡単すぎるパスフレーズはセキュリティ面で不安があります。
そこで、Wi-Fi接続用のパスフレーズ情報をGoogle Spreadsheetでリスト管理し、さらに接続用のQRコードを表示できるようにして、スマートフォンでの入力の手間を減らすことにしました。
主なポイント
- Google Spreadsheet は image() 関数により、指定URLの画像をスプレッドシートのセルに表示させることができます。
- Google Chart API には QR コードの画像を生成してくれるAPIがあります。このAPIではWi-Fi接続用のQRコードも生成できます。
- 上記2つを組み合わせると、Google SpreadSheetに入力したSSID、パスフレーズの情報からWi-Fi接続用のQRコードを動的に生成できます。
ただし Chart API はすでに非推奨なので、この方法がいつまで使えるかは分からない点に注意が必要です。
実装要件
- 個人用のWi-Fi接続管理メモとして使用することを想定します。
- スプレッドシート1枚に複数のWi-Fi接続設定を掲載します。特定のWi-Fi APの接続情報を他の方と共有するには不向きです。特定のSSID接続情報を他の方と共有する場合は、1シートに1つのAP情報だけを掲載するなどして運用すれば良いと思います。
実装サンプル
次のように、A列 = SSID、B列 = パスフレーズを入力するとC列 = QRコードが表示されるようにしてみます。
この QRコードはiOS,Androidのどちらでも利用できますが、読み取り条件に違いがあります。
iOSの場合はiOS 11以降のiPhone, iPad標準カメラアプリで利用できます。
Androidの場合は機種やAndroid OSのバージョンにより、複数の選択肢があります。
- GoogleアシスタントのGoogleレンズ機能を使用する。
- Androidの標準カメラアプリで読み取る
- Zing TeamのQRコードスキャナを使う
Googleアシスタントが搭載されている場合はこれを使いましょう。画面下に表示されるホームボタンを長押しするとGoogleアシスタントが起動します。ここでGoogleアシスタントと文字入力や音声認識でやりとりする代わりに、Googleレンズを起動してQRコードを撮影すればWiFiの接続がこなえます。
Androidの標準カメラアプリについては、機種によりQRコードのWiFI接続をサポートするものとしないものがあるようです。Google Pixelシリーズでは標準カメラアプリで読めましたが、Sharp SH-M05のカメラアプリはWi-Fi接続用のQRコードを単なる文字列として認識されてしまいます。
Android 9より古いOSでGoogleアシスタントが使えず、標準カメラアプリがQRコードによるWiFi設定をサポートしていない場合はZXing TeamのQRコードスキャナーが仕えます。これは多くの端末で汎用的に使えるので、機種ごとの違いを意識せずに使いたい場合に向くと思います。 play.google.com
Google SpreadsheetにQRコード生成する計算式を記入する
A2にSSID、B2にパスフレーズを記入しているとき、C2セルに次の計算式を入力するとWi-Fi接続のQRコードが生成されます。
=IF( AND(A2<>"",B2<>""), image("https://chart.apis.google.com/chart?cht=qr&chs=300x300&chld=L&choe=UTF-8&chl=WIFI:S:" & A2 & ";T:WPA;P:" & B2 & ";;") )
参考:Wi-Fi接続用のQRコードを生成するAPIのURL形式
Google Chart API に次のようにアクセスすると、Wi-Fi接続のQRコードが生成されます。
暗号化方式はWPA、SSID=TestAP、パスフレーズ=TestPassと記述しています。これらの文字列を変更すれば任意のWi-Fi接続のQRコードが生成できます。
注意事項
QRコードによるWi-Fi接続では、残念ながら WPA2-ENT などの企業ネットワーク向けでサポートされる暗号化方式のQRコードは規格化されていないようで、作成できません。
これらの接続設定を手作業での認証情報の入力なしに行いたい場合は、iPhoneの場合は Apple Configurator を用いて構成プロファイル化するのが良いと思います。