次の方法で共有


Node.js を使用して Raspberry Pi 3 をリモート監視ソリューションに接続し、リモート ファームウェア更新を有効にする

このチュートリアルでは、Raspberry Pi 3 に対応した Microsoft Azure IoT スタート キットを使用して以下を行う方法について説明します。

  • クラウドと通信できる、気温・湿度リーダーを作成します。
  • リモート ファームウェア更新を有効にして実行し、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 ユーティリティが含まれています。 詳細については、「SSH Using Linux or Mac OS (Linux または Mac OS を使用した SSH 接続)」を参照してください。

必要なハードウェア

Raspberry Pi でコマンド ラインにリモート接続するためのデスクトップ コンピューター。

Raspberry Pi 3 用 Microsoft IoT スタート キットまたは同等のコンポーネント。 このチュートリアルでは、キット内の次のものを使用します。

  • Raspberry Pi 3
  • microSD カード (NOOBS をインストール済み)
  • USB ミニ ケーブル
  • イーサネット ケーブル
  • BME280 センサー
  • ブレッドボード
  • ジャンパー ワイヤ
  • 抵抗
  • LED

ソリューションのプロビジョニング

リモート監視の事前構成済みソリューションをアカウントにまだプロビジョニングしていない場合は、次の手順を実施します。

  1. Azure アカウントの資格情報を使用して azureiotsuite.com にサインインし、[]+ をクリックしてソリューションを作成します。
  2. [リモート監視] タイルで [選択] タイルを選択します。
  3. リモート監視の事前構成済みソリューションの [ソリューション名] を入力します。
  4. ソリューションのプロビジョニングに使用するリージョンサブスクリプションを選択します。
  5. [ソリューションの作成] をクリックして、プロビジョニング プロセスを開始します。 通常、このプロセスの実行までに数分かかります。

プロビジョニング プロセスが完了するまで待機します。

  1. プロビジョニング の状態を表示する、目的のソリューションのタイルをクリックします。
  2. Azure サービスが Azure サブスクリプションにデプロイされたら、 プロビジョニングの状態 を確認します。
  3. プロビジョニングが完了すると、状態が [準備完了]に変わります。
  4. タイルをクリックし、右側のウィンドウでソリューションの詳細を確認します。

注意

構成済みソリューションのデプロイの問題が発生している場合は、「azureiotsuite.com サイトでのアクセス許可」と FAQ を参照してください。 それでも問題が解決しない場合は、ポータルでサービス チケットを作成してください。

ソリューションの一覧に予測どおりに表示されない詳細がありますか? ユーザーの声のページで機能に関する提案をお寄せください。

警告

リモート監視ソリューションによって、Azure サブスクリプションの Azure サービスのセットがプロビジョニングされます。 デプロイによって現実のエンタープライズ アーキテクチャが反映されます。 不要な Azure 使用料金が発生しないよう、作業が終わったら azureiotsuite.com にある構成済みソリューションのインスタンスを削除します。 構成済みソリューションがもう一度必要になった場合は、簡単に再作成できます。 リモート監視ソリューション実行中の使用料金を削減する方法の詳細については、「Configuring Azure IoT Suite preconfigured solutions for demo purposes (デモの目的で Azure IoT Suite 構成済みソリューションを構成する)」をご覧ください。

ソリューション ダッシュボードの表示

ソリューションのダッシュボードでは、デプロイされたソリューションを管理できます。 テレメトリの表示、デバイスの追加、メソッドの呼び出しなどを行えます。

  1. プロビジョニングが完了し、事前構成済みソリューションのタイルに [準備完了] が表示されたら、[起動] を選択し、新しいタブでリモート監視ソリューション ポータルを開きます。

    Launch the preconfigured solution

  2. 既定では、ソリューション ポータルに "ダッシュボード" が表示されます。 ソリューション ポータルの他の領域に移動するには、ページの左側にあるメニューを使用します。

    Remote monitoring preconfigured solution dashboard

デバイスを追加する

デバイスが構成済みソリューションに接続するには、有効な資格情報を使用して IoT Hub に対してデバイス自身の ID を証明する必要があります。 デバイスの資格情報は、ソリューション ダッシュボードから取得できます。 このチュートリアルの後半で、クライアント アプリケーションにデバイスの資格情報を含めます。

まだこれを行っていない場合は、カスタム デバイスをリモート監視ソリューションに追加します。 ソリューション ダッシュボードで次の手順を完了します。

  1. ダッシュボードの左下隅にある [デバイスの追加]をクリックします。

    デバイスを追加する

  2. [カスタム デバイス] パネルで、[新規追加] をクリックします。

    カスタム デバイスを追加する

  3. [デバイス ID を自分で定義する] を選択します。 rasppi などのデバイス ID を入力します。[ID の確認] をクリックして、その名前をまだソリューションで使用していないことを確認し、[作成] をクリックしてデバイスをプロビジョニングします。

    デバイス ID を追加する

  4. デバイスの資格情報 (デバイス IDIoT Hubホスト名デバイス キー) をメモしておきます。 Raspberry Pi のクライアント アプリケーションがリモート監視ソリューションに接続する際に、この値が必要になります。 次に、 [Done] をクリックします。

    デバイスの資格情報を表示する

  5. ソリューション ダッシュボードのデバイスの一覧でデバイスを選択します。 次に、[デバイスの詳細] パネルで、[デバイスの有効化] をクリックします。 現在、デバイスの状態は [実行中] です。 リモート監視ソリューションはデバイスからテレメトリを受信し、デバイス上でメソッドを呼び出すことができます。

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 3 用 Microsoft Azure IoT スタート キットに含まれる BME280 センサーを使用して、テレメトリ データを生成します。 ここでは、LED を使用して、Raspberry Pi がソリューション ダッシュボードからのメソッドの呼び出しをいつ処理するかを確認します。

ブレッドボード上のコンポーネントは次のとおりです。

  • 赤色 LED
  • 220 Ω の抵抗 (赤色、赤色、茶色)
  • BME280 センサー

次の図は、ハードウェアを接続する方法を示しています。

Raspberry Pi 用のハードウェア設定

次の表は、Raspberry Pi からブレッドボード上のコンポーネントへの接続の概要です。

Raspberry Pi ブレッドボード Color
GND (ピン 14) LED 陰極ピン (18A) パープル
GPCLK0 (ピン 7) 抵抗 (25A) オレンジ
SPI_CE0 (ピン 24) CS (39A)
SPI_SCLK (ピン 23) SCK (36A)
SPI_MISO (ピン 21) SDO (37A) White
SPI_MOSI (ピン 19) SDI (38A) [緑]
GND (ピン 6) GND (35A) Black
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 のタスク バーでは、モニターのようなアイコンを使用して、[Terminal (ターミナル)] ユーティリティを起動できます。

SSH を使用してサインインする

Raspberry Pi へのコマンド ライン アクセスに SSH を使用できます。 「SSH (Secure Shell)」では、Raspberry Pi で SSH を構成する方法と、Windows または Linux および Mac OS から接続する方法を説明しています。

pi というユーザー名と raspberry というパスワードでサインインします。

省略可能: Raspberry Pi でフォルダーを共有する

必要に応じて、デスクトップ環境を使用して Raspberry Pi でフォルダーを共有することができます。 フォルダーを共有すると、nanovi を使用しなくても、任意のデスクトップ テキスト エディター (Visual Studio CodeSublime Text など) を使用して、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 をインストールする

まだ Node.js をインストールしていない場合は、Raspberry Pi にインストールします。 Node.js 用 IoT SDK には、Node.js バージョン 0.11.5 以降が必要です。 次の手順では、Node.js v6.10.2 を Raspberry Pi にインストールする方法を示しています。

  1. 次のコマンドを使用して Raspberry Pi を更新します。

    sudo apt-get update
    
  2. 次のコマンドを使用して、Node.js のバイナリを Raspberry Pi にダウンロードします。

    wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-armv7l.tar.gz
    
  3. 次のコマンドを使用して、バイナリをインストールします。

    sudo tar -C /usr/local --strip-components 1 -xzf node-v6.10.2-linux-armv7l.tar.gz
    
  4. 次のコマンドを使用して、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/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 からのテレメトリを表示する

ファームウェアの更新を開始する

ファームウェアの更新プロセスでは、デバイス クライアント アプリケーションの更新バージョンを Raspberry Pi にダウンロードおよびインストールします。 ファームウェアの更新プロセスの詳細については、「IoT Hub を使用したデバイス管理の概要」でファームウェア更新パターンの説明を参照してください。

ファームウェア更新プロセスを開始するには、デバイスでメソッドを呼び出します。 このメソッドは非同期で、更新プロセスの開始直後に制御を返します。 デバイスは、報告されるプロパティを使用して、ソリューションに更新の進行状況を通知します。

ソリューション ダッシュボードから、Raspberry Pi でメソッドを呼び出します。 Raspberry Pi は初めてリモート監視ソリューションに接続したときに、サポートしているメソッドに関する情報を送信します。

  1. ソリューションのダッシュボードで、[デバイス] をクリックし、[デバイス] ページにアクセスします。 [デバイス一覧] で Raspberry Pi を選択します。 次に、[方法] を選択します。

    ダッシュボードでデバイスを一覧表示する

  2. [メソッドの呼び出し] ページで、[方法] ドロップダウンの [InitiateFirmwareUpdate] を選択します。

  3. [FWPackageURI] フィールドに、https://raw.githubusercontent.com/Azure-Samples/iot-remote-monitoring-node-raspberrypi-getstartedkit/master/advanced/2.0/raspberry.js を入力します。 このファイルには、ファームウェアのバージョン 2.0 の実装が含まれています。

  4. InvokeMethod を選択します。 Raspberry Pi 上のアプリは、ソリューション ダッシュボードに受信確認を送信します。 次に、ファームウェアの新しいバージョンをダウンロードしてファームウェアの更新プロセスが開始します。

    メソッドの履歴を表示する

ファームウェアの更新プロセスを監視する

ファームウェア更新プロセスは、デバイス上での実行中にソリューション ダッシュボードに報告されたプロパティを確認することで、監視できます。

  1. Raspberry Pi 上の更新プロセスの進行状況を確認できます。

    更新の進行状況を表示する

    注意

    更新が完了すると、リモート監視アプリがサイレント モードで再起動します。 ps -ef コマンドを使用して、アプリが実行されていることを確認してください。 プロセスを終了する場合は、kill コマンドとプロセス ID を使用します。

  2. ソリューション ポータルで、デバイスから報告されるファームウェア更新の状態を確認できます。 次のスクリーンショットでは、更新プロセスの各ステージの状態と期間、新しいファームウェアのバージョンなどを示しています。

    ジョブの状態を表示する

    ダッシュボードに戻ると、ファームウェア更新プログラムに従ってデバイスがまだテレメトリを送信していることを確認できます。

警告

Azure アカウントでリモート監視ソリューションを実行したままにしておくと、実行時間分が課金されます。 リモート監視ソリューション実行中の使用料金を削減する方法の詳細については、「Configuring Azure IoT Suite preconfigured solutions for demo purposes (デモの目的で Azure IoT Suite 構成済みソリューションを構成する)」をご覧ください。 ソリューションの使用を終了するときに、Azure アカウントから構成済みソリューションを削除してください。

次の手順

Azure IoT のその他のサンプルとドキュメントについては、「Azure IoT デベロッパー センター」をご覧ください。