Samsung Wireless Audio Multiroom API einbinden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Lani
Beiträge: 14
Registriert: 27. Mai 2020 07:10
Answers: 1

Samsung Wireless Audio Multiroom API einbinden

Beitrag von Lani »

Hallo Zusammen

Mein Name ist Lani und ich bin aus der Schweiz.
Ich freue mich hier dabei zu sein, verfolge seit längerem bereits das Forum und habe bereits viele nützliche Infos erhalten.
Auch bin ich im internationalen Forum angemeldet und lese auch da fleißig mit.

Zu meiner Konfig:
OH läuft bei mir auf einem alten Laptop mit Linux Lubuntu und ist sehr zuverlässig. :D
Habe eine Shelly's eingebunden (Temperatur und Beleuchtung) und versuche mir einiges beizubringen, bevor ich das ganze Haus mal automatisieren möchte. Arbeite eigentlich ausschliesslich mit .things und .items Files, da ich dies (noch) deutlich übersichtlicher finde als alles in der PaperUI zu machen.
Als Elektroing. habe ich betreffend Verdrahtung und Umsetzung in der Regel keine Probleme, Programmier-Kenntnisse beschränken sich aber auf Java und C und ehrlich gesagt habe ich dies schon lange nicht mehr gemacht. :?
Aber Grundsätzlich bin ich lernfähig und auch interessiert einiges auszuprobieren.

Nun habe ich aber ein Thema, welches ich alleine nicht anpacken kann.
Ich würde gerne meine Lautsprecher von Samsung (https://www.samsung.com/ch/support/model/WAM350/EN/)
gerne in OH einbinden und entsprechend steuern können.
Es gibt keine Binding dazu, aber ich habe bereits folgenden Eintrag bei Github gefunden (https://github.com/bacl/WAM_API_DOC).

Wie es scheint haben schlaue Leute bereits mit dem Thema beschäftigt und eine Schnittstelle gefunden zuhaben.
Diese können für viele Weitere Typen aus dieser Produktfamilie von Samsung verwendet werden.
In der Liste finden sich auch die Cmd die ich gerne verwenden würde.
Z.B mute on/off oder auch vordefinierte Internetradio Programme abzuspielen.

Code: Alles auswählen

84 - SetMute
Description: Mute ON

Example:

curl 'http://ip_speaker:55001/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22on%22/%3E' 
Xml string decoded:

<pwron>on</pwron><name>SetMute</name><p type="str" name="mute" val="on"/>
Spotyfiy Connect wäre auch auf der TODO Liste.

Nun habe ich leider keinen Ahnung wie ich eine solche Schnittstelle verwenden bzw. implementieren muss. :?:
Hat hier jemand so etwas bereits gemacht und könnte mir sagen was ich zu tun habe oder kann mit mit einer Website(How-To) weiterhelfen?

Falls jemand etwas beitragen könnte wäre ich sehr dankbar.
sonnige Grüsse
Lani
von Lani » 31. Mai 2020 09:24
Hallo Udo

Ich hab es heute hinbekommen, leider mit dem Umweg über eine Rule, aber dafür keine Fehlermeldungen.

Code: Alles auswählen

rule "SwitchRadioMute"
when
	Item WAM350_1_Mute changed from OFF to ON
then
	sendHttpGetRequest("http://192.168.1.61:55001/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22on%22/%3E")
end

rule "SwitchRadioUnMute"
when
	Item WAM350_1_Mute changed from ON to OFF
then
	sendHttpGetRequest("http://192.168.1.61:55001/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22off%22/%3E")
end
Die Rückmeldung müsste ich noch implementieren und danach wäre es soweit i.O.

Hast du eine Idee weshalb es auf diesem Weg funktioniert und über items direkt nicht?
Gehe zur vollständigen Antwort

Benutzeravatar
udo1toni
Beiträge: 13982
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Samsung Multiroom Lautsprecher WAM350 einbinden

Beitrag von udo1toni »

Grundsätzlich ist ja viel über die Rule Engine hinzubekommen, aber das wird vermutlich haarig werden. Wobei Mute als "Test" schon mal nicht schlecht wäre, dann kannst Du abschätzen, wie viel Aufwand weitere Kommandos machen werden.
Du brauchst dazu das http Binding. http kommt ohne weitere Konfiguration aus, was schon mal gut ist :), allerdings ist es ein v1 Binding, was zum einen bedeutet, dass es keine Things gibt (gut... ;) ) zum anderen bedeutet es aber auch, dass irgendwann demnächst ein http v2 Binding kommen wird, welches 100% sicher sehr viel anders zu konfigurieren ist. Aber egal... ;)
Weiterhin kommen alle Daten als xml an, das bedeutet, die xpath-Transformation wäre auch sinnvoll.

Du benötigst nun pro "Funktion" nur ein Item, für Mute z.B. so:

Code: Alles auswählen

Switch WAM350_1_Mute "Mute ist [%s]" { http="> [ON:GET:http://ip_speaker:55001/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22on%22/%3E] > [OFF:GET:http://ip_speaker:55001/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22off%22/%3E] <[http://ip_speaker:55001/UIC?cmd=%3Cname%3EGetMute%3C/name%3E:30000:XPATH(/UIC/response/mute)]" }
Wobei leider ausgerechnet bei mute die Antwort nicht dokumentiert ist. Du kannst aber einfach die Adresse im Browser eingeben und Dir das Ergebnis anschauen :) Ich habe das Ergebnis mal "geraten", kann also sein, dass die Rückmeldung nicht korrekt funktioniert.

ip_speaker muss natürlich mit der korrekten IP ersetzt werden ;)

Anhand des Beispiels ist aber auch eines schon klar: diese API mag zwar durchdacht sein, ist aber sicherlich nicht dazu gedacht, so konfiguriert zu werden. Das Ding schreit nach einem eigenen Binding :)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Lani
Beiträge: 14
Registriert: 27. Mai 2020 07:10
Answers: 1

Re: Samsung Wireless Audio Multiroom API einbinden

Beitrag von Lani »

Hallo Udo1toni

Vielen Dank für die rasche Antwort.

Habs gleich versucht....uuuuund es hat geklapt!!!
Du bist ein Genie!
Der Lautsprecher wurde gemutet und das war die Antwort
MuteStatus1.0192.168.1.60publicon

Also scheint es Grundsätzlich zu klappen... aber was genau müsste ich machen und wie zum Teufel hast du das so schnell verstanden :?

Habe das Item erstellt und versucht über HABPanel das Item zu schalten.
Hat aber leider nicht geklappt.
Was genau müsste ich denn für Items anlagen, ich scheue wirklich keine Arbeit, wäre wirklich cool wenn das klappen würde.
Wenn ich das Item über einen Switch mute und unmute schalten kann hätte ich eine gute Vorlage um mal die anderen Cmd zu probieren.

Lani
Beiträge: 14
Registriert: 27. Mai 2020 07:10
Answers: 1

Re: Samsung Wireless Audio Multiroom API einbinden

Beitrag von Lani »

:roll: Gerade erst bemerkt, dass du mir das Item nur für die Abfrage erstellt hast...und das eigentliche cmd noch fehlt :lol: War im Test-Fieber..
Hirn einschalten würde helfen :oops:

Wie müsste ich das Item vollständig deklarieren, damit cmd auch ausgeführt wird?
Im schlimmsten Fall können es auch 2 einzelne Items sein, für mute und unmute.. Hauptsache es funktioniert.

Oder muss ich für jeden Befehl eine Rule erstellen?

Benutzeravatar
udo1toni
Beiträge: 13982
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Samsung Wireless Audio Multiroom API einbinden

Beitrag von udo1toni »

Nein, eigentlich sollte das Item so das Muting aktivieren und deaktivieren können. Außerdem sollte es auch eine Rückmeldung verarbeiten können, wobei das halt nur geraten war, also auch schief gehen kann.
Ich schreibe das Item mal etwas anders auf:

Code: Alles auswählen

Switch WAM350_1_Mute "Mute ist [%s]" { http="
                                             > [ ON:GET:http://ip_speaker:55001/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22on%22/%3E] 
                                             > [OFF:GET:http://ip_speaker:55001/UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetMute%3C/name%3E%3Cp%20type=%22str%22%20name=%22mute%22%20val=%22off%22/%3E] 
                                             < [http://ip_speaker:55001/UIC?cmd=%3Cname%3EGetMute%3C/name%3E:30000:XPATH(/UIC/response/mute)]" }
So kannst Du eher erkennen, was da passiert.
Der erste Teil ist der ausgehende Befehl, für den Fall, dass ON geschaltet wird.
Der zweite Teil ist der ausgehende Befehl, für den Fall, dass OFF geschaltet wird.
Der dritte Teil ist die Rückmeldung.
Teil eins und zwei habe ich 1:1 aus der verlinkten Anleitung übernommen.
Teil drei im Prinzip ebenso, nur das ich versucht habe, den wahrescheinlichen XPATH noch hinzuzufügen.

Code: Alles auswählen

MuteStatus1.0192.168.1.60publicon
sieht so gar nicht nach der korrekten Antwort aus.
Wenn Du im Browser diesen Link aufrufst: http://192.168.1.60:55001/UIC?cmd=%3Cna ... 3C/name%3E (ist 192.168.1.60 die korrekte IP?), wie sieht die exakte Antwort aus? Bitte unbedingt mit code-Tags posten ([code \] zu Beginn und [/code\] am Ende des Codes, aber jeweils ohne den \, der steht hier nur, damit das Tag lesbar ist ) Es sollte xml ausgeliefert werden. Mit welchem Browser bist Du unterwegs? evtl. musst Du die Anzeige auf raw umschalten, oder Dir den Quelltext der Antwort anschauen, um das vollständig zu Gesicht zu bekommen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Lani
Beiträge: 14
Registriert: 27. Mai 2020 07:10
Answers: 1

Re: Samsung Wireless Audio Multiroom API einbinden

Beitrag von Lani »

AHh so, ok, dann müsste ich nur das Item so einbinden.
Leider bin ich was Syntax angeht, sehr bescheiden und versuche aus den Beispielen abzukupfern.
Das wäre ja vom Aufwand her noch überschaubar, denn ich benötige ja nicht alle Befehle, welche möglich wären.

Habe den Link angeklickt und die Antwort als Quelltext hier eingefügt

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?><UIC><method>MuteStatus</method><version>1.0</version><speakerip>192.168.1.60</speakerip><user_identifier></user_identifier><response result="ok"><mute>off</mute></response></UIC>
hilft das ier weiter?

Code: Alles auswählen

22 - GetMute
Description: ---

Example:

curl 'http://ip_speaker:55001/UIC?cmd=%3Cname%3EGetMute%3C/name%3E' 
Xml string decoded:

<name>GetMute</name>
Wenn ich über den Browser die Links aufrufe funktioniert alles.. Benutze Chromium
Es kann ja nur ein kleiner blöder Fehler sein....

Ps. Danke dir für deinen Einsatz... du schreibst ja praktisch bei jedem Beitrag rein...Finde ich echt super von dir..sollte mehr so freundliche Leute wie dich geben.
Respekt!

Benutzeravatar
udo1toni
Beiträge: 13982
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Samsung Wireless Audio Multiroom API einbinden

Beitrag von udo1toni »

Jawohl, die Antwort hilft weiter :)
So sieht das aufgehübscht aus:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<UIC>
    <method>MuteStatus</method>
    <version>1.0</version>
    <speakerip>192.168.1.60</speakerip>
    <user_identifier></user_identifier>
    <response result="ok">
        <mute>off</mute>
    </response>
</UIC>
Und nun kan man schon mit blosem Auge den Pfad erkennen, /UIC/response/mute war also tatsächlich richtig geraten :)
Wichtig ist dann halt, dass Du xpath installierst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
udo1toni
Beiträge: 13982
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Samsung Wireless Audio Multiroom API einbinden

Beitrag von udo1toni »

Was noch möglich ist, dass Du POST statt GET verwenden musst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Lani
Beiträge: 14
Registriert: 27. Mai 2020 07:10
Answers: 1

Re: Samsung Wireless Audio Multiroom API einbinden

Beitrag von Lani »

Aufgehübscht verstehe sogar ich ein wenig was hier daher kommt ;-)
Gut geraten!!

Habe jetzt mal die
XPath Transformation (transformation-xpath - 2.5.5) mit PaperUI installiert...

Muss ich noch etwas machen damit es funktioniert?

Lani
Beiträge: 14
Registriert: 27. Mai 2020 07:10
Answers: 1

Re: Samsung Wireless Audio Multiroom API einbinden

Beitrag von Lani »

udo1toni hat geschrieben: 28. Mai 2020 14:33 Was noch möglich ist, dass Du POST statt GET verwenden musst.
HAb ich versucht...reagiert nicht¨ :roll:

Die Info in der Doku (https://www.openhab.org/v2.5/addons/tra ... ons/xpath/) ist für mich leider nicht hilfreich.
Muss ich jetzt eine Transformations Datei erstellen oder reicht die Installation des Xpath so aus?

Bisher habe ich lediglich das Shelly Binding installiert, vielleicht fehlt noch was? :shock:

Habe in beim HapPanel mit der Console folgende Warnung

Code: Alles auswählen

DevTools failed to load SourceMap: Could not load content for http://192.168.1.81:8080/habpanel/vendor/aCKolor.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
Keine Ahnung ob das etwas damit zu tun hat, aber man weiss ja nie ;-)


Habe den verdacht, dass es mit dem Port zu tun hat, bzw mit dem : davor.
Könnte das falsch interpretiert werden?

Antworten