Мазмұны:

Жол мониторингі: 15 қадам
Жол мониторингі: 15 қадам

Бейне: Жол мониторингі: 15 қадам

Бейне: Жол мониторингі: 15 қадам
Бейне: Өлді деп жерлемек болған еді. Бірақ Алланың қалауымен тірілген Бала 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 -қадам: бұлтты орнату

Бұлтты орнату
Бұлтты орнату

Енді біз барлық орналастырылған тақталардан деректерді жинайтын және жинақтайтын бұлтты инфрақұрылымды орнатуға дайынбыз. Бұл инфрақұрылым төмендегі суретте көрсетілген және ол мыналардан тұрады:

  • Кинезис, кіріс деректер ағынын өңдеу үшін;
  • Lambda, деректерді сақтамас бұрын оларды сүзуге және алдын ала өңдеуге;
  • S3, барлық деректерді сақтау үшін;
  • EC2, деректерді талдауға және фронтальды орналастыруға.

4 -қадам: AWS Lambda орнатыңыз

AWS Lambda орнатыңыз
AWS Lambda орнатыңыз

Біз Lambda -дан бастап осы инфрақұрылымды орнатуға қажетті қадамдарды суреттейміз.

  1. AWS есептік жазбаңызбен кіріңіз және консольдің негізгі бетінен Lambda -ге өтіңіз
  2. «Функцияны құру» түймесін басыңыз
  3. Беттің жоғарғы жағында Scratch ішінен Авторды таңдау керек. Содан кейін суреттегідей басқа өрістерді толтырыңыз, содан кейін «Функцияны құру» түймесін басыңыз
  4. Енді сіз AWS Lambda функциясын құрдыңыз, https://github.com/roadteam/data-server өтіңіз және aws_lambda.py файлының мазмұнын беттің екінші жартысынан табылған редакторға көшіріңіз. Сіздің Lambda функциясы қазір дайын:)

5 -қадам: AWS Kinesis Firehose деректер ағынын орнатыңыз

AWS Kinesis Firehose деректер ағынын орнатыңыз
AWS Kinesis Firehose деректер ағынын орнатыңыз
  1. Енді AWS консолінің негізгі бетіне оралыңыз, ал Қызметтерге Kinesis -ке өтіңіз
  2. Енді сіз Kinesis -тің басты бетіндесіз. Беттің оң жағындағы «Kinesis Firehose жеткізу ағындары» астында «Жаңа жеткізу ағыны жасау» тармағын таңдаңыз.
  3. «Жеткізу ағынының атауында» «жолды бақылау-ағын» деп жазыңыз. Басқа өрістерді әдепкі бойынша қалдырыңыз және Келесі түймесін басыңыз
  4. Енді «AWS Lambda көмегімен бастапқы жазбаларды түрлендіру» астында Қосылған опциясын таңдаңыз, ал Lambda функциясы ретінде жаңадан құрылған «жолды бақылау-ламбда» түймесін басыңыз. Функцияның күту уақыты туралы ескерту пайда болса, алаңдамаңыз, өйткені біз жасайтын операция есептік қымбат емес. Басқа өрістерді әдепкі бойынша қалдырыңыз және Келесі түймесін басыңыз
  5. Баратын жер ретінде Amazon S3 таңдаңыз, ал S3 тағайындалуы ретінде Жаңасын жасау таңдаңыз. Шелек атауы ретінде 'road-monitoring-bucket' енгізіңіз, содан кейін өтіңіз. Енді басқа өрістерді әдепкі бойынша қалдырыңыз және Келесі түймесін басыңыз
  6. Буфер өлшемін 1МБ және аралық аралықты 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. Instance іске қосу түймесін басыңыз
  3. Жоғарғы іздеу жолағына мына кодты қойыңыз: 'ami-08935252a36e25f85', бұл алдын ала конфигурацияланған виртуалды машинаның сәйкестендіру коды. Оң жақтағы Таңдау түймесін басыңыз
  4. «Түр» бағанынан t2.micro таңдаңыз және «Қарау және іске қосу» түймесін басыңыз. Дананы әлі іске қоспаңыз, келесі қадамға өтіңіз

8 -қадам: EC2 үшін IAM қауіпсіздік рөлін орнатыңыз

EC2 үшін IAM қауіпсіздік рөлін орнатыңыз
EC2 үшін IAM қауіпсіздік рөлін орнатыңыз
  1. Іске қосылмас бұрын біз біздің дананың қауіпсіздік тобын өзгерткіміз келеді. Мұны істеу үшін «Қауіпсіздік топтары» бөлімінің оң жақ шетінде «Қауіпсіздік топтарын өңдеу» түймесін басыңыз Жаңа қауіпсіздік тобын келесідей орнатыңыз. Бұл негізінен SSH қосылымы үшін 22 портын және http қызметтері үшін 80 портын көрсететін экземплярыңыздың брандмауэрін конфигурациялайды
  2. Қайта «Қарап шығу және іске қосу» түймесін басыңыз. Енді барлық параметрлердің орнатылғанын тексеріңіз. Аяқтаған кезде Іске қосу түймешігін басыңыз
  3. Басқан кезде данамен ssh байланысы үшін кілттер жұбын орнату үшін жаңа терезе ашылады. «Жаңа кілттер жұбын жасауды» таңдаңыз және атау ретінде «ec2-road-monitoring» енгізіңіз. Жүктеу кілт жұбын нұқыңыз. Бұл файлдың жоғалуы немесе нашар сақталуы өте маңызды: сіз кілтті қайта жүктей алмайсыз.. Pem кілтін жүктегеннен кейін дананы іске қосуға дайын болады

9 -қадам: EC2 данасына кіріңіз

EC2 данасына кіріңіз
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 Maps API алу

Google Maps API алу
Google Maps API алу

Біз дерлік аяқтадық. Енді біз html бетінде google Maps API -ні орнатуымыз керек, ол арқылы жол картасы пайдаланушыға көрсетіледі:

  1. Google есептік жазбаңызға кіріңіз және https://cloud.google.com/maps-platform/ өтіңіз.
  2. Беттің сол жағындағы «Жұмысты бастау» түймесін басыңыз
  3. Мәзірден «Карталар» тармағын таңдап, жалғастыру түймесін басыңыз
  4. Жоба атауы ретінде «жолды бақылау» енгізіңіз және Келесі түймесін басыңыз
  5. Төлем туралы мәліметтерді енгізіп, Жалғастыру түймесін басыңыз
  6. Енді сіздің жобаңыз дайын, біз API кілттерін API және қызметтер -> тіркелгі деректерін басу арқылы аламыз

11 -қадам: Серверді іске қосыңыз

Серверді іске қосыңыз
Серверді іске қосыңыз

Және бұл сіздің API кілтіңіз. Сіз жасауыңыз керек соңғы нәрсе-data_visualization/anomalies_map.html сілтемесіне өтіп, кілтіңізді файлдың соңына көшіріңіз, осылайша «СІЗДІҢ КІЛТІҢІЗДІ» ауыстырыңыз.

Енді бәрі дайын және дайын! Оны 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. Қолданбалар мәзірінде 'Интеграциялар', содан кейін 'интеграцияны қосу' таңдаңыз
  3. HTTP интеграциясын таңдаңыз
  4. Кескіннен кейінгі өрістерді енгізіңіз және EC2 ip немесе жалпыға ортақ DNS -пен ауыстырыңыз

13 -қадам: мәліметтерді өңдеу

Датчиктен жиналған Т мәліметтерінің әрбір жиынтығы үшін келесі әрекеттерді орындау қажет:

  1. GPS жергілікті координаттары бар локалдардың жиынтығын алыңыз. Жергілікті жер - бұл Т -дан 100 метр қашықтықта орналасқан барлық топтар.
  2. Әр N жақын корпусы үшін N осіндегі акселерометр Z осінің квадраттық орташа мәнін есептеңіз: псевдокодта: орташа = қосынды ([x. Z_accel ** 2 x үшін жақын]) / Near.size
  3. Квадрат стандартты ауытқуды есептеңіз. Псевдокодта: std = қосынды ([(x. Z_accel ** 2 - орташа) ** 2 x үшін жақын])
  4. Бұл форматтағы шығыс: lat, long, Z_accel ** 2, mean, std

Жергілікті аумақты есептеу үшін GPS қашықтықты метрмен пайдаланыңыз. C ++ тілінде:

#D2R (M_PI / 180.0) анықтаңыз

#define 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 (лат2 * D2R) * pow (sin (dlong/2.0), 2); қосарланған c = 2 * atan2 (sqrt (a), sqrt (1-a));

Енді, алдыңғы қадамда жасалған аралық деректерді қолдана отырып, ауытқуларды анықтаңыз және әр жолға қолданылатын осы үзінді көмегімен аңғартпалы классификация жасаңыз:

жол = карта (float, line.split («,»))

v = жол [2] орташа = жол [3] std = сызық [4] егер v (орташа + стд*3): егер v (орташа + стд*2): егер v (орташа + стд): о.қосыл ([1, жол [0], жол [1]) басқа: o.қосыңыз ([2, жол [0], жол [1]) басқа: o.қосыңыз ([3, жол [0], жол [1])

Аномалиялар 68–95–99.7 ережесі бойынша жіктеледі

Енді сізде [type, lat, long] осы форматтағы жинақ бар.

Түрдің мағынасы келесідей:

  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 тегінде:

сценарий синхрондауын кейінге қалдыру src = «https://maps.googleapis.com/maps/api/js?key=[KEYissions&callback=initMap»

Нысан жасалған кезде картаға маркер енгізуге болады:

жаңа google.maps. Marker ({орналасуы: {лат: LATITUDE, lng: LONGITUDE}, карта: карта, белгіше: «/path/to/icon.png»})

Сіз кодта ауытқулардың деректер жиынындағы әрбір деректер үшін маркер енгізілгенін көре аласыз (remark () функциясын қараңыз) және белгіше аномалия класына негізделген. Бұл браузерде іске қосылған кезде, суретте көрсетілгендей, құсбелгілер арқылы ауытқуларды сүзуге болатын картаны зерттеуге болады.

15 -қадам: Несиелер мен сыртқы сілтемелер

Бұл жобаны Джованни Де Лука, Андреа Фиоралди және Пьетро Спадаччино жасады, Римдегі Сапиенца университетінің информатика инженериясының бірінші курсының студенттері.

  • Авторлар тұжырымдаманың дәлелі ретінде осы слайдтарды ұсынды:

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

  • GitHub репозиторийлері барлық кодпен:

    github.com/roadteam

Ұсынылған: