← Okosotthon

Rádió a fali tabletről Sonos hangfallal: így építettük fel Home Assistantban

17 perc olvasás • Ismeretterjesztő útmutató • Frissítve: 2026-10-21

Hét állomás, egyértelmű leállítás, állapotkártya és hangerő: a saját konyhai rádiónk teljes felépítése, mintákkal és hibakereséssel.

Miért került rádió az okosotthon főoldalára?

Amikor a családi kezelőfelületet építettük, nem csak a fűtésre, a kamerákra és az értesítésekre gondoltam. A konyhában olyan hétköznapi funkcióra is szükség volt, amelyhez nem kell külön alkalmazásban keresgélni. A rádió pontosan ilyen: legyen kéznél néhány ismert állomás, egy egyértelmű leállítás és a hangerő.

Nálunk a fali tablet a kezelőfelület, a hangot pedig a konyhai Sonos hangfal adja. A kettőt a Home Assistant kapcsolja össze. Ez a felosztás egyszerűnek tűnik, de a megértése sok későbbi hibakeresést megkönnyít: a tabletnek nem kell rádiólejátszóként működnie.

A célom az volt, hogy anyukám a már megszokott kezdőoldalon megtalálja a Rádió gombot, és néhány érthető választásból elindíthassa, amit hallgatni szeretne. A műszaki részleteket mi tettük a gombok mögé.

A tablet vezérel, a Sonos szól

A rendszerünkben három fő szerep különül el:

RészFeladata nálunkAmit nem érdemes összekeverni vele
Fali tablet, Fully KioskA Home Assistant felületének megjelenítése, érintéses vezérlésA rádió hangjának megszólaltatása
Home AssistantNavigáció, szkriptek, médiaforrás és lejátszó összekapcsolásaMaga a rádióállomás
Sonos hangfalA kiválasztott média lejátszásaA tablet böngészőjének hangerőszabályzója
Radio BrowserÁllomások elérhető médiakatalógusaGarancia minden állomás folyamatos elérhetőségére

A hangfalunk a Sonos integrációban jelenik meg; a rendszerleltárban SYMFONISK Bookshelf modellként szerepel. A cikk példáiban a saját, hosszú entitásnevünket rövid mintanévre cseréltem.

A tablet hangerejének emelésétől tehát nem várom, hogy a Sonos hangosabb legyen. A rádióoldalon a Sonoshoz tartozó csúszkát használom. Ezt érdemes már a felület átadásakor tisztázni, mert kívülről mindkettő „hangerőnek” látszhat.

Így halad végig egy érintés

A főoldali Rádió gomb és az állomásgomb két külön dolgot tesz:

Főoldal → Rádió gomb → rádiónézet
Rádiónézet → állomásgomb → állomásszkript
Állomásszkript → media_player.play_media → Sonos
Leállítógomb → külön szkript → media_player.media_stop

A főoldali gomb csak navigál. Attól, hogy megnyitom a rádióoldalt, nálunk nem indul automatikusan adás. Az állomás kiválasztása tudatos, külön érintés.

Ezt a megoldást azért szeretem, mert a felület megnyitása és a tényleges eszközvezérlés nem mosódik össze. Ha valaki csak a hangerőt vagy az állapotot szeretné megnézni, nem kell közben új műsort indítania.

A folyamat megértéséhez a családbarát kezdőoldalunkról szóló cikk adja a nagyobb képet. Itt most az egyik gomb mögötti teljes rádiós útvonalat bontom ki.

Miből indulnék ki egy másik otthonban?

Először működő Home Assistant és a benne elérhető Sonos-lejátszó kell. A Sonos integráció hivatalos dokumentációja szerint az IKEA SYMFONISK készülékek is támogatottak. A beállítást az Eszközök és szolgáltatások felületén kezdeném, nem rögtön egy egyedi műszerfalkártyával.

Ezután választanék egy rádióforrást, majd egyetlen állomást és egyetlen célhangfalat. A hétgombos felületet csak akkor építeném meg, amikor ez az egyszerű párosítás már érthető.

A saját megvalósításunk Mushroom-kártyákat is használ, de a rádió működését nem ez a kiegészítő adja. A kártya az indítást és a visszajelzést teszi kényelmessé. Egy alap Home Assistant-gombbal is lehet szkriptet indítani.

A példák előtt a mentési útmutatónk alapján biztosítanám a visszaállítás lehetőségét. A kész családi felületet nem egyszerre alakítanám át hét új gombbal.

Hét állomás, azonos kezelési logika

A rádióoldalunkon a következő állomásokhoz van külön gomb és külön szkript:

Gomb felirataA szkript feladataA jelenlegi forrás típusa
Retro RádióAz állomás megnyitása a SonosonRadio Browser, audio/mpeg
Danubius RádióUgyanez a második állomássalRadio Browser, audio/mpeg
Juventus RádióUgyanez a harmadik állomássalRadio Browser, audio/mpeg
Rocker RádióUgyanez a negyedik állomássalRadio Browser, audio/mpeg
Petőfi RádióUgyanez az ötödik állomássalRadio Browser, audio/aac
Kossuth RádióUgyanez a hatodik állomássalRadio Browser, audio/aac
Sláger FMUgyanez a hetedik állomássalRadio Browser, audio/mpeg

Ezek a saját konfigurációnkban szereplő választások. A felsorolás nem élő állomás-elérhetőségi jelentés: az internetes adás vagy a katalógusbejegyzés később változhat.

A következetesség itt fontosabb, mint a gombok száma. Minden állomásnál ugyanaz a mozdulat indít, azonos helyen van a leállítás, és egyetlen hangfal állapotát követjük.

Miért Radio Browser azonosító szerepel a szkriptben?

A saját szkriptjeink nem egy weboldal rádiólejátszóját nyitják meg. A media_content_id mezőben media-source://radio_browser/ kezdetű azonosító szerepel. Ez a Home Assistant médiarendszerén keresztül választja ki az állomást.

A Radio Browser hivatalos integrációja médiakatalógust ad; külön rádióentitást nem kell keresni minden állomáshoz. A Media felületen lehet böngészni, és a Play media művelethez választani forrást. Ez segít abban is, hogy ne egy böngésző címsorából másoljak be véletlenül egy rádió honlapjára mutató címet.

Az állomásazonosítót a saját Home Assistantomban választanám ki. Nem várnám el, hogy egy évekkel később bemásolt mintában szereplő katalógusbejegyzés biztosan ugyanazt az adást adja.

A saját állomáslistánk adását az olvasó rendszerébe sem automatikus tömeges másolással vinném át. Először egy forrást választanék és neveznék el következetesen.

Az első állomásszkript felépítése

A saját logikánk egyetlen lépésből áll: egy megadott médiát küld egy megadott lejátszóra. Az alábbi anonimizált szerkezeti minta nem másolható változtatás nélkül: a célentitást és az ALLLOMAS_AZONOSITO helyét a saját választásodra kell cserélni.

alias: Konyhai rádió – minta
mode: single
sequence:
  - action: media_player.play_media
    target:
      entity_id: media_player.konyhai_sonos
    data:
      media:
        media_content_id: media-source://radio_browser/ALLLOMAS_AZONOSITO
        media_content_type: audio/mpeg
        metadata: {}

Ez a beágyazott media szerkezet a saját jelenlegi szerkesztőből származó konfigurációnkat követi. A hivatalos műveletleírás közvetlen media_content_id és media_content_type mezőkkel is mutat példát. Új rendszerben a saját verzió vizuális médiaszerkesztőjével választanék állomást, és annak mentett YAML-ját ellenőrizném.

Az audio/mpeg nem általános szabály minden rádióra: nálunk két állomás audio/aac típussal szerepel. A kiválasztott forrás adatait tartom meg, nem találomra változtatom a típust.

Mit jelent a single mód?

A single ugyanazon szkript párhuzamos új futását korlátozza, amíg az előző futás tart. Egy rövid lejátszásindító művelet viszont hamar befejeződhet, miközben a rádió még sokáig szól.

Ezért nem tekintem úgy, hogy a single mód az egész rádiórendszert zárolja. A hét állomás hét külön szkript; nem alkotnak közös soros lejátszási várólistát. Két gyors állomásválasztás közös célhangfalnak adhat egymás után utasítást.

A felületet ezért nem folyamatos, gyors gombnyomkodásra tervezem. Állomásválasztás után megvárom a visszajelzést. Ha egy műsor nem indul, előbb a hiba helyét keresem meg, és nem küldök végtelen ismétlést.

A szkript futási állapota sem a rádióhallgatás állapota. A rádióoldal tetején ezért a media_player entitását figyeljük, nem azt, hogy az indítószkript éppen fut-e.

A főoldali navigáció maradjon egyszerű

A kezdőoldalra egy közönséges navigációs gomb elég. A saját belső útvonalunk helyett itt minta szerepel; ezt a saját műszerfalad és nézeted útjára kell cserélni.

type: button
name: Rádió
icon: mdi:radio
show_state: false
tap_action:
  action: navigate
  navigation_path: /dashboard-pelda/radio
hold_action:
  action: none

A gombon a feladat neve szerepel, nem a hangfal entitásazonosítója. A hosszú nyomás nálunk nem indít rejtett második funkciót.

Ha a gomb látszik, de rossz helyre visz, először az útvonalat javítanám. Ezen a ponton még nincs értelme a rádióforrást vagy a Sonost hibáztatni: a navigáció önálló réteg.

A fali tablet és Fully Kiosk cikkben a kijelző nagyobb rendszerbeli szerepét is bemutatom. A rádióhoz azonban nem szükséges a tablet böngészőjében hangot lejátszó külön oldal.

Az állomásgomb feladata egyértelmű legyen

A saját nézetünkben Mushroom Template kártyák adják az állomásgombokat. Mindegyiken az állomás neve és az „Érintse meg a lejátszáshoz” felirat szerepel. Az ikon és a szín segít a megkülönböztetésben.

Az alábbi natív gomb ugyanezt az indítási elvet mutatja, Mushroom telepítése nélkül. A példában a script.konyhai_radio_pelda a korábban létrehozott saját szkript helyére kerül.

type: button
name: Kedvenc rádió
icon: mdi:radio
tap_action:
  action: perform-action
  perform_action: script.konyhai_radio_pelda
hold_action:
  action: none

A két gombot szándékosan nem keverem: a főoldali navigate nézetet vált, az állomásgomb perform-action műveletet kér. Ha a rádióoldal helyett egy új böngészőlap nyílik meg, nem ugyanezt a működést építettem meg.

Mushroom használatakor a telepített verzió dokumentációjához igazítanám a megjelenési beállításokat. Egy régebbi kártyakonfiguráció vizuális paramétereit nem tekinteném minden későbbi kiadásban változatlan ígéretnek.

Mit mondjon az állapotkártya?

A rádióoldal tetején egy kártya a Sonos állapotát értelmezi. Nálunk az elérhetetlen hangfal külön üzenetet kap; lejátszáskor a médiacím, ennek hiányában a csatornanév, végül egyszerű „Rádió” felirat jelenik meg. Szüneteléskor más szöveg látszik.

A hangerőszázalék csak a lejátszóhoz visszakapott értékből készül. Nem a megnyomott állomásgomb neve dönti el, hogy mit írunk ki „Most szól” állapotként.

A jelenlegi saját sablon egyszerűsít: a külön nem kezelt állapotokat a „rádió nem szól” ágba teszi. Az unknown vagy az átmeneti buffering ettől még nem ugyanazt jelenti, mint a biztosan leállított lejátszás. Ha újra építeném ezt a részt, külön megjeleníteném az adathiányt és az előkészítést is.

Az állapotjelzés a vezérlés visszajelzése; önmagában nem mikrofonos igazolás arról, hogy a szobában valóban hallható a hang.

Hangerő: a megfelelő lejátszót állítom

A rádiónézetünk alján natív Tile kártya jeleníti meg a Sonos állapotát és hangerőcsúszkáját:

type: tile
entity: media_player.konyhai_sonos
name: Konyhai Sonos – hangerő és állapot
hide_state: false
features:
  - type: media-player-volume-slider
features_position: bottom

A saját állomásszkriptjeink nem állítanak minden indításnál rögzített hangerőt. Emiatt nem számítok arra, hogy az állomásváltás automatikusan visszaállít egy általam kedvelt szintet.

A media_player volume_level skálája és a felületen megjelenő százalék kétféle megjelenítés. A 0,20 például 20%-nak felel meg; ez nem hangerősségmérés decibelben. Indítás előtt a némítás állapotát is ellenőrizném.

A csúszka legyen elég nagy, és a leállítás maradjon könnyen elérhető. Az apró technikai vezérlők helyett az volt a célunk, hogy a család a szokásos mozdulatokkal kezelje.

A leállítás nem áramtalanítás

A felületünkön „Rádió kikapcsolása” a gomb neve, de alatta media_player.media_stop fut. Ezzel a lejátszást állítjuk le; nem a hangfal áramellátását kapcsoljuk ki.

alias: Konyhai rádió leállítása – minta
mode: single
sequence:
  - action: media_player.media_stop
    target:
      entity_id: media_player.konyhai_sonos

Ennek a különbségnek a hibakeresésnél is van jelentősége. Attól, hogy a rádió már nem szól, a Sonos továbbra is jelen lehet a hálózaton és fogadhat más műveletet.

A szüneteltetés megint más kérdés. Élő rádiónál nem feltételezem, hogy később pontosan ugyanott lehet folytatni, ahol megállítottam. Ha újra állomást választok, élő műsor indulhat.

A cikkben ezért leállításról beszélek akkor is, ha a családi gomb rövidebb, hétköznapi felirata „kikapcsolás”.

Hogyan adnék hozzá új állomást?

Először a Home Assistant médiaböngészőjében keresném meg az állomást. Ellenőrizném, hogy ugyanazt az adást választottam-e, amelyet szeretnék: azonos vagy hasonló név alatt több bejegyzés is lehet.

Ezután egy új szkriptben kiválasztanám a meglévő Sonost, és a médiaszerkesztővel hozzáadnám a forrást. A szkript neve, a műszerfalgomb neve és az állomás tartalma legyen összhangban.

Csak ezután kerülne a gomb a család által használt nézetbe. A meglévő kedvenceket nem cserélném le egyszerre egy új, még meg nem ismert listára. Az új elem elkülönített ellenőrzése után bővíteném a megszokott felületet.

Ha egyetlen állomás áll meg, először annak forrását keresném újra. Ha minden állomás elérhetetlen, inkább a közös lejátszó- vagy hálózati réteget vizsgálnám. Ezzel elkerülhető, hogy ugyanazt a közös hibát hét szkript átírásával próbáljam javítani.

Amikor a gomb látszik, mégsem indul zene

Tapasztalt jelenségElső vizsgálati pontKövetkező lépés
A Rádió gomb rossz nézetre visznavigate útvonalA valódi nézetcím ellenőrzése
Az állomásgomb nem indítja a szkriptetperform_action és script entitásSzkriptnév és nyomkövetés
A szkript hibát jelezCéllejátszó és médiaadatA hibás lépés azonosítása
Egy állomás nem indulKatalógusbejegyzés vagy adásForrás újraválasztása
Minden állomás némaSonos állapot, némítás, hangerőKözös lejátszási út vizsgálata
A hang szól, a felirat késikÁllapotfrissítésHálózati visszajelzési út ellenőrzése

A „gomb megnyomva” és a „hang hallható” között több lépés van. A nyomkövetés azt segít megérteni, hogy a Home Assistant meddig jutott; a szobai hallhatóságot továbbra is ténylegesen ellenőrizni kell.

Nem kezdenék rögtön újratelepítéssel. Előbb a legszűkebb hibát keresem: egy gomb, egy szkript, egy állomás vagy az egész hangfal érintett?

Hálózat és internet: külön hibalehetőségek

A tablet, a Home Assistant és a Sonos közötti elérés, valamint a rádióforrás internetes elérése nem ugyanaz a kapcsolat. A tablet megjelenítheti a már megnyitott felületet akkor is, amikor a lejátszási lánc más pontján van hiba.

A Sonos hivatalos integrációs leírása a visszirányú állapotfrissítés hálózati követelményeit is ismerteti. Ha a push út nem működik, a visszajelzés lassabb lekérdezésre válthat. Ezt nem oldanám meg a rendszer internet felőli, korlátlan megnyitásával.

A saját hálózat kialakításánál a hálózati alapvédelemről szóló cikkünkhöz kapcsolnám a szükséges ellenőrzést. A rádióhoz szükséges helyi elérést és a távoli adminisztrációt külön kezelném.

Ha a házi hálózat működik, de a rádióforrás nem érhető el, más hibát keresek, mint amikor a Sonos entitása unavailable. E két eset szétválasztása gyorsítja a helyes irány megtalálását.

Mi történik, ha közben bemondás érkezik?

A Sonost más háztartási funkciók is használják. A mérőóra-, villanyszámla- és kazánszerviz-emlékeztetőinkben szerepel állapotmentés, külön hangerő, szövegfelolvasás, várakozás és visszaállítás.

Ezért a rádió nem teljesen magányos szereplő. Ha éppen bemondás történik, az érintheti ugyanazt a lejátszót. A rádió szkriptjei önmagukban nem tartalmaznak közös, minden bemondásra kiterjedő prioritáskezelést.

A Sonos snapshot és restore műveletei a lejátszási állapot megőrzéséhez és visszaállításához kapcsolódnak, de ebből nem következtetek minden forrásra és minden párhuzamos eseményre hibátlan folytatásra. Különösen nem tekintem bizonyítottnak két egymásra érkező emlékeztető teljes kezelését.

A hangos háztartási emlékeztetőket külön cikkben bontjuk majd ki. Itt azt a határt szeretném világossá tenni, hogy az egyszerű állomásválasztás és a közös hangfal eseményeinek összehangolása két külön feladat.

Mit nem automatizáltunk a rádiógombokkal?

A jelenlegi állomásszkriptek nem keresnek automatikusan tartalék adást, nem várnak külön a playing állapotra, és nem hoznak létre naplózott hallhatósági igazolást. Nem a tablet ébredése indít rádiót.

Nincs bennük minden állomásváltásra külön hangerő-visszaállítás sem. A rádióoldal egyszerűsége éppen abból adódik, hogy nem próbál minden lehetséges helyzetre rejtett működést kitalálni.

A kártya állapotszövegét és a tényleges funkciót viszont összhangban kell tartani. Ha később hozzáadunk forrásváltást, időzített kikapcsolást vagy finomabb hibajelzést, annak látható és érthető helyet adnék.

A saját rendszerünk leírásánál ezt tartom jó iránynak: azt mutassuk be részletesen, amit valóban felépítettünk, és a következő fejlesztést külön nevezzük meg.

Ezzel az ellenőrzési sorrenddel adnám át

EllenőrzésMit szeretnék látni?
Főoldali gombA megfelelő rádiónézet nyílik meg, adás nem indul magától
Egy állomás választásaA megfelelő Sonos kapja a kiválasztott médiát
ÁllapotkártyaNem pusztán a gomb feliratát ismétli, hanem a lejátszó adatát
Hangerő és némításA Sonoson történő változást jelzi
LeállításA lejátszás áll meg, nem szükséges áramtalanítás
Elérhetetlen eszközÉrthető üzenet látszik, nem kitalált siker
VisszaútA család visszatalál az okosotthon megszokott felületére

Az éles használati próbát olyan időpontban végezném, amikor a hang nem zavar senkit. Kis hangerőről indulnék, egyetlen állomással, és előre ismert leállítással. Így a próbának is világos kezdete és lezárása van.

Az olvasó saját entitásnevei, állomásai és eszközei ettől eltérhetnek. A mintát a saját rendszeréhez kell igazítania.

Mitől lett ez családbarát megoldás?

Nem attól, hogy sok kiegészítőt kapcsoltunk össze, hanem attól, hogy a hétköznapi feladat rövid maradt: Rádió, állomás, hangerő, leállítás. Az állapot és a célhangfal neve segít, ha valami nem a várt módon történik.

A technikai oldalon külön maradt a navigáció, a szkript, a médiaforrás és a lejátszó. Ez nekünk is előny, mert egy új állomás vagy egy hibás cím nem teszi szükségessé az egész kezelőfelület újraépítését.

Ha most kezded, az okosotthon témaközpontban megtalálod az alapoktól a vezérlésig vezető sorrendet. Ha a rádiós megoldás valamelyik lépésénél elakadsz, a Közösség oldalon írd meg, melyik rétegig jutottál: megnyílik-e a nézet, indul-e a szkript, elérhető-e a hangfal, és csak egy vagy minden állomás érintett.

Így egy általános „nem szól” kérdésből már konkrétan vizsgálható probléma lesz. A család számára közben megmarad az egyszerű rádiógomb.

Végső ellenőrzőlista

  • A navigáció nem indít rádiót.
  • A szkript a megfelelő hangfalat célozza.
  • Az állapot a lejátszó adataiból származik.
  • A Sonos hangerejét és némítását vizsgálom.
  • A leállítás nem áramtalanítás.
  • A közös hangfal emlékeztetőit külön átgondolom.

Menj végig a pontokon a saját rendszereden.

A cikk tájékoztató jellegű, a technikai részletek eszközönként eltérhetnek.