Sonos og Google Nest som ét anlæg i Home Assistant
Sådan samler jeg en Sonos i stuen og fire Google Nest Audio-højttalere med scripts i Home Assistant. Uden broer fra tredjepart og uden abonnement.
Sonos og Google er konkurrenter, og deres apps taler ikke sammen. Har du en Sonos i stuen og Google Nest Audio i soveværelset og køkkenet, har du to separate musiksystemer, der ikke kan styres samlet.
Jeg levede med det i to år, før det blev irriterende nok til, at jeg gjorde noget ved det.
Løsningen var ikke en app, der bygger bro, eller et abonnement. Det var Home Assistant.
Udstyret
Stuen: en Sonos-højttaler (media_player.stue).
Resten er Google Nest Audio eller Google Home:
- Soveværelse (
media_player.hojtaler) - Kontor (
media_player.hojtaler_mia) - Køkken (
media_player.hojtaler_kokken) - Værksted (
media_player.vaerksted)
Fem højttalere, to mærker og ingen indbygget kompatibilitet.
Sådan får HA fat i begge
Sonos-integrationen er indbygget i HA og solid. Den finder selv højttaleren på det lokale netværk og er ikke afhængig af Sonos' cloud til almindelig afspilning.
Google-højttalerne kommer ind via integrationen Google Home (indbygget) eller den ældre Cast, som begge findes på HA's liste over integrationer. Begge giver media_player-entiteter med de almindelige handlinger til afspilning, pause og lydstyrke.
Fordi HA lægger det hele i det samme media_player-domæne, kan du styre en Sonos og en Google-højttaler med de samme handlinger:
service: media_player.volume_set
data:
volume_level: 0.3
target:
entity_id:
- media_player.stue
- media_player.hojtaler
HA er ligeglad med, at de er to forskellige mærker.
De tre scripts
Jeg har bygget tre scripts, der behandler alle fem højttalere som ét anlæg:
Pause alle:
alias: alle_hojtalere_pause
sequence:
- service: media_player.media_pause
target:
entity_id:
- media_player.stue
- media_player.hojtaler
- media_player.hojtaler_mia
- media_player.hojtaler_kokken
- media_player.vaerksted
Stop alle:
alias: alle_hojtalere_stop
sequence:
- service: media_player.media_stop
target:
entity_id:
- media_player.stue
- media_player.hojtaler
- media_player.hojtaler_mia
- media_player.hojtaler_kokken
- media_player.vaerksted
Sæt lydstyrken på alle (tager et niveau som input):
alias: alle_hojtalere_volumen
fields:
volume:
description: Volumen (0.0–1.0)
default: 0.3
sequence:
- service: media_player.volume_set
data:
volume_level: "{{ volume }}"
target:
entity_id:
- media_player.stue
- media_player.hojtaler
- media_player.hojtaler_mia
- media_player.hojtaler_kokken
- media_player.vaerksted
Jeg kalder dem fra automationer, knapper på dashboardet og stemmekommandoer. Lydstyrke-scriptet er især nyttigt om aftenen: én stemmekommando sætter alt til 15 % uden at skulle finde de enkelte højttalere i tre forskellige apps.
Praktiske automationer
Når alle tager af sted: når den sidste person går, sættes alt, der spiller, på pause:
alias: Forlader — pause alle højttalere
trigger:
- platform: state
entity_id: group.family
to: not_home
condition:
- condition: template
value_template: >
{{ states.media_player | selectattr('state', 'eq', 'playing') | list | count > 0 }}
action:
- service: script.alle_hojtalere_pause
Når TV'et tændes: skru automatisk ned for højttaleren i køkkenet, når TV'et starter:
alias: TV tændt — sænk køkkenhøjttaleren
trigger:
- platform: state
entity_id: media_player.samsung_tv
to: "on"
action:
- service: media_player.volume_set
data:
volume_level: 0.15
target:
entity_id: media_player.hojtaler_kokken
Styring fra dashboardet
Jeg har et custom:mushroom-chips-card (HACS, Mushroom-pakken) på forsiden, så alt kan styres med ét tryk:
type: custom:mushroom-chips-card
chips:
- type: action
icon: mdi:pause
tap_action:
action: call-service
service: script.alle_hojtalere_pause
- type: action
icon: mdi:stop
tap_action:
action: call-service
service: script.alle_hojtalere_stop
- type: action
icon: mdi:volume-medium
tap_action:
action: call-service
service: script.alle_hojtalere_volumen
data:
volume: 0.2
Tre chips, der styrer alle højttalere. De sidder ved siden af styringen af WiZ-lyset og er blevet en af de mest brugte dele af dashboardet.
Det, HA ikke løser
Sonos og Google kan stadig ikke grupperes sammen, heller ikke via HA. Du kan ikke sende lyd fra en Sonos til en Google-højttaler, fordi de bruger forskellige protokoller til streaming (RAAT og Cast). HA kan styre dem på samme tid, men kan ikke synkronisere afspilningen.
Til synkroniseret musik bruger jeg enten Sonos alene (med Sonos' egne grupper) eller Google alene (via Cast). Scripts i HA er til styring, ikke til streaming.
Den anden mangel er TTS. HA's TTS kan sende til enhver media_player, men i praksis afbryder den afspilningen og starter den ikke igen. På Sonos kan man komme uden om det med tts.speak og indstillingen announce. For Google-højttalere findes der ikke noget tilsvarende endnu. Jeg sender derfor kun talte beskeder til rum, hvor der normalt ikke spiller musik.
Trods begrænsningerne er det virkelig nyttigt at have fem højttalere fra to producenter samlet ét sted. Det daglige skift mellem to apps var irriterende i det stille, og nu er det bare væk.
Nye indlæg direkte i din RSS-læser: følg med via RSS I Google-søgning: vælg szimnau.dk som foretrukken kilde