FlashAirで、周囲のWiFiのアクセスポイントを検索して、そのログを取るソフトを作ってみた、という話の続き。
前回のものはBSSIDも記録しないといけないということを失念していたので、ちゃんとBSSIDも記録するように作り直してみた。
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=="BSSID" then
file:write(" BSSID,"..val.."\r\n")
elseif 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で無線LANのアクセスポイント情報のログを取るソフトを最近作っていたのだけど、そのものずばりの先例があったようだ。気づいてなかった。
・Lua: Geolocation支援スクリプト – FlashAir開発者向け非公式wiki
—
名古屋の大須電気街を歩いてログを取ってみた。街中なので、さすがにWiFiのアクセスポイントが多い。

あとは、このログにあるBSSIDとRSSIを使って、後処理で緯度経度を調べるというのを試してみるつもりだ。
Google WiFi GeoLocation APIは、昔ちょっと試したことがあった。
・Google WiFi GeoLocation APIを使って位置情報を表示する
しかし、今はこのAPIはGoogle Maps Geolocation APIに変わってしまっていて、使い方もだいぶ違ってしまっている。
緯度経度を求めるコードは作り直さないといけない。