NEWS
Bose Soundtouch steuern
-
Hi Bluefox,
Danke, hab es schon gemerkt.
Gruß
Nanouk
-
Hi,
der Bose Soundtouch Wireless Link Adapter funktioniert auch.
Habe 3 ST10 und den W-Link Adapter erfolgreich eingebunden.
Daumenhoch
Gruß
Nanouk
-
Wenn Du Code hast der "Discovery" einer Bose macht (ich dachte da ging was per UDP oder so?) Dann schick mir den und ich baue es im Discovery Adapter ein `
Ich habe eventuell brauchbaren Code für den Discovery Adapter gefunden: https://github.com/CONNCTED/SoundTouch- … scovery.js -
Hi,
wenn ich über eine Szene alle Lautsprecher mit Preset 1 einschalte, habe ich ein ziemliches Lag.
Das liegt wohl daran dass jeder Lautsprecher für sich läuft und nicht als Multiroom Zone.
Du sagst Du hast die 1.0 API Dokumentation? 1.0.1 Seite 7 Punkt 6.5 /setZone und 6.6/addZoneSlave.
Ich hab nur leider absolut keine Ahnung was ich wo reinbauen muss :lol:
@SwedishChef: Vielleicht könntest Du das implementieren?
Ich teste dann gerne ob es funktioniert oder logge alles mit wenn es klemmt.
Es wäre auch kein Problem für mich nen Pi mit iobroker zum testen aufzusetzen und da selbst dran rum zu basteln, aber wie gesagt, mir fehlt jeglicher Ansatz.
Viele Grüße
Nanouk
-
Ich werde mir das Zusammenschalten zu einer Zone in den kommenden Tagen gerne ansehen.
Ich hab als API-Doku von Bose übrigens die Version 1.1.0
Gesendet von meinem A0001 mit Tapatalk
-
So, Discovery wäre in der Github Version vom Discovery Adapter mal drin. tests wären super. Bei mir tuts.
Wenn wir das releasen wollen müsste aber dann der Adapter mindestens auf NPM und im Latest-Repo drin sein.
Ansonsten: Hast Du schon geschaut mit meinem Debug warum die Track Infos nicht korrekt eingelesen werden?
-
Ich hab mir den Adapter auch problemlos installieren können.
Danke dafür. Bisher hatte ich ein Script um die Soundtouch zu steuern, aber so ist es deutlich schöner.
Eine Anregung hätte ich aber dennoch.
Könntest Du eventuell die StateChange Meldungen auf eine andere log Stufe setzen?
Ansonsten wird das log unnötig vollgeschrieben.
Bei mir lokal habe ich die entsprechende Zeile einfach auskommentiert, seitdem ist Ruhe im Log.
-
Ich denke Logging ist noch viel weil der Adapter noch sehr aktiv in der Entwicklung ist
-
Hallo Leute.
Auf GitHub ist die neue version 0.1.0 mit folgenden kleinen fixes:
@apollon77:Das "aktuell gespielte" wird bei mir nicht korrekt gefüllt. Es kommt laut Debug vom Gerät, wird aber alles leer geschrieben. ` Hat für 'BLUETOOTH' und 'INTERNET_RADIO' funktioniert, die Quelle 'STORED_MUSIC' fehlte aber.
Könntest Du eventuell die StateChange Meldungen auf eine andere log Stufe setzen?
Ansonsten wird das log unnötig vollgeschrieben. ` Geändert zu 'debug'.
Die Implementierung für Multi Room (Zones) gestaltet sich doch deutlich komplexer als zuerst gedacht, alleine schon deswegen, weil ich nur ein Gerät besitze und weitere Adapter-Instanzen zum Testen irgendwie faken muss.
Dazu eine Frage: Wie kann eine Adapterinstanz (z.B. '.0') einfach erfragen, welche bzw. wie viele andere Instanzen vorhanden sind, um dann deren states auszulesen? Für eine Funktion wie 'play everywhere' muss ich irgendwie die MAC- und IP-Adressen der anderen Adapterinstanzen abfragen.
Also für 'Zones' noch etwas Geduld…
-
Dazu eine Frage: Wie kann eine Adapterinstanz (z.B. '.0') einfach erfragen, welche bzw. wie viele andere Instanzen vorhanden sind, um dann deren states auszulesen? Für eine Funktion wie 'play everywhere' muss ich irgendwie die MAC- und IP-Adressen der anderen Adapterinstanzen abfragen. `
Ohne es im Detail getestet zu haben versuch mal in diese Richtung:
`adapter.objects.getObjectView('system', 'instance', {startkey: ''system.adapter.bosesoundtouch.', endkey: 'system.adapter.bosesoundtouch.\u9999'}, function (err, doc) { if (doc && doc.rows) { for (var i = 0; i < doc.rows.length; i++) { var id = doc.rows[i].id; var obj = doc.rows[i].value; console.log('Found ' + id + ': ' + JSON.stringify(obj)); } if (!doc.rows.length) console.log('No objects found.'); } else { console.log('No objects found: ' + err); } });`[/i][/i]
-
Hallo zusammen.
Habe eben den Adapter installiert und eingerichtet. Vielen Dank erst mal an alle die daran beteiligt sind. Habe nur eine Frage bezüglich der Radiosender. Presets 1-6 sind in Objekte vorhanden, lassen sich aber nicht wirklich durch irgendwelche Widgets in Vis ansteuern. Oder mache ich da irgendwas verkehrt? Danke im voraus für eure Hilfe.
Gruß Markus
Gesendet von meinem HUAWEI NXT-L29 mit Tapatalk
-
Hi Master77,
versuch über vis in das Objekt key des Adapters den Wert PRESET_1 zu schreiben.
Du könntest Dir in vis einen Schalter on/off machen und dann jeweils Preset Buttons.
Die Preset Buttons nutzt Du um in den objetcs bei key den jeweiligen Wert PRESET_1 bis PRESET_6 zu schreiben.
Gruß
Nanouk
PS: Ich kann gerne heute abend noch mal schauen, bin gerade auf dem Sprung zur Arbeit
-
Ich kann gerne heute abend noch mal schauen, bin gerade auf dem Sprung zur Arbeit `
Das wäre echt super wenn du dir das mal ansehen könntest. Habe gestern alles mögliche ausprobiert jedoch ohne Erfolg.
Gruß Markus
Gesendet von meinem HUAWEI NXT-L29 mit Tapatalk
-
Die Info von Nanouk ist korrekt. bei mir geht das genau so.
-
Die Implementierung für Multi Room (Zones) gestaltet sich doch deutlich komplexer als zuerst gedacht, alleine schon deswegen, weil ich nur ein Gerät besitze und weitere Adapter-Instanzen zum Testen irgendwie faken muss.
Dazu eine Frage: Wie kann eine Adapterinstanz (z.B. '.0') einfach erfragen, welche bzw. wie viele andere Instanzen vorhanden sind, um dann deren states auszulesen? Für eine Funktion wie 'play everywhere' muss ich irgendwie die MAC- und IP-Adressen der anderen Adapterinstanzen abfragen.
Also für 'Zones' noch etwas Geduld… `
Alternative wäre das der eine Adapter einfach mit mehreren Bose-geräten kommuniziert. Also am Ende vergleichbar zum Sonos Adapter.
Man müsste also mehrere IPs angeben können … dann hast Du alle in einem Adapter und kennst alles.
-
Hallo zusammen. So, ich habe mich eben nochmal ran gesetzt und alles ausprobiert. Wie zuvor funktioniert das Umschalten der Radiosender nicht. Egal was ich dem Schalter zuordnen. (Unter Presets 1 iconUrl, name oder source). Was machen ich falsch? Im Anhang ein Bild meiner Objekte. Danke im voraus für eure Hilfe.
Gruß Markus
![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201711 ... ebff99.jpg">https://uploads.tapatalk-cdn.com/20171128/7f552f3e4c606cb464166b353debff99.jpg</link_text>" /> -
Schau mal auf Deinem Screenshot unter den Preset Ordnern.
Da steht "key"
Den Datenpunkt musst Du auswählen.
Über vis nun mit einem widget den entsprechenden Preset Wert schreiben.
Probier mal das widget:
[{"tpl":"tplJquiRadioList","data":{"oid":"bosesoundtouch.0.key","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":true,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"PRESET_1","texts":"Preset 1","signals-cond-0":"consist","signals-val-0":"","signals-icon-0":"","signals-icon-size-0":"76","signals-blink-0":true,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"not consist","signals-val-1":"radioffh","signals-icon-1":"/vis/img/radiobuttons/ffh.jpg","signals-icon-size-1":"75","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,"signals-oid-0":"","signals-oid-1":"javascript.0.RadioURL","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},"style":{"left":"629px","top":"245px","border-width":"","width":"76px","height":"76px","z-index":"4"},"widgetSet":"jqui"}]
Der vis Button ist jetzt nur quick'n'dirty, aber funktionieren sollte er.
Gruß
Nanouk
PS:
Die Punkte in den Preset Ordnern helfen Dir evtl. beim optischen Gestalten in vis.
Für die Funktion "Preset 1" abspielen sind sie aber nicht nötig.
Das wird über den Wert in "key" gesteuert.
-
@SwedishChef. Schon das neue Bose-Developer Portalund das letzte API update gesten?
API kann jetzt bei Lifestyles auch die echten EIngänge Switchen. UND es gibt eine "Audio Notification API" wo man Notofy-Sounds (custom mp3-File/Stream oder so) angeben kann und "Texte" das wird dann abgespielt und danach der normale stream fortgesetzt …
Welcome "sayit" in besser als Sonos ;-))
-
@SwedishChef. Schon das neue Bose-Developer Portalund das letzte API update gesten? `
Ja, hab mir das Portal und die neue Doku kurz angesehen. Leider komme ich aktuell nicht dazu, den Adapter zu erweitern. Meine ersten Versuche, ein Play-everywhere zu realisieren, scheiterten am Zusammensammeln der jeweiligen states - alles asynchronWie kann ich mehrere states abfragen, die Ergebnisse sammeln und - wenn alles beisammen ist - eine Aktion starten? Die einzelnen Instanzen bekomme ich mit getObjectView(), aber der Rest ist mühsam… Und wie gesagt, es fehlt aktuell ein wenig die Zeit. In den Weihnachtsferien gehts hoffentlich weiter.
-
Solche "schleifen" kann man asynchron grob (pseudocode) so machen:
Am besten ein Array definieren mit dem was man abfragen will.
function doIt(thingsToDoArray, callback) {
-> Wenn thingsToDoArray.length === 0 dann callback() und return
-> mit thingsToDoArray.shift das erste Array-Element holen, rest-Array wird automatisch verkürzt
-> Array element verarbeiten, ggf asynchron und für nächsten Schritt wieder "doIt(thingsToDoArray, callback)" aufrufen
und ausserhalb rufst Du einmal doIt(thingsToDoArray,callBackFunctionFürNachEnde) auf
Damit wird die "doIt" so lange aufgerufen bis dann abzuarbeitende Array leer ist und danach wird die "callBackFunctionFürNachEnde" aufgerufen.
Die Ergebnisse kann man in einer globalen Variable ablegen oder schiebst noch ein arameter durch der dann am Ende ans das callback übergeben wird.