- シミュレートされたテレメトリを使用した C
- C と実センサー
- C はファームウェア更新プログラムの を実装します
- シミュレートされたテレメトリ を使用したNode.js
- 実際のセンサー を使用したNode.js
- ファームウェア更新 を実装Node.js
このチュートリアルでは、Raspberry Pi 3 用 Microsoft Azure IoT Starter Kit を使用して次の操作を行う方法について説明します。
- クラウドと通信できる温度と湿度のリーダーを開発します。
- リモート ファームウェアの更新を有効にして実行し、Raspberry Pi 上のクライアント アプリケーションを更新します。
このチュートリアルでは、次の内容を使用します。
- Raspbian OS、Node.js プログラミング言語、および Node.js 用の Microsoft Azure IoT SDK を使用してサンプルデバイスを実装します。
- クラウドベースのバックエンドとしての IoT Suite リモート監視構成済みソリューション。
概要
このチュートリアルでは、次の手順を実行します。
- リモート監視構成済みソリューションのインスタンスを Azure サブスクリプションにデプロイします。 この手順では、複数の Azure サービスが自動的にデプロイおよび構成されます。
- コンピューターとリモート監視ソリューションと通信するようにデバイスとセンサーを設定します。
- リモート監視ソリューションに接続し、ソリューション ダッシュボードで表示できるテレメトリを送信するように、サンプル デバイス コードを更新します。
- サンプル デバイス コードを使用して、クライアント アプリケーションを更新します。
前提条件
このチュートリアルを完了するには、アクティブな Azure サブスクリプションが必要です。
注
アカウントをお持ちでない場合は、数分で無料試用版アカウントを作成できます。 詳細については、「Azure の無料試用版サイト」を参照してください。
必要なソフトウェア
Raspberry Pi のコマンド ラインにリモートでアクセスできるようにするには、デスクトップ コンピューター上の SSH クライアントが必要です。
- Windows には SSH クライアントは含まれません。 PuTTY 使用することをお勧めします。
- ほとんどの Linux ディストリビューションと Mac OS には、コマンド ライン SSH ユーティリティが含まれています。 詳細については、「Linux または Mac OS を使用した SSH の」を参照してください。
必要なハードウェア
Raspberry Pi のコマンド ラインにリモートで接続できるデスクトップ コンピューター。
Microsoft IoT Starter Kit for Raspberry Pi 3 または同等のコンポーネント。 このチュートリアルでは、キットの次の項目を使用します。
- Raspberry Pi 3
- MicroSD カード (NOOBS 付き)
- USB ミニ ケーブル
- イーサネット ケーブル
- BME280 センサー
- ブレッドボード
- ジャンパーワイヤー
- 抵抗器
- LED
ソリューションをプロビジョニングする
アカウントでリモート監視構成済みソリューションをまだプロビジョニングしていない場合:
- Azure アカウントの資格情報を使用して azureiotsuite.com にサインインし、+ をクリックしてソリューションを作成します。
- [リモート監視] タイルの [ 選択] をクリックします。
- リモート監視構成済みソリューションの ソリューション名 を入力します。
- ソリューションのプロビジョニングに使用する リージョン と サブスクリプション を選択します。
- [ソリューション 作成] をクリックして、プロビジョニング プロセスを開始します。 通常、このプロセスの実行には数分かかります。
プロビジョニング プロセスが完了するまで待ちます
- プロビジョニング 状態のソリューションのタイルをクリックします。
- Azure サービスが Azure サブスクリプションにデプロイされると、プロビジョニングの状態() に注目してください。
- プロビジョニングが完了すると、状態が Readyに変わります。
- タイルをクリックすると、右側のウィンドウにソリューションの詳細が表示されます。
注
事前構成済みソリューションの展開で問題が発生した場合は、azureiotsuite.com サイト の アクセス許可と FAQを確認してください。 問題が解決しない場合は、ポータルでサービス チケットを作成します。
自分のソリューションに期待しているのに記載されていない詳細がありますか? User Voiceの機能に関する提案をお寄せください。
警告
リモート監視ソリューションは、Azure サブスクリプションに一連の Azure サービスをプロビジョニングします。 デプロイには、実際のエンタープライズ アーキテクチャが反映されています。 不要な Azure 消費料金を回避するには、構成済みソリューションのインスタンスを完了したら、azureiotsuite.com で削除します。 構成済みソリューションがもう一度必要な場合は、簡単に再作成できます。 リモート監視ソリューションの実行中の使用量の削減の詳細については、「デモ用の Azure IoT Suite 事前構成済みソリューションの構成を参照してください。
ソリューション ダッシュボードを表示する
ソリューション ダッシュボードを使用すると、デプロイされたソリューションを管理できます。 たとえば、テレメトリの表示、デバイスの追加、メソッドの呼び出しを行うことができます。
プロビジョニングが完了し、構成済みソリューションのタイルに [準備完了] 表示されたら、[起動] を選択して、新しいタブでリモート監視ソリューション ポータルを開きます。
を起動する
既定では、ソリューション ポータルに ダッシュボードが表示されます。 ページの左側にあるメニューを使用して、ソリューション ポータルの他の領域に移動できます。
デバイスを追加する
デバイスが構成済みソリューションに接続するには、有効な資格情報を使用して IoT Hub に自身を識別する必要があります。 ソリューション ダッシュボードからデバイスの資格情報を取得できます。 このチュートリアルの後半で、クライアント アプリケーションにデバイス資格情報を含めます。
まだ行っていない場合は、カスタム デバイスをリモート監視ソリューションに追加します。 ソリューション ダッシュボードで次の手順を実行します。
ダッシュボードの左下隅にある [デバイス の追加]クリックします。
を追加する
[カスタム デバイス] パネルで、[新しいを追加] をクリックします。
を追加する
[自分でデバイス IDを定義する] を選択します。 rasppiなどのデバイス ID を入力し、[ID の確認] をクリックして、ソリューションで名前をまだ使用していないことを確認し、[作成] をクリックしてデバイスをプロビジョニングします。
を追加する
デバイスの資格情報 (デバイス ID、IoT Hub ホスト名、デバイス キーの ) を書き留めます。 Raspberry Pi 上のクライアント アプリケーションがリモート監視ソリューションに接続するには、これらの値が必要です。 次に、 [Done] をクリックします。
を表示する
ソリューション ダッシュボードのデバイス一覧でデバイスを選択します。 次に、デバイスの詳細 パネルで、[デバイス を有効にするをクリックします。 デバイスの状態は現在 実行中のになりました。 リモート監視ソリューションは、デバイスからテレメトリを受信し、デバイスでメソッドを呼び出すようになりました。
Raspberry Pi を準備する
Raspbian をインストールする
Raspberry Pi を初めて使用する場合は、キットに含まれている SD カードに NOOBS を使用して Raspbian オペレーティング システムをインストールする必要があります。 Raspberry Pi ソフトウェア ガイド では、Raspberry Pi にオペレーティング システムをインストールする方法について説明します。 このチュートリアルでは、Raspberry Pi に Raspbian オペレーティング システムがインストールされていることを前提としています。
注
Microsoft Azure IoT Starter Kit for Raspberry Pi 3 に含まれる SD カードには、既に NOOBS がインストールされています。 このカードから Raspberry Pi を起動し、Raspbian OS のインストールを選択できます。
ハードウェアを設定する
このチュートリアルでは、Microsoft Azure IoT Starter Kit for Raspberry Pi 3 に含まれている BME280 センサーを使用して、テレメトリ データを生成します。 LED を使用して、Raspberry Pi がソリューション ダッシュボードからのメソッド呼び出しをいつ処理するかを示します。
ブレッドボードのコンポーネントは次のとおりです。
- 赤い LED
- 220Ω 抵抗 (赤、赤、茶色)
- BME280 センサー
次の図は、ハードウェアを接続する方法を示しています。
のハードウェアセットアップ
次の表は、Raspberry Pi からブレッドボード上のコンポーネントへの接続をまとめたものです。
Raspberry Pi | ブレッドボード | 色 |
---|---|---|
GND (ピン 14) | LED マイナスピン (18A) | 紫 |
GPCLK0 (ピン 7) | 抵抗 (25A) | オレンジ |
SPI_CE0 (ピン 24) | CS (39A) | 青い |
SPI_SCLK (ピン 23) | SCK (36A) | 黄色 |
SPI_MISO (ピン 21) | SDO (37A) | 白い |
SPI_MOSI (ピン 19) | SDI (38A) | 緑 |
GND (ピン 6) | GND (35A) | 黒い |
3.3 V (ピン 1) | 3Vo (34A) | 赤い |
ハードウェアのセットアップを完了するには、次の手順を実行する必要があります。
- Raspberry Pi をキットに含まれている電源に接続します。
- キットに付属のイーサネット ケーブルを使用して、Raspberry Pi をネットワークに接続します。 または、Raspberry Pi の ワイヤレス接続 を設定することもできます。
これで、Raspberry Pi のハードウェアセットアップが完了しました。
サインインしてターミナルにアクセスする
Raspberry Pi のターミナル環境にアクセスするには、次の 2 つのオプションがあります。
Raspberry Pi に接続されているキーボードとモニターがある場合は、Raspbian GUI を使用してターミナル ウィンドウにアクセスできます。
デスクトップ コンピューターから SSH を使用して Raspberry Pi のコマンド ラインにアクセスします。
GUI でターミナル ウィンドウを使用する
Raspbian の既定の資格情報は、ユーザー名 pi とパスワード raspberryです。 GUI のタスク バーで、モニターのようなアイコンを使用して、ターミナル ユーティリティを起動できます。
SSH を使用してサインインする
Raspberry Pi へのコマンド ライン アクセスには SSH を使用できます。 SSH (Secure Shell) 記事では、Raspberry Pi で SSH を構成する方法と、Windows または Linux & Mac OSから接続する方法について説明します。
raspberry ユーザー名 pi とパスワードを使用してサインインします。
省略可能: Raspberry Pi でフォルダーを共有する
必要に応じて、Raspberry Pi 上のフォルダーをデスクトップ環境と共有することもできます。 フォルダーを共有すると、好みのデスクトップ テキスト エディター (Visual Studio Code や Sublime Textなど) を使用して、nano
や vi
を使用する代わりに Raspberry Pi 上のファイルを編集できます。
Windows とフォルダーを共有するには、Raspberry Pi で Samba サーバーを構成します。 または、デスクトップ上の SFTP クライアントと共に組み込みの SFTP サーバーを使用します。
SPI を有効にする
サンプル アプリケーションを実行する前に、Raspberry Pi でシリアル周辺機器インターフェイス (SPI) バスを有効にする必要があります。 Raspberry Pi は、SPI バス経由で BME280 センサー デバイスと通信します。 次のコマンドを使用して、構成ファイルを編集します。
sudo nano /boot/config.txt
次の行を見つけます。
#dtparam=spi=on
行のコメントを解除するには、開始時に
#
を削除します。変更を保存し (Ctrl + O、 Enter) し、エディターを終了します (Ctrl + X)。
SPI を有効にするには、Raspberry Pi を再起動します。 再起動するとターミナルが切断されます。Raspberry Pi が再起動したら、もう一度サインインする必要があります。
sudo reboot
サンプルをダウンロードして構成する
Raspberry Pi でリモート監視クライアント アプリケーションをダウンロードして構成できるようになりました。
Node.js のインストール
まだインストールしていない場合は、Raspberry Pi に Node.js をインストールします。 IoT SDK for Node.js には、バージョン 0.11.5 の Node.js 以降が必要です。 次の手順では、Raspberry Pi Node.js v6.10.2 をインストールする方法を示します。
Raspberry Pi を更新するには、次のコマンドを使用します。
sudo apt-get update
次のコマンドを使用して、Node.js バイナリを Raspberry Pi にダウンロードします。
wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-armv7l.tar.gz
バイナリをインストールするには、次のコマンドを使用します。
sudo tar -C /usr/local --strip-components 1 -xzf node-v6.10.2-linux-armv7l.tar.gz
次のコマンドを使用して、v6.10.2 Node.js 正常にインストールされていることを確認します。
node --version
リポジトリを複製する
まだ行っていない場合は、Pi で次のコマンドを実行して、必要なリポジトリを複製します。
cd ~
git clone --recursive https://github.com/Azure-Samples/iot-remote-monitoring-node-raspberrypi-getstartedkit.git
デバイス接続文字列を更新する
次のコマンドを使用して、nano エディターでサンプル構成ファイルを開きます。
nano ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/advanced/config/deviceinfo
プレースホルダーの値を、このチュートリアルの開始時に作成して保存したデバイス ID と IoT Hub 情報に置き換えます。
完了すると、deviceinfo ファイルの内容は次の例のようになります。
yourdeviceid
HostName=youriothubname.azure-devices.net;DeviceId=yourdeviceid;SharedAccessKey=yourdevicekey
変更を保存し (Ctrl + O、 Enter) し、エディターを終了します (Ctrl + X)。
サンプルを実行する
次のコマンドを実行して、サンプルの前提条件パッケージをインストールします。
cd ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/advance/1.0
npm install
Raspberry Pi でサンプル プログラムを実行できるようになりました。 コマンドを入力します。
sudo node ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/advanced/1.0/remote_monitoring.js
次の出力例は、Raspberry Pi のコマンド プロンプトに表示される出力の例です。
Raspberry Pi アプリの出力
Ctrl + C キーを押して、プログラムをいつでも終了します。
テレメトリを表示する
Raspberry Pi は現在、リモート監視ソリューションにテレメトリを送信しています。 ソリューション ダッシュボードでテレメトリを表示できます。 ソリューション ダッシュボードから Raspberry Pi にメッセージを送信することもできます。
- ソリューション ダッシュボードに移動します。
- ドロップダウンメニュー 「表示するデバイス」の中からデバイス を選択します。
- Raspberry Pi からのテレメトリがダッシュボードに表示されます。
からのテレメトリを表示する
ファームウェアの更新を開始する
ファームウェア更新プロセスは、デバイス クライアント アプリケーションの更新バージョンを Raspberry Pi にダウンロードしてインストールします。 ファームウェア更新プロセスの詳細については、「IoT Hubを使用したデバイス管理の概要」のファームウェア更新パターンの説明を参照してください。
デバイスでメソッドを呼び出して、ファームウェア更新プロセスを開始します。 このメソッドは非同期であり、更新プロセスが開始されるとすぐに返されます。 デバイスは、報告されたプロパティを使用して、更新プログラムの進行状況をソリューションに通知します。
Raspberry Pi のメソッドは、ソリューション ダッシュボードから呼び出します。 Raspberry Pi は、最初にリモート監視ソリューションに接続するときに、サポートされているメソッドに関する情報を送信します。
ソリューション ダッシュボードで、[デバイス] をクリックして、[デバイス] ページにアクセスします。 デバイスリストで Raspberry Pi を選択します。 次に、メソッドを選択します。
でデバイスを一覧表示する
[呼び出しメソッド] ページで、[メソッド] ドロップダウンから [InitiateFirmwareUpdate] を選択します。
FWPackageURI フィールドに、「https://raw.githubusercontent.com/Azure-Samples/iot-remote-monitoring-node-raspberrypi-getstartedkit/master/advanced/2.0/raspberry.js」と入力します。 このファイルには、ファームウェアのバージョン 2.0 の実装が含まれています。
を選択して、InvokeMethodを実行します。 Raspberry Pi 上のアプリは、ソリューション ダッシュボードに受信確認を送信します。 その後、ファームウェアの新しいバージョンをダウンロードして、ファームウェアの更新プロセスを開始します。
を表示する
ファームウェアの更新プロセスを観察する
ファームウェアの更新プロセスは、デバイス上で実行され、報告されたプロパティをソリューション ダッシュボードで表示することで確認できます。
Raspberry Pi で更新プロセスの進行状況を表示できます。
を表示する
注
リモート監視アプリは、更新が完了すると自動的に再起動します。 コマンド
ps -ef
を使用して、実行されていることを確認します。 プロセスを終了する場合は、プロセス ID でkill
コマンドを使用します。デバイスによって報告されたファームウェア更新プログラムの状態は、ソリューション ポータルで確認できます。 次のスクリーンショットは、更新プロセスの各ステージの状態と期間、および新しいファームウェア バージョンを示しています。
を表示する
ダッシュボードに戻った場合は、ファームウェアの更新後もデバイスがテレメトリを送信していることを確認できます。
警告
Azure アカウントでリモート監視ソリューションを実行したままにした場合は、実行時間に対して課金されます。 リモート監視ソリューションの実行中の使用量の削減の詳細については、「デモ用の Azure IoT Suite 事前構成済みソリューションの構成を参照してください。 Azure アカウントの使用が完了したら、構成済みのソリューションを Azure アカウントから削除します。
次のステップ
Azure IoT に関するその他のサンプルとドキュメントについては、Azure IoT デベロッパー センターの を参照してください。