You are on page 1of 66

Razvoj IoT aplikacija korištenjem Microsoft

Azure IoT platforme


IoT
IoT Arhitektura
Internet of Things
 Prvo, „stvar“ mora imati jedinstven identitet
(IPv4/6)
 Drugo, mora moći komunicirati sa drugim
stvarima
 Treće, mora imati senzore i/ili aktuatore
 Četvrto, mora imati CPU
 Peto, mora imati backend podršku (servers,
cloud)
IoT svrha

 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/)

 ESP8266 (www.esp8266.net), ESP32 (www.esp32.net)

 Raspberry PI (https://www.raspberrypi.org)

 STM Nucleo boards, ARM mbed (https://www.mbed.com)

 Windows, Linux, Android, iOS, RTOS


Cloud
 Virtualizacija computing, storage and
networking
 Sve postaje usluga (servis)
 Servisi su održavani
 Horizontalna i vertikalna skalabilnost na

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)

 HTTP(S) (Hyper Text Transfer Protocol) (TCP/IP, SSL/TLS) -


request/response model

 MQTT (Message Queue Telemetry Transport) (TCP/IP, SSL),


(publish/subscribe model)

 AMQP (Advanced Message Queuing Protocol) (TCP/IP, SSL)

 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“

 Niz: lista vrijednosti


Format aplikacionih poruka - JSON
IoT Protokoli između stvari (non IP)
i Gateway (IP) uređaja

 Blootuth Low Energy (BLE) (PAN)


 Zigbee (sensor and control network) (

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;

 // Create JSON message


 var telemetryDataPoint = new
 {
 temperature = currentTemperature,
 humidity = currentHumidity
 };
 var messageString = JsonConvert.SerializeObject(telemetryDataPoint);
 var message = new Message(Encoding.ASCII.GetBytes(messageString));
 // Add a custom application property to the message.
 // An IoT hub can filter on these properties without access to the message body.
 message.Properties.Add("temperatureAlert", (currentTemperature > 30) ? "true" : "false");

 // Send the telemetry message


 await s_deviceClient.SendEventAsync(message);
 Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, messageString);

 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");

 // Create an EventHubClient instance to connect to the


 // IoT Hub Event Hubs-compatible endpoint.
 var connectionString = new EventHubsConnectionStringBuilder(new Uri(s_eventHubsCompatibleEndpoint), s_eventHubsCompatiblePath, s_iotHubSasKeyName, s_iotHubSasKey);
 s_eventHubClient = EventHubClient.CreateFromConnectionString(connectionString.ToString());
 // Create a PartitionReciever for each partition on the hub.
 var runtimeInfo = await s_eventHubClient.GetRuntimeInformationAsync();
 var d2cPartitions = runtimeInfo.PartitionIds;

 CancellationTokenSource cts = new CancellationTokenSource();


 Console.CancelKeyPress += (s, e) =>
 {
 e.Cancel = true;
 cts.Cancel();
 Console.WriteLine("Exiting...");
 };
 var tasks = new List<Task>();
 foreach (string partition in d2cPartitions)
 {
 tasks.Add(ReceiveMessagesFromDeviceAsync(partition, cts.Token));
 }
 // Wait for all the PartitionReceivers to finsih.
 Task.WaitAll(tasks.ToArray());
 }
 }
 }
C2D commands (device app)
 private static void Main(string[] args)
 {
 Console.WriteLine("IoT Hub Quickstarts #2 - Simulated device. Ctrl-C to exit.\n");

 // Connect to the IoT hub using the MQTT protocol


 s_deviceClient = DeviceClient.CreateFromConnectionString(s_connectionString,
TransportType.Mqtt);

 // Create a handler for the direct method call


 s_deviceClient.SetMethodHandlerAsync("SetTelemetryInterval", SetTelemetryInterval,
null).Wait();
 SendDeviceToCloudMessagesAsync();
 Console.ReadLine();
 }
C2D Commands
 private static async Task InvokeMethod()
 {
 var methodInvocation = new CloudToDeviceMethod("SetTelemetryInterval") { ResponseTimeout = TimeSpan.FromSeconds(30) };
 methodInvocation.SetPayloadJson("10");

 // Invoke the direct method asynchronously and get the response from the simulated device.
 var response = await s_serviceClient.InvokeDeviceMethodAsync("MyPythonDevice", methodInvocation);

 Console.WriteLine("Response status: {0}, payload:", response.Status);


 Console.WriteLine(response.GetPayloadAsJson());
 }

 private static void Main(string[] args)


 {
 Console.WriteLine("IoT Hub Quickstarts #2 - Back-end application.\n");

 // Create a ServiceClient to communicate with service-facing endpoint on your hub.


 s_serviceClient = ServiceClient.CreateFromConnectionString(s_connectionString);
 InvokeMethod().GetAwaiter().GetResult();
 Console.WriteLine("Press Enter to exit.");
 Console.ReadLine();
 }
 }
IoT Hub ili Event Hub
 IoT i Event Hub su Azure servisi koji mogu prihvatiti big data streaming podatke te
ih proslijediti ostalim aplikacijama. Servisi su slični ali su u suštini dizajnirani za
različite upotrebe.

 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).

 Postoje hladne i vruće putanje podataka (hot/cold data


path – tzv. lambda arch.) na Azure platformi. Podaci koji
pripadaju vrućoj putanji su karakterisani real-time
procesiranjem dok su podaci hladne putanje karakterisani
batch i micro batch procesiranjem.
Azure Stream Analytics
Azure Stream Analytics
 Cold path vs Hot path

 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

se vraća jedan red.

 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)

 Za real-time prikaz se koristi Microsoft Power BI servis koji se može


integrirati sa Stream Analytics
 Power BI je kolekcija softverskih servisa koji rade zajedno da pretvore izvore
podataka u različite vizualizacijske prikaze
Power BI (hot path)
 Power BI se može koristiti kao desktop aplikacija ili Saas (software as a
service) online aplikacija.
 Prvo se u Stream Analytics upit dodaje izlaz na Power BI. U Power BI će biti
vidljivi setovi podatak i tabele koje su poslane iz Stream Analytics.
Power BI
Pohranjivanje podataka (cold path)
 Prije nego se krene sa analitikom i integracijom mora se objasniti prvi dio hladne putanje
podatka. Ovo znači da osim što podaci idu prema Power BI direktno iz Stream Analytics servisa
trebaju da budu i smješteni na neku lokaciju odakle će kasnije biti pokupljeni za analizu.

 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

 Blob Storage se sastoji od tri povezana resursa:


◦ Račun na kojem je napravljen (storage account)
◦ Kontejneri
◦ Blobovi u kontejneru
Azure Blob
 Za kasniju analizu Stream Analytics može smjesiti podatke u jedan od blob
kontejnera koji su kreirani u Storage Accounts tako što se definiše još jedan
izlaz servisa.
 Prilikom kreiranja blob izlaza, može se izabrati JSON ili CSV format blob
datoteke. Slično radu sa folderima, unutar kontejnera se mogu kreirati
dodatni folderi koji će razvrstavati podatke (Stream Analytics izlaz ima
mogućnost da automatski razvrstava pristigle događaje po datumu ili
vremenu).
IoT rješenje - primjer

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)

 Regresija (LR, DT, BDT, NN, CNN)

 Grupisanje (k-means clustering, SOM, ART)

 Vremenske serije (ARMA, rekurentne Neuronske mreže...)


ML - Neural Networks
ML - Models
Azure Machine Learning
 Machine Learning Studio je drag-and-drop alat koji se koristi za kreiranje,
testiranje i primjenu prediktivnih modela. Uključuje brojne built-in
algoritme za dizajn, treniranje i diplojment ML modela

 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.)

 Vizija ( napredni algoritmi za analizu slika i videa na različite


načine za različite kontekste, npr. detekcija objekata, OCR,
face itd.)

 Prirodni jezik (analiza prirodnog jezika, analiza sentimenta,


itd)
Tags [ { "name": "skating",

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.

 // Specify the Azure region


 computerVision.Endpoint = "https://westcentralus.api.cognitive.microsoft.com";

 Console.WriteLine("Images being analyzed ...");


 var t1 = AnalyzeRemoteAsync(computerVision, remoteImageUrl);
 var t2 = AnalyzeLocalAsync(computerVision, localImagePath);

 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

You might also like