Node.js を使用して Raspberry Pi 3 をリモート監視ソリューションに接続し、シミュレートされたテレメトリを送信する
このチュートリアルでは、Raspberry Pi 3 を使用してシミュレートした気温・湿度データをクラウドに送信する方法について説明します。 このチュートリアルでは次のものを使用します。
- サンプル デバイスを実装するための 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 ユーティリティが含まれています。 詳細については、「SSH Using Linux or Mac OS (Linux または Mac OS を使用した SSH 接続)」を参照してください。
必要なハードウェア
Raspberry Pi でコマンド ラインにリモート接続するためのデスクトップ コンピューター。
Raspberry Pi 3 用 Microsoft IoT スタート キットまたは同等のコンポーネント。 このチュートリアルでは、キット内の次のものを使用します。
- Raspberry Pi 3
- microSD カード (NOOBS をインストール済み)
- USB ミニ ケーブル
- イーサネット ケーブル
ソリューションのプロビジョニング
リモート監視の事前構成済みソリューションをアカウントにまだプロビジョニングしていない場合は、次の手順を実施します。
- Azure アカウントの資格情報を使用して azureiotsuite.com にサインインし、[]+ をクリックしてソリューションを作成します。
- [リモート監視] タイルで [選択] タイルを選択します。
- リモート監視の事前構成済みソリューションの [ソリューション名] を入力します。
- ソリューションのプロビジョニングに使用するリージョンとサブスクリプションを選択します。
- [ソリューションの作成] をクリックして、プロビジョニング プロセスを開始します。 通常、このプロセスの実行までに数分かかります。
プロビジョニング プロセスが完了するまで待機します。
- プロビジョニング の状態を表示する、目的のソリューションのタイルをクリックします。
- Azure サービスが Azure サブスクリプションにデプロイされたら、 プロビジョニングの状態 を確認します。
- プロビジョニングが完了すると、状態が [準備完了]に変わります。
- タイルをクリックし、右側のウィンドウでソリューションの詳細を確認します。
注意
構成済みソリューションのデプロイの問題が発生している場合は、「azureiotsuite.com サイトでのアクセス許可」と FAQ を参照してください。 それでも問題が解決しない場合は、ポータルでサービス チケットを作成してください。
ソリューションの一覧に予測どおりに表示されない詳細がありますか? ユーザーの声のページで機能に関する提案をお寄せください。
警告
リモート監視ソリューションによって、Azure サブスクリプションの Azure サービスのセットがプロビジョニングされます。 デプロイによって現実のエンタープライズ アーキテクチャが反映されます。 不要な Azure 使用料金が発生しないよう、作業が終わったら azureiotsuite.com にある構成済みソリューションのインスタンスを削除します。 構成済みソリューションがもう一度必要になった場合は、簡単に再作成できます。 リモート監視ソリューション実行中の使用料金を削減する方法の詳細については、「Configuring Azure IoT Suite preconfigured solutions for demo purposes (デモの目的で Azure IoT Suite 構成済みソリューションを構成する)」をご覧ください。
ソリューション ダッシュボードの表示
ソリューションのダッシュボードでは、デプロイされたソリューションを管理できます。 テレメトリの表示、デバイスの追加、メソッドの呼び出しなどを行えます。
プロビジョニングが完了し、事前構成済みソリューションのタイルに [準備完了] が表示されたら、[起動] を選択し、新しいタブでリモート監視ソリューション ポータルを開きます。
既定では、ソリューション ポータルに "ダッシュボード" が表示されます。 ソリューション ポータルの他の領域に移動するには、ページの左側にあるメニューを使用します。
デバイスを追加する
デバイスが構成済みソリューションに接続するには、有効な資格情報を使用して IoT Hub に対してデバイス自身の ID を証明する必要があります。 デバイスの資格情報は、ソリューション ダッシュボードから取得できます。 このチュートリアルの後半で、クライアント アプリケーションにデバイスの資格情報を含めます。
まだこれを行っていない場合は、カスタム デバイスをリモート監視ソリューションに追加します。 ソリューション ダッシュボードで次の手順を完了します。
ダッシュボードの左下隅にある [デバイスの追加]をクリックします。
[カスタム デバイス] パネルで、[新規追加] をクリックします。
[デバイス ID を自分で定義する] を選択します。 rasppi などのデバイス ID を入力します。[ID の確認] をクリックして、その名前をまだソリューションで使用していないことを確認し、[作成] をクリックしてデバイスをプロビジョニングします。
デバイスの資格情報 (デバイス ID、IoT Hubホスト名、デバイス キー) を書き留めます。 Raspberry Pi のクライアント アプリケーションがリモート監視ソリューションに接続する際に、この値が必要になります。 次に、 [Done] をクリックします。
ソリューション ダッシュボードのデバイスの一覧でデバイスを選択します。 次に、[デバイスの詳細] パネルで、[デバイスの有効化] をクリックします。 現在、デバイスの状態は [実行中] です。 リモート監視ソリューションはデバイスからテレメトリを受信し、デバイス上でメソッドを呼び出すことができます。
Raspberry Pi を準備する
Raspbian をインストールする
初めて Raspberry Pi を使用する場合、NOOBS を使用して、キットに含まれている SD カードに Raspbian オペレーティング システムをインストールする必要があります。 「Raspberry Pi Software Guide (Raspberry Pi ソフトウェア ガイド)」では、Raspberry Pi にオペレーティング システムをインストールする方法について説明しています。 このチュートリアルでは、Raspberry Pi に Raspbian オペレーティング システムをインストール済みであると想定しています。
注意
Raspberry Pi 3 用 Microsoft Azure IoT スタート キットに含まれる SD カードには、既に NOOBS がインストールされています。 このカードから Raspberry Pi を起動し、Raspbian OS をインストールできます。
ハードウェアの設定を完了するには、以下のことを行う必要があります。
- Raspberry Pi を、キットに含まれている電源装置に接続します。
- キットに含まれているイーサネット ケーブルを使用して、Raspberry Pi をネットワークに接続します。 別の方法として、Raspberry Pi 用のワイヤレス接続を設定することもできます。
これで、Raspberry Pi のハードウェアの設定が完了しました。
ターミナルにサインインまたはアクセスする
Raspberry Pi でターミナル環境にアクセスする方法は 2 とおりあります。
Raspberry Pi に接続されているキーボードとモニターがある場合は、Raspbian GUI を使用してターミナル ウィンドウにアクセスできます。
SSH を使用して、デスクトップ コンピューターから Raspberry Pi でコマンド ラインにアクセスします。
GUI でターミナル ウィンドウを使用する
Raspbian の既定の資格情報は、pi というユーザー名と raspberry というパスワードです。 GUI のタスク バーでは、モニターのようなアイコンを使用して、[Terminal (ターミナル)] ユーティリティを起動できます。
SSH を使用してサインインする
Raspberry Pi へのコマンド ライン アクセスに SSH を使用できます。 「SSH (Secure Shell)」では、Raspberry Pi で SSH を構成する方法と、Windows または Linux および Mac OS から接続する方法を説明しています。
pi というユーザー名と raspberry というパスワードでサインインします。
省略可能: Raspberry Pi でフォルダーを共有する
必要に応じて、デスクトップ環境を使用して Raspberry Pi でフォルダーを共有することができます。 フォルダーを共有すると、nano
や vi
を使用しなくても、任意のデスクトップ テキスト エディター (Visual Studio Code や Sublime Text など) を使用して、Raspberry Pi でファイルを編集できるようになります。
Windows でフォルダーを共有するために、Raspberry Pi で Samba サーバーを構成します。 別の方法として、デスクトップの SFTP クライアントで、組み込みの SFTP サーバーを使用することもできます。
サンプルをダウンロードして構成する
Raspberry Pi のリモート監視クライアント アプリケーションをダウンロードして構成できます。
Node.js をインストールする
まだ Node.js をインストールしていない場合は、Raspberry Pi にインストールします。 Node.js 用 IoT SDK には、Node.js バージョン 0.11.5 以降が必要です。 次の手順では、Node.js v6.10.2 を Raspberry Pi にインストールする方法を示しています。
次のコマンドを使用して 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
次のコマンドを使用して、Node.js v6.10.2 が正常にインストールされたことを確認します。
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/simulator/remote_monitoring.js
次の行を見つけます。
var connectionString = 'HostName=[Your IoT hub name].azure-devices.net;DeviceId=[Your device id];SharedAccessKey=[Your device key]';
プレースホルダーの値を、このチュートリアルの最初で作成し保存したデバイスと IoT Hub の情報に置き換えます。 変更を保存し (Ctrl + O キー、Enter キー)、エディターを終了します (Ctrl + X キー)。
サンプルを実行する
次のコマンドを実行して、サンプルの前提条件となるパッケージをインストールします。
cd ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/simulator
npm install
Raspberry Pi 上でサンプル プログラムを実行できます。 次のコマンドを入力します。
sudo node ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/simulator/remote_monitoring.js
次のサンプル出力は、Raspberry Pi 上のコマンド プロンプトに表示される出力の例です。
Ctrl + C キーを押してプログラムを終了します (終了のタイミングは任意)。
テレメトリを表示する
これで、Raspberry Pi からリモート監視ソリューションにテレメトリが送信されるようになりました。 テレメトリはソリューション ダッシュボードで確認できます。 また、ソリューション ダッシュボードから Raspberry Pi にメッセージを送信することもできます。
- ソリューション ダッシュボードに移動します。
- [表示するデバイス:] ボックスの一覧からデバイスを選択します。
- Raspberry Pi からのテレメトリがダッシュボードに表示されます。
デバイスを操作する
ソリューション ダッシュボードから、Raspberry Pi でメソッドを呼び出すことができます。 Raspberry Pi は、リモート監視ソリューションに接続したときに、サポートしているメソッドに関する情報を送信します。
ソリューションのダッシュボードで、[デバイス] をクリックし、[デバイス] ページにアクセスします。 [デバイス一覧] で Raspberry Pi を選択します。 次に、[方法] を選択します。
[メソッドの呼び出し] ページで、[方法] ボックスの一覧から [LightBlink] を選択します。
InvokeMethod を選択します。 シミュレーターから Raspberry Pi のコンソールにメッセージが出力されます。 Raspberry Pi 上のアプリから、ソリューション ダッシュボードに受信確認が送信されます。
ChangeLightStatus メソッドを使用して、LED のオンとオフを切り替えることができます。この際、LightStatusValue はオンの場合は 1 に設定され、オフの場合は 0 に設定されています。
警告
Azure アカウントでリモート監視ソリューションを実行したままにしておくと、実行時間分が課金されます。 リモート監視ソリューション実行中の使用料金を削減する方法の詳細については、「Configuring Azure IoT Suite preconfigured solutions for demo purposes (デモの目的で Azure IoT Suite 構成済みソリューションを構成する)」をご覧ください。 ソリューションの使用を終了するときに、Azure アカウントから構成済みソリューションを削除してください。
次の手順
Azure IoT のその他のサンプルとドキュメントについては、「Azure IoT デベロッパー センター」をご覧ください。