September 2016

Band 31, Nummer 9

Dieser Artikel wurde maschinell übersetzt.

Modern Apps: Erstellen eines stadtweiten WLAN-Scanners mit UWP und Azure

Durch Frank La La

In meinem Artikel vom Juli (msdn.com/magazine/mt736460), erläutert, wie eine universelle Windows-Plattform (UWP)-app für die Überprüfung von Wi-Fi-Netzwerke zu schreiben. Am Ende dieses Artikels habe ich die Lösung, um eine CSV-Zeichenfolge erstellen. Ich sagte schon dann kurz was in Bezug auf Visualisierung von Daten mit Power BI durchgeführt werden konnte. Verhindert jedoch der manuelle Prozess kopieren und Einfügen von Textdaten über die Benutzeroberfläche die Lösung Skalierung über einen einzelnen Benutzer. Darüber hinaus ist das Ziel zum Ausführen der Anwendung auf ohne Anzeige eines IoT-Geräts. Dies bedeutet, dass die UWP-app Daten in der Cloud ohne Benutzeroberfläche senden muss. Dies ist auch eine "headless"-Lösung. Der Plan umfasst das Installieren von zahlreichen Geräten um eine Stadt für Wi-Fi-Netzwerke zu scannen.

Zuerst müssen Sie einen Cloud-Dienst einrichten, werden alle diese Daten. Zweitens müssen Sie die vorhandene UWP-app-Code zum Senden von Daten mit dieser Cloud-Dienst ändern. Schließlich möchten Sie diese Daten in Power BI zu visualisieren.

Die Cloud und das Internet der Dinge

Die Cloud ist eine wunderbare Innovation. Es bietet effektiv unzähliger und Compute auch die niedrigste-Geräten. Erforderlich, wird eine Verbindung mit dem Internet. Häufig bei das Internet der Dinge (IoT) beschrieben wird, dominieren Cloud-Dienste, die Konversation, anstatt die eigentlichen Geräte. Woran liegt das? Gut, verbunden einfach ausgedrückt, viele Geräte Internet muss einen zentralen Ort, von dem Daten senden und Empfangen von Nachrichten. Ein Großteil der Welt ändern, Paradigma-Verschiebung Ergebnisse sind die Folge von Daten, crunched und in der Cloud analysiert. Darüber hinaus die Belastung von Computing- und in der Cloud platzieren die Endpunkt-Geräte weniger leistungsfähigen können also sein. Weniger Energie übersetzt in günstigere und Power-effizienter Geräte.

Wie der Begriff schon sagt, ist das Internet der Dinge über das Internet und die Dinge mit dem Internet verbunden. Entsprechend wird dies bedeuten, dass Code, der auf Geräten und Diensten in der Cloud ausgeführt. Der Ziel dieses Projekts besteht darin, mehrere Geräte mit Wi-Fi-Adaptern für drahtlose Netzwerke kontinuierlich Scannen haben. Diese Geräte meldet ihre Ergebnisse in Echtzeit. Für die Zwecke dieses Artikels wird davon ausgegangen, dass Ihr Gerät Zugriff auf das Internet hat.

Die Lösung besteht darin, ein Microsoft Azure IoT Hub und Azure Stream Analytics verwenden. Ein Azure IoT Hub ist ein Dienst, der hochgradig skalierbar ist und Millionen Ereignisse pro Sekunde erfassen können. IoT Hub ähnelt der Azure-Event-Hub, außer dass es sich um zusätzliche Funktionalität für Device Management hat. Geräte müssen registriert werden, um eine Verbindung IoT Hub mit. Nach der Registrierung überträgt ein Gerät eine Nachricht an den IoT Hub, und dann die Daten in Echtzeit zu sammeln. Azure Stream Analytics können die Daten gesendet werden, deaktiviert.

Azure Stream Analytics ist ein vollständig verwalteter Dienst, der mit niedriger Latenz, hohe Verfügbarkeit, skalierbare, komplexe Ereignisverarbeitung durch das Streamingdaten aus verschiedenen Quellen bereitstellt. Stream Analytics sammelt Streamingdaten jeweils die Wi-Fi-Scanner-Geräte die Wi-Fi-Scanner UWP-app ausgeführt wird.

Kurz gesagt, Azure IoT Hub erfasst Daten über registrierte Geräte aus, und die Daten problemlos Abfragen Azure Stream Analytics ermöglicht. Zu diesem Zweck müssen Sie die entsprechenden Dienste in Azure einrichten und Ändern der UWP-app.

Einrichten von Cloud-Dienste

Der erste Tagesordnungspunkt ist ein Azure IoT Hub erstellen. Hierzu navigieren Sie zum Azure-Portal, auf neu, und klicken Sie dann auf Internet der Dinge, die Optionen in dieser Kategorie zu erweitern, siehe Abbildung 1. Klicken Sie auf IoT Hub, um das Dialogfeld anzuzeigen, wie in Abbildung 2.

Erstellen einen IoT Hub im Azure-Portal
Abbildung 1: erstellen einen IoT Hub im Azure-Portal

Das Dialogfeld IoT Hub erstellen
Abbildung 2 das Dialogfeld IoT Hub erstellen

Geben Sie in diesem Formular einen eindeutigen Namen für den IoT Hub ein. Ich habe CityWifiScannerHub. Jetzt habe ich der kostenlosen Diensts, da es für die Entwicklung geeignet ist. Ich möchte auch eine neue Ressourcengruppe erstellen, und nennen Sie es CityWifiScannerRG. Es wird empfohlen, eine Benennungskonvention und nicht aufgeben. Für die Region ist es ziemlich egal, welche Region Sie auswählen. Achten Sie darauf, dass Sie die Region für alle Ihre Dienste auf Daten ausgangsgebühren speichern auswählen. Für meine Zwecke führen OST gut. Überprüfen Sie die Pin von Dashboard-Option zum leichteren Zugriff auf diesen Dienst. Klicken Sie nun auf erstellen, und der Dienst wird ausgeführt werden und in wenigen Augenblicken.

Während Sie für den start des Diensts zu warten, nun wäre ein guter Zeitpunkt für die Explorer-Gerät aus download bit.ly/25lXGY9.

Geräte-Explorer

Der Geräte-Explorer ist ein Dienstprogramm, das Ihnen hilft zu erstellen von Projektmappen mit IoT Hub und registrieren und Entfernen von Geräten Ihres IoT Hub sowie Überwachen von Daten zwischen dem Gerät und den Hub gesendet werden. Um das Tool mit dem Hub verwenden, müssen Sie die Verbindungszeichenfolge aus der IoT Hub abrufen. Klicken Sie im Azure-Verwaltungsportal IoT Hub nach, und klicken Sie auf das Symbol. Da Management-Berechtigungen zum Hinzufügen und Entfernen von Geräten werden soll, wählen Sie die Richtlinie Iothubowner. Klicken Sie im folgenden Dialogfeld auf das Symbol "Kopieren" neben Verbindungszeichenfolge – Primärschlüssel, siehe Abbildung 3. Damit wird die Verbindungszeichenfolge in die Zwischenablage kopiert.

Abrufen der Verbindungszeichenfolge für die Geräte-Explorer
Abbildung 3 Abrufen der Verbindungszeichenfolge für die Geräte-Explorer

Mit der Verbindungszeichenfolge in die Zwischenablage wechseln Sie in der Explorer-Gerät, und fügen Sie die Verbindungszeichenfolge in das Textfeld IoT Hub-Verbindungszeichenfolge ein. Klicken Sie auf aktualisieren, sodass ein Meldungsfeld mit dem Hinweis, dass "Einstellungen erfolgreich aktualisiert." Klicken Sie auf OK, um das Dialogfeld zu schließen.

Klicken Sie nun auf der Registerkarte "Verwaltung". Um ein Gerät mit diesem IoT Hub zu registrieren, müssen Sie auf erstellen klicken. Geben Sie im folgenden Dialogfeld Geräte-ID, wie in Abbildung 4. Klicken Sie auf die Schaltfläche erstellen, um das Gerät mit diesem Dienst registrieren. Ein Meldungsfeld wird angezeigt, um zu bestätigen, dass der Vorgang erfolgreich war. Klicken Sie auf Schließen, um zurückweisen.

Registrieren ein Gerät mit dem Geräte-Explorer
Abbildung 4 Registrieren eines Geräts mit dem Geräte-Explorer

Sie werden bemerken, dass es ein Eintrag jetzt in der Liste Geräte. Mit der rechten Maustaste auf den Eintrag WiFiScanner1. Wählen Sie im Kontextmenü, das angezeigt wird, Verbindungszeichenfolge für das ausgewählte Gerät kopieren, siehe Abbildung 5. Diese Verbindungszeichenfolge verwenden in der UWP-app für die Verbindung mit der IoT Hub.

Beim Abrufen der Verbindungszeichenfolge für das Gerät
Abbildung 5 Abrufen der Verbindungszeichenfolge für das Gerät

Ändern Sie den Code UWP

Wäre dies keine Spalte zur Entwicklung von UWP ohne UWP Code. Jetzt ist es Zeit, ändern Sie die app in der vorherigen Spalte für die Verbindung mit dem Internet der Dinge Event Hub erstellt. Glücklicherweise hat Microsoft erstellt eine Bibliothek, um dies zu vereinfachen und auf NuGet veröffentlicht. Laden Sie die app im vorherigen Artikel in Visual Studio. Mit der rechten Maustaste auf Verweise, und klicken Sie dann NuGet-Pakete verwalten. Klicken Sie in das Suchfeld ein Geben Sie Microsoft.Azure.Devices.Client, und wählen Sie die erste Option. Installieren Sie dieses Paket, wie jedes andere NuGet-Paket.

Nachdem das Paket installiert ist, fügen Sie die folgende using-Anweisung in die Datei "MainPage.Xaml.cs":

using Microsoft.Azure.Devices.Client;

Dann fügen Sie den folgenden Member der Klasse, ersetzen "[Verbindungszeichenfolge]" mit der Verbindungszeichenfolge, die im vorherigen Abschnitt erstellt haben:

private DeviceClient deviceClient =
  DeviceClient.CreateFromConnectionString(
  [Connection String]);

Der Code zum Senden der Daten bis zu Azure IoT Hub ist trivial Dank der Code innerhalb des Namespace Microsoft.Azure.Devices.Client. Die folgende Methode tut genau dies:

private async void SendScanData(string message)
{
  var content = new Message(
    Encoding.UTF8.GetBytes(message));
  await deviceClient.SendEventAsync(content);
}

Mit diesem Code werden in der MainPage-Klasse können Sie jetzt die folgenden Zeilen am Ende der Methode RunWifiScan der Datei "MainPage.Xaml.cs" hinzufügen. Die erste Zeile in der folgende Code konvertiert das WiFiPointData-Objekt in eine JSON-Zeichenfolge für den Transport, während die zweite Zeile der Methode aufruft, die bis zu den Event Hub übermittelt: 

string NetworkInfoJson = CreateJson(wifiPoint);
SendScanData(NetworkInfoJson);

Jetzt ist es Zeit zum Ausführen der Anwendung und Daten bis IoT Hub zu senden. Aber zuerst Gerät im Explorer, klicken Sie auf die Registerkarte Daten und klicken Sie auf die Schaltfläche "Bildschirm". Dies können Sie die Daten zu überwachen, die in den Iot Hub gesendet werden.

Arbeiten mit Stream Analytics

Mit all diese Arbeit fertig haben Sie einen IoT Hub in der Cloud und eine UWP-app, die Daten sendet. Was nun? Im nächste Schritt werden die Daten und etwas Nützliches mit ihm ab. Für diese Aufgabe benötigen Sie Stream Analytics verwenden. Klicken Sie in der Azure-Verwaltungsportal auf neu, und suchen Sie dann für Stream Analytics. Klicken Sie auf erstellen und den neuen Stream Analytics-Auftrag Dialog erscheint. Name des Auftrags ist beliebig – ich habe CityWifiScannerJob. Ich möchte die zuvor erstellte Ressourcengruppe verwenden. In diesem Fall habe ich OST, alle Dienste für diese in einem Datencenter zu halten. Sollte in etwa Abbildung 6. Klicken Sie auf erstellen, um den Auftrag zu erstellen.

Konfigurieren eines neuen Stream Analytics-Auftrags
Abbildung 6 Konfigurieren eines neuen Stream Analytics-Auftrags

Stream Analytics-Aufträge arbeiten mit Daten aus einer Eingabequelle, die Verarbeitung durch eine Abfrage, die an die Ausgabe gesendet wird. Wenn Sie einen neuen Auftrag erstellen, müssen Sie keine Eingaben und Ausgaben, zusammen mit einer Standardabfrage.

Erstellen Sie die Eingabe

Fügen Sie zunächst eine Eingabe durch Klicken auf die Kachel Eingaben und dann auf die Schaltfläche hinzufügen. Klicken Sie im Dialogfeld neue Eingabe benennen Sie der Eingabe, siehe Abbildung 7 (Ich habe CitiWifiScannerInput). Ändern der Quelle IoT Hub. Und wählen Sie dann CityWifiScannerHub aus der Dropdownliste aus. Da die UWP-app im JSON-Format UTF-8-codierte Daten gesendet werden, besteht nicht erforderlich, ändern Sie die Standardoptionen. Klicken Sie auf erstellen, um die Eingabe zu erstellen.

Erstellen die Eingabe
Abbildung 7 die Eingabe erstellen

Nun, dass die Eingabe erstellt wurde, ist es Zeit, um die Ausgabe zu erstellen. Zum Zeitpunkt der Veröffentlichung wurde das neue Azure-Portal unterstützt eine Power BI-Ausgabe erstellen. Hierzu müssen Sie laden Sie das klassische Portal über bit.ly/1V3IFPU. Dort finden Sie im Abschnitt Stream Analytics, wählen Sie die CityWifiScannerJob, und klicken Sie auf Ausgabe. Wählen Sie in der Liste der Optionen Power BI. Benennen Sie die Ausgabe alias CitiWifiPowerBI, die Dataset-Namen CityWifiScans und CityWifiTable der Tablet-PC-Namen. Klicken Sie auf den weiter-Pfeil. Der folgende Bildschirm fordert Sie zum Autorisieren des Zugriffs auf Power BI. Sie müssen ein Organisations-Konto anzumelden. Wenn Sie keins besitzen, befolgen Sie die Anweisungen im Blogbeitrag unter bit.ly/29m89ZV Testversion Office 365-Konto zu erstellen. 

Die Eingabe und Ausgabe vorhanden ist es nun Zeit beim Bearbeiten der Abfrage. Der vollständige Bereich, was mit Abfragen in Stream Analytics möglich ist, ist über den Rahmen dieses Artikels hinaus. Deshalb erstelle ich eine einfache Abfrage, die alle Daten aus der Eingabe in die Ausgabe ohne Transformationen oder -Klauseln sendet:

SELECT
INTO
  CityWifiPowerBI
FROM
  CitiWifiScannerInput

Diese Syntax sollte allen vertraut aussehen, T-SQL verwendet hat. Beachten Sie, dass die eingegebenen Namen Eingabe- und zuvor in der Abfrage verwendet werden, um dem Auftrag mitzuteilen, welche die Daten abgerufen werden und wo Sie sie senden. Jetzt ist es Zeit, speichern Sie die Abfrage, und führen Sie den Auftrag. Klicken Sie auf die Schaltfläche Start am unteren Rand der Seite, um den Auftrag zu starten. Möglicherweise dauert es einige bis der Auftrag gestartet. Sobald dies der Fall ist, öffnen Sie Power BI in Ihrem Browser. Jetzt sollten Sie in Ihrem Arbeitsbereich CitiWifiScans als Dataset angezeigt.

Öffnen Sie das Dataset, indem sie darauf klicken. Ziehen Sie die Lat-Feld aus der Liste Felder auf die leere weiße Fläche. Ein Kartensteuerelement wird angezeigt. Das Kartensteuerelement nun ziehen Sie lange Feld. Eine Karte mit Punkten der Breiten- und Längengrad Koordinaten Ihrer Daten gezeichnet wird angezeigt. Mit meinem Beispiel-Dataset, ich habe etwas wie ähnliches Abbildung 8.

Zum Erstellen einer Zuordnung in Power BI mit Daten aus der UWP-App
Abbildung 8: Erstellen einer Karte in Power BI mit Daten aus der UWP-App

Zusammenfassung

Die wirkliche Stärke und Versprechen der IoT-Revolution liegt in der Cloud. Die Cloud stellt nahezu unbegrenzte Speicher- und Leistung dar. Leistung und Speicherung von kostengünstig und Energiesparfunktionen Geräte Dank Internet ausgenutzt werden können. Von dort können die Daten, verarbeitet und sogar visuell, dargestellte mit Tools wie Power BI in die Warteschlange gestellt werden. Die Möglichkeit, problemlos ändern eine UWP-app zum Senden von Daten an ein Azure IoT Hub und in einem IoT bereitstellen macht Gerät für eine aus der Kombination, die in unserem transformiert wird.


Frank La Vigne ist ein Technologieexperte im Microsoft Technology und staatsbürgerliches Engagement-Team, wo er hilft Benutzern dabei, Technologie nutzen, um eine bessere Community zu erstellen.  Auf FranksWorld.com führt er einen Blog, sein YouTube-Kanal heißt Frank’s World TV (youtube.com/FranksWorldTV).

Unser Dank gilt den folgenden technischen Experten für die Durchsicht dieses Artikels: Olivier Bloch und Rob Tiffany