Përmbajtje:

Monitorimi i Rrugës: 15 Hapa
Monitorimi i Rrugës: 15 Hapa

Video: Monitorimi i Rrugës: 15 Hapa

Video: Monitorimi i Rrugës: 15 Hapa
Video: Экзамен в DMV. 15 ошибок. Авто-Словарь на английском. Ссылки внизу. 2024, Nëntor
Anonim
Monitorimi i Rrugëve
Monitorimi i Rrugëve

Sot do t'ju tregojmë se si kemi ngritur një sistem të monitorimit të anomalive rrugore bazuar në akselerometra, LoRaWAN, Amazon Web Services dhe Google Cloud API.

Hapi 1: Kërkesat

  • Bordi DISCO-L072CZ-LRWAN1
  • Moduli i zgjerimit X-NUCLEO-IKS01A2 (për shpejtësimatësin)
  • X-NUCLEO-GNSS1A1 (për lokalizim)
  • Një llogari AWS
  • Një llogari e Google Cloud Platform

Hapi 2: Ndërtimi dhe ndezja e firmuerit të sensorit

Lidhni IKS01A2 dhe GNSS1A1 në krye të tabelës përmes kunjave GPIO. Shkarkoni kodin e firmware -it nga GitHub. Krijoni (nëse nuk e keni tashmë) një llogari në ARM Mbed dhe importoni kodin në repo në përpiluesin online. Vendosni platformën e synuar në DISCO-L072CZ-LRWAN1 dhe ruani projektin. Tani drejtohuni në The Things Network dhe krijoni një llogari nëse nuk e keni tashmë. Krijoni një aplikacion, krijoni një pajisje të re brenda aplikacionit dhe vendosni mënyrën e lidhjes në OTAA. Merrni parametrat e duhur për të mbushur fushat e mëposhtme në skedarin mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".

Sensori periodikisht do të regjistrojë të dhënat e përshpejtuesit dhe GNSS dhe do t'i dërgojë ato përmes lidhjes LoRa në portën më të afërt, e cila do t'i përcjellë ato në aplikacionin tonë në The Things Network. Hapi tjetër është krijimi i një serveri cloud dhe një integrim HTTP në TTN.

Hapi 3: Konfigurimi i reve

Vendosja e reve
Vendosja e reve

Tani ne jemi gati për të ngritur infrastrukturën cloud që do të mbledhë dhe grumbullojë të dhënat nga të gjitha bordet e vendosura. Kjo infrastrukturë është treguar në figurën më poshtë dhe përbëhet nga:

  • Kinesis, për të trajtuar rrjedhën e të dhënave hyrëse;
  • Lambda, për të filtruar dhe përpunuar të dhënat para se t'i ruani ato;
  • S3, për të ruajtur të gjitha të dhënat;
  • EC2, për të analizuar të dhënat dhe për të pritur front-endin tonë.

Hapi 4: Vendosni AWS Lambda

Vendosni AWS Lambda
Vendosni AWS Lambda

Ne do të ilustrojmë hapat e nevojshëm për ngritjen e kësaj infrastrukture, duke filluar me Lambda.

  1. Hyni me llogarinë tuaj AWS, dhe nga faqja kryesore e tastierës dhe shkoni te Lambda
  2. Klikoni në Krijo funksion
  3. Në pjesën e sipërme të faqes duhet të zgjidhet Author from Scratch. Pastaj plotësoni fushat e tjera si në foto dhe pastaj klikoni Krijo funksion
  4. Tani që keni krijuar një funksion AWS Lambda, shkoni te https://github.com/roadteam/data-server dhe kopjoni përmbajtjen e skedarit aws_lambda.py në redaktuesin që gjeni në gjysmën e dytë të faqes. Funksioni juaj Lambda tani është gati:)

Hapi 5: Vendosni AWS Kinesis Firehose Stream Data

Vendosni rrjedhën e të dhënave AWS Kinesis Firehose
Vendosni rrjedhën e të dhënave AWS Kinesis Firehose
  1. Kthehuni tani në faqen kryesore të tastierës AWS dhe në Shërbimet shkoni te Kinesis
  2. Tani ju jeni në faqen kryesore të Kinesis. Në të djathtë të faqes, nën 'Rrjedhat e dorëzimit të Kinesis Firehose', zgjidhni 'Krijo një rrjedhë të re të dorëzimit'
  3. Në "Emri i rrjedhës së dorëzimit" shkruani "rruga-monitorimi i rrugës". Lërini fushat e tjera të paracaktuara dhe klikoni tjetër
  4. Tani nën 'Transformoni regjistrimet e burimit me AWS Lambda' zgjidhni Enabled, dhe si funksion Lambda klikoni në 'road-monitoring-lambda' të krijuar rishtazi. Mos u shqetësoni nëse shfaqet një paralajmërim në lidhje me afatin e funksionimit, pasi operacioni që ne po bëjmë nuk është i shtrenjtë nga ana llogaritëse. Lërini fushat e tjera të paracaktuara dhe klikoni tjetër
  5. Si destinacion zgjidhni Amazon S3, dhe si destinacion S3 zgjidhni Krijo të re. Si emri i kovës futni 'kovën e monitorimit të rrugës' dhe pastaj shkoni. Tani lërini fushat e tjera të paracaktuara dhe klikoni Next
  6. Ju mund të dëshironi të vendosni madhësinë e tamponit në 1MB dhe intervalin e tamponit në 60 sekonda. Tamponi do të shpëlahet në S3 sa herë që plotësohet njëra nga dy kushtet. Mos e lini faqen, shihni hapin tjetër

Hapi 6: Vendosni rolin e IAM për Kinesis

Vendosni rolin e IAM për Kinesis
Vendosni rolin e IAM për Kinesis

Tani ne vendosim lejet e sigurisë për Kinesis, pasi ai duhet të thërrasë funksionin Lambda për përpunim paraprak dhe më pas do të shkruajë në S3

  1. Në fund të faqes që jeni në 'rolin IAM' zgjidhni 'Krijo të re të zgjedhur', krijoni një rol të ri IAM si në foto dhe klikoni Lejo
  2. Tani jeni kthyer në faqen e mëparshme, klikoni tjetër. Tani mund të dëshironi të kontrolloni dy herë të gjithë parametrat. Kur të përfundoni, klikoni në "Krijo rrjedhën e dorëzimit"

Tubacioni Kinesis-Lambda-S3 është duke funksionuar!

Hapi 7: Vendosni AWS EC2

Vendosni AWS EC2
Vendosni AWS EC2

Tani do të krijojmë një shembull EC2 me disa API që do të na lejojnë të shtyjmë dhe tërheqim të dhëna nga cloud AWS dhe gjithashtu serveri ku të presim aplikacionin tonë të përparuar. Në mjedisin e prodhimit, ju mund të dëshironi të publikoni API duke përdorur Portën më të shkallëzuar të AWS API.

  1. Nga faqja kryesore e tastierës AWS, shkoni te shërbimi EC2
  2. Klikoni në Launch Instance
  3. Në shiritin e sipërm të kërkimit ngjisni këtë kod: ‘ami-08935252a36e25f85’, ky është kodi identifikues i makinës virtuale të parakonfiguruar për t’u përdorur. Klikoni Zgjidh në të djathtë
  4. Zgjidhni t2.micro nga kolona ‘Type’ dhe klikoni ‘Review and start’. Mos e hapni shembullin akoma, shkoni në hapin tjetër

Hapi 8: Vendosni rolin e sigurisë të IAM për EC2

Vendosni rolin e sigurisë të IAM për EC2
Vendosni rolin e sigurisë të IAM për EC2
  1. Para fillimit ne duam të modifikojmë grupin e sigurisë të shembullit tonë. Për ta bërë këtë, në të djathtën ekstreme të seksionit "Grupet e Sigurisë" klikoni "Ndrysho grupet e sigurisë" Krijoni një grup të ri sigurie si më poshtë. Kjo në thelb konfiguron murin mbrojtës të shembullit tuaj duke ekspozuar portin 22 për lidhjen SSH dhe portin 80 për shërbimet
  2. Klikoni përsëri 'Rishikoni dhe Nisni'. Tani kontrolloni që të gjithë parametrat janë vendosur. Kur të përfundoni, klikoni në Launch
  3. Me klikimin do të shfaqet një dritare e re për të krijuar një palë çelësash për lidhje ssh me shembullin. Zgjidhni "Krijo çift të ri çelësash" dhe si emër futni "ec2-road-monitorim". Klikoni Shkarkoni çiftin e çelësave. Extremelyshtë jashtëzakonisht e rëndësishme që ky skedar të humbasë ose (më keq) të ruhet në mënyrë të pasigurt: nuk do të jeni në gjendje të shkarkoni përsëri çelësin. Pasi të keni shkarkuar çelësin.pem, shembulli është gati për t'u nisur

Hapi 9: Qasuni në shembullin tuaj EC2

Qasuni në shembullin tuaj EC2
Qasuni në shembullin tuaj EC2

Shembulli juaj i freskët EC2 është në cloud AWS. Mund të lidheni me të me skedarin kryesor të shkarkuar më parë (për këtë tutorial supozojmë se i dini bazat e ssh). Ju mund të merrni IP -në e shembullit duke e zgjedhur atë në pult në seksionin "Përshkrimi" si më poshtë: Ju mund të përdorni IP -në tuaj publike ose DNS -në tuaj publike është e njëjtë. Me një klient ssh tani futni komandën:

ssh -i ec2-road-monitor.pem ec2-user@YOUR-IP-ADDR-OR-DNS

ku ec2-road-monitoring.pem është çelësi juaj i krijuar më parë.

Tani vazhdoni të tërhiqni kodin nga ana e serverit

git clone --recursive

Hapi 10: Merrni Google Maps API

Merrni API të Google Maps
Merrni API të Google Maps

Ne pothuajse kemi mbaruar. Tani duhet të vendosim API -në e Google Maps në faqen tonë html në mënyrë që t'i shfaqim përdoruesit hartën me pikat e rrugës:

  1. Hyni në llogarinë tuaj të Google dhe shkoni te
  2. Klikoni për të ‘Filluar’ në të majtë të faqes
  3. Zgjidhni "Hartat" në menunë dhe pastaj klikoni vazhdoni
  4. Si emri i projektit futni 'monitorimin e rrugës' dhe klikoni Next
  5. Vendosni të dhënat tuaja të faturimit dhe klikoni Vazhdo
  6. Tani projekti juaj është gati dhe ne do të marrim çelësin API duke klikuar te API dhe Shërbimet -> Kredencialet

Hapi 11: Nis serverin

Nis serverin
Nis serverin

Dhe atje është çelësi juaj API. Gjëja e fundit që duhet të bëni është të shkoni te data_visualization/anomalies_map.html dhe të kopjoni çelësin tuaj deri në fund të skedarit ashtu, duke zëvendësuar 'ÇELEYSIN TUAJ-KERTU'

Tani gjithçka është gati dhe gati për të shkuar! Për ta bërë atë të fillojë të ekzekutohet në shembullin EC2: 'cd data-server' 'python flask_app.py'

Shkruani në shfletuesin tuaj adresën IP ose dns të shembullit tuaj EC2, duhet të shihni hartën e anomalive me disa të dhëna falsifikuese

Hapi 12: Kryeni Integrimin HTTP në Rrjetin e Gjërave

Kryeni integrimin HTTP në Rrjetin e Gjërave
Kryeni integrimin HTTP në Rrjetin e Gjërave

Tani që kemi të gjithë infrastrukturën mbështetëse në funksionim, ne mund të përpunojmë për të kryer integrimin

  1. Krijoni një aplikacion të ri dhe regjistroni pajisjen tuaj. Ne supozojmë njohuri themelore të TTN, nëse jo referojuni udhëzuesit të fillimit të shpejtë
  2. Në menunë e aplikacionit tuaj zgjidhni "Integrimet" dhe më pas "shtoni integrimin"
  3. Zgjidhni integrimin
  4. Vendosni fushat pas figurës dhe zëvendësoni me IP2 tuaj EC2 ose DNS publike

Hapi 13: Përpunimi i të dhënave

Për çdo tufë të dhënash T të mbledhura nga sensori duhet të kryeni hapat e mëposhtëm:

  1. Merrni grupin e tufave që kanë koordinatat GPS që bien në zonën lokale të T. Zona lokale janë të gjitha tufat që janë 100 metra rreth T.
  2. Për secilën tufë më të afërt N llogarisni mesataren katrore të aksit Z të akselerometrit në N. Në pseudokod: mesatarja = shuma ([x. Z_accel ** 2 për x në afërsi]) / pranë. Madhësia
  3. Llogaritni devijimin standard në katror. Në pseudokod: std = shuma ([(x. Z_accel ** 2 - mesatarja) ** 2 për x në afërsi])
  4. Dalja në këtë format: lat, e gjatë, Z_accel ** 2, e mesme, std

Për të llogaritur zonën lokale përdorni distancën GPS në metra. Në C ++:

#përcakto D2R (M_PI / 180.0)

#përcakto EARTH_RAY 6371 distancë të dyfishtë (dyshe lat1, dyshe e gjatë1, dyshe lat2, dyshe e gjatë2) {double dlong = (long2 - long1) * D2R; dyfishtë dlat = (lat2 - lat1) * D2R; dyfish a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); dyshe c = 2 * atan2 (sqrt (a), sqrt (1-a));

Tani, duke përdorur të dhënat e ndërmjetme të krijuara në hapin e mëparshëm, zbuloni anomalitë dhe bëni një klasifikim naiv duke përdorur këtë fragment të aplikuar për secilën rresht:

linjë = hartë (noton, line.split (","))

v = rreshti [2] mesatarja = rreshti [3] std = rreshti [4] nëse v (mesatarja + std*3): nëse v (mesatarja + std*2): nëse v (mesatarja + std): o.append ([1, rreshti [0], rreshti [1]) tjetër: o.append ([2, line [0], line [1]) tjetër: o.append ([3, line [0], line [1])

Anomalitë klasifikohen duke përdorur rregullin 68–95–99.7

Tani ju keni një koleksion me këtë format [tip, lat, i gjatë].

Kuptimi i llojit është si më poshtë:

  1. Anomali e lehtë, ndoshta e parëndësishme
  2. Anomali e mesme
  3. Anomali kritike

Hapi 14: Vizualizimi

Vizualizimi
Vizualizimi

Për të kuptuar dhe ndoshta për të ndryshuar pjesën e vizualizimit, duhet të mësojmë se si të përdorim shënuesit e personalizuar, një veçori e Google Maps API

Së pari, harta duhet të inilizohet në një përgjigje thirrjeje:

funksioni initMap () {

të dhëna = queryData (); hartë = google.maps. new hartë (document.getElementById ('hartë'), {zmadhimi: 15, qendra: {lat: data [0] [1], lng: të dhënat [0] [2]}}); vërejtje (); }

Specifikoni emrin e kësaj thirrjeje në url (e futëm këtu para çelësit tonë API) në një etiketë HTML:

script async defer src = "https://maps.googleapis.com/maps/api/js?key= [KEY]&callback=initMap"

Një shënues mund të futet në hartë kur krijohet objekti:

google.maps. Marker i ri ({pozicioni: {lat: LATITUDE, lng: LONGITUDE}, harta: harta, ikona: “/path/to/icon.png”})

Ju mund të shihni në kodin se për secilën të dhënë në grupin e të dhënave të anomalive futet një shënues (shiko funksionin vërejtje ()) dhe ikona bazohet në klasën e anomalisë. Kur e ekzekutojmë këtë në shfletues, ne mund të eksplorojmë një hartë në të cilën anomalitë mund të filtrohen duke përdorur kutitë e kontrollit, siç shihet në foto.

Hapi 15: Kredite dhe Lidhje të Jashtme

Ky projekt u bë nga Giovanni De Luca, Andrea Fioraldi dhe Pietro Spadaccino, studentë të vitit të parë MSc në Inxhinieri në Shkencat Kompjuterike në Universitetin Sapienza të Romës.

  • Rrëshqitjet që autorët përdorën për të paraqitur këtë dëshmi të konceptit:

    www.slideshare.net/PietroSpadaccino/road-m…

  • Depot e GitHub me të gjithë kodin:

    github.com/roadteam

Recommended: