TapHome

Fonestar WA-225W

Packet Parser → HTTP
Pridal
Posledná aktualizácia: 03. 2026
Fonestar WA-225W

Fonestar WA-225W je kompaktný Wi-Fi stereo zosilňovač s podporou DLNA a AirPlay pre sieťové streamovanie zvuku. TapHome komunikuje so zariadením cez HTTP pomocou UPnP/SOAP XML správ odosielaných na port 49152. Šablóna cieli na štandardný profil UPnP AV Media Renderer, takže by mala fungovať s akýmkoľvek zariadením Fonestar, ktoré implementuje DLNA (WA-225W, FONCAST a podobné modely).

Šablóna poskytuje ovládanie hlasitosti, stlmenie, ovládanie prehrávania (play, pause, stop, ďalšia skladba, predchádzajúca skladba) a prepínač režimu prehrávania. Nie je potrebné žiadne cloudové pripojenie — celá komunikácia prebieha v lokálnej sieti.

Konfigurácia

Počas importu šablóny do TapHome zadajte IP adresu zariadenia. Predvolený zástupný znak je 192.168.0.1 a zariadenie počúva na porte 49152 (štandardný UPnP AV port).

Na zistenie IP adresy zariadenia skontrolujte zoznam DHCP klientov vo vašom routeri alebo použite aplikáciu na skenovanie UPnP/SSDP. WA-225W sa v lokálnej sieti hlási ako UPnP MediaRenderer. Sprievodná aplikácia MUZO (iOS/Android) tiež zobrazuje pripojené zariadenia a ich IP adresy.

UPnP zariadenia používajú na vyhľadávanie SSDP, nie mDNS. Ak sa IP adresa zariadenia zmení po obnovení DHCP, budete musieť aktualizovať IP adresu v TapHome. Zvážte priradenie statickej IP adresy alebo DHCP rezervácie na routeri, aby ste predišli problémom s pripojením.

Možnosti zariadenia

Ovládanie hlasitosti

Šablóna sprístupňuje hlasitosť ako dimmer. UPnP akcia GetVolume vracia hodnotu v rozsahu 0–100, ktorú šablóna normalizuje na 0,0–1,0 pre dimmer model TapHome (pri čítaní delí 100, pri zápise násobí 100). Nastavenie hlasitosti na 50 % v TapHome odošle zariadeniu DesiredVolume=50.

Stlmenie

Stlmenie je sprístupnené ako spínač. Číta aktuálny stav stlmenia cez GetMute (vracia 0 alebo 1) a zapisuje cez SetMute. Obe operácie cieľujú na Master audio kanál služby RenderingControl:1.

Ovládanie prehrávania

Šablóna poskytuje päť tlačidlových zariadení na ovládanie prehrávania:

  • Play — odošle akciu Play služby AVTransport:1 (obnoví alebo spustí prehrávanie)
  • Pause — odošle akciu Pause (pozastaví prehrávanie na aktuálnej pozícii)
  • Stop — odošle akciu Stop (úplne zastaví prehrávanie)
  • Ďalšia skladba — odošle akciu Next (preskočí na ďalšiu skladbu)
  • Predchádzajúca skladba — odošle akciu Previous (vráti sa na predchádzajúcu skladbu)

Ide o tlačidlá iba na zápis. Prehrávanie musí byť najskôr spustené z iného zdroja (napr. aplikácia MUZO alebo iný DLNA ovládač), pretože šablóna neobsahuje akciu SetAVTransportURI na nastavenie zdroja médií.

Režim prehrávania

Zariadenie režimu prehrávania je viacpolohovým prepínačom, ktorý ovláda režim opakovania cez GetTransportSettings a SetPlayMode. Funkčné sú tri režimy:

PozíciaOznačenie v TapHomeUPnP PlayModeEfekt
0NormalNORMALSekvenčné prehrávanie, bez opakovania
1Repeat AllREPEAT_ALLOpakovanie celého frontu
2Repeat OneREPEAT_TRACKOpakovanie aktuálnej skladby

Šablóna definuje 10 viacpoložkových pozícií, ale iba pozície 0–2 zodpovedajú skutočným UPnP režimom prehrávania. Pozície 3–9 (označené „Shuffle no repeat", „Shuffle" atď.) sa pri zápise predvolia na NORMAL, pretože UPnP režim SHUFFLE nie je v skripte šablóny namapovaný. Používajte iba prvé tri pozície.

Ďalšie možnosti

Štandard UPnP AV tiež sprístupňuje hlásenie stavu prehrávania (STOPPED, PLAYING, PAUSED), informácie o pozícii a dĺžke skladby, správu URI médií (SetAVTransportURI na radenie skladieb), funkciu vyhľadávania, ovládanie hlasitosti v decibeloch, vylepšenie loudness a predvoľby renderovania. Tieto možnosti môžu byť pridané v budúcej aktualizácii šablóny.

Riešenie problémov

Zariadenie neodpovedá
  1. Overte, že zosilňovač je zapnutý a pripojený k Wi-Fi (alebo Ethernetu cez RJ-45)
  2. Potvrďte, že IP adresa v TapHome zodpovedá aktuálnej IP zariadenia — skontrolujte zoznam DHCP klientov na routeri
  3. Skúste v prehliadači otvoriť http://{ip-zariadenia}:49152/ — ak je zariadenie dostupné, načíta sa UPnP popisný XML súbor
  4. Skontrolujte, že TapHome Core a zosilňovač sú v rovnakej sieti / VLAN — UPnP prevádzka štandardne neprechádza medzi podsieťami
Tlačidlá prehrávania nefungujú

Tlačidlá prehrávania (Play, Pause, Stop, Ďalšia skladba, Predchádzajúca skladba) fungujú iba vtedy, keď sú médiá už načítané na zariadení. Šablóna neobsahuje akciu SetAVTransportURI, takže prehrávanie musí byť najskôr spustené z iného zdroja (napr. aplikácia MUZO, DLNA media server alebo iný UPnP ovládací bod). Po spustení prehrávania ho tlačidlá TapHome budú ovládať.

Zmeny hlasitosti sa neprejavujú

Ak úpravy hlasitosti z TapHome nefungujú, overte, že zariadenie nie je stlmené. Niektoré DLNA renderery ignorujú zmeny hlasitosti počas stlmenia. Tiež potvrďte, že žiadny iný ovládací bod (napr. aplikácia MUZO) súčasne neposiela konfliktné príkazy.

Dostupné zariadenia

Fonestar Modul
Hlasitosť Stmievač

Hlavná hlasitosť — rozsah UPnP 0–100 normalizovaný na dimmer škálu TapHome (0,0–1,0)

numeric Jednotka: %

Hlasitosť

Čítanie úrovne
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:GetVolume xmlns:u=\"urn:schemas-upnp-org:service:RenderingControl:1\"><InstanceID>0</InstanceID><Channel>Master</Channel></u:GetVolume></s:Body></s:Envelope>";

VAR response := SENDHTTPREQUEST("/upnp/control/rendercontrol1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:RenderingControl:1#GetVolume\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"" );

IF response.IsSuccess
    VAR responseXml := response.Content;
    RETURN(PARSEXML(responseXml, "//CurrentVolume") / 100.0);
ELSE
    ADDERROR(response.Content);
    RETURN(NaN);
END
Zápis úrovne
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:SetVolume xmlns:u=\"urn:schemas-upnp-org:service:RenderingControl:1\"><InstanceID>0</InstanceID><Channel>Master</Channel><DesiredVolume>" + ROUND(Le * 100) + "</DesiredVolume></u:SetVolume></s:Body></s:Envelope>";

SENDHTTPREQUEST("/upnp/control/rendercontrol1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:RenderingControl:1#SetVolume\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");
Ďalšia skladba Tlačidlo
button

Ďalšia skladba

Zápis stavu tlačidla
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:Next xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID></u:Next></s:Body></s:Envelope>";

SENDHTTPREQUEST("/upnp/control/rendertransport1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:AVTransport:1#Next\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");
Pauza Tlačidlo
button

Pauza

Zápis stavu tlačidla
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:Pause xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID></u:Pause></s:Body></s:Envelope>";

SENDHTTPREQUEST("/upnp/control/rendertransport1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:AVTransport:1#Pause\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");
Play Tlačidlo
button

Play

Zápis stavu tlačidla
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:Play xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID><Speed>1</Speed></u:Play></s:Body></s:Envelope>";

SENDHTTPREQUEST("/upnp/control/rendertransport1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:AVTransport:1#Play\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");
Predchádzajúca skladba Tlačidlo
button

Predchádzajúca skladba

Zápis stavu tlačidla
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:Previous xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID></u:Previous></s:Body></s:Envelope>";

SENDHTTPREQUEST("/upnp/control/rendertransport1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:AVTransport:1#Previous\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");
Stop Tlačidlo
button

Stop

Zápis stavu tlačidla
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:Stop xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID><Speed>1</Speed></u:Stop></s:Body></s:Envelope>";

SENDHTTPREQUEST("/upnp/control/rendertransport1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:AVTransport:1#Stop\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");
Stlmenie Prepínač
boolean
Hodnoty / Stavy: ON · OFF

Stlmenie

Čítanie stavu prepínača
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:GetMute xmlns:u=\"urn:schemas-upnp-org:service:RenderingControl:1\"><InstanceID>0</InstanceID><Channel>Master</Channel></u:GetMute></s:Body></s:Envelope>";

VAR response := SENDHTTPREQUEST("/upnp/control/rendercontrol1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:RenderingControl:1#GetMute\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");

IF response.IsSuccess
    VAR responseXml := response.Content;
    RETURN(PARSEXML(responseXml, "//CurrentMute"));
ELSE
    ADDERROR(response.Content);
    RETURN(NaN);
END
Zápis stavu prepínača
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:SetMute xmlns:u=\"urn:schemas-upnp-org:service:RenderingControl:1\"><InstanceID>0</InstanceID><Channel>Master</Channel><DesiredMute>" + St +"</DesiredMute></u:SetMute></s:Body></s:Envelope>";

SENDHTTPREQUEST("/upnp/control/rendercontrol1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:RenderingControl:1#SetMute\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");
Režim prehrávania Viacstavový prepínač

Režim opakovania — Normal, Repeat All, Repeat One sú funkčné; pozície 3–9 nemajú UPnP mapovanie a predvolia sa na Normal

enum
Hodnoty / Stavy: Normal · Repeat all · Repeat one · Shuffle no repeat · Shuffle · Shuffle repeat one

Režim prehrávania

Čítanie stavu prepínača
VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:GetTransportSettings xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID></u:GetTransportSettings></s:Body></s:Envelope>";

VAR response := SENDHTTPREQUEST("/upnp/control/rendertransport1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:AVTransport:1#GetTransportSettings\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");

IF response.IsSuccess
    VAR responseXml := response.Content;
    VAR mode := PARSEXML(responseXml, "//PlayMode");
    RETURN(SWITCH(mode, "NORMAL", 0, "REPEAT_ALL", 1, "REPEAT_TRACK", 2, 0));
ELSE
    ADDERROR(response.Content);
    RETURN(NaN);
END
Zápis stavu prepínača
VAR mode := SWITCH(Mu, 0, "NORMAL", 1, "REPEAT_ALL", 2, "REPEAT_TRACK", "NORMAL");

VAR body := "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:SetPlayMode xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID><NewPlayMode>" + mode +"</NewPlayMode></u:SetPlayMode></s:Body></s:Envelope>";

SENDHTTPREQUEST("/upnp/control/rendertransport1", "POST", body, "SOAPACTION: \"urn:schemas-upnp-org:service:AVTransport:1#SetPlayMode\"", "CONTENT-TYPE: text/xml; charset=\"utf-8\"");
Pripojenie: Packet Parser → HTTP
Možné vylepšenia (8)
  • Set Media URI — Required action — sets the URI of the media to play. Without this, the device can only control already-playing media (started from another source like the MUZO app).
  • Transport State — Returns current TransportState (STOPPED, PLAYING, PAUSED_PLAYBACK, etc.) — useful for showing playback status in TapHome
  • Track Position Info — Returns current track number, duration, and playback position — would enable progress display
  • Media Info — Returns number of tracks and media duration
  • Seek — Required action — seek by track number, absolute or relative time
  • Volume in dB — Optional — volume control in decibels rather than 0-100 linear scale
  • Loudness — Optional — loudness enhancement toggle
  • Rendering Presets — Required actions — list and select rendering presets (e.g. EQ profiles)

Zdroje