NEWS
Aufruf an alle Nutzer von Bose Soundtouch / Teufel Raumfeld / Sonos / …
-
Aber, wenn ich das richtig verstehe, schreit das ja mehr nach einem 'spezial' upnp Adapter, als nach Scripten.
Klar kann man zum testen jetzt etwas mit den Scripts arbeiten. ABER wäre das nicht einfacher für die Benutzer , wenn das ein Adapter wäre. `
Noch einen Adapter will ich vermeiden. Ich sehe jetzt auch nicht was es verinfachen würde noch einen Adapter zu bauen der das selbe macht nur "versteckt".Da kann man jedes Media Gerät in den Settings einfügen und der Adapter macht die nötigen Objekte zu Steuerung. Die Auswahl für die Geräte könnte sogar vom upnp Adapter her kommen. `
Das ist genau mein Ziel, der Adapter soll am Ende alles von sich aus machen. Es soll nicht mal nötig sein irgendwelche Gerät eintragen zu müssen.Am Ende soll in den Einstellungen eine Checkbox sein, wenn die Aktiviert ist werden Automatisch für alle Geräte, auch nicht Media Geräte (FritzBox, Epson Drucker, …), entsprechende Skripte geladen, angepasst und Aktiviert.
-
Ja gut soweit; aber den Teil mit den Scripten verstehe ich noch nicht.
Was können die Javascripte, was Dein Adapter nicht kann? (Vielleicht steh ich gerade auf dem Schlauch(Sind vielleicht die Medikamente(Ist aber auch egal)))
-
@Jey Cee:Eventuell sogar die Skripte Automatisch dort zu Platzieren und gleich die notwendigen ID's anpassen. Damit es wirklich Plaug and Play ist. `
Wenn du dafür nen Tip brauchst, meld dich. Ich habe das schon gemacht (ein Skript erstellt ein anderes und führt es aus).Stimme ykuendig aber in seinem Argument zu. Für unbedarfte Nutzer ist es einfacher, auf das [+] in der Adapterliste zu klicken und ein Gerät aus nem Dropdown auszuwählen, als im JS-Adapter Skripte zu verwalten (hier muss man auch noch den richtigen Engine-Typ auswählen etc…)
Die Hemmschwelle, Code zu kopieren und anzupassen, wird deutlich höher sein. Dann wird hier oder da ein " vergessen und schon muss nach Hilfe geschrien werden.
-
Ja gut soweit; aber den Teil mit den Scripten verstehe ich noch nicht.
Was können die Javascripte, was Dein Adapter nicht kann? (Vielleicht steh ich gerade auf dem Schlauch(Sind vielleicht die Medikamente(Ist aber auch egal))) `
Der Adapter stellt nur die Kommunikation bereit. Upnp ist ein relativ Komplexes Konstrukt, was es wiederum sehr Universell macht, daher auch der Name "Universal-plug-and-play". Um hier keine Verluste zu erzeugen, Bilde ich die Schnittstellen Beschreibung der Geräte in den ioBroker Objekten ab. Diese Schnittstellen Beschreibungen werden von dem jeweiligen Gerät als xml ausgeliefert, diese wiederum sind immer nach dem selben Schema aufgebaut. Für Unterschiedliche Geräte/Dienste gibt es auch Unterschiedliche Schemas die von einem Komitee festgelegt werden und allen zugänglich sind.Ich habe mehr als 50% der Entwicklungszeit darauf verwendet die Struktur zu verstehen und in ioBroker logik zu übersetzen.
Die Skripte dienen nur noch zur Steuerung innerhalb von ioBroker, während die Kommunikation vom upnp Adapter übernommen wird.
Im Grunde könnte auch auf die Skripte verzichtet werden und direkt über den upnp Adapter kommuniziert werden. Nur ist es für die meissten zu Kompliziert die Struktur zu verstehen und damit zu Arbeiten.
Die Skripte sind Eigentlich nur eine Vereinfachung und Vereinheitlichung um dem Modularen Prinzip das ioBroker zu grunde liegt zu entsprechen.
Es wäre auch möglich Adapter zu schreiben die die Objekte vom upnp Adapter zur Kommunikation mit dem Gerät nutzen, während der Adapter sich um die Logik kümmert und noch andere Schnittstellen, die nicht via upnp verfügbar sind, einbindet.
@Jey Cee:Eventuell sogar die Skripte Automatisch dort zu Platzieren und gleich die notwendigen ID's anpassen. Damit es wirklich Plaug and Play ist.
Wenn du dafür nen Tip brauchst, meld dich. Ich habe das schon gemacht (ein Skript erstellt ein anderes und führt es aus).
Immer her damit. -
Poste ich hier, sobald ich daheim bin.
-
@Jey Cee:Doch die gibt es, hab sie gerade gefunden:
get_Objekt.PNG `
Schicke dir gleich meinen Export. Sind immerhin 2,4MB json File.
Du bekommst eine PN.
-
So langsam wächst das Fleisch am Knochen.
Wie wäre denn - nur mal lose als Idee - wenn der upnp (oder ein Partner-) Adapter die 'einfache' Gerätestruktur einfach als Objekte(gruppe) erstellt und pollt und mit den Geräten kommuniziert. Für jedes per Dropdown ausgewählte Gerät wird ein Objekt-Gerät aufgebaut. Neben oder ohne den Monster-Baum vom upnp.
Dann kann ein jeder von vis oder manuell oder - wer mag - auch mit Scripten draufhauen, nach gutdünken.
-
@Jey Cee:Immer her damit.
`
Bittesehr:
`for (var i = 0; i < scripts.length; i++) { script = scripts[i]; bData = b64.toByteArray(script.data); buffer = new Buffer(bData); obj = getObject("script.js." + script.name); obj.common.source = buffer.toString(); setObject("script.js." + script.name, obj) }` scripts ist bei mir ein Array von Objekten dieser Form: `~~[code]~~{ name: "ScriptName", data: "<base64 encoded/string="">" } [/code]</base64>` Essentiell sind die letzten 3 Zeilen, wo dein Code (source) herkommt ist eigentlich wurst.[/i]
-
Habe Bose im ganzen Haus verteilt. Steuer diese über Mediola zur Zeit. Über CCU geht es auch. Bin leider zur Programmierung nicht zu gebrauchen, nur copy and past aus dem Netz. Braucht ihr die ganzen Steuerbefehle?? Wie kann ich euch trozdem helfen, ein funktionierender Adapter für meine Bose wäre toll, bzw. halt einer für viele Syteme.
-
für die Bose Soundtouch nutze ich derzeit dieses Script zum Einstellen der Lautstärke und des Preset.
Vielleicht hilft es…
createState('Bose.Volume', 10); createState('Bose.Preset_1', {type: 'boolean'}); createState('Bose.Preset_2', {type: 'boolean'}); createState('Bose.Preset_3', {type: 'boolean'}); function PresetSetzen(pWert) { var BodyString = '<key state="release" sender="Gabbo">' + pWert + '</key>'; var request = require('request'); request.post({ url: 'http://192.168.xxx.xx:8090/key', //body: '<volume>20</volume>' body: BodyString }, function(error, response, body) { if (error) log(error, 'error'); }); } function VolumeSetzen(pWert) { var BodyString = '<volume>' + pWert + '</volume>'; var request = require('request'); request.post({ url: 'http://192.168.xxx.xx:8090/volume', //body: '<volume>20</volume>' body: BodyString }, function(error, response, body) { if (error) log(error, 'error'); }); } on ({id: "javascript.0.Bose.Volume", change: "ne"}, function () { lVolume = getState("javascript.0.Bose.Volume"); VolumeSetzen(lVolume.val); }); on ({id: "javascript.0.Bose.Preset_1", val: true}, function () { PresetSetzen('PRESET_1'); setState("javascript.0.Bose.Preset_1", false); }); on ({id: "javascript.0.Bose.Preset_2", val: true}, function () { PresetSetzen('PRESET_2'); setState("javascript.0.Bose.Preset_2", false); }); on ({id: "javascript.0.Bose.Preset_3", val: true}, function () { PresetSetzen('PRESET_3'); setState("javascript.0.Bose.Preset_3", false); });
-
Habe Bose im ganzen Haus verteilt. Steuer diese über Mediola zur Zeit. Über CCU geht es auch. Bin leider zur Programmierung nicht zu gebrauchen, nur copy and past aus dem Netz. Braucht ihr die ganzen Steuerbefehle?? Wie kann ich euch trozdem helfen, ein funktionierender Adapter für meine Bose wäre toll, bzw. halt einer für viele Syteme. `
Du kannst den upnp Adapter installieren und dann den Objektbaum vom upnp Adapter Exportieren und mir per email zu schicken.
Hier siehst du wo der Button für das Exportieren ist: http://forum.iobroker.net/viewtopic.php?p=58107#p58107
Meine email ist jey-cee@live.com
-
@Jsy-cee ich hab hier 'nur' Sonos und ev. ne xbox (wenn wir die mal wieder anschmeissen). Sonos-Export wirst Du wohl kaum brauchen, oder doch?
-
@Jsy-cee ich hier 'nur' Soios und dv ne xbox (wenn wir die mal wieder anschmeissen). Sonos-Export wurst Du wohl kaum brauchen, oder doch? `
Was nimmst du ein - und wo gibt es das :mrgreen:Gruß
Rainer
-
@Jsy-cee ich hier 'nur' Soios und dv ne xbox (wenn wir die mal wieder anschmeissen). Sonos-Export wurst Du wohl kaum brauchen, oder doch?
Was nimmst du ein - und wo gibt es das :mrgreen:
Du schläfst wohl nie?Wie ich am korrigieren bin, hast Dus schon gelesen.. ich werd irre.
– im nächsten Leben werd ich Erfinder, und erfind den Computerfuzzis ordentliche Tastaturen für die Tablets --
-
-
Wird eher nichts. Aber Du / Ihr da drüben könnt ja den Sch…(Text) diktieren. Mit oder ohne Alexa. Das mach ich wohl auch erst im nächsten Leben...
-
@Jsy-cee ich hab hier 'nur' Sonos und ev. ne xbox (wenn wir die mal wieder anschmeissen). Sonos-Export wirst Du wohl kaum brauchen, oder doch? `
Sonos hab ich bereits. Xbox hab ich die One, also evtl. wäre die 360 nicht schlecht.
Hier jetzt mal zur Allgemeinen Verwirrung ein Erklärungsversuch des Schemas:
Schema für „Set“ Befehle anhand von Play:
Hiermit wird das Objekt Play erstellt, es wird einfach auf „true“ gesetzt um den Befehl Play zu senden.
createState(control + '.MediaControl.Play', false, {type: 'boolean', read: 'true', write: 'true', role: 'button.play'});
Die Funktion die den Befehl Play sendet:
on({id: control + ' .MediaControl.Play', val: true }, function(obj){ //Wiedergabe starten setState(device + '.MediaRenderer.AVTransport.Play.InstanceID', getInstanceID()); setState(device + '.MediaRenderer.AVTransport.Play.Speed', 1); setState(device + '.MediaRenderer.AVTransport.Play', 'send'); setState(control + '.MediaControl.Play', false); });
control bei id ist eine Variable die den Pfad zum Übergeordneten Objekt zum oben, mit createState, erstellten Objekt darstellt, wobei „+ .MediaControl.Play“ den Pfad vervollständigt.
device ist wieder eine Variable die stellt den Pfad zum Gerät im upnp Objekt Baum dar.
InstanceID ist ein Argument das an das Gerät gesendet wird, es ist in den meisten fällen „0“. Damit immer die Aktuelle instanceID genutzt wird, hab ich eine Funktion erstellt die man einfach mit in das Script packt und das war’s.
speed ist ebenfalls ein Argument das an das Gerät gesendet wird, das ist im Normal fall „1“.
send löst dann das Senden des Befehls mit all seinen Argumenten aus. Deshalb muss er auch als letztes gesetzt werden.
Zuletzt false es setzt nur das control Objekt zurück.
Hier noch die Funktion getInstanceID():
function getInstanceID(){ var IID = getState(device + '.MediaRenderer.AVTransport.A_ARG_TYPE_InstanceID').val; return(IID); }
Hier noch ein Schema in Bild form um euch Endgültig zu verwirren
-
Heute ist mir das zu spät. Aber vielleicht komm ich morgen mal in den Keller. Da sollte noch eine 360 rumstehen.Eine PS1 auch, hat aber kaum upnp
-
Heute ist mir das zu spät. Aber vielleicht komm ich morgen mal in den Keller. Da sollte noch eine 360 rumstehen.Eine PS1 auch, hat aber kaum ipnp
`
Hat die PS1 überhaupt schon einen Netzwerkanschluss? :lol: -
@Jey Cee:Habe Bose im ganzen Haus verteilt. Steuer diese über Mediola zur Zeit. Über CCU geht es auch. Bin leider zur Programmierung nicht zu gebrauchen, nur copy and past aus dem Netz. Braucht ihr die ganzen Steuerbefehle?? Wie kann ich euch trozdem helfen, ein funktionierender Adapter für meine Bose wäre toll, bzw. halt einer für viele Syteme. `
Du kannst den upnp Adapter installieren und dann den Objektbaum vom upnp Adapter Exportieren und mir per email zu schicken.
Hier siehst du wo der Button für das Exportieren ist: http://forum.iobroker.net/viewtopic.php?p=58107#p58107
Meine email ist jey-cee@live.com `
Der Adapter findet alles, Qnap Nas, Sky Reciever, Sony TV neuste Generation, aber keine Bose Lautsprecher