Obsah:
- Krok 1: Požadavky
- Krok 2: Sestavení a stažení firmwaru senzoru
- Krok 3: Nastavení cloudu
- Krok 4: Nastavení AWS Lambda
- Krok 5: Nastavení datového proudu AWS Kinesis Firehose
- Krok 6: Nastavení role IAM pro kinezi
- Krok 7: Nastavení AWS EC2
- Krok 8: Nastavení role zabezpečení IAM pro EC2
- Krok 9: Přístup k vaší instanci EC2
- Krok 10: Načtěte rozhraní Google Maps API
- Krok 11: Spusťte server
- Krok 12: Proveďte integraci HTTP v síti věcí
- Krok 13: Zpracování dat
- Krok 14: Vizualizace
- Krok 15: Kredity a externí odkazy
Video: Monitorování silnice: 15 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Dnes vám ukážeme, jak jsme nastavili systém sledování silničních anomálií založený na akcelerometrech, LoRaWAN, Amazon Web Services a Google Cloud API.
Krok 1: Požadavky
- Deska DISCO-L072CZ-LRWAN1
- Rozšiřující modul X-NUCLEO-IKS01A2 (pro accellerometr)
- X-NUCLEO-GNSS1A1 (pro lokalizaci)
- Účet AWS
- Účet Google Cloud Platform
Krok 2: Sestavení a stažení firmwaru senzoru
Připojte IKS01A2 a GNSS1A1 na horní straně desky přes GPIO piny. Stáhněte si kód firmwaru z GitHub. Vytvořte (pokud ho ještě nemáte) účet na ARM Mbed a importujte kód do úložiště online kompilátoru. Nastavte cílovou platformu na DISCO-L072CZ-LRWAN1 a uložte projekt. Nyní přejděte na The Things Network a vytvořte si účet, pokud ho ještě nemáte. Vytvořte aplikaci, vytvořte nové zařízení uvnitř aplikace a nastavte režim připojení na OTAA. Uchopte příslušné parametry a vyplňte následující pole v souboru mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".
Senzor bude pravidelně zaznamenávat akcelerometr a data GNSS a odesílat je přes připojení LoRa k nejbližší bráně, která je předá do naší aplikace v síti věcí. Dalším krokem je nastavení cloudového serveru a integrace HTTP na TTN.
Krok 3: Nastavení cloudu
Nyní jsme připraveni nastavit cloudovou infrastrukturu, která bude shromažďovat a agregovat data ze všech nasazených desek. Tato infrastruktura je znázorněna na obrázku níže a skládá se z:
- Kinesis, pro zpracování příchozího datového proudu;
- Lambda, k filtrování a předzpracování dat před jejich uložením;
- S3, k uložení všech dat;
- EC2 k analýze dat a hostování našeho front-endu.
Krok 4: Nastavení AWS Lambda
Ukážeme si kroky nutné k nastavení této infrastruktury, počínaje Lambdou.
- Přihlaste se pomocí svého účtu AWS a z hlavní stránky konzoly přejděte na Lambda
- Klikněte na Vytvořit funkci
- V horní části stránky by měl být vybrán Autor od začátku. Poté vyplňte ostatní pole jako na obrázku a poté klikněte na Vytvořit funkci
- Nyní, když jste vytvořili funkci AWS Lambda, přejděte na https://github.com/roadteam/data-server a zkopírujte obsah souboru aws_lambda.py do editoru, ve kterém najdete druhou polovinu stránky. Vaše funkce Lambda je nyní připravena:)
Krok 5: Nastavení datového proudu AWS Kinesis Firehose
- Vraťte se nyní na hlavní stránku konzoly AWS a v části Služby přejděte na Kinesis
- Nyní jste na hlavní stránce Kinesis. V pravé části stránky v části „Kinesis Firehose delivery streams“vyberte „Create new delivery stream“
- Do pole „Název streamu doručení“napište „stream-monitoring-stream“. Ostatní pole ponechte ve výchozím nastavení a klikněte na další
- Nyní v části „Transformovat zdrojové záznamy pomocí AWS Lambda“vyberte možnost Povoleno a jako funkce Lambda klikněte na nově vytvořenou „lambda monitorování silnice“. Pokud se objeví varování o vypršení časového limitu funkce, nedělejte si starosti, protože operace, kterou provádíme, není výpočetně nákladná. Ostatní pole ponechte ve výchozím nastavení a klikněte na další
- Jako cíl vyberte Amazon S3 a jako cíl S3 vyberte Vytvořit nový. Jako název lopaty zadejte „kbelík pro sledování silnic“a poté jděte. Nyní ponechte ostatní pole ve výchozím nastavení a klikněte na Další
- Možná budete chtít nastavit velikost vyrovnávací paměti na 1 MB a interval vyrovnávací paměti na 60 sekund. Vyrovnávací paměť bude vyprázdněna do S3, kdykoli je splněna jedna ze dvou podmínek. Neopouštějte stránku, viz další krok
Krok 6: Nastavení role IAM pro kinezi
Nyní jsme nastavili bezpečnostní oprávnění pro Kinesis, protože pro předzpracování musí volat funkci Lambda a pak bude psát na S3
- V dolní části stránky, ve které se nacházíte v „roli IAM“, vyberte „Vytvořit novou volbu“, vytvořte novou roli IAM jako na obrázku a klikněte na Povolit
- Nyní jste zpět na předchozí stránce, klikněte na další. Nyní možná budete chtít znovu zkontrolovat všechny parametry. Po dokončení klikněte na „Vytvořit stream doručení“
Plynovod Kinesis-Lambda-S3 je v provozu!
Krok 7: Nastavení AWS EC2
Nyní nastavíme instanci EC2 s některými rozhraními API, která nám umožní odesílat a stahovat data z cloudu AWS a také ze serveru, na kterém budeme hostovat frontend naší aplikace. V produkčním prostředí možná budete chtít publikovat API pomocí škálovatelnější brány API AWS.
- Na hlavní stránce konzoly AWS přejděte na službu EC2
- Klikněte na Spustit instanci
- Do horního vyhledávacího panelu vložte tento kód: „ami-08935252a36e25f85“, což je identifikační kód předem nakonfigurovaného virtuálního počítače, který chcete použít. Vpravo klikněte na Vybrat
- Ve sloupci „Typ“vyberte t2.micro a klikněte na „Zkontrolovat a spustit“. Instanci zatím nespouštějte, přejděte k dalšímu kroku
Krok 8: Nastavení role zabezpečení IAM pro EC2
- Před spuštěním chceme upravit skupinu zabezpečení naší instance. Chcete -li to provést, v pravé části sekce „Skupiny zabezpečení“klikněte na „Upravit skupiny zabezpečení“Vytvořte novou skupinu zabezpečení následujícím způsobem. To v podstatě konfiguruje bránu firewall vaší instance, která vystavuje port 22 pro připojení SSH a port 80 pro služby
- Klikněte znovu na „Zkontrolovat a spustit“. Nyní zkontrolujte, zda jsou nastaveny všechny parametry. Po dokončení klikněte na Spustit
- Po kliknutí se objeví nové okno, které nastaví pár klíčů pro připojení ssh k instanci. Vyberte „Vytvořit nový pár klíčů“a jako název zadejte „ec2-road-monitoring“. Klikněte na Stáhnout pár klíčů. Je nesmírně důležité, aby se tento soubor ztratil nebo (hůř) byl bezpečně uložen: klíč si nebudete moci znovu stáhnout. Po stažení klíče.pem je instance připravena ke spuštění
Krok 9: Přístup k vaší instanci EC2
Vaše nová instance EC2 je v cloudu AWS. Můžete se k němu připojit pomocí dříve staženého souboru klíčů (u tohoto kurzu předpokládáme, že znáte základy ssh). IP adresu instance můžete získat tak, že ji vyberete na hlavním panelu v části „Popis“následujícím způsobem: Můžete použít veřejnou IP adresu nebo veřejnou DNS, je to stejné. S klientem ssh nyní zadejte příkaz:
ssh -i ec2-road-monitoring.pem uživatel ec2@VAŠE IP-ADDR-NEBO DNS
kde ec2-road-monitoring.pem je váš klíč generovaný dříve.
Nyní pokračujte v procházení kódu na straně serveru
git clone-rekurzivní
Krok 10: Načtěte rozhraní Google Maps API
Jsme téměř hotovi. Nyní musíme na naší html stránce nastavit rozhraní Google Maps API, aby se uživateli zobrazila mapa s trasovými body:
- Přihlaste se ke svému účtu Google a přejděte na
- V levé části stránky klikněte na „Začínáme“
- V nabídce vyberte „Mapy“a poté klikněte na Pokračovat
- Jako název projektu zadejte „monitorování silnice“a klikněte na Další
- Zadejte své fakturační údaje a klikněte na Pokračovat
- Nyní je váš projekt připraven a my získáme klíč API kliknutím na APIs & Services -> Credentials
Krok 11: Spusťte server
A tam je váš klíč API. Poslední věc, kterou musíte udělat, je přejít na data_visualization/anomalies_map.html a zkopírovat klíč na konec souboru podobně, nahradit „VAŠE KLÍČ-ZDE“
Nyní je vše nastaveno a připraveno jít! Aby bylo možné spustit spuštění v instanci EC2: „cd data-server“„python flask_app.py“
Zadejte do prohlížeče adresu IP nebo DNS vaší instance EC2, měli byste vidět mapu anomálií s některými figurínami
Krok 12: Proveďte integraci HTTP v síti věcí
Nyní, když máme veškerou infrastrukturu backendu v provozu, můžeme zpracovat integraci
- Vytvořte novou aplikaci a zaregistrujte své zařízení. Předpokládáme základní znalosti o TTN, pokud ne v příručce pro rychlý start
- V nabídce aplikace vyberte „Integrace“a poté „Přidat integraci“
- Vyberte integraci
- Zadejte pole následující za obrázkem a nahraďte je vaším EC2 ip nebo veřejným DNS
Krok 13: Zpracování dat
Pro každou n -tici dat T shromážděných ze senzoru musíte provést následující kroky:
- Získejte sadu n -tic s GPS souřadnicemi spadajícími do místní oblasti T. Místní oblast jsou všechny n -tice, které jsou 100 metrů kolem T.
- Pro každou nejbližší n-tici N vypočítejte druhou mocninu střední osy akcelerometru v N. V pseudokódu: průměr = součet ([x. Z_accel ** 2 pro x v blízkosti]) / blízká velikost
- Vypočítejte druhou standardní odchylku na druhou. V pseudokódu: std = součet ([(x. Z_accel ** 2 - průměr) ** 2 pro x v blízkosti])
- Výstup v tomto formátu: lat, long, Z_accel ** 2, mean, std
Pro výpočet místní oblasti použijte vzdálenost GPS v metrech. V C ++:
#define D2R (M_PI / 180.0)
#define EARTH_RAY 6371 dvojnásobná vzdálenost (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; double dlat = (lat2 - lat1) * D2R; double a = pow (sin (dlat/2,0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2,0), 2); double c = 2 * atan2 (sqrt (a), sqrt (1-a));
Nyní pomocí mezilehlých dat generovaných v předchozím kroku detekujte anomálie a proveďte naivní klasifikaci pomocí tohoto úryvku aplikovaného na každý řádek:
line = mapa (float, line.split (","))
v = řádek [2] průměr = řádek [3] std = řádek [4] if v (průměr + std*3): if v (průměr + std*2): if v (průměr + std): o.append ([1, řádek [0], řádek [1]) else: o.append ([2, řádek [0], řádek [1]) else: o.append ([3, řádek [0], řádek [1])
Anomálie jsou klasifikovány podle pravidla 68–95–99,7
Nyní máte kolekci v tomto formátu [typ, lat, dlouhý].
Význam typu je následující:
- Lehká anomálie, pravděpodobně irelevantní
- Střední anomálie
- Kritická anomálie
Krok 14: Vizualizace
Abychom pochopili a možná změnili část vizualizace, musíme se naučit používat vlastní značky, což je funkce rozhraní Google Maps API
Za prvé, mapu je třeba inicializovat při zpětném volání:
funkce initMap () {
data = queryData (); mapa = nový google.maps. Map (document.getElementById ('mapa'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); Poznámka(); }
Zadejte název tohoto zpětného volání do adresy URL (vložili jsme před klíč API) do značky HTML:
script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"
Značku lze do mapy vložit, když je objekt vytvořen:
nový google.maps. Marker ({pozice: {lat: LATITUDE, lng: LONGITUDE}, mapa: mapa, ikona: “/path/to/icon.png”})
V kódu vidíte, že pro všechna data v datové sadě anomálií je vložena značka (viz funkce remark ()) a ikona je založena na třídě anomálie. Když to spustíte do prohlížeče, můžeme prozkoumat mapu, na které lze filtrovat anomálie pomocí zaškrtávacích políček, jak je vidět na obrázku.
Krok 15: Kredity a externí odkazy
Tento projekt vytvořili Giovanni De Luca, Andrea Fioraldi a Pietro Spadaccino, studenti prvního ročníku oboru inženýrství v oboru informatiky na univerzitě Sapienza v Římě.
-
Prezentace, které autoři použili k předložení tohoto důkazu konceptu:
www.slideshare.net/PietroSpadaccino/road-m…
-
Úložiště GitHub se všemi kódy:
github.com/roadteam
Doporučuje:
Ubidots + ESP32- Prediktivní monitorování stroje: 10 kroků
Ubidots + ESP32- Prediktivní strojové monitorování: Prediktivní analýza vibrací a teploty stroje vytvářením e-mailových událostí a záznamem vibrací v Google listu pomocí Ubidots. Prediktivní údržba a monitorování stavu stroje Vzestup nové technologie, tj. Internet věcí, těžký ind
Řada IoT ESP8266: 2- Monitorování dat prostřednictvím ThingSpeak.com: 5 kroků
Řada IoT ESP8266: 2- Monitorujte data prostřednictvím ThingSpeak.com: Toto je druhá část řady IoT ESP8266. Chcete -li vidět část 1, podívejte se na tuto instrukovatelnou řadu IoT ESP8266: 1 Připojte se k routeru WIFI. Tato část si klade za cíl ukázat vám, jak odeslat data ze senzoru do jedné z populárních bezplatných cloudových služeb IoT https: //thingspeak.com
Systém vizuálního monitorování na bázi LoRa pro zemědělství Iot - Navrhování přední aplikace pomocí Firebase & Angular: 10 kroků
Systém vizuálního monitorování na bázi LoRa pro zemědělství Iot | Navrhování frontové aplikace pomocí Firebase & Angular: V předchozí kapitole hovoříme o tom, jak senzory pracují s modulem loRa pro naplnění databáze Firebase Realtime, a viděli jsme diagram velmi vysoké úrovně, jak celý náš projekt funguje. V této kapitole si povíme, jak můžeme
Systém monitorování a řízení vnitřního klimatu Raspberry Pi: 6 kroků
Systém monitorování a řízení vnitřního klimatu Raspberry Pi: Lidé chtějí mít ve svém domě pohodlí. Protože klima v naší oblasti nám nemusí vyhovovat, používáme k udržování zdravého vnitřního prostředí mnoho spotřebičů: ohřívač, chladič vzduchu, zvlhčovač, odvlhčovač, čistička atd. V dnešní době je
Monitorování pračky/sušičky prádla s ESP8266 a senzorem zrychlení: 6 kroků
Monitorování pračky/sušičky prádla S ESP8266 a senzorem zrychlení: Pračka/sušička prádla je ve sklepě a vy do ní zpravidla dáte hromadu oblečení a poté vás zaměstná další domácí práce. Přehlížíte oblečení, které zůstalo promočené a absorbující se v suterénu vašeho stroje