2016 年 9 月

第 31 卷,第 9 期

本文章是由機器翻譯。

Modern Apps - 使用 UWP 與 Azure 建置全市 Wi-Fi 掃描器

Frank La La

在 7 月的專欄 (msdn.com/magazine/mt736460),我討論了如何撰寫通用 Windows 平台 (UWP) 應用程式,來掃描 Wi-fi 網路。在本文結尾,我會提供方案以建立 CSV 文字字串。然後短暫提過什麼可以完成 Power BI 方面資料視覺效果。不過,複製並貼上從 UI 文字資料的手動程序可避免解決方案調整超過單一使用者。此外,設計目的是在不顯示任何類型的 IoT 裝置上執行應用程式。這表示 UWP 應用程式必須將資料傳送至雲端,不顯示任何 UI。這也稱為是 「 無標頭 」 的解決方案。方案必須能夠安裝縣 (市) 掃描 Wi-fi 網路上的多個裝置。

首先,您必須設定雲端服務中所有這些資料。第二,您必須修改現有 UWP 應用程式的程式碼,以將資料傳送至該雲端服務。最後,您會想要將此 Power BI 中的資料視覺化。

雲端和物聯網

雲端是一項超炫的創新。它提供有效的無限制儲存體和計算甚至最低電源的裝置。只需要為網際網路的連線。雲端服務通常物聯網 (IoT) 會討論,支配交談,而不是實際的裝置。為什麼會這樣呢? 嗯,簡單地說,許多裝置連線到網際網路需要從中傳輸資料,並且接收通知的中央位置。Crunched 和分析雲端中,許多改變世界,典範移位的結果是結果的資料。此外,將計算和儲存體的重擔放在雲端,表示實際的端點裝置可以是權力較小。較少的電力會轉譯成較低成本和更節省功率的裝置。

如所示的詞彙,IoT 是相關事項以及網際網路連線到網際網路。因此,這表示在裝置和雲端中的服務上執行的程式碼。此專案的最終目標是有多個裝置與 Wi-fi 持續掃描無線網路的介面卡。這些裝置將會報告即時調查結果。基於本文的目的,我們將假設您的裝置有網際網路存取權。

方案是使用 Microsoft Azure IoT 中心與 Azure 串流分析。Azure IoT 中心是具備高度可擴充性的服務,並可擷取數百萬個每秒的事件。IoT 中心是類似於 Azure 事件中樞,不同之處在於它有額外的功能,以管理裝置。裝置必須註冊才能連接到 IoT 中心。註冊之後,裝置就會傳輸到 IoT 中心,然後收集即時資料的訊息。Azure 串流分析,可以傳送該資料。

Azure 串流分析是完全受管理的服務可提供低延遲、 高可用性、 可調整、 複雜事件處理從各種來源的資料流中的資料。資料流分析會收集從 Wi-fi 掃描器裝置執行 Wi-fi 掃描器 UWP 應用程式的每個資料流中的資料。

簡單地說,Azure IoT 中心會從已註冊的裝置收集資料,以及 Azure 資料流分析可讓您輕鬆地查詢資料。若要這樣做,您必須設定在 Azure 中適當的服務,並對 UWP 應用程式進行修改。

設定雲端服務

首先是建立 Azure IoT 中心。若要這樣做,請瀏覽至 Azure 網站,按一下 [新增],然後按一下物聯網展開該類別中,選項中所示 [圖 1。按一下 [至] 對話方塊中,請參閱 IoT 中心中所示 [圖 2

在 Azure 入口網站中建立 IoT 中心
[圖 1 在 Azure 入口網站中建立 IoT 中心

建立 IoT 中心] 對話方塊
[圖 2 建立 IoT 中心] 對話方塊

在這份表單,您要輸入 IoT 中心的唯一名稱。我選擇 CityWifiScannerHub。現在,我會選擇免費層的服務,因為這適用於開發。我也選擇建立新的資源群組並將它命名為 CityWifiScannerRG。最好挑選命名慣例,並使用它。與區域,它並不重要您選擇哪一個地區。請確定您選擇的相同區域的所有服務,以儲存資料輸出費用。我的需求,美國東部不錯的選擇。檢查釘選到儀表板選項更容易存取此服務。現在,按一下 [建立而且服務會啟動並執行在幾分鐘的時間。

等待啟動服務,現在是下載裝置檔案總管] 中的好時機 bit.ly/25lXGY9

裝置總管

裝置總管是一個公用程式,可協助您建立 IoT 中心解決方案,可讓您註冊和移除您的 IoT 中心,以及裝置與集線器之間傳送的監視器資料的裝置。若要使用集線器的工具,您將需要從 IoT 中心取得的連接字串。在 Azure 入口網站中,瀏覽 IoT 中心並按一下 [金鑰] 圖示。因為您想管理的權限,可以新增和移除裝置,請選擇 [iothubowner 原則。在下列對話方塊中,按一下 [連接字串旁邊的複製圖示 — 主索引鍵,如下所示在 [圖 3。這會將連接字串複製到剪貼簿。

取得裝置檔案總管] 中的連接字串
[圖 3 取得裝置檔案總管] 中的連接字串

在剪貼簿的連接字串,移到 [總管] 中的裝置和 IoT 中樞連接字串] 文字方塊中貼上連接字串。按一下 [更新],您應該會看到訊息指出,「 設定更新成功。 」 按一下 [OK (確定)] 關閉訊息方塊。

現在,按一下 [管理] 索引標籤。若要這個 IoT 中心註冊裝置,您必須按一下 [建立]。在下列對話方塊中,輸入裝置識別碼,如 [ [圖 4。按一下 [建立] 按鈕,為裝置註冊此服務。訊息方塊會出現確認作業成功。按一下 [關閉] 以關閉它。

註冊裝置與裝置檔案總管
[圖 4 向裝置檔案總管] 註冊裝置

您會注意到,有一個項目現在裝置清單中。以滑鼠右鍵按一下 WiFiScanner1 項目。在出現的內容功能表,選擇複製選取的裝置,連接字串中所示 [圖 5。您將 UWP 應用程式中使用此連接字串,將它連接到 IoT 中心。

取得裝置的連接字串
[圖 5 裝置取得連接字串

修改 UWP 程式碼

這就不會沒有某些 UWP 程式碼的 UWP 開發的相關資料行。現在就來修改先前的資料行,將它連接到 IoT 事件中心中建立的應用程式。所幸,Microsoft 已建立程式庫,讓這簡單並將它發佈 nuget。從先前的資料行載入 Visual Studio 應用程式。以滑鼠右鍵按一下 [參考],然後按一下 [管理 NuGet 封裝。在 [搜尋] 方塊中,輸入 Microsoft.Azure.Devices.Client,選擇第一個選項。如同任何其他的 NuGet 封裝,請安裝此封裝。

安裝封裝之後,新增下列 using 陳述式新增至 MainPage.xaml.cs 檔案︰

using Microsoft.Azure.Devices.Client;

至類別,以在上一節中建立的連接字串取代 「 [連線字串] 」,然後新增下列成員︰

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

傳送資料到 Azure IoT 中心時所需的程式碼是簡單式感謝 Microsoft.Azure.Devices.Client 的命名空間內的程式碼。下列方法會執行完全的動作︰

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

您現在可以使用此程式碼放在 MainPage 類別,加入下列幾行的 RunWifiScan 方法,在 MainPage.xaml.cs 檔案的尾端。下列程式碼中的第一行將轉換為 WiFiPointData 物件以 JSON 字串進行傳輸,而第二行呼叫會傳送到事件中心資料的方法︰ 

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

現在就執行應用程式,並傳送到 IoT 中心的資料。但移至裝置檔案總管] 的第一次,、 可按一下 [資料] 索引標籤上,然後按一下 [監視] 按鈕。這可讓您觀賞會被傳送到 Iot 中心的資料。

使用資料流分析工作

所有這些工作完成,您可以在雲端,以及將資料傳送給它的 UWP 應用程式的 IoT 中心。接下來該怎麼辦? 下一個步驟是取得資料並進行一些有用的處理。這項工作,您要使用資料流分析。在 Azure 入口網站中,按一下 [新增],然後搜尋資料流分析。按一下 [建立新的資料流分析工作] 對話方塊隨即出現。將工作依自己的需求 — 我選擇 CityWifiScannerJob。我也選擇使用稍早建立的資源群組。同樣地,我選擇要保留我的所有服務的一個資料中心內的美國東部。您應該會看到類似的程式碼 [圖 6。按一下 [建立] 以建立工作。

設定新的資料流分析工作
[圖 6 設定新的資料流分析工作

資料流分析工作的運作方式將資料從輸入來源,處理查詢,然後將它傳送至輸出。當您建立新的工作時,您可以有零個輸入和輸出,以及預設查詢。

建立輸入

首先,依序按一下 [輸入] 磚,然後在 [新增] 按鈕上加入為輸入。在新的輸入對話方塊中,指定輸入的名稱,如所示 [圖 7 (我選擇 CitiWifiScannerInput)。將來源變更為 IoT 中心。然後從下拉式清單中選擇 CityWifiScannerHub。由於 UWP 應用程式傳送 UTF 8 編碼 JSON 中的資料,因此沒有需要修改預設的選項。按一下 [建立] 以建立輸入。

建立輸入
[圖 7 建立輸入

既然已建立的輸入,就建立輸出的時間。按下時,新的 Azure 入口網站並不支援建立 Power BI 輸出。為此,您需要載入傳統的入口網站,從 bit.ly/1V3IFPU。從該處,請移至 [資料流分析] 區段中,選擇 CityWifiScannerJob 並按一下輸出。在選項清單中,選擇 [Power BI。CitiWifiPowerBI、 資料集名稱 CityWifiScans 和平板電腦名稱 CityWifiTable 別名名稱的輸出。按一下 [下一步箭頭。下列螢幕畫面會詢問您授權存取 Power BI。您必須登入組織帳戶。如果您沒有帳戶,請遵循在部落格文章中的指導方針 bit.ly/29m89ZV 建立 Office 365 試用帳戶。 

輸入和輸出位置,現在就來編輯查詢。可以進行資料流分析查詢的完整範圍超出本文的範圍。因此,我將建立一個非常簡單的查詢將輸入的輸出,而不需要任何轉換或子句中傳送的所有資料︰

SELECT
INTO
  CityWifiPowerBI
FROM
  CitiWifiScannerInput

此語法看起來應該很熟悉曾經使用 T-SQL。請注意,輸入的輸入和輸出名稱先前用於查詢中告知工作來取得資料的位置和傳送至何處。現在,它是儲存查詢,並執行工作的時間。按一下 [啟動作業] 頁面底部的 [開始] 按鈕。可能需要一些時間來啟動工作。之後,請在您的瀏覽器中開啟 Power BI。您現在應該看到 CitiWifiScans 做為資料集,在您的工作區中。

在其上按一下 [開啟資料集。將 Lat 欄位的欄位清單拖曳到空白的泛空白字元。地圖控制項將會出現。現在,長的欄位拖曳地圖控制項。您應該會看到地圖繪製資料的緯度和經度座標的點。我的範例資料集,我有類似 [圖 8

從 UWP 應用程式資料的 Power BI 中建立對應
[圖 8 UWP 應用程式資料的 Power BI 中建立對應

總結

IoT 革命的承諾,與真正威力在於定域機組。雲端呈現幾乎無限制儲存體和處理能力。功能和儲存體可以利用由於網際網路的低成本、 節省功率的裝置。在這裡,資料可以加入佇列,處理和甚至視覺化使用 Power BI 之類的工具。能夠輕鬆地修改 UWP 應用程式,以將資料傳送至 Azure IoT 中心,並將它部署到 IoT 裝置可以所向無敵的組合,以轉換我們的世界。


Frank La Vigne 是 Microsoft 技術和民事參與小組的技術推廣者,可協助使用者充分利用技術,以便建立更好的社群。 定期在他的部落格 FranksWorld.com 和已製作成 YouTube 頻道呼叫的 Frank 世界電視 (youtube.com/FranksWorldTV)。

感謝以下協助校閱本篇文章的技術專家: 撰文 Bloch 和 Rob Tiffany