Mündəricat:
- Addım 1: Tələblər
- Addım 2: Sensor Firmware -nin qurulması və yanması
- Addım 3: Buludun qurulması
- Addım 4: AWS Lambda qurun
- Addım 5: AWS Kinesis Firehose Data Stream qurun
- Addım 6: Kinesis üçün IAM Rolunu qurun
- Addım 7: AWS EC2 qurun
- Addım 8: EC2 üçün IAM Təhlükəsizlik Rolunu qurun
- Addım 9: EC2 instansiyanıza daxil olun
- Addım 10: Google Maps API -ni əldə edin
- Addım 11: Serveri işə salın
- Addım 12: Şeylər Şəbəkəsinə HTTP İnteqrasiyasını həyata keçirin
- Addım 13: Məlumatların İşlənməsi
- Addım 14: Vizualizasiya
- Addım 15: Kreditlər və Xarici Əlaqələr
Video: Yol Monitorinqi: 15 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu gün sizə akselerometrlərə, LoRaWAN, Amazon Web Services və Google Cloud API -yə əsaslanan yol anomaliyalarına nəzarət sistemini necə qurduğumuzu göstərəcəyik.
Addım 1: Tələblər
- DISCO-L072CZ-LRWAN1 lövhəsi
- X-NUCLEO-IKS01A2 genişləndirmə modulu (Accellerometer üçün)
- X-NUCLEO-GNSS1A1 (lokalizasiya üçün)
- AWS hesabı
- Google Cloud Platform hesabı
Addım 2: Sensor Firmware -nin qurulması və yanması
IKS01A2 və GNSS1A1 -i lövhənin üstünə GPIO pinləri vasitəsi ilə qoşun. Firmware kodunu GitHub -dan yükləyin. ARM Mbed -də bir hesab yaradın (əgər onsuz da yoxdursa) və kodu onlayn tərtibçidəki depodakı idxal edin. Hədəf platformasını DISCO-L072CZ-LRWAN1 olaraq təyin edin və layihəni qeyd edin. İndi Şeylər Şəbəkəsinə gedin və hesabınız yoxdursa hesab yaradın. Tətbiq yaradın, tətbiq daxilində yeni bir cihaz yaradın və əlaqə rejimini OTAA olaraq təyin edin. Mbed_app.json faylında aşağıdakı sahələri doldurmaq üçün uyğun parametrləri tutun: "lora.appskey", "lora.nwkskey", "lora.device-address".
Sensor vaxtaşırı akselerometr və GNSS məlumatlarını qeydə alacaq və LoRa bağlantısı vasitəsi ilə Things Network üzərindəki tətbiqimizə göndərəcək ən yaxın şlüzə göndərəcək. Növbəti addım bir bulud serveri və TTN -də HTTP inteqrasiyası qurmaqdır.
Addım 3: Buludun qurulması
İndi bütün yerləşdirilmiş lövhələrdən məlumatları toplayacaq və birləşdirəcək bulud infrastrukturunu qurmağa hazırıq. Bu infrastruktur aşağıdakı şəkildə göstərilmişdir və aşağıdakılardan ibarətdir:
- Kinesis, daxil olan məlumat axını idarə etmək;
- Lambda, məlumatları saxlamadan əvvəl süzmək və əvvəlcədən işləmək;
- S3, bütün məlumatları saxlamaq üçün;
- EC2, məlumatları təhlil etmək və ön ucumuzu yerləşdirmək.
Addım 4: AWS Lambda qurun
Lambda ilə başlayaraq bu infrastrukturun qurulması üçün lazım olan addımları təsvir edəcəyik.
- AWS hesabınızla daxil olun və konsolun ana səhifəsindən Lambda'ya gedin
- Funksiya Yarat düyməsini vurun
- Səhifənin yuxarı hissəsində Scratch -dən Müəllif seçilməlidir. Sonra şəkildəki kimi digər sahələri doldurun və sonra Funksiya Yarat düyməsini basın
- AWS Lambda funksiyasını yaratdığınız üçün https://github.com/roadteam/data-server ünvanına daxil olun və aws_lambda.py faylının məzmununu səhifənin ikinci yarısında tapdığınız redaktora kopyalayın. Lambda funksiyanız artıq hazırdır:)
Addım 5: AWS Kinesis Firehose Data Stream qurun
- İndi AWS konsolunun ana səhifəsinə qayıdın və Xidmətlərə Kinesis -ə gedin
- İndi Kinesisin əsas səhifəsindəsiniz. Səhifənin sağında, 'Kinesis Firehose çatdırılma axınları' altında 'Yeni çatdırılma axını yarat' seçin.
- 'Çatdırılma axını adı' na 'yol izləmə-axın' yazın. Digər sahələri standart olaraq buraxın və sonrakı düyməni basın
- İndi 'AWS Lambda ilə mənbə qeydlərini çevirin' altında Aktiv et seçin və Lambda funksiyası olaraq yeni yaradılmış 'yol izləmə-lambda' düyməsini basın. Fəaliyyət zaman aşımı ilə bağlı bir xəbərdarlıq görünsə narahat olmayın, çünki etdiyimiz əməliyyat hesablama baxımından bahalı deyil. Digər sahələri standart olaraq buraxın və sonrakı düyməni basın
- Təyinat olaraq Amazon S3 və S3 təyinat olaraq Yeni Yarat seçin. Kovanın adı olaraq 'yol izləmə-çömçə' daxil edin və sonra gedin. İndi digər sahələri standart olaraq buraxın və İrəli düyməsini basın
- Tampon ölçüsünü 1MB və Tampon aralığını 60 saniyəyə təyin etmək istəyə bilərsiniz. İki şərtdən biri yerinə yetirildikdə tampon S3 -ə yuyulacaq. Səhifəni tərk etməyin, növbəti addıma baxın
Addım 6: Kinesis üçün IAM Rolunu qurun
İndi Kinesis üçün təhlükəsizlik icazələrini qururuq, çünki əvvəlcədən işləmək üçün Lambda funksiyasını çağırmalı və sonra S3 -də yazacaqdır.
- 'IAM rolu' nda olduğunuz səhifənin altındakı 'Yeni seçim yarat' seçin, şəkildəki kimi yeni bir IAM rolu yaradın və İcazə ver düyməsini basın.
- İndi əvvəlki səhifəyə qayıdırsınız, Sonrakı düyməsini basın. İndi bütün parametrləri yenidən yoxlamaq istəyə bilərsiniz. Bitirdikdən sonra 'Çatdırılma axını yaradın' düyməsini basın.
Kinesis-Lambda-S3 boru kəməri işə düşür!
Addım 7: AWS EC2 qurun
İndi AWS buludundan və tətbiqimizin ön hissəsini yerləşdirəcəyimiz serverdən məlumatları çəkməyimizə imkan verən bəzi API -lərlə bir EC2 nümunəsi quracağıq. İstehsal mühitində daha geniş miqyaslı AWS API Gateway istifadə edərək API dərc etmək istəyə bilərsiniz.
- AWS konsolunun əsas səhifəsindən EC2 xidmətinə keçin
- Instance Başlat düyməsini basın
- Üst axtarış çubuğuna bu kodu yapışdırın: 'ami-08935252a36e25f85', istifadə etmək üçün əvvəlcədən qurulmuş virtual maşının eyniləşdirici kodudur. Sağdakı Seç düyməsini basın
- 'Type' sütunundan t2.micro seçin və 'Review and launch' düyməsini basın. Nümunəni hələ başlamayın, növbəti addıma keçin
Addım 8: EC2 üçün IAM Təhlükəsizlik Rolunu qurun
- Başlamazdan əvvəl nümunəmizin təhlükəsizlik qrupunu dəyişdirmək istəyirik. Bunu etmək üçün 'Təhlükəsizlik Qrupları' bölməsinin sağ kənarındakı 'Təhlükəsizlik qruplarını redaktə et' düyməsini basın Aşağıdakı kimi yeni bir təhlükəsizlik qrupu yaradın. Bu, əsasən SSH bağlantısı üçün 22 portunu və http xidmətləri üçün 80 portunu açan nümunənizin təhlükəsizlik divarını konfiqurasiya edir
- Yenidən "Gözdən keçir və Başlat" düyməsini basın. İndi bütün parametrlərin təyin olunduğunu yoxlayın. Bitirdikdə Başlat düyməsini basın
- Tıkladıqda, nümunəyə ssh bağlantısı üçün açar cüt qurmaq üçün yeni bir pəncərə açılacaqdır. 'Yeni açar cütü yarad' seçin və ad olaraq 'ec2-yol izləmə' daxil edin. Yükləmə düyməsini basın. Bu faylın itirilməsi və ya (daha pis) etibarsız bir şəkildə saxlanılması son dərəcə vacibdir: açarı bir daha yükləyə bilməyəcəksiniz.. Pem düyməsini yüklədikdən sonra nümunə işə salınmağa hazırdır
Addım 9: EC2 instansiyanıza daxil olun
Yeni EC2 nümunəniz AWS buludundadır. Daha əvvəl yüklənmiş açar faylı ilə ona qoşula bilərsiniz (bu dərs üçün ssh -in əsaslarını bildiyinizi güman edirik). Nümunənin IP'sini 'Təsvir' bölməsindəki tablosundan seçərək aşağıdakı kimi əldə edə bilərsiniz: Həm ümumi IP'nizi, həm də ümumi DNS -ni eyni şəkildə istifadə edə bilərsiniz. Bir ssh müştəri ilə əmri daxil edin:
ssh -i ec2-road-monitoring.pem ec2-user@SİZİN-IP-ADDR-OR-DNS
ec2-road-monitoring.pem daha əvvəl yaradılan açarınızdır.
İndi server tərəfindəki kodu çəkməyə davam edin
git clone-təkrarlanan
Addım 10: Google Maps API -ni əldə edin
Demək olar ki, bitmişik. İndi xəritəni istifadəçi üçün yol nöqtələri ilə göstərmək üçün html səhifəmizdə Google Maps API qurmalıyıq:
- Google hesabınıza daxil olun və https://cloud.google.com/maps-platform/ ünvanına daxil olun.
- Səhifənin solundakı 'Başlayın' düyməsini basın
- Menyuda 'Xəritələr' seçin və sonra davam et düyməsini basın
- Layihə adı olaraq 'yol izləmə' daxil edin və Sonrakı düyməsini basın
- Faktura məlumatlarınızı daxil edin və Davam et düyməsini basın
- İndi layihəniz hazırdır və API -lər və Xidmətlər -> Etimadnaməni tıklayaraq API açarını əldə edəcəyik
Addım 11: Serveri işə salın
Və burada API açarınız var. Etməyiniz lazım olan son şey, data_visualization/anomalies_map.html ünvanına getmək və açarınızı 'SİZİN KEY-BURADA' əvəz etməklə faylın sonuna kopyalamaqdır.
İndi hər şey hazırdır və getməyə hazırdır! EC2 nümunəsində icra olunmasını təmin etmək üçün: 'cd data-server' 'python flask_app.py'
Brauzerinizə EC2 nümunənizin ip və ya dns ünvanını daxil edin, bəzi saxta məlumatlarla anomaliyalar xəritəsini görməlisiniz.
Addım 12: Şeylər Şəbəkəsinə HTTP İnteqrasiyasını həyata keçirin
İndi bütün arxa plan infrastrukturu işə düşdüyünə görə HTTP inteqrasiyasını həyata keçirə bilərik.
- Yeni bir tətbiq yaradın və cihazınızı qeyd edin. TTN haqqında əsas biliklərə sahibik, əgər sürətli başlanğıc təlimatına müraciət etməsəniz
- Tətbiq menyusunda 'İnteqrasiyalar' və sonra 'inteqrasiya əlavə et' seçin
- HTTP inteqrasiyasını seçin
- Şəkli izləyən və EC2 ip və ya ümumi DNS ilə əvəz edən sahələri daxil edin
Addım 13: Məlumatların İşlənməsi
Sensordan toplanan hər bir T məlumat dəsti üçün aşağıdakı addımları yerinə yetirməlisiniz:
- T lokal bölgəsinə düşən GPS koordinatları olan tuplar dəstini alın. Yerli ərazi, T ətrafında 100 metr olan bütün tuplardır.
- Hər bir ən yaxın N qrupu üçün, N-dəki akselerometr Z oxunun kvadrat ortalamasını hesablayın. Psevdokodda: orta = cəm ([x. Z_accel ** 2 x-in yaxınlığında]) / yaxın.size
- Kvadrat standart sapmanı hesablayın. Pseudocode -da: std = sum ([(x. Z_accel ** 2 - orta) ** 2 üçün x yaxınlığında))
- Bu formatda çıxış: lat, long, Z_accel ** 2, mean, std
Yerli ərazini hesablamaq üçün GPS məsafəsini metrlərlə istifadə edin. C ++ dilində:
#D2R (M_PI / 180.0) təyin edin
#define EARTH_RAY 6371 ikiqat məsafə (cüt lat1, ikiqat uzun1, ikiqat lat2, ikiqat uzun2) {cüt dlong = (uzun2 - uzun1) * D2R; cüt dlat = (lat2 - lat1) * D2R; ikiqat a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); ikiqat c = 2 * atan2 (sqrt (a), sqrt (1-a));
İndi, əvvəlki addımda yaranan ara məlumatlardan istifadə edərək, anomaliyaları aşkar edin və hər sətrə tətbiq olunan bu kəsilmiş istifadə edərək sadəlövh bir təsnifat aparın:
xətt = xəritə (float, line.split (","))
v = xətt [2] orta = xətt [3] std = xətt [4] əgər v (ortalama + std*3): əgər v (orta + std*2): əgər v (orta + std) olarsa: o. əlavə et ([1, sətir [0], xətt [1]) başqa: o. əlavə et ([2, sətir [0], sətir [1]) başqa: o. əlavə et ([3, sətir [0], xətt [1])
Anomaliyalar https://en.wikipedia.org/wiki/68%E2%80%9395%E2%80… 68-95-99.7 qaydası ilə təsnif edilir.
İndi bu formatda [type, lat, long] bir kolleksiyanız var.
Tipin mənası belədir:
- Yüngül bir anomaliya, yəqin ki, əlaqəsizdir
- Orta anomaliya
- Kritik anomaliya
Addım 14: Vizualizasiya
Vizualizasiya hissəsini başa düşmək və ya dəyişdirmək üçün Google Maps API -nin xüsusi markerlərindən istifadə etməyi öyrənməliyik
Birincisi, xəritə geri çağırışda başlanmalıdır:
initMap () {funksiyası
data = queryData (); xəritə = yeni google.maps. Map (document.getElementById ('xəritə'), {zoom: 15, mərkəz: {lat: data [0] [1], lng: data [0] [2]}}); qeyd (); }
Bu etiketin adını url -də (API açarımızdan əvvəl daxil etdik) HTML etiketində göstərin:
async gecikdirmə təxirə salınması src = "https://maps.googleapis.com/maps/api/js?key=[AÇILAR&callback=initMap"
Obyekt yaradıldıqda xəritəyə bir marker daxil edilə bilər:
yeni google.maps. Marker ({mövqe: {lat: LATITUDE, lng: LONGITUDE}, xəritə: xəritə, nişan: "/path/to/icon.png"})
Kodda anomaliyaların verilənlər bazasındakı hər bir məlumat üçün bir markerin daxil olduğunu görə bilərsiniz (remark () funksiyasına baxın) və simvol anomaliyanın sinifinə əsaslanır. Bunu brauzerdə işləyərkən, şəkildəki kimi yoxlama qutularından istifadə edərək anomaliyaların süzülməsi mümkün olan bir xəritəni araşdıra bilərik.
Addım 15: Kreditlər və Xarici Əlaqələr
Bu layihə Giovanni De Luca, Andrea Fioraldi və Pietro Spadaccino, Roma Sapienza Universitetində Kompüter Elmləri Mühəndisliyi üzrə birinci kurs tələbələri tərəfindən hazırlanmışdır.
-
Müəlliflər bu anlayışın sübutunu təqdim etmək üçün istifadə etdikləri slaydlar:
www.slideshare.net/PietroSpadaccino/road-m…
-
Bütün kodu olan GitHub depoları:
github.com/roadteam
Tövsiyə:
İki qaraj qapısının monitorinqi: 4 addım
İki Qaraj Qapısının Monitorinqi: 2016 -cı ildə qaraj qapılarının evin əsas girişindən görünməyəcək şəkildə yerləşdiyi yeni bir evə köçdük. Beləliklə, qapıların bağlı və ya açıq olduğuna əmin ola bilməzsiniz. Yalnız izləmə üçün, keçmiş sahiblər bir mətbuat açarı quraşdırdılar
VOCs Monitorinqi olan IoT Hava İstasyonu: 6 addım
VoC-lərin monitorinqi ilə IoT Hava İstasyonu: Bu təlimatda, Uçucu Üzvi Bileşiklərin (VOC) monitorinqi ilə Şeylərin İnterneti (IoT) hava stansiyasının necə qurulacağını göstərirəm. Bu layihə üçün Özünüz Et (DIY) dəsti hazırladım. Avadanlıq və proqram təminatı açıq mənbəyidir
NODE MCU VƏ BLYNK istifadə edərək temperatur və rütubətin monitorinqi: 5 addım
NODE MCU VƏ BLYNK-dən istifadə edərək temperatur və rütubətin monitorinqi: Salam uşaqlar Bu təlimatda Node MCU və BLYNK tətbiqindən istifadə edərək DHT11-Temperatur və Rütubət sensoru ilə atmosferin temperaturu və rütubətini necə əldə edəcəyimizi öyrənək
Intel Edison: 4 addım ilə Cardíacos -un monitorinqi
Card Edition: Intel Edison: IoT Roadshow 2015 və 2015 -ci il tarixləri arasında Gedeane Kenshima, Rodrigo Bittenbinder, Gilvan Nunes, Ant & Folkran və Jefferson Farias tərəfindən təqdim olunan sistemlərin monitorinqini həyata keçirir. ac
MCP9808 və Raspberry Pi istifadə edərək temperaturun monitorinqi: 4 addım
MCP9808 və Raspberry Pi istifadə edərək temperaturun monitorinqi: MCP9808 yüksək dəqiqlikli rəqəmsal temperatur sensoru ± 0,5 ° C I2C mini moduldur. İstilik algılama tətbiqlərini asanlaşdıran istifadəçi tərəfindən proqramlaşdırıla bilən qeydlər ilə təcəssüm olunur. MCP9808 yüksək dəqiqlikli temperatur sensoru bir sənaye halına gəldi