Home Assistant に Pi-hole 用インテグレーションを導入して、 Alpine Linux仮想マシンで構築した Pi-hole 広告ブロック DNS を、 Home Assistant で監視したり、広告ブロックの一時無効化の操作もできるようにしました。
Pi-holeのAPIトークンを取得
まず、Home AssistantがPi-holeのAPIへアクセスするためのトークンを取得します。
Pi-holeのWeb UIの左メニュー Settings の中にあるAPIタブを開いて、下方の Show API Token を押下。
確認ポップアップの後、APIトークンが現れます。QR-Codeの下にある Raw API Token の文字列が後で必要になるので、控えておきましょう。
Home Assistant Pi-holeインテグレーションの導入
続いて、Home AssistantのWeb UIを開き、 設定 → デバイスとサービス で右下の追加ボタンからPi-hole用のインテグレーションを探してクリック。
Pi-holeへのアクセス情報を入力します。名前はHome Assistantの中で便宜的に使うものなので任意の名称で可。その下のロケーション項が分かりにくいのですが、これはPi-hole Web UIのURLの後ろの部分に相当。
|
1 |
http://192.168.51.11/admin/ |
次にAPIキーを聞かれるので、冒頭で控えておいたAPIトークン文字列を貼り付けます。
疎通に成功したら、適当なエリアをセットして完了。
Pi-holeインテグレーションで見えるもの
インテグレーションを通じて、Pi-holeの14のエンティティが利用可能に。その内容はPi-holeのWeb UIで見覚えのある内容の他、広告ブロックを入切できるスイッチがコントロールにあります。
エンティティ名の一覧は以下の通り。これをPi-holeのWeb UIに表示されている情報と突き合わせながら、Home Assistantのダッシュボード上での見せ方を考えます。
Home Assistant ダッシュボードにカードを作成
作ってみたのは、ブロック率のゲージと、各クエリ数を並べたエンティティカードによるグリッドカード。
エンティティカード部分はビジュアルエディタ非対応の項目を使っているので、このカード全体のコードを以下に示します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
square: false type: grid cards: - type: gauge entity: sensor.resolv11_ads_percentage_blocked_today name: ブロック率 - type: entities entities: - entity: switch.resolv11 secondary_info: last-updated name: 広告ブロック - type: divider - entity: sensor.resolv11_ads_blocked_today name: ブロックしたクエリ secondary_info: last-updated - entity: sensor.resolv11_dns_queries_cached name: キャッシュクエリ secondary_info: last-updated - entity: sensor.resolv11_dns_queries_forwarded name: 名前解決したクエリ secondary_info: last-updated - type: divider - entity: sensor.resolv11_dns_queries_today attribute: dns_queries_today secondary_info: last-updated name: 総クエリ数 - type: weblink name: Admin Web url: http://192.168.51.11/admin/ new_tab: true icon: mdi:pi-hole title: 'Pi-hole: resolv11' columns: 1 |
ブロック率やクエリ数の確認や、広告ブロックのスイッチ、そしてPi-hone Web UIへのハイパーリンクを載せています。











