【Raspberry Pi】【Node-RED】Sense HAT Emulator から温度を取得する

AmazonRaspberry 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】を参照)。

  • raspbian:10.6
  • Node.js:v10.21.0
  • Node-RED:v1.0.6
  • python:2.7.16
  • python-shell:2.0.3
  • Sense HAT Emulator:1.1

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 をはじめてつかう人は

 Node-RED入門

python-shell のインストールや Node-RED と python-shell について知りたければ

 Node-RED+python-shellでNode-REDからpythonを呼び出すノードを自作する