Sisällysluettelo:

Tievalvonta: 15 vaihetta
Tievalvonta: 15 vaihetta

Video: Tievalvonta: 15 vaihetta

Video: Tievalvonta: 15 vaihetta
Video: Обзор Razer Blade 15 Advanced 2024, Marraskuu
Anonim
Tievalvonta
Tievalvonta

Tänään näytämme sinulle, kuinka asensimme kiihtyvyysmittariin, LoRaWANiin, Amazon Web Servicesiin ja Google Cloud -sovellusliittymään perustuvat tiepoikkeamien seurantajärjestelmän.

Vaihe 1: Vaatimukset

  • DISCO-L072CZ-LRWAN1-levy
  • X-NUCLEO-IKS01A2-laajennusmoduuli (kiihtyvyysmittaria varten)
  • X-NUCLEO-GNSS1A1 (lokalisointiin)
  • AWS -tili
  • Google Cloud Platform -tili

Vaihe 2: Anturin laiteohjelmiston luominen ja vilkkuminen

Kytke IKS01A2 ja GNSS1A1 levyn päälle GPIO -nastojen kautta. Lataa laiteohjelmiston koodi GitHubista. Luo (jos sinulla ei vielä ole) tili ARM Mbedissä ja tuo koodi online -kääntäjän repossa. Aseta kohdealustaksi DISCO-L072CZ-LRWAN1 ja tallenna projekti. Siirry nyt The Things -verkkoon ja luo tili, jos sinulla ei vielä ole sitä. Luo sovellus, luo uusi laite sovelluksen sisällä ja aseta yhteystilaksi OTAA. Tartu sopiviin parametreihin ja täytä seuraavat mbed_app.json-tiedoston kentät: "lora.appskey", "lora.nwkskey", "lora.device-address".

Anturi tallentaa ajoittain kiihtyvyysmittarin ja GNSS -tiedot ja lähettää ne LoRa -yhteyden kautta lähimpään yhdyskäytävään, joka välittää ne edelleen The Things Network -sovellukseemme. Seuraava askel on määrittää pilvipalvelin ja HTTP -integrointi TTN: ään.

Vaihe 3: Määritä pilvi

Pilven määrittäminen
Pilven määrittäminen

Nyt olemme valmiit ottamaan käyttöön pilvi -infrastruktuurin, joka kerää ja yhdistää tiedot kaikista käyttöönotetuista taulukoista. Tämä infrastruktuuri on esitetty alla olevassa kuvassa ja se koostuu:

  • Kinesis, tulevan datavirran käsittelyyn;
  • Lambda, suodattaa ja käsitellä tiedot ennen niiden tallentamista;
  • S3, tallentaa kaikki tiedot;
  • EC2, tietojen analysoimiseksi ja käyttöliittymän isännöimiseksi.

Vaihe 4: Määritä AWS Lambda

Aseta AWS Lambda
Aseta AWS Lambda

Havainnollistamme tämän infrastruktuurin luomiseksi tarvittavat vaiheet alkaen Lambdasta.

  1. Kirjaudu sisään AWS -tililläsi ja siirry Lambdalle konsolin pääsivulta
  2. Napsauta Luo toiminto
  3. Sivun yläosassa on valittava Kirjoittaja Scratchista. Täytä sitten muut kentät kuten kuvassa ja napsauta sitten Luo toiminto
  4. Nyt kun olet luonut AWS Lambda -toiminnon, siirry osoitteeseen https://github.com/roadteam/data-server ja kopioi aws_lambda.py-tiedoston sisältö editoriin, josta löydät sivun toisen puoliskon. Lambda -toiminto on nyt valmis:)

Vaihe 5: Määritä AWS Kinesis Firehose Data Stream

Määritä AWS Kinesis Firehose Data Stream
Määritä AWS Kinesis Firehose Data Stream
  1. Palaa nyt AWS -konsolin pääsivulle ja siirry Palveluihin Kinesis -palveluun
  2. Nyt olet Kinesiksen pääsivulla. Valitse sivun oikeasta reunasta Kinesis Firehose -toimitusvirrat -kohdasta Luo uusi toimitusvirta.
  3. Kirjoita "Toimitusvirran nimi" -kohtaan "tienvalvonta-virta". Jätä muut kentät oletusarvoisiksi ja napsauta Seuraava
  4. Valitse nyt”Muunna lähdetietueet AWS Lambdalla” -kohdasta Käytössä ja napsauta Lambda-funktiona äskettäin luotua”tienvalvonta-lambdaa”. Älä huolestu, jos näyttöön tulee varoitus toiminnon aikakatkaisusta, koska tekemämme toiminto ei ole laskennallisesti kallis. Jätä muut kentät oletusarvoisiksi ja napsauta Seuraava
  5. Valitse kohteeksi Amazon S3 ja S3 -kohteeksi Luo uusi. Kirjoita kauhan nimeksi "tienvalvonta-kauha" ja jatka sitten. Jätä nyt muut kentät oletusarvoisiksi ja napsauta Seuraava
  6. Voit halutessasi asettaa puskurikokoksi 1 Mt ja puskuriväliksi 60 sekuntia. Puskuri huuhdellaan S3: een aina, kun toinen kahdesta ehdosta täyttyy. Älä poistu sivulta, katso seuraava vaihe

Vaihe 6: Määritä IAM -rooli kinesikselle

Määritä IAM -rooli kinesikselle
Määritä IAM -rooli kinesikselle

Nyt määritämme Kinesiksen suojausoikeudet, koska sen on kutsuttava Lambda -toiminto esikäsittelyyn ja sitten se kirjoittaa S3: lle

  1. Valitse IAM -roolissa olevan sivun alareunasta Luo uusi valinta, luo uusi IAM -rooli kuten kuvassa ja napsauta Salli
  2. Nyt olet palannut edelliselle sivulle, napsauta seuraava. Nyt kannattaa tarkistaa kaikki parametrit. Kun olet valmis, napsauta Luo toimitusvirta

Kinesis-Lambda-S3-putki on käynnissä!

Vaihe 7: Määritä AWS EC2

Asenna AWS EC2
Asenna AWS EC2

Nyt perustamme EC2 -ilmentymän, jossa on joitain sovellusliittymiä, joiden avulla voimme työntää ja noutaa tietoja AWS -pilvestä ja myös palvelimelta, jossa sovellusten käyttöliittymä isännöidään. Tuotantoympäristössä saatat haluta julkaista sovellusliittymän skaalautuvampaa AWS API Gatewayta käyttämällä.

  1. Siirry AWS -konsolin pääsivulta EC2 -palveluun
  2. Napsauta Launch Instance
  3. Liitä ylempään hakupalkkiin tämä koodi: "ami-08935252a36e25f85", joka on käytettäväksi määritetyn virtuaalikoneen tunnistuskoodi. Napsauta Valitse oikealla
  4. Valitse t2.micro Tyyppi -sarakkeesta ja napsauta Tarkista ja käynnistä. Älä käynnistä ilmentymää vielä, siirry seuraavaan vaiheeseen

Vaihe 8: Määritä IAM: n suojausrooli EC2: lle

Määritä IAM: n suojausrooli EC2: lle
Määritä IAM: n suojausrooli EC2: lle
  1. Ennen käynnistämistä haluamme muokata esiintymän suojausryhmää. Voit tehdä tämän napsauttamalla Suojausryhmät -kohdan oikeassa reunassa Muokkaa suojausryhmiä Määritä uusi suojausryhmä seuraavasti. Tämä määrittää periaatteessa ilmentymän palomuurin, joka paljastaa portin 22 SSH -yhteydelle ja portin 80 http -palveluille
  2. Napsauta uudelleen "Tarkista ja käynnistä". Tarkista nyt, että kaikki parametrit on asetettu. Kun olet valmis, napsauta Käynnistä
  3. Napsautettaessa uusi ikkuna avautuu avainparin määrittämiseksi ssh -yhteydelle ilmentymään. Valitse "Luo uusi avainpari" ja kirjoita nimeksi "ec2-tien seuranta". Napsauta Lataa avainpari. On erittäin tärkeää, että tämä tiedosto katoaa tai (pahempaa) tallennetaan turvattomasti: et voi ladata avainta uudelleen. Kun.pem -avain on ladattu, ilmentymä on valmis käynnistettäväksi

Vaihe 9: Käytä EC2 -ilmentymääsi

Käytä EC2 -ilmentymääsi
Käytä EC2 -ilmentymääsi

Tuore EC2 -ilmentymäsi on AWS -pilvessä. Voit muodostaa yhteyden siihen aiemmin ladatulla avaintiedostolla (tässä opetusohjelmassa oletamme, että tiedät ssh: n perusteet). Voit hakea ilmentymän IP -osoitteen valitsemalla sen Kuvaus -osion koontinäytöstä seuraavasti: Voit käyttää sekä julkista IP -osoitettasi että julkista DNS -osoitettasi. Kirjoita nyt komento ssh -asiakasohjelmalla:

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

jossa ec2-road-monitoring.pem on avaimesi, joka on luotu aiemmin.

Jatka nyt palvelinpuolen koodin vetämistä läpi

git klooni-rekursiivinen

Vaihe 10: Hae Google Maps -sovellusliittymä

Hae Google Maps -sovellusliittymä
Hae Google Maps -sovellusliittymä

Olemme melkein valmiita. Nyt meidän on määritettävä Google Maps -sovellusliittymä html -sivullemme, jotta voimme näyttää kartan reittipisteineen käyttäjälle:

  1. Kirjaudu Google-tiliisi ja siirry osoitteeseen
  2. Napsauta "Aloita" sivun vasemmassa reunassa
  3. Valitse valikosta Kartat ja napsauta sitten Jatka
  4. Kirjoita projektin nimeksi "tienvalvonta" ja napsauta Seuraava
  5. Anna laskutustietosi ja napsauta Jatka
  6. Nyt projektisi on valmis ja saamme sovellusliittymäavaimen napsauttamalla sovellusliittymät ja palvelut -> käyttöoikeustiedot

Vaihe 11: Käynnistä palvelin

Käynnistä palvelin
Käynnistä palvelin

Ja siellä se on API -avaimesi. Viimeinen asia, jonka sinun tarvitsee tehdä, on siirtyä osoitteeseen data_visualization/anomalies_map.html ja kopioida avaimesi tiedoston loppuun samalla tavalla korvaamalla "YOUR-KEY-HERE"

Nyt kaikki on valmiina ja valmiina lähtöön! Aloita suorittaminen EC2-ilmentymässä: "cd data-server" "python flask_app.py"

Kirjoita selaimeesi EC2 -ilmentymän ip- tai dns -osoite, sinun pitäisi nähdä poikkeavuuksien kartta, jossa on joitain nuketietoja

Vaihe 12: Suorita HTTP -integrointi Things -verkkoon

Suorita HTTP -integrointi Things -verkossa
Suorita HTTP -integrointi Things -verkossa

Nyt kun meillä on kaikki taustainfrastruktuuri käynnissä, voimme käsitellä HTTP -integroinnin suorittamisen.

  1. Luo uusi sovellus ja rekisteröi laitteesi. Oletamme TTN: n perustiedot, jos ei, katso pika -aloitusopas
  2. Valitse sovellusvalikostasi "Integraatiot" ja sitten "Lisää integrointi"
  3. Valitse HTTP -integrointi
  4. Kirjoita kentät kuvan jälkeen ja korvaa ne EC2 ip: llä tai julkisella DNS: llä

Vaihe 13: Tietojen käsittely

Suorita seuraavat vaiheet jokaiselle anturilta kerätylle datan T: lle:

  1. Hanki joukko tupleja, joiden GPS -koordinaatit putoavat T: n lähialueelle. Paikallinen alue on kaikki tupelit, jotka ovat 100 metrin päässä T: stä.
  2. Laske kullekin lähimmälle korttelille N kiihtyvyysmittarin Z-akselin neliökeskiarvo N.
  3. Laske neliöllinen keskihajonta. Pseudokoodissa: std = summa ([(x. Z_accel ** 2 - keskiarvo) ** 2 x: lle lähellä])
  4. Lähtö tässä muodossa: lat, long, Z_accel ** 2, mean, std

Käytä paikallisen alueen laskemiseen GPS -etäisyyttä metreinä. C ++: ssa:

#define D2R (M_PI / 180.0)

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

Käytä nyt edellisessä vaiheessa luotuja välitietoja, havaitse poikkeavuudet ja tee naiivi luokitus käyttämällä kutakin riviä koskevaa katkelmaa:

rivi = kartta (float, line.split (","))

v = rivi [2] keskiarvo = rivi [3] std = rivi [4] jos v (keskiarvo + std*3): jos v (keskiarvo + std*2): jos v (keskiarvo + std): o.liitä ([1, rivi [0], rivi [1]) else: o.append ([2, rivi [0], rivi [1]) else: o.append ([3, rivi [0], rivi [1])

Poikkeamat luokitellaan käyttämällä sääntöjä 68–95–99,7

Nyt sinulla on kokoelma tässä muodossa [tyyppi, leveys, pitkä].

Tyypin merkitys on seuraava:

  1. Pieni poikkeama, luultavasti merkityksetön
  2. Keskikokoinen poikkeama
  3. Kriittinen anomalia

Vaihe 14: Visualisointi

Visualisointi
Visualisointi

Jotta voimme ymmärtää ja ehkä muuttaa visualisointiosaa, meidän on opittava käyttämään mukautettuja merkkejä, joka on Google Maps -sovellusliittymän ominaisuus

Ensinnäkin kartta on alustettava soittopyynnössä:

function initMap () {

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

Määritä tämän soittopyynnön nimi URL -osoitteessa (lisäsimme tämän ennen API -avaintamme) HTML -tagissa:

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

Merkki voidaan lisätä karttaan objektia luotaessa:

uusi google.maps. Marker ({sijainti: {lat: LATITUDE, lng: LONGITUDE}, kartta: kartta, kuvake: “/path/to/icon.png”})

Koodista näet, että jokaiseen poikkeavuuksien tietojoukon tietoon lisätään merkki (katso huomautus () -funktio) ja kuvake perustuu poikkeavuuden luokkaan. Kun suoritamme tämän selaimeen, voimme tutkia karttaa, jossa poikkeavuudet voidaan suodattaa valintaruutujen avulla, kuten kuvassa näkyy.

Vaihe 15: Hyvitykset ja ulkoiset linkit

Tämän projektin tekivät Giovanni De Luca, Andrea Fioraldi ja Pietro Spadaccino, ensimmäisen vuoden insinööritieteiden maisteri tietotekniikan opiskelijoista Rooman Sapienzan yliopistossa.

  • Diat, joilla tekijät esittivät tämän käsitteen todistuksen:

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

  • GitHub -repot, joissa on kaikki koodit:

    github.com/roadteam

Suositeltava: