Kategoriarkiv: .NET

Microsoft Silver Application Development Partner

Hinnerup Net A/S er igen (januar 2017) blevet udnævnt som Microsoft Silver Application Development Partner. Vi havde sidst fornøjelsen i maj 2013, og er glade for at kunne gentage succesen.

Vi har fortsat målretningen af vore kompetencer indenfor Microsoft’s teknologier og platforme, og vi belønnes atter for den ekspertise og viden vi har opnået.

Dette betyder du som kunde kan regne med at du får:

  • leveret kvalitetsløsninger indenfor Microsoft’s teknologi og platform
  • softwareudviklere med optimal softwarekendskab og kompetence
  • et samarbejde med en softwareleverandør der er en anerkendt Microsoft Partner


 

Microsoft Azure IoT

Systemet i skematisk form:
azure-iot-nodemcu
Klik på billedet for at se det i stort format.

Den anvendte NodeMCU-enhed
nodemcu
Klik på billedet for at se det i stort format.
Vi har leget med Microsoft Azure cloud og Internet-of-Things (IoT) dataopsamling, analyse- og rapporterings-teknologier.

Ganske hurtigt endte vi med en kørende demo, der kunne afsende data fra en Internet opkoblet enhed, lade Microsoft Azure indsamle, processere, analysere disse data og endeligt at være istand til at visualisere de behandlede data på et web-baseret real-time dashboard.

Azure IoT Suite

Azure IoT Suite er en samling af teknologier der målretter sig Internet of Things enheder, og kommunikation imellem Azure og IoT enhederne.

Her et uddrag fra Microsoft Azure IoT Suite beskrivelsen:

  • Get started quickly with preconfigured solutions
  • Tailor preconfigured solutions to meet your needs
  • Enhance the security of your IoT solutions
  • Support a broad set of operating systems and protocols
  • Easily connect millions of devices
  • Analyze and visualize large quantities of operational data
  • Integrate with your existing systems and applications
  • Scale from proof of concept to broad deployment

Vi kan anbefale disse videoer, til hurtigt at danne sig et overblik over Azure IoT Suite teknologierne:

Introducing the Microsoft Azure IoT Suite
Link til indhold på azure.microsoft.com, klik på billedet for at se video
Introduction to IoT Suite and IoT Hub for developers
Link til indhold på azure.microsoft.com, klik på billedet for at se video


Gennemgang af demoen udfra system skemaet

Her følger en beskrivelse af demonstrationssystemet vi satte op. Start med at granske system skema billedet. Afsnittene herefter tager udgangspunkt i hvert af elementerne i dette billede fra venstre mod højre.

NodeMCU

Til eksperimentet har vi brugt det indlejrede-system NodeMCU. NodeMCU-enhederne udemærker sig ved at være meget små (ca. 5 x 3 cm), nemme at programmere (via Arduino IDE værktøjet) og har såvel indbyggede GPIO pins samt WiFi funktionalitet.

Der er kun anvendt en enkelt NodeMCU enhed, men man ville sagtens kunne bruge mange flere, f.eks. i et produktionsscenarie, op imod Microsoft Azure.

Denne guide beskriver hvordan du kan opsætte NodeMCU til at fungere op imod Azure IoT.

Azure Function

Som det første satte vi en Azure Function op, som en HTTP WebHook triggered funktion, dvs. en funktion der kan kaldes via et alment HTTP request ind imod funktionens dedikerede URL hos Azure med en række parametre. Dette viser hvordan en IoT enhed kan kalde ind på f.eks. en web service eller som her direkte ind på en Azure Function, og på den vis foranledige afviklingen af et tilpasset stykke forretningskode. Dette kunne eksempeltvis resultere i at en e-mail blev afsendt, at en særlig database række blev skrevet ned, eller at en fejllog-linie blev genereret, og meget andet.

Azure IoT Hub

NodeMCU-enheden er programmeret til at generere tilfældigt data hvert tiende sekund. Disse data bæres ind via en Azure IoT Hub. Dette endpoint fungerer som kontaktfladen imellem IoT enhederne og Azure skyen, og omvendt, også fra Azure til IoT enhederne (såkaldt bi-direktionel kommunikation). Azure IoT Hub’en skalerer automatisk op til mange millioner samtidige IoT enheder.

Eksempel på JSON data afsendt fra enheden til Azure:

{
    "Dev":"nodemcu-hinnerup",
    "Utc":"2016-10-15T22:29:33",
    "Celsius":25.00, "Humidity":50.00, "hPa":1012, "Light":0,
    "WiFi":1, "Mem":21416, "Id":274,
    "Geo":"Aarhus"
}

Azure Event Hub (input)

Dataene flyder herfra videre til en såkaldt Azure Event Hub. Azure Event Hub’en er en mellemligende kø, der kan håndtere millioner af event beskeder i sekundet. Således samles data op, og gives videre i det tempo den øvrige processerings-pipeline i systemet kan tage fra med. Disse input data kaldes “eventhub-hinnerup-input” i T-SQL koden herunder.

Azure Stream Analytics

Den eneste data-pipeline vi har anvendt er Azure Stream Analytics. Her indsamles dataene i realtid og transformation, beregninger og analyse udføres efter nogle opstillede forretningsregler. Disse implementeres i T-SQL målrettet Stream Analytics området.

En række særlige kommandoer er tilgængelige man ikke finder i standard T-SQL, heriblandt “TumblingWindow” grupperingen vi gjorde brug af:

-- Input data transformation, calculations and analysis
WITH ProcessedData as (
    SELECT
        -- Telemetry device data
        MAX(Celsius) MaxTemperature,
        MIN(Celsius) MinTemperature,
        AVG(Celsius) AvgTemperature,
        MAX(Humidity) MaxHumidity,
        MIN(Humidity) MinHumidity,
        AVG(Humidity) AvgHumidity,
        MAX(hPa/100) MaxPressure,
        MIN(hPa/100) MinPressure,
        AVG(hPa/100) AvgPressure,
        -- Telemetry monitoring metrics
        MAX(WiFi) WiFiConnectAttempts,
        MAX(Mem) FreeMem,
        -- Telemetry device info
        location,
        deviceId,
        -- Time stamp
        System.Timestamp AS Timestamp
    FROM
        [eventhub-hinnerup-input]
    GROUP BY
        TumblingWindow (second, 60),
        deviceId,
        location
)
-- Output data
SELECT * INTO [eventhub-hinnerup-output] FROM ProcessedData

Azure Event Hub (output)

De processerede data flyder nu ud via et Azure Event Hub output (“eventhub-hinnerup-output” i T-SQL koden herover). Disse kan udstilles via f.eks. WebSockets hvilket vi valgte. Der er mange andre muligheder, f.eks. kunne man også udstille dataene via en Azure API App (så et eksternt system som f.eks. en web-service også ville kunne tilgå dataene). Man kan godt vælge flere output former på en gang.

Azure Web App

Vi fandt en skabelon til et real-time dashboard, der kan konsumere Azure IoT data via WebSockets. Skabelonen kan hentes på GitHub her. Dette website deployede vi til en Azure Web App, og var således i rekord fart i luften med et automatisk opdaterende real-time dashboard der kan vise de indsamlede data.

azure-iot-realtime-chart
Klik på billedet for at se det i stort format.

Vi har godt nok kun én enhed tilknyttet systemet, men data fra alle tilknyttede enheder (som man kan specificere nærmere kriterier for i Azure portalen) ville i givet fald være blevet vist.

Afrunding

Her kan du se det samlede overblik i Azure portalen som vi endte ud med:

azure-portal-dashboard
Klik på billedet for at se det i stort format.

Man kunne nemt have indsat storage, til f.eks. en MS SQL database og/eller til et data warehouse, og så derfra bygge videre med Azure HDInsights big-data analyse og videre endnu med kunstig intelligens processering. Man kunne også godt have koblet andre enheder på websitet (mobil browsere fx), ligesom de behandlede data godt ville kunne flyde over i et eksternt system via f.eks. en Azure API App løsning. Men, det går desværre nok en hel del ud over det tiltænkte omfang for denne demonstration. Indrømmet, da vi jo er nørder, var det meget svært at skære fra.

Til enterprise og produktionsbrug vil vi anbefale at der tages et kig på Microsoft PowerBI værktøjet til real-time dashboard visualiseringer og videre dataanalyse formål.

Som en afslutning er der vist blot tilbage at sige, at det var skægt og relativt nemt at lege med, og vi håber du har fundet artiklen interessant.

Hinnerup Net A/S er nu SiteCore Certificeret Solution Partner

sitecore-solutions-partner

Vi kan hermed annoncere at Hinnerup Net A/S nu er en SiteCore Certificeret Solution Partner. Dette understreger vores dedikering, evner, fremtidige muligheder og kompetencer indenfor SiteCore løsninger.

Samtidigt ønskes Hanne Kibsgaard og Peter Snabe et stort tillykke med deres nytilegnede Sitecore CMS Developer Foundations (SDF), Sitecore CMS Website .NET Developer (SND) og Sitecore CMS .NET Developer Day of Prototyping (DOP) certificeringer.

 Hanne Kibsgaard
 Peter Snabe

Læs også indlægget fra sidst vi havde en certificeringsrunde i Hinnerup Net A/S.