Speaker kuchyně
Google Cast · Wi-Fi · TTS + radio
Hlavní speaker pro ranní briefing. Capability speaker_playing,
speaker_track, volume_set. TTS recipient pro většinu
hlášek. Radio backup pro bathroom.
📦 Zařízení · Reproduktory
Tři Google Cast koncové body (kuchyně, koupelna, ložnice) plus Nest Hub Max v ložnici jako vizuální + audio hybrid. Žádný multi-room sync — místo toho context-aware routing: ráno briefing do kuchyně, odpolední radio do koupelny, večerní hudba do ložnice.
Co to dělá
Tři reproduktory v bytě, každý ve své zóně — kuchyně, koupelna, ložnice. Všechny Google Cast kompatibilní, takže Homey může poslat audio stream přímo (TTS, radio URL, hudba). Plus Nest Hub Max v ložnici který má displej a kameru, dvojí role (audio + vizuální alerty).
Speakers nejsou multi-room synced. Místo toho context-aware routing — audio_brain dispatcher rozhoduje cílový speaker dle TOD a aktivní zóny: ráno briefing do kuchyně (kde se chystá káva), odpolední radio do koupelny (sprchování), večerní muzika do ložnice. Sync není potřeba, je jeden user v jedné zóně v čase.
Capability API přes Homey: speaker_playing,
speaker_track, volume_set, volume_mute.
Custom radio URLs (Italian Classic Hits Sanremo TuneIn) jdou přes
speaker_track hodnotu = stream URL.
Denní provoz
Routing není random — je determinisitc dle TOD + zóny.
03:15 / 03:30 briefing do kuchyňského speakeru. Kuchyně je centrem rituálu — káva, chystání. Speaker volume mid (60), aby probudil ale nebudil sousedy. TV mute pipeline souběžně.
Motion v koupelně + TOD ráno → spustí Italian Classic Hits Sanremo. Stop při motion_off + 30 s timeout. Volume vyšší (75) aby konkuroval vodě. Prev_playing guard zabraňuje resume bez explicit play.
sh_audio_request='idle'. Speakers fungují jen jako TTS recipients
pro alerty (anti-freeze, water leak, brain guardian warnings). Většinou ticho.
Comfort suggest (AI coordinator) → Nest Hub Max v ložnici. Visual prompt na displeji + audio. User může accept přes Cube. Hudba (Spotify cast) jde do ložnice speakeru paralelně.
Hardware v provozu
Tři Cast koncové body + jeden hybrid.
Google Cast · Wi-Fi · TTS + radio
Hlavní speaker pro ranní briefing. Capability speaker_playing,
speaker_track, volume_set. TTS recipient pro většinu
hlášek. Radio backup pro bathroom.
Google Cast · Wi-Fi · ranní radio
Italian Classic Hits ráno při sprchování. Motion-trigger, motion_off + 30 s stop. Po bathroom misroute bug 25.4. doplněn prev_playing guard, aby se nezapnulo z prázdna.
Google Cast · Wi-Fi · evening
Lehčí použití — večerní hudba před spaním, alerty když user v ložnici.
Sleep guard chrání před nočními TTS. Speaker variable
sh_tts_speaker='ložnice' historicky, real cast jde do kuchyně.
Google Cast · displej · vizuál + audio
ID 5ffffbce3, com.google.chromecast:cast. Sekundární výstup pro vizuální alerty. Comfort suggest s text na displeji + audio. TV mute pipeline jde přes Android TV remote (jiný device).
Google Cast · podcast / hudba
Plánovaný Cast speaker do pracovny — focus music, podcast během práce. Aktuální workflow je sluchátka, ale ambient option by byla užitečná pro call awareness (pause music při hovoru).
Pro tech-savvy
Cast capability API, dispatcher routing, TV mute pipeline.
Homey přes Google Chromecast app exposuje:
speaker_playing: boolean — start/stop playbackspeaker_track: string — URL streamu nebo názevspeaker_artist: string — read-only metadataspeaker_album: string — read-onlyspeaker_position: float 0–1 — track positionvolume_set: float 0–1 — volume levelvolume_mute: boolean — mute togglevolume_up / volume_down: trigger eventy
TTS jde přes speaker_track jako data URI nebo TTS endpoint URL
(Google Cloud TTS gen → MP3 → cast).
sh_audio_brain_v2 rozhoduje cílový speaker dle:
sh_audio_target_zone set
Decision logged do EventLog: audio_dispatch event s zone +
speaker + reason. Dohledatelné v Sheets.
Google Cast SDK má hard limit 200 znaků na utterance. Delší = stream
padá nebo truncates uprostřed věty. Defenzivní truncation v
sh_gemini_brain_v1::sayTTS():
if (cleaned.length > 200) {
cleaned = cleaned.substring(0, 200);
logMsg('GOOGLE CAST: message truncated to 200 chars');
}
Briefing split do 2 fází:
Před každým TTS:
tts_completed: setCap volume_mute = false, restore volume
Bez tohoto by TTS hlas konkuroval s TV soundu — ranní zprávy + briefing nebylo
slyšet. Capability volume_mute je toggle, není potřeba čekat na
driver ack.
Sleep state aktivní → priority engine deny pro TTS (priority 100) pokud není critical bypass:
Critical bypass jde přes sh_safety_bypass='yes' short-circuit
v priority engine.
Související