Kva gjer du når Mesta ikkje vil byggje eit gangfelt på ei veldig trafikert strekning, berre pga. manglande statistikk?
For dei av dykk som har fulgt meg på Twitter, veit dykk nok at svaret er at du set sjølvsagt opp din eigen!
Gjennom denne serien vil eg forklare deg kva som må til for å registrere trafikkdata på ei strekning, samt korleis du kan presentere informasjonen på ein stilig måte til offentlegheita.
Introduksjon
OBS: Denne serien er antaglegvis nokre hakk meir avansert og nerdete enn det du vanlegvis er vant til å sjå på NRKbeta. Eg lovar, det skal ikkje skje for ofte. 😀
Mange vil nok lure på kvifor eg gjekk gjennom så mykje arbeid for å setje opp ein eigen trafikkstasjon.
Mine kjære svigers bur nært ei relativt trafikert strekning i Stordal, og har i årevis ergra seg over eit manglande gangfelt på strekket. Resten av vegen har tross alt gangfelt, og den er langt i frå like strak.
Dette prosjektet hadde difor som mål å gjere ein ting: Halde statistikk over kor mange biler som passerer det gitte punktet i døgnet.
Naudsynt inventar
For å få dette til å fungere, treng du å ha litt utstyr, samt ein god bit teknisk innsikt.
Svigerfar min er veldig teknologisk av seg for alderen, og er blant anna dagleg leiar og eigar av ein lokal breibandsleverandør.
Relatert til det kjøpte han for ei tid tilbake eit AXIS 214 PTZ IP-kamera, og dette kom veldig godt til nytte i dette prosjektet (men du treng nødvendigvis ikkje eit IP-kamera til NOK 10.000 – det er mange andre som kan gjere jobben.)
For å setje opp denne stasjonen er følgjande utstyr brukt:
- AXIS 214 PTZ IP-kamera
- Asus Eee PC
- Linksys router
- Slicehost 256 Slice (VPS)
Oppsett: IP-kameraet
Kameraet som er tatt i bruk er eit veldig solid og avansert IP-kamera, med UNIX i bunnen av systemet. Dette gjer det veldig enkelt for dei mindre teknisk handikappa av oss å justere systemet til å fungere som ønskja. Kameraet er også beregna for utendørsbruk, men i dette tilfellet har kameraet stått innendørs, og peika ut gjennom eit vindauge.For at dette i det heile tatt skulle fungere, måtte kameraet stå på ein plass kor det enkelt kunne sjå vegen. Plasseringa vart eit vindage i husets kjellerstove.
Ei anna føreutsetnad for at dette fungerer, er at kameraet har ein bevegelsessensor. Axis 214 PTZ har ein veldig god og justerbar bevegelsessensor, som gjer det lettare å få nøyaktige målingar.
–
Bevegelsessensoren
Kameraets bevegelsessensor har mange innstillingar. Du kan skru på nattmodus ved gitte tider, stille inn objektsstorleik, sensorområde, sensitivitet og historielengde. Etter litt lesing på diverse fora fann eg ut at sensorområdet (det faktiske området sensoren observerer av biletet) bør vere så liten som mogleg, for å unngå duplikater. Objektstorleiken bør også vere minst 80% av sensorområdet, for å unngå lesing viss f.eks. eit menneske går forbi. Innstillingane vart til slutt som følgjer:
- Sensorområde: Lite
- Objekstorleik: 80%
- Sensitivitet: 70%
- Historie: 80%
Meldingfunksjonalitet
Dette kameraet har moglegheita til å sende ut meldinger når ein hendelse tek stad. Ved aktivering av bevegelsessensoren kan kameraet enten:
- Laste opp biletet til ein FTP-server
- Laste opp bildet til ein HTTP-server
- Sende ei melding til ein TCP-server
I mitt tilfelle var det den siste som var aktuell – eg er ikkje interessert i å sjå eit bilete av kvar einaste bil, det einaste eg er interessert i er å vite kor mange biler som har passert. Dette alternativet gjev også mykje mindre bandbreiddebelastning for serverane våre. Det einaste IP-kameraet no gjer, er å sende meldinga «Ny» til serveren som har ansvaret for å formidle beskjeden vidare til serveren som var ansvarleg for lagring av informasjonen.
Serverproblemer
Når leverandøren av kameraet spesifikt annonserer dette som eit «IP-kamera», går eg ut i frå at det betyr at det har moglegheita til å sende beskjeder ut til verda. Whoops, feil! Kameraet har ikkje moglegheita til å prate med «hendelsesserverar» utanom det lokale nettverket. Eg er dermed nødt til å setje opp ein lokalserver som kan vidareformidle hendelsen til den faktiske serveren.
Eg måtte dermed finne fram min gamle Eee PC, som eg har skrevet om før her på NRKbeta, og setje den opp til å ta imot data frå IP-kameraet. For å gjere det enkelt installerte eg Twisted på maskina, og starta opp eksempelserveren med eit par små modifikasjoner. Denne lytta no etter tilkoplingar på port 8007, og sendte tilkoplinga vidare.Serverkrav
Sjølv om dette er ganske langt ute på “bondebygda”, er det likevel ei strekning med ein del trafikk. Om det passerer 1000 biler i døgnet på den gitte strekninga, blir dette 30.000 i månaden. Dette gjer at serveren får tilsendt ganske store deler data, og å bearbeide dette set litt krav til både programmeraren og serveren.
Serveren som tek seg av bearbeidinga av denne datamengda er eit produkt frå amerikanske hostingleverandøren Slicehost, som tilbyr VPS-serverar (Virtual Private Server). Dette betyr i praksis at eg har tilgang til eit fullverdig linux-miljø kor eg kan setje opp alt sjølv, utan å vere avhengig av at leverandøren vil ha ting gjort “på sin måte”. Anbefaler forresten Slicehost til alle som er nysgjerrig på ein VPS. 🙂
Sjølv er eg ganske interessert i programmering og dataoptimalisering (…noko som eg burde vere, sidan – ja – eg lev av det), og teknologivalet mitt er gjerne deretter:
- Ubuntu (operativsystem)
- Apache (applikasjonsserver)
- Nginx (reversert proxy og medieserver)
- Python (programmeringsspråk)
- Django (rammeverk)
- MySQL (databaselagring)
- memcached (datacache)
Alt av dette var allereie installert på VPS-en min, så det som måtte gjerast var å skrive applikasjonen.
Slutten på del éin
Det var alt for del éin av dette eksperimentet – no må vi vente på at kameraet får tatt nok bilete til at vi kan ta for oss den faktiske applikasjonen som tek for seg framvisninga av informasjonen vår. 🙂
Nicolai Rygh
Kult prosjekt! Gleder meg til del 2!
henriklied (Henrik Lied)
Just wrote part one of an exciting NRKbeta series. For the Norwegians: tinyurl.com/66oj2o
turn.self.off
er virkelig ett seriøst kamera ja.
sjekket så kjapt prisen, og billigste jeg fant var 10000 *uæ!*
morsom bruk av en 701 eeepc førøvrig 😉
Jørgen
Spennende prosjekt. Hvordan skiller du mellom forskjellige typer trafikanter, mtp at det både gir bedre stats om du kan si hvor mange semitrailere som passerte vs hvor mange personbiler, og at du sannsynligvis ønsker å fjerne for eksempel syklister og gående fra regnestykket.
Tor Løvskogen
Nerdie! Stilig, venter på noen deilige fremvisninger av dataene, Henrik 🙂
Sebastian Steinmann
Ikke dårlig Henke! Litt vel teknisk for massene kanskje 😉
Gleder meg mer til litt sexy django jeg. Hehe
TrondA
Dette er NRKbeta, de som er innom er vel såpass begava at det her ikkje kan kallast teknisk for dei fleste? 🙂
Hein Haraldson Berg
Hehe, du hadde lurt meg en våt lørdagskveld! 😉
Venter spent på neste del – blir spennende å se om alt fungerer som forventet. Statistikken vet jeg at du får presentert på en genial måte.
Audun Sæther
Interessant prosjekt dette, blir spennende å følge med videre. Morro med sånne artikler.. det er vel mange lesere her som får litt dilla når man leser slikt 😉
Øyvind Solstad (NRK)
Her er et forslag til NRK og NRK Trafikk: Lag dette som et kit i samarbeid med en nettbutikk og selg det. Kanskje i en billigere variant også. Hehe.
Og så lar dere alle som kjøper det rapportere inn til en egen nettside, ala den som Los Angeles Times har for trafikken i Los Angeles:
latimes.com/news/traffic/la-news-traffic,1,3920785.framedurl?ctrack=1&cset=true
I starten vil jo dette bli helt ubrukelig, med to målere i Oslo, en i Sauda og en på Lillehammer. Men så kan man koble inn de offisielle målingene fra de som har trafikkamera i byene, og etterhvert blir dette riktig brukanes.
Arve Systad
Stilig prosjekt, I must say. Ser fram til del 2 🙂
Terje Reite
NRK Møre og Romsdal er varsla, og er nok straks på veg med fullt TV-team. Her er det berre å følgje med i neste utgåve av NorgeiDag 🙂
Jesper Haug Karsrud
Stilig, Henrik! Gleder meg virkelig til del to, håper du viser oss litt fin-fin Python- og Django-kode i den delen! Denne artikkelen fikk meg til å slenge inn RSSen til NRKBeta i NetNewsWire, håper virkelig at det kan komme flere slike artikler på denne siden, da blir jeg nok en fast leser 😉
Wolferey
nice, gleder meg til del 2! 😀
Henrik Lied (NRK)
Jørgen: Kameraet har dessverre ikkje moglegheita til å filtrere ut objekt som er større enn sensorområdet, så å skilje mellom lastebiler og vanlege biler er vanskeleg i samme sensor. Det hadde derimot vore mogleg å kun registrere lastebiler for seg, ved å sette objektstorleiken til 100% av eit større sensorområde på ein ekstra sensor. Men det blir fort mykje kluss – og er eigentleg ikkje så frykteleg relevant for dette prosjektet. 🙂
Forgjengarar blir skilja ut uansett, sidan dei er for “små” til å bli registrert i sensorområdet.
TrondA: Du har heilt rett – denne delen er slettes ikkje så vanskeleg å forstå, og den notisen hadde nok passa betre i den komande del to, kor vi skal sjå meir på sjølve koden som tek seg av bearbeidinga av informasjonen.
Hein Haraldson Berg: Du må slettes ikkje overvurdere mine grafiske kunnskaper – det gjenstår å sjå korleis den grafiske framstillinga blir. 🙂
Terje Reite: Du får ringje meg om nokre veker, så skal vi få til det!
Resten: Takk for respons. 🙂
Hein Haraldson Berg
Eneste måten jeg kom på som kunne legge litt press på deg! 😉
Lag din eigen trafikkstasjon, del 2
[…] Dette er del to av serien kor vi lager ein trafikkstasjon. Har du ikkje lest del éin, gjer det no. […]
Leif Harald
Ville det ikke være billigere (og evt enklere) å brukte ir-sender/mottaker med refleks på andre sida av veien for å detektere kjøretøyet? Har vært inne på tanken om å bytte noe slikt selv, men det blir fort litt arbeid å bygge slikt.
Sindre Johansen
Flott artikkel. Spennende prosjekt.
Etter at du anbefalte slicehost her, har jeg leid meg en vps til bruk for ftp og http server derfra og er til nå veldig fornøyd. Så takk for tipset.