Multiroom Audio System

sendspin-bt-bridge
Home Assistant
Music Assistant
BT Bridge (per zone)
BT Adapter (hciX)
Bluetooth Speaker
User (terrace)

graph TB

  subgraph CTRL["  HA + MA โ€” Control Layer  "]
    direction LR
    HA["๐Ÿ   Home Assistant\nAutomation ยท Dashboards ยท Scenes"]
    MA["๐ŸŽต  Music Assistant\nStreaming ยท Playlists ยท EQ"]
    HA ---|"Media Players API"| MA
  end

  U["๐Ÿง‘โ€๐Ÿ’ป  User\nTerrace (outside building)"]
  U -.->|"Web UI / VPN"| HA

  subgraph Z1["  ๐Ÿ“  Living Room  "]
    direction TB
    BR1["๐Ÿ”—  sendspin-bt-bridge\nRaspberry Pi 5"]
    subgraph Z1AD["BT Adapters"]
      direction LR
      A1H0["แ›’ hci0"]
      A1H1["แ›’ hci1"]
    end
    SP1["๐Ÿ”Š JBL Charge 5"]
    SP2["๐Ÿ”Š Bose SoundLink Max"]
    SP3["๐Ÿ”Š Sony SRS-XB43"]
    SP4["๐Ÿ”Š Harman Kardon Aura"]
  end

  subgraph Z2["  ๐Ÿ“  Kitchen  "]
    direction TB
    BR2["๐Ÿ”—  sendspin-bt-bridge\nRaspberry Pi 4"]
    subgraph Z2AD["BT Adapters"]
      direction LR
      A2H0["แ›’ hci0"]
      A2H1["แ›’ hci1"]
    end
    SP5["๐Ÿ”Š JBL Flip 6"]
    SP6["๐Ÿ”Š UE Hyperboom"]
    SP7["๐Ÿ”Š Anker Soundcore Motion"]
  end

  subgraph Z3["  ๐Ÿ“  Conference Room  "]
    direction TB
    BR3["๐Ÿ”—  sendspin-bt-bridge\nMini PC / NUC"]
    subgraph Z3AD["BT Adapters"]
      direction LR
      A3H0["แ›’ hci0"]
      A3H1["แ›’ hci1"]
    end
    SP8["๐Ÿ”Š JBL PartyBox 110"]
    SP9["๐Ÿ”Š Sonos Move 2"]
    SP10["๐Ÿ”Š Bang & Olufsen A1"]
    SP11["๐Ÿ”Š Marshall Emberton III"]
  end

  subgraph Z4["  ๐Ÿ“  Terrace  "]
    direction TB
    BR4["๐Ÿ”—  sendspin-bt-bridge\nRaspberry Pi Zero 2W"]
    subgraph Z4AD["BT Adapters"]
      direction LR
      A4H0["แ›’ hci0"]
    end
    SP12["๐Ÿ”Š Ultimate Ears Epicboom"]
    SP13["๐Ÿ”Š JBL Xtreme 3"]
  end

  %% MA โ†’ Bridges (each bridge = independent MA player)
  MA -->|"Player: Living Room"| BR1
  MA -->|"Player: Kitchen"| BR2
  MA -->|"Player: Conference"| BR3
  MA -->|"Player: Terrace"| BR4

  %% Bridge โ†’ Adapters
  BR1 --> A1H0
  BR1 --> A1H1
  BR2 --> A2H0
  BR2 --> A2H1
  BR3 --> A3H0
  BR3 --> A3H1
  BR4 --> A4H0

  %% Adapters โ†’ Speakers
  A1H0 --> SP1
  A1H0 --> SP2
  A1H1 --> SP3
  A1H1 --> SP4

  A2H0 --> SP5
  A2H0 --> SP6
  A2H1 --> SP7

  A3H0 --> SP8
  A3H0 --> SP9
  A3H1 --> SP10
  A3H1 --> SP11

  A4H0 --> SP12
  A4H0 --> SP13

  %% Node styles
  classDef haStyle   fill:#0c1f38,stroke:#18b0ff,stroke-width:2px,color:#93c5fd,rx:10
  classDef maStyle   fill:#13103a,stroke:#6366f1,stroke-width:2px,color:#a5b4fc,rx:10
  classDef brStyle   fill:#0a2030,stroke:#22d3ee,stroke-width:1.5px,color:#67e8f9,rx:8
  classDef adStyle   fill:#071c14,stroke:#10b981,stroke-width:1px,color:#6ee7b7,rx:6
  classDef spStyle   fill:#1a1200,stroke:#f59e0b,stroke-width:1px,color:#fcd34d,rx:6
  classDef userStyle fill:#0b0f14,stroke:#94a3b8,stroke-width:1.5px,color:#e2e8f0,rx:10

  class HA haStyle
  class MA maStyle
  class U userStyle
  class BR1,BR2,BR3,BR4 brStyle
  class A1H0,A1H1,A2H0,A2H1,A3H0,A3H1,A4H0 adStyle
  class SP1,SP2,SP3,SP4,SP5,SP6,SP7,SP8,SP9,SP10,SP11,SP12,SP13 spStyle