センサーテレメトリ2.0.1
Sensor Telemetry2.0.1温度データをMicrosoftAzure IoT Hubにドライブし、Windowsユニバーサルアプリケーションからリモートでデータを監視します。デジタルリマスター!
ストーリー
更新:SensorTelemetryプロジェクトがデジタルリマスターされました。 2017年5月17日に更新され、Sensor Telemetry2.0.1に名前が変更されました。
はじめに
概要
このプロジェクトでは、温度センサー( MCP9808 )を監視します )、テレメトリの読み取り値を Microsoft Azure IoT Hub に送信します ここで、ストリーム分析 ジョブはメッセージを処理し、 Azure SQL に書き込みます データベース テーブル。 モバイルアプリを使用します センサーの読み取り履歴を表示します。
アプリケーション
コンピューターで起動されたクライアントバージョンは、SignalRハブからのセンサーの更新をリッスンし、画面に表示します。このバージョンは、Azure IoTHubを介してIoTバージョンにもコマンドを送信します。
テクノロジー
アーキテクチャ
アプリケーションの中心は、他のアプリケーションで再利用できる別個のプロジェクトとして構築されたMCP9808ライブラリです。このプロジェクトは、任意のWindows10アプリケーションで使用できるUWPライブラリとして開発されています。ライブラリが I2C を備えていないデバイスで使用されている場合 バスライブラリはデバイスオブジェクトを返しません。このアプローチは、センサーを「検出」し、センサーが見つからない場合にライブラリを適切に無視するために使用できます。
UWPクライアントアプリケーションには、アプリケーション全体を構成するいくつかのブロックがあります。ビューは表示可能なページであり、各ビューにはビューの状態を担当するビューモデルがあります。 3つのリポジトリがあります:アプリケーション設定( IApplicationSettingsRepository )、デバッグ情報( IDebugConsoleRepository )およびMCP9808の読み取りと書き込み( ITemperatureRepository )。 ITemperatureRepositoryを中心に構築された2つの具体的なクラスがあります。 1つはMCP9808ライブラリをラップし、もう1つはアプリケーションがRaspberryPiで実行されていないときに使用されるnullデバイスです。
次の図は、アーキテクチャの概要と、さまざまなブロックとサービス間の接続を示しています。
テレメトリサービス
このサービスは、温度が変化したイベントを(サブスクリプションを介して)監視し、温度が変化するたびにAzure ServiceBusイベントハブにメッセージを送信します。
タイマーサービス
このシンプルなサービスは、500ミリ秒ごとにイベントを公開するタイマーであり、ビューモデルがビューに現在の時刻を表示するために使用します。 Mcp9808TemperatureRepository でも使用されます センサーを毎秒1回読み取ります。タイマーイベント引数には、mod関数で使用できるカウンターが含まれており、タイマー間隔を目的の長さに簡単に分割できます。イベント引数には、計算を行うIsMyInterval(TimeSpaninterval)というメソッドがあります。間隔を TimeSpan として指定するだけです。 オブジェクト。
アラートピン監視サービス
このサービスは、MCP9808のアラートピンに接続されているGPIOピンの状態を監視します。 GPIOの値が変更されると、このサービスはイベントを公開します。
LEDサービス
このサービスは、LEDのオンとオフを切り替えます。これは、MCP9808のアラートステータスも含む温度変化イベントを(サブスクリプションを介して)監視することによって行われます。アラートステータスが変化すると、それに応じてLEDが更新されます。
プッシュボタン監視サービス
このサービスは、プッシュボタンに接続されたGPIOピンを監視し、ボタンが離されたときにイベントを公開します。このイベントは、 Mcp9808TemperatureRepository によって取得されます。 デバイスが手動アラートリセットモード(MCP9808割り込みモード)の場合。ボタンの状態をデバッグコンソールで表示できるように、デバッグイベントも公開されます。
通知リレーサービス
このサービスは、SignalRハブと内部イベントアグリゲーターを監視し、事前定義されたマッピングに基づいて2つの間でメッセージを中継します( EventRelayMap を使用)。 クラス)。これにより、アプリケーションは基本的に内部イベントシステムのみを認識し、アプリケーションの他のインスタンスとメッセージを送受信できるようになります。
デバッグコンソールサービス
このサービスは、(サブスクリプションを介して)アプリケーションのデバッグイベントを監視し、それらを内部コレクションに追加します。また、 DebugConsoleRepository も実装しています。 、これにより、デバッグコンソールビューは、ビューモデルを介してアプリケーションでこれらのイベントを表示できます。
アプリケーションの初期化
アプリケーションが起動すると、 StartPage が起動します。 最初に表示します。これにより、 StartPageViewModel が自動的に呼び出されます。 。このビューモデルは、メインビューを起動する前に、すべてを起動して実行します。
はじめに
回路要件
回路には、大きなはんだ不要のブレッドボードと、オプションでT字型のコブラーとリボンケーブルが必要です(私はVilrosから販売されているバージョンを使用しています)。ブレッドボードは、さまざまな場所から入手できます(地元の店舗やAmazonから購入しました)。この回路はまた、4つのピンを備えた瞬間的な触覚プッシュボタンスイッチを使用しています。多くの種類があります。何でもかまいません。最後に、温度センサーには、AdafruitのMCP9808高精度I2C温度センサーブレークアウトボードを使用しています。
回路アセンブリ
このガイドを使用して、ページの下部にある図をガイドとして使用しながら回路を組み立てます(注:ワイヤーの色はオプションであり、回路を簡単にするために選択されています。構築時にフォローしてください。
- 4つのLEDのそれぞれをブレッドボードに配置します。
- 220Ωの一方の端を接続します 各LEDのアノードに抵抗器を接続し、抵抗器のもう一方の端を 3V3 に接続します (ピン1または17)RaspberryPiで。 4つのLEDアノードはすべて、 3V3 に接続する必要があります 220Ω経由 抵抗器。 + のいずれかを使用することをお勧めします 3V3接続用のブレッドボード上のレール。
- 青色LEDのカソードを GPIO 18 に接続します (ピン12)ラズベリーパイ。
- 緑色のLEDのカソードを GPIO 23 に接続します (ピン16)ラズベリーパイ。
- 赤いLEDのカソードを GPIO 12 に接続します (ピン32)ラズベリーパイ。
- 黄色のLEDのカソードを GPIO 16 に接続します (ピン36)ラズベリーパイ。
- MCP9808をブレッドボードに配置します。
- 接続 Vdd MCP9808から 3V3 ラズベリーパイで。
- 接続 GND MCP9808から GND ラズベリーパイに。 Raspberry Piの地面は、6、9、14、20、25、30、34、39のいずれかのピンにすることができます。
- 接続 SCL MCP9808から SCL Raspberry Pi(ピン5)上。
- 接続 SDA MCP9808から SDA Raspberry Pi(ピン3)上。
- 10KΩを接続します アラート間の抵抗 MCP9808と 3V3 のピン ラズベリーパイで。
- アラートを接続します MCP9808を GPIO 6 に固定します (ピン31)ラズベリーパイ。
- プッシュボタンスイッチをブレッドボードに配置します。
- スイッチの片側を GPIO 5 に接続します (ピン29)ラズベリーパイ。
- スイッチの反対側を接続します GND ラズベリーパイで。
- 10KΩを接続します GPIO 5 間の抵抗 および 3V3 ラズベリーパイで。
MicrosoftAzureの要件
Azureアカウントをお持ちでない場合は、アカウントを作成する必要があります。アカウントを開始すると、200ドルのクレジットを獲得できます。 azure.comにアクセス 無料アカウントリンクをクリックします 。既にアカウントをお持ちの場合は、 portal.azure.com のポータルにログインしてください。 。
注:このガイドは、Azureを構成するための完全なガイドではありません。これまでポータルを使用したことがない場合は、ポータルに慣れておく必要があります。このプロジェクトに必要な手順をできる限り説明します。
AzureIoTイベントハブのセットアップ
- 新規を選択します ポータルの左側のメニューにあります。
- モノのインターネットを選択します
- IoTハブを選択します
- ハブの一意の名前を入力してください。
- サブスクリプションを選択します。
- リソースグループの下 [新規作成]を選択します グループの名前を入力します。このプロジェクト中に作成されたすべてのAzureリソースにこのグループを使用することに注意してください。
- 場所を選択します(料金を低く抑えるために、すべてのリソースを同じ地域に維持するようにしてください 。
- これが最初のIoTハブである場合は、[料金とスケール階層]を選択します。次に、 F1無料を選択します 。アカウントに1つの無料利用枠を設定できます。
- 最後に、[作成]をクリックします IoTハブが作成されるのを待ちます。
- 左側のメニューで[IoTハブ]をクリックして、新しいハブを表示します。
- 新しいハブをクリックして、詳細の概要を確認します。後でこのビューを参照する必要があります。
デバイスの作成
Azure IoT Hubでは、セキュリティ上の理由から、各デバイスを一意に識別してハブに登録する必要があります。デバイスはAzureSDKとコードを使用して登録できますが、このプロジェクトでは、AzureSDKで利用可能なデバイスエクスプローラーを使用します。
- zipファイルを取得するか、リポジトリのクローンを作成して、https://github.com/Azure/azure-iot-sdk-csharpからGitHubからAzureSDKをダウンロードします。
- zipファイルをダウンロードした場合は、ディスク上のフォルダーに展開します。
- フォルダを開きます azure-iot-sdk–csharp-master \ tools \ DeviceExplorer 。
- VisualStudioでDeviceExplorerプロジェクトを開きます。
- アプリケーションを実行します。
- Azureポータルに戻り、IoTハブを選択します。 [共有アクセスポリシー]をクリックします リンクして iothubowner を選択します 。 [コピー]をクリックします 接続文字列–主キーの横にあるボタン 。
- [デバイスエクスプローラー]ウィンドウで、この文字列を[ IoTハブ接続文字列]というラベルの付いたテキストボックスに貼り付けます 。
- 更新をクリックします ボタン。
- 管理に変更します デバイスエクスプローラのタブをクリックし、[作成]をクリックします 。
- デバイスの名前を入力します(例: TemperatureDevice1 。
- キーの自動生成を確認してください チェックボックスをオンにして、[作成]をクリックします 。
- [完了]をクリックします 。
- 後でデバイス接続文字列を取得するには、このアプリケーションに戻る必要があります。
AzureSQLデータベースのセットアップ
- [ SQLデータベース]をクリックします ポータルメニューで。
- [追加]をクリックします ボタン。
- データベースの名前を入力します(例:SensorTelemetry)
- サブスクリプションを選択します。
- リソースグループの場合 既存のものを使用を選択します センサーテレメトリを選択します ドロップダウンから。
- サーバーリンクをクリックして、新しいサーバーをセットアップします。
- サーバーの名前を入力します。
- ユーザー名を入力します(これは後で必要になるため、覚えておいてください 。
- パスワードを入力します(後で必要になるので、覚えておいてください 。
- 場所を選択します(料金を低く抑えるために、すべてのリソースを同じ地域に維持するようにしてください 。
- [選択]をクリックします 。
- [料金階層]をクリックします 。
- 基本を選択します 。
- [選択]をクリックします 。
- [作成]をクリックします 。
- SQLServerリストで新しいサーバーをクリックします
- [サーバーファイアウォールの設定]をクリックします コンピューターからSQLServerへのアクセスを許可します。
- 接続の名前と外部IPアドレスを[開始IP]と[終了IP]の範囲で入力します。
- 省略記号をクリックしてエントリを保存します。
- [保存] をクリックします IPアドレスを保存します。
データベーステーブルを作成する
- VisualStudioを開きます。
- SQLServerオブジェクトエクスプローラーを選択します 表示から メニュー。
- SQL Server を右クリックします オブジェクトを選択し、 SQLServerの追加を選択します 。
- Azureデータベースを参照し、前の手順で作成したデータベースを選択します。
- ユーザー名とパスワードを入力し、[接続]をクリックします 。
- 作成したデータベースが表示されるまで、オブジェクトエクスプローラーのアイテムを展開します。
- このデータベースを右クリックして、[新しいクエリ]を選択します 。
- このプロジェクトページの下部からSQLスクリプトをコピーして、VisualStudioコードウィンドウに貼り付けます。
- 実行を選択します SQL から スクリプトを実行するためのメニュー。
- エクスプローラーでテーブルオブジェクトを展開すると、 SensorReadings という新しく作成されたテーブルが表示されます。 。
アプリサービスプランを作成する
- ポータルメニューでAppServiceプランを選択します。
- プランの名前を入力してください。
- リソースグループの場合 既存のものを使用を選択します センサーテレメトリを選択します ドロップダウンから。
- 場所を選択しました。
- [料金階層]をクリックします B1ベーシックを選択します 。
- [作成]をクリックします 。
アプリサービスを作成します( モバイルアプリ )
- [新規]をクリックします ポータルメニューから。
- Web + Mobile を選択します リストから。
- モバイルアプリを選択します 。
- アプリケーションの名前を入力します。
- サブスクリプションを選択します。
- リソースグループの場合 既存のものを使用を選択します センサーテレメトリを選択します ドロップダウンから。
- 前の手順で作成したAppServicePlanを選択します。
- AppInsightsはオプションです。
- [作成]をクリックします 。
Azure StreamAnalyticsのセットアップ
Stream Analyticsジョブは、IoT Hub上のデータイベントを監視し、それらをSQLServerデータベースに書き込みます。ジョブは、入力(IoT Hub)、出力(SQLテーブル)、および使用するフィールドを選択するクエリで構成されます。
- 新規を選択します 。
- データ+分析を選択します メニューから。
- ストリーム分析ジョブを選択します メニューから。
- ジョブの一意の名前を入力してください。
- サブスクリプションを選択します。
- リソースグループの場合は、[既存のものを使用]を選択し、ドロップダウンから[センサーテレメトリ]を選択します。
- 場所を選択します(料金を低く抑えるために、すべてのリソースを同じ地域に維持するようにしてください 。
- [作成]をクリックします 。
- その他のサービス> を選択します メニューから。
- 下にスクロールして Stream Analytics スターをクリックします 。これにより、ポータルメニューに固定されます。
- [ストリーム分析ジョブ]をクリックします ポータルメニューで。
- 作成したばかりのジョブを選択します。
- [入力]をクリックします 。
- [追加]をクリックします 。
- 入力の名前を入力します(例:SensorTelemetry-Input)。
- ソースを IoTハブに変更します 。
- 残りのデフォルト値を受け入れます。
- [作成]をクリックします 。
- [出力]をクリックします 。
- [追加]をクリックします 。
- 出力の名前を入力します(つまり、SensorTelemetry-Output)。
- SQLデータベースを選択します シンクとして。
- センサーテレメトリデータベースを選択します。
- データベースサーバーの作成時に指定したユーザー名を入力します。
- データベースサーバーの作成時に指定したパスワードを入力します。
- SensorReadingsを入力 テーブル名。
- [作成]をクリックします 。
- クエリを選択します 。
- テキストを置き換えます [YourOutputAlias] 出力の名前を付けます(角かっこはそのままにします)。
- テキストを置き換えます [YourInputAlias] 入力の名前を使用します(角かっこはそのままにします)。
- アスタリスクを置き換えます( * )このテキスト: [TimestampUtc]、Source、Temperature、IsCritical、IsAboveUpperThreshold、IsBelowLowerThreshold
- [保存] をクリックします 次に、[はい]をクリックします プロンプトが表示された場合。
- [概要]をクリックします StreamAnalyticsジョブメニューで。
- 開始をクリックします ボタン。
- 今すぐ選択してください。
- [開始]をクリックします 。
ソフトウェアの構成
ページの下部にあるリポジトリリンクを使用して、コードをzipファイルとしてダウンロードするか、リポジトリをコンピュータに複製して、 Visual Studio でプロジェクトを開きます。 。
モバイルアプリの構成と公開
- Visual Studio でプロジェクトを右クリックします 公開を選択します 。
- Microsoft Azure AppService をクリックします 。
- リストからAppServiceを選択します(初めての場合はログインが必要になる場合があります)。
- [ OK ]をクリックします 。
- [次へ]をクリックします 。
- Azureポータルに移動します
- SQLデータベースを選択 ポータルメニューから。
- データベースを選択します。
- [データベース接続文字列を表示する]をクリックします リンク。
- ADO.NET の横にあるコピーボタンをクリックします 文字列。
- Visual Studioに戻り、この文字列を MS_TableConnectionString というラベルの付いたテキストボックスに貼り付けます 。
- ユーザー名とパスワードを、SQLServerの作成時に設定した値に変更します。
- [次へ]をクリックします 。
- [公開]をクリックします 。
- 公開が完了すると、新しいWebサイトに向けられたブラウザが起動します。
IoTハブのクレデンシャルを入力
アプリケーションを実行する前に、IoTHubデバイスのクレデンシャルをコードに入力する必要があります。
- VisualStudioでプロジェクトを開きます。
- センサーテレメトリを拡張します UWP の下でのプロジェクト フォルダを開き、 App.xaml のコードビハインドを開きます 。
- IIotHubConfiguration の定義があるセクションまで下にスクロールします 。
- デバイスエクスプローラーを開きます VisualStduioの別のインスタンスでプロジェクトを作成します。
- [管理]タブをクリックします。
- 前に作成したデバイスを右クリックします。
- 選択したデバイスの接続文字列をコピーをクリックします メニューのオプション。
- センサーテレメトリプロジェクトに戻り、接続文字列をテキストに貼り付けます {ここに接続文字列} 。
- テキストにデバイスの名前を入力します {ここにデバイスID} 。
- このファイルを保存します。
- Sensor Telemetry IoT を拡張します プロジェクトを作成し、 App.xaml のコードbehidnを見つけます 。
- IIotHubConfiguration の定義があるセクションまで下にスクロールします 。
- 以前の app.cs と同じ構成をコピーして貼り付けます ファイル。
モバイルアプリのURLを入力
- VisualStudioでプロジェクトを開きます。
- 共有を拡張します プロジェクト。
- UnityConfiguration.cs を開きます 。
- IMobileServicesConfiguration を含むセクションまで下にスクロールします 定義。
- Azureポータルを開きます。
- [アプリサービス]をクリックします 。
- アプリサービスを選択します このプロジェクト用に作成しました。
- マウスを URL に合わせます [コピー]をクリックします アイコン。
- Visual Studioに戻り、URLをテキストに貼り付けます {モバイルサービスのURLはこちら} 。
Read More Detail :Sensor Telemetry 2.0.1
製造プロセス