Raspberry PiからセンサデータをPython paho-mqttでパブリッシュ

公開

Raspberry Pi にI2C接続された環境センサ(BME280やBH1750)の計測値を、Python paho-mqtt クライアントを使って Home Assitant 内の MQTT ブローカーへパブリッシュ、ダッシュボードで表示できるようにします。

paho MQTT Python Clientの導入

今回MQTTクライアントをセットアップする、Raspberry Pi Model 1BのシステムとPythonの概要は、次の通り。

まず、pipパッケージマネージャで、paho-mqttパッケージをインストールします。

 

ワンライナー一発パブリッシュをテスト

上述のプロジェクトページ下方に記載されている様々な実行方法のうち、 one-shot manner を謳うPublishモジュールを利用してみましょう。

前回構築した、Home Assistant MQTTブローカーの情報をセットし、例に沿って publish.multiple させます。

Home Assistant MQTTブローカー側で、トピックのリッスン機能でメッセージを受信できました。

図1.テストメッセージの受信

図1.テストメッセージの受信

2組の辞書型計測値をまとめてパブリッシュ

このRaspberry Piに繋いでいるのは、I2Cアドレス違いにした2組のBME280温湿度気圧センサ、BH1750照度センサペアです。

当時の記事にあるように、センサ計測からThingSpeak送信までを担うPythonスクリプトでは、計測値を以下の辞書型データに収めるようにしてありました。

tmpfs に上書き出力している実行結果は、このようになっています。

今回はこの2個の辞書型データを1つにまとめ、JSON型へ変換したものをパブリッシュすれば良いはず。

ダミー計測値データを貼り付けて、次のようなPythonスクリプトを組んでみました。既存のスクリプトへ織り込みやすいよう、関数化しています。

Home Assistant側では、JSONオブジェクトの塊を受信することができました。

図2.ダミー計測値メッセージの受信

図2.ダミー計測値メッセージの受信



 

既存のスクリプトへの織り込み

これを既存のスクリプトへ組み込んだ全体像は、以下の通りです。

実行結果を確認。

これで、Python paho MQTT Clientによるパブリッシュは実現できたので、次ページではHome Assistant側の受信データ処理へ進みます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA