Cilj
Velikokrat sem opazil, da imamo TV prižgan samo “da nekaj špila v ozadju”. Porabljati 250W samo za zvok je neučinkovito, zato sem nabavil sound bar, ki podpira Chromecast in se lepo integrira v Home Assistant. Uporaba sound bar-a za omenjen namen ima svoje izzive: igrati mora samo, ko je nekdo prisoten, utihniti mora, ko nekdo hoče dejansko gledati TV in tako naprej. Čeprav bo večino časa igral internetni radio, mora biti predvajanje glasbe z drugih virov (predvsem Youtube) kar se da enostavno.
Popolnoma drug razlog pa je predvajanje glasovnih obvestil kot so dnevna opravila, obvestila o končanem pranju perila, dogodki iz koledarja, vremenska napoved, obveščanje o osebah na dvorišču in tako dalje. Super bi bilo, da so obvestila v slovenščini in to samo zato, ker angleško zna vsaka Alexa, slovensko pa ne. Ko smo že pri glasovnih asistentih, glasovni ukazi niso potrebni, saj je to le še ena oblika dalinjskega upravljanja, ki pa ga teoretična avtonomna hiša ne bi smela potrebovati.
Primer zvočnega obvestila:
Strojna oprema
Dolgo sem iskal zvočnik z naslednjimi lastnostmi:
- Chromecast za integracijo s Home Assistant oziroma Music Assistant (več o tem kasneje)
- zadovoljiva kakovost glasbe (sem nezahteven)
- nizkotonec
- čim manj kablov
- čim manj denarja
Tako sem našel in nabavil Polk Signa S3. Najprej za bioklimatsko pergolo, kasneje pa še enega za v osrednji bivalni prostor.
Integracija v Home Assistant
Integracija je izvedena preko dodatka za Home Assistant, ki je prilagojen za upravljanje z glasbo Music Assistant. Med drugim omogoča integracijo s Home Assistant, Chromecast zvočniki, Youtube in TuneIn.
Namesti se ga lahko kot dodatek (Addon) za Home Assistant, v primeru uporabe Dockerja, pa kot ločen kontejner:
|
|
network_mode: host
, ga v tem primeru moram, ker je to edini način, da spravim multicast promet (mdns udp/5353) do aplikacije v konejnerju. Gre za omejitev zaradi implementacije multicasta v Linux jedru
Implementacija logike
Vsa programska logika je napisana v dodatku AppDaemon, ki omogoča poganjanje Python kode in interakcijo s Home Assistant.
Zvočnik mora predvajati izbran internetni radio dokler je nekdo prisoten v bivalnem prostoru. Kako zanesljivo zaznati prisotnost človeka je znanost zase, o kateri sem pisal tukaj.
Predvajanje se ne začne:
- TV predvaja vsebino
- je ura med 00:30 in 8:30
- uporabnik prekliče delovanje iz vmesnika
Zvočna obvestila so urejena preko programa, ki zbira obvestila in jih predvaja v primernem trenutku. Zunanji programi lahko dodajajo svoja obvestila v vrsto za predvajanje.
Vsako obvestilo mora vsebovati:
- sporočilo v tekstovni obliki
- unikatni identifikator
- časovne omejitve (before, after)
- opcijsko naslovnika. Sporočilo bo predvajano samo, ko je obraz naslovnika prepoznan v bivalnem prostoru preko kamere.
Ko so pogoji za predvajanje dotičnega sporočila ustrezni, se njegova tekstovna oblika spremeni v slovenski govor, ki je nato predvajan preko zvočnika. Za pretvorbo besedila v govor uporabljam Home Assistant integracijo Microsoft TTS, ki zadaj kliče storitev TTS v Azure.
Trenutna obvestila:
- Nekdo je na dvorišču
- Pralni stroj je opral
- Sušilni stroj je končal
- Dogodki iz družinskega koledarja za tekoči teden
- Nedokončana redna in izredna opravila
- Jutranji pozdrav gospodarju hiše, vremenska napoved in ključni statusi hiše
- Avto se polni