Satura rādītājs:

Ceļu uzraudzība: 15 soļi
Ceļu uzraudzība: 15 soļi

Video: Ceļu uzraudzība: 15 soļi

Video: Ceļu uzraudzība: 15 soļi
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Novembris
Anonim
Ceļu uzraudzība
Ceļu uzraudzība

Šodien mēs jums parādīsim, kā mēs izveidojām ceļu anomāliju uzraudzības sistēmu, kuras pamatā ir akselerometri, LoRaWAN, Amazon Web Services un Google Cloud API.

1. darbība. Prasības

  • DISCO-L072CZ-LRWAN1 tāfele
  • X-NUCLEO-IKS01A2 paplašināšanas modulis (akselerometram)
  • X-NUCLEO-GNSS1A1 (lokalizācijai)
  • AWS konts
  • Google Cloud Platform konts

2. darbība. Sensora programmaparatūras izveide un mirgošana

Savienojiet IKS01A2 un GNSS1A1 tāfeles augšpusē, izmantojot GPIO tapas. Lejupielādējiet programmaparatūras kodu no GitHub. Izveidojiet (ja jums tāda vēl nav) kontu ARM Mbed un importējiet kodu tiešsaistes kompilatora repo. Iestatiet mērķa platformu uz DISCO-L072CZ-LRWAN1 un saglabājiet projektu. Tagad dodieties uz The Things Network un izveidojiet kontu, ja jums tas vēl nav. Izveidojiet lietojumprogrammu, izveidojiet jaunu ierīci lietojumprogrammā un iestatiet savienojuma režīmu uz OTAA. Satveriet atbilstošos parametrus, lai failā mbed_app.json aizpildītu šādus laukus: "lora.appskey", "lora.nwkskey", "lora.device-address".

Sensors periodiski reģistrēs akselerometra un GNSS datus un nosūtīs tos caur LoRa savienojumu uz tuvāko vārteju, kas tos pārsūtīs uz mūsu lietojumprogrammu The Things Network. Nākamais solis ir iestatīt mākoņa serveri un HTTP integrāciju TTN.

3. darbība: mākoņa iestatīšana

Mākoņa iestatīšana
Mākoņa iestatīšana

Tagad mēs esam gatavi izveidot mākoņa infrastruktūru, kas apkopos un apkopos datus no visām izvietotajām plates. Šī infrastruktūra ir parādīta attēlā zemāk, un to veido:

  • Kineze, lai apstrādātu ienākošo datu plūsmu;
  • Lambda, lai filtrētu un iepriekš apstrādātu datus pirms to uzglabāšanas;
  • S3, lai saglabātu visus datus;
  • EC2, lai analizētu datus un mitinātu mūsu priekšgalu.

4. darbība: iestatiet AWS Lambda

Iestatiet AWS Lambda
Iestatiet AWS Lambda

Mēs ilustrēsim nepieciešamās darbības, lai izveidotu šo infrastruktūru, sākot ar Lambda.

  1. Piesakieties savā AWS kontā un no konsoles galvenās lapas un dodieties uz Lambda
  2. Noklikšķiniet uz Izveidot funkciju
  3. Lapas augšējā daļā jāizvēlas Autors no Scratch. Pēc tam aizpildiet pārējos laukus, kā parādīts attēlā, un pēc tam noklikšķiniet uz Izveidot funkciju
  4. Tagad, kad esat izveidojis AWS Lambda funkciju, dodieties uz vietni https://github.com/roadteam/data-server un nokopējiet faila aws_lambda.py saturu redaktorā, kurā atrodat lapas otro pusi. Jūsu Lambda funkcija tagad ir gatava:)

5. darbība: iestatiet AWS Kinesis Firehose datu straumi

Iestatiet AWS Kinesis Firehose datu straumi
Iestatiet AWS Kinesis Firehose datu straumi
  1. Tagad atgriezieties AWS konsoles galvenajā lapā un pakalpojumos dodieties uz Kinesis
  2. Tagad jūs atrodaties Kinesis galvenajā lapā. Lapas labajā pusē sadaļā “Kinesis Firehose piegādes straumes” atlasiet “Izveidot jaunu piegādes straumi”.
  3. Sadaļā “Piegādes straumes nosaukums” ierakstiet “ceļu uzraudzības straume”. Pārējos laukus atstājiet pēc noklusējuma un noklikšķiniet uz Tālāk
  4. Tagad sadaļā “Pārveidot avota ierakstus, izmantojot AWS Lambda” atlasiet Iespējots un kā Lambda funkcija noklikšķiniet uz jaunizveidotā “ceļu uzraudzības-lambda”. Neuztraucieties, ja parādās brīdinājums par funkciju noildzi, jo mūsu veiktā darbība nav skaitļošanas ziņā dārga. Pārējos laukus atstājiet pēc noklusējuma un noklikšķiniet uz Tālāk
  5. Kā galamērķi izvēlieties Amazon S3 un kā S3 galamērķi izvēlieties Izveidot jaunu. Kā kausa nosaukumu ievadiet “ceļa uzraudzības kauss” un pēc tam ejiet. Tagad atstājiet citus laukus pēc noklusējuma un noklikšķiniet uz Tālāk
  6. Iespējams, vēlēsities iestatīt bufera lielumu uz 1 MB un bufera intervālu uz 60 sekundēm. Buferis tiks izskalots līdz S3, kad tiks izpildīts viens no diviem nosacījumiem. Neatstājiet lapu, skatiet nākamo soli

6. darbība: iestatiet IAM lomu kinēzēm

Iestatiet IAM lomu kinēzēm
Iestatiet IAM lomu kinēzēm

Tagad mēs izveidojām Kinesis drošības atļaujas, jo tai ir jāizsauc Lambda funkcija priekšapstrādei, un tad tā rakstīs uz S3

  1. Lapas apakšdaļā, kurā esat “IAM loma”, atlasiet “Izveidot jaunu izvēli”, izveidojiet jaunu IAM lomu, kā parādīts attēlā, un noklikšķiniet uz Atļaut
  2. Tagad esat atgriezies iepriekšējā lapā, noklikšķiniet uz Tālāk. Tagad, iespējams, vēlēsities vēlreiz pārbaudīt visus parametrus. Kad esat pabeidzis, noklikšķiniet uz “Izveidot piegādes straumi”

Cauruļvads Kinesis-Lambda-S3 ir izveidots un darbojas!

7. darbība: iestatiet AWS EC2

Iestatiet AWS EC2
Iestatiet AWS EC2

Tagad mēs izveidosim EC2 instanci ar dažām API, kas ļaus mums virzīt un izvilkt datus no AWS mākoņa, kā arī serveri, kurā mitināt mūsu lietojumprogrammu priekšgalu. Ražošanas vidē, iespējams, vēlēsities publicēt API, izmantojot mērogojamāku AWS API vārteju.

  1. AWS konsoles galvenajā lapā dodieties uz pakalpojumu EC2
  2. Noklikšķiniet uz Launch Instance
  3. Augšējā meklēšanas joslā ielīmējiet šo kodu: “ami-08935252a36e25f85”, kas ir izmantojamās iepriekš konfigurētās virtuālās mašīnas identifikācijas kods. Labajā pusē noklikšķiniet uz Atlasīt
  4. Slejā “Tips” atlasiet t2.micro un noklikšķiniet uz “Pārskatīt un palaist”. Vēl nesāciet instanci, pārejiet pie nākamās darbības

8. darbība: iestatiet IAM drošības lomu EC2

Iestatiet IAM drošības lomu EC2
Iestatiet IAM drošības lomu EC2
  1. Pirms palaišanas mēs vēlamies modificēt mūsu instances drošības grupu. Lai to izdarītu, sadaļas “Drošības grupas” labajā malā noklikšķiniet uz “Rediģēt drošības grupas”. Izveidojiet jaunu drošības grupu šādi. Tas būtībā konfigurē jūsu instances ugunsmūri, atklājot 22. portu SSH savienojumam un 80 portu http pakalpojumiem
  2. Vēlreiz noklikšķiniet uz “Pārskatīt un palaist”. Tagad pārbaudiet, vai visi parametri ir iestatīti. Kad esat pabeidzis, noklikšķiniet uz Palaist
  3. Noklikšķinot, tiks atvērts jauns logs, lai iestatītu atslēgu pāri ssh savienojumam ar instanci. Atlasiet “Izveidot jaunu atslēgu pāri” un kā nosaukumu ievadiet “ec2-ceļu uzraudzība”. Noklikšķiniet uz Lejupielādēt atslēgu pāri. Ir ārkārtīgi svarīgi, lai šis fails tiktu pazaudēts vai (vēl ļaunāk) tiktu glabāts nedroši: jūs vairs nevarēsit lejupielādēt atslēgu. Kad ir lejupielādēta.pem atslēga, instance ir gatava palaišanai

9. darbība. Piekļūstiet savai EC2 instancei

Piekļūstiet savai EC2 instancei
Piekļūstiet savai EC2 instancei

Jūsu svaigā EC2 instance atrodas AWS mākonī. Jūs varat izveidot savienojumu ar to, izmantojot iepriekš lejupielādēto atslēgas failu (šai apmācībai mēs pieņemam, ka jūs zināt ssh pamatus). Jūs varat iegūt instances IP, atlasot to informācijas paneļa sadaļā “Apraksts” šādi: Varat izmantot gan savu publisko IP, gan publisko DNS. Ar ssh klientu tagad ievadiet komandu:

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

kur ec2-road-monitoring.pem ir jūsu iepriekš ģenerētā atslēga.

Tagad turpiniet izvilkt servera puses kodu

git clone-rekursīvs

10. darbība: izgūstiet Google Maps API

Izgūt Google Maps API
Izgūt Google Maps API

Mēs esam gandrīz pabeiguši. Tagad mums html lapā ir jāiestata google maps API, lai lietotājam parādītu karti ar ceļa punktiem:

  1. Piesakieties savā Google kontā un dodieties uz vietni
  2. Noklikšķiniet uz "Sākt darbu" lapas kreisajā pusē
  3. Izvēlnē atlasiet “Kartes” un pēc tam noklikšķiniet uz Turpināt
  4. Kā projekta nosaukumu ievadiet “ceļu uzraudzība” un noklikšķiniet uz Tālāk
  5. Ievadiet norēķinu informāciju un noklikšķiniet uz Turpināt
  6. Tagad jūsu projekts ir gatavs, un mēs saņemsim API atslēgu, noklikšķinot uz API un pakalpojumi -> Akreditācijas dati

11. darbība: palaidiet serveri

Palaidiet serveri
Palaidiet serveri

Un tā ir jūsu API atslēga. Pēdējā lieta, kas jums jādara, ir doties uz vietni data_visualization/anomalies_map.html un nokopēt atslēgu līdz faila beigām, aizstājot “YOUR-KEY-HERE”

Tagad viss ir sagatavots un gatavs darbam! Lai to sāktu izpildīt EC2 instancē: “cd data-server” “python flask_app.py”

Ievadiet savā pārlūkprogrammā sava EC2 instances ip vai dns adresi, jums vajadzētu redzēt anomāliju karti ar dažiem fiktīviem datiem

12. darbība. Veiciet HTTP integrāciju lietu tīklā

Veiciet HTTP integrāciju lietu tīklā
Veiciet HTTP integrāciju lietu tīklā

Tagad, kad mums ir izveidota un darbojas visa aizmugures infrastruktūra, mēs varam apstrādāt, lai veiktu HTTP integrāciju.

  1. Izveidojiet jaunu lietojumprogrammu un reģistrējiet ierīci. Mēs pieņemam pamatzināšanas par TTN, ja ne, skatiet ātro darba sākšanas rokasgrāmatu
  2. Lietojumprogrammu izvēlnē atlasiet “Integrācijas” un pēc tam “Pievienot integrāciju”
  3. Atlasiet HTTP integrāciju
  4. Ievadiet laukus pēc attēla un aizstājiet ar savu EC2 ip vai publisko DNS

13. darbība. Datu apstrāde

Katrai datu kopai T, kas savākta no sensora, jāveic šādas darbības:

  1. Iegūstiet to kopu kopas, kuru GPS koordinātas krīt T. vietējā apgabalā.
  2. Katram tuvākajam blokam N aprēķiniet akselerometra Z ass kvadrātveida vidējo lielumu N.
  3. Aprēķiniet kvadrāta standarta novirzi. Pseidokodā: std = summa ([(x. Z_accel ** 2 - vidējais) ** 2 x tuvumā])
  4. Izeja šādā formātā: lat, long, Z_accel ** 2, mean, std

Lai aprēķinātu vietējo apgabalu, izmantojiet GPS attālumu metros. C ++:

#define D2R (M_PI / 180.0)

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

Tagad, izmantojot starpposma datus, kas ģenerēti iepriekšējā solī, atklājiet anomālijas un veiciet naivu klasifikāciju, izmantojot šo katrai rindai piemēroto fragmentu:

līnija = karte (pludiņš, līnija. sadalīt (","))

v = līnija [2] vidējais = rinda [3] std = līnija [4], ja v (vidējais + std*3): ja v (vidējais + std*2): ja v (vidējais + std): o.pielikt ([1, [0]. Rinda, [1]) else: o.append ([2, [0]. Rinda, [1])) else: o.append ([3, [0]. Rinda, [line] 1])

Anomālijas tiek klasificētas, izmantojot noteikumu 68–95–99,7

Tagad jums ir šāda formāta kolekcija [tips, lats, garš].

Tipa nozīme ir šāda:

  1. Neliela anomālija, iespējams, nav nozīmes
  2. Vidēja anomālija
  3. Kritiska anomālija

14. solis: vizualizācija

Vizualizācija
Vizualizācija

Lai saprastu un varbūt mainītu vizualizācijas daļu, mums jāiemācās izmantot pielāgotus marķierus, kas ir Google Maps API funkcija

Pirmkārt, karte jāinicializē atzvanīšanas laikā:

function initMap () {

dati = queryData (); karte = jauns google.maps. Map (document.getElementById ('karte'), {tālummaiņa: 15, centrs: {lat: dati [0] [1], lng: dati [0] [2]}}); Piezīme(); }

Norādiet šī atzvanīšanas nosaukumu URL tagā (mēs ievietojām šeit pirms mūsu API atslēgas) HTML tagā:

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

Kad objekts ir izveidots, kartē var ievietot marķieri:

jauns google.maps. Marker ({pozīcija: {lat: LATITUDE, lng: LONGITUDE}, karte: karte, ikona: “/path/to/icon.png”})

Kodā var redzēt, ka katram anomāliju datu kopas datiem tiek ievietots marķieris (sk. Piezīmes () funkciju), un ikonas pamatā ir anomālijas klase. Palaižot to pārlūkprogrammā, mēs varam izpētīt karti, kurā anomālijas var filtrēt, izmantojot izvēles rūtiņas, kā redzams attēlā.

15. darbība. Kredīti un ārējās saites

Šo projektu veica Giovanni De Luca, Andrea Fioraldi un Pietro Spadaccino, pirmā kursa inženierzinātņu maģistrs datorzinātnēs Romas Sapienza universitātē.

  • Slaidi, kuros autori izmantoja šo koncepcijas pierādījumu:

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

  • GitHub repo ar visu kodu:

    github.com/roadteam

Ieteicams: