NEWS
-
Hi Leute,
ich möchte gerne meine Sonos Komponenten mit iQontrol steuern.
Ich verwende die sonos http api als Kommunikation zwischen iobroker und Sonos.Da gibt es z.B. folgende Befehle:
http://192.168.30.90:5005/EZKUGAWC/pause
http://192.168.30.90:5005/EZKUGAWC/next
http://192.168.30.90:5005/EZKUGAWC/previous
http://192.168.30.90:5005/EZKUGAWC/volume/15
http://192.168.30.90:5005/EZKUGAWC/volume/+1
http://192.168.30.90:5005/EZKUGAWC/play
http://192.168.30.90:5005/EZKUGAWC/playpause
http://192.168.30.90:5005/EZKUGAWC/mute
http://192.168.30.90:5005/EZKUGAWC/unmuteusw.
Wenn ich diese Befehle in die entsprechenden Felder des MediaPlayer Geräts eingebe, dann funktioniert das leider nicht.

Hat jemand eine Idee wo der Fehler liegt, oder wie ich diese Befehle in iQontrol reinbekomme um zu steuern ?Beste Grüße
@qlink sagte in Test Adapter iQontrol 1.5.x:
Hi Leute,
ich möchte gerne meine Sonos Komponenten mit iQontrol steuern.
Ich verwende die sonos http api als Kommunikation zwischen iobroker und Sonos.Da gibt es z.B. folgende Befehle:
http://192.168.30.90:5005/EZKUGAWC/pause
http://192.168.30.90:5005/EZKUGAWC/next
http://192.168.30.90:5005/EZKUGAWC/previous
http://192.168.30.90:5005/EZKUGAWC/volume/15
http://192.168.30.90:5005/EZKUGAWC/volume/+1
http://192.168.30.90:5005/EZKUGAWC/play
http://192.168.30.90:5005/EZKUGAWC/playpause
http://192.168.30.90:5005/EZKUGAWC/mute
http://192.168.30.90:5005/EZKUGAWC/unmuteusw.
Wenn ich diese Befehle in die entsprechenden Felder des MediaPlayer Geräts eingebe, dann funktioniert das leider nicht.

Hat jemand eine Idee wo der Fehler liegt, oder wie ich diese Befehle in iQontrol reinbekomme um zu steuern ?Beste Grüße
Hi,
direkte http-Befehle kann iQontrol nicht absetzen. Gibt es nicht einen Sonos-Adapter, der die Kommunikation mit ioBroker herstellt? Alternativ müsste man Datenpunkte erstellen, die dann über ein Blockly die gewünschten Befehle absetzt - ist aber viel Aufwand, wenn es mehrere Sonos werden... -
@qlink sagte in Test Adapter iQontrol 1.5.x:
Hi Leute,
ich möchte gerne meine Sonos Komponenten mit iQontrol steuern.
Ich verwende die sonos http api als Kommunikation zwischen iobroker und Sonos.Da gibt es z.B. folgende Befehle:
http://192.168.30.90:5005/EZKUGAWC/pause
http://192.168.30.90:5005/EZKUGAWC/next
http://192.168.30.90:5005/EZKUGAWC/previous
http://192.168.30.90:5005/EZKUGAWC/volume/15
http://192.168.30.90:5005/EZKUGAWC/volume/+1
http://192.168.30.90:5005/EZKUGAWC/play
http://192.168.30.90:5005/EZKUGAWC/playpause
http://192.168.30.90:5005/EZKUGAWC/mute
http://192.168.30.90:5005/EZKUGAWC/unmuteusw.
Wenn ich diese Befehle in die entsprechenden Felder des MediaPlayer Geräts eingebe, dann funktioniert das leider nicht.

Hat jemand eine Idee wo der Fehler liegt, oder wie ich diese Befehle in iQontrol reinbekomme um zu steuern ?Beste Grüße
Hi,
direkte http-Befehle kann iQontrol nicht absetzen. Gibt es nicht einen Sonos-Adapter, der die Kommunikation mit ioBroker herstellt? Alternativ müsste man Datenpunkte erstellen, die dann über ein Blockly die gewünschten Befehle absetzt - ist aber viel Aufwand, wenn es mehrere Sonos werden...@s-bormann
Ah okay, danke für die Info.
Schade aber kann man nix machen...Ja es gibt einen Sonos Adapter, aber der hat mir in den letzten Jahren zuviel Nerven und Lebenszeit gekostet.
Eventuell hat sich der ja zwischenzeitlich schon gebessert/stabilisiert, aber ich möchte da nix mehr riskieren... verbrannte Erde und so
Die sonos http api funktioniert seit Anfang an 100% zuverlässig und stabil, da verzichte ich dann lieber auf die Steuerungsmöglichkeit per iQontrol und nutze für manuelle Steuerung wie bisher auch die Sonos Android App...
Beste Grüße
-
hab mal ein bißchen mit dem Roborock-S6 rumgespielt...

karte funzt im echtbetrieb.
links oben status info_a, info_b die werte der filter, bürsten im durchlauf.

aditionals:

wobei bei mir GoTo im moment nicht funktioniert. seltsamer weise wird das objekt rot angezeigt... da waren mal koordinaten hinterlegt.
leider ist der platz rund um die karte derart groß, das ich es nicht schaffe ohne scrollbalken. sind aber nur minimal.
definiert hab ich das mal als popup.


icons von mir gebastelt mit gimp:
roborock.rar
da ist sicher noch luft nach oben! nur mal so als grundidea...
gibt ja da so lauser die mit js und CSS gern rumfummeln
-
@s-bormann sagte in Test Adapter iQontrol 1.5.x:
Habe das Blockly im Wiki angepasst, sollte jetzt laufen
(der Fehler trat nach einem Update des javascript-adapters auf - habe vergessen, die Korrektur ins Wiki zu laden).Ich habe in Dein Blockly mal die Auswahl des "Installationsortes" eingefügt, da ich eigentlich 0_userdata.0 für eigene Datenpunkte nutze. Die komplette Struktur Deiner Datenpunkte habe ich 1:1 so gelassen. Im Blockly selbst ist alles zugeklappt, bis auf die zwei Sachen die der Nutzer selbst eintragen/auswählen muss. Vielleicht möchtest Du es ja übernehmen (mußt Du aber nicht) Im Blockly ist in der Funktion zum Datenpunkte anlegen ein Script von Mic hier aus dem Forum. Dafür muß in den Javascript Adapter Einstellungen folgendes aktiviert sein/der Haken muß drinn sein.

Im Blockly muß nur das eingestellt werden:

Das gesamte Blockly sieht dann so aus:

Edit: Gleichzeitig habe ich das anlegen der Datenpunkte korrigiert, da es im Log angemeckert wurde (hatte ich vergessen zu schreiben)
GELÖST: Javaskript-Instanz einmal durchstarten

@dslraser komisch, ich erhalte immer den gleichen Fehler, wenn ich das Blockly laufen lasse (das mit der Instanz-Nummer). Ich habe den Adapter garnicht mehr installiert. Unter Objekte (Experten-Ansicht) ist der auch nicht mehr O.o
javascript.0 2021-01-20 20:41:17.423 error (8552) at main (script.js.common.Sonstiges.Adapter-Status:388:5) javascript.0 2021-01-20 20:41:17.422 error (8552) at checkAdapters (script.js.common.Sonstiges.Adapter-Status:291:88) javascript.0 2021-01-20 20:41:17.422 error (8552) at subsequenceFromStartLast (script.js.common.Sonstiges.Adapter-Status:230:22) javascript.0 2021-01-20 20:41:17.422 error (8552) script.js.common.Sonstiges.Adapter-Status: TypeError: Cannot read property 'length' of null javascript.0 2021-01-20 20:41:17.421 error (8552) script.js.common.Sonstiges.Adapter-Status: Cannot get _id of null javascript.0 2021-01-20 20:41:17.420 warn (8552) Object "system.adapter.calendar.0" does not exist javascript.0 2021-01-20 20:41:17.420 error (8552) script.js.common.Sonstiges.Adapter-Status: Cannot get common of null javascript.0 2021-01-20 20:41:17.419 warn (8552) Object "system.adapter.calendar.0" does not exist -
@Qlink
Ich nutze ebenfalls die Sonos HTTP API.
Lege dir eigene Datenpunkte für die Steuerung an (Logikwert, Rolle = switch), als Beispiele:0_userdata.0.sonos.play 0_userdata.0.sonos.pauseDanach legst du dir ein Skript an und kopierst da folgendes hinein:
on({id:'0_userdata.0.sonos.play', change:'ne', val:true} , function (dp) { controlSonos('play'); setState(dp.id, false); }); on({id:'0_userdata.0.sonos.pause', change:'ne', val:true} , function (dp) { controlSonos('pause'); setState(dp.id, false); }); function controlSonos(control_value){ try { require("request")((['http://192.168.30.90:5005/EZKUGAWC/' + control_value].join(''))).on("error", function (e) {console.error(e);}); } catch (e) { log('Fehler bei Sonos HTTP API Steuerung: ' + e, 'warn'); } }Die Funktion controlSonos kannst du dann mit beliebigen Befehlen aufrufen.
Im iQontrol packst du beim Mediaplayer deine selbst erstellten Datenpunkte rein und steuerst diese mit true.Probier mal

-
@da_woody sagte in Test Adapter iQontrol 1.5.x:
gibts da eine lösung um auch die instanz nummer mit anzuzeigen? so bringt mir das nicht wirklich was...
Ich habe es zum "testen" bei mir mal umgebaut...(kann ich später zur Verfügung stellen, wenn denn alles weiter funktioniert. Ich schaue es mir aber noch ein Weilchen an)

Edit: @da_Woody
ich habe die Testversion hier mit reingelegt
https://forum.iobroker.net/post/562307@dslraser said in Test Adapter iQontrol 1.5.x:
@da_woody sagte in Test Adapter iQontrol 1.5.x:
gibts da eine lösung um auch die instanz nummer mit anzuzeigen? so bringt mir das nicht wirklich was...
Ich habe es zum "testen" bei mir mal umgebaut...(kann ich später zur Verfügung stellen, wenn denn alles weiter funktioniert. Ich schaue es mir aber noch ein Weilchen an)

Edit: @da_Woody
ich habe die Testversion hier mit reingelegt
https://forum.iobroker.net/post/562307spinn ich, oder hab ich einen knick im hirn?

steht da. gut.


keine instanznummer. chrome, firefox, handy -
@dslraser said in Test Adapter iQontrol 1.5.x:
@da_woody sagte in Test Adapter iQontrol 1.5.x:
gibts da eine lösung um auch die instanz nummer mit anzuzeigen? so bringt mir das nicht wirklich was...
Ich habe es zum "testen" bei mir mal umgebaut...(kann ich später zur Verfügung stellen, wenn denn alles weiter funktioniert. Ich schaue es mir aber noch ein Weilchen an)

Edit: @da_Woody
ich habe die Testversion hier mit reingelegt
https://forum.iobroker.net/post/562307spinn ich, oder hab ich einen knick im hirn?

steht da. gut.


keine instanznummer. chrome, firefox, handy@da_woody
hattest Du mal alle Datenpunkte gelöscht, oder mal einen Adapter aus und wieder angeschaltet ?
Du könntest auch mal in der Funktion Datenpunkte_anlegen dieses false auf true setzen, dann werden alle schon bestehenden Datenpunkte überschrieben.
Edit: angelegt in javascript.x oder unter 0_userdata.0 ?
-
@da_woody
hattest Du mal alle Datenpunkte gelöscht, oder mal einen Adapter aus und wieder angeschaltet ?
Du könntest auch mal in der Funktion Datenpunkte_anlegen dieses false auf true setzen, dann werden alle schon bestehenden Datenpunkte überschrieben.
Edit: angelegt in javascript.x oder unter 0_userdata.0 ?
-
@da_woody
welche html Liste hast Du eigentlich in iQontrol verlinkt ?PS:Starte mal JS-Adapter / iQontrol Adapter einmal neu
-
@da_woody
in deinem edit Foto ist 0_userdata.0 zu sehen und in Deinem iQontrol Screeshot hast Du javascript.0 verlinkt -
@da_woody
welche html Liste hast Du eigentlich in iQontrol verlinkt ?PS:Starte mal JS-Adapter / iQontrol Adapter einmal neu
-
@da_woody
also geht es ? -
@Qlink
Ich nutze ebenfalls die Sonos HTTP API.
Lege dir eigene Datenpunkte für die Steuerung an (Logikwert, Rolle = switch), als Beispiele:0_userdata.0.sonos.play 0_userdata.0.sonos.pauseDanach legst du dir ein Skript an und kopierst da folgendes hinein:
on({id:'0_userdata.0.sonos.play', change:'ne', val:true} , function (dp) { controlSonos('play'); setState(dp.id, false); }); on({id:'0_userdata.0.sonos.pause', change:'ne', val:true} , function (dp) { controlSonos('pause'); setState(dp.id, false); }); function controlSonos(control_value){ try { require("request")((['http://192.168.30.90:5005/EZKUGAWC/' + control_value].join(''))).on("error", function (e) {console.error(e);}); } catch (e) { log('Fehler bei Sonos HTTP API Steuerung: ' + e, 'warn'); } }Die Funktion controlSonos kannst du dann mit beliebigen Befehlen aufrufen.
Im iQontrol packst du beim Mediaplayer deine selbst erstellten Datenpunkte rein und steuerst diese mit true.Probier mal

Danke für die Info. Leider kann ich mit javascript wenig anfangen.
Verstehe ich es richtig, dass ich für alle meine Sonos Player (insgesamt 7), jeweils das von dir gepostet Script benötigen würde und auch jeweils die Steuerungsdatenpunkte ?
Also 7x das Script und 7x die Steuerungsdatenpunkte ?
-
Irgendwie bin ich zu dumm um die URL Parameter zu verstehen.
Ich würde gerne meine Ansicht "Arbeitszimmer" als Standardseite im Firefox hinterlegen:http://192.168.178.3:8082/iqontrol/index.html?renderView=iqontrol.1.Views.Arbeitszimmer
Was ist daran falsch?

Grüße
-
Irgendwie bin ich zu dumm um die URL Parameter zu verstehen.
Ich würde gerne meine Ansicht "Arbeitszimmer" als Standardseite im Firefox hinterlegen:http://192.168.178.3:8082/iqontrol/index.html?renderView=iqontrol.1.Views.Arbeitszimmer
Was ist daran falsch?

Grüße
@hc-yami sagte in Test Adapter iQontrol 1.5.x:
Irgendwie bin ich zu dumm um die URL Parameter zu verstehen.
Ich würde gerne meine Ansicht "Arbeitszimmer" als Standardseite im Firefox hinterlegen:http://192.168.178.3:8082/iqontrol/index.html?renderView=iqontrol.1.Views.Arbeitszimmer
Was ist daran falsch?

Grüße
Sollte gehen. Stimmt die Instanz-Nummer (1)? Vielleicht müsste hier die 0 stehen?
-
Danke für die Info. Leider kann ich mit javascript wenig anfangen.
Verstehe ich es richtig, dass ich für alle meine Sonos Player (insgesamt 7), jeweils das von dir gepostet Script benötigen würde und auch jeweils die Steuerungsdatenpunkte ?
Also 7x das Script und 7x die Steuerungsdatenpunkte ?
@qlink
Frage 1: Würde dir ein Blockly Skript mehr weiterhelfen?
Frage 2: Meinst du mit Sonos Player, dass du 7 Sonos Lautsprecher hast und EZKUGAWC ist eine ID davon, die anderen haben eine andere? Oder hast du einen Lautsprecher und 7 verschiedene Mediaplayer Kacheln?Zu deinen Fragen (bezogen darauf, dass du 7 Sonos Lautsprecher mit verschiedenen IDs hast):
- die Datenpunkte bräuchtest du dann pro Instanz, korrekt. Als Beispiel (BBBBBBBB wäre hier der zweite Lautsprecher):
0_userdata.0.sonos.EZKUGAWC.play 0_userdata.0.sonos.EZKUGAWC.pause 0_userdata.0.sonos.BBBBBBBB.play 0_userdata.0.sonos.BBBBBBBB.pause- Die Trigger bräuchtest du dann natürlich für alle Datenpunkte:
on({id:'0_userdata.0.sonos.EZKUGAWC.play', change:'ne', val:true} , function (dp) { controlSonos('EZKUGAWC', 'play'); setState(dp.id, false); }); on({id:'0_userdata.0.sonos.EZKUGAWC.pause', change:'ne', val:true} , function (dp) { controlSonos('EZKUGAWC', 'pause'); setState(dp.id, false); }); on({id:'0_userdata.0.sonos.BBBBBBBB.play', change:'ne', val:true} , function (dp) { controlSonos('BBBBBBBB', 'play'); setState(dp.id, false); }); on({id:'0_userdata.0.sonos.BBBBBBBB.pause', change:'ne', val:true} , function (dp) { controlSonos('BBBBBBBB', 'pause'); setState(dp.id, false); });- Die Funktion reicht einmal, solange man ihr als zusätzlichen Parameter die ID mit übergibt:
function controlSonos(control_id, control_value){ try { require("request")((['http://192.168.30.90:5005/' + control_id + '/' + control_value].join(''))).on("error", function (e) {console.error(e);}); } catch (e) { log('Fehler bei Sonos HTTP API Steuerung: ' + e, 'warn'); } }Bei den Triggern siehst du den Aufruf der Funktion controlSonos mit zwei Parametern:
controlSonos('BBBBBBBB', 'play');
Die ID wäre dann für jeden Lautsprecher beim Datenpunkt und beim Aufruf der Funktion anzupassen.Wie gesagt, alles unter der Annahme, dass du 7 Lautsprecher hast.
Wenn dir Blockly mehr zusagt, können wir auch gerne schauen, dass da zu realisieren. -
Danke für die Info. Leider kann ich mit javascript wenig anfangen.
Verstehe ich es richtig, dass ich für alle meine Sonos Player (insgesamt 7), jeweils das von dir gepostet Script benötigen würde und auch jeweils die Steuerungsdatenpunkte ?
Also 7x das Script und 7x die Steuerungsdatenpunkte ?
@qlink sagte in Test Adapter iQontrol 1.5.x:
Danke für die Info. Leider kann ich mit javascript wenig anfangen.
Verstehe ich es richtig, dass ich für alle meine Sonos Player (insgesamt 7), jeweils das von dir gepostet Script benötigen würde und auch jeweils die Steuerungsdatenpunkte ?
Also 7x das Script und 7x die Steuerungsdatenpunkte ?
Ja, stimmt. Man könnte das Script aber so abwandeln, dass es die Datenpunkte selbst erstellt - bleibt aber ein wenig Handarbeit.
-
@hc-yami sagte in Test Adapter iQontrol 1.5.x:
Irgendwie bin ich zu dumm um die URL Parameter zu verstehen.
Ich würde gerne meine Ansicht "Arbeitszimmer" als Standardseite im Firefox hinterlegen:http://192.168.178.3:8082/iqontrol/index.html?renderView=iqontrol.1.Views.Arbeitszimmer
Was ist daran falsch?

Grüße
Sollte gehen. Stimmt die Instanz-Nummer (1)? Vielleicht müsste hier die 0 stehen?
-
@s-bormann
vielen Dank für deine super Arbeit, bin begeistert. Ich nutze diesen Adapter seit ca. 5 Tagen. Kann sein, dass ich etwas nicht verstanden habe oder hier nichts gefunden habe, wie ich das lösen kann. Ich habe mir deine Tutorials angeschaut, wenn ich eine Internetadresse hinzufüge als widget klappt das irgendwie nicht (siehe Bilder) Meine Installation läuft über einen Raspi 3b und iobroker unter http






