Sadržaj:

Nadzor ceste: 15 koraka
Nadzor ceste: 15 koraka

Video: Nadzor ceste: 15 koraka

Video: Nadzor ceste: 15 koraka
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, Studeni
Anonim
Monitoring cesta
Monitoring cesta

Danas ćemo vam pokazati kako smo postavili sustav praćenja anomalija na cestama na temelju mjerača ubrzanja, LoRaWAN -a, Amazon Web Services i Google Cloud API -ja.

Korak 1: Zahtjevi

  • Ploča DISCO-L072CZ-LRWAN1
  • X-NUCLEO-IKS01A2 modul za proširenje (za mjerač ubrzanja)
  • X-NUCLEO-GNSS1A1 (za lokalizaciju)
  • AWS račun
  • Račun Google Cloud Platform

Korak 2: Izrada i ažuriranje firmvera senzora

Spojite IKS01A2 i GNSS1A1 na vrhu ploče kroz GPIO pinove. Preuzmite kod firmvera s GitHub -a. Napravite (ako ga već nemate) račun na ARM Mbedu i uvezite kôd u repo na mrežnom prevoditelju. Ciljnu platformu postavite na DISCO-L072CZ-LRWAN1 i spremite projekt. Sada idite na The Things Network i stvorite račun ako ga već nemate. Izradite aplikaciju, stvorite novi uređaj unutar aplikacije i postavite način povezivanja na OTAA. Dohvatite odgovarajuće parametre kako biste ispunili sljedeća polja u datoteci mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".

Senzor će povremeno snimati akcelerometar i GNSS podatke i slati ih putem LoRa veze do najbližeg pristupnika, koji će ih prosljeđivati našoj aplikaciji na mreži The Things Network. Sljedeći korak je postavljanje poslužitelja u oblaku i HTTP integracija na TTN -u.

Korak 3: Postavljanje oblaka

Postavljanje oblaka
Postavljanje oblaka

Sada smo spremni za postavljanje infrastrukture u oblaku koja će prikupljati i objedinjavati podatke sa svih postavljenih ploča. Ova infrastruktura prikazana je na donjoj slici, a sastoji se od:

  • Kinesis, za rukovanje dolaznim tokom podataka;
  • Lambda, za filtriranje i predprocesiranje podataka prije skladištenja;
  • S3, za spremanje svih podataka;
  • EC2, analizirati podatke i ugostiti naš front-end.

Korak 4: Postavite AWS Lambda

Postavite AWS Lambda
Postavite AWS Lambda

Ilustrirat ćemo korake potrebne za postavljanje ove infrastrukture, počevši od Lambde.

  1. Prijavite se sa svojim AWS računom, a s glavne stranice konzole idite na Lambda
  2. Pritisnite Stvori funkciju
  3. U gornjem dijelu stranice potrebno je odabrati Autor iz ogrebotine. Zatim ispunite ostala polja kao na slici, a zatim kliknite Stvori funkciju
  4. Sada kada ste stvorili AWS Lambda funkciju, idite na https://github.com/roadteam/data-server i kopirajte sadržaj datoteke aws_lambda.py u uređivač koji ćete pronaći u drugoj polovici stranice. Vaša Lambda funkcija je sada spremna:)

Korak 5: Postavite AWS Kinesis Firehose podatkovni tok

Postavite AWS Kinesis Firehose podatkovni tok
Postavite AWS Kinesis Firehose podatkovni tok
  1. Vratite se sada na glavnu stranicu AWS konzole, a u Usluge idite na Kinesis
  2. Sada ste na glavnoj stranici Kinesisa. S desne strane stranice u odjeljku "Kinesis Firehose dotoci isporuke" odaberite "Izradi novi tok isporuke"
  3. U "Naziv toka isporuke" napišite "tok-nadzor-ceste". Ostala polja ostavite zadanim i kliknite Dalje
  4. Sada u odjeljku 'Transform source records with AWS Lambda' odaberite Enabled, a kao Lambda funkciju kliknite na novostvorenu 'road-monitoring-lambda'. Ne brinite ako se pojavi upozorenje o isteku funkcije, jer operacije koje radimo nisu računski skupe. Ostala polja ostavite zadanim i kliknite Dalje
  5. Kao odredište odaberite Amazon S3, a kao odredište S3 odaberite Stvori novo. Kao naziv kante unesite "road-monitoring-bucket", a zatim idite. Ostala polja ostavite zadanim i kliknite Dalje
  6. Možda želite postaviti veličinu međuspremnika na 1 MB, a interval međuspremnika na 60 sekundi. Međuspremnik će se isprazniti u S3 kad god je zadovoljen jedan od dva uvjeta. Ne napuštajte stranicu, pogledajte sljedeći korak

Korak 6: Postavite IAM ulogu za kinezu

Postavite IAM ulogu za kinezu
Postavite IAM ulogu za kinezu

Sada postavljamo sigurnosna dopuštenja za Kinesis, budući da mora pozvati Lambda funkciju za predprocesiranje, a zatim će pisati na S3

  1. Pri dnu stranice na kojoj se nalazite u "IAM ulozi" odaberite "Kreiraj novu po izboru", stvorite novu IAM ulogu kao na slici i kliknite Dopusti
  2. Sada ste se vratili na prethodnu stranicu, kliknite sljedeći. Sada biste mogli dvaput provjeriti sve parametre. Kada završite, kliknite na "Stvori tok isporuke"

Cjevovod Kinesis-Lambda-S3 je u funkciji!

Korak 7: Postavite AWS EC2

Postavite AWS EC2
Postavite AWS EC2

Sada ćemo postaviti instancu EC2 s nekim API -ima koji će nam omogućiti da guramo i izvlačimo podatke iz AWS oblaka, a također i poslužitelj na kojem ćemo ugostiti sučelje naše aplikacije. U proizvodnom okruženju možda ćete htjeti objaviti API koristeći prilagodljiviji AWS API pristupnik.

  1. S glavne stranice AWS konzole idite na uslugu EC2
  2. Kliknite Pokreni instancu
  3. U gornju traku za pretraživanje zalijepite ovaj kôd: "ami-08935252a36e25f85", to je identifikacijski kod unaprijed konfiguriranog virtualnog stroja za upotrebu. Pritisnite Odaberi s desne strane
  4. Odaberite t2.micro iz stupca "Vrsta" i kliknite "Pregledaj i pokreni". Nemojte još pokretati instancu, prijeđite na sljedeći korak

Korak 8: Postavite IAM sigurnosnu ulogu za EC2

Postavite IAM sigurnosnu ulogu za EC2
Postavite IAM sigurnosnu ulogu za EC2
  1. Prije pokretanja želimo izmijeniti sigurnosnu grupu naše instance. Da biste to učinili, krajnje desno u odjeljku "Sigurnosne grupe" kliknite "Uredi sigurnosne grupe" Postavite novu sigurnosnu grupu na sljedeći način. Ovo u osnovi konfigurira vatrozid vaše instance izlažući port 22 za SSH vezu i port 80 za http usluge
  2. Ponovno kliknite "Pregledaj i pokreni". Sada provjerite jesu li postavljeni svi parametri. Kada završite kliknite Pokreni
  3. Nakon klika pojavit će se novi prozor za postavljanje para ključeva za ssh vezu s instancom. Odaberite "Izradi novi par ključeva" i kao naziv unesite "ec2-road-monitoring". Kliknite Preuzmi par ključeva. Izuzetno je važno da se ova datoteka izgubi ili (što je još gore) nesigurno pohranjena: ključ nećete moći ponovno preuzeti. Nakon preuzimanja ključa.pem instanca je spremna za pokretanje

Korak 9: Pristupite svojoj EC2 instanci

Pristupite svojoj instanci EC2
Pristupite svojoj instanci EC2

Vaša nova EC2 instanca nalazi se u AWS oblaku. Na njega se možete povezati pomoću datoteke s ključem koju ste već preuzeli (za ovaj vodič pretpostavljamo da poznajete osnove ssh -a). IP instance možete dohvatiti odabirom na nadzornoj ploči u odjeljku "Opis" na sljedeći način: Možete koristiti i svoj javni IP ili javni DNS isti. S ssh klijentom sada unesite naredbu:

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

gdje je ec2-road-monitoring.pem vaš ključ generiran prije.

Sada nastavite povlačenjem koda na strani poslužitelja

git clone --recursive

10. korak: Dohvatite API za Google karte

Dohvatite API za Google karte
Dohvatite API za Google karte

Skoro smo gotovi. Sada moramo postaviti google maps API na našu html stranicu kako bismo korisniku prikazali kartu s međutočkama:

  1. Prijavite se na svoj Google račun i idite na
  2. Kliknite na "Započni" na lijevoj strani stranice
  3. Na izborniku odaberite "Karte", a zatim kliknite Nastavi
  4. Kao naziv projekta unesite "nadzor ceste" i kliknite Dalje
  5. Unesite svoje podatke o naplati i kliknite Nastavi
  6. Sada je vaš projekt spreman i dobit ćemo API ključ klikom na API -ji i usluge -> Vjerodajnice

Korak 11: Pokrenite poslužitelj

Pokreni poslužitelj
Pokreni poslužitelj

Tu je vaš API ključ. Posljednje što morate učiniti je otići na data_visualization/anomalies_map.html i tako kopirati ključ na kraj datoteke, zamjenjujući ‘VAŠ KLJUČ-OVDJE’

Sada je sve spremno za rad! Da bi se pokrenulo izvršavanje u instanci EC2: "cd data-server" "python flask_app.py"

Unesite u svoj preglednik ip ili dns adresu vaše EC2 instance, trebali biste vidjeti kartu anomalija s nekim lažnim podacima

Korak 12: Izvedite HTTP integraciju na mreži Things

Izvedite HTTP integraciju na mreži Things
Izvedite HTTP integraciju na mreži Things

Sada kada smo pokrenuli svu pozadinsku infrastrukturu, možemo obraditi HTTP integraciju.

  1. Napravite novu aplikaciju i registrirajte svoj uređaj. Pretpostavljamo osnovno znanje o TTN -u, ako se ne pozivamo na vodič za brzi početak
  2. Na izborniku aplikacija odaberite "Integracije", a zatim "dodaj integraciju"
  3. Odaberite HTTP integraciju
  4. Unesite polja koja slijede sliku i zamijenite ih svojim EC2 ip ili javnim DNS -om

Korak 13: Obrada podataka

Za svaki niz podataka T prikupljenih od senzora morate izvršiti sljedeće korake:

  1. Nabavite skup tuplea s GPS koordinatama koji padaju u lokalnom području T. Lokalno područje su sve torte koje se nalaze 100 metara oko T.
  2. Za svaki najbliži tuple N izračunajte kvadratnu sredinu osi akcelerometra Z-osi u N. U pseudokodu: srednja vrijednost = zbroj ([x. Z_accel ** 2 za x u blizini]) / blizu. Veličina
  3. Izračunajte kvadratnu standardnu devijaciju. U pseudokodu: std = sum ([(x. Z_accel ** 2 - srednja vrijednost) ** 2 za x u blizini])
  4. Ispis u ovom formatu: lat, long, Z_accel ** 2, mean, std

Za izračun lokalnog područja upotrijebite GPS udaljenost u metrima. U C ++:

#define D2R (M_PI / 180.0)

#define EARTH_RAY 6371 double distance (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; dvostruka dlat = (lat2 - lat1) * D2R; dvostruko a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); dvostruki c = 2 * atan2 (sqrt (a), sqrt (1-a));

Sada, koristeći međupodatke generirane u prethodnom koraku, otkrijte anomalije i napravite naivnu klasifikaciju pomoću ovog isječka primijenjenog na svaki redak:

linija = karta (float, line.split (","))

v = linija [2] srednja = linija [3] std = linija [4] ako je v (srednja + std*3): ako je v (srednja + std*2): ako je v (srednja + std): o.append ([1, redak [0], redak [1]) ostalo: o.append ([2, redak [0], redak [1]) ostalo: o.append ([3, redak [0], redak [1])

Anomalije se klasificiraju prema pravilu 68–95–99,7

Sada imate zbirku s ovim formatom [vrsta, lat, dugo].

Značenje tipa je sljedeće:

  1. Mala anomalija, vjerojatno nebitna
  2. Srednja anomalija
  3. Kritična anomalija

Korak 14: Vizualizacija

Vizualizacija
Vizualizacija

Da bismo razumjeli i možda promijenili dio vizualizacije, moramo naučiti kako koristiti prilagođene markere, značajku API -ja Google karata

Prvo, karta se mora inicijalizirati u povratnom pozivu:

funkcija initMap () {

podaci = upitData (); map = new google.maps. Map (document.getElementById ('map'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); napomena(); }

Navedite naziv ovog povratnog poziva u URL -u (ovdje smo ga umetnuli prije našeg API ključa) u HTML oznaci:

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

Oznaka se može umetnuti u kartu kada se objekt stvori:

novi google.maps. Marker ({položaj: {lat: LATITUDE, lng: LONGITUDE}, karta: karta, ikona: “/path/to/icon.png”})

U kodu možete vidjeti da je za svaki podatak u skupu podataka o anomalijama umetnut marker (vidi funkciju remark ()), a ikona se temelji na klasi anomalije. Kada ovo pokrenemo u preglednik, možemo istražiti kartu u kojoj se anomalije mogu filtrirati pomoću potvrdnih okvira, kao što se vidi na slici.

Korak 15: Krediti i vanjske veze

Ovaj projekt izradili su Giovanni De Luca, Andrea Fioraldi i Pietro Spadaccino, prve godine magisterija inženjerstva studenata računarstva na Sveučilištu Sapienza u Rimu.

  • Slajdovi koje su autori koristili za predstavljanje ovog dokaza koncepta:

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

  • GitHub repo sa svim kodom:

    github.com/roadteam

Preporučeni: