INHOUDSOPGAWE:

Padmonitering: 15 stappe
Padmonitering: 15 stappe

Video: Padmonitering: 15 stappe

Video: Padmonitering: 15 stappe
Video: 15 минут массажа лица для ЛИФТИНГА и ЛИМФОДРЕНАЖА на каждый день. 2024, November
Anonim
Padmonitering
Padmonitering

Vandag gaan ons u wys hoe ons 'n moniteringstelsel vir padafwykings opgestel het op grond van versnellingsmeters, LoRaWAN, Amazon Web Services en Google Cloud API.

Stap 1: Vereistes

  • DISCO-L072CZ-LRWAN1 bord
  • X-NUCLEO-IKS01A2 uitbreidingsmodule (vir die versnellingsmeter)
  • X-NUCLEO-GNSS1A1 (vir lokalisering)
  • 'N AWS -rekening
  • 'N Google Cloud Platform -rekening

Stap 2: Bou en flits die sensor se firmware

Verbind die IKS01A2 en GNSS1A1 bo -op die bord deur die GPIO -penne. Laai die firmware -kode van GitHub af. Skep (as u nog nie een het nie) 'n rekening op ARM Mbed en voer die kode in die repo op die aanlyn -samesteller in. Stel die teikenplatform op DISCO-L072CZ-LRWAN1 en stoor die projek. Gaan nou na The Things Network en skep 'n rekening as u dit nog nie het nie. Skep 'n toepassing, skep 'n nuwe toestel in die toepassing en stel die verbindingsmodus in op OTAA. Gryp die toepaslike parameters om die volgende velde in die mbed_app.json-lêer te vul: "lora.appskey", "lora.nwkskey", "lora.device-address".

Die sensor sal periodiek versnellingsmeter en GNSS -data opneem en dit via die LoRa -verbinding na die naaste poort stuur, wat dit na ons toepassing op The Things Network sal stuur. Die volgende stap is om 'n wolkbediener op te stel en 'n HTTP -integrasie op TTN.

Stap 3: Die opstel van die wolk

Die opstel van die wolk
Die opstel van die wolk

Nou is ons gereed om die wolkinfrastruktuur op te stel wat die data van al die ontplooide borde sal versamel en saamvoeg. Hierdie infrastruktuur word in die onderstaande figuur getoon en bestaan uit:

  • Kinesis, om die inkomende datastroom te hanteer;
  • Lambda, om die data te filtreer en vooraf te verwerk voordat dit gestoor word;
  • S3, om al die data te stoor;
  • EC2, om data te ontleed en ons front-end aan te bied.

Stap 4: Stel AWS Lambda op

Stel AWS Lambda op
Stel AWS Lambda op

Ons sal die stappe wat nodig is om hierdie infrastruktuur op te rig, illustreer, begin met Lambda.

  1. Teken in met u AWS -rekening en vanaf die konsole se hoofblad en gaan na Lambda
  2. Klik op Skep funksie
  3. In die boonste gedeelte van die bladsy moet dit gekies word as outeur uit Scratch. Voltooi dan die ander velde soos in die prentjie en klik dan op Maak funksie
  4. Noudat u 'n AWS Lambda-funksie geskep het, gaan na https://github.com/roadteam/data-server en kopieer die inhoud van die aws_lambda.py-lêer na die redakteur wat u in die tweede helfte van die bladsy vind. U Lambda -funksie is nou gereed:)

Stap 5: Stel AWS Kinesis Firehose -datastroom op

Stel AWS Kinesis Firehose -datastroom op
Stel AWS Kinesis Firehose -datastroom op
  1. Keer nou terug na die hoofblad van die AWS -konsole, en gaan na Kinesis na Services
  2. U is nou op die hoofblad van Kinesis. Regs op die bladsy, onder 'Kinesis Firehose afleweringsstrome', kies 'Skep nuwe afleweringsstroom'
  3. Skryf 'Road-monitoring-stream' in 'Naam van afleweringsstroom'. Laat die ander velde standaard toe en klik op volgende
  4. Kies nou onder 'Transformeer bronrekords met AWS Lambda' Ingeskakel, en klik as Lambda-funksie op die nuutgemaakte 'padmonitering-lambda'. Moenie bekommerd wees as 'n waarskuwing oor die tydsverloop van die funksie verskyn nie, aangesien die operasie wat ons doen nie berekeningsgewys duur is nie. Laat die ander velde standaard toe en klik op volgende
  5. Kies Amazon S3 as bestemming, en as S3 -bestemming, kies Create New. As die emmernaam, voer 'padmonitering-emmer' in en gaan dan. Laat die ander velde standaard toe en klik op Volgende
  6. U kan die grootte van die buffer op 1 MB en die bufferinterval op 60 sekondes stel. Die buffer word na S3 gespoel wanneer een van die twee voorwaardes voldoen. Moenie die bladsy verlaat nie, sien die volgende stap

Stap 6: Stel IAM -rol op vir Kinesis

Stel 'n IAM -rol op vir Kinesis
Stel 'n IAM -rol op vir Kinesis

Nou stel ons die beveiligingstoestemmings vir Kinesis op, aangesien dit die Lambda -funksie moet bel vir voorafverwerking, en dan sal dit op S3 skryf

  1. Onderaan die bladsy waarin u 'IAM -rol' het, kies 'Skep nuwe kies', skep 'n nuwe IAM -rol soos in die prentjie en klik op Laat toe
  2. Nou is u terug na die vorige bladsy, klik op volgende. Nou wil u moontlik al die parameters nagaan. As u klaar is, klik op 'Skep afleweringsstroom'

Die Kinesis-Lambda-S3 pyplyn is aan die gang!

Stap 7: Stel AWS EC2 op

Stel AWS EC2 op
Stel AWS EC2 op

Nou sal ons 'n EC2 -instansie opstel met 'n paar API's wat ons toelaat om data uit die AWS -wolk te stoot en te trek, en ook van die bediener waar ons ons programkant kan host. In die produksie -omgewing wil u dalk die API publiseer met behulp van die meer skaalbare AWS API Gateway.

  1. Gaan na die hoofblad van die AWS -konsole na EC2 -diens
  2. Klik op Launch Instance
  3. Plak hierdie kode in die boonste soekbalk: 'ami-08935252a36e25f85', dit is die identifiserende kode van die vooraf gekonfigureerde virtuele masjien om te gebruik. Klik Kies aan die regterkant
  4. Kies t2.micro in die kolom 'Type' en klik op 'Review and launch'. Begin nog nie die instansie nie, gaan na die volgende stap

Stap 8: Stel IAM -sekuriteitsrol op vir EC2

Stel IAM -sekuriteitsrol op vir EC2
Stel IAM -sekuriteitsrol op vir EC2
  1. Voordat ons begin, wil ons die veiligheidsgroep van ons instansie verander. Om dit te doen, klik heel regs in die afdeling 'Veiligheidsgroepe' op 'Wysig beveiligingsgroepe' Stel 'n nuwe veiligheidsgroep soos volg op. Dit stel basies die firewall van u instansie op wat poort 22 vir SSH -verbinding en poort 80 vir http -dienste blootstel
  2. Klik weer 'Review and Launch'. Kontroleer nou of al die parameters ingestel is. As u klaar is, klik op Begin
  3. As u klik, verskyn 'n nuwe venster om 'n sleutelpaar op te stel vir ssh -verbinding met die instansie. Kies 'Skep nuwe sleutelpaar' en voer as naam 'ec2-padmonitering' in. Klik op Laai sleutelpaar af. Dit is uiters belangrik dat hierdie lêer verdwaal of (erger) onveilig gestoor word: u kan die sleutel nie weer aflaai nie. Nadat die.pem -sleutel afgelaai is, is die instansie gereed om te begin

Stap 9: Kry toegang tot u EC2 -instansie

Kry toegang tot u EC2 -instansie
Kry toegang tot u EC2 -instansie

U vars EC2 -instansie is in die AWS -wolk. U kan daarby koppel met die sleutellêer wat voorheen afgelaai is (vir hierdie tutoriaal neem ons aan dat u die basiese beginsels van ssh ken). U kan die IP van die instansie ophaal deur dit in die paneelbord in die afdeling 'Beskrywing' soos volg te kies: U kan beide u openbare IP of u openbare DNS gebruik. Voer die opdrag nou in met 'n ssh -kliënt:

ssh -i ec2-road-monitoring.pem ec2-gebruiker@U-IP-ADDR-OF-DNS

waar ec2-road-monitoring.pem u sleutel was wat voorheen gegenereer is.

Gaan nou voort met die kode aan die bediener

git-kloon-rekursiewe

Stap 10: Haal Google Maps API op

Haal Google Maps API op
Haal Google Maps API op

Ons is amper klaar. Nou moet ons die Google maps API op ons html -bladsy instel om die kaart met die waypoints aan die gebruiker te vertoon:

  1. Meld aan by u Google-rekening en gaan na
  2. Klik op 'Aan die gang' aan die linkerkant van die bladsy
  3. Kies 'Kaarte' in die spyskaart en klik dan op voortgaan
  4. As projeknaam, voer 'padmonitering' in en klik op Volgende
  5. Voer u faktuurbesonderhede in en klik op Gaan voort
  6. Nou is u projek gereed, en ons kry die API -sleutel deur na API's en dienste te klik -> geloofsbriewe

Stap 11: Begin bediener

Begin bediener
Begin bediener

En daar is dit u API -sleutel. Die laaste ding wat u moet doen, is om na data_visualization/anomalies_map.html te gaan en u sleutel so aan die einde van die lêer te kopieer, deur 'U-SLEUTEL-HIER' te vervang

Nou is alles reg en gereed om te gaan! Om dit te begin uitvoer in die EC2-instansie: 'cd data-server' 'python flask_app.py'

Voer die ip- of dns -adres van u EC2 -instansie in u blaaier in; u moet die afwykingskaart met 'n paar data sien

Stap 12: Voer HTTP -integrasie uit op die Things Network

Voer HTTP -integrasie uit op die Things Network
Voer HTTP -integrasie uit op die Things Network

Noudat ons al die backend -infrastruktuur aan die gang het, kan ons verwerk om die HTTP -integrasie uit te voer.

  1. Skep 'n nuwe toepassing en registreer u toestel. Ons veronderstel basiese kennis van TTN, indien nie, verwys na die vinnige aanvangsgids
  2. Kies 'Integrasies' in u toepassingsmenu en dan 'voeg integrasie by'
  3. Kies HTTP -integrasie
  4. Voer die velde in wat die prentjie volg en vervang dit met u EC2 ip of openbare DNS

Stap 13: Verwerking van data

Vir elke groot hoeveelheid data T wat van die sensor ingesamel word, moet u die volgende stappe uitvoer:

  1. Kry die stel tipes met GPS -koördinate wat in die plaaslike omgewing van T. val. Die plaaslike gebied is al die tipes wat 100 meter rondom T.
  2. Bereken vir elke naaste tupel N die vierkantige gemiddelde van die versnellingsmeter Z-as in N. In pseudokode: gemiddelde = som ([x. Z_accel ** 2 vir x in naby]) / naby.grootte
  3. Bereken die kwadraat standaardafwyking. In pseudokode: std = som ([(x. Z_accel ** 2 - gemiddelde) ** 2 vir x in naby])
  4. Uitset in hierdie formaat: lat, lank, Z_accel ** 2, gemiddelde, std

Gebruik die GPS -afstand in meter om die plaaslike gebied te bereken. In C ++:

#definieer D2R (M_PI / 180.0)

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

Met behulp van die intermediêre data wat in die vorige stap gegenereer is, kan u die afwykings opspoor en 'n naïewe indeling doen deur hierdie snitte op elke reël toe te pas:

line = map (float, line.split (","))

v = reël [2] gemiddelde = reël [3] std = reël [4] as v (gemiddelde + std*3): as v (gemiddelde + std*2): as v (gemiddelde + std): o.toegevoeg ([1, reël [0], reël [1]) anders: o.append ([2, reël [0], reël [1]) anders: o.toegevoeging

Die afwykings word geklassifiseer volgens die 68–95–99.7 -reël

Nou het u 'n versameling met hierdie formaat [tipe, lat, lank].

Die tipe betekenis is die volgende:

  1. Effense afwyking, waarskynlik irrelevant
  2. Medium afwyking
  3. Kritiese anomalie

Stap 14: Visualisering

Visualisering
Visualisering

Om die visualiseringsdeel te verstaan en miskien te verander, moet ons leer hoe om pasgemaakte merkers te gebruik, 'n kenmerk van Google Maps API

Eerstens moet die kaart geïnitialiseer word in 'n terugbel:

funksie initMap () {

data = queryData (); map = nuwe google.maps. Map (document.getElementById ('kaart'), {zoom: 15, middel: {lat: data [0] [1], lng: data [0] [2]}}); opmerking (); }

Spesifiseer die naam van hierdie terugbel in die url (ons het hier voor ons API -sleutel ingevoeg) in 'n HTML -tag:

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

'N Merker kan op die kaart ingevoeg word wanneer die voorwerp geskep word:

nuwe google.maps. Marker ({posisie: {lat: LATITUDE, lng: LONGITUDE}, kaart: kaart, ikoon: “/pad/to/icon.png”})

U kan in die kode sien dat vir elke data in die datastel van die afwykings 'n merker ingevoeg is (sien die opmerking () funksie) en die ikoon is gebaseer op die klas van die anomalie. As u dit in die blaaier instuur, kan ons 'n kaart ondersoek waarin afwykings gefiltreer kan word met behulp van blokkies, soos in die prentjie gesien.

Stap 15: Krediete en eksterne skakels

Hierdie projek is gemaak deur Giovanni De Luca, Andrea Fioraldi en Pietro Spadaccino, eerstejaar MSc in ingenieurswese in rekenaarwetenskapstudente aan die Sapienza Universiteit van Rome.

  • Skyfies wat die skrywers gebruik het om hierdie konsepbewys aan te bied:

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

  • GitHub bevat alle kode:

    github.com/roadteam

Aanbeveel: