19. dubna 2011

Sledujte online wifi tramvaj na mapě/twitteru - vytvořil jsem ji totiž API (mashup)

Mashup mého života - by mohl znít podtitul. A proč právě tak? Protože jsem spojil naprosto nespojitelné a podíval se na dvě nesourodé části odlišným pohledem. Nakonec se podařilo. Dokážu sledovat kudy jezdí tramvaj!

Na vše používám tyto technologie:

  • Google Gadgets API
  • Google Spreadsheet
  • Google Maps API
  • Google Reverse Geocoding
  • Twitter API
  • "Tramvaj API" :-)

A co to umí ?

V pravidelných intervalech zjišťuji jaká je GPS poloha tramvaje, pokud tramvaj popojela (více o fungování níže), tak uložím nové GPS údaje. Ty pak překreslím tady do té mapy

(mapu budu vylepšovat - chystám se přidat čas kdy byla naposledy viděna)

Zároveň posílám adresu na Twitter, takže sledujte účet @wifitramvaj
Historie
Poprvé mě myšlenka napadla po přednášce Michala Šrajera na VŠE. Konkrétně na afterparty, kde jsem si spojil starší článek na Živě.cz kde @jakubcizek popisoval jak je možné zjistit polohu wifi routerů. V tu chvíli mě napadlo monitorovat vozy Student Agency a když jsem s radostí sdílel přísedícim nápad, jejich reakce byly více než chladné (či méně než horké). Nápad jsem nechal uzrát a když se v Praze objevila Wifi Tramvaj, můj cíl byl jasný - odchytit ji (už to je samo o sobě výzvou), zjisti adresu Wifi routeru a pak doufat že má teoretická úvaha bude fungovat.


Jak to funguje

1) Tramvaj číslo 17 má wifi připojení, které je dostupné přes Access Point. Každé takové AP je jednoznačně identifikováno.
2) Obecně fungují mobilní Google Mapy tak, že při připojení se zjistí zda na zařízení (mobilu) je zapnutá geolokace. Pokud ano, tak se zpět odešle GPS souřadnice. Cílem je tak přesnější zaměření. Představte si že se připojíte v kavárně se svým notebookem (bez GPS přijmače) a ten Vám ukáze na mapě kde jste - někdo před Váma se již připojil a odeslanou ten identifikátor společně s polohou
3) Předminulý týden jsem si zjistil jedinečný identifikátor tramvaje (dejme tomu např. 11-22-33-44-55-66)
4) V pravidelných intervalech (zatím zhruba každou hodinu) zasílám dotaz na adresu http://www.google.com/loc/json, kde se ptám na souřadnice. Tělo dotazů vypadá takto

{
  "version":"1.1.0",
  "wifi_towers":[
    {
      "mac_address":"11-22-33-44-55-66"",
      "ssid":"UNKNOWN",
      "signal_strength":0
    }
  ]
}

a dostávám GPS.
více v článku Hackujeme Google: vím, kde je tvůj Wi-Fi router

Zároveň ještě provádím reverzní geocoding, abych dostal adresu v "lidském tvaru" :)

5) Pokud tramvaj popojela (a někdo se připojil se zapnutou GPS), tak dostávám nové údaje
6) Vše zobrazuji realtime na Google Mapě výš a ihned zasílám na Twitter (připomínám @wifitramvaj :)

Má to smysl?
Ano, určitě ano. I kdyby se to používalo minimálně, opět jsem si zkusil něco nového a zajímavého. Představte si to - dokázal jsem si vytvoři vlastní API Tramvaje, není to cool? Je, že? :) Navíc předpokládám že časem se bude tramvají vozit více lidí, kteří si zapnout Wifi/GPS a budou se koukat na mapy, takže ihned mám data - od kohokoliv, nemusí to být geek aby to ihned posílal na Twitter. Může to být klidně cizince, který se ihned připojí. Využívám crowd lidí.. Krásné a mazané. Cool & sexy ;-)

Pište komentáře, nápady, návrhy. Pokud často jezdíe Student Agency hurá, můžeme to rozjet více :)

Pokud se Vám článek líbil, ocením pokud ho nasdílíte či mě začnete sledovat na twitteru @codeas



Zajímá tě více?

12 komentářů:

  1. Pěkný nápad, na druhou stranu je pěkně děsivý, jak snadno jde zjistit poloha nějakého objektu. Mobily mají taky MAC adresu, že ano...

    OdpovědětVymazat
  2. Kdysi jsme v rámci jednoho školního projektu (ukázka použití OSGi v praxi) nasnímali trasy všech linek Plzeňských tramvají. Ty jsme pak je v reálném čase zobrazovali na Google mapách.

    Tedy přesněji, věděli jsme podle jízdního řádu kdy odjíždějí z točny a pomocí záznamníku trasy v GPSce (např. QStarz BT-Q1200 Ultra Solar) jsme měli nasnímanou polohu po 15 sekundách. To by se teoreticky dalo použít i tady a dále zpřesňovat polohu přes wifi.

    OdpovědětVymazat
  3. Studentem jezdím několikrát do měsíce, takže myslím, že tam ten pokus má taky smysl. Už jen třeba pro počet linek. Nicméně zjistit MAC všech AP bude asi složitější...

    OdpovědětVymazat
  4. Ahoj, moc pěkné! Kdybys to chtěl mít opravdu (skoro) LIFE, tak v Helsinkách využívají systém, který bys s tím tvým mohl zkombinovat. Tramvaj se v každé stanici zahlásí staničnímu snimači, takže jednou za 1-3 minuty znají její přesnou polohu. Zbytek dopočítávájí intrapolací podle toho, jak rychle taková tramvaj průměrně popojíždí, a ukazují v mapě. Vždy když tramvaj projede kolem čidla tak to aktualizují.

    Ty bys mohl to aktualizovat vždy když zjistíš přesný údaj, a v těch intervalech mezi to prostě interpolovat :)

    Honza

    OdpovědětVymazat
  5. To už rovnou napojit na systém DoRIS a nebo využít GPS přijímač, který je vestavěný v tramvaji :)

    Jinak se hlásím k zaznamenávání MAC adres routerů Student Agency :)

    OdpovědětVymazat
  6. Ta geolokace od google se aktualizuje tak rychle? já jen že když jsem převezl svůj router na jiný místo, tak ikdyž jsem okolo chodil se zeplým androidem a povoleným "špehováním", tak poloha na mapě se změnila až tak po 2měsících....tak nějak nechápu, jak to funguje

    OdpovědětVymazat
  7. Zajímavost: Pokud si přepnete mapu do StreetView pohledu, zobrazí se Vám aktuálně obrázek tramvaje i tam. Wow!
    (Akorát si nejsem jist, jak často Google aktualizuje lokaci AP - když jsem svůj router přenesl na jiné místo, trvalo mu pár dní, než na Google mapách docestoval na aktuální pozici)

    OdpovědětVymazat
  8. Jen bych rád dodal, že by bylo vhodné uvést zdroj ikony tramvaje, která pochází z CSTramSet pro (O)TTD (viz. http://ttd.tycoonez.com/?id=120).

    A abych jen nerýpal, dodám, že je to moc povedená záležitost!!! V kombinaci s jízdním řádem věřím, že podobné mashupy by měly v mobilních telefonech své místo ;)

    OdpovědětVymazat
  9. Díky moc za reakce.

    Možná jsem to nezmínil, ale jde o prototyp, sám jsem zvědav jak se bude chovat v reálu..

    Navíc ta tramvaj jezdí v Praze jednou za hodinu a navíc je nutné, aby měl člověk zapnutou GPS a spustil Google Maps - kolik takových lidí je?

    OdpovědětVymazat
  10. IMHO Pozice se přeci dá přibližně zjistit i přes BTS...

    OdpovědětVymazat
  11. a člověk, který je v MHD sběhlý si dokáže zjistit na kterém pořadí jezdí a nepotřebuje toto :-)

    OdpovědětVymazat
  12. Zajímavě zpracované. Na druhou stranu jak tu píše poslední koment. Kdokoliv jel někdy autobusem tak ví, jak MHD funguje. Na druhou stranu podobně by to šlo vyřešit třeba i na sledování vložky FAB, nebo ne? Nebo jako nevím, nejsem programátor, ale přijde mi to podobné. Ale nejsem profík, jak říkám.

    OdpovědětVymazat