Агуулгын хүснэгт:

Замын хяналт: 15 алхам
Замын хяналт: 15 алхам

Видео: Замын хяналт: 15 алхам

Видео: Замын хяналт: 15 алхам
Видео: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Арваннэгдүгээр
Anonim
Замын хяналт
Замын хяналт

Өнөөдөр бид акселерометр, 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 болгож тохируулаад төслийг хадгална уу. Одоо Things Network руу ороод, хэрэв танд байхгүй бол данс үүсгээрэй. Аппликешн үүсгэж, програм дотор шинэ төхөөрөмж үүсгээд холболтын горимыг OTAA болгож тохируулна уу. Mbed_app.json файл дахь "lora.appskey", "lora.nwkskey", "lora.device-address" гэсэн талбаруудыг бөглөхийн тулд тохирох параметрүүдийг авна уу.

Мэдрэгч нь акселерометр ба GNSS өгөгдлийг үе үе бүртгэж, LoRa холболтоор дамжуулан хамгийн ойрын гарц руу илгээдэг бөгөөд үүнийг Things Network дээрх манай програм руу дамжуулдаг. Дараагийн алхам бол үүл сервер болон TTN дээр HTTP интеграцийг тохируулах явдал юм.

Алхам 3: Үүлийг тохируулах

Үүлийг тохируулах
Үүлийг тохируулах

Одоо бид байршуулсан бүх самбараас өгөгдлийг цуглуулж нэгтгэх үүл дэд бүтцийг бий болгоход бэлэн байна. Энэхүү дэд бүтцийг доорх зурагт харуулав.

  • Kinesis, ирж буй мэдээллийн урсгалыг зохицуулах;
  • Lambda, өгөгдлийг хадгалахаас өмнө шүүж, урьдчилан боловсруулах;
  • S3, бүх өгөгдлийг хадгалах;
  • EC2, өгөгдөлд дүн шинжилгээ хийх, урд талын хэсгийг байрлуулах.

Алхам 4: AWS Lambda -ийг тохируулна уу

AWS Lambda -ийг тохируулна уу
AWS Lambda -ийг тохируулна уу

Ламбдагаас эхлээд энэхүү дэд бүтцийг бий болгоход шаардлагатай алхамуудыг бид дүрслэн харуулах болно.

  1. AWS дансаараа нэвтэрч, консолын үндсэн хуудаснаас Ламбда руу очно уу
  2. Функц үүсгэх дээр дарна уу
  3. Хуудасны дээд хэсэгт Scratch -аас зохиогчийг сонгох ёстой. Дараа нь бусад талбаруудыг зурган дээрх шиг бөглөөд Функц үүсгэх дээр дарна уу
  4. Та AWS Lambda функцийг үүсгэсэн бол https://github.com/roadteam/data-server хаягаар орж aws_lambda.py файлын агуулгыг хуудасны хоёрдугаар хагаст олсон редактор руу хуулж аваарай. Таны Lambda функц бэлэн боллоо:)

Алхам 5: AWS Kinesis Firehose Data Stream -ийг тохируулна уу

AWS Kinesis Firehose Data Stream -ийг тохируулна уу
AWS Kinesis Firehose Data Stream -ийг тохируулна уу
  1. AWS консолын үндсэн хуудас руу буцаж очоод үйлчилгээ рүү Kinesis руу очно уу
  2. Одоо та Kinesis -ийн үндсэн хуудсанд байна. Хуудасны баруун талд, 'Kinesis Firehose хүргэх урсгалууд' хэсэгт 'Шинэ хүргэлтийн урсгал үүсгэх' -ийг сонгоно уу.
  3. "Хүргэлтийн урсгалын нэр" хэсэгт "замын хяналт-урсгал" гэж бичнэ үү. Бусад талбаруудыг анхдагчаар үлдээж, дараа нь дарна уу
  4. Одоо 'AWS Lambda ашиглан эх бүртгэлийг өөрчлөх' хэсэгт Идэвхжүүлсэн сонголтыг сонгоод Lambda функцын хувьд шинээр үүсгэсэн 'road-monitoring-lambda' дээр дарна уу. Хэрэв бидний хийж буй үйлдэл нь тооцооллын хувьд үнэтэй биш тул функц дуусах тухай анхааруулга гарч ирвэл санаа зовох хэрэггүй. Бусад талбаруудыг анхдагчаар үлдээж, дараа нь дарна уу
  5. Амралтын газар болох Amazon S3 -ийг сонгож, S3 очих цэг болгон Шинэийг сонгоно уу. Хувин нэрээр "замын хяналт-хувин" гэж оруулаад дараа нь явна уу. Одоо бусад талбаруудыг анхдагчаар үлдээгээд Дараах дээр дарна уу
  6. Та Буферийн хэмжээг 1MB, Буферийн интервалыг 60 секунд болгож тохируулахыг хүсч болно. Хоёр нөхцлийн аль нэг нь хангагдсан тохиолдолд буферийг S3 болгон угаана. Хуудсыг бүү орхи, дараагийн алхамыг үзнэ үү

Алхам 6: Kinesis -д IAM -ийн үүргийг тохируулна уу

Kinesis -д IAM -ийн үүргийг тохируулах
Kinesis -д IAM -ийн үүргийг тохируулах

Одоо бид Kinesis -ийн аюулгүй байдлын зөвшөөрлийг тохируулсан, учир нь энэ нь Lambda функцийг дуудах ёстой бөгөөд үүнийг S3 дээр бичих болно.

  1. "IAM үүрэг" хэсэгт байгаа хуудасны доод талд "Шинэ сонголт үүсгэх" -ийг сонгоод, зурган дээрх шиг шинэ IAM үүрэг үүсгээд Зөвшөөрөх дээр дарна уу.
  2. Одоо та өмнөх хуудас руу буцаж очоод дараагийнхыг дарна уу. Одоо та бүх параметрүүдийг дахин шалгаж үзэхийг хүсч магадгүй юм. Дууссаны дараа "Хүргэлтийн урсгал үүсгэх" дээр дарна уу.

Kinesis-Lambda-S3 дамжуулах хоолой ашиглалтанд орлоо!

Алхам 7: AWS EC2 -ийг тохируулна уу

AWS EC2 -ийг тохируулна уу
AWS EC2 -ийг тохируулна уу

Одоо бид AWS үүлнээс өгөгдөл, мөн манай програмын урд хэсгийг байрлуулах серверээс өгөгдлийг татаж авах боломжийг олгодог зарим API -тэй EC2 данс үүсгэх болно. Үйлдвэрлэлийн орчинд та илүү өргөтгөх боломжтой AWS API гарцыг ашиглан API нийтлэхийг хүсч магадгүй юм.

  1. AWS консолын үндсэн хуудаснаас EC2 үйлчилгээ рүү очно уу
  2. Launch Instance дээр дарна уу
  3. Хайлтын дээд мөрөнд дараах кодыг оруулна уу: 'ami-08935252a36e25f85', энэ нь урьдчилан тохируулсан виртуал машины таних код юм. Баруун талын Сонгох дээр дарна уу
  4. 'Type' баганаас t2.micro -г сонгоод 'Review and launch' дээр дарна уу. Жишээг хараахан эхлүүлж болохгүй, дараагийн алхам руу орно уу

Алхам 8: EC2 -д IAM -ийн аюулгүй байдлын үүргийг тохируулна уу

IAM -ийн аюулгүй байдлын үүргийг EC2 -д тохируулна уу
IAM -ийн аюулгүй байдлын үүргийг EC2 -д тохируулна уу
  1. Эхлүүлэхийн өмнө бид жишээнийхээ аюулгүй байдлын бүлгийг өөрчлөхийг хүсч байна. Үүнийг хийхийн тулд "Аюулгүй байдлын бүлгүүд" хэсгийн баруун дээд хэсэгт байрлах "Аюулгүй байдлын бүлгүүдийг засах" дээр дарж дараах байдлаар шинэ аюулгүй байдлын бүлэг байгуулна уу. Энэ нь үндсэндээ SSH холболтын 22 порт, http үйлчилгээний 80 портыг харуулдаг таны галт ханыг тохируулдаг
  2. "Хяналт ба ажиллуулах" дээр дахин дарна уу. Одоо бүх параметрүүдийг тохируулсан эсэхийг шалгаарай. Дууссаны дараа Эхлүүлэх дээр дарна уу
  3. Дарахад шинэ цонх гарч ирэх бөгөөд жишээнд ssh холболт хийх түлхүүр хосыг тохируулах болно. "Шинэ түлхүүр хос үүсгэх" -ийг сонгоод "ec2-road-monitoring" гэж нэрлэнэ үү. Татаж авах түлхүүрийн хосыг дарна уу. Энэ файл алдагдах эсвэл (муу) найдвартай хадгалагдахгүй байх нь маш чухал юм: та түлхүүрийг дахин татаж авах боломжгүй болно.. Pem түлхүүрийг татаж авсны дараа жишээ ажиллуулахад бэлэн болно

Алхам 9: EC2 Instance руу нэвтрэх

EC2 Instance руу нэвтрэх
EC2 Instance руу нэвтрэх

Таны шинэ 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 Газрын зургийн API -г авах
Google Газрын зургийн API -г авах

Бид бараг дуусч байна. Одоо бид хэрэглэгчдэд чиглүүлэлтийн цэг бүхий газрын зургийг харуулахын тулд html хуудсандаа google maps API -ийг тохируулах ёстой.

  1. Google акаунтаараа нэвтэрч https://cloud.google.com/maps-platform/ хаягаар орно уу.
  2. Хуудасны зүүн талд байгаа "Эхлэх" дээр дарна уу
  3. Цэснээс "Газрын зураг" -ыг сонгоод үргэлжлүүлэх дээр дарна уу
  4. Төслийн нэрний хувьд "замын хяналт" гэж оруулаад Next дарна уу
  5. Төлбөр тооцооны дэлгэрэнгүй мэдээллийг оруулаад Үргэлжлүүлэх дээр дарна уу
  6. Одоо таны төсөл бэлэн болсон бөгөөд бид API түлхүүрийг авахын тулд APIs & Services -> Итгэмжлэлийг дарна уу

Алхам 11: Серверийг ажиллуулна уу

Серверийг ажиллуулна уу
Серверийг ажиллуулна уу

Энд таны API түлхүүр байна. Таны хийх ёстой хамгийн сүүлийн зүйл бол data_visualization/anomalies_map.html руу орж түлхүүрээ файлын төгсгөлд хуулж, "YOUR-KEY-EERE" гэж орлуулах явдал юм.

Одоо бүх зүйл бэлэн болсон бөгөөд явахад бэлэн байна! Үүнийг EC2 жишээнд ажиллуулж эхлэхийн тулд: 'cd data-server' 'python flask_app.py'

Хөтөч дээрээ EC2 дансныхаа ip эсвэл dns хаягийг оруулна уу.

Алхам 12: Things Network дээр HTTP интеграцийг хийх

Things Network дээр HTTP интеграцийг гүйцэтгэх
Things Network дээр HTTP интеграцийг гүйцэтгэх

Одоо бид бүх арын дэд бүтцийг ажиллуулж, HTTP интеграцийг гүйцэтгэхийн тулд боловсруулж чадна.

  1. Шинэ програм үүсгэж, төхөөрөмжөө бүртгүүлнэ үү. Хэрэв бид хурдан эхлэх гарын авлагад хамрагдаагүй бол бид TTN -ийн анхан шатны мэдлэгтэй болно
  2. Хэрэглээний цэснээс 'Integrations', дараа нь 'Integration нэмэх' -г сонгоно уу.
  3. HTTP интеграцийг сонгоно уу
  4. Зургийн дараа талбаруудыг оруулаад EC2 ip эсвэл нийтийн DNS -ээр солино уу

Алхам 13: Мэдээлэл боловсруулах

Мэдрэгчээс цуглуулсан өгөгдөл T бүрийн хувьд та дараах алхмуудыг хийх ёстой.

  1. Т -ийн орон нутагт GPS -ийн координат унаж буй багцуудыг аваарай. Орон нутгийн хэсэг нь Т орчимд 100 метрийн зайд байрладаг бүх багц юм.
  2. Ойролцоох N тус бүрийн хувьд Z тэнхлэг дэх акселерометрийн квадрат дундажийг N псевдокодоор тооцоолно уу: дундаж = нийлбэр
  3. Квадрат стандарт хазайлтыг тооцоол. Псевдокодод: std = нийлбэр ([(x. Z_accel ** 2 - дундаж) ** 2 x ойролцоо байна))
  4. Энэ формат дахь гаралт: lat, long, Z_accel ** 2, mean, std

Орон нутгийг тооцоолохын тулд GPS зайг метрээр ашиглана уу. C ++ хэл дээр:

#тодорхойлох D2R (M_PI / 180.0)

#тодорхойлох EARTH_RAY 6371 давхар зай (давхар лат1, давхар урт1, давхар лат2, давхар урт2) {давхар dlong = (урт2 - урт1) * D2R; давхар длат = (лат2 - лат1) * 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));

Одоо, өмнөх алхамд үүсгэсэн завсрын өгөгдлийг ашиглан гажигийг илрүүлж, мөр бүрт хэрэглэсэн энэхүү слипийг ашиглан гэнэн ангилал хий.

мөр = газрын зураг (float, line.split (","))

v = шугам [2] дундаж = мөр [3] std = мөр [4] хэрэв v (дундаж + std*3): хэрэв v (дундаж + std*2): хэрэв v (дундаж + std) байвал: o.ававлах ([1, мөр [0], мөр [1]) өөр: o.авах ([2, мөр [0], мөр [1]) өөр: o.авах ([3, мөр [0], мөр [1])

Хэвийн бус байдлыг https://en.wikipedia.org/wiki/68%E2%80%9395%E2%80… 68–95–99.7 дүрмийг ашиглан ангилдаг.

Одоо танд энэ форматтай цуглуулга байна [төрөл, лат, урт].

Төрлийн утга нь дараах байдалтай байна.

  1. Бага зэргийн гажиг, энэ нь хамаагүй байж магадгүй юм
  2. Дунд зэргийн гажиг
  3. Чухал гажиг

Алхам 14: Дүрслэл

Дүрслэл
Дүрслэл

Дүрслэлийг ойлгох, өөрчлөхийн тулд бид Google Maps API -ийн онцлог тэмдэглэгээг хэрхэн ашиглах талаар сурах ёстой

Нэгдүгээрт, газрын зургийг дуудлага хийхдээ эхлүүлэх ёстой.

initMap () {функц

өгөгдөл = queryData (); map = new google.maps. Map (document.getElementById ('map'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); тайлбар (); }

Энэ шуудангийн дуудлагын нэрийг url дээр (бид энд API түлхүүрийнхээ өмнө оруулсан болно) HTML хаягаар оруулна уу.

скрипт async defer src = "https://maps.googleapis.com/maps/api/js?key=[TEYEY&callback=initMap"

Объект үүсгэх үед тэмдэглэгээг газрын зураг дээр оруулж болно.

шинэ google.maps. Marker ({байрлал: {лат: LATITUDE, lng: LONGITUDE}, газрын зураг: газрын зураг, дүрс: "/path/to/icon.png"})

Гэмтлийн мэдээллийн санд байгаа өгөгдөл бүрийн хувьд тэмдэглэгээг оруулсан болохыг кодоос харж болно (remark () функцийг үзнэ үү) ба дүрс нь аномалийн ангилалд үндэслэсэн болно. Үүнийг хөтөч дээр ажиллуулахдаа зурган дээр үзүүлсэн шиг аномалийг шалгах хайрцгийг ашиглан шүүж болох газрын зургийг судалж үзэх боломжтой.

Алхам 15: Зээл ба гадаад холбоосууд

Энэхүү төслийг Жиованни Де Лука, Андреа Фиоралди, Пиетро Спадаччино нар хийсэн бөгөөд Ромын Сапиенза их сургуулийн компьютерийн шинжлэх ухааны инженерийн чиглэлээр магистрантурт суралцаж байна.

  • Энэхүү үзэл баримтлалын нотолгоог танилцуулахын тулд зохиогчид ашигладаг слайдууд:

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

  • GitHub репо бүх кодтой:

    github.com/roadteam

Зөвлөмж болгож буй: