Satura rādītājs:
- 1. darbība. Prasības
- 2. darbība. Sensora programmaparatūras izveide un mirgošana
- 3. darbība: mākoņa iestatīšana
- 4. darbība: iestatiet AWS Lambda
- 5. darbība: iestatiet AWS Kinesis Firehose datu straumi
- 6. darbība: iestatiet IAM lomu kinēzēm
- 7. darbība: iestatiet AWS EC2
- 8. darbība: iestatiet IAM drošības lomu EC2
- 9. darbība. Piekļūstiet savai EC2 instancei
- 10. darbība: izgūstiet Google Maps API
- 11. darbība: palaidiet serveri
- 12. darbība. Veiciet HTTP integrāciju lietu tīklā
- 13. darbība. Datu apstrāde
- 14. solis: vizualizācija
- 15. darbība. Kredīti un ārējās saites
Video: Ceļu uzraudzība: 15 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Š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
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
Mēs ilustrēsim nepieciešamās darbības, lai izveidotu šo infrastruktūru, sākot ar Lambda.
- Piesakieties savā AWS kontā un no konsoles galvenās lapas un dodieties uz Lambda
- Noklikšķiniet uz Izveidot funkciju
- 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
- 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
- Tagad atgriezieties AWS konsoles galvenajā lapā un pakalpojumos dodieties uz Kinesis
- Tagad jūs atrodaties Kinesis galvenajā lapā. Lapas labajā pusē sadaļā “Kinesis Firehose piegādes straumes” atlasiet “Izveidot jaunu piegādes straumi”.
- 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
- 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
- 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
- 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
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
- 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
- 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
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.
- AWS konsoles galvenajā lapā dodieties uz pakalpojumu EC2
- Noklikšķiniet uz Launch Instance
- 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
- 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
- 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
- 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
- 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
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
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:
- Piesakieties savā Google kontā un dodieties uz vietni
- Noklikšķiniet uz "Sākt darbu" lapas kreisajā pusē
- Izvēlnē atlasiet “Kartes” un pēc tam noklikšķiniet uz Turpināt
- Kā projekta nosaukumu ievadiet “ceļu uzraudzība” un noklikšķiniet uz Tālāk
- Ievadiet norēķinu informāciju un noklikšķiniet uz Turpināt
- 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
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ā
Tagad, kad mums ir izveidota un darbojas visa aizmugures infrastruktūra, mēs varam apstrādāt, lai veiktu HTTP integrāciju.
- 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
- Lietojumprogrammu izvēlnē atlasiet “Integrācijas” un pēc tam “Pievienot integrāciju”
- Atlasiet HTTP integrāciju
- 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:
- Iegūstiet to kopu kopas, kuru GPS koordinātas krīt T. vietējā apgabalā.
- Katram tuvākajam blokam N aprēķiniet akselerometra Z ass kvadrātveida vidējo lielumu N.
- Aprēķiniet kvadrāta standarta novirzi. Pseidokodā: std = summa ([(x. Z_accel ** 2 - vidējais) ** 2 x tuvumā])
- 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:
- Neliela anomālija, iespējams, nav nozīmes
- Vidēja anomālija
- Kritiska anomālija
14. solis: 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:
Ubidots + ESP32- Prognozējošās mašīnas uzraudzība: 10 soļi
Ubidots + ESP32- Prognozējošā mašīnu uzraudzība: paredzama mašīnas vibrācijas un temperatūras analīze, izveidojot pasta notikumus un vibrācijas ierakstu Google lapā, izmantojot Ubidots. Prognozējošā apkope un mašīnu veselības uzraudzībaJauno tehnoloģiju pieaugums, ti, lietu internets, smaga indivīda
Slidojiet visu ceļu !: 4 soļi
Slidojiet visu ceļu !: Ievads: Tā kā lielākajai daļai no jums patīk slidot, un mēs zinām, ka slidošana ir diezgan grūta. Jums ir jāsabalansē sevi, lai brauktu ar dēli, un arī jums ir nepieciešams daudz spēka, lai stumtu skeitbordu, izmantojot kreiso vai labo kāju. Šajā paaudzē
Šaurjoslas IoT: gudrs apgaismojums un mērīšana paver ceļu labākai un veselīgākai ekosistēmai: 3 soļi
Šaurjoslas IoT: viedais apgaismojums un mērīšana paver ceļu labākai un veselīgākai ekosistēmai: automatizācija ir atradusi ceļu gandrīz katrā nozarē. Sākot no ražošanas līdz veselības aprūpei, transportam un piegādes ķēdei, automatizācija ir redzējusi dienas gaismu. Nu, tas viss neapšaubāmi ir pievilcīgs, bet ir viens, kas šķiet
Kā uzstādīt sliežu ceļa sliežu ceļu: 10 soļi (ar attēliem)
Kā uz sliežu ceļa uzstādīt dzelzceļa sliedes transportlīdzekli: Drošības pasākumi: Personai, kas uzliek sliedi ar sliedēm, un personai, kas palīdz, jāvalkā labi redzamas drēbes (piemēram, veste, sporta krekls, mētelis), lai būtu redzama iespējamā pretimbraucošā satiksme. Jāvalkā arī aizsargcimdīte un cimdi
Ierakstiet Live Linux Distro vienkāršo ceļu!: 3 soļi
Burn Live Linux Distro ir vienkāršais ceļš !: Piezīme: Šī ir mana pirmā pamācība, lūdzu, atklājiet mani, ja ir kādas kļūdas, es jau iepriekš atvainojos. Unetbootin (Universal Netboot Installer) ir programmatūra, kas paredzēta tiešu Linux USB disku izveidei. Tam ir pieejams virkne iepriekš atlasītu izplatīšanas