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

公開

YAML設定の分割

Home AssistantにおいてMQTTの設定は、設定ファイル configuration.yaml への手打ちが基本。同じような設定の記述が延々と連なるので、デバイスが増えるにつれて目的の項目を見つけるのも一苦労。

そこで作業前にまず、現在のMQTTセンサの設定を別ファイルをインクルードする構成へと、変更しようと思います。

File Editorプラグインで普段編集している設定ファイル configuration.yaml は、 config/下にあります。

図3.ターミナルで見るファイル構成

図3.ターミナルで見るファイル構成

configuration.yaml でインクルードを使うには、単純にその項目を単一の別ファイルへ切り出す方法と、

サブディレクトリ内にある複数のYAMLファイルを全てまとめてインクルードする方法があります。

当初は前者の方法でインクルードしていたものの、最終的にはインクルードファイルを分割できる後者の形に落ち着くことに。

いずれの場合でも設定ファイルの編集後は、開発ツールにあるYAML設定の再読込で反映させる必要があります。

図4.YAML設定の再読込

図4.YAML設定の再読込

あまりにも壮大で知りたいことが見つけられない公式ドキュメントに閉口する中、設定ファイルの仕組みについてはこちらの記事が大変参考になりました(Great Tnx!!)。

 

pahoから送られたJSONを読み解く設定

設定ファイルの下準備が終わったので早速本題。

Raspberry Piから送られてきたJSONオブジェクトから、その要素の1つ(温度)を取り出すエンティティは次の通り。

図3のように送られてきたJSONオブジェクトの0番目のTempキーの値を取り出し、小数点2桁で切り揃える value_template の記述がキモでした。その詳しい作法についてはこちらから。

また、 device_class でセンサデータの種類をここで宣言しておくことにより、ダッシュボードでの利用時に正しいアイコンが予め選択されるようになるようです。利用可能なセンサデバイスクラスの一覧はこちらを参照

後は要素の数だけ同じエンティティを記述すれば完成です。

 

ダーッシュボードへエンティティカードを追加

YAMLに記述したエンティティをダッシュボードで見せるために、ダッシュボードの編集モードでエンティティカードを追加します。

図5.エンティティカードの設定

図5.エンティティカードの設定

各エンティティ項目は、それぞれ右の 編集 ボタンを押して編集することができます。編集後は 戻る アイコンを押してカード全体のエディタへ戻らなくてはならず、右下の 保存 をクリックしてしまうと、カードエディタ全体が閉じてしまうので注意。

図6.エンティティエディタ

図6.エンティティエディタ

エンティティカードと各エンティティの遷移の往復が面倒な場合は、左下の コードエディタを表示 をクリックして直接編集するのが良いでしょう。

図7.コードエディタモード

図7.コードエディタモード



 

次回は、システムの状態を取得・送信できるようにしてみたり、OpenWrtにも同じpython3-paho-mqttパッケージが存在するので、プラットフォームを跨いだ展開も楽しそうです。

コメントを残す

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

CAPTCHA