Tartalomjegyzék:

Útfigyelés: 15 lépés
Útfigyelés: 15 lépés

Videó: Útfigyelés: 15 lépés

Videó: Útfigyelés: 15 lépés
Videó: Millió lépés az iskoládért 2024, November
Anonim
Közúti megfigyelés
Közúti megfigyelés

Ma megmutatjuk, hogyan állítunk be gyorsulásmérőkön, LoRaWAN -on, Amazon Web Services -en és Google Cloud API -n alapuló közúti rendellenességek figyelő rendszert.

1. lépés: Követelmények

  • DISCO-L072CZ-LRWAN1 tábla
  • X-NUCLEO-IKS01A2 bővítő modul (a gyorsulásmérőhöz)
  • X-NUCLEO-GNSS1A1 (a lokalizációhoz)
  • AWS fiók
  • Google Cloud Platform -fiók

2. lépés: Az érzékelő firmware -jének létrehozása és felvillanása

Csatlakoztassa az IKS01A2 és a GNSS1A1 a tábla tetejére a GPIO csapokon keresztül. Töltse le a firmware kódját a GitHub webhelyről. Hozzon létre (ha még nincs) fiókot az ARM Mbed -en, és importálja a kódot az online fordító repójában. Állítsa a célplatformot DISCO-L072CZ-LRWAN1-re, és mentse el a projektet. Most menjen a The Things Network oldalra, és hozzon létre egy fiókot, ha még nem rendelkezik vele. Hozzon létre egy alkalmazást, hozzon létre egy új eszközt az alkalmazáson belül, és állítsa a csatlakozási módot OTAA -ra. Fogja meg a megfelelő paramétereket az mbed_app.json fájl következő mezőinek kitöltéséhez: "lora.appskey", "lora.nwkskey", "lora.device-address".

Az érzékelő rendszeresen rögzíti a gyorsulásmérő és a GNSS adatait, és elküldi azokat a LoRa kapcsolaton keresztül a legközelebbi átjáróhoz, amely továbbítja azokat a The Things Network alkalmazásunkhoz. A következő lépés egy felhőalapú szerver és egy HTTP -integráció beállítása a TTN -en.

3. lépés: A felhő beállítása

A felhő beállítása
A felhő beállítása

Most készen állunk a felhőinfrastruktúra beállítására, amely összegyűjti és összesíti az összes telepített tábla adatait. Ez az infrastruktúra az alábbi ábrán látható, és a következőkből áll:

  • Kinezis, a bejövő adatfolyam kezelésére;
  • Lambda, az adatok szűrése és előfeldolgozása tárolás előtt;
  • S3, az összes adat tárolására;
  • EC2, az adatok elemzésére és a kezelőfelület üzemeltetésére.

4. lépés: Az AWS Lambda beállítása

Az AWS Lambda beállítása
Az AWS Lambda beállítása

Szemléltetjük az infrastruktúra beállításához szükséges lépéseket, kezdve a Lambda -val.

  1. Jelentkezzen be AWS -fiókjával, és a konzol főoldaláról lépjen a Lambda oldalra
  2. Kattintson a Funkció létrehozása elemre
  3. Az oldal felső részén válassza ki a Szerző a Scratchből lehetőséget. Ezután töltse ki a többi mezőt a képen látható módon, majd kattintson a Funkció létrehozása gombra
  4. Most, hogy létrehozta az AWS Lambda funkciót, keresse fel a https://github.com/roadteam/data-server webhelyet, és másolja az aws_lambda.py fájl tartalmát az oldal második felében található szerkesztőbe. A Lambda funkció most készen áll:)

5. lépés: Állítsa be az AWS Kinesis Firehose adatfolyamot

Állítsa be az AWS Kinesis Firehose adatfolyamot
Állítsa be az AWS Kinesis Firehose adatfolyamot
  1. Most térjen vissza az AWS konzol főoldalára, és lépjen a Szolgáltatásokba a Kinesis oldalra
  2. Most a Kinesis főoldalán vagy. Az oldal jobb oldalán, a „Kinesis Firehose szállítási folyamok” alatt válassza az „Új szállítási adatfolyam létrehozása” lehetőséget.
  3. A „Kézbesítési adatfolyam” mezőbe írja be az „útfelügyelet-adatfolyam” lehetőséget. Hagyja a többi mezőt alapértelmezettként, majd kattintson a Tovább gombra
  4. Most a „Forrásrekordok átalakítása AWS Lambdával” alatt válassza az Engedélyezve lehetőséget, és Lambda funkcióként kattintson az újonnan létrehozott „útfigyelő-lambda” elemre. Ne aggódjon, ha a funkció időtúllépésére figyelmeztető üzenet jelenik meg, mivel az általunk végzett művelet nem számítási szempontból drága. Hagyja a többi mezőt alapértelmezettként, majd kattintson a Tovább gombra
  5. Célállomásként válassza az Amazon S3, és S3 célállomásként az Új létrehozása lehetőséget. Vödörnévként írja be az „útfigyelő vödör” szót, majd menjen. Most hagyja a többi mezőt alapértelmezettként, és kattintson a Tovább gombra
  6. Érdemes a puffer méretét 1 MB -ra, a pufferintervallumot pedig 60 másodpercre állítani. A puffert az S3 -ra öblítik, amikor a két feltétel egyike teljesül. Ne hagyja el az oldalt, lásd a következő lépést

6. lépés: Állítsa be az IAM szerepét a Kinesis számára

Állítsa be az IAM szerepét a Kinesis számára
Állítsa be az IAM szerepét a Kinesis számára

Most beállítottuk a Kinesis biztonsági engedélyeit, mivel meg kell hívnia a Lambda függvényt az előfeldolgozáshoz, majd írni fog az S3 -on

  1. Az oldal alján, ahol „IAM szerepkör” van, válassza az „Új választás létrehozása” lehetőséget, hozzon létre egy új IAM -szerepet, mint a képen, majd kattintson az Engedélyezés gombra.
  2. Most visszatért az előző oldalra, kattintson a Tovább gombra. Most érdemes ellenőrizni az összes paramétert. Ha elkészült, kattintson a „Szállítási adatfolyam létrehozása” gombra

A Kinesis-Lambda-S3 csővezeték üzemkész!

7. lépés: Az AWS EC2 beállítása

Az AWS EC2 beállítása
Az AWS EC2 beállítása

Most beállítunk egy EC2 példányt néhány API -val, amelyek lehetővé teszik számunkra az adatok küldését és lehívását az AWS felhőből, valamint azt a szervert, ahol az alkalmazás kezelőfelületét tároljuk. Éles környezetben érdemes az API -t a skálázhatóbb AWS API -átjáró használatával közzétenni.

  1. Az AWS konzol főoldaláról lépjen az EC2 szolgáltatáshoz
  2. Kattintson a Példány indítása elemre
  3. A felső keresősávba illessze be ezt a kódot: „ami-08935252a36e25f85”, azaz a használni kívánt előre konfigurált virtuális gép azonosító kódja. Kattintson a jobb oldalon található Kiválasztás gombra
  4. A „Típus” oszlopban válassza a t2.micro elemet, majd kattintson az „Áttekintés és indítás” gombra. Még ne indítsa el a példányt, folytassa a következő lépéssel

8. lépés: Állítsa be az IAM biztonsági szerepkört az EC2 számára

Állítsa be az IAM biztonsági szerepét az EC2 számára
Állítsa be az IAM biztonsági szerepét az EC2 számára
  1. Indítás előtt módosítani szeretnénk példányunk biztonsági csoportját. Ehhez kattintson a „Biztonsági csoportok” szakasz jobb szélén található „Biztonsági csoportok szerkesztése” lehetőségre. Állítson be új biztonsági csoportot az alábbiak szerint. Ez alapvetően konfigurálja a példány tűzfalát, amely a 22 -es portot teszi ki az SSH -kapcsolathoz, és a 80 -as portot a http -szolgáltatásokhoz
  2. Kattintson ismét az „Áttekintés és indítás” gombra. Most ellenőrizze, hogy minden paraméter be van -e állítva. Ha végzett, kattintson az Indítás gombra
  3. Ha rákattint, megjelenik egy új ablak, amely kulcspárt állít be a példányhoz való ssh -kapcsolathoz. Válassza az „Új kulcspár létrehozása” lehetőséget, és névként írja be az „ec2-road-monitoring” lehetőséget. Kattintson a Kulcspár letöltése gombra. Rendkívül fontos, hogy ez a fájl elveszzen, vagy (ami még rosszabb) nem biztonságos tárolás: nem fogja tudni újra letölteni a kulcsot. A.pem kulcs letöltése után a példány készen áll az indításra

9. lépés: Hozzáférés az EC2 példányhoz

Hozzáférés az EC2 példányához
Hozzáférés az EC2 példányához

Friss EC2 példánya fent van az AWS felhőben. Csatlakozhat a korábban letöltött kulcsfájlhoz (ehhez az oktatóanyaghoz feltételezzük, hogy ismeri az ssh alapjait). A példány IP -címét a „Leírás” szakasz irányítópultján választhatja ki, az alábbiak szerint: Használhatja mind a nyilvános IP -címét, mind a nyilvános DNS -t. Most egy ssh klienssel írja be a következő parancsot:

ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-OR-DNS

ahol az ec2-road-monitoring.pem a korábban generált kulcs.

Most folytassa a szerveroldali kód áthúzását

git klón-rekursív

10. lépés: A Google Térkép API letöltése

A Google Térkép API letöltése
A Google Térkép API letöltése

Majdnem végeztünk. Most be kell állítanunk a google maps API -t a html oldalunkon, hogy megjeleníthessük a térképet az útvonalpontokkal a felhasználó számára:

  1. Jelentkezzen be Google-fiókjába, és lépjen a https://cloud.google.com/maps-platform/ oldalra
  2. Kattintson az „Első lépések” gombra az oldal bal oldalán
  3. A menüben válassza a „Térképek” lehetőséget, majd kattintson a Tovább gombra
  4. A projekt névként írja be az „útfelügyelet” lehetőséget, majd kattintson a Tovább gombra
  5. Adja meg számlázási adatait, majd kattintson a Folytatás gombra
  6. Most a projekt készen áll, és az API -kulcsot az API -k és szolgáltatások -> Hitelesítő adatok elemre kattintva szerezzük be

11. lépés: Indítsa el a szervert

Indítsa el a szervert
Indítsa el a szervert

És itt van az API kulcsa. Utolsó lépésként lépjen a data_visualization/anomalies_map.html oldalra, és másolja át a kulcsot a fájl végére, a „YOUR-KEY-IT” helyett.

Most minden kész és indulásra kész! Ahhoz, hogy elinduljon a végrehajtás az EC2 példányban: „cd data-server” „python flask_app.py”

Írja be böngészőjébe az EC2 példányának IP- vagy dns -címét, látni kell az anomáliák térképét néhány ál adatgal

12. lépés: Végezze el a HTTP -integrációt a Things hálózaton

Végezze el a HTTP -integrációt a Things hálózaton
Végezze el a HTTP -integrációt a Things hálózaton

Most, hogy minden háttér -infrastruktúra fel van dolgozva, feldolgozhatjuk a HTTP -integráció végrehajtását.

  1. Hozzon létre egy új alkalmazást, és regisztrálja készülékét. Feltételezzük a TTN alapvető ismereteit, ha nem, olvassa el a gyorsindítási útmutatót
  2. Az alkalmazás menüjében válassza az „Integrációk”, majd az „integráció hozzáadása” lehetőséget
  3. Válassza a HTTP integrációt
  4. Írja be a képeket követő mezőket, és cserélje le az EC2 ip vagy nyilvános DNS -re

13. lépés: Adatfeldolgozás

Az érzékelőből gyűjtött minden T adatcsomaghoz a következő lépéseket kell végrehajtania:

  1. Szerezze be azokat a sorokat, amelyeknek GPS koordinátái a T. helyi területére esnek.
  2. Minden legközelebbi N sorhoz számítsa ki a gyorsulásmérő Z tengelyének négyzetátlagát N.
  3. Számítsa ki a négyzetes szórást. Álkódban: std = összeg ([(x. Z_accel ** 2 - átlag) ** 2 x közelben])
  4. Kimenet ebben a formátumban: lat, long, Z_accel ** 2, mean, std

A helyi terület kiszámításához használja a GPS távolságot méterben. C ++ - ban:

#define D2R (M_PI / 180.0)

#define EARTH_RAY 6371 dupla távolság (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; dupla dlat = (lat2 - lat1) * D2R; kettős a = pow (sin (dlat/2,0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2,0), 2); kettős c = 2 * atan2 (sqrt (a), sqrt (1-a));

Most, az előző lépésben előállított közbenső adatok felhasználásával, észlelje az anomáliákat, és végezzen naiv osztályozást a következő sorokra alkalmazva:

sor = térkép (float, line.split (","))

v = sor [2] átlag = sor [3] std = sor [4], ha v (átlag + std*3): ha v (átlag + std*2): ha v (átlag + std): o.append ([1, [0]. Sor, [1]) else: o.append ([2, [0]. Sor, [1]) else: o.append ([3, [0]. Sor, [sor] 1])

Az anomáliákat a 68–95–99,7 szabály segítségével osztályozzák

Most van egy ilyen formátumú gyűjteménye [típus, lat, hosszú].

A típus jelentése a következő:

  1. Enyhe anomália, valószínűleg lényegtelen
  2. Közepes anomália
  3. Kritikus anomália

14. lépés: Vizualizáció

Megjelenítés
Megjelenítés

Ahhoz, hogy megértsük és esetleg megváltoztassuk a vizualizációs részt, meg kell tanulnunk az egyéni jelölők használatát, a Google Térkép API egyik funkcióját

Először is a térképet inicializálni kell egy visszahívásban:

function initMap () {

adatok = queryData (); map = new google.maps. Map (document.getElementById ('térkép'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); megjegyzés(); }

Adja meg ennek a visszahívásnak a nevét az URL -ben (ezt illesztettük be az API -kulcsunk elé) egy HTML -címkében:

script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"

Az objektum létrehozásakor jelölőt lehet beilleszteni a térképbe:

new google.maps. Marker ({pozíció: {lat: LATITUDE, lng: LONGITUDE}, térkép: térkép, ikon: “/path/to/icon.png”})

Látható a kódban, hogy az anomáliák adatkészletének minden adatához jelölőt helyeznek be (lásd a megjegyzés () függvényt), és az ikon az anomália osztályán alapul. Amikor ezt a böngészőbe futtatjuk, feltérképezhetünk egy térképet, amelyben a rendellenességek szűrhetők a jelölőnégyzetek segítségével, amint az a képen látható.

15. lépés: Hitelek és külső linkek

Ezt a projektet Giovanni De Luca, Andrea Fioraldi és Pietro Spadaccino, a Római Sapienza Egyetem számítástechnika elsőéves MSc mérnökei készítették.

  • Diák, amelyeket a szerzők a koncepció bizonyításának bemutatására használtak:

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

  • GitHub repók az összes kóddal:

    github.com/roadteam

Ajánlott: