FlashAirで、周囲のWiFiのアクセスポイントを検索して、そのログを取るソフトを作ってみた – その1

FlashAirで、周囲のWiFiのアクセスポイントを検索して、そのログを取るソフトを作ってみている。

とりあえず、一定時間毎に、時間と、SSIDとRSSIを記録するというのを作ってみた。
ログを取ったあと、そのログを解析して、無線AP情報から緯度経度を推定するサービスと連動させて移動の軌跡を出せるかなあ、とか考えている。

コードはLua言語で書いた。FlashAir W-04で動かしている。
test.luaというファイル名でFlashAirのSDカードストレージのルートフォルダーに入れる。

local file = io.open("/log.txt", "a")
file:write("WiFi SSID Logging data\r\n")
file:write("---\r\n")
file:close()
fa.SetCurrentTime(0x2821,0)
hh=0
mm=0
ss=0
sleep(100)
while true do
	file = io.open("/log.txt", "a")
	file:write("time , "..hh..","..mm..","..ss.."\r\n")
	count = fa.Scan()
	for i=0, (count-1), 1 do
		ssid, other = fa.GetScanInfo(i)
		if ssid ~= "" then
			file:write("SSID,"..ssid.."\r\n")
			for key, val in pairs(other) do
				if key=="RSSI" then
					file:write(" RSSI,"..val.."\r\n")
				end
			end
		end
	end
	file:write("---\r\n")
	file:close()
	fat_time = lfs.attributes("/log.txt")
	hh = bit32.band (bit32.rshift(fat_time.modification, 11),0x1F);
	mm = bit32.band (bit32.rshift(fat_time.modification, 5),0x3F);
	ss = bit32.band (fat_time.modification,0x1F)*2;
	sleep(1000*30)
end

FlashAirのSD_WLANという名前の隠しフォルダーの中にCONFIGというファイルがあるので、CONFIGを編集し、

LUA_RUN_SCRIPT=/text.lua

を追加し、電源投入時に上記のスクリプトが自動で実行されるようにする。(参考)

その他、CONFIG内で、WiFiアクセスポイントに自動で接続するような設定をしている場合は、それを解除/削除しておくこと。

FlashAirをAirioというテスト用基板に挿して、FlashAirに電源を供給した。電源はUSBコネクタをモバイルバッテリーにつないで供給した。
Airioでなくても、何らかの電源供給用の回路があれば動かせるだろう。

電源を入れたら、あとは自動でFlashAirがログを取ってくれる。

ログは、log.txtというファイルに書き出されていて、次のようになっている。

時間は、スタート時を0時0分0秒として数字3つが時間ともに増えて記録される。上記のコードだと30秒ごとにしてある。

あとは、このログにあるSSIDとRSSIを使って、後処理で緯度経度を調べるというのを試してみる予定だ。
Google WiFi GeoLocation APIは、昔ちょっと試したことがあった。
Google WiFi GeoLocation APIを使って位置情報を表示する

前にやったGeoLocation APIのことを、読み返して思い出したが、
BSSIDとRSSIを使わないと駄目そうだ。
なので、上記のログ取り用のluaのコードはBSSIDも保存するように改造しなくてはならない。

つづく。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

× 4 = 8