温度を測定する - 仮想IoTハードウェア
このレッスンのこの部分では、仮想IoTデバイスに温度センサーを追加します。
仮想ハードウェア
仮想IoTデバイスは、シミュレートされたGroveデジタル湿度および温度センサーを使用します。これにより、このラボは物理的なGrove DHT11センサーを使用するRaspberry Piと同じになります。
センサーは温度センサーと湿度センサーを組み合わせたものですが、このラボでは温度センサーコンポーネントにのみ関心があります。物理的なIoTデバイスでは、温度センサーは温度の変化に応じて抵抗の変化を感知するサーミスタです。温度センサーは通常、測定された抵抗を内部的に摂氏(またはケルビン、華氏)での温度に変換するデジタルセンサーです。
CounterFitにセンサーを追加する
仮想湿度および温度センサーを使用するには、2つのセンサーをCounterFitアプリに追加する必要があります。
タスク - CounterFitにセンサーを追加する
湿度および温度センサーをCounterFitアプリに追加します。
-
temperature-sensor
というフォルダーにapp.py
という単一のファイルとPython仮想環境を持つ新しいPythonアプリをコンピューターに作成し、CounterFitのpipパッケージを追加します。⚠️ 必要に応じて、レッスン1のCounterFit Pythonプロジェクトの作成と設定の手順を参照できます。
-
DHT11センサー用のCounterFitシムをインストールするための追加のPipパッケージをインストールします。仮想環境がアクティブなターミナルからこれをインストールすることを確認してください。
pip install counterfit-shims-seeed-python-dht
-
CounterFitウェブアプリが実行されていることを確認します。
-
湿度センサーを作成します:
-
SensorsペインのCreate sensorボックスで、Sensor typeボックスをドロップダウンしてHumidityを選択します。
-
UnitsをPercentageに設定したままにします。
-
Pinが5に設定されていることを確認します。
-
Addボタンを選択して、ピン5に湿度センサーを作成します。
湿度センサーが作成され、センサーリストに表示されます。
-
-
温度センサーを作成します:
-
SensorsペインのCreate sensorボックスで、Sensor typeボックスをドロップダウンしてTemperatureを選択します。
-
UnitsをCelsiusに設定したままにします。
-
Pinが6に設定されていることを確認します。
-
Addボタンを選択して、ピン6に温度センサーを作成します。
温度センサーが作成され、センサーリストに表示されます。
-
温度センサーアプリをプログラムする
温度センサーアプリは、CounterFitセンサーを使用してプログラムできます。
タスク - 温度センサーアプリをプログラムする
温度センサーアプリをプログラムします。
-
temperature-sensor
アプリがVS Codeで開かれていることを確認します。 -
app.py
ファイルを開きます。 -
アプリをCounterFitに接続するために、次のコードを
app.py
の先頭に追加します:from counterfit_connection import CounterFitConnection
CounterFitConnection.init('127.0.0.1', 5000) -
必要なライブラリをインポートするために、次のコードを
app.py
ファイルに追加します:import time
from counterfit_shims_seeed_python_dht import DHTfrom seeed_dht import DHT
ステートメントは、counterfit_shims_seeed_python_dht
モジュールのシムを使用して仮想Grove温度センサーと対話するためのDHT
センサークラスをインポートします。 -
仮想湿度および温度センサーを管理するクラスのインスタンスを作成するために、上記のコードの後に次のコードを追加します:
sensor = DHT("11", 5)
これは、仮想Digital HumidityおよびTemperatureセンサーを管理する
DHT
クラスのインスタンスを宣言します。最初のパラメータは、使用されているセンサーが仮想DHT11センサーであることをコードに伝えます。2番目のパラメータは、センサーがポート5
に接続されていることをコードに伝えます。💁 CounterFitは、
DHT
クラスが作成されたときに指定されたピンに湿度センサーを接続し、次のピンで動作する温度センサーに接続することによって、この組み合わせた湿度および温度センサーをシミュレートします。湿度センサーがピン5にある場合、シムは温度センサーがピン6にあると予想します。 -
温度センサーの値をポーリングしてコンソールに出力する無限ループを上記のコードの後に追加します:
while True:
_, temp = sensor.read()
print(f'Temperature {temp}°C')sensor.read()
の呼び出しは、湿度と温度のタプルを返します。温度値のみが必要なので、湿度は無視されます。次に、温度値がコンソールに出力されます。 -
温度レベルを継続的にチェックする必要がないため、ループの最後に10秒のスリープを追加します。スリープはデバイスの消費電力を削減します。
time.sleep(10)
-
VS Codeターミナルから仮想環境がアクティブな状態で、次のコマンドを実行してPythonアプリを実行します:
python app.py
-
CounterFitアプリから、アプリによって読み取られる温度センサーの値を 変更します。これを行うには2つの方法があります:
-
温度センサーのValueボックスに数値を入力し、Setボタンを選択します。入力した数値がセンサーによって返される値になります。
-
Randomチェックボックスをオンにし、MinおよびMax値を入力してからSetボタンを選択します。センサーが値を読み取るたびに、MinとMaxの間のランダムな数値が読み取られます。
設定した値がコンソールに表示されるはずです。ValueまたはRandom設定を変更して、値の変化を確認します。
(.venv) ➜ temperature-sensor python app.py
Temperature 28.25°C
Temperature 30.71°C
Temperature 25.17°C -
💁 このコードはcode-temperature/virtual-deviceフォルダーにあります。
😀 温度センサーのプログラムは成功しました!