Home AssistantとSwitchBotで構築するオーディオスマートホーム
2025.07.26
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再生スタート
とかとか(なんだろ)
とかも色々できるのです。
まあ楽しかったです。

使っている主な機器・構成
- オーディオシステム:Marantz PM6006、WiiM Pro、AT-LP70XBT、Cambridge Audio AXC25
- スマートデバイス:SwitchBot Hub 3、Tapo P110M(スマートプラグ)
- 自動化システム:Home Assistant(Windows)、Roon
Comment