Home AssistantとSwitchBotで構築するオーディオスマートホーム

2025.07.26

| Web・ガジェット

Marantz PM6006のInputの切り替えをめんどくさがって今までミキサーでまとめていたんだけど、ちょっと思うところがあってきちんと切り替えるようにした。

そうすると、当たり前なんだけどLP/CD/Networkでそれぞれ切り替えないといけない。デスクからアンプのところまでは2歩ぐらいなのだけどデスクにいながら切り替えたい。(レコードからNetworkとか)

1.SwitchBot スマートリモコン ハブ3

まずは手っ取り早く、Marantz PM6006のリモコンを登録してSwitchBotから操作できるようにする。これで少なくともiPhoneやそういうデバイスから操作できる。ここまでならリモコンで良くね?って感じ。

2.Stream Deckで1ボタンでやる。

次はStream DeckからSwitchBotのシーンを呼び出してワンボタンで切り替えられるようにする。

右下の3つ。CD/PHONO/Roon。

Stream Deckの拡張にSwitchBotとの連携も簡単にできるものがあるけどそれだとデバイスのOn/Offのトグルのみに限られてしまう。

だでSwitchBot APIからシーンIDを送れるシェルを作り、それをAutomatorでAPPにする。

#!/bin/bash
TOKEN="XXXXXXXXX"
SCENE_ID="XXXXXXXXX"

curl -X POST "https://api.switch-bot.com/v1.0/scenes/${SCENE_ID}/execute" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json"

osascript -e 'display notification "PM6006_WiiM を実行しました" with title "SwitchBot"'

3.Home Assistantの導入(自動で切り替わってほしい)

ここまででもまあリモコンで良くないか?感があるので、(デスクからリモコンを排除できるメリットやスマホやタブレットから操作できるメリットはある)

Roonを再生させたらアンプが勝手にNetworkに切り替わる
LPレコードで再生を始めたらアンプがPHONOに切り替わる

上記2つをやりたい。Roonを再生するのはデスクやゴロゴロしているとき&レコードを再生するのはレコードプレーヤーの再生ボタンを押さなきゃいけないのでそこまでいく。

ここまでくると、複数条件かつサービス連携になってくる。というわけで様々なスマートホームデバイスを一括管理できるHome Assistantを導入。

Home Assistantのメリット?

SwitchBot公式アプリだけだと「手動トリガー」が基本
→例えば「レコードを再生したら自動でアンプ入力を切り替える」みたいな条件付き自動化はアプリ単体ではできない。

複数サービスの連携ができる万能ハブが欲しかった
→SwitchBot、Tapo、Roon、Apple Home、…色んなスマート家電やオーディオ機器を、一元管理・連携したかった。

ローカルで動くから、反応が速くて安定するし自由度も高い
→クラウド依存じゃないので遅延や外部要因が減り、カスタマイズもやりたい放題。

APIやWebhook経由で細かい「もし◯◯なら△△する」が無限に作れる
→オーディオ以外のスマートホーム化にも拡張しやすい

Home Assistantを空いてる常時起動PCにインストールする

(ここがハードル高くない?)うちは余った自作PCをマイクラサーバー用に動かしていたのでそこにVirtualBoxでインストールしました。ミニPCやラズパイあたりがベターかもしれない。

うちのレコードプレーヤー(Audio-Technica AT-LP70XBT BS)はリモコンがないタイプだったので、再生/停止情報を何かしらどこかで判断しないといけない。

というわけで、電力がWi-Fiでとれるスマートプラグをかまします。

リアルタイムで数字と取るにはWi-Fiタイプがいい(?)らしく、Bluetooth接続だとラグができる&Home Assistantを入れたPCに届かないといけない。のでSwichbotのスマートプラグではなくTP-Linkのほうを選びました。(もともと使ってたんだけど。安いから)

Home Assistantでやりたいこと

  • Roon再生開始でアンプ自動切替
    • Roon再生開始→WiiM Pro経由で音楽再生→PM6006の入力自動切替
  • レコードプレーヤーの電源ON検知でアンプ自動切替
    • Tapoスマートプラグの電流センサーで「ON」を検知→PM6006の入力をLP(PHONO)に自動切替

4. 入力切替の完全自動化

SwitchBotシーンIDとHome AssistantのREST API連携

Home Assistantからシーンを動作させられるように。

Roon API(Roon Extension)

これはRoonの再生状態をHome Assistantで取得できるようにする拡張機能で、「Roonの再生が始まったらアンプを自動で切り替える」といった連携自動化を可能にする。

ここもちょっとめんどくさいんだけど、先程Home AssistantをいれたPCとかに同じ用にRoon Extensionを動くようにDockerを使って起動させておく。

自動化のためのyamlを書く。

# configuration.yaml の一部
rest_command:
  pm6006_wiim:
    url: "https://api.switch-bot.com/v1.0/scenes/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/execute"
    method: POST
    headers:
      Authorization: "Bearer YOUR_SWITCHBOT_TOKEN"
      Content-Type: "application/json"
  pm6006_lp:
    url: "https://api.switch-bot.com/v1.0/scenes/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/execute"
    method: POST
    headers:
      Authorization: "Bearer YOUR_SWITCHBOT_TOKEN"
      Content-Type: "application/json"

# automation.yaml の例
- alias: Roon再生可能になったらPM6006をWiiMに
  trigger:
    - platform: state
      entity_id: sensor.roon_state
      to: "playing"
      for:
        seconds: 2
  action:
    - service: rest_command.pm6006_wiim
  mode: single
- alias: LPプレーヤーが動いたらPM6006をLPに
  trigger:
    - platform: numeric_state
      entity_id: sensor.recordplayer_current
      above: 0.056
      for:
        seconds: 5
  action:
    - service: rest_command.pm6006_lp
  mode: single
- alias: LPプレーヤーが停止したらPM6006をWiiMに戻す
  trigger:
    - platform: numeric_state
      entity_id: sensor.recordplayer_current
      below: 0.056
      for:
        seconds: 10
  condition:
    - condition: state
      entity_id: sensor.roon_state
      state: "playing"
  action:
    - service: rest_command.pm6006_wiim
  mode: single

まとめ

どちゃくそ大変な構築でした。でもSwitchBotハブとPCがあれば基本構築できるはず。これが終わったら便利な世の中が待ってるんだ…の気持ちで頑張った。ありがとうChatGPT。

今回はアンプの切り替えにしか使っていないけど、

帰宅したら(人感センサー(ハブ3))→Roon再生スタート
とかとか(なんだろ)
とかも色々できるのです。

まあ楽しかったです。


使っている主な機器・構成

Comment

メールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。