software_development」カテゴリーアーカイブ

FlashAirで周囲のWiFiのアクセスポイントのログを取って歩いて、GoogleのGeolocation APIで緯度経度を求めた結果を地図にプロットしてみた

FlashAirで周囲のWiFiのアクセスポイントのログを取って歩いて、GoogleのGeolocation APIで緯度経度を求めた結果を地図にプロットしてみた。
前に書いた「FlashAirで、周囲のWiFiのアクセスポイントを検索して、そのログを取るソフトを作ってみた」という話の続きだ。

名古屋の大須の電気街の招き猫広場からスタートして、反時計回りに第一アメ横ビルの周辺の道を回って一周して歩きながらログを取ってみた。
そうやって取得したログ情報から、GoogleのGeolocation APIで緯度経度を求めた結果、このようになった。





名古屋の大須の地図の上に、縦長の四角形を描くように地図マーカーが並んでいる。
左下がスタート地点の招き猫広場だ。
そこから約30秒毎にログが記録されている。
ほぼ一定の速度で歩いたのだが、マーカーは等間隔になっていない。これはGeolocationの精度が出なくて位置がずれているためだ。
GPSほどの精度は出なくて20メートル~100メートルくらいのずれが生じているようだ。

大まかに位置が記録できるロガーになりそうだ。FlashAirが薄っぺらいので、薄くて小型なロガーを作るというのができそうだ。
使い道としては、ちょっと思いつかないのだが、ポケットに入れておけば大雑把に一日の行動が記録できるだろう。あと、小包とかを送るときに中にロガーを仕込んでおけば送られた経路とかを調べられそうだ。
続きを読む

libcurlを使ってGoogle Maps Geolocation APIを呼び出して、周囲のWiFiの情報から緯度経度を求めるソフトを作ってみた

libcurlを使ってGoogle Maps Geolocation APIを呼び出して、周囲のWiFiの情報から緯度経度を求めるソフトを作ってみた。
この間のGeolocation APIを使う話の続きだ。

Windows 10で動くものをVisual Studio 2017のC言語でプログラムを書いた。
以前に古いGeolocation APIで作ったソフトの焼き直し版だ。
続きを読む

Visual Studio 2017でlibcurlを使おうとして、libcurlのソースからビルドして動かした

Visual Studio 2017でlibcurlを使おうとして、libcurlのソースからビルドして動かした。

Google MapsのGeolocation APIを叩くために、curlコマンドから動かす代わりに、libcurlというライブラリを使って自分で書いたプログラムの中からAPIを使うというのをやりたい。
というか、前に既にやってた

しかしVisual Studio 2017だと古いlibcurlをリンクできなくてエラーになってしまう。最新のlibcurlを使う必要があるようだ。
続きを読む

Windows 10でGoogle Maps Geolocation APIを使ってみる

Windows 10でGoogle Maps Geolocation APIを使ってみる。

Windows 10のcurlを使った。

だいぶ以前にもGoogle Geolocation APIを試したことがあるのだが、APIが変わってしまった。
API Keyが必須になってしまっているので、取得しないといけない。
Google MapsのAPI v1の時代にAPI Keyを取得してあったのだが、古いAPI Keyは新しいAPIでは使うことができない。(できなかった)

まず準備として、API Keyを取得する。
Get API Key  |  Maps JavaScript API  |  Google Developers

英語だが特に難しいことは無かった。上記のGoogleのページのGET STARTEDというところから始めて、Google Cloud Platform Consoleというサイトでフォームに情報を埋めていけばAPI Keyを取得できる。
Google Cloud Platformは、Googleのクラウドサービスのことで、クラウドの計算資源とか各種アプリを利用することができるサービスだ。
Google Mapsの利用はクラウドサービスとはちょっと違うのだが、ユーザー管理とか課金のサイトを別々に作るのが面倒なのか、統合されているみたいだ。
クレジットカード情報も登録するので、ちょっと緊張するのだが、こちらが有料サービスに切り替えないかぎり課金は発生せず、無料分のサービスのみということなので、登録した。

次に、Google Cloud Platforn Consoleという設定などを管理するページで、API Keyを有効にするGoogle Mapsのサービスを設定する。
自分はGeolocation APIと、Static Maps APIを使うつもりなので、この2つのみでAPI Keyが使える設定にした。

API Keyは各ユーザー個人の固有のものなので、他に漏らさないように管理する。
続きを読む

Windows 10でcurlを使うには

Windows 10でcurlを使うには、特にWindows版のcurlを探してインストールとかをしなくても最初からcurlが使えるようになったらしい。

Windows 10のApril 2018 Updateから入っているのだそうだ。
WindowsのコマンドプロンプトからOS標準のsshやtarやcurlコマンドを使う そど


続きを読む

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

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で、周囲の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

続きを読む

Connect(); Japan 2018 (名古屋サテライト会場)に行ってきた

Connect(); Japan 2018 (名古屋サテライト会場)に行ってきた。

MicrosoftのConnect();という.NETやAzureなどのクラウド関係の新技術の発表イベントが、先日アメリカで開催されたのを受けて日本でその振り返り会のような忘年会イベントをやるということらしい。
東京、大阪だけでなく、名古屋でもサテライト会場でイベントが開催されるというので行ってみた。

続きを読む