Sonos Steuerung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pascal09
User
Beiträge: 20
Registriert: Donnerstag 4. Januar 2018, 19:04

Hey ich steuer meine Sonos Lautsprecher mit dem soco modul was soweit auch funktioniert. Allerdings bekomme ich eine Sache nicht hin...
und zwar diesen Befehl:

GetAutoplayRoomUUID
Hier bekomme ich folgendermaßen eine Antwort:
device.deviceProperties.GetAutoplayRoomUUID ([('InstanceID', 0)])

SetAutoplayRoomUUID

Ich weiß einfach nicht wie ich den Befehl für Set zusammensetzen muss.. vielleicht kann mir ja jemand helfen.
Pascal09
User
Beiträge: 20
Registriert: Donnerstag 4. Januar 2018, 19:04

Das habe ich noch gefunden. Leider bin ich nicht so begabt im programmieren...

SetFormat [Argument(name='DesiredTimeFormat', vartype='string'), Argument(
name='DesiredDateFormat', vartype='string')] []
GetFormat [] [Argument(name='CurrentTimeFormat', vartype='string'),
Argument(name='CurrentDateFormat', vartype='string')] ...

http://docs.python-soco.com/en/latest/a ... vices.html
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Ich denke du musst noch etwas genauer beschreiben was du bisher versucht hast (deinen Code hier in Code-Tags pasten), was du erwartest zu erhalten und was exakt du nicht verstehst.
When we say computer, we mean the electronic computer.
Pascal09
User
Beiträge: 20
Registriert: Donnerstag 4. Januar 2018, 19:04

Also ich möchte mit dem Befehl SetAutoplayRoomUUID den Autoplay Raum von dem Sonos player im Wohnzimmer ändern.

Mit diesem Befehl kann ich den aktuellen Raum abfragen:
Wohnzimmer.deviceProperties.GetAutoplayRoomUUID ([('InstanceID', 0)])

diese Antwort kommt:
{'RoomUUID': 'RINCON_B8E9379AD78201400', 'Source': u''}

Code: Alles auswählen

>>> Wohnzimmer.deviceProperties.GetAutoplayRoomUUID ([('InstanceID', 0)])
{'RoomUUID': 'RINCON_B8E9379AD78201400', 'Source': u''}
Jetzt möchte ich mit dem Befehl SetAutoplayRoomUUID den Raum ändern. Nur ich weiß nicht wo ich die Raum UUID eingeben muss. So geht es zB nicht..

Code: Alles auswählen

>>> Wohnzimmer.deviceProperties.SetAutoplayRoomUUID ([('RINCON_B8E9379AD78201400', 0)])

Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    Wohnzimmer.deviceProperties.SetAutoplayRoomUUID ([('RINCON_B8E9379AD78201400', 0)])
  File "/home/pi/.local/lib/python2.7/site-packages/soco/services.py", line 213, in _dispatcher
    return self.send_command(action, *args, **kwargs)
  File "/home/pi/.local/lib/python2.7/site-packages/soco/services.py", line 498, in send_command
    self.handle_upnp_error(response.text)
  File "/home/pi/.local/lib/python2.7/site-packages/soco/services.py", line 560, in handle_upnp_error
    error_xml=xml_error
SoCoUPnPException: UPnP Error 402 received: Invalid Args from 192.168.83.40
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Warum nimmst du denn nicht einfachnur die UUID, statt das ganze Listen und Tupel-geraffel drumrum?
Pascal09
User
Beiträge: 20
Registriert: Donnerstag 4. Januar 2018, 19:04

wie denn genau? also habe folgendes probiert

Code: Alles auswählen

 >>> Arbeitszimmer.deviceProperties.SetAutoplayRoomUUID 'RINCON_B8E9379AD78201400'
SyntaxError: invalid syntax
>>> Arbeitszimmer.deviceProperties.SetAutoplayRoomUUID "RINCON_B8E9379AD78201400"
SyntaxError: invalid syntax
>>> Arbeitszimmer.deviceProperties.SetAutoplayRoomUUID RINCON_B8E9379AD78201400
SyntaxError: invalid syntax
>>> Arbeitszimmer.deviceProperties.SetAutoplayRoomUUID (RINCON_B8E9379AD78201400)

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    Arbeitszimmer.deviceProperties.SetAutoplayRoomUUID (RINCON_B8E9379AD78201400)
NameError: name 'RINCON_B8E9379AD78201400' is not defined
wenn ich die klammer hinter dem Befehl aufmache kommt da eine Info (*args, **kwargs) Dispatch to send_command.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die ersten drei Versuche sind offenbar kein Python. Und die einzige Variante, die etwas bringen wuerde hast du NICHT versucht.

Ohne wenigstens ein paar Grundlagen zu beherrschen wirst du nicht wirklich irgendwo hin kommen. Das offizielle Python-Tutorial ist ein guter Start, und snafu oder ein anderer der regulars hat eine deutsche Uebersetzung davon verlinkt, falls dir das Englisch Probleme macht.
Pascal09
User
Beiträge: 20
Registriert: Donnerstag 4. Januar 2018, 19:04

Kannst du mir vielleicht die eine Möglichkeit sagen? Ich brauche sonst Python eigentlich nicht...
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Seufz.

funktion("stringparameter")

ist dein Freund.

Und ganz ehrlich - wenn du nicht programmieren lernen willst, sondern nur etwas programmiert haben moechtest, dann bezahl wen dafuer. Mit Geld, Bier oder Gegenleistungen anderer Art. Ich zumindest bin es ziemlich leid, das die ganzen PI-Bastler denken, wir waeren hier ihre persoenlichen Programmier-Dienstleister, die schnell und kostenlos Code abliefern.
Antworten