Obsah:

Monitorovanie cesty: 15 krokov
Monitorovanie cesty: 15 krokov

Video: Monitorovanie cesty: 15 krokov

Video: Monitorovanie cesty: 15 krokov
Video: ИТАЛЬЯНСКИЙ ЯЗЫК ДО АВТОМАТИЗМА УРОК 15 УРОКИ ИТАЛЬЯНСКОГО ЯЗЫКА ИТАЛЬЯНСКИЙ ДЛЯ НАЧИНАЮЩИХ С НУ 2024, November
Anonim
Monitorovanie cesty
Monitorovanie cesty

Dnes vám ukážeme, ako sme nastavili systém monitorovania anomálií na cestách založený na akcelerometroch, LoRaWAN, webových službách Amazon a Google Cloud API.

Krok 1: Požiadavky

  • Doska DISCO-L072CZ-LRWAN1
  • Rozširujúci modul X-NUCLEO-IKS01A2 (pre accellerometer)
  • X-NUCLEO-GNSS1A1 (pre lokalizáciu)
  • Účet AWS
  • Účet Google Cloud Platform

Krok 2: Vytvorenie a aktualizácia firmvéru senzora

Pripojte IKS01A2 a GNSS1A1 na vrchnú dosku cez piny GPIO. Stiahnite si kód firmvéru z GitHub. Vytvorte (ak ho ešte nemáte) účet v ARM Mbed a importujte kód do úložiska v online kompilátore. Nastavte cieľovú platformu na DISCO-L072CZ-LRWAN1 a uložte projekt. Teraz choďte do The Things Network a vytvorte si účet, ak ho ešte nemáte. Vytvorte aplikáciu, vytvorte nové zariadenie v aplikácii a nastavte režim pripojenia na OTAA. Uchopte príslušné parametre a vyplňte nasledujúce polia v súbore mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".

Senzor bude pravidelne zaznamenávať akcelerometer a údaje GNSS a odosielať ich prostredníctvom pripojenia LoRa k najbližšej bráne, ktorá ich postúpi do našej aplikácie v sieti vecí. Ďalším krokom je nastavenie cloudového servera a integrácie HTTP na serveri TTN.

Krok 3: Nastavenie cloudu

Nastavenie cloudu
Nastavenie cloudu

Teraz sme pripravení nastaviť cloudovú infraštruktúru, ktorá bude zhromažďovať a agregovať údaje zo všetkých nasadených dosiek. Táto infraštruktúra je znázornená na obrázku nižšie a pozostáva z:

  • Kinesis, na spracovanie prichádzajúceho dátového toku;
  • Lambda, na filtrovanie a predbežné spracovanie údajov pred ich uložením;
  • S3, na uloženie všetkých údajov;
  • EC2, na analýzu údajov a hostenie nášho klientskeho rozhrania.

Krok 4: Nastavte AWS Lambda

Nastavte AWS Lambda
Nastavte AWS Lambda

Ilustrujeme kroky potrebné na zriadenie tejto infraštruktúry, počnúc Lambdou.

  1. Prihláste sa pomocou svojho účtu AWS a z hlavnej stránky konzoly choďte na Lambda
  2. Kliknite na položku Vytvoriť funkciu
  3. V hornej časti stránky by mal byť vybratý Autor od začiatku. Potom vyplňte ostatné polia ako na obrázku a potom kliknite na položku Vytvoriť funkciu
  4. Teraz, keď ste vytvorili funkciu AWS Lambda, navštívte stránku https://github.com/roadteam/data-server a skopírujte obsah súboru aws_lambda.py do editora, v ktorom nájdete druhú polovicu stránky. Vaša funkcia Lambda je teraz pripravená:)

Krok 5: Nastavte dátový tok AWS Kinesis Firehose

Nastavte stream údajov AWS Kinesis Firehose
Nastavte stream údajov AWS Kinesis Firehose
  1. Vráťte sa teraz na hlavnú stránku konzoly AWS a v časti Služby prejdite na položku Kinesis
  2. Teraz ste na hlavnej stránke Kinesis. V pravej časti stránky v časti „Streamy doručovania Kinesis Firehose“vyberte „Vytvoriť nový stream doručovania“.
  3. Do poľa „Názov streamu dodávky“napíšte „Stream monitorovania cesty“. Ostatné polia nechajte predvolené a kliknite na tlačidlo Ďalej
  4. Teraz v časti „Transformovať zdrojové záznamy pomocou AWS Lambda“vyberte možnosť Povolené a ako funkciu Lambda kliknite na novovytvorenú „monitorovanie cesty-lambda“. Ak sa objaví upozornenie na časový limit funkcie, nie je dôvod sa znepokojovať, pretože operácia, ktorú robíme, nie je výpočtovo drahá. Ostatné polia nechajte predvolené a kliknite na tlačidlo Ďalej
  5. Ako cieľ vyberte Amazon S3 a ako cieľ S3 vyberte Vytvoriť nový. Ako názov vedra zadajte „vedro na monitorovanie cesty“a potom choďte. Teraz nechajte ostatné polia na predvolené hodnoty a kliknite na Ďalej
  6. Možno budete chcieť nastaviť veľkosť vyrovnávacej pamäte na 1 MB a interval vyrovnávacej pamäte na 60 sekúnd. Pufr bude prepláchnutý do S3, kedykoľvek je splnená jedna z dvoch podmienok. Neopúšťajte stránku, pozrite sa na ďalší krok

Krok 6: Nastavte úlohu IAM pre kinezu

Nastavte úlohu IAM pre kinezu
Nastavte úlohu IAM pre kinezu

Teraz sme nastavili bezpečnostné povolenia pre Kinesis, pretože na predspracovanie musí volať funkciu Lambda a potom bude písať na S3

  1. V spodnej časti stránky, v ktorej sa nachádzate v „role IAM“, vyberte „Vytvoriť novú z možností“, vytvorte novú rolu IAM ako na obrázku a kliknite na položku Povoliť
  2. Teraz ste späť na predchádzajúcej stránke, kliknite na tlačidlo Ďalej. Teraz možno budete chcieť znova skontrolovať všetky parametre. Po dokončení kliknite na „Vytvoriť stream doručenia“.

Plynovod Kinesis-Lambda-S3 je v prevádzke!

Krok 7: Nastavte AWS EC2

Nastavte AWS EC2
Nastavte AWS EC2

Teraz nastavíme inštanciu EC2 s niektorými API, ktoré nám umožnia tlačiť a sťahovať údaje z cloudu AWS a tiež zo servera, na ktorom budeme hostovať frontend našej aplikácie. V produkčnom prostredí možno budete chcieť publikovať API pomocou rozšíriteľnejšej brány API AWS.

  1. Na hlavnej stránke konzoly AWS prejdite na službu EC2
  2. Kliknite na Spustiť inštanciu
  3. Do horného vyhľadávacieho panela vložte tento kód: „ami-08935252a36e25f85“, čo je identifikačný kód vopred nakonfigurovaného virtuálneho počítača, ktorý sa má použiť. Vpravo kliknite na položku Vybrať
  4. V stĺpci „Typ“vyberte t2.micro a kliknite na „Skontrolovať a spustiť“. Inštanciu ešte nespúšťajte, prejdite na ďalší krok

Krok 8: Nastavte bezpečnostnú úlohu IAM pre EC2

Nastavte bezpečnostnú úlohu IAM pre EC2
Nastavte bezpečnostnú úlohu IAM pre EC2
  1. Pred spustením chceme upraviť skupinu zabezpečenia našej inštancie. Ak to chcete urobiť, v pravej časti sekcie „Skupiny zabezpečenia“kliknite na „Upraviť skupiny zabezpečenia“Vytvorte novú skupinu zabezpečenia nasledujúcim spôsobom. V zásade sa nakonfiguruje brána firewall vašej inštancie, ktorá odhalí port 22 pre pripojenie SSH a port 80 pre služby
  2. Znova kliknite na položku Skontrolovať a spustiť. Teraz skontrolujte, či sú nastavené všetky parametre. Po dokončení kliknite na Spustiť
  3. Po kliknutí sa otvorí nové okno, v ktorom nastavíte pár kľúčov pre ssh pripojenie k inštancii. Vyberte „Vytvoriť nový pár kľúčov“a ako názov zadajte „ec2-road-monitoring“. Kliknite na položku Stiahnuť pár kľúčov. Je mimoriadne dôležité, aby sa tento súbor stratil alebo (ešte horšie) bol bezpečne uložený: kľúč si už nebudete môcť stiahnuť. Po stiahnutí kľúča.pem je inštancia pripravená na spustenie

Krok 9: Prístup k vašej inštancii EC2

Prístup k vašej inštancii EC2
Prístup k vašej inštancii EC2

Vaša nová inštancia EC2 je v cloude AWS. Môžete sa k nemu pripojiť pomocou predtým stiahnutého súboru kľúčov (v prípade tohto tutoriálu predpokladáme, že poznáte základy ssh). IP adresu inštancie môžete získať tak, že ju vyberiete na hlavnom paneli v časti „Popis“nasledovne: Môžete použiť svoju verejnú IP alebo verejnú DNS, je rovnaká. S klientom ssh teraz zadajte príkaz:

ssh -i ec2-road-monitoring.pem užívateľ ec2@VAŠA IP-ADDR-ALEBO-DNS

kde ec2-road-monitoring.pem je váš kľúč vygenerovaný predtým.

Teraz pokračujte v ťahaní kódu na strane servera

git clone-rekurzívny

Krok 10: Načítajte rozhranie Google Maps API

Načítať rozhranie Google Maps API
Načítať rozhranie Google Maps API

Sme skoro hotoví Teraz musíme na našej html stránke nastaviť rozhranie Google Maps API, aby sa používateľovi zobrazila mapa s trasovými bodmi:

  1. Prihláste sa do svojho účtu Google a prejdite na stránku
  2. Kliknite na položku „Začíname“v ľavej časti stránky
  3. V ponuke vyberte položku „Mapy“a potom kliknite na tlačidlo Pokračovať
  4. Ako názov projektu zadajte „monitorovanie cesty“a kliknite na Ďalej
  5. Zadajte svoje fakturačné údaje a kliknite na Pokračovať
  6. Teraz je váš projekt pripravený a my získame kľúč API kliknutím na APIs & Services -> Credentials

Krok 11: Spustite server

Spustite server
Spustite server

A tam je váš kľúč API. Posledná vec, ktorú musíte urobiť, je prejsť na stránku data_visualization/anomalies_map.html a skopírovať kľúč na koniec súboru, ktorý nahradí text „VAŠE KĽÚČE-TU“

Teraz je všetko pripravené a pripravené! Aby sa spustil, spustite ho v inštancii EC2: „cd data-server“„python flask_app.py“

Zadajte do svojho prehliadača adresu IP alebo DNS vašej inštancie EC2, mala by sa vám zobraziť mapa anomálií s niektorými fiktívnymi údajmi

Krok 12: Vykonajte integráciu HTTP v sieti Things

Vykonajte integráciu HTTP v sieti Things
Vykonajte integráciu HTTP v sieti Things

Teraz, keď máme všetku backendovú infraštruktúru v prevádzke, môžeme spracovať integráciu

  1. Vytvorte novú aplikáciu a zaregistrujte svoje zariadenie. Predpokladáme základné znalosti o TTN, ak nie v stručnom návode
  2. V ponuke aplikácií vyberte „Integrácie“a potom „Pridať integráciu“
  3. Vyberte integráciu
  4. Zadajte polia nasledujúce za obrázkom a nahraďte ich IP serverom EC2 alebo verejným serverom DNS

Krok 13: Spracovanie údajov

Pre každú n -ticu údajov T zozbieraných zo senzora musíte vykonať nasledujúce kroky:

  1. Získajte sadu n -tíc, ktoré majú súradnice GPS, spadajúce do miestnej oblasti T. Miestna oblasť sú všetky n -tice, ktoré sa nachádzajú 100 metrov okolo T.
  2. Pre každú najbližšiu n-ticu vypočítajte štvorcový priemer osi Z akcelerometra v N. V pseudokóde: priemer = súčet ([x. Z_accel ** 2 pre x v blízkosti]) / blízka.veľkosť
  3. Vypočítajte druhú štandardnú odchýlku na druhú. V pseudokode: std = súčet ([(x. Z_accel ** 2 - priemer) ** 2 pre x v blízkosti])
  4. Výstup v tomto formáte: lat, long, Z_accel ** 2, mean, std

Na výpočet miestnej oblasti použite vzdialenosť GPS v metroch. V C ++:

#define D2R (M_PI / 180.0)

#define EARTH_RAY 6371 dvojnásobná vzdialenosť (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; double dlat = (lat2 - lat1) * D2R; dvojnásobok a = pow (sin (dlat/2,0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2,0), 2); dvojité c = 2 * atan2 (sqrt (a), sqrt (1-a));

Teraz pomocou medziľahlých údajov generovaných v predchádzajúcom kroku detegujte anomálie a urobte naivnú klasifikáciu pomocou tohto úryvku aplikovaného na každý riadok:

riadok = mapa (float, line.split (","))

v = riadok [2] priemer = riadok [3] štandard = riadok [4] ak v (priemer + štandard + 3): ak v (priemer + štandard*2): ak v (priemer + štandard): o.pridať ([1, riadok [0], riadok [1]) else: o.append ([2, riadok [0], riadok [1]) else: o.append ([3, riadok [0], riadok [1])

Anomálie sú klasifikované podľa pravidla 68–95–99,7

Teraz máte zbierku v tomto formáte [typ, lat, dlhý].

Význam typu je nasledujúci:

  1. Mierna anomália, pravdepodobne irelevantná
  2. Stredná anomália
  3. Kritická anomália

Krok 14: Vizualizácia

Vizualizácia
Vizualizácia

Aby sme pochopili a možno zmenili časť vizualizácie, musíme sa naučiť používať vlastné značky, funkciu rozhrania Google Maps API

Po prvé, mapu je potrebné inicializovať pri spätnom volaní:

funkcia initMap () {

data = queryData (); mapa = nový google.maps. Map (document.getElementById ('mapa'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); poznámka(); }

Zadajte názov tohto spätného volania v adrese URL (vložili sme ho sem pred náš kľúč API) do značky HTML:

script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KĽÚČE]&callback=initMap"

Značku je možné do mapy vložiť pri vytváraní objektu:

nový google.maps. Marker ({pozícia: {lat: LATITUDE, lng: LONGITUDE}, mapa: mapa, ikona: “/path/to/icon.png”})

V kóde môžete vidieť, že pre každé údaje v množine údajov o anomáliách je vložená značka (pozri funkciu remark ()) a ikona je založená na triede anomálie. Keď to spustíte do prehliadača, môžeme preskúmať mapu, na ktorej je možné filtrovať anomálie pomocou začiarkavacích políčok, ako je vidieť na obrázku.

Krok 15: Kredity a externé odkazy

Tento projekt realizovali Giovanni De Luca, Andrea Fioraldi a Pietro Spadaccino, študenti prvého ročníka magisterského štúdia inžinierstva v informatike na Sapienzovej univerzite v Ríme.

  • Snímky, ktoré autori použili na predloženie tohto dôkazu konceptu:

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

  • Úložiská GitHub so všetkým kódom:

    github.com/roadteam

Odporúča: