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

Google Maps Static API v2を使ってみた

Google Maps Static API v2を使ってみた。

Maps Static APIは、地図の画像を画像ファイルとして取得するためのAPIだ。

昔、古いAPIでStatic APIをちょっとだけ使っていた。API v1の時代だ。
しかし、2009年に終了してしまっていて、今では旧APIを叩いても地図の画像を得られない。

続きを読む

WiFi機器の電波の強度のRSSIの値が、対数(dBm)の場合と0~100%の場合があって紛らわしい (FlashAirでちょっと悩んだ)

WiFi機器の電波の強度のRSSIの値が、対数の場合と0~100%の場合があって紛らわしい。

Windows 10で、ノートPCなどのWiFi機能を内蔵している場合、コマンドラインから
netsh wlan show all
と入力することで、WiFiの状態を調べることができ、周囲にあるWiFiのアクセスポイントの情報も得ることができる。
この場合、それぞれのアクセスポイントの電波の強度がパーセント表示されている。

このように周囲のWiFiのアクセスポイントを情報を調べた場合、電波の強度はRSSIという値として得られる。

RSSIとして表示される値というのは実装によって異なるらしい。基本的には数字が大きい方が強い電波の受信強度を表すようになっているものらしい。
RSSIについて – IBS Japan
続きを読む

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

続きを読む