Sonos steuern

Begonnen von Will, 05 Januar 2013, 15:51:12

Vorheriges Thema - Nächstes Thema

juemuc

Hier die gewünschte Info.

Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

ntlm auth = ntlmv2-only


Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

mumpitzstuff

Bei Samba funktioniert die Kombination aus min und max protocol nicht. Das steht zwar in tausenden Foren so drin, macht aber massiv Probleme. Ich hatte erst Ruhe, nachdem ich den ganzen min und max protocol Mist rausgeworfen hatte und das zu verwendende Protokoll so gesetzt habe:

protocol = SMB3

Alternativ versuch mal nur min und nicht max zu setzen, vielleicht geht das auch.

andre07

Bei mir ist nur min Protokoll gesetzt
client min protocol = NT1
server min protocol = NT1
ntlm auth = ntlmv1-permitted
somit kann nach meinen Verständnis auch SMB3 genutzt werden.
Nur Sonos auch in der Version S2 unterstützt bis jetzt nur SMB1
somit habe ich mit SMB2/3 keinen Zugriff.

mumpitzstuff

Meine Antwort war unabhängig von SONOS bzw. welche Version man dafür benutzen muss. Ich wollte nur sagen, das diese min/max protocol Dinge zu Problemen führen können. Deshalb kann man mal versuchen ohne diese Anweisungen auszukommen und jetzt in deinem Fall lediglich:

protocol = NT1

zu verwenden. Aber wenns auch so geht, muss man natürlich nix machen.

TomLee

Hallo,

ZitatRadios
Liefert eine Liste mit den Namen aller gespeicherten Radiostationen (Favoriten). Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Sender 1","Sender 2","Test"

RadiosWithCovers
Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Radiofavoriten. Z.B.: {'R:0/0/2' => {'Cover' => 'urlzumcover', 'Title' => '1. Radiosender'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.

Kann mir jemand sagen weshalb mir ein get aus der Befehlszeile heraus bei beiden Befehlen nur ein leeres Dialogfeld zurückgibt ?
Hab ich noch irgendwelche Attribute zu setzen das das klappt ?

Das Ergebnis von get RadiosWithCovers landet im Reading Radios  und bis zum nächsten Ereignis mit vorangestelltem GetRadiosWithCovers: im Reading LastActionResult.

Gibts auch ein Reading zu get Radios welches die Komma-Separierte Liste enthalten sollte, weil bei mir gibt es keines ?

Oder ist es hier so gedacht das das Ergebnis mit vorangestelltem Radios: nur bis zum nächsten Ereignis in LastActionResult ausgegeben wird ?

Gruß

Thomas

Reinerlein

Hi Thomas,

prinzipiell wird die Antwort einer Get-Anfrage immer im LastActionResult bereitgestellt, da alles asynchron beantwortet wird (bis auf wenige Ausnahmen). Zusätzlich gibt es manchmal entsprechende Readings dazu.

In deinem Fall kannst du entweder das per notify oder userreading selber auswerten, oder du setzt am zentralen Sonos-Device "getListsDirectlyToReadings".
Damit werden dann im Falle von "get ... Radios" am Playerdevice direkt die beiden Readings "RadiosList" und "RadiosListAlias" gesetzt. Diese sind |-Separierte Listen, einmal die URL, die man mittels "set ... StartRadio /abc/" setzen kann, und einmal der saubere Name des Senders, gedacht für Auswahllisten z.B. auf FTUI....

Dazu passend gibt es noch das Attribut "getRadiosListAtNewVersion", womit diese Readings automatisch aktualisiert werden, wenn du im Sonos-System die Radiosender anpasst... dann sparst du dir das manuelle "get...".

Wenn du "get ... RadiosWithCovers" bei gesetztem "getListsDirectlyToReadings" ausführst, dann zeigt die vorgefertigte ReadingsGroup das auch direkt an (und füllt ein Reading "Radios" mit einer Perl-Hash-Struktur).
Diese Readingsgroup hat erstmal keine Raumzuordnung, sodass du sie über das Playdevice finden kannst (probably associated with...) oder im Raum "Everything"...

Grüße
Reinerlein

TomLee

#3456
Danke

Zitateinmal die URL, die man mittels "set ... StartRadio /abc/" setzen kann, und einmal der saubere Name des Senders

Beide Attribute hab ich gesetzt, es gibt jetzt die Readings "RadiosList" und "RadiosListAlias"

setstate Sonos_Wohnzimmer 2020-07-23 16:52:35 RadiosList 011.FM.-.Non.Stop.60s|1LIVE.diggi..Top.40.Pop.|DASDING.92.5..Euro-Hits.|Nota.Masria..Gemeinden.|PsyRadio.Chillout|Radio.Regenbogen|SWR4.Baden-Württemberg|SWR4.Rheinland-Pfalz
setstate Sonos_Wohnzimmer 2020-07-23 16:52:35 RadiosListAlias 011.FM - Non Stop 60s|1LIVE diggi (Top 40/Pop)|DASDING 92.5 (Euro-Hits)|Nota Masria (Gemeinden)|PsyRadio Chillout|Radio Regenbogen|SWR4 Baden-Württemberg|SWR4 Rheinland-Pfalz


Aber abspielen mit StartRadio kann ich die Sender in RadiosList nicht mit den Punkten darin, brauch ich dazu wieder ein Attribut das das geht ?

Das Reading Radios hab ich schon immer, auch vor setzen von getListsDirectlyToReadings.

Weiterhin, wenn auch jetzt nach setzen von getListsDirectlyToReadings überflüssig, ist das Dialogfeld immer noch leer nach einem get aus der Befehlszeile.
Sollte doch was drin stehen ?

Reinerlein

Hallo Thomas,

das Dialogfeld nach einem "get" wird bei dem Sonos-Modul in den meisten Fällen leer bleiben, da keine direkte Antwort vom Player kommt. Du forderst den Player (bzw. den SubProzess) auf, eine asynchrone Antwort zu senden...
Die Antwort wird dann asynchron in das Reading "LastActionResult" geschrieben...

Die Schreibweise mit den Punkten ist die Regulärer-Ausdruck-Schreibweise.
Das musst du also so aufrufen:
set player StartRadio /1LIVE.diggi..Top.40.Pop./

Grüße
Reinerlein

TomLee

#3458
ZitatDazu passend gibt es noch das Attribut "getRadiosListAtNewVersion", womit diese Readings automatisch aktualisiert werden, wenn du im Sonos-System die Radiosender anpasst... dann sparst du dir das manuelle "get...".

Hab vor 10 Minuten einen Sender zu "Mein Sonos" hinzugefügt, er ist unter den Sendern in "Mein Sonos" vorhanden, die Readings haben sich bis jetzt nicht aktualisiert, getRadiosListAtNewVersion ist gesetzt.

Dafür jetzt bei jeder Sprachansage im Log:

2020.07.23 19:04:38 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.

TomLee

Hier gings schonmal um die Logmeldungen iVm den gesetzten Attributen.

Mein notify sieht aktuell noch so aus, auch wenn keine Sprachausgaben erfolgen soll  gibts die Meldungen, nur weil der Name des Players übergeben wird.

defmod not_MQTT2_Sensorkrake notify MQTT2_Sensorkrake:NEC_32:.* {myNec32RemoteCodesHandler("Sonos_Wohnzimmer","du_remote",$EVTPART0,$EVTPART1,$SELF)}


2020.07.24 11:09:40 3: Das ist NEC_32 0x20DF22DD Sonos du_remote
2020.07.24 11:09:41 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.

2020.07.24 11:09:41 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.

2020.07.24 11:09:43 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.

2020.07.24 11:09:44 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.

2020.07.24 11:09:51 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.


Gibts da eine Lösung für oder stell ich besser wieder um auf meine vorherige Lösung die auf den Hash in Radios aufgebaut hat, da gabs das Problem nämlich nicht ?

Reinerlein

Hallo TomLee,

kannst du mal bitte in Zeile 1413 etwas anpassen?
aus
if (defined($current{EnqueuedTransportURI}) && defined($value->{Ressource})) {
mach mal bitte
if (defined($current{EnqueuedTransportURI}) && defined($value) && defined($value->{Ressource})) {

Danke schonmal...

Grüße
Reinerlein

TomLee

Keine Änderung:


2020.07.24 11:43:33 3: Das ist NEC_32 0x20DF22DD Sonos du_remote
2020.07.24 11:43:34 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.

2020.07.24 11:43:38 3: Das ist NEC_32 0x20DF22DD Sonos du_remote
2020.07.24 11:43:39 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.

2020.07.24 11:43:40 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.

2020.07.24 11:43:41 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.

2020.07.24 11:43:42 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1410.


Reinerlein

Hi TomLee,

hmm...

Kannst du mal eine zusätzliche Log-Ausgabe einbauen?

Aus
my $readingsValue = ReadingsVal($hash->{NAME}, 'Radios', '');
if ($readingsValue ne '') {

mach mal bitte
my $readingsValue = ReadingsVal($hash->{NAME}, 'Radios', '');
SONOS_Log $hash->{UDN}, 1, "ReadingsValue: $readingsValue";
if ($readingsValue ne '') {


Grüße
Reinerlein

TomLee


2020.07.24 11:57:35 3: Das ist NEC_32 0x20DFC639 Jalousie du_remote
2020.07.24 11:57:39 1: SONOS0: ReadingsValue: DirectlySet
2020.07.24 11:57:39 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1411.

2020.07.24 11:57:40 1: SONOS0: ReadingsValue: DirectlySet
2020.07.24 11:57:40 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1411.

2020.07.24 11:57:43 1: SONOS0: ReadingsValue: DirectlySet
2020.07.24 11:57:43 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1411.

2020.07.24 11:57:43 1: SONOS0: ReadingsValue: DirectlySet
2020.07.24 11:57:43 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1411.

2020.07.24 11:57:46 1: SONOS0: ReadingsValue: DirectlySet
2020.07.24 11:57:46 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1411.

2020.07.24 11:57:46 1: SONOS0: ReadingsValue: DirectlySet
2020.07.24 11:57:46 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1411.

2020.07.24 11:57:51 1: SONOS0: ReadingsValue: DirectlySet
2020.07.24 11:57:51 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1411.

2020.07.24 11:57:52 1: SONOS0: ReadingsValue: DirectlySet
2020.07.24 11:57:52 1: SONOS0: Error during retreiving of RadioName: Can't use an undefined value as a HASH reference at ./FHEM/00_SONOS.pm line 1411.

Reinerlein

Hi TomLee,

wieso steht in deinem Radios-Reading irgendwas von DirectlySet?
Hast du UserReadings die auch das Reading "Radios" setzen?
Die musst du natürlich wieder entfernen, wenn du das Attribut "getListsDirectlyToReadings" verwenden möchtest...

Grüße
Reinerlein