Raspberry Pi ADS-BレシーバPiAwareとHome Assistantの連携

公開

非力な初代Raspberry Piに鞭打って運用している、ADS-BレシーバPiAwareの稼働状態をREST APIを通じ、Home Assistantから監視できるようにします。

PiAwareが発信する稼働情報

Raspberry Piで組まれたFlightAwareデータフィーダー、PiAwareの死活監視はブラウザでPiAwareの 80/tcp ポートを開くこのページで行えます。

図1.PiAware Statusページ

図1.PiAware Statusページ

このページ自体は、ステータス情報が刻まれたJSONファイル status.json を再帰的に呼び出して更新する仕組み。

今回は、このJSONファイルをHome AssistantからRESTful APIを通じて取得、Template機能で必要な情報を抜き出して、エンティティとして使えるようにします。

 

SkyAwareが8080/tcpで発信する受信データ

一方、 8080/tcp ポートで提供されるSkyAwareも、普段見るマップページとは別にその情報をJSONファイルで取得することが可能です。

図2.SkyAwareマップページ

図2.SkyAwareマップページ

提供されるJSONファイルは以下の3つ。

aircraft.json

受信中の航空機データが収められています。

このデータを元に、受信中の航空機数も取得してみたいので、こちらのフォーラムスレッドを参考にシェルスクリプトを組んでみました。

今回は参照しませんが、他に以下の2つの情報がJSON形式で提供されています。

receiver.json

PiAwareのバージョン情報や、設置場所緯度経度情報などが記されています。

stats.json

これまで受信したデータの統計情報が、記されています。

Home Assistant: configuration.yamlの準備

今回はインテグレーションやアドオンのインストールは不要、Home Assistantの基本機能で実現可能ですが、設定ファイルをひたすら手打ちで記述することになります。

まず、 configuration.yaml に次の3つの項目を新設します。

  • rest:
  • template:
  • command_line:

新設した項目の下にずらずらと記述せず、それぞれのインクルードフォルダを設定して、その中にインクルードファイルの形で記述する構造を採ります(以前にmqtt項をインクルードした例はこちら)。

ファイル構造は以下の通り。

configuration.yaml には次の設定を追記しました。

以上を保存したら設定ファイルの再読込ではなく、一度Home Assistantを再起動して設定を反映させる方が確実です。

図3.YAML設定の再読込

図3.YAML設定の再読込

以降、インクルードファイルの追加や変更は、上図の各項目を再読込みさせるだけで反映されるので、その都度Home Assistantを再起動する必要はありません。

 

Home Assistant: 各インクルードファイルの記述

実際にどのように記述すれば良いのか、こちらのフォーラムスレッドが参考になりました。

それではまず、 rest: 項のインクルードファイルから。2機保有しているPiAwareそれぞれについて、 status.json の取得要領を記述しています(このとき、 name: は一意であることが必須なので注意)。

続いて、 rest: 項で取得したJSONオブジェクトから必要なデータを切り抜き、エンティティにする template: 項。

そして、 command_line: 項のインクルードファイルには、 aircraft.json から航空機数を算出し、エンティティとする定義を収めました。

エンティティ確認とカード作成例

以上のインクルードファイルの内容を反映させた後、追加したエンティティを確認してみます。

図4.PiAware 1号機 エンティティ一覧

図4.PiAware 1号機 エンティティ一覧

図5.PiAware 2号機 エンティティ一覧

図5.PiAware 2号機 エンティティ一覧

これらのエンティティをダッシュボードに表示させる、シンプルなエンティティカードを作成しました。

図6.PiAware エンティティカード設定

図6.PiAware エンティティカード設定

ダッシュボード上に表示させるとこんな感じに。かなり素っ気ないので、せめて状態を色表示できるようにするつもり。

図7.PiAware エンティティカード表示

図7.PiAware エンティティカード表示

ちなみにカード上のエンティティをクリックすると、履歴をグラフで確認できます。

図8.PiAware エンティティグラフ表示

図8.PiAware エンティティグラフ表示

せっかく、PiAwareからデータを取得する要領を会得できたので、次回はaircraft.jsonから受信中の航空機一覧をテーブル形式で表示するようなカードを作ってみたいと思います。

コメントを残す

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

CAPTCHA