Dieser Artikel wurde maschinell übersetzt.

.NET Micro Framework

Erstellen eines IoT-Geräts mithilfe von Gadgeteer und Azure BLOB-Speicher

Benjamin Perkins

Laden Sie die Codebeispiele herunter

In den nächsten fünf Jahren wird die Anzahl von internetfähigen Geräten mehr als dreimal die gesamte menschliche Bevölkerung sein. Diese Geräte werden nicht auf die Smartphones und Tablets, die wir jetzt verwenden, die sondern umfasst zusätzliche Geräte eingebettet in Haushaltsgeräte, Aufzüge, Automobile, Geschäftsumgebungen, Armbänder, Kleidung und vieles mehr, beschränkt werden. Diese Geräte werden erfasst Informationen über Energieverbrauch, Geschwindigkeit, Temperaturen, das Vorhandensein verschiedener Gase, Blutdruck, Herzfrequenz, Programm oder Hardware-Ausnahmen und fast alles was man sich vorstellen kann.

Die Daten, die von diesen Geräten erfasst müssen in eine hoch skalierbare, zuverlässige und sehr brauchbar Umgebung gelagert werden. Nutzbare heißt sobald die Daten gespeichert sind, die Plattform, auf dem es sich befindet, sollen Dienste, Funktionen und Verarbeitungsleistung zu analysieren, von lernen und Handeln auf die gesammelten Daten. In diesem Artikel werde ich Ihnen zeigen, wie mithilfe der Gadgeteer — eine schnelle Hardware-Entwicklungsplattform basiert auf dem Microsoft .NET Micro Framework — baut ein Gerät zur Erfassung von Daten; Microsoft Azure Storage zum Speichern der Daten; und die Azure-Plattform zu analysieren und die Daten. Durch folgenden entlang beginnen Sie Ihre Reise in die Generation Internet der Dinge (IoT).

Ich werde diese drei Komponenten, der Gadgeteer, Azure Blob Storage, und einige Datenerfassung und Analyse der Azure-Plattform im Detail diskutieren. Darüber hinaus werde ich gründliche auf Codeebene Anweisungen bereitstellen, auf die Gadgeteer zum Einfügen eines Bildes in eine Azure Blob Storage-Container Verwendungsmöglichkeiten.

Gadgeteer

Gadgeteer, bereitgestellt durch GHI Electronics LLC (bit.ly/11ko85B), umfasst Bausätze, Module und Mainboards (z. B. der FEZ-Raptor, FEZ Hydra und die FEZ-Spinne für dieses Projekt verwendet) für viele verschiedene Arten von Geräten erstellen. Diese Geräte können verwendet werden, um zahlreiche Sorten von Daten zu erfassen. Beispielsweise können sie ein Gas-Sensorik-Modul zur Erfassung von Gase in der Luft, ein Bewegungsmelder oder ein Modul zur Messung der relativen Temperatur und Luftfeuchtigkeit. Die FEZ Spider-kompatible Module notwendig zum Fertigstellen des Projekts, die in diesem Artikel beschrieben sind: eine Kamera, eine Ethernet-Buchse und ein Leistungsteil. Im ersten Abschnitt zeige ich Ihnen, zum Konfigurieren der Module und den Code benötigt, um das aufgenommene Bild zum Einfügen in eine Azure Blob Storage Container vorbereiten zu entwickeln.

Abbildung 1 zeigt die Konfiguration des Projekts. Neben der Kamera, Ethernet-Buchse und Netzteil gibt es auch ein Zeichen-Display für die Anzeige der IP-Adresse und Datum und Uhrzeit auf dem Gerät; ein LED-Licht für visuelle Benachrichtigungen; und eine Taste für die Gefangennahme des Bildes und der Prozess sie hochgeladen Triggerung.

FEZ-Spider-Konfiguration für eine Aufnahme und Speicherung in einer Azure Blob-Container
Abbildung 1-FEZ-Spider-Konfiguration für eine Aufnahme und Speicherung in einer Azure Blob-Container

Nach der Installation des .NET Micro Framework, WHI-Binärdateien (Paket 2014 R5) und der .NET Gadgeteer SDK auf Ihrem Entwicklungscomputer erstellen Sie zunächst ein neues Projekt in Visual Studio 2012 (Visual Studio 2013 wird ebenfalls unterstützt, obwohl nicht umfassend getestet) und die Gadgeteer-Vorlage auswählen. Sobald Sie dem Projekt einen Namen gegeben haben, geht der Assistent Sie durch die Auswahl eines Mainboard und Micro Framework-Version. Fügen Sie dann mithilfe der Toolbox, die Module bauen Ihr Gerät, ähnlich dem was, in gezeigt wird Abbildung 1.

Wenn die Module alle physisch an die Sockel auf dem Mainboard angeschlossen sind, beginnen die Code Änderungen erforderlich, um das Projektziel zu erreichen — mit dem Netzwerk verbinden und Aufnehmen von Bildern. Das Modul verwendet, um die Netzwerkverbindung zu machen ist die ethernetJ11D, die den gemeinsamen RJ-45-Netzwerkadapter unterstützt. Hier ist ein Code um das ethernetJ11D-Modul die Verbindung durchführen und erhalten eine zugewiesene IP-Adresse zu machen:

ethernetJ11D.NetworkInterface.Open();
ethernetJ11D.NetworkSettings.EnableDhcp();
ethernetJ11D.NetworkSettings.EnableDynamicDns();
ethernetJ11D.UseDHCP();

Natürlich ist das nicht die einzige Möglichkeit, die Verbindung zu erreichen; jedoch ist es, was am besten und einfachsten in diesem Zusammenhang.

Einmal verbunden, können Sie sich eine einfache System.Net.Http ausführen möchten­WebRequest Anfrage, ähnlich dem was, in gezeigt wird Abbildung 2, um sicherzustellen, dass die Verbindung zum Internet funktioniert wie erwartet.

Figure 2 testen Ihre Internet-Verbindung

void makeGenericHTTPRequest()
{
  try
  {
    string url = "https://www.contoso.com/";
    using (var req = System.Net.HttpWebRequest.Create(url))
    {
      using (var res = req.GetResponse())
      {
        Debug.Print("HTTP Response length: " 
          + res.ContentLength.ToString());  }
    }   
  }
  catch (Exception ex)
  {
    Debug.Print(ex.Message);
  }
}

Beachten Sie, dass das HTTPS-Protokoll nicht hier ohne einige Konfiguration funktioniert. Wenn eine Ausnahme wie "Eine erste Chance-Ausnahme des Typs 'System.NotSupportedException' ist in Microsoft.SPOT.Net.Security.dll aufgetreten" angezeigt wird, muss das SSL-Saatgut auf dem Gerät aktualisiert werden. Sie dazu verwenden die .NET Micro Framework Deployment Tool (MFDeploy.exe), befindet sich im Verzeichnis C:\Program Files (X 86) \Microsoft.NET Micro Framework\v4.3\Tools. Navigieren Sie mit dem Gerät, auf dem Entwicklungscomputer angeschlossen, zum Ziel | Verwaltung Gerät Schlüssel und klicken Sie auf der Update-SSL-Samen, wie in Abbildung 3. Wenn das erledigt ist, sollte HTTPS wie erwartet funktionieren.

die .NET Micro Framework Deployment Tool MFDeploy
Abbildung 3 die .NET Micro Framework Deployment Tool MFDeploy

Sobald Sie die Verbindung mit dem Netzwerk bekommen und dem Internet konfiguriert und arbeiten, ist es wichtig, das Datum und die Uhrzeit auf dem Gerät festgelegt. Wie später beschrieben, das Datum und die Uhrzeit sind erforderlichen Teile der PUT-Blob-REST-API (bit.ly/1BTiIu9), die Sie verwenden werden, um das Bild in den Azure Blob-Container eingefügt. Um das Datum und die Uhrzeit festzulegen, verwenden Sie die TimeServiceSettings-Klasse, die Teil der Microsoft.SPOT.Time-Namespace ist wie folgt:

TimeServiceSettings time = new TimeServiceSettings()
{
  ForceSyncAtWakeUp = true
};
IPAddress[] address = Dns.GetHostEntry("time.windows.com").AddressList;
time.PrimaryServer = address[0].GetAddressBytes();
TimeService.Settings = time;
TimeService.SetTimeZoneOffset(0);
TimeService.Start();

Sobald die TimeService ausgeführt wird, können Sie einen aktuellen Zeitstempel mit den standard DateTime.UtcNow oder DateTime.Now-Eigenschaften abrufen.

Eine Aufnahme mit einem WHI FEZ Spider-kompatible Kamera benötigt nur eine einzige Zeile Code:

camera.TakePicture()

Daran erinnern Sie, dass ich das Gerät das Tastenmodul hinzugefügt. Aus gepressten-Ereignis der Schaltfläche wird die TakePicture-Methode aufgerufen wird. Wenn das Bild aufgenommen wird, die Kamera.PictureCaptured-Ereignis wird ausgelöst, und wiederum ruft die Methode Camera_PictureCaptured (Kamera Sender, GT.Bild e). Ich benutze standard c#-Code an den Ereignishandler und die Methode für die Anbindung der Pressed und erfasst Veranstaltungen an die entsprechenden Methoden verbinden:

button.ButtonPressed += button_ButtonPressed;
camera.PictureCaptured += camera_PictureCaptured;

Die Camera_PictureCaptured-Methode erhält GT.Bild als Parameter. Nach der Konvertierung in ein Byte []-Array mithilfe der e.PictureData-Eigenschaft, werden die Bilddaten an die benutzerdefinierte Methode zum Einfügen in den Azure Blob Container übergeben. Lektüre dieses Prozesses mag kompliziert, aber es ist eigentlich ganz einfach, wie in dargestellt Abbildung 4. Außerdem können Sie im Codebeispiel herunterladen, das diesen Artikel um zu sehen, das ganze begleitet.

Gadgeteer Bild-Erfassung Ablauf
Abbildung 4 Gadgeteer Bild-Erfassung Ablauf

Abbildung 5 zeigt den Code, verbrauchen die AzureBlob-Klasse, im nächsten Abschnitt, wo ich den Authorization-Header erstellen, diskutiert (bit.ly/1z0gThK), und rufen Sie die REST-API, die das Bild in der Azure Blob Container einfügt.

Abbildung 5 einfügen das Bild in Azure Blob Storage

void insertImageintoAzureBlob(GT.Picture picture)
{
  AzureBlob storage = new AzureBlob()
  {
    Account = "ACCOUNT-NAME",
    BlobEndPoint = "https://ACCOUNT-NAME.blob.core.windows.net/",
    Key = "CONTAINER PRIVATE KEY"
  };
  if (ethernetJ11D.IsNetworkUp)
  {
    storage.PutBlob("CONTAINER-NAME", picture.PictureData);
  }
  else
  {
    characterDisplay.Print("NO NETWORK CONNECTION");
  }
}

Aus der Sicht der Geräte ist es. Das Gerät ist nun montiert und mit dem Internet verbunden, und die Logik für das Bild und senden Sie es im richtigen Format an die PUT-Blob-REST-API ist alles abgeschlossen. Als Nächstes erstellen Sie die Azure Blob Storage-Konto und Container und konfigurieren den Code benötigt, um das Bild einzufügen.

Azure Blob Storage

Azure Blob Storage ist ein nützlicher Service den Zugriff auf Bilder, Dokumente, Videos, usw. von überall aus mit HTTP oder HTTPS. Beispielsweise wenn Sie ein Bild mit dem Namen home.bmp haben, ein öffentlicher Azure Storage-Account namens Contosox und ein Container mit dem Namen Blob, den Zugriff auf die BMP-Datei in einem Browser ist so einfach wie die Eingabe von http://contosox.blob.core.windows.net/blob/home.bmp in einem Browser oder verweisen auf die URL von HTML oder dem Quellcode.

Einfügen, Inserat, herunterladen und Löschen von Blobs aus einer .NET-Standardanwendung für einen Azure Blob Container erfolgt über die Azure .NET Storage Client-Bibliothek über die Microsoft.Windows­Azure.Storage Montage. Diese Assembly ist leider nicht verfügbar oder kompatibel mit dem .NET Micro Framework oder dem Gadgeteer-Gerät. Dies ist kein Problem, aber, da der Azure Blob Storage-Dienst öffentlich zugänglichen REST APIs bietet, unterstützt von den gleichen Einsatz, Liste, download und Löschfunktionen (siehe bit.ly/1xPN55v für weitere Informationen). Daher ist es so einfach wie eine standard-REST-API aufrufen, verbrauchen diese Features von einem IoT-Gerät.

Ich zeige Ihnen wie ein Azure Blob Storage-Konto und ein Container erstellt; wie den REST API Authorization-Header, die mit der .NET Micro Framework 4.3 erstellt; und wie bekommt man das im vorherigen Abschnitt aufgenommenes Bild hochgeladen in den Azure Blob-Container.

Erstellen der Azure Storage-Kontos von der Azure-Verwaltungskonsole und klicken Sie dann auf die + Taste "hinzufügen" den Container hinzufügen. In diesem Beispiel der Speicher-Kontoname ist Contosox und der Container ist Blob, wie in dargestellt Abbildung 6.

erstellen den Azure Storage Container zum Speichern des Bilds, das IoT-Gerät entnommen
Abbildung 6 erstellen den Azure Storage Container zum Speichern des Bilds, das IoT-Gerät entnommen

Das Beispiel in Abbildung 7 ist eine Aufschlüsselung der Zusammenführung um der PUT-Blob-REST-API zu verbrauchen. Der Name des Bildes auf die URL angezeigt, die Anhängen Abbildung 6 und Aufruf der GetRequestStream-Methode der Klasse System.Net.HttpWebRequest ein System.IO.Stream-Objekt zurückgibt. Und mit der Write-Methode der Klasse System.IO.Stream erfolgreich speichert das Bild in der Azure Blob-Container.  Beachten Sie, dass der BlobContent-Parameter der Write-Methode das Byte [] Content enthalten in der GT ist.Picture.PictureData-Eigenschaft.

Abbildung 7 verbraucht die PUT-Blob-REST-API

Uri uri = new Uri("ACCOUNT-URL\CONTAINER\" + "IMAGE-NAME");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
try
{
  using (Stream requestStream = request.GetRequestStream())
  {
    requestStream.Write(blobContent, 0, blobLength);
  }
}
catch (WebException ex)
{
  Debug.Print(ex.Message);
}

Das ist nicht allzu kompliziert; Es ist sehr viel wie aufrufen eine REST-API aus einer standard ASP.NET oder Microsoft .NET Framework Anwendung. Der Unterschied — und der Komplexität — kommen von der Erstellung des Authorization-Header, die hier definiert:

Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"

Wenn der Azure Blob-Container erstellt wird, erfolgt es öffentlich, was bedeutet, dass jemand über die zuvor erwähnten URL lesen kann. Hinzufügen oder Löschen eines BLOBs erfordert jedoch einen Authorization-Header in der Anforderung sein. Der SharedKey-Wert im Header benachrichtigt der Server, dass ein gemeinsamer Zugang Schlüssel vorhanden und für die Authentifizierung verwendet werden soll. Die SharedKey ist im Zusammenhang mit dem Azure Storage-Konto in diesem Beispiel Contosox, und indem Sie auf Verwalten von Zugriffstasten für den angegebenen Speicherplatz-Account erworben wird. Der Wert in Textbox Access Primärschlüssel, illustriert in Abbildung 8, ist die SharedKey für den Zugriff auf den Container verwendet.

erwerben die notwendigen SharedKey für die Azure Storage-Authentifizierung
Abbildung 8 erwerben die notwendigen SharedKey für die Azure Storage-Authentifizierung

Darüber hinaus muss der Signatur als Bestandteil der Autorisierungsheader eine Hash-based HMAC Message Authentication Code () gebaut, mit einer Reihe von Request-Attributen, berechnet die System.Se­curity.Cryptography.HashAlgorithm.ComputeHash-Methode und durch die System.Convert-Methode verschlüsselt.

Ich werde das ein bisschen brechen beginnend mit Komponenten für den Bau des Authorization-Headers. Dazu gehören Attribute, wie z. B. X-ms-Version, Inhaltslänge, Inhaltstyp, Tastenkombination und viele andere Headerwerte ausführlich auf freigegebene bit.ly/1BTiIu9. Eines der wichtigeren Merkmale ist der X-ms-Date, das ist der Grund, dass Sie das Datum und die Zeit während der Initialisierung des Geräts einstellen mussten. Das X-ms-Datum muss einen UTC-Zeitstempel. Der Zeitstempel auf dem Gerät muss ein Unterschied von weniger als 15 Minuten im Vergleich zu den Zeitstempel auf dem Server wo der Storage-Dienst gehostet wird. Der Speicherdienst stellt sicher, dass die Anforderung ist nicht älter als 15 Minuten; Wenn der zeitliche Rahmen eine größere Differenz hat, gibt der Dienst 403 (Forbidden) zurück. Die anderen Attribute nicht ändern und kann fest oder abgerufen werden aus einer anderen Quelle – zum Beispiel einer Konfigurationsdatei.

Sobald der Autorisierungsheader richtig die etwa 35 Zeilen Code nimmt formatiert ist, muss es gehasht und codierte je nach den Anforderungen. Der Code, der benötigt ähnelt die Vollversion von .NET Framework verwenden, dies:

using (HashAlgorithm hashSHA256 = 
  new HashAlgorithm(HashAlgorithmType.SHA256))
{
  Byte[] dataToHmac = 
    System.Text.Encoding.UTF8.GetBytes(canonicalizedstring);
  signature = 
    Convert.ToBase64String(hashSHA256.ComputeHash(dataToHmac));
}

Die System.Security.Cryptography.HashAlgorithm.ComputeHash-Methode benötigt, um hash-Authorization-Header vorhanden in .NET Micro Framework Version 4.3 (bit.ly/1wIl77O) und ist eine gültige Option für die Verwendung in der Signatur. Ich entschied mich jedoch für eine WebAPI zu entwickeln, die den konstruierten Header als Parameter akzeptiert, codiert, hasht es und gibt es an den Gadgeteer für die Verwendung mit der PUT-Blob-REST-API-Aufruf zurück. Ich habe diesen Ansatz gewählt, vor allem, weil ich wollte testen, rufen Sie eine WebAPI aus der Gadgeteer und fand dies eine logische Ort dafür. Der folgende Code zeigt, wie die WebAPI Datengerät Gadgeteer genannt wurde:

string queryString = "constructedHeader=" + constructedHeader;
Uri uri = new Uri("https://*??.azurewebsites.net/api/HMACSHA256?" + queryString);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
response.Close();

Die Antwort von einem WebAPI, wie Sie wahrscheinlich bereits wissen, ist ein JSON-Objekt und den Inhalt der Zeichenfolge ResponseFromServer.  Es ist ein open-Source-MicroJSON-Library unter microjson.codeplex.com, eignet sich für die Analyse der Ergebnisse der WebAPI und immer den Hash und codierten Authorization-Header-Wert:

var jdom = (JObject)JsonHelpers.Parse(responseFromServer);
var hashedvalue = jdom["HashedValue"];
StringBuilder authorizationHeader = new StringBuilder("{0} {1}:{2}")
  .Replace("{0}", SharedKeyAuthorizationScheme)
  .Replace("{1}", "contosox")
  .Replace("{2}", hashedValue);

Alternativ verwenden die Zeichenfolge.IndexOf-Methode in Kombination mit der Zeichenfolge.Substring-Methode kann das gleiche Ergebnis erzielen.

Die Zeichenfolge.Format-Methode wird derzeit in .NET Micro Framework nicht unterstützt; Daher habe ich StringBuilder.Replace, um die AuthorizationHeader zu konstruieren. Wie bereits erwähnt, besteht der Authorization-Header aus der SharedKeyAuthorizationScheme, die eine Kombination von SharedKey oder SharedKeyLite ist; Azure Blog Storage Name, Contosox; und die codierten und Hash-Signatur. Wenn der Authorization-Header korrekt gebildet wird, die PUT-Blob-REST-API Request-Objekt hinzufügen und ausführen. Sobald das Bild authentifiziert wurde, wird es auf den Blob Container hinzugefügt:

request.Headers.Add("Authorization", authorizationHeader);

In diesem Beispiel ist das Ereignis, das das Einfügen des Bildes in der Azure Blob Container löst ein Tastendruck. Ich entschied mich für diese Vorgehensweise einfach diese Proof-of-Concept-Projekt erstellen. Eine reale Umsetzung könnte stattdessen verwenden, eine Bewegung, Gas, barometrischen Druck, Temperatur oder Feuchtigkeitssensoren. Wirklich, alles, was für ein Modul vorhanden ist, die löst ein Ereignis aus, wenn eine bestimmte Schwelle überschritten wird kann verwendet werden, um ein Foto und laden Sie sie auf Azure. In vielen Fällen werden die Anforderungen für die IoT-Gerät kein Bild, nur die Speicherung der erfassten Daten wie Temperatur, Zeit, Geschwindigkeit, Gas-Ebene und so weiter enthalten. Diese Daten können in einer Datenbank über einen einfachen WebAPI-Aufruf, der ähnlich gespeichert werden, die ich früher, aber ohne die Notwendigkeit der Autorisierungsheader besprochen, weil es keine Blob oder Bild.

Nun, da die Daten erfasst und auf der Azure-Plattform gespeichert, ist die Frage, was damit zu tun und wie zu analysieren und daraus lernen. Im nächsten Abschnitt werde ich einige Ideen und abschließende Gedanken für kontinuierliche Überprüfung, Entwicklung und zukünftige Diskussionen bereitstellen. War nicht meine Absicht hier unbedingt zeigen Alle Details einer End-to-End-IoT-Lösung, sondern eher zum Nachdenken geben und diese Konzepte voranzutreiben.

Microsoft Azure

Die meisten IT-Experten haben eine gute Idee davon, was der Begriff "Big Data bedeutet". Jedoch, wie zu verwenden und zu ernten sind es wahrscheinlich nicht so klar. Als ich anfing, lernen über Big Data, fand die erste Hürde hatte ich eine Datenquelle, die ich verwenden könnte, für die Arbeit mit Tools wie HDInsight, Power-BI, Event-Hubs, Machine Learning oder Stream-Analytics. Dennoch, ich erlernte Nutzung dieser Dienste, die Features und Funktionen, aber ohne eine große Quelle von Daten auf meine Algorithmen ausgeführt, ich schnell das Interesse verloren. Was schließlich dämmerte mir war das der IoT — Diese internetfähigen Geräte — Daten sammeln und bauen große Informationsquellen für die Verwendung mit diesen Azure Services eingesetzt werden konnten.

Es ist klar, dass jeder dieser Dienste mit der IoT Bedenken, in Anbetracht Ereignis Hubs und Stream-Analytics für Echtzeit-Entscheidungen und HDInsight und Maschinelles Lernen für die Analyse von sehr großen Datenmengen, auf der Suche nach längerfristigen Trends ausgelegt ist. Z. B. Ereignis Hubs, die spezifisch entworfen ist, um Millionen von Gerät-ausgelösten Ereignisse pro Sekunde aufnehmen, stellt das notwendige Ausmaß für großformatige IoT-Lösungen. Für Firmen und Unternehmen, die bereits eine IoT-Lösung implementiert haben oder fangen an, ihre IoT-Strategie zu erstellen, wäre die Veranstaltung Hubs einen guten Start, langfristiges Wachstum und Maßstab zu verwalten.  Darüber hinaus Stream Analytics Ereignis Hubs integriert und bieten Echtzeit-Analyse des durch die Geräte an den Ereignis-Hubs Daten. Stream-Analytics können vergleichen Sie die Daten zum Ereignis Hubs mit historischen Daten gesendet wird und proaktiv sendet eine Warnung, wenn die aktuelle Muster der historischen nicht übereinstimmen. Stellen Sie sich die Möglichkeiten mit diesem.

Organisationen und sogar Personen, die große Datenbestände haben — nicht unbedingt zusammengestellt von IoT-Geräte — können die HDInsight oder Machine Learning Services für die Analyse dieser Daten. HDInsight ist eine Hadoop-Lösung, die zu Terabyte oder Petabyte an Daten bei Bedarf skaliert werden kann, und die Azure-Plattform bietet eine fast unendliche Menge an Speicher und Compute-Ressourcen. Verwenden Sie HDInsight, um versteckte Geschäftsmöglichkeiten zusammen mit oder unabhängig von Machine Learning an meine Daten zu helfen, zukünftige Trends und Verhalten vorhersagen zu finden. Diese Dienste stellen Ihnen die neue IoT-Ära durch die Aufdeckung bisher nie gezeigten Informationen auf innovative Weise, eröffnet große Möglichkeiten, die benutzerfreundlich über Power BI vorgelegt werden kann.

Zusammenfassung

Das Ziel dieses Artikels war zu erklären, wie Sie Konfigurieren eines IoT-Geräts mithilfe der Gadgeteer, mit dem Internet verbinden und ein Bild mit einem Azure Blob-Container in der Cloud hochladen. Einfügen von Daten von einem Gerät in allen Internet zugänglichen Datenquellen erfordert nur ein einfaches Web-­-API-Aufruf und die Konfiguration der Hardware tatsächlichen Gerät ist so einfach wie Drag & Drop von Modulen aus einem Toolbox-Menü eine Entwurfsvorlage. Die einzige wirkliche Komplexität in diesem Beispiel war die Schaffung der PUT Blob REST API Authorization-Header, wie es in einem bestimmten Format und codiert werden gehasht mithilfe der System.Security.Cryptography.HashAlgorithm.ComputeHash-Methode über eine WebAPI oder mithilfe der .NET Micro Framework-Klasse.

Ich auch einige Azure Plattformdienste zusammengefasst und ihre Skalierung Fähigkeiten für die Speicherung und Analyse von Daten, die erfasst von IoT Geräten eingerichtet. Sobald Ihre Geräte einsetzen, ausreichende Mengen an Daten zu erfassen, können Sie Azure Plattform inklusive Ereignis Hubs und Stream-Analytics für Echtzeit-Analysen, HDInsight und Maschinelles Lernen für längerfristige Untersuchung. Die Entdeckung der Geheimnisse versteckt innerhalb der massig erzeugt, gespeichert, verarbeitet und präsentiert Informationen können dann verwendet werden, für Business-Entscheidungen, Prognose und Ihre Unternehmensstrategie erfolgreich zu helfen. Packen wir's an!


Benjamin Perkins ist ein senior Support Escalation Engineer bei Microsoft und Autor von drei Büchern über IIS, NHibernate und Microsoft Azure. Er schreibt derzeit eine C#-Buch parallel mit der Veröffentlichung von c# 6.0 veröffentlicht werden. Sie erreichen ihn unter colin.miller@microsoft.com.

Unser Dank gilt den folgenden technischen Experten von Microsoft für die Durchsicht dieses Artikels: Martin Grasruck und Colin Miller