メインコンテンツまでスキップ

温度を測定する - 仮想IoTハードウェア

このレッスンのこの部分では、仮想IoTデバイスに温度センサーを追加します。

仮想ハードウェア

仮想IoTデバイスは、シミュレートされたGroveデジタル湿度および温度センサーを使用します。これにより、このラボは物理的なGrove DHT11センサーを使用するRaspberry Piと同じになります。

センサーは温度センサー湿度センサーを組み合わせたものですが、このラボでは温度センサーコンポーネントにのみ関心があります。物理的なIoTデバイスでは、温度センサーは温度の変化に応じて抵抗の変化を感知するサーミスタです。温度センサーは通常、測定された抵抗を内部的に摂氏(またはケルビン、華氏)での温度に変換するデジタルセンサーです。

CounterFitにセンサーを追加する

仮想湿度および温度センサーを使用するには、2つのセンサーをCounterFitアプリに追加する必要があります。

タスク - CounterFitにセンサーを追加する

湿度および温度センサーをCounterFitアプリに追加します。

  1. temperature-sensorというフォルダーにapp.pyという単一のファイルとPython仮想環境を持つ新しいPythonアプリをコンピューターに作成し、CounterFitのpipパッケージを追加します。

    ⚠️ 必要に応じて、レッスン1のCounterFit Pythonプロジェクトの作成と設定の手順を参照できます。

  2. DHT11センサー用のCounterFitシムをインストールするための追加のPipパッケージをインストールします。仮想環境がアクティブなターミナルからこれをインストールすることを確認してください。

    pip install counterfit-shims-seeed-python-dht
  3. CounterFitウェブアプリが実行されていることを確認します。

  4. 湿度センサーを作成します:

    1. SensorsペインのCreate sensorボックスで、Sensor typeボックスをドロップダウンしてHumidityを選択します。

    2. UnitsPercentageに設定したままにします。

    3. Pin5に設定されていることを確認します。

    4. Addボタンを選択して、ピン5に湿度センサーを作成します。

    湿度センサーの設定

    湿度センサーが作成され、センサーリストに表示されます。

    作成された湿度センサー

  5. 温度センサーを作成します:

    1. SensorsペインのCreate sensorボックスで、Sensor typeボックスをドロップダウンしてTemperatureを選択します。

    2. UnitsCelsiusに設定したままにします。

    3. Pin6に設定されていることを確認します。

    4. Addボタンを選択して、ピン6に温度センサーを作成します。

    温度センサーの設定

    温度センサーが作成され、センサーリストに表示されます。

    作成された温度センサー

温度センサーアプリをプログラムする

温度センサーアプリは、CounterFitセンサーを使用してプログラムできます。

タスク - 温度センサーアプリをプログラムする

温度センサーアプリをプログラムします。

  1. temperature-sensorアプリがVS Codeで開かれていることを確認します。

  2. app.pyファイルを開きます。

  3. アプリをCounterFitに接続するために、次のコードをapp.pyの先頭に追加します:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
  4. 必要なライブラリをインポートするために、次のコードをapp.pyファイルに追加します:

    import time
    from counterfit_shims_seeed_python_dht import DHT

    from seeed_dht import DHTステートメントは、counterfit_shims_seeed_python_dhtモジュールのシムを使用して仮想Grove温度センサーと対話するためのDHTセンサークラスをインポートします。

  5. 仮想湿度および温度センサーを管理するクラスのインスタンスを作成するために、上記のコードの後に次のコードを追加します:

    sensor = DHT("11", 5)

    これは、仮想Digital HumidityおよびTemperatureセンサーを管理するDHTクラスのインスタンスを宣言します。最初のパラメータは、使用されているセンサーが仮想DHT11センサーであることをコードに伝えます。2番目のパラメータは、センサーがポート5に接続されていることをコードに伝えます。

    💁 CounterFitは、DHTクラスが作成されたときに指定されたピンに湿度センサーを接続し、次のピンで動作する温度センサーに接続することによって、この組み合わせた湿度および温度センサーをシミュレートします。湿度センサーがピン5にある場合、シムは温度センサーがピン6にあると予想します。

  6. 温度センサーの値をポーリングしてコンソールに出力する無限ループを上記のコードの後に追加します:

    while True:
    _, temp = sensor.read()
    print(f'Temperature {temp}°C')

    sensor.read()の呼び出しは、湿度と温度のタプルを返します。温度値のみが必要なので、湿度は無視されます。次に、温度値がコンソールに出力されます。

  7. 温度レベルを継続的にチェックする必要がないため、ループの最後に10秒のスリープを追加します。スリープはデバイスの消費電力を削減します。

    time.sleep(10)
  8. VS Codeターミナルから仮想環境がアクティブな状態で、次のコマンドを実行してPythonアプリを実行します:

    python app.py
  9. CounterFitアプリから、アプリによって読み取られる温度センサーの値を変更します。これを行うには2つの方法があります:

    • 温度センサーのValueボックスに数値を入力し、Setボタンを選択します。入力した数値がセンサーによって返される値になります。

    • Randomチェックボックスをオンにし、MinおよびMax値を入力してからSetボタンを選択します。センサーが値を読み取るたびに、MinMaxの間のランダムな数値が読み取られます。

    設定した値がコンソールに表示されるはずです。ValueまたはRandom設定を変更して、値の変化を確認します。

    (.venv) ➜  temperature-sensor python app.py
    Temperature 28.25°C
    Temperature 30.71°C
    Temperature 25.17°C

💁 このコードはcode-temperature/virtual-deviceフォルダーにあります。

😀 温度センサーのプログラムは成功しました!