NEWS
Bose Soundtouch steuern
-
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.
-
Danke, das werde ich demnächst probieren. Vielleicht gibt es ja eine erste Version für play-everywhere als Weihnachtsgeschenk
Gesendet von meinem A0001 mit Tapatalk
-
Falls das oben zu abstrakt war kann ich gern mal ein echtes Code-beispiel raussuchen
-
Hallo Leute.
Es gibt zwei neue Versionen auf Github:
- 0.0.10 - erster Versuch von multi-room (zone) playEverywhere
[https://github.com/SwedishChef1/iobroke … ball/zones](https://github.com/SwedishChef1/iobroker.bosesoundtouch/tarball/zones) Einfach den Status 'playEverywhere' im Master-Adapter auf TRUE setzen
-
0.1.1 - now playing: neuer Status 'art' (URL zum aktuellen Song/Album/Radiosender-Bild, falls vorhanden)
Sobald playEverywhere grob funktioniert (bitte um euer Feedback, ich konnte das mit nur einer Box nicht wirklich testen), werde ich das auf 'master' mergen.
-
Hallo und schönen 3 Advent euch allen.
Wie kann ich die playEverywhere Version installieren?
Ich bekomme immer 404 Fehler.
Wie muss der Link aussehen um es im Admin zu installieren?
Grüße,
Nanouk
-
Hallo Nanouk,
Sorry, ich hab die links einfach aus dem Browser kopiert. Sind in meinem vorigen Post korrigiert.
-
Wann stellst DU den Adapter den mal auf npm und ins ioBroker repo? Also für "latest" ist er allemal stabil genug!! das macht dann einiges einfacher
-
Wann stellst DU den Adapter den mal auf npm und ins ioBroker repo? Also für "latest" ist er allemal stabil genug!! das macht dann einiges einfacher `
Was ist hier zu tun? Brauche hier Unterstützung, soll ja auch das repo laut einem GitHub issue auf ioBroker.bosesoundtouch (großes B) umbenennen. Möchte nichts kaputt machen… -
Ok,
1.) Umbenennen: alles committen, lokal löschen, bei Github umbenennen, neu lokal auschecken
2.) npm … https://docs.npmjs.com/getting-started/ ... m-packages
3.) Repo: https://github.com/ioBroker/ioBroker.re ... positories
das github ioBroker.repositories forken auf Github, auschecken, Deinen Adapter eintragen (nimm einen der anderen als Blaupause), alphabetisch einsortieren und am besten erstmal nur ins "Latest" file. Dann Pull-Request stellen.
Vorher checke nochmal deine io-package.json (Authors sollte korrekt gefüllt sein) und package.json das da alles passt.
Und (falls nicht gemacht) Testing travis-ci.org/appveyor bei dir aktivieren
-
Ansonsten noch eine Idee: Macht es sinn die "presets" regelmäßig neu einzulesen? Einmal am Tag oder so?
Ich habe gestern bei mir was geändert und ioBroker kennt immer noch die Alten infos … Klar Adapter-Restart löst es, aber vllt so ein "Einmal am Tag" (oder in h konfigurierbar) wäre vllt sinnvoll.
Ingo