Sadržaj:
- Korak 1: Zahtjevi
- Korak 2: Izrada i ažuriranje firmvera senzora
- Korak 3: Postavljanje oblaka
- Korak 4: Postavite AWS Lambda
- Korak 5: Postavite AWS Kinesis Firehose stream podataka
- Korak 6: Postavite IAM ulogu za kinezu
- Korak 7: Postavite AWS EC2
- Korak 8: Postavite IAM sigurnosnu ulogu za EC2
- Korak 9: Pristupite svojoj EC2 instanci
- Korak 10: Preuzmite API za Google karte
- Korak 11: Pokrenite Server
- Korak 12: Izvedite HTTP integraciju na mreži Things
- Korak 13: Obrada podataka
- Korak 14: Vizualizacija
- Korak 15: Krediti i vanjske veze
Video: Monitoring puteva: 15 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
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
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
Ilustrirat ćemo korake potrebne za postavljanje ove infrastrukture, počevši od Lambde.
- Prijavite se sa svojim AWS računom, a s glavne stranice konzole idite na Lambda
- Kliknite na Kreiraj funkciju
- U gornjem dijelu stranice potrebno je odabrati Autor iz ogrebotine. Zatim popunite ostala polja kao na slici, a zatim kliknite Kreiraj funkciju
- 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
- Vratite se sada na glavnu stranicu AWS konzole, a u Usluge idite na Kinesis
- Sada ste na glavnoj stranici Kinesis. S desne strane stranice u odjeljku "Kinesis Firehose isporuka tokova" odaberite "Kreiraj novi tok isporuke"
- U "Naziv toka isporuke" napišite "tok-nadzor-ceste". Ostala polja ostavite zadanim i kliknite dalje
- 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
- 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
- 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
Sada postavljamo sigurnosne dozvole za Kinesis, jer mora pozvati Lambda funkciju za predprocesiranje, a zatim će pisati na S3
- Pri dnu stranice na kojoj ste u „IAM ulozi“odaberite „Kreiraj novu po izboru“, kreirajte novu IAM ulogu kao na slici i kliknite Dozvoli
- 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
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.
- S glavne stranice AWS konzole idite na EC2 uslugu
- Kliknite na Launch Instance
- 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
- 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
- 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
- Kliknite ponovo na „Pregledaj i pokreni“. Sada provjerite jesu li postavljeni svi parametri. Kada završite, kliknite Pokreni
- 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
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
Skoro smo gotovi. Sada moramo postaviti google maps API na našu html stranicu kako bismo korisniku prikazali kartu s međutočkama:
- Prijavite se na svoj Google račun i idite na
- Kliknite na „Započni“na lijevoj strani stranice
- Odaberite "Karte" u izborniku, a zatim kliknite Nastavi
- Kao naziv projekta unesite „nadzor puta“i kliknite Dalje
- Unesite podatke o naplati i kliknite Nastavi
- Sada je vaš projekt spreman i API ključ ćemo dobiti klikom na API -ji i usluge -> Vjerodajnice
Korak 11: Pokrenite 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
Sada kada imamo pozadinsku infrastrukturu i radimo, možemo obraditi kako bismo izvršili HTTP integraciju.
- Kreirajte novu aplikaciju i registrirajte svoj uređaj. Pretpostavljamo osnovno znanje o TTN -u, ako se ne pozivamo na vodič za brzi početak
- U izborniku aplikacije odaberite "Integracije", a zatim "dodaj integraciju"
- Odaberite HTTP integraciju
- 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:
- 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.
- 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
- Izračunajte kvadratnu standardnu devijaciju. U pseudokodu: std = zbir ([(x. Z_accel ** 2 - srednja vrijednost) ** 2 za x u blizini])
- 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:
- Mala anomalija, vjerovatno nebitna
- Srednja anomalija
- Kritična anomalija
Korak 14: 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:
Monitoring staklenika sa IOT -om: 5 koraka
Monitoring staklenika s IOT -om: Što se tiče poljoprivrede, praćenje temperature & vlažnost biljaka važan je faktor za njihov opstanak. Trenutno ljudi koriste termometre pričvršćene u stakleniku kako bi poljoprivrednici mogli mjeriti temperaturu. Međutim, ova ručna aplikacija
MQ7-MONITORING ZAGAĐENJA KORIŠTENJEM GOVORA I NODEMCU: 4 koraka
MQ7 MONITORING ZAGAĐENJA ZAŠTITA KORIŠĆENJEM GOVORA I NODEMCU-a: Zagađenje je glavni problem današnjeg svijeta. Ali kako možemo pratiti naše zagađenje u blizini, sada je vrlo jednostavno. POČINIMO:
ThingSpeak-IFTTT-ESP32-Predictive-Machine-Monitoring: 10 koraka
ThingSpeak-IFTTT-ESP32-Predictive-Machine-Monitoring: U ovom projektu mjerit ćemo vibracije i temperaturu pomoću NCD senzora vibracija i temperature, ESP32 i ThingSpeak. Također ćemo poslati različita očitanja temperature i vibracija u Google tablicu koristeći ThingSpeak i IFTTT za analizu vibr
IoT Pool Monitoring with ThingsBoard: 8 koraka
IoT praćenje bazena pomoću ThingsBoarda: Ova instrukcija će pokazati kako pratiti pH, ORP i temperaturu bazena ili toplice i prenijeti podatke na uslugu vizualizacije i pohrane ThingsBoard.io
Broj koraka / koraka: 3 koraka
পেনড্রাইভ / মেমোরি কার্ডে ভাইরাসের ভাইরাসের হারিয়ে সমাধান সমাধান সমাধান সমাধান সমাধান পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি এখন এখন এখন।।।।।। Zaštita podataka, pristup prečicama / virusima