Мазмуну:
- 1 -кадам: талаптар
- 2 -кадам: Сенсордун жабдыктарын орнотуу жана жаркыроо
- 3 -кадам: Булутту орнотуу
- 4 -кадам: AWS Lambda орнотуу
- 5 -кадам: AWS Kinesis Firehose маалымат агымын орнотуңуз
- 6 -кадам: Kinesis үчүн IAM ролун орнотуу
- 7 -кадам: AWS EC2 орнотуу
- 8 -кадам: EC2 үчүн IAM коопсуздук ролун орнотуңуз
- 9 -кадам: EC2 инстанцияңызга кирүү
- 10 -кадам: Google Карталар API'син алуу
- 11 -кадам: Серверди ишке киргизиңиз
- 12 -кадам: Things Network боюнча HTTP интеграциясын аткарыңыз
- 13 -кадам: Маалыматты иштетүү
- 14 -кадам: Визуалдаштыруу
- 15 -кадам: Кредиттер жана тышкы шилтемелер
Video: Жол мониторинги: 15 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бүгүн биз акселерометрлерге, LoRaWANга, Amazon Web Servicesке жана Google Cloud APIге негизделген жол аномалияларына мониторинг системасын кантип орнотконубузду көрсөтөбүз.
1 -кадам: талаптар
- DISCO-L072CZ-LRWAN1 тактасы
- X-NUCLEO-IKS01A2 кеңейтүү модулу (accellerometer үчүн)
- 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 орнотуу
Биз Lambdaдан баштап, бул инфраструктураны орнотуу үчүн зарыл болгон кадамдарды көрсөтөбүз.
- AWS эсебиңиз менен кирип, консолдун башкы барагынан Ламбдага өтүңүз
- Функцияны түзүү дегенди басыңыз
- Барактын жогорку бөлүгүндө Авторду Scratchтан тандоо керек. Андан кийин сүрөттөгүдөй башка талааларды толтуруп, андан кийин Функцияны түзүү дегенди басыңыз
- Эми сиз AWS Lambda функциясын түзгөндөн кийин, https://github.com/roadteam/data-server дарегине өтүңүз жана aws_lambda.py файлынын мазмунун редакторго көчүрүп, барактын экинчи жарымын табыңыз. Сиздин Lambda функциясы азыр даяр:)
5 -кадам: AWS Kinesis Firehose маалымат агымын орнотуңуз
- Азыр AWS консолунун башкы барагына кайтыңыз жана Кызматтарга Kinesisке өтүңүз
- Эми сиз Kinesisтин башкы бетиндесиз. Барактын оң жагында, 'Kinesis Firehose жеткирүү агымдары' астында, 'Жаңы жеткирүү агымын түзүү' дегенди тандаңыз.
- "Жеткирүү агымынын аталышында" "жол-мониторинг-агым" деп жазыңыз. Башка талааларды демейки абалына калтырып, Кийинкисин басыңыз
- Азыр "AWS Lambda менен булак жазууларын трансформациялоо" бөлүмүнүн астында Иштетилгенди тандаңыз жана Lambda функциясы катары жаңы түзүлгөн "жол-мониторинг-ламбда" чыкылдатыңыз. Функциянын күтүү убактысы жөнүндө эскертүү чыкса, кабатыр болбоңуз, анткени биз жасап жаткан операция эсептөө үчүн кымбат эмес. Башка талааларды демейки абалына калтырып, Кийинкисин басыңыз
- Көздөгөн жериңиз катары Amazon S3 тандаңыз, ал эми S3 көздөгөнү катары Жаңы жаратууну тандаңыз. Челектин аталышы катары 'road-monitoring-bucket' кирип, анан кетиңиз. Эми башка талааларды демейки абалына калтырып, Кийинкини басыңыз
- Сиз Буфердин өлчөмүн 1МБга жана Буфер аралыгын 60 секундга коюңуз. Буфер эки шарттын бири канааттандырылганда S3кө чайкалат. Барактан чыкпаңыз, кийинки кадамды караңыз
6 -кадам: Kinesis үчүн IAM ролун орнотуу
Эми биз Kinesis үчүн коопсуздук уруксаттарын орноттук, анткени ал Lambda функциясын алдын ала иштетүү үчүн чакырышы керек, андан кийин ал S3кө жазылат.
- Сиз "IAM ролунда" болгон беттин ылдый жагында "Жаңы тандоо" тандап, сүрөттөгүдөй жаңы IAM ролун түзүңүз жана "Уруксат берүү" баскычын чыкылдатыңыз.
- Эми сиз мурунку бетке кайтып келдиңиз, кийинки баскычты басыңыз. Эми сиз бардык параметрлерди кайра текшерип көрүшүңүз мүмкүн. Бүткөндөн кийин "Жеткирүү агымын түзүү" баскычын чыкылдатыңыз.
Kinesis-Lambda-S3 трубасы ишке киришти!
7 -кадам: AWS EC2 орнотуу
Эми биз AWS булутунан, ошондой эле биздин колдонмонун алдыңкы бөлүгүн жайгаштыра турган серверден маалыматтарды алууга жана алууга мүмкүндүк бере турган кээ бир APIлер менен EC2 экземплярын орнотобуз. Өндүрүш чөйрөсүндө сиз көбүрөөк масштабдуу AWS API Gatewayди колдонуп API жарыялоону каалашыңыз мүмкүн.
- AWS консолунун башкы барагынан EC2 кызматына өтүңүз
- Launch Instance чыкылдатыңыз
- Жогорку издөө тилкесине бул кодду чаптаңыз: 'ami-08935252a36e25f85', бул алдын ала конфигурацияланган виртуалдык машинанын идентификациялык коду. Оң жактагы Тандоо дегенди басыңыз
- "Type" тилкесинен t2.micro тандап, "Review and launch" чыкылдатыңыз. Мисалды азырынча ишке киргизбеңиз, кийинки кадамга өтүңүз
8 -кадам: EC2 үчүн IAM коопсуздук ролун орнотуңуз
- Ишке киргизүүдөн мурун, мисалыбыздын коопсуздук тобун өзгөрткүбүз келет. Бул үчүн, "Коопсуздук топтору" бөлүмүнүн эң оң жагында "Коопсуздук топторун түзөтүү" баскычын чыкылдатыңыз Жаңы коопсуздук тобун төмөнкүдөй орнотуңуз. Бул негизинен SSH туташуусу үчүн 22 портун жана http кызматтары үчүн 80 портун көрсөткөн сиздин мисалдагы брандмауэрди конфигурациялайт
- Кайра "Кароо жана Ишке" чыкылдатыңыз. Эми бардык параметрлер орнотулганын текшериңиз. Бүткөндөн кийин Ишке киргизүүнү чыкылдатыңыз
- Чыкылдатуу менен, мисалы менен 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'син алуу
Биз дээрлик бүттүк. Эми биз html баракчабызда google maps API орнотушубуз керек, колдонуучуга жол белгилери бар картаны көрсөтүү үчүн:
- Google каттоо эсебиңизге кириңиз жана https://cloud.google.com/maps-platform/ дарегине өтүңүз
- Барактын сол жагындагы "Баштоо" үчүн чыкылдатыңыз
- Менюдан "Карталарды" тандап, анан улантууну басыңыз
- Долбоордун аталышы катары "жол мониторингин" киргизип, Кийинкини басыңыз
- Эсеп -кысап маалыматыңызды киргизип, Улантууну басыңыз
- Эми сиздин проектиңиз даяр жана биз API ачкычын APIs & Services -> Credentials баскычын чыкылдатуу менен алабыз
11 -кадам: Серверди ишке киргизиңиз
Жана ал жерде сиздин API ачкычы. Акыркы кылышыңыз керек болгон нерсе data_visualization/anomalies_map.html жана ачкычыңызды файлдын аягына чейин "СЕНИН АЧКЫН-БУЛ ЖЕРДЕ" алмаштыруу
Азыр баары даяр жана кетүүгө даяр! Аны EC2 мисалында аткарууну баштоо үчүн: 'cd data-server' 'python flask_app.py'
Браузериңизге EC2 экземплярыңыздын IP же DNS дарегин киргизиңиз, аномалиялар картасын кээ бир жасалма маалыматтар менен көрүшүңүз керек
12 -кадам: Things Network боюнча HTTP интеграциясын аткарыңыз
Эми бизде бардык инфраструктура иштеп, HTTP интеграциясын ишке ашыруу үчүн иштете алабыз.
- Жаңы колдонмо түзүп, түзмөгүңүздү каттоодон өткөрүңүз. Биз TTN боюнча негизги билимге ээбиз, эгерде тез баштоо көрсөтмөсүнө кайрылбасак
- Колдонмо менюңузда 'Интеграцияларды', андан кийин 'интеграцияны кошууну' тандаңыз
- HTTP интеграциясын тандаңыз
- Сүрөттөн кийинки талааларды киргизиңиз жана EC2 ip же коомдук DNS менен алмаштырыңыз
13 -кадам: Маалыматты иштетүү
Сенсордон чогултулган T маалыматтарынын ар бир тобу үчүн сиз төмөнкү кадамдарды аткарышыңыз керек:
- Т -дын жергиликтүү аймагына GPS координаттары түшүрүлгөн топторду алыңыз. Жергиликтүү аймак - бул Т тегерегиндеги 100 метр аралыкта жайгашкан бардык тюплер.
- Ар бир жакын тупле N үчүн акселерометрдин Z огунун квадрат орточосун N эсептөө керек. Псевдокоддо: mean = sum ([x. Z_accel ** 2 for x in near]) / near.size
- Квадрат стандарттык четтөөнү эсептөө. Псевдокоддо: std = суммасы ([(x. Z_accel ** 2 - орточо) ** 2 x үчүн жакын)]
- Бул форматта чыгаруу: 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 (lat2 * D2R) * pow (sin (dlong/2.0), 2); кош c = 2 * atan2 (sqrt (a), sqrt (1-a));
Эми, мурунку этапта түзүлгөн аралык маалыматтарды колдонуу менен, аномалияларды аныктап, ар бир сапка колдонулган бул үзүндүнү колдонуп, жөнөкөй классификация кылыңыз:
сызык = карта (калкып жүрүү, line.split (","))
v = сызык [2] орточо = сызык [3] std = сап [4] эгерде v (орточо + стд*3): эгерде v (орточо + стд*2): эгерде v (орточо + стд): o.append ([1, сап [0], сап [1]) башка: o.кошуу ([2, сап [0], сап [1]) башка: о.кошуу ([3, сап [0], сап [1])
Аномалиялар https://en.wikipedia.org/wiki/68%E2%80%9395%E2%80… 68–95–99.7 эрежеси боюнча классификацияланган.
Эми сизде мындай форматтагы коллекция бар [type, lat, long].
Түрдүн мааниси төмөнкүчө:
- Кичине аномалия, балким тиешеси жок
- Орто аномалия
- Критикалык аномалия
14 -кадам: Визуалдаштыруу
Визуалдаштыруу бөлүгүн түшүнүү жана өзгөртүү үчүн, биз Google Карталар APIсинин өзгөчөлөштүрүлгөн маркерлерин колдонууну үйрөнүшүбүз керек
Биринчиден, карта кайра чалууда башталышы керек:
initMap () {функциясы
data = 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
Сунушталууда:
Ubidots + ESP32- Болжолдуу машина мониторинги: 10 кадам
Ubidots + ESP32- Болжолдуу машина мониторинги: Ubidotsтун жардамы менен Google баракчасында почта окуяларын жана вибрация жазуусун түзүү менен машинанын термелүүсүн жана темп-расын болжолдуу анализдөө
Эки гараждын эшигинин мониторинги: 4 кадам
Эки гараждын эшигинин мониторинги: 2016 -жылы биз жаңы үйгө көчүп кеткенбиз, анда гараждын эшиктери үйдүн негизги кире беришинен көрүнбөйт. Ошентип, сиз эшиктер жабык же ачык экенин так айта албайсыз. Бир гана мониторинг үчүн, мурунку ээлери пресс алмаштыргычты орнотушту
IOT менен Green House мониторинги: 5 кадам
Жашыл үйдүн мониторинги IOT менен: Айыл чарбасына келгенде, температураны көзөмөлдөө & өсүмдүктөрдүн нымдуулугу алардын жашоо үчүн маанилүү фактор болуп саналат. Учурда дыйкандар күнөсканага орнотулган термометрди колдонушат, ошондуктан дыйкандар температураны өлчөй алышат. Бирок, бул колдонмо колдонмо
ESP32_DHT11_OLED_Thingspeak аркылуу аба ырайынын мониторинги: 7 кадам
ESP32_DHT11_OLED_Thingspeak аркылуу аба ырайын көзөмөлдөө: Бул үйрөткүчтө сиз ESP32 жана DHT11ди колдонуп, температураны жана нымдуулукту көзөмөлдөгөн аба ырайы мониторун курасыз, ал OLED дисплейинде көрсөтүлөт. Ал ThingSpeak.The ESP32ге жүктөлгөн, бул күчтүү IOT куралы. Бул арзан баадагы система-о
Nokia LCD менен DSM501A менен абанын мониторинги: 7 кадам
Nokia LCD менен DSM501A менен Абанын Саны Мониторинги: Салам достор! Бул кыска нускамада мен сизге үйүңүздө же каалаган жериңизде аба кулатын кантип көзөмөлдөө керектигин көрсөтөм