SSIDとパスワードの変更
無線LANでやりとりされるデータを暗号化して安全に通信するために、 ネットワークパスワードを独自のものに変更することが望ましいでしょう。
また、FlashAirの無線LANを識別する名前
(SSID) も、 他の人のFlashAirなどの無線LANと区別しやすいわかりやすい名前に変えておくとよいでしょう。
このチュートリアルでは、FlashAirのSSIDとネットワークパスワードを取得および設定する方法について解説します。
現在の設定を読み込んで表示し、それを変更することができるウェブアプリを作成します。
FlashAirのSSIDとネットワークパスワードを取得するには command.cgiを、 設定するには config.cgiを使用します。
なお、ステーションモードではネットワークパスワードの取得ができません。 本チュートリアルは、アクセスポイントモードにて学習ください。
マスターコード
FlashAirの設定を変更する場合には、マスターコードという設定変更専用のパスワードが必要です。
SSIDとパスワードは、誤って変更すると無線LAN接続ができなくなってしまう、重要な情報です。
そのため、マスターコードを管理者だけの秘密にしておくことで、変更を制限することができる仕組みになっているわけです。
標準のブラウザユーティリティやアプリを使った場合、 マスターコードには、初めて使うときに設定作業を行ったPC、またはスマートフォンのMACアドレスが使われます。
このサンプルプログラム中でもMACアドレスをマスターコードとして使用することとします。
以下、本チュートリアルでは、 あらかじめPC、またはスマートフォンのいずれかを用い、 初期設定は完了して、そのデバイスのMACアドレスがマスターコードとして設定されているものとします。
また、初期設定に使ったデバイスから操作するものとします。
画面レイアウトの作成
これまでと同様、JavaScriptを読み込む部分のほか、 マスターコード(MACアドレス)、SSID、ネットワークパスワードを表示する部分と、 変更した設定を反映するためのボタンを用意しています。
本チュートリアルでは、わかりやすいようにマスターコード(MACアドレス)を画面に表示していますが、 セキュリティ上、表示すべきでないでしょう。 同様に、パスワードも
********
などと表示するのが良いでしょう。
作成したファイルは
/SD_WLAN/Config.htm
として保存します。
/SD_WLAN/Config.htm
<!doctype html>
<html>
<head>
<title>FlashAir</title>
<meta charset="UTF-8">
<title>Flash Air Configuration</title>
<script type="text/javascript" src="/SD_WLAN/js/jquery.js"></script>
<script type="text/javascript" src="/SD_WLAN/js/config.js"></script>
</head>
<body>
<div id="header">
<h1>header</h1>
</div>
<hr>
<div><a href="/">Back to TopPage</a></div>
<div id="formarea">
Mastercode<br>
<span id="mastercode"></span><br>
SSID<br>
<input name="appssid" id="appssid" type="text" value="" maxlength="32" /><br>
Password<br>
<input name="appnetworkkey" id="appnetworkkey" type="text" value="" maxlength="63"/><br>
<button id="submit">submit</button><span id="result"></span>
</div>
<hr>
<div id="footer">
footer
</div>
</body>
</html>
-
18, 20, 22行目
デバイスのマスターコード(MACアドレス)、SSID、ネットワークパスワードを表示または編集するための領域です。id
にJavaScriptからアクセスするための名前を設定しています。 -
22行目
type="password"
とすれば、********
などと文字がそのまま表示されなくなります。
取得、表示、変更を行うコードの実装
ページの読み込み完了時にcommand.cgiを呼び、 デバイスのマスターコード(MACアドレス)、SSID、ネットワークパスワードをそれぞれ取得します。
ボタンクリック時にconfig.cgiを呼び出し、新たな設定値を送ります。 成功すると
SUCCESS
が、失敗すると
ERROR
が返ってきますので、それを画面に表示します。
/SD_WLAN/js/config.js
// JavaScript Document
function getMasterCode(){
var url="/command.cgi?op=106";
$.get(url,function(data){
$('#mastercode').text(data);
mastercode=data;
});
}
function getSSID(){
var url="/command.cgi?op=104";
$.get(url,function(data){
$('#appssid').val(data);
});
}
function getAPPNETWORKKEY(){
var url="/command.cgi?op=105";
$.get(url,function(data){
$('#appnetworkkey').val(data);
});
}
function setParams(){
var datetime = new Date();
var url="/config.cgi?MASTERCODE="+mastercode
+"&APPSSID="+$("#appssid").val()
+"&APPNETWORKKEY="+$("#appnetworkkey").val()
+"&TIME="+datetime.getTime();
$.get(url,function(data){
$('#result').text(data);
});
}
//Document Ready
$(function() {
getMasterCode();
getSSID();
getAPPNETWORKKEY();
$("#submit").click(setParams);
});
-
2-8行目
/command.cgi?op=106を使用してデバイスのマスターコード(MACアドレス)を取得し、画面に表示しています。 また、変更する際に使うのでmastercode
という変数に保存しています。 -
9-14行目
command.cgi?op=104を使用してSSIDを取得し、画面に表示しています。 -
15-20行目
command.cgi?op=105を使用してネットワークパスワードを取得し、画面に表示しています。 -
21-30行目
編集されたSSIDとネットワークパスワードをFlashAirに設定する部分です。
config.cgiを使用します。
ブラウザがキャッシュを使わずに確実にCGIコマンドが発行されるよう、TIME
パラメータに現在時刻を付加して、毎回異なるリクエストを生成しています。 -
36行目
ボタンがクリックされたときに、設定を反映する関数(setParams()
)を呼び出す設定を行っています。
実行結果
FlashAirに無線LAN接続したPCまたはスマートフォンのブラウザで確認してみましょう。 ブラウザのURL入力ボックスに下記のように打ち込みます。
http://flashair/SD_WLAN/Config.htm
現在の設定が表示され(下図・左)、値を変更して
submit
ボタンを押すと設定変更を行います。 うまくいけば
SUCCESS
と表示されます(下図・右)。 なお、設定変更CGIコマンドを実行すると、無線LAN接続が切断されます。変更後のSSIDでつなぎ直しましょう。
サンプルコード
web_tutorial_06.zip (2KB)
このサイトのサンプルコードは二条項BSDライセンスで提供されています。