Sadržaj:

Monitoring puteva: 15 koraka
Monitoring puteva: 15 koraka

Video: Monitoring puteva: 15 koraka

Video: Monitoring puteva: 15 koraka
Video: Обзор Razer Blade 15 Advanced 2024, Novembar
Anonim
Monitoring puteva
Monitoring puteva

Danas ćemo vam pokazati kako smo postavili sistem za praćenje anomalija na cestama zasnovan na akcelerometarima, LoRaWAN -u, Amazon web servisima i Google Cloud API -ju.

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

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

Senzor će povremeno snimati podatke akcelerometra 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 cloud servera i HTTP integracija na TTN -u.

Korak 3: Postavljanje oblaka

Postavljanje oblaka
Postavljanje oblaka

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

  • Kinesis, za rukovanje dolaznim tokom podataka;
  • Lambda, za filtriranje i prethodnu obradu podataka prije skladištenja;
  • S3, za pohranu svih podataka;
  • EC2, za analizu podataka i za smještaj našeg front-enda.

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. Kliknite na Kreiraj funkciju
  3. U gornjem dijelu stranice potrebno je odabrati Autor iz ogrebotine. Zatim popunite ostala polja kao na slici, a zatim kliknite Kreiraj 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 stream podataka

Postavite AWS Kinesis Firehose stream podataka
Postavite AWS Kinesis Firehose stream podataka
  1. Vratite se sada na glavnu stranicu AWS konzole, a u Usluge idite na Kinesis
  2. Sada ste na glavnoj stranici Kinesis. S desne strane stranice u odjeljku "Kinesis Firehose isporuka tokova" odaberite "Kreiraj novi tok isporuke"
  3. U "Naziv toka isporuke" napišite "tok-nadzor-ceste". Ostala polja ostavite zadanim i kliknite dalje
  4. Sada u odjeljku „Transformiraj izvorne zapise pomoću AWS Lambda“odaberite Omogućeno, a kao Lambda funkcija kliknite na novostvorenu „nadzor ceste-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 S3 odredište odaberite Kreiraj novi. 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 jedan od dva uvjeta zadovoljen. 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 sigurnosne dozvole za Kinesis, jer mora pozvati Lambda funkciju za predprocesiranje, a zatim će pisati na S3

  1. Pri dnu stranice na kojoj ste u „IAM ulozi“odaberite „Kreiraj novu po izboru“, kreirajte novu IAM ulogu kao na slici i kliknite Dozvoli
  2. Sada ste se vratili na prethodnu stranicu, kliknite na sljedeće. Sada biste mogli dvaput provjeriti sve parametre. Kada završite, kliknite na "Kreiraj 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 povlač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 EC2 uslugu
  2. Kliknite na Launch Instance
  3. U gornju traku za pretraživanje zalijepite ovaj kod: ‘ami-08935252a36e25f85’, to je identifikacijski kod unaprijed konfigurirane virtualne mašine za upotrebu. Kliknite Odaberi s desne strane
  4. Odaberite t2.micro iz stupca „Vrsta“i kliknite „Pregledaj i pokreni“. Još ne pokrećite instancu, idite 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. Kliknite ponovo na „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 „Kreiraj 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: nećete moći ponovo preuzeti ključ. Nakon preuzimanja ključa.pem instanca je spremna za pokretanje

Korak 9: Pristupite svojoj EC2 instanci

Pristupite svojoj EC2 instanci
Pristupite svojoj EC2 instanci

Vaša nova EC2 instanca nalazi se u AWS oblaku. Na njega se možete povezati pomoću datoteke ključa 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. Sa ssh klijentom sada unesite naredbu:

ssh -i ec2-road-monitoring.pem ec2-user@VAŠ-IP-ADDR-ILI-DNS

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

Sada nastavite povlačenjem koda na strani servera

git clone --recursive

Korak 10: Preuzmite API za Google karte

Preuzmite Google Maps API
Preuzmite Google Maps API

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. Odaberite "Karte" u izborniku, a zatim kliknite Nastavi
  4. Kao naziv projekta unesite „nadzor puta“i kliknite Dalje
  5. Unesite podatke o naplati i kliknite Nastavi
  6. Sada je vaš projekt spreman i API ključ ćemo dobiti klikom na API -ji i usluge -> Vjerodajnice

Korak 11: Pokrenite Server

Pokreni server
Pokreni server

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

Sada je sve spremno i 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

Izvršite HTTP integraciju na mreži Things
Izvršite HTTP integraciju na mreži Things

Sada kada imamo pozadinsku infrastrukturu i radimo, možemo obraditi kako bismo izvršili HTTP integraciju.

  1. Kreirajte novu aplikaciju i registrirajte svoj uređaj. Pretpostavljamo osnovno znanje o TTN -u, ako se ne pozivamo na vodič za brzi početak
  2. U izborniku aplikacije 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 koji imaju GPS koordinate 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 akcelerometra Z-osi u N. U pseudokodu: srednja vrijednost = zbroj ([x. Z_accel ** 2 za x u blizini]) / blizu.size
  3. Izračunajte kvadratnu standardnu devijaciju. U pseudokodu: std = zbir ([(x. Z_accel ** 2 - srednja vrijednost) ** 2 za x u blizini])
  4. Izlaz u ovom formatu: lat, long, Z_accel ** 2, mean, std

Za izračunavanje lokalnog područja koristite GPS udaljenost u metrima. U C ++:

#define D2R (M_PI / 180.0)

#define EARTH_RAY 6371 dvostruka udaljenost (dvostruka lat1, dupla long1, dvostruka lat2, dvostruka duga2) {dvostruka dlong = (duga2 - duga1) * 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 koristeći ovaj isječak primijenjen 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, red [0], red [1]) else: o.append ([2, line [0], line [1]) else: o.append ([3, red [0], red [1])

Anomalije se klasificiraju prema pravilu 68–95–99.7

Sada imate zbirku ovog formata [tip, lat, dugačak].

Značenje tipa je sljedeće:

  1. Mala anomalija, vjerovatno 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, što je značajka API -ja Google Maps

Prvo, mapa mora biti inicijalizirana povratnim pozivom:

funkcija initMap () {

data = queryData (); map = new google.maps. Map (document.getElementById ('map'), {zoom: 15, centar: {lat: data [0] [1], lng: data [0] [2]}}); opaska (); }

Navedite naziv ovog povratnog poziva u url -u (ovdje smo 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"

Marker se može umetnuti u kartu kada se objekt kreira:

novi google.maps. Marker ({položaj: {lat: LATITUDE, lng: LONGITUDE}, mapa: 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 je zasnovana na klasi anomalije. Kada ovo pokrenemo u preglednik, možemo istražiti kartu u kojoj se anomalije mogu filtrirati pomoću polja za potvrdu, kao što se vidi na slici.

Korak 15: Krediti i vanjske veze

Ovaj projekat su izradili Giovanni De Luca, Andrea Fioraldi i Pietro Spadaccino, prve godine master studija inženjerstva studenata računarstva na Univerzitetu 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čuje se: