NEWS
Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)
- 
					
					
					
					
 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...
- 
					
					
					
					
 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 
- 
					
					
					
					
 @da_woody  
 So sieht es bei mir gerade aus
- 
					
					
					
					
 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  
- 
					
					
					
					
 @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 ? 
- 
					
					
					
					
 @dslraser steht ja richtig drinnen in dem DP! siehe 1. pic von mir... 
 oder hier
  
 edith:
  
- 
					
					
					
					
 @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
- 
					
					
					
					
 @dslraser oh, mann!    
- 
					
					
					
					
 @da_woody 
 also geht es ?
- 
					
					
					
					
 @dslraser jup. durchs neue blockly hat er die jetzt unter 0_userdata.0, waren aber noch unter javascript.0 drinnen. darum, plint, nicht aufgefallen...    
- 
					
					
					
					
 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 
- 
					
					
					
					
 @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? 
- 
					
					
					
					
 @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.
- 
					
					
					
					
 @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. 
- 
					
					
					
					
 @s-bormann das wars. Danke dir!  
 
		
	 
		
	 
			
		 
			
		