Turinys:

Kelių stebėjimas: 15 žingsnių
Kelių stebėjimas: 15 žingsnių

Video: Kelių stebėjimas: 15 žingsnių

Video: Kelių stebėjimas: 15 žingsnių
Video: Riebalų deginimas ir raumenų auginimas 2024, Lapkritis
Anonim
Kelių stebėjimas
Kelių stebėjimas

Šiandien mes jums parodysime, kaip sukūrėme kelių anomalijų stebėjimo sistemą, pagrįstą akselerometrais, „LoRaWAN“, „Amazon Web Services“ir „Google Cloud“API.

1 žingsnis: Reikalavimai

  • DISCO-L072CZ-LRWAN1 plokštė
  • X-NUCLEO-IKS01A2 išplėtimo modulis (akceleratoriui)
  • X-NUCLEO-GNSS1A1 (lokalizacijai)
  • AWS sąskaita
  • „Google Cloud Platform“paskyra

2 veiksmas: jutiklio programinės įrangos kūrimas ir mirksėjimas

Prijunkite IKS01A2 ir GNSS1A1 plokštės viršuje per GPIO kaiščius. Atsisiųskite programinės įrangos kodą iš „GitHub“. Sukurkite (jei dar neturite) paskyrą „ARM Mbed“ir importuokite kodą į internetinio kompiliatoriaus repą. Nustatykite tikslinę platformą į DISCO-L072CZ-LRWAN1 ir išsaugokite projektą. Dabar eikite į „The Things Network“ir sukurkite paskyrą, jei jos dar neturite. Sukurkite programą, sukurkite naują įrenginį programos viduje ir nustatykite ryšio režimą į OTAA. Paimkite atitinkamus parametrus, kad užpildytumėte šiuos laukus faile „mbed_app.json“: „lora.appskey“, „lora.nwkskey“, „lora.device-address“.

Jutiklis periodiškai įrašys akselerometro ir GNSS duomenis ir siunčia juos per LoRa ryšį į artimiausius vartus, kurie juos persiųs į mūsų programą „The Things Network“. Kitas žingsnis yra nustatyti debesies serverį ir HTTP integraciją TTN.

3 žingsnis: nustatykite debesį

Debesies nustatymas
Debesies nustatymas

Dabar esame pasirengę sukurti debesų infrastruktūrą, kuri rinks ir kaups duomenis iš visų dislokuotų plokščių. Ši infrastruktūra parodyta žemiau esančiame paveikslėlyje, ją sudaro:

  • Kinezė, skirta apdoroti gaunamą duomenų srautą;
  • Lambda, norint filtruoti ir iš anksto apdoroti duomenis prieš juos saugojant;
  • S3, saugoti visus duomenis;
  • EC2, analizuoti duomenis ir talpinti mūsų sąsają.

4 veiksmas: nustatykite „AWS Lambda“

Nustatykite „AWS Lambda“
Nustatykite „AWS Lambda“

Mes iliustruosime veiksmus, būtinus šiai infrastruktūrai sukurti, pradedant „Lambda“.

  1. Prisijunkite naudodami savo AWS paskyrą ir pagrindiniame konsolės puslapyje eikite į „Lambda“
  2. Spustelėkite Sukurti funkciją
  3. Viršutinėje puslapio dalyje reikia pasirinkti Autorius iš „Scratch“. Tada užpildykite kitus laukus, kaip parodyta paveikslėlyje, tada spustelėkite Sukurti funkciją
  4. Dabar, kai sukūrėte „AWS Lambda“funkciją, eikite į https://github.com/roadteam/data-server ir nukopijuokite failo aws_lambda.py turinį į redaktorių, kurį rasite antroje puslapio pusėje. Jūsų „Lambda“funkcija dabar paruošta:)

5 veiksmas: nustatykite „AWS Kinesis Firehose“duomenų srautą

Nustatykite „AWS Kinesis Firehose“duomenų srautą
Nustatykite „AWS Kinesis Firehose“duomenų srautą
  1. Grįžkite į pagrindinį AWS konsolės puslapį ir eikite į „Kinesis“į „Paslaugos“
  2. Dabar esate pagrindiniame „Kinesis“puslapyje. Puslapio dešinėje, skiltyje „Kinesis Firehose pristatymo srautai“, pasirinkite „Sukurti naują pristatymo srautą“
  3. Skiltyje „Pristatymo srauto pavadinimas“parašykite „kelių stebėjimo srautas“. Kituose laukuose palikite numatytuosius nustatymus ir spustelėkite „Kitas“
  4. Dabar skiltyje „Šaltinio įrašų transformavimas naudojant„ AWS Lambda “pasirinkite Įgalinta ir kaip„ Lambda “funkcija spustelėkite naujai sukurtą„ kelių stebėjimo lambda “. Nesijaudinkite, jei pasirodys įspėjimas apie funkcijos skirtąjį laiką, nes mūsų atliekama operacija nėra brangi. Kituose laukuose palikite numatytuosius nustatymus ir spustelėkite „Kitas“
  5. Kaip paskirties vietą pasirinkite „Amazon S3“, o kaip „S3“paskirties vietą - „Sukurti naują“. Kaip kibiro pavadinimą įveskite „kelių stebėjimo kaušas“ir tada eikite. Dabar palikite kitus laukus numatytuosius ir spustelėkite Pirmyn
  6. Galbūt norite nustatyti buferio dydį 1 MB, o buferio intervalą - 60 sekundžių. Buferis bus praplaunamas į S3, kai bus įvykdyta viena iš dviejų sąlygų. Neišeikite iš puslapio, žiūrėkite kitą veiksmą

6 veiksmas: nustatykite IAM vaidmenį kinezei

Nustatykite „IAM“vaidmenį „Kinesis“
Nustatykite „IAM“vaidmenį „Kinesis“

Dabar mes nustatėme „Kinesis“saugos leidimus, nes ji turi iškviesti „Lambda“funkciją išankstiniam apdorojimui ir tada ji bus parašyta S3

  1. Puslapio apačioje, kuriame esate „IAM vaidmuo“, pasirinkite „Sukurti naują pasirinkimą“, sukurkite naują IAM vaidmenį, kaip parodyta paveikslėlyje, ir spustelėkite Leisti
  2. Dabar grįžote į ankstesnį puslapį, spustelėkite kitą. Dabar galbūt norėsite dar kartą patikrinti visus parametrus. Baigę spustelėkite „Sukurti pristatymo srautą“

Dujotiekis „Kinesis-Lambda-S3“pradėtas eksploatuoti!

7 veiksmas: nustatykite AWS EC2

Nustatykite AWS EC2
Nustatykite AWS EC2

Dabar mes sukursime EC2 egzempliorių su kai kuriomis API, kurios leis mums stumti ir ištraukti duomenis iš AWS debesies, taip pat serverį, kuriame yra mūsų programų priekinė sąsaja. Gamybos aplinkoje galbūt norėsite paskelbti API naudodami labiau keičiamo dydžio AWS API šliuzą.

  1. Pagrindiniame AWS konsolės puslapyje eikite į EC2 paslaugą
  2. Spustelėkite Paleisti egzempliorių
  3. Viršutinėje paieškos juostoje įklijuokite šį kodą: „ami-08935252a36e25f85“, tai yra iš anksto sukonfigūruotos virtualios mašinos, kurią norite naudoti, identifikavimo kodas. Dešinėje spustelėkite Pasirinkti
  4. Stulpelyje „Tipas“pasirinkite t2.micro ir spustelėkite „Peržiūrėti ir paleisti“. Dar nepaleiskite egzemplioriaus, pereikite prie kito veiksmo

8 veiksmas: nustatykite IAM saugos vaidmenį EC2

Nustatykite IAM saugos vaidmenį EC2
Nustatykite IAM saugos vaidmenį EC2
  1. Prieš paleisdami norime pakeisti mūsų egzemplioriaus saugos grupę. Norėdami tai padaryti, skilties „Saugumo grupės“dešinėje spustelėkite „Redaguoti saugos grupes“. Nustatykite naują saugos grupę taip. Tai iš esmės sukonfigūruoja jūsų egzempliorių, atskleidžiantį 22 SSH ryšio prievadą ir 80 prievadą http paslaugoms
  2. Dar kartą spustelėkite „Peržiūrėti ir paleisti“. Dabar patikrinkite, ar nustatyti visi parametrai. Baigę spustelėkite Paleisti
  3. Spustelėjus pasirodys naujas langas, kuriame bus nustatyta raktų pora ssh ryšiui su egzemplioriumi. Pasirinkite „Sukurti naują raktų porą“ir kaip pavadinimą įveskite „ec2-road-monitoring“. Spustelėkite Atsisiųsti raktų porą. Labai svarbu, kad šis failas būtų pamestas arba (dar blogiau) saugomas nesaugiai: negalėsite vėl atsisiųsti rakto. Atsisiuntus.pem raktą, egzempliorius yra paruoštas paleisti

9 veiksmas: pasiekite savo EC2 egzempliorių

Pasiekite savo EC2 egzempliorių
Pasiekite savo EC2 egzempliorių

Jūsų naujas EC2 egzempliorius yra AWS debesyje. Prie jo galite prisijungti naudodami anksčiau atsisiųstą raktų failą (šioje pamokoje darome prielaidą, kad žinote ssh pagrindus). Galite gauti egzemplioriaus IP, pasirinkę jį prietaisų skydelyje skiltyje „Aprašymas“taip: Galite naudoti tiek savo viešąjį IP, tiek viešąjį DNS. Dabar naudodami ssh klientą įveskite komandą:

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

kur „ec2-road-monitoring.pem“yra jūsų raktas, sukurtas anksčiau.

Dabar ištraukite serverio pusės kodą

git klonas-rekursyvus

10 veiksmas: gaukite „Google“žemėlapių API

Gauti „Google“žemėlapių API
Gauti „Google“žemėlapių API

Mes beveik baigėme. Dabar mes turime nustatyti „Google“žemėlapių API savo html puslapyje, kad vartotojui būtų rodomas žemėlapis su kelio taškais:

  1. Prisijunkite prie „Google“paskyros ir eikite į
  2. Puslapio kairėje spustelėkite „Pradėti“
  3. Meniu pasirinkite „Žemėlapiai“, tada spustelėkite tęsti
  4. Kaip projekto pavadinimą įveskite „kelių stebėjimas“ir spustelėkite Pirmyn
  5. Įveskite atsiskaitymo informaciją ir spustelėkite Tęsti
  6. Dabar jūsų projektas paruoštas ir mes gausime API raktą spustelėdami API ir paslaugos -> Įgaliojimai

11 veiksmas: paleiskite serverį

Paleisti serverį
Paleisti serverį

Ir čia yra jūsų API raktas. Paskutinis dalykas, kurį turite padaryti, yra eiti į data_visualization/anomalies_map.html ir nukopijuoti raktą į failo pabaigą taip, pakeičiant „YOUR-KEY-HERE“

Dabar viskas paruošta ir paruošta kelionei! Norėdami pradėti vykdyti EC2 egzemplioriuje: „cd data-server“„python flask_app.py“

Įveskite savo naršyklėje savo EC2 egzemplioriaus IP arba dns adresą, turėtumėte pamatyti anomalijų žemėlapį su kai kuriais netikrais duomenimis

12 veiksmas: atlikite HTTP integravimą daiktų tinkle

Atlikite HTTP integravimą daiktų tinkle
Atlikite HTTP integravimą daiktų tinkle

Dabar, kai turime visą vidinę infrastruktūrą, galime apdoroti HTTP integraciją.

  1. Sukurkite naują programą ir užregistruokite savo įrenginį. Mes prisiimame pagrindines žinias apie TTN, jei ne, žiūrėkite trumpą pradžios vadovą
  2. Programos meniu pasirinkite „Integracijos“, tada „pridėti integraciją“
  3. Pasirinkite HTTP integraciją
  4. Įveskite laukus po paveikslėliu ir pakeiskite juos EC2 ip arba viešuoju DNS

13 žingsnis: duomenų apdorojimas

Kiekvienam duomenų rinkiniui T, surinktam iš jutiklio, turite atlikti šiuos veiksmus:

  1. Gaukite kortelių rinkinį, kurio GPS koordinatės krenta T. vietinėje zonoje. Vietinė sritis yra visos kortelės, esančios 100 metrų aplink T.
  2. Kiekvienam artimiausiam kartui N apskaičiuokite pagreičio matuoklio Z ašies kvadratinį vidurkį N.
  3. Apskaičiuokite kvadratinį standartinį nuokrypį. Pseudokode: std = suma ([(x. Z_accel ** 2 - vidurkis) ** 2 x x arti])
  4. Išvestis tokiu formatu: lat, long, Z_accel ** 2, mean, std

Norėdami apskaičiuoti vietinę vietovę, naudokite GPS atstumą metrais. C ++:

#define D2R (M_PI / 180.0)

#define EARTH_RAY 6371 dvigubas atstumas (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; dvigubas dlatas = (lat2 - lat1) * D2R; dvigubas a = pow (sin (dlat/2,0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2,0), 2); dvigubas c = 2 * atan2 (sqrt (a), sqrt (1-a));

Dabar, naudodami tarpinius duomenis, sugeneruotus ankstesniame žingsnyje, nustatykite anomalijas ir atlikite naivų klasifikavimą, naudodami šią ištrauktą kiekvienai eilutei:

linija = žemėlapis (plūdė, eilutė.split (","))

v = eilutė [2] vidurkis = eilutė [3] std = eilutė [4], jei v (vidurkis + std*3): jei v (vidurkis + std*2): jei v (vidurkis + std): o.pridėti ([1, [0] eilutė, [1] eilutė]) else: o.append ([2, [0] line, [1]) else: o.append ([3, [0] line, line [1])

Anomalijos klasifikuojamos naudojant 68–95–99,7 taisyklę

Dabar turite tokio formato kolekciją [tipas, latas, ilgas].

Tipo reikšmė yra tokia:

  1. Nedidelė anomalija, tikriausiai nesvarbi
  2. Vidutinė anomalija
  3. Kritinė anomalija

14 žingsnis: vizualizacija

Vizualizacija
Vizualizacija

Norėdami suprasti ir galbūt pakeisti vizualizacijos dalį, turime išmokti naudoti pasirinktinius žymeklius - „Google“žemėlapių API funkciją

Pirma, žemėlapis turi būti inicijuotas atgalinio skambučio metu:

function initMap () {

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

Nurodykite šio atšaukimo pavadinimą URL (įterpėme čia prieš mūsų API raktą) HTML žymoje:

scenarijus async atidėti src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"

Sukūrus objektą, žemėlapyje galima įterpti žymeklį:

naujas google.maps. Marker ({pozicija: {lat: LATITUDE, lng: LONGITUDE}, žemėlapis: žemėlapis, piktograma: „/path/to/icon.png“})

Kode galite matyti, kad kiekvienam anomalijų duomenų rinkinio duomenims įterpiamas žymeklis (žr. Funkciją „pastaba“), o piktograma yra pagrįsta anomalijos klase. Paleidę tai naršyklėje, galime ištirti žemėlapį, kuriame anomalijas galima filtruoti naudojant žymimuosius laukelius, kaip parodyta paveikslėlyje.

15 žingsnis: Kreditai ir išorinės nuorodos

Šį projektą atliko Giovanni De Luca, Andrea Fioraldi ir Pietro Spadaccino, Romos Sapienza universiteto informatikos inžinerijos magistro laipsnio pirmakursiai.

  • Skaidrės, kurias autoriai pateikė šiam koncepcijos įrodymui:

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

  • „GitHub“repos su visu kodu:

    github.com/roadteam

Rekomenduojamas: