Settembre 2016

Volume 31 Numero 9

Il presente articolo è stato tradotto automaticamente.

App moderne - Creare un Wi-Fi Scanner per tutta la città con UWP e Azure

Da Frank La La

Nel mio articolo di luglio (msdn.com/magazine/mt736460), ho spiegato come scrivere un'app universale Windows piattaforma UWP () per l'analisi reti Wi-Fi. Alla fine dell'articolo, fornita la soluzione per creare una stringa di testo CSV. Quindi menzionato in precedenza ciò che poteva essere eseguita con Power BI in termini di visualizzazione dei dati. Tuttavia, la procedura manuale di copiando e incollando dati di testo nell'interfaccia utente impedisce la soluzione di scalabilità oltre un singolo utente. Inoltre, l'obiettivo di progettazione consiste nell'eseguire l'app in un dispositivo IoT senza alcun tipo di visualizzazione. Ciò significa che l'app UWP deve inviare dati al cloud senza interfaccia utente. Ciò è noto anche come una soluzione "headless". Il piano prevede l'installazione di numerosi dispositivi intorno a una città a cercare reti Wi-Fi.

In primo luogo, è necessario impostare un servizio cloud per sfruttare tutti i dati. In secondo luogo, è necessario modificare il codice dell'app UWP esistente per inviare dati al servizio cloud. Infine, si desidera visualizzare i dati in Power BI.

Il Cloud e Internet delle cose

Il cloud rappresenta un'innovazione corretta. Offre capacità di archiviazione in modo efficace illimitate e calcolo in modo che i dispositivi più basso. Tutto ciò che serve è una connessione a Internet. Spesso quando viene illustrata l'Internet delle cose (IoT), servizi cloud dominano la conversazione, piuttosto che i dispositivi effettivi. Perché? Bene, in poche parole, molti dei dispositivi connessi la necessità di Internet una posizione centrale da cui si desidera trasmettere i dati e ricevere le notifiche. La maggior parte dei risultati mondo cambiando, paradigma orientato sono il risultato dei dati da crunched e analizzati nel cloud. Inoltre, l'inserimento di attività di calcolo e archiviazione nel cloud di significa che i dispositivi endpoint effettivo possono essere meno potenti. Risparmiare energia si traduce in dispositivi economici e più basso consumo energetico.

Come indicato, il termine IoT è su Internet e gli elementi connessi a Internet. Di conseguenza, ciò significa che il codice in esecuzione nel dispositivo e servizi nel cloud. L'obiettivo principale di questo progetto è disporre di più dispositivi con schede Wi-Fi ricerca continuamente reti senza fili. Questi dispositivi segnalerà le proprie conoscenze in tempo reale. Ai fini di questo articolo, si presupporrà che il dispositivo ha accesso a Internet.

La soluzione consiste nell'utilizzare un IoT Hub di Microsoft Azure e Azure Stream Analytics. Un IoT Hub di Azure è un servizio che è altamente scalabile e può inserire milioni di eventi al secondo. L'IoT Hub è simile all'Hub di eventi di Azure, ad eccezione del fatto che disponga di funzionalità aggiuntive per la gestione dei dispositivi. I dispositivi devono essere registrati per la connessione all'hub IoT. Una volta registrato, un dispositivo trasmette un messaggio per l'IoT Hub, che quindi raccoglie i dati in tempo reale. Tali dati possono essere inviati per analisi dei flussi di Azure.

Analisi dei flussi di Azure è un servizio completamente gestito che fornisce bassa latenza, elevata disponibilità, scalabili, complessa elaborazione di eventi sui flussi da diverse origini dati. Analisi dei flussi raccoglierà i dati streaming da ciascuno dei dispositivi scanner Wi-Fi che eseguono l'app UWP Scanner Wi-Fi.

In breve, un IoT Hub Azure raccoglie i dati dai dispositivi registrati e analisi dei flussi di Azure consente di eseguire con facilità query sui dati. A tale scopo, è necessario configurare i servizi in Azure e apportare modifiche all'app UWP.

Configurare i servizi Cloud

La prima cosa consiste nel creare un IoT Hub di Azure. A tale scopo, passare al portale di Azure, fare clic su Nuovo e quindi fare clic su Internet delle cose per espandere le opzioni della categoria, come illustrato nella Figura 1. Fare clic su IoT Hub per visualizzare la finestra di dialogo, come illustrato nella Figura 2.

Creazione di un Hub IoT nel portale di Azure
Figura 1 la creazione di un Hub IoT nel portale di Azure

La finestra di dialogo Hub IoT crea
Figura 2 la finestra di dialogo Hub IoT crea

In questo modulo, è necessario immettere un nome univoco per l'IoT Hub. Si è scelto di CityWifiScannerHub. Per ora, ho scelto il livello gratuito del servizio, in quanto è sufficiente per lo sviluppo. Ho scelto anche di creare un nuovo gruppo di risorse e denominarlo CityWifiScannerRG. È consigliabile scegliere una convenzione di denominazione e utilizzarla. Per l'area, effettivamente non importa quale area scelta. Assicurarsi che selezionare la stessa area per tutti i servizi salvare dati in spese di uscita. Per motivi di my, Stati Uniti orientali eseguirà correttamente. Controllare il Pin all'opzione dashboard per semplificare l'accesso al servizio. A questo punto, fare clic su Crea e il servizio sarà in esecuzione in corso.

Durante l'attesa per l'avvio del servizio, a questo punto sarebbe opportuno scaricare Explorer dal dispositivo bit.ly/25lXGY9.

Esplora dispositivo

Esplora il dispositivo è un'utilità che consente di creare soluzioni con IoT Hub consentendo di registrare e rimuovere i dispositivi per l'IoT Hub, nonché monitorare i dati inviati tra il dispositivo e l'hub. Per utilizzare lo strumento con l'hub, è necessario ottenere la stringa di connessione dall'IoT Hub. Nel portale di Azure, selezionare l'IoT Hub e fare clic sull'icona della chiave. Dal momento che i privilegi di gestione per aggiungere e rimuovere i dispositivi, scegliere il criterio iothubowner. Nella finestra di dialogo seguente, fare clic sull'icona Copia accanto a stringa di connessione, chiave primaria, come illustrato nella Figura 3. Si copierà la stringa di connessione negli Appunti.

Recupero della stringa di connessione per Esplora risorse di dispositivo
Figura 3 recupero della stringa di connessione per Esplora risorse di dispositivo

Con la stringa di connessione negli Appunti, passare a Esplora risorse di dispositivo e incollare la stringa di connessione nella casella di testo stringa di connessione Hub IoT. Fare clic su Aggiorna dovrebbe essere possibile visualizzare una finestra di messaggio che indica che "le impostazioni aggiornate correttamente." Fare clic su OK per chiudere la finestra di messaggio.

A questo punto, fare clic sulla scheda di gestione. Per registrare un dispositivo con l'IoT Hub, è necessario fare clic su Crea. Nella finestra di dialogo seguente, immettere un ID di dispositivo, come illustrato nella Figura 4. Fare clic sul pulsante Crea per registrare il dispositivo con questo servizio. Verrà visualizzata una finestra di messaggio per confermare che l'operazione abbia esito positivo. Fare clic su Chiudi per chiuderla.

Registra un dispositivo con Esplora risorse di dispositivo
Figura 4 registra un dispositivo con Esplora risorse di dispositivo

Si noterà che vi è una voce nell'elenco dei dispositivi. Pulsante destro del mouse sulla voce WiFiScanner1. Nel menu di scelta rapida che viene visualizzato, scegliere stringa di connessione di copia per il dispositivo selezionato, come illustrato nella Figura 5. Si utilizzerà questa stringa di connessione in app UWP per connetterlo all'hub IoT.

Recupero della stringa di connessione per il dispositivo
Figura 5 recupero della stringa di connessione per il dispositivo

Modificare il codice di piattaforma UWP

Questo sarebbe una colonna di informazioni sullo sviluppo UWP senza codice UWP. Ora è necessario modificare l'app creata nella colonna precedente per connettersi all'Hub eventi IoT. Fortunatamente, Microsoft ha creato una libreria per rendere questo semplice e pubblicata in NuGet. Caricare l'app dalla colonna precedente in Visual Studio. Pulsante destro del mouse su riferimenti, quindi fare clic su Gestisci pacchetti NuGet. Nella casella di ricerca, digitare Microsoft.Azure.Devices.Client e scegliere la prima opzione. Installare questo pacchetto come qualsiasi altro pacchetto NuGet.

Una volta installato il pacchetto, aggiungere la seguente istruzione using al file MainPage.xaml.cs:

using Microsoft.Azure.Devices.Client;

Aggiungere quindi il membro seguente alla classe, sostituendo "[stringa connessione]" con la stringa di connessione creata nella sezione precedente:

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

Il codice necessario per inviare i dati fino all'IoT Hub Azure è semplice grazie al codice all'interno lo spazio dei nomi Microsoft.Azure.Devices.Client. Il metodo seguente esegue esattamente questa:

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

Con questo codice nella classe MainPage, è ora possibile aggiungere le righe seguenti verso la fine del metodo RunWifiScan del file MainPage.xaml.cs. La prima riga nel codice seguente converte l'oggetto di WiFiPointData in una stringa JSON per il trasporto, mentre la seconda riga chiama il metodo che trasmette i dati fino all'hub di evento: 

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

A questo punto è ora possibile eseguire l'applicazione ed inviare dati fino all'IoT Hub. Ma per prima cosa, Vai a soluzioni di periferica, fare clic sulla scheda dati e fare clic sul pulsante Monitor. Questa operazione consente di controllare i dati che viene inviati all'hub Iot.

Utilizzo di analisi di flusso

Con tutto questo lavoro, si dispone di un IoT Hub nel cloud e un'applicazione UWP che invia i dati. E adesso? Il passaggio successivo consiste nel richiedere i dati e fare qualcosa di utile con esso. Per questa attività, che si desidera utilizzare l'analisi di flusso. Nel portale di Azure, fare clic su Nuovo, quindi cercare l'analisi di flusso. Fare clic su Crea e il nuovo processo di analisi di flusso di finestra di dialogo viene visualizzata. Il processo un nome qualsiasi, ho scelto di CityWifiScannerJob. Inoltre scelto di utilizzare il gruppo di risorse creato in precedenza. Ancora una volta, ho scelto orientale degli Stati Uniti per mantenere tutti i miei servizi per questo in un centro dati. Si dovrebbe vedere qualcosa di simile a nella figura 6. Fare clic su Crea per creare il processo.

Configurazione di un nuovo processo di analisi di flusso
Figura 6 configurazione di un nuovo processo di analisi di flusso

Processi di analisi di flusso di lavoro utilizzando i dati da un'origine di input, l'elaborazione tramite una query, quindi inviarlo a un output. Quando si crea un nuovo processo, è zero input e output, insieme a una query predefinita.

Creare l'Input

Innanzitutto, è possibile aggiungere un input facendo clic sulla tessera di input e quindi sul pulsante Aggiungi. Nella finestra di dialogo di input nuovo, fornire l'input un nome, come illustrato nella Figura 7 (si è scelto di CitiWifiScannerInput). Modificare l'origine a IoT Hub. Quindi scegliere CityWifiScannerHub dall'elenco a discesa. Poiché l'applicazione UWP invia dati in JSON con codifica UTF-8, non è necessario modificare le opzioni predefinite. Fare clic su Crea per creare l'input.

Creazione di Input
Figura 7 Input di creazione

Una volta creato l'input, è necessario creare l'output. Al momento della stampa, il nuovo portale Azure non supportano la creazione di un output di BI di alimentazione. A tale scopo, è necessario caricare il portale classico da bit.ly/1V3IFPU. A questo punto, passare alla sezione analisi di flusso, scegliere il CityWifiScannerJob e fare clic su Output. Nell'elenco delle opzioni, scegliere alimentazione BI. Nome alias di output CitiWifiPowerBI, CityWifiScans di nome di Dataset e il CityWifiTable nome di Tablet PC. Fare clic sulla freccia successiva. La seguente schermata chiederà di autorizzare l'accesso a Business Intelligence di alimentazione. È necessario accedere a un account dell'organizzazione. Se non si dispone di uno, seguire le istruzioni nel post di blog in bit.ly/29m89ZV per creare un account di prova Office 365. 

Con l'input e output sul posto, ora è necessario modificare la query. L'ambito completo di ciò che è possibile con le query flusso Analytics non rientra nell'ambito di questo articolo. Di conseguenza, creare una query semplice che invia tutti i dati dall'input all'output senza trasformazioni o clausole:

SELECT
INTO
  CityWifiPowerBI
FROM
  CitiWifiScannerInput

Questa sintassi dovrebbe essere familiare a chiunque abbia utilizzato T-SQL. I nomi di input e outpui immessi in precedenza vengono utilizzati nella query per indicare dove ottenere i dati di processo e dove inviarlo. A questo punto, è possibile salvare la query ed eseguire il processo. Fare clic sul pulsante Start nella parte inferiore della pagina per avviare il processo. Potrebbe richiedere alcuni minuti per il processo di avvio. Una volta la BI Power, aprire nel browser. Viene visualizzato CitiWifiScans come dataset nell'area di lavoro.

Aprire il dataset facendo clic su di esso. Trascinare il campo Lat dall'elenco campi nello spazio vuoto. Verrà visualizzata una cartina. A questo punto, trascinare il campo lungo il controllo della mappa. Verrà visualizzata una mappa tracciata con punti di coordinate di latitudine e longitudine dei dati. Con il dataset di esempio, hai qualcosa di simile a Figura 8.

Creazione di una mappa in BI di potenza con i dati da App UWP
Figura 8 creazione di una mappa in BI di potenza con i dati da App UWP

Conclusioni

Il potere reale e Promessa della rivoluzione IoT risiede nel cloud. Il cloud rappresenta quasi archiviazione illimitata e potenza di elaborazione. Che può essere sfruttate da dispositivi a basso consumo energetico a basso costo grazie a Internet alimentazione e archiviazione. A questo punto, i dati possono essere accodati, elaborato e visualizzato anche utilizzando strumenti di Business Intelligence di alimentazione. Possibilità di modificare facilmente un app UWP per inviare dati a un IoT Hub Azure e distribuirlo in un IoT dispositivo rende per una combinazione imbattibile che trasformerà il nostro mondo.


Frank La Vigne è un evangelist di tecnologia del team Microsoft Technology e impegno civico, si occupa di supportare gli utenti utilizzano la tecnologia per creare una comunità migliore.  Blog he al FranksWorld.com e ha un YouTube canale TV al mondo chiamato Marco (youtube.com/FranksWorldTV).

Grazie ai seguenti esperti tecnici per la revisione dell'articolo: Olivier Bloch e Rob Tiffany