Share via


Internet of Things at Build 2015

Oppsummering

IoT er en term som er (over)brukt mye i det siste. Alle vil være med å ta en del av denne kaken som anslås til rundt 7000 milliarder USD og 26 milliarder enheter koblet sammen. Dette skaper behov for administrere enhetene, ta i mot data, lagre data, analysere i realtid og ikke minst spå hva som kommer til å skje. Denne viten skal brukes til å endre og tilpasse enhetenes oppførsel og gjerne hvert sekund. Forrige måneden lanserte vi Azure IoT suite og under build2015 var det rundt 10 sesjoner rundt dette tema (se under for listen over sesjonene). Noen av komponentene i IoT Suite er Stream Analytics, HDinsight, Event hub, Data Lake, App Fabric og PowerBI.

I denne bloggen går jeg igjennom det viktigste som ble annonsert og diskutert rundt IoT under Build 2015. Dette inkluderer Windows 10 IoT og Azure IoT Suite. Denne bloggposten tar ca 15 min å lese igjennom!

 

Hvis ikke du har levd i en hytte langt inne i de mørkeste skogene i de siste årene, har du sikkert hørt om termen IoT som står for Internet of Things eller tingnes internett på godt norsk. Selve termen er ikke ny, den ble førstegang brukt på slutten av siste århundred av forskere på MIT. Og egentlig så har maskiner og sensorer snakket sammen lenge. Så hvorfor i alle dager er dette blitt så viktig å snakke om dette nå og hvorfor er det så mye hype og mediaoppmerksomhet? Det at de fleste analytikere slåss om å komme med enda større tall på løpende bånd, skaper en litt unaturlig optimisme spesielt om du skal investere i dag. Fra rundt 26 milliarder til 1 trillion koblet enheter blir nevnt frem til 2020–2025 og en industri forsiktig anslått verdt 7000 milliarder dollar!

Her er det sikkert mange faktorer som skaper dette men noen av de viktigste er

  • pris på hardware
  • tilgang til nett er billig og er overalt igjennom 3g/4g og ikke minst wifi
  • med arduino og raspberry pie er det mye enklere å lage løsninger kjap
  • enklere å distribuere løsninger i dag gjennom kickstarter og andre slike
  • bygge langvarig relasjoner med brukeren gjennom hyppig oppdateringer

Dette var like sant for apps i sin tid som det er for ting på internett så med andre ord er ting de nye appene i nær fremtid. Og man ser en klar trend i at vanlig mennesker med interesse for teknologi begynner nå å kjøpe ting som styrer hjemmene deres.

Fra Microsoft sin side så jobber vi med IoT fra 2 perspektiver, det ene er å lage operativ system for IoT, bygge interoperabilitet for andre systemer og implementere standarder. Det andre er å lage bakend i Azure public cloud for alle enheter\ting basert på mikrokontroller eller mikroprosessor uansett operativsystem og programmeringsspråk. For ikke blande for mye, deler jeg denne bloggen opp i Azure IoT og Windows 10 IoT.

Azure IoT

Uansett hvordan man vender og vrir på så må det være en form for kobling mellom tingen og (inter)nett. Alle trenger å lagre dataene de samler enten til telemetri eller styring av tingene, et sikkert sted og med minst mulig ventetid. Du kan enten lage din egen lokal datakraftverk, leie servere hos andre eller bruke private, offentlige eller hybride sky-tjenester. Bygge egne kan være ok om du har tid og ressurser til dette. Kjøpe tjenester som gir akkurat det du trenger til minuttpris kan være ganske greit, spesielt når du skal starte et nytt prosjekt og ikke helt har oversikt over hvor mye eller hvor mange som kommer til å bruke løsningen. En annen grunn kan rett og slett være at det å bygge datasentre ikke er din kjernevirksomhet.

I mars 2015, lansert vår sjef Satya Nadella Azure IoT Suite som rett og slett er mange av våre eksisterende tjenester pakket på en måte som passer dette scenario godt. Som nevnt tidligere så vil vi ifølge analytiker ha 26 milliarder enheter koblet sammen i 2020 og de ville kunne produsere 44 Zetabyte med data som er 20 gangeren det vi klarte å produsere hittil. Det sikkert kjempespennende for oss teknologer at vi vil ha så mye data men det er noe mer som ligger bak her. Vi vil se helt nye forretningmodeller og selskaper som ikke driver med teknologi til daglig vil bruke modeller som “Software as a Service”. Dette er noe som General Electrics og Thyssen Krupp allerede begynte med. GE leier sin jetmotor til nye dreamliner basert på timepris og Thyssen Krupp som har installert millioner av heiser globalt bruker også denne modellen for å leie heis som en tjeneste! Derfor er det viktig å lage robuste, sikre og hyperstore datasentre globalt.

For at det skal bli lett å forstå hva IoT i Azure er, har vi laget endel tjenester du kan bruke enten frittstående eller samlet i IoT Suite som kommer senere.

 

Håndtere enheter og kobling til Azure

For å forstå litt hvordan dette funker, er det greit å ha en felles forståelse av hva man prøver å koble til. En annen viktig faktor er at man kan ikke kan forvente at alt er “green-field” dvs at alt er nytt eller kan byttes. Som regel bruker man eksisterende infrastruktur som også kalles “brown-field”. Så la oss starte med å koble enhetene til cloud.

 

Vi støtter enheter med OS som RTOS, Linux, Windows, Android og iOS. I bestefall har disse enhetene IP adress og kan bruke protokoller som AMQP, HTTP eller MQTT for å koble seg direkte til Cloud Gateway. Støtter enheten ikke disse protokollene, trenger man legge til protokollkoventering i cloud, et slik eksempel er enheter som i dag bygger inn IPv6 støtte men støtter CoAP.

Men at enheter har egen nettverk stack er ikke vanlig i eksisterende miljøer. Vi har sensorer og maskiner i dag som måler og lagrer data. Disse kan ofte ha propritære formater eller standarder som vi ikke støtter i Azure kan kobles ved å bruke eksisterende “field getway” med protokollkonvertering før de sender data til Event hub. Et annet scenario er at tingen er en kanskje en mikrokontroller til veldig lav pris uten støtte for TCP/IP og derfor må kobles til en “field-gateway” igjennom ZigBee, Z-Wave eller BACnet lokalt slik at all tilkobling og sikkerhet håndteres her. I dette tilfelle vil gateway snakke med Event hub på vegne av tingen.

 

Men det er ikke nok å lagre data i skyen men man trenger også kontrollere enhetene tilbake. f.eks slå av eller på noe eller senke temperaturen i rommet. Her kommer den nye IoT Hub inn. Den vil håndtere registrering av enhetene slik at sikkerheten ivaretas. deretter gi mulighet til å sende kommandoer tilbake, f.eks så vil prisskilter i butikkhyller bli oppdatert med riktig pris basert på tilgjenglighet og etterspørsel helt automatisk. Legg merke til antall enheter en enkel hub skal kunne klare — 10 millioner!

Analyse og innsikt i realtid

 

Det er veldig flott å samle all data og over litt tid blir det veldig mye data. Men uten at du analyserer disse dataene blir det bare masse rådata og støy. Selvom lagring er billig vil mye av forståelsen skapes når man bruker dataene til å gjøre tingene smartere. Som bilde viser over så kan man bruke ulike produkter til å analyser data enten i batch eller i realtid. I tradisjonell analyse bruker man HDInsight som er vår Hadoop implemetasjon som en tjeneste i Azure. Machine Learning som tjeneste er noe av det råeste som finnes i Azure. Uten å investere i dyrt hardware og software kan du enten som en utvikler med forståelse av domene eller en data scienctist bruke kraftige algoritmer som kan gi deg svar på ting som vil skje i fremtiden eller skru ned temperaturen på huset før det blir varmt.

 

eksempel på PowerBI dashboard

PowerBI er utrolig kraft presentasjonsverktøy som kan ta data fra ulike kilder og bygge interaktive grafer. Og ikke minst som jeg nevnte i min forrige blogg, bruke Data Lakes for å lagre all rå data slik de opprinnelig ble lest inn. Denne kan være nyttig om man en dag vil gjøre en helt ny type analyse som kanskje ikke fantes når dataene ble samlet inn.

For å drive analyse i mer real tid bruker man tjeneste som Stream Analytics som kan fortelle deg eksakt hva har skjedd innenfor en gitt tidsperiode og her kreves kjennskap til SQL lignende spørringer. Er man en hardbarket Apache Storm fan kan man også bruke denne istedenfor og leveres som en tjeneste.

Når antall enhetene begynner å vokse til flere tusen og flere hundre type enheter taes i bruk og danner hierarkiske strukturer som f.eks i et større firma som har bygninger i 100 land med flere bygg i hvert land og hvert bygg har flere etager, rom og sensorer. I slike scenario så begynner dette å bli komplekst. En måte å håndtere dette på er å tagge hver eneste sensor med riktig informasjon og aggregere dem på en måte. Men en bedre måte å gjøre dette på er å bygge objektmodell, koble telemetri til objektmodellen og skaler ut etter behov slik at man kan håndtere forretningslogikken distribuert i en microservice arkitektur.

 

Nå kan alle lage tjenester som kan skalere slik Azure tjenester gjør

Dette kan alle nå gjøre ved å bruke vår nestegenerasjon Service Fabric plattform som tjeneste (se illustrasjon over) som vi blant annet bruker for å bygge tjenester som Event hub, IoT hub, documentDB, SQL databaser, PowerBI og Cortana og har gjort i siste 5 år. Så nå kan du også lage massive skalerbare løsning slik vi gjør i Microsoft enten i offentlige eller private sky-tjenester. Se mer info om Azure Service Fabric fra Build her https://channel9.msdn.com/Events/Build/2015/2-640

Presentasjon og forretningsintegrasjon

 

Og til sist må man kunne bruke dataene videre i andre systemer og tjenester. Man har ofte også behov for tilgjengligjøre dataene for drive et økosystem på egne tjenester. Her kan BizTalk tjeneste forenkle integrasjonsprosessen med eksisterende systemer som nødvendigvis bruker RESTful APIer. Med Azure API management tjenesten kan man eksponere egne data på en kontrollert måte slik at det er enkel å hva oversikt over hvem som bruker dataene og hvordan.

Så for å oppsummere Azure IoT delen så er det fullt mulig å koble alle typer enheter, uansett plattform direkte eller indirekte til IoT Hub som også kan styre disse enhetene. Så snart dataene er fanget kan man bruke ulike analyse verktøy som gir innsikt og forståelse av egne tjenester på et forretningsnivå. Til sist ingen tjeneste lever alene, integrasjoner med eksisterende fagsystemer eller tilgjengeligjøring av data som åpne eller betalte datasett er noe man også kan bruke tjenester som ligger i Azure.

Eksempler på store IoT prosjekter

Som jeg nevnte over så får vi IoT suite om ikke alt for lenge, fordelen med en suite er at man slipper selv sette opp skalerbar IoT arkitektur som igjen gir

  • enkel å rulle ut nye IoT prosjekter
  • enklere å beregne kost
  • Trenger ikke å bygge løsningen på nytt når man begynner å skalere mot millioner av enheter. Start gratis som en bygger\maker og betal når man flytter til produksjon

Se gjerne sesjonen fra build som dette er en oppsummering avhttps://channel9.msdn.com/Events/Build/2015/2-652

Veldig mye spennende som skjer på cloud siden av IoT men nå flytter jeg fokus på det folk ofte forbinder med IoT. Ting og operativsystemer.


Windows 10 IoT

 

slik ser en Rasberry Pi 2 ut

Under build dag 1 lanserte vi Windows 10 IoT Core som kjører på Rasberry Pie 2 og MinnowBoard Max. Så det første jeg gjorde var å installere Windows 10 IoT Core på en Raspberry Pi 2. Filen var på ca 500mb og etter 10 minutter var jeg opp å kjøre med litt powershell scripting. Hvis du lurer på på om du kan kjøre det som en mini pc til tv’en din, er svaret nei. Windows 10 IoT Core er en veldig nedstrippet versjon som kun viser litt info om seg selv når man starter opp med HDMI kabel koblet til en eksternskjerm. Men når den er oppe så fungerer den akkurat som en windows maskin. Du kan pinge den, du kan aksessere filene på den og se den velkjente mappestrukturen osv. Så hva er vitsen med noe slikt?

Windows 10 IoT Core er laget for mikroprosessorer som enten kjøre på en x86 eller ARM arkitektur. Det blir vår minste versjon hittil og vis man lurer på hva som skjer med embedded så vil de også bli endel av samme kodebase. Windows vil nå leveres til alle type enheter og der hvor man tidligere hadde Windows Embedded Standard og Windows Embedded Handheld, vil man nå ha Windows 10. Som man ser under her så har vi nå samme kode for alle embedded versjoner med unntak av Windows Embedded Compact (CE) som vil forsette å bli supportert fremover. Denne versjoner har egenskaper som ikke finnes i Windows 10, f.eks det at man må kunne stoppe en robotarm på 10 millisekundsvarsel når det trenges. Ønsker man å hoppe av CE så har vi porting verktøy for dette.

 

Dette gir faktisk veldig mange fordeler. Samme kode betyr at vi kan oppdatere alle type enheter så lenge de kjører Windows 10 igjennom samme mekanisme. Dette gir fleksibilitet og øker sikkerhet over tid. Vi har samme type sikkerhet inkludert hardware-basert sikker oppstart og kryptering av disken. Du trenger nå kun å lage en kode som kjører på alle enheter og vil håndtere ting den ikke støtter istedenfor å krasje. Et eksempel på dette er at du kan kjøre en Universal Windows App på Rasberry Pi 2 som kaller gpio kontroller som snakker med sensoren mens på en vanlig pc vil den samme kode gi remote tilgang til de samme sensorer uten at du må fortelle at du er på en PC nå. Dette er et annet eksempel på continuum funksjonalitet vi viste på Build hvor en mobil telefon med Windows 10 vil oppføre seg som en vanlig pc når den kobles til eksternskjerm.

 

I tillegg til dette vil alt som kjøre Windows 10 få støtte for industristandarden “AllJoyn” fra AllSeen alliansen. Dette veldig spennende, endelig har man en utbredt standard for å oppdage enheter og forstå dem uten koding hvordan man kan kommunisere med dem. Så kan du fortsette på et embedded løp, kan det være lurt å titte på nye versjoner for Windows 10 IoT. Disse versjonene vil også ha støtte for Azure IoT Hub som ble nevnte tidligere. Hvilken versjon som passer deg, kommer litt an på hva behovet er. Har du en x86/x64 maskin som kanskje er spesiallaget for et bestemt formå så vil Windows 10 IoT Industry versjon passe bra. her vil du kunne fortsette å kjøre alle eldre apper som ble skrevet spesifikk for denne enheten. Ønsker du en spesialtilpasset mobil enhet som kjører på ARM så vil som navnet tilsier, Windows 10 IoT for mobile være riktig versjon. Her kan man da ikke kjøre noe annet enn Universal Windows apps men som nevnt tidlig, disse appene kan kjøres på alt som har Windows 10. Dette gjør bildet noe enklere, tidligere hadde man 4 ulike versjoner som var litt vanskelig å skille på. Nå ser det mye mer oversiktlig ut. Med det sagt vil vi fortsatt beholde Windows Embedded Compact (CE) versjonen “as-is” med support.

Håper dette forklarer litt hva vi gjør med Windows 10 og IoT. Last gjerne ned Windows 10 IoT Core allerede i dag frawindowsondevices.com

Trenger man litt sample kode for å leke med Raspberry Pi og Windows 10 så Microsoft Open Technologies har lagt ut kode herhttps://github.com/msopentech/connectthedots

 

Nå tenkte jeg å snakke litt om vår open source bidrag til vår IoT story. Vi jobber ikke bare med Windows 10 IoT men også mikrokontrollere som ikke har mulighet til kjøre full OS som Windows 10 eller Linux. En slik enhet er Arduino Uno. Her kan man ikke kjøre apps eller masse beregninger men med å kombinere en mikroprosessor som Raspberry Pi 2 kan man bruke Arduino til å drive sensorer mens Rasberry til å kjøre software. Før jeg går videre, er det viktig å poengtere at det vi lager for arduino eller andre enheter er ikke for å erstatte det som brukes og finnes men tenk på våre ting som tillegg til eksisterende verktøy.

 

For alle dere som lager noe med Arduino vet at de kan utvides med ulike moduler (shield). Dette er dødsbra om man ønsker å bygge dem ut etterhvert. Men om du skulle virkelig ønske å putte på masse sensor shields så kan det begynne å ta opp endel plass men også begynne å koste litt. I dag koster

  • Arduino ca $30
  • bevegelsesensor ca $30
  • talekjenningsmodul ca $50
  • Touch skjerm ca $60
  • og sånn kan man fortsette med kamera, bluetooth, lagring, wifi, osv

Vi har jobbet med et prosjekt internt som vi kaller “project margherita” som er en Univeral Windows Platform bridge for Arduino. Dette kan sammenlignes med det vi gjør for Android og iOS app broer(bridges).

 

Vi har laget Windows virtuell modul (shield) for Arduino. Det betyr at vi kan nå bruke en billig lumia mobiltelefon, en Lumia 520 koster rundt 300 Nok i dag som modul for Arduino og dermed kan du få tak i alle sensorer som er i en slik telefon fra Arduino. For at du skal kunne koble til en Arduino har vi også laget en Windows phone app “Windows Remote Arduino” som vil komme til Windows store. Etter å koblet lumia telefonen til Arduino kan man nå styre Arduino fra en Windows app uten å skrive Arduino kode. Dette kan man gjøre ved å bruke standard firmata (evt tilpasse firmata for mer komplekse scenario) som er en standard protokoll for styre en mikrokontroller rett fra Universal Windows App. På denne måte kan man f.eks bruke Lumia sitt innbygdkamera, behandle bilde og sende den til en Arduino som igjen kan tegne et monokromt bilde på lerret av massekoblet LED lys. Dette betyr at du kan nå kode en Arduino rett fra Visual Studio 2015.

 

Arduino Sketch kode for Virtual Shield

Men vi har også tenkte på de som ikke kan .net eller Visual Studio og vil helst vil bli i Arduino Sketch kode. Så vi har også laget kode som kan inkluderes i Arduino Sketch kode. Dette gir deg tilgang til Lumia sine sensorer inkludert nettilgang ved å kjøre Windows appen “Virtual Shield” på telefonen. Denne vil være tilgjenglig i Windows Store men foreløpig ligger den ute på github. Når denne appen kjører og du har koblet deg til din Arduino, vil koden du lagde i Arduino Sketch koden vises på Windows phone igjennom Virtual Shield appen!

Og flere enheter som Netduino 3 og Gadgeteer som kjøre .NET Micro Framework ble også vist og demonstrert.

Til alle som bygger og mekker på dingser, hack the future NOW!

Husk å besøke windowsondevices.com og har du et kult prosjekt som vi burde skrive om, legge igjen en kommentar evt send meg en epost på arifshATmicrosoft.com.

Anbefalte video fra Build 2015

Anbefalte Microsoft Virtual Academy kurs

Og for å lære mer om alle andre løsniner - se videoer på <microsoftvirtualacademy.com>

Takk for at du leste bloggposten i sin helhet, hvis ikke så har du gått glipp av masse goodies ;)

Microsoft sin Internet of things story