Professional Documents
Culture Documents
Monitoring
Analiza
Predikcija
BOLJI UVID U STVARI
PAMETNIJE ODLUKE O STVARIMA
IoT Aplikacije
Kuće
Zdravstvo
Proizvodnja (industry¸4.0)
Energija
Transport
Okoliš
IoT razvojni kitovi stvari HW+SW
Arduino (https://www.arduino.cc/)
Raspberry PI (https://www.raspberrypi.org)
zahtjev
You pay as You go
Modeli Cloud Servisa
IoT Platforme
IBM Watson IoT—Bluemix (
http://www.ibm.com/internet‐of‐things/ )
AWS IoT (https://aws.amazon.com/iot/)
Microsoft Azure IoT (
https://azure.microsoft.com/en‐us/suites/iot‐suite/)
Google Cloud IoT (
https://cloud.google.com/solutions/iot/ )
IoT Platforme
Eclipse IoT (https://iot.eclipse.org/)
GE Predix (https://www.predix.com/)
Xively (https://www.xively.com/)
ThingWorx (https://www.thingworx.com/)
macchina.io (https://macchina.io/)
Carriots (https://www.carriots.com/)
ThingsBoard (https://thingsboard.io)
Blynk (https://www.blynk.cc/)
IoT Protokoli između stvari i platforme (IP bazirani)
WebSocket (TCP/IP)
Format aplikacionih poruka - JSON
• JSON je otvoren tekstualni format dizajniran za čitljivu razmenu podataka.
• JSON je format koji polako zamenjuje XML jer ima nekolicinu prednosti u odnosu
na XML kao npr. nije potreban poseban parser a struktura podržana je od skoro svih
programskih jezika kao Pyton, C, C++, C#, Java, JavaScript, Perl itd.
• JSON ne koristi tagove pa stoga ima kraći kod koji je lakši za pisanje i razumljiviji
za čitanje. Takođe je lako za mašine da analiziraju i generišu poruke u JSON
formatu.
• Ekstenzija datoteke s podacima u JSON-ovom formatu je .json, dok je meta oznaka
(MIME format) application/json.
Format aplikacionih poruka - JSON
• Može imati dva tipa struktura:
Objekat : kolekcija „ime : vrijednost“
https://www.zigbee.org/)
LoRa (Long Range), LoRaWAN
(https://lora-alliance.org/)
CAN (Controller Area Network)
MS Azure IoT Platforma
MS Azure IoT Platforma
MS Azure IoT Platforma
MS Azure Cloud IoT Platforma
U većini IoT aplikacija potrebno je imati dvosmjernu razmjenu podataka:
◦ Device to cloud (uređaj ka cloud-u)
◦ Cloud to device (cloud ka uređaju)
Microsoft Azure platforma ima IoT Hub komunikacijski servis koji daje
sigurnu, pouzdanu i skalabilnu razmjenu poruka između IoT komponenti
(uređaji i cloud aplikacija).
Azure IoT Hub se može posmatrati kao cloud gateway visokog nivoa koji
upravlja razmjenama poruka ka i od IoT uređaja.
Azure IoT Hub
Azure IoT Hub je dizajniran da riješi probleme i ograničenja pri povezivanju
uređaja kao što su
◦ Bidirekciona komunikacija big data streaming podataka
◦ Kontrola pristupa i ključevi uređaja
◦ Detaljan monitoring povezanih uređaja
◦ Detaljan monitoring događaja (events monitoring)
◦ Software Development Kits (IoT Hub SDK) za većinu programskih jezika i
S/H platformi
Azure IoT Hub SDK
IoT Hub Arhitektura
Povezivanje IoT uređaja sa Azure Cloud-om
Azure osigurava SDK za većinu jezika i brojne
IoT uređaje
IoT
stvar
Lokalno
D2C data streaming - example
string s_connectionString = "HostName=mojisenzori.azure-
devices.net;DeviceId=MyPythonDevice;SharedAccessKey=801Qc36xGP6L0aoyuJzxya3EEz02cOqTIj76160yhl8=";
s_deviceClient = DeviceClient.CreateFromConnectionString(s_connectionString, TransportType.Mqtt);
while (true)
{
double currentTemperature = minTemperature + rand.NextDouble() * 15;
double currentHumidity = minHumidity + rand.NextDouble() * 20;
await Task.Delay(100);
}
D2C data streaming - example
D2C stream podataka može biti provjeren na
IoT Hub
D2C data reading
private static async Task Main(string[] args)
{
Console.WriteLine("IoT Hub Quickstarts - Read device to cloud messages. Ctrl-C to exit.\n");
// Invoke the direct method asynchronously and get the response from the simulated device.
var response = await s_serviceClient.InvokeDeviceMethodAsync("MyPythonDevice", methodInvocation);
IoT Hub je cloud gateway koji je napravljen da unikatno adresira povezane uređaje. Iz
ovog razloga IoT Hub ima i C2D komunikaciju koja je zahtjev mnogih IoT sistema.
Event Hub je big data streaming servis dizajniran za priliv big data podataka (veliki
protok, do milijardu zahtjeva dnevno). Ovaj servis je integrisan u mnoge analitičke
servise Azure platforme, kao i u Azure IoT Hub koji koristi Event hub za primanje
telemetrijskih poruka od povezanih uređaja.
Microsoft preporučuje korištenje IoT Hub-a pri povezivanju IoT uređaja na Azure.
Real-time streaming podataka
IoT uređaj se povezuje na IoT Hub, i počinje real-time streaming podataka sa senzora
prema IoT Hub
IoT Hub prihvata (baferuje) podatke sa hiljada (miliona) IoT uređaja, koji čekaju nastavak
protoka (pipeline) kroz Azure sistem servisa i aplikacija
Vrijedi spomenuti da se podaci čuvaju na IoT Hub-u minimalno jedan dan u slučaju da
dođe do prevelikog opterećenja daljeg toka podataka.
IoT Hub je samo privremeno mjesto na kojem se podaci čuvaju, tako da je sljedeći korak
preuzimanje tih podataka od strane servisa koji ih može analizirati i usmjeriti.
Azure Stream Analytics je servis koji prihvata podatke, šalje ih na određenu destinaciju i
po potrebi radi transformaciju podataka (filtriranje, agregiranje)
Azure Stream Analytics
Azure Stream Analytics servis je real-time event procesor
koji omogućuje primjenu analitičkih servisa nad podacima
koji pristižu sa raznih ulaza (senzori, aplikacije, uređaji).
Hot path putanja se odnosi na podatke koji se procesiraju u real-time (ili near real-time). Po
potrebi su pokreću neke radnje na osnovu rezultata ili su podaci prikazuju vizuelizacijom
(monitoring)
Cold path putanja se odnosi na podatke koji se smještaju pa se naknadno obrađuju. Primjer
može biti čuvanje generisanih vrijednosti u bazama i naknadno procesiranje po potrebi.
Azure Stream Analytics servis ima mogućnost procesiranja oba tipa putanje podataka i
direktno može integrirati servise za real-time analizu kao i micro-batch procesiranje.
Za transformaciju i usmjeravanje podataka servis koristi jednu formu SQL upita (Transact-SQL
ili T-SQL).
T-SQL
TIMESTAMP BY – funkcija koja omogućava praćenje vremena pristizanja podataka (poruka, događaja). Funkcija
se može koristiti sa vremenom aplikacije (trenutno sistemsko vrijeme) ili vremenom pristizanja podatka.
FROM, INTO – funkcije koje određuju ulazni odnosno izlazni tok podataka
SELECT – dohvata redove iz ulaznog toka podataka i omogućava selektovanje kolona datog reda
WHERE – uslov (slični operatori i izrazi kao kod C if uslova)
GROUP BY – grupiše selektovane redove u set sumiranih redova po jednoj ili više kolona ili izraza. Za svaku grupu
Windowing (prozori) funkcije se koriste sa Group By funkcijom za procesiranje seta događaja (podataka), gdje
prozori određuju način kreiranja i dužinu vremenskih itervala grupisanja podataka.
Tumbling Window – serija prozora fiksne dužine koji se ne preklapaju (kolekcija vrijednosti svakih 10 sekundi).
Hopping Window – serija prozora fiksne dužine koji se preklapaju (uz dužinu intervala se dodaje i hopsize kao veličina
preklapanja).
Sliding Window – prozori koji se pojavljuju samo ako je neki uslov postignut (vrati broj mjerenja koja se pojavljuju više od 3 puta
u zadnjih 10 sekundi)
Session Window – grupišu događaje koji su pristigli u slično vrijeme (daje se offset parametar). Npr grupisanje događaja koji su
pristigli u razmaku od jedne sekunde.
T-SQL - primjer
Stream Analytics Architecture
Real-Time vizuelizacija i monitoring podataka
(dashboard)
Azure daje više opcija za smještanje podataka kao što su baze za struktuirane i nestruktuirane
podatke (SQL, NoSQL)
Pošto se radi o big data problemu uzimaju se u obzir rješenja koja podržavaju smještanje
masivnih količina podataka. Azure nudi naredna rješenja za big data podatke:
◦ Azure Blobs: veoma skalabilan servis za smještanje objekata tekstualnih ili binarnih podataka.
◦ Azure Tables: NoSQL skladište u obliku tabela za podatke bez predefinisane šeme smještanja, brz
pristup smještenim podacima.
◦ Azure Data Lake Storage Gen1/2: skladište za ogromne količine podataka, optimiziran za brz pristup
podacima od strane analitičkih servisa. Može lako raditi sa količinama podataka reda petabajta.
Azure Blob
Azure Blob Storage je specijaliziran smještaj za masivne količine
nestruktuiranih podataka kao što su tekst ili binarni podaci. Idealan je za
sljedeće upotrebe:
◦ Serviranje slika ili dokumenata direktno pretraživaču
◦ Smještanje datoteka za distribuiran pristup
◦ Pisanje log datoteka
◦ Smještanje podataka za backup, restore ili arhiviranje
◦ Smještanje podataka za analizu
D1 Power BI
Procesiranje
Analitika
D2 Azure Stream
D22 Analytics
“temp”=26.4,”light”=9.81 Azure IoT
Hub
Smještanje
Lokalno (storage)
cloud
Notification Hub
Analytics
Descriptive analytics
Diagnostic analytics
Predictive analytics
Prescriptive analytics
Machine Learning (Predictive Analytics)
Machine Learning (Predictive Analytics)
ML se bavi problematikom izgradnje prediktivnih modela pojave
korištenjem uzorka podataka o pojavi (data driven modeling)
¸
Klasifikacija (LR, SVM, DT, BDT, Neural Network, Deep Neural
Networks, Deep Convolution Neural Networks)
Modeli se mogu primjeniti kao web servisi za integraciju u druge cloud alate
(stream analytics, data factory, Power BI itd.) ili lokalne alate kao što je
Microsoft Excel.
ML Web Service
Prethodno kreiran model se može instalirati kao web servis tako da ostali cloud alati
mogu imati pristup korištenja ML modela
Konfiguracijom web servisa se mogu dobiti ključevi i url koji se koriste za pristup
(REST API). Postoje dva načina pozivanja:
◦ Request/response
◦ Batch request
Machine Learning in Run
Azure Cognitive Services (AML)
Govor (prepoznavanje govora, prevođenje govora u tekst,
prevođenje govora, prevođenje teksta u govor,
prepoznavanje govornika itd.)
Vision - Taging
"confidence": 0.9999515 },
{ "name": "person",
"confidence": 0.9605775 },
{ "name": "roller skating",
"confidence": 0.945730865 },
{ "name": "man", "confidence":
0.918820739 }, { "name":
"outdoor", "confidence":
0.910782 }, { "name":
"riding", "confidence":
0.9000071 }, { "name":
"sport", "confidence":
0.8697403 }, { "name":
"skateboarding",
"confidence": 0.742671132 },
{ "name": "skateboard",
"confidence": 0.7426711 },
Vision - OCR
OUR greatest glory is not
in never failing,
but in rising
every
time
we fall
Vision - API
static void Main(string[] args)
{
ComputerVisionClient computerVision = new ComputerVisionClient(
new ApiKeyServiceClientCredentials(subscriptionKey),
new System.Net.Http.DelegatingHandler[] { });
// You must use the same region as you used to get your subscription
// keys. For example, if you got your subscription keys from westus,
// replace "westcentralus" with "westus".
//
// Free trial subscription keys are generated in the "westus"
// region. If you use a free trial subscription key, you shouldn't
// need to change the region.
Task.WhenAll(t1, t2).Wait(5000);
Console.WriteLine("Press ENTER to exit");
Console.ReadLine();
}
Ostali Azure servisi (PaaS)
Ostali Azure servisi (PasS)
Ostali Azure servisi (PaaS)
References
Microsoft AZURE
https://azure.microsoft.com/en-us/
Azure IoT
https://azure.microsoft.com/en-us/overview/iot
/
Azure free account
https://azure.microsoft.com/en-us/free/
IoT Arhitektura
IoT Arhitektura
IoT Arhitektura