NEWS
Neuer Adapter: Yamaha MusicCast
-
Hallo zusammen,
habe seit einer Woche jetzt auch ein Yamaha AVR/Multiroom-System (RX-A 1080 + 4 Stück WX-021 (2 davon Surround-Back-LS))
Habe nun den MusicCast-Adapter in Betrieb genommen und mich durch die DP gearbeitet. Soweit erstmal alles klar.
VIELEN DANK AN KLAUS FÜR DIE TOLLE ARBEIT
Bei einem Punkt brauche ich aber Eure Hilfe: Wie kann ich Räume verlinken bzw. wieder aufheben?
Danke vorab!
Grüße
Frank
-
@frank2604 sagte in Neuer Adapter: Yamaha MusicCast:
Wie kann ich Räume verlinken bzw. wieder aufheben?
Meinst du Räume gruppieren?
Dies geht mit dem Adapter nicht.
Muss du manuell mit einem Script machen.
mfg
-
Hallo Dieter,
Danke für Deine Rückmeldung.
Hmm, mit Skripten kenne ich mich nicht aus. Hättest Du die Nerven, mich dabei an die Hand zu nehmen?
Frank
-
Hallo,
du musst dir die api Befehle für dein Modell bei deinem Verkäufer besorgen.
Direkt bei yamaha funktioniert dies i.d.R. nicht. Diese fragen deinen Verkäufer und senden letztendlich die api an deinen Händler.Nach mehrmaligen Mails mit yamaha (und diese haben das dann intern abklären müssen) hab ich die api für mein Modell vom Händler als auch von yamaha bekommen.
Diese musst du zuerst besorgen.
Und dann halt versuchen ein script zu erstellen.mfg
-
OK, klingt als hättest Du das "Räume gruppieren" bei Dir so umgesetzt. Werde mich um die api Befehle kümmern. Hast Du eventuell eine Beispiel für ein solches Skript?
Danke & Grüße
Frank
-
// ************************************************************************************************************************************************** // Yamaha - Gruppe einstellen und löschen per Script // @ 2019_02 bahnuhr // ************************************************************************************************************************************************** // Variablen var v_server = "", v_client = [], v_random = "", i_ende = 120, logging = false, request = require('request'); // ************************************************************************************************************************************************** // Trigger // ************************************************************************************************************************************************** on({id: "javascript.0.Status.Yamaha.Gruppe.einstellen", change: "ne", val: true}, function() { start_setzen(); }); on({id: "javascript.0.Status.Yamaha.Gruppe.loeschen", change: "ne", val: true}, function() { start_loeschen(); }); // ************************************************************************************************************************************************** // Programme Start - setzen und löschen // ************************************************************************************************************************************************** function start_setzen() { // Ablauf des Scriptes // Master und Client ermitteln Master_ermitteln(); Client_ermitteln(); v_random = ""; for (x=1; x<=32; x++) v_random = v_random + String(Math.floor(Math.random() * 10)); if (logging) log('start_setzen: v_random = ' + v_random); if (v_server !== "" && v_client.length > 0) { MusicCast_Client_setzen(); MusicCast_Master_setzen(); } else log("start_setzen: Gruppe nicht gesetzt !"); // prüfen ob mindestens 1 Server und 1 Client gesetzt ist Lautstaerke_setzen(); pruefen_client_gesetzt(); } function start_loeschen() { // Client loeschen for (x = 110; x <= i_ende ; x++) pruef_client(x); // 1. und letzte IP -> 192.168.243..... // Master loeschen und Distribution stop for (x = 110; x <= i_ende ; x++) pruef_master(x); // 1. und letzte IP -> 192.168.243..... setState('javascript.0.Status.Yamaha.Gruppe.Mitteilung', "Gruppe gelöscht."); setStateDelayed('javascript.0.Status.Yamaha.Gruppe.Mitteilung', "", 3000); } // ************************************************************************************************************************************************** // Unterprogramme Starten // ************************************************************************************************************************************************** function Master_ermitteln() { if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Wohnzimmer').val) v_server = "192.168.243.110"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Schlafzimmer').val) v_server = "192.168.243.111"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Philipp').val) v_server = "192.168.243.112"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Buero').val) v_server = "192.168.243.113"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Bad_EG').val) v_server = "192.168.243.114"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Kueche').val) v_server = "192.168.243.115"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Fitnessraum').val) v_server = "192.168.243.116"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Hobbyraum').val) v_server = "192.168.243.117"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Gaeste-WC').val) v_server = "192.168.243.118"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Sauna').val) v_server = "192.168.243.119"; else if (getState('javascript.0.Status.Yamaha.Gruppe.Master_Test2').val) v_server = "192.168.243.120"; if (logging) log('Master_ermitteln: v_server = ' + v_server); return v_server; } function Client_ermitteln() { v_client = []; if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Wohnzimmer').val && getState('ping.0.Asus-Buero.192_168_243_110').val) v_client.push ("192.168.243.110"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Schlafzimmer').val && getState('ping.0.Asus-Buero.192_168_243_111').val) v_client.push ("192.168.243.111"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Philipp').val && getState('ping.0.Asus-Buero.192_168_243_112').val) v_client.push ("192.168.243.112"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Buero').val && getState('ping.0.Asus-Buero.192_168_243_113').val) v_client.push ("192.168.243.113"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Bad_EG').val && getState('ping.0.Asus-Buero.192_168_243_114').val) v_client.push ("192.168.243.114"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Kueche').val && getState('ping.0.Asus-Buero.192_168_243_115').val) v_client.push ("192.168.243.115"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Fitnessraum').val && getState('ping.0.Asus-Buero.192_168_243_116').val) v_client.push ("192.168.243.116"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Hobbyraum').val && getState('ping.0.Asus-Buero.192_168_243_117').val) v_client.push ("192.168.243.117"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Gaeste-WC').val && getState('ping.0.Asus-Buero.192_168_243_118').val) v_client.push ("192.168.243.118"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Sauna').val && getState('ping.0.Asus-Buero.192_168_243_119').val) v_client.push ("192.168.243.119"); if (getState('javascript.0.Status.Yamaha.Gruppe.Client_Test').val && getState('ping.0.Asus-Buero.192_168_243_120').val) v_client.push ("192.168.243.120"); if (logging) log('Client_ermitteln: v_client = ' + v_client.join(', ')); return v_client; } function MusicCast_Client_setzen() { for (x=0; x < v_client.length ; x++) { var options = {uri: 'http://' + v_client[x] + '/YamahaExtendedControl/v1/dist/setClientInfo', method: 'POST', json: {group_id:v_random, zone:"main", server_ip_address: v_server }}; request(options); if (logging) log('MusicCast_Client_setzen: v_client = ' + v_client[x]); } } function MusicCast_Master_setzen() { // Master setzen var options = {uri: 'http://' + v_server + '/YamahaExtendedControl/v1/dist/setServerInfo', method: 'POST', json: {group_id:v_random, zone:"main", type:"add", client_list:[v_client]}}; request(options); // Distribution starten request('http://' + v_server + '/YamahaExtendedControl/v1/dist/startDistribution?num=0'); // prüfen ob "working" setTimeout(function() { request('http://' + v_server + '/YamahaExtendedControl/v1/dist/getDistributionInfo', function (error, response, body) { if (!error && response.statusCode == 200) { var obj = JSON.parse(body); if (logging) log ("MusicCast_Master_setzen: "+ v_server + ": obj.role = " + obj.role + " / obj.status = " + obj.status); if (obj.role == "server" && obj.status == "working") { setState('javascript.0.Status.Yamaha.Gruppe.Mitteilung', "Gruppe erstellt."); setStateDelayed('javascript.0.Status.Yamaha.Gruppe.Mitteilung', "", 3000); } else { setState ('javascript.0.Status.Yamaha.Gruppe.Mitteilung', "Gruppe nicht erstellt."); setStateDelayed('javascript.0.Status.Yamaha.Gruppe.Mitteilung', "", 3000); } } }); },2000); } function pruefen_client_gesetzt() { setTimeout(function() { for (x = 110; x <= i_ende ; x++) { // 1. und letzte IP -> 192.168.243..... pruefen_client_unter(x); } },3000); } function pruefen_client_unter(x) { if (getState('ping.0.Asus-Buero.192_168_243_' + x).val) { request('http://192.168.243.' + x + '/YamahaExtendedControl/v1/dist/getDistributionInfo', function (error, response, body) { if (!error && response.statusCode == 200) { var obj = JSON.parse(body); if (obj.group_id == "00000000000000000000000000000000" && (obj.role == "none" || obj.role == "client") ) { if (x == 110) setState('javascript.0.Status.Yamaha.Gruppe.Client_Wohnzimmer', false); if (x == 111) setState('javascript.0.Status.Yamaha.Gruppe.Client_Schlafzimmer', false); if (x == 112) setState('javascript.0.Status.Yamaha.Gruppe.Client_Philipp', false); if (x == 113) setState('javascript.0.Status.Yamaha.Gruppe.Client_Buero', false); if (x == 114) setState('javascript.0.Status.Yamaha.Gruppe.Client_Bad_EG', false); if (x == 115) setState('javascript.0.Status.Yamaha.Gruppe.Client_Kueche', false); if (x == 116) setState('javascript.0.Status.Yamaha.Gruppe.Client_Fitnessraum', false); if (x == 117) setState('javascript.0.Status.Yamaha.Gruppe.Client_Hobbyraum', false); if (x == 118) setState('javascript.0.Status.Yamaha.Gruppe.Client_Sauna', false); if (x == 119) setState('javascript.0.Status.Yamaha.Gruppe.Client_Gaeste-WC', false); if (x == 120) setState('javascript.0.Status.Yamaha.Gruppe.Client_Test2', false); if (logging) log ("pruefen_client_gesetzt: Anzeige VIS - client " + x + " auf false gesetzt!"); } else { if (logging) log ("pruefen_client_gesetzt: Anzeige VIS - client " + x + " alles ok!"); } } }); } } // ************************************************************************************************************************************************** // Unterprogramme Löschen // ************************************************************************************************************************************************** function pruef_client(x) { if (getState('ping.0.Asus-Buero.192_168_243_' + x).val) { request('http://192.168.243.' + x + '/YamahaExtendedControl/v1/dist/getDistributionInfo', function (error, response, body) { if (!error && response.statusCode == 200) { var obj = JSON.parse(body); if (logging) log ("löschen - pruef_client 192.168.243." + x + ": obj.group_id = " + obj.group_id + " / obj.role = " + obj.role); if (obj.group_id != "00000000000000000000000000000000" && obj.role == "client") MusicCast_Client_loeschen(x); } }); } } function MusicCast_Client_loeschen(x) { var options = {uri: 'http://192.168.243.' + x + '/YamahaExtendedControl/v1/dist/setClientInfo', method: 'POST', json: {group_id:""}}; if (logging) log ("MusicCast_Client_loeschen: Client 192.168.243." + x + ": gelöscht!"); request(options); } function pruef_master(x) { if (getState('ping.0.Asus-Buero.192_168_243_' + x).val) { request('http://192.168.243.' + x + '/YamahaExtendedControl/v1/dist/getDistributionInfo', function (error, response, body) { if (!error && response.statusCode == 200) { var obj = JSON.parse(body); if (logging) log ("löschen - pruef_master 192.168.243." + x + ": obj.group_id = " + obj.group_id + " / obj.role = " + obj.role); if (obj.group_id != "00000000000000000000000000000000" && obj.role == "server") MusicCast_Master_loeschen(x); } }); } } function MusicCast_Master_loeschen(x) { // Distribution stop request('http://192.168.243.' + x + '/YamahaExtendedControl/v1/dist/stopDistribution'); var options = {uri: 'http://192.168.243.' + x + '/YamahaExtendedControl/v1/dist/setServerInfo', method: 'POST', json: {group_id:""}}; if (logging) log ("MusicCast_Master_loeschen: Master 192.168.243." + x + ": gelöscht!"); request(options); } // ************************************************************************************************************************************************** // Sonstiges // ************************************************************************************************************************************************** function Lautstaerke_setzen() { request('http://' + v_server + '/YamahaExtendedControl/v1/main/getStatus', function (error, response, body) { if (!error && response.statusCode == 200) { var obj = JSON.parse(body); if (v_server == "192.168.243.110") { setState("musiccast.0.RX-V685_0DA87303.main.volume", 71); if (logging) log ("Lautstaerke_setzen: Master: 192.168.243.110 Lautstärke gesetzt auf: 71"); Laut_Master_volume = 26; } else { Laut_Master_volume = obj.volume; if (logging) log ("Lautstaerke_setzen: Master: " + v_server + " Lautstärke ist: " + obj.volume); } for (x=0; x < v_client.length ; x++) { if (v_client[x] == "192.168.243.110") { setState("musiccast.0.RX-V685_0DA87303.main.volume", 71); if (logging) log ("Lautstaerke_setzen: Client: " + v_client[x] + " Lautstärke gesetzt auf: 71"); } else { request('http://' + v_client[x] + '/YamahaExtendedControl/v1/main/setVolume?volume='+ Laut_Master_volume); if (logging) log ("Lautstaerke_setzen: Client: " + v_client[x] + " Lautstärke ist: " + Laut_Master_volume); } } } }); }
Und in VIS sieht es so aus:
Aufnahme_2019_05_12_08_39_05_53.mp4
Ist aber nicht einfach zu verstehen.
Du musst die Variablen manuell anlegen.
Weiterhin hab ich ping eingebaut um zu ermitteln ob die Lautsprecher am Netz sind.
Daneben musst du noch ein Script schreiben, das nur 1 x Master zulässt.
Weiterhin müssen die Lautsprecher aufsteigende IP haben.Fazit:
Wollte es eigentlich nicht zur Verfügung stellen, da es doch äußerst auf mich abgestimmt ist.
Aber vielleicht kommst du damit zurecht.mfg
Nachtrag:
Und wenn dem Entwickler "foxthefox" die api Bausteine gefallen, dann kann er diese gerne verwenden.
Aber dann kann er ja auch mal bei Verwendung meiner Script - Bausteine meinen forum Namen ja zumindest mal erwähnen. -
Hallo Dieter,
Danke für Deine Hilfe, aber da steige ich aus. Dann lässt sich das für mich leider nicht mit ioBroker umsetzen. Muss ich zum Gruppieren der Räume dann doch zum iPhone greifen.
Trotzdem nochmals Danke.
Frank
-
Hier noch ein Hinweis für Klaus:
Der musiccast-Adapter bekommt nicht mit, wenn der Receiver über HDMI-CEC an- oder ausgeschaltet wurde. Der Status vom DP power ändert sich nur bei Bedienung über die Yamaha FB.
Der Yamaha-Adapter hingegen schaltet auch bei HDMI-CEC den DP power um.
Habe daher vorübergehend den Yamaha-Adapter mit hinzugenommen. Falls man das lösen kann, würde ich aber gerne nur den musiccast verwenden.
Grüße
Frank
-
Hi,
ich glaube, ich leide an einem ähnlichen Problem:
Ich nutze 5 Musiccast Komponenten. Darunter ist ein Receiver sowie weitere Lautsprecher.
Auf meinem iobroker Dashboard habe ich Schalter, um die einzelnen Lautsprechern ein/aus zu schalten. Der Schalter funktioniert zwar, zeigt aber normalerweise den falschen Status an, wenn der Lautsprecher zB über die Musiccast App angeschalten wurde. Gibt es hier noch etwas zum Einstellen?VG & Danke
-
Ich habe auch probleme mit dem MusicCast adapter, weil er keine Status-Änderungen mitbekommt. Als Notlösung habe ich jetzt einen Status eingebaut, mit dem man ein einfaches Refresh von außen anstoßen kann (das kann man dann leicht über javascript-Timer machen).
Evtl. bau ich das Polling mit Intervall noch direkt da ein.
Hier sieht man meine Änderung (einfach triggerForceRefresh=true setzen macht den refresh):
https://github.com/mghomedev/ioBroker.musiccast -
Hallo, wie wird das Widget konfiguriert?
Clock wird bei mir nicht angezeigt? -
@sigi234 sagte in Neuer Adapter: Yamaha MusicCast:
Hallo, wie wird das Widget konfiguriert?
Clock wird bei mir nicht angezeigt?Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._settlePromiseFromHandler (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:529:17) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._resolveCallback (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:437:57) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._fulfill (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:643:18) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._settlePromises (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:699:18) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._settlePromise0 (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:619:10) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._settlePromise (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:574:18) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._settlePromiseFromHandler (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:529:17) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._resolveCallback (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:437:57) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._fulfill (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:643:18) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._settlePromises (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:700:18) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._fulfillPromises (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:674:14) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._settlePromise (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:574:18) Caught 2019-09-06 23:53:39.162 error by controller[3]: at Promise._settlePromiseFromHandler (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\promise.js:517:31) Caught 2019-09-06 23:53:39.162 error by controller[3]: at tryCatcher (C:\ioBroker\node_modules\iobroker.musiccast\node_modules\bluebird\js\release\util.js:16:23) Caught 2019-09-06 23:53:39.162 error by controller[3]: at C:\ioBroker\node_modules\iobroker.musiccast\main.js:3240:125 Caught 2019-09-06 23:53:39.162 error by controller[3]: Unhandled rejection TypeError: Cannot read property 'preset' of undefined
-
@sigi234 sagte in Neuer Adapter: Yamaha MusicCast:
Hallo, wie wird das Widget konfiguriert?
Clock wird bei mir nicht angezeigt?Clock kommt nur bei den neuen Lautsprechern.
Also "WX-021"
Bei "WX-010" oder "WX-030" kommt clock nicht.Zumindest bei mir so.
-
@Coffeelover sagte in Neuer Adapter: Yamaha MusicCast:
Auf meinem iobroker Dashboard habe ich Schalter, um die einzelnen Lautsprechern ein/aus zu schalten. Der Schalter funktioniert zwar, zeigt aber normalerweise den falschen Status an, wenn der Lautsprecher zB über die Musiccast App angeschalten wurde. Gibt es hier noch etwas zum Einstellen?
Nehmt das Musiccast Widget. Damit geht das ein-/ausschalten einwandfrei !
[{"tpl":"tplMusiccastBool","data":{"oid":"musiccast.0.WX-010_03B558C3.main.power","g_fixed":false,"g_visibility":true,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":"true","visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"value_false":"standby","value_true":"on","click_id":"musiccast.0.RX-V685_0DA87303.main.power","false_text":"Standby","true_text":"Power on","false_src":"","true_src":"","imageHeight":"70","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"visibility-oid":"ping.0.Asus-Buero.192_168_243_203"},"style":{"left":"1080px","top":"580px","width":"110px","height":"25px","z-index":"5","font-size":"15px","line-height":"22px"},"widgetSet":"musiccast"}]
-
@bahnuhr said in Neuer Adapter: Yamaha MusicCast:
Nehmt das Musiccast Widget. Damit geht das ein-/ausschalten einwandfrei !Das hilft leider nichts - ich nutze bereits zb. den Boolstat aus dem Musiccast Widget.
-
@Coffeelover sagte in Neuer Adapter: Yamaha MusicCast:
Das hilft leider nichts - ich nutze bereits zb. den Boolstat aus dem Musiccast Widget.
Merkwürdig.
Bei mir klappt dies einwandfrei. -
@bahnuhr auch wenn du über die App am Handy anschaltest? Schalten kann ich ja auch, nur übernimmt er den Status nicht.
-
@Coffeelover sagte in Neuer Adapter: Yamaha MusicCast:
@bahnuhr auch wenn du über die App am Handy anschaltest? Schalten kann ich ja auch, nur übernimmt er den Status nicht.
Ja, auch das funktioniert einwandfrei mit der android app.
Frage:
Hast du auch die betaversion der android app auf dem handy installiert? -
@bahnuhr von Musiccast habe ich keine Beta installiert. Kann ich aber mal testen, wenn das helfen könnte. Hast du noch besondere Einstellungen für den Schalter gesetzt? Oder im Adapter irgendwas?
-
@Coffeelover sagte in Neuer Adapter: Yamaha MusicCast:
@bahnuhr von Musiccast habe ich keine Beta installiert. Kann ich aber mal testen, wenn das helfen könnte. Hast du noch besondere Einstellungen für den Schalter gesetzt? Oder im Adapter irgendwas?
Reden wir von dem selben?
Es gibt für Android Handy die iobroker app.
Und hierbei kann man sich im playstore als betatester melden.
Und dann kannst du die neueste app (als Tester) installieren.Und diese App kann dies alles.
mfg