【Raspberry Pi】【Node-RED】Sense HAT Emulator から温度を取得する
Amazon で Raspberry Pi 4 を購入しました。そこでNode-REDで温度センサから温度を取得してみたい…が温度センサがない。そんなとき、ラズパイの画面をいろいろ触ってたら「Sense HAT Emulator」というの発見!このエミュレータから Node-RED を使って温度を取得する方法を紹介します。
途中、Node-RED のノードを作成する必要があり、そこは大変かもしれません。
環境
Raspberry Pi 4 は以下のものを購入しました。OS や 様々なアプリがインストールされた状態で来るので、簡単に始められます。
ここでは、Raspberry Pi の環境構築や Node-RED のインストールについては触れません。Raspberry Pi の画面または別PCで Node-RED を見れるようにしておくことを前提とします。以下が確認した環境です(インストールされてなければ【参考HP】を参照)。
Sense HAT Emulator を起動
まず Sense HAT Emulator を起動します。
[メニュー] > [プログラミング] > [Sense HAT Emulator] と選択します。
起動すると以下のような画面が出ます。
サンプルコードを動かす
この Sense HAT Emulator には、温度を取得して、画面に反映されるサンプルコードがデフォルトで入ってます。Python で実装されているものを見てみましょう。
[File] > [Open example] > [Simple] > [temperature.py] を選択します。
すると以下の画面が表示されます。これを起動すると温度の取得が始まります。[Run] を押してください。
取得した温度がどこに反映されるかというと、Sense HAT Emulator のアプリ画面に反映されます。以下の赤枠のバーを上下させてみてください。画面左の赤と青の□が変化します。
Node-RED で温度を取得
とその前に、Noed-RED では python を呼び出すノードがないため、自ら作成する必要がある。少し難しいですが、以下のページをもとに作成してください。
Node-RED+python-shellでNode-REDからpythonを呼び出すノードを自作する
作成すると以下のようにノードができます。
これ準備完了です。デバッグで出力するまでのフローを作成します。まず最初に、「inject」「debug」「python shell」をそれぞれ持ってきます。
それぞれをつなぎます。
「inject」は最初「タイムスタンプ」になっているので、「文字列」を選択し、「温度を測定します」を入れておきます(文言は何でもよいです)。「完了」を押して保存します。
次に今回のやりたかった温度取得の処理を入れます。python のノードを選択し、編集します。入力が終わったら「完了」を押し保存します。
- 名前:なんでもOK(以下では「getTemperature」)
- コード
from sense_emu import SenseHat
def getTemperature():
sense = SenseHat()
return sense.temp
print(getTemperature())
これで設定完了です。画面右上の「デプロイ」を押し内容を反映します。
実行
では実行します。デバッグ画面で温度を見たいため、右上の虫のボタンを押し、デバッグ画面を表示します(①)。その後、作ったフローの端のボタンを押します(②)。
実行すると温度の数値が表示されます。これで終了です。
本当に取得できてるの?
これでは本当に取得してるのか?と疑っている方は、Node-RED で繰り返し動作させるの設定をして、Sense HAT Emulator で温度を変化させてみましょう。
「inject」のノードを選択し、「繰り返し」から「指定した時間間隔」を選択します。時間を1秒にしておきます。
再度、画面右上のデプロイを押して反映します。そうすると1秒ごとにデバッグのメッセージが表示されます。そして、Raspberry Pi 側の画面で Sense HAT Emulator で温度を変えてみましょう。
そうすると、以下のように温度が変化しているのが分かります。ちゃんと取得できてますね!
参考HP
Node-RED のインストールや設定がなされていなければ
Raspberry PiにおけるNode-REDの活用について
Node-RED をはじめてつかう人は