Բովանդակություն:
- Քայլ 1: Պահանջներ
- Քայլ 2: Սենսորի ծրագրակազմի ստեղծում և բռնկում
- Քայլ 3: Ամպի կարգավորումը
- Քայլ 4: Կարգավորեք AWS Lambda- ն
- Քայլ 5. Ստեղծեք AWS Kinesis Firehose տվյալների հոսքը
- Քայլ 6. Ստեղծեք IAM- ի դերը Kinesis- ի համար
- Քայլ 7: Կարգավորեք AWS EC2- ը
- Քայլ 8. Ստեղծեք IAM անվտանգության դերը EC2- ի համար
- Քայլ 9. Մուտք գործեք ձեր EC2 ատյան
- Քայլ 10: Առբերեք Google Քարտեզների API- ն
- Քայլ 11: Գործարկել սերվերը
- Քայլ 12: Կատարեք HTTP ինտեգրում Things Network- ում
- Քայլ 13: Տվյալների մշակում
- Քայլ 14: Պատկերացում
- Քայլ 15: Վարկեր և արտաքին հղումներ
Video: Roadանապարհների մոնիտորինգ. 15 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Այսօր մենք ձեզ ցույց կտանք, թե ինչպես ենք մենք ստեղծում ճանապարհային անոմալիաների մոնիտորինգի համակարգ ՝ արագացուցիչների, LoRaWAN- ի, Amazon Web Services- ի և Google Cloud API- ի հիման վրա:
Քայլ 1: Պահանջներ
- DISCO-L072CZ-LRWAN1 տախտակ
- X-NUCLEO-IKS01A2 ընդլայնման մոդուլ (արագացուցիչի համար)
- X-NUCLEO-GNSS1A1 (տեղայնացման համար)
- AWS հաշիվ
- Google Cloud Platform հաշիվ
Քայլ 2: Սենսորի ծրագրակազմի ստեղծում և բռնկում
Միացրեք IKS01A2- ը և GNSS1A1- ը տախտակի վերևում GPIO կապումներով: Ներբեռնեք որոնվածի կոդը GitHub- ից: Ստեղծեք (եթե արդեն չունեք) հաշիվ ARM Mbed- ում և կոդը ներմուծեք առցանց կոմպիլյատորի ռեպոյի մեջ: Թիրախային հարթակը սահմանեք DISCO-L072CZ-LRWAN1 և պահպանեք նախագիծը: Այժմ գնացեք դեպի The Things Network և ստեղծեք հաշիվ, եթե այն արդեն չունեք: Ստեղծեք ծրագիր, ստեղծեք նոր սարք հավելվածի ներսում և միացրեք ռեժիմը OTAA- ին: Վերցրեք համապատասխան պարամետրերը ՝ mbed_app.json ֆայլում հետևյալ դաշտերը լրացնելու համար ՝ «lora.appskey», «lora.nwkskey», «lora.device-address»:
Սենսորը պարբերաբար կգրանցի արագացուցիչի և GNSS- ի տվյալները և դրանք LoRa կապի միջոցով կուղարկի մոտակա դարպաս, որը դրանք կուղարկի The Things Network- ի մեր հավելվածին: Հաջորդ քայլը ամպային սերվերի ստեղծումն է և HTTP ինտեգրումը TTN- ում:
Քայլ 3: Ամպի կարգավորումը
Այժմ մենք պատրաստ ենք ստեղծել ամպային ենթակառուցվածք, որը հավաքելու և համախմբելու է բոլոր տեղակայված տախտակների տվյալները: Այս ենթակառուցվածքը ներկայացված է ստորև ներկայացված նկարում և այն կազմված է հետևյալ կերպ.
- Kinesis, կարգավորել մուտքային տվյալների հոսքը;
- Լամբդա ՝ զտել և նախապես մշակել տվյալները ՝ դրանք պահելուց առաջ.
- S3, բոլոր տվյալները պահելու համար;
- EC2, վերլուծել տվյալները և հյուրընկալել մեր առջևի հատվածը:
Քայլ 4: Կարգավորեք AWS Lambda- ն
Մենք ցույց կտանք այս ենթակառուցվածքի ստեղծման համար անհրաժեշտ քայլերը ՝ սկսած Լամբդայից:
- Մուտք գործեք ձեր AWS հաշվով և մխիթարել հիմնական էջից և գնացեք Լամբդա
- Կտտացրեք Ստեղծել գործառույթ
- Էջի վերին մասում այն պետք է ընտրվի Հեղինակ քերծվածքից: Այնուհետև լրացրեք մնացած դաշտերը, ինչպես նկարում, այնուհետև կտտացրեք Ստեղծել գործառույթ
- Այժմ, երբ ստեղծել եք AWS Lambda գործառույթը, գնացեք https://github.com/roadteam/data-server և պատճենեք aws_lambda.py ֆայլի բովանդակությունը խմբագրի մեջ, որը գտնում եք էջի երկրորդ կեսը: Ձեր Lambda գործառույթը այժմ պատրաստ է:)
Քայլ 5. Ստեղծեք AWS Kinesis Firehose տվյալների հոսքը
- Այժմ վերադարձեք AWS վահանակի հիմնական էջ, իսկ ծառայության մեջ անցեք Kinesis
- Այժմ դուք գտնվում եք Kinesis- ի գլխավոր էջում: Էջի աջ կողմում ՝ «Kinesis Firehose առաքման հոսքեր» բաժնում, ընտրեք «Ստեղծել առաքման նոր հոսք»
- «Առաքման հոսքի անուն» -ում գրեք «ճանապարհի մոնիտորինգ-հոսք»: Մնացած դաշտերը թողեք կանխադրված և կտտացրեք հաջորդը
- Այժմ «Փոխակերպեք աղբյուրի գրառումները AWS Lambda- ի հետ» բաժնում ընտրեք Enabled, և որպես Lambda գործառույթ ՝ կտտացրեք նոր ստեղծված «road-monitoring-lambda»-ին: Մի անհանգստացեք, եթե ֆունկցիայի ընդմիջման մասին նախազգուշացում հայտնվի, քանի որ այն գործողությունը, որը մենք անում ենք, հաշվիչորեն թանկ չէ: Մնացած դաշտերը թողեք կանխադրված և կտտացրեք հաջորդը
- Որպես նպատակակետ ընտրեք Amazon S3, և որպես S3 նպատակակետ ընտրեք Ստեղծել նոր: Քանի որ դույլի անունը մուտքագրեք «ճանապարհի մոնիտորինգ-դույլ», ապա գնացեք: Այժմ մնացած դաշտերը թողեք կանխադրված և կտտացրեք Հաջորդ
- Կարող եք սահմանել բուֆերի չափը 1 ՄԲ, իսկ բուֆերային միջակայքը `60 վայրկյան: Բուֆերը կլցվի S3- ի վրա, երբ երկու պայմաններից մեկը բավարարվի: Մի լքեք էջը, տես հաջորդ քայլը
Քայլ 6. Ստեղծեք IAM- ի դերը Kinesis- ի համար
Այժմ մենք ստեղծում ենք անվտանգության թույլտվություններ Kinesis- ի համար, քանի որ այն պետք է կանչի Lambda գործառույթը նախամշակման համար, այնուհետև այն կգրվի S3- ում
- Էջի ներքևում, որտեղ դուք գտնվում եք «IAM դերում», ընտրեք «Ստեղծել նոր ընտրյալ», ստեղծեք նոր IAM դեր ՝ ինչպես նկարում և կտտացրեք Թույլատրել
- Այժմ դուք վերադարձել եք նախորդ էջին, կտտացրեք հաջորդը: Այժմ գուցե ցանկանաք կրկնակի ստուգել բոլոր պարամետրերը: Ավարտելուց հետո կտտացրեք «Ստեղծեք առաքման հոսք»
Kinesis-Lambda-S3 խողովակաշարը գործարկվում է:
Քայլ 7: Կարգավորեք AWS EC2- ը
Այժմ մենք կստեղծենք EC2 օրինակ ՝ որոշ API- ներով, որոնք թույլ կտան մեզ մղել և քաշել տվյալները AWS ամպից, ինչպես նաև այն սերվերից, որտեղ պետք է տեղակայվի մեր դիմումը: Արտադրական միջավայրում գուցե ցանկանաք հրապարակել API- ն ՝ օգտագործելով ավելի լայնածավալ AWS API Gateway- ը:
- AWS վահանակի հիմնական էջից անցեք EC2 ծառայություն
- Կտտացրեք Գործարկման գործարկմանը
- Վերին որոնման տողում տեղադրեք այս ծածկագիրը ՝ «ami-08935252a36e25f85», այսինքն ՝ նախապես կազմաձևված վիրտուալ մեքենայի նույնականացման կոդը: Կտտացրեք Ընտրել աջ կողմում
- Ընտրեք t2.micro «Տեսակ» սյունակից և կտտացրեք «Վերանայել և գործարկել»: Դեռ մի գործարկեք օրինակը, անցեք հաջորդ քայլին
Քայլ 8. Ստեղծեք IAM անվտանգության դերը EC2- ի համար
- Գործարկելուց առաջ մենք ցանկանում ենք փոփոխել մեր օրինակի անվտանգության խումբը: Դա անելու համար «Անվտանգության խմբեր» բաժնի ծայրամասային աջ մասում կտտացրեք «Խմբագրել անվտանգության խմբերը» Ստեղծեք անվտանգության նոր խումբ հետևյալ կերպ. Սա հիմնականում կազմաձևում է ձեր օրինակի firewall- ը ՝ բացահայտելով 22 -րդ նավահանգիստը SSH միացման համար և 80 -րդ նավահանգիստը ՝ http ծառայությունների համար
- Կրկին կտտացրեք «Վերանայել և գործարկել»: Այժմ ստուգեք, որ բոլոր պարամետրերը սահմանված են: Ավարտելուց հետո կտտացրեք Գործարկել
- Կտտացնելով նոր պատուհան կհայտնվի ՝ օրինակին ssh կապի համար բանալիների զույգ ստեղծելու համար: Ընտրեք «Ստեղծել նոր բանալիների զույգ» և որպես անուն մուտքագրեք «ec2-road-monitoring»: Կտտացրեք Բեռնել բանալիների զույգը: Չափազանց կարևոր է, որ այս ֆայլը կորչի կամ (ավելի վատ) անապահով պահվի. Դուք այլևս չեք կարողանա ներբեռնել բանալին: Ներբեռնելուց հետո.pem բանալին օրինակը պատրաստ է գործարկվելու
Քայլ 9. Մուտք գործեք ձեր EC2 ատյան
Ձեր թարմ EC2 օրինակը տեղադրված է AWS ամպի մեջ: Դուք կարող եք դրան միանալ նախկինում բեռնված հիմնական ֆայլով (այս ձեռնարկի համար մենք ենթադրում ենք, որ դուք գիտեք ssh- ի հիմունքները): Դուք կարող եք առբերել օրինակի IP- ն ՝ այն ընտրելով «Նկարագրություն» բաժնի վահանակում հետևյալ կերպ. Կարող եք օգտագործել և՛ ձեր հանրային IP- ն, և՛ ձեր հանրային DNS- ը: Այժմ ssh հաճախորդի հետ մուտքագրեք հրամանը.
ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-OR-DNS
որտեղ ec2-road-monitoring.pem- ը ձեր բանալին է, որը ստեղծվել է նախկինում:
Այժմ շարունակեք սերվերի կողմից ծածկագիրը քաշել
git clone-ռեկուրսիվ
Քայլ 10: Առբերեք Google Քարտեզների API- ն
Գրեթե ավարտված ենք: Այժմ մենք պետք է google maps API- ն ստեղծենք մեր html էջում, որպեսզի օգտագործողին ցուցադրենք քարտեզը ճանապարհային կետերով.
- Մուտք գործեք ձեր Google հաշիվ և գնացեք
- Կտտացրեք «Սկսել» էջի ձախ մասում
- Ընտրացանկում ընտրեք «Քարտեզներ» և կտտացրեք շարունակել
- Որպես ծրագրի անուն մուտքագրեք «ճանապարհի մոնիտորինգ» և կտտացրեք Հաջորդ
- Մուտքագրեք ձեր վճարման տվյալները և կտտացրեք Շարունակել
- Այժմ ձեր նախագիծը պատրաստ է, և մենք պատրաստվում ենք ստանալ API բանալին ՝ կտտացնելով դեպի API և ծառայություններ -> հավատարմագրեր
Քայլ 11: Գործարկել սերվերը
Եվ ահա այն ձեր API բանալին է: Վերջին բանը, որ դուք պետք է անեք, գնալ data_visualization/anomalies_map.html և պատճենել ձեր բանալին ֆայլի վերջում, այսպես փոխարինելով «YOUR-KEY-HERE»-ը:
Այժմ ամեն ինչ պատրաստ է և պատրաստ է գնալ: Որպեսզի այն սկսի գործել EC2 օրինակով ՝ «cd data-server» «python flask_app.py»
Մուտքագրեք ձեր զննարկիչում ձեր EC2 օրինակի ip կամ dns հասցեն, դուք պետք է տեսնեք անոմալիաների քարտեզը ՝ որոշ կեղծ տվյալներով
Քայլ 12: Կատարեք HTTP ինտեգրում Things Network- ում
Այժմ, երբ մենք ունենք բոլոր ենթակառուցվածքները գործարկված, մենք կարող ենք մշակել HTTP ինտեգրումը կատարելու համար:
- Ստեղծեք նոր ծրագիր և գրանցեք ձեր սարքը: Մենք ենթադրում ենք TTN- ի հիմնական գիտելիքներ, եթե ոչ ՝ հղում կատարեք արագ մեկնարկի ուղեցույցին
- Ձեր դիմումի ընտրացանկում ընտրեք «Ինտեգրումներ», այնուհետև «ավելացնել ինտեգրացիա»
- Ընտրեք HTTP ինտեգրում
- Մուտքագրեք պատկերին հաջորդող դաշտերը և դրանք փոխարինեք ձեր EC2 ip- ով կամ հանրային DNS- ով
Քայլ 13: Տվյալների մշակում
Սենսորից հավաքված T տվյալների յուրաքանչյուր փնջի համար դուք պետք է կատարեք հետևյալ քայլերը.
- Ձեռք բերեք այն զույգերի հավաքածուն, որոնք ունեն GPS կոորդինատներ, որոնք ընկնում են Տ – ի տարածքում: Տեղական տարածքը բոլոր այն եռյակներն են, որոնք գտնվում են Թ.
- N- ի յուրաքանչյուր մոտակա զույգի համար հաշվարկել N.- ում արագացուցիչի Z- առանցքի քառակուսու միջին արժեքը կեղծ կոդով. Միջին = գումար ([x. Z_accel ** 2 x մոտակայքում]) / մոտ.չափ
- Հաշվիր քառակուսի ստանդարտ շեղումը: Կեղծ կոդով ՝ std = գումար ([(x. Z_accel ** 2 - միջին) ** 2 x մոտակայքում])
- Ելք այս ձևաչափով ՝ լատ, երկար, Z_accel ** 2, միջին, միջին
Տեղական տարածքը հաշվարկելու համար օգտագործեք GPS հեռավորությունը մետրերով: C ++ - ում.
#սահմանի D2R (M_PI / 180.0)
#սահմանել EARTH_RAY 6371 երկակի հեռավորություն (կրկնակի lat1, կրկնակի երկար 1, կրկնակի lat2, կրկնակի երկար 2) {կրկնակի երկար = (երկար 2 - երկար 1) * D2R; կրկնակի dlat = (lat2 - lat1) * D2R; կրկնակի a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); կրկնակի c = 2 * atan2 (sqrt (a), sqrt (1-a));
Այժմ, օգտագործելով նախորդ քայլում առաջացած միջանկյալ տվյալները, հայտնաբերեք անոմալիաները և միամիտ դասակարգում կատարեք ՝ օգտագործելով յուրաքանչյուր հատվածի վրա կիրառվող այս հատվածը:
line = քարտեզ (float, line.split (","))
v = տող [2] միջին = տող [3] std = տող [4] եթե v (միջին + std*3). եթե v (միջին + std*2). եթե v (միջին + std): [1, տող [0], տող [1]) այլ ՝ o.append ([2, տող [0], տող [1]) այլ ՝ o.append ([3, տող [0], տող [1])
Անոմալիաները դասակարգվում են ՝ օգտագործելով 68–95–99.7 կանոնը ՝
Այժմ դուք ունեք այս ձևաչափով հավաքածու [տեսակ, լատ, երկար]:
Տիպի իմաստը հետևյալն է.
- Թեթև անոմալիա, հավանաբար անկապ
- Միջին անոմալիա
- Կրիտիկական անոմալիա
Քայլ 14: Պատկերացում
Տեսողականացման հատվածը հասկանալու և գուցե փոխելու համար մենք պետք է սովորենք, թե ինչպես օգտագործել հատուկ մարկերներ ՝ Google Քարտեզների API- ի հատկություն
Նախ, քարտեզը պետք է նախաստորագրվի հետադարձ կապի մեջ.
գործառույթը initMap () {
տվյալներ = queryData (); քարտեզ = նոր google.maps. Map (document.getElementById («քարտեզ»), {խոշորացում ՝ 15, կենտրոն ՝ {lat: data [0] [1], lng: տվյալներ [0] [2]}}); դիտողություն (); }
Նշեք այս հետադարձ կապի անունը url- ում (մենք այստեղ տեղադրել ենք մեր API ստեղնից առաջ) HTML պիտակի մեջ.
script async defer src = "https://maps.googleapis.com/maps/api/js?key= [KEY]&callback=initMap"
Մարկեր կարող է տեղադրվել քարտեզի վրա, երբ օբյեկտը ստեղծվում է.
նոր google.maps. Marker ({դիրք ՝ {լատ. LATITUDE, lng: LONGITUDE}, քարտեզ ՝ քարտեզ, պատկերակ ՝ «/path/to/icon.png»})
Կոդում կարող եք տեսնել, որ անոմալիաների տվյալների հավաքածուի յուրաքանչյուր տվյալների համար նշիչ է տեղադրված (տես դիտողություն () գործառույթը), իսկ պատկերակը հիմնված է անոմալիայի դասի վրա: Thisննարկչին սա գործարկելիս մենք կարող ենք ուսումնասիրել մի քարտեզ, որտեղ անոմալիաները կարող են զտվել ՝ օգտագործելով նշման տուփեր, ինչպես երևում է նկարում:
Քայլ 15: Վարկեր և արտաքին հղումներ
Այս նախագիծը կազմել են ovanովաննի Դե Լուկան, Անդրեա Ֆիորալդին և Պիետրո Սպադաչինոն, Հռոմի Սապիենցա համալսարանի համակարգչային գիտության ճարտարագիտության մագիստրոսի առաջին կուրս:
-
Սահիկներ, որոնք հեղինակները օգտագործել են հայեցակարգի այս ապացույցը ներկայացնելու համար.
www.slideshare.net/PietroSpadaccino/road-m…
-
GitHub- ը պահում է ամբողջ ծածկագիրը.
github.com/roadteam
Խորհուրդ ենք տալիս:
Ubidots + ESP32- Կանխատեսող մեքենայի մոնիտորինգ `10 քայլ
Ubidots + ESP32- Կանխատեսող մեքենաների մոնիտորինգ. Մեքենայի թրթռումների և ջերմաստիճանի կանխատեսելի վերլուծություն `ստեղծելով փոստի իրադարձություններ և Ubidots- ի միջոցով google թերթում թրթռումների գրանցում: Կանխատեսելի սպասարկում և մեքենայի առողջության մոնիտորինգ: Նոր տեխնոլոգիայի աճը, այսինքն` իրերի ինտերնետը, ծանր
Arduino, Դռների բացման մոնիտորինգ Gmail- ի միջոցով. 6 քայլ
Arduino, Դռների բացման վերահսկում Gmail- ի միջոցով. Այս ձեռնարկում ես ձեզ ցույց կտամ, թե ինչպես հայտնաբերել դռների բացման իրադարձությունը և ծանուցում ուղարկել Gmail- ի միջոցով Arduino Uno- ի միջոցով: Եթե դուք սկսնակ եք, կարող եք իմանալ wifi- ի և սենսորի մասին Arduino- ում - WiFi և Arduino - Door Sensor ձեռնարկներ: Եկեք
Երկու ավտոտնակի դռների մոնիտորինգ `4 քայլ
Երկու ավտոտնակի դռների մոնիտորինգ. 2016 թ. -ին մենք տեղափոխվեցինք նոր տուն, որտեղ ավտոտնակի դռները տեղակայված են այնպես, որ դրանք չեք կարող տեսնել տան գլխավոր մուտքից: Այսպիսով, դուք չեք կարող վստահ լինել, որ դռները փակ են, թե բաց: Միայն մոնիտորինգի համար նախկին սեփականատերերը տեղադրեցին մամուլի անջատիչ
Հագուստի լվացման/չորացման մոնիտորինգ ESP8266- ով և արագացման տվիչով `6 քայլ
Հագուստի լվացքի/չորանոցների մոնիտորինգ ESP8266- ի և արագացման տվիչով. Հագուստի լվացքի մեքենան նկուղում է, և դուք, որպես կանոն, հագուստի մի կույտ եք դնում դրա մեջ և դրանից հետո զբաղվում եք ձեր մեկ այլ տնային աշխատանքով: Դուք անտեսում եք ձեր մեքենայի նկուղում թաց և ներծծող հագուստը
Dերմաստիճանի եւ խոնավության մոնիտորինգ NODE MCU AND BLYNK- ի միջոցով. 5 քայլ
Dերմաստիճանի և խոնավության մոնիտորինգ NODE MCU- ի և BLYNK- ի միջոցով