Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

Begonnen von Otto123, 31 Mai 2020, 18:30:55

Vorheriges Thema - Nächstes Thema

TomLee

#990
ZitatAch ja, kann man die Devices "RINCON_B8E93xxxxx" umbenennen,

Zitat- kannst Du aber machen wie Du willst.

Ich hab auch kurz gebraucht bis ich das "geschnallt" hatte.

Otto123

Umbenennen ist kein Problem. Aber der Name ist ja auch nicht RINCON_ sondern MQTT2_RINCON_
Der Name kommt von autocreate, der versucht einen eindeutigen Namen zu erzeugen, durch Einbeziehung von eindeutigen IDs. Das musst Du auch schaffen, dann ist alles in Ordnung :)
Aber was ist besser an set Sonos_Büro gegenüber set alias=Büro :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

raiderxxl

Hi,

kann ich irgendwie nen Bass Wert setzten?
(Wenn Pubertier abends Mucke hört, möchte ich ihr dann Abends ab 21:00 den Bass abdrehen) ;)
Das ging mit dem OllenblödennichtlaufendenSonos Modul nur mit DEMSUPERDUPERMQQTSONEOS Modul (noch) nicht...

Grüßle

Pascal
FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....

Otto123

#993
Hallo Pascal,

geht irgendwie über advanced command https://svrooij.io/node-sonos-ts/sonos-device/services/rendering-control-service.html

Ist aber nicht "komfortabel" eingebaut. Musst Du selbst mal probieren?
Hier mal ein Beispiel wo ich letztens mit dem LED State experimentiert habe:
#Kommando zum setzen - mit Antwort (True/False)
{
  "command": "adv-command",
  "input": {
    "cmd": "DevicePropertiesService.SetLEDState",
    "val": {
      "DesiredLEDState": "On"
    },
    "reply": "Reply"
  }
}

# Ohne Antwort
{
  "command": "adv-command",
  "input": {
    "cmd": "DevicePropertiesService.SetLEDState",
    "val": {
      "DesiredLEDState": "On"
    }
  }
}

# readingList Ergänzung wie macht man das Universal?
sonos/RINCON_347E5C82560801400/Resp:.* { json2nameValue($EVENT) }

#Kommando zur Abfrage (keine extra Parameter werden übergeben)
{
  "command": "adv-command",
  "input": {
    "cmd": "DevicePropertiesService.GetLEDState",
    "val": {
      "InstanceID": 0,
      "Channel": "Master"
    },
    "reply": "Resp"
  }
}
# geht auch so
{
  "command": "adv-command",
  "input": {
    "cmd": "DevicePropertiesService.GetLEDState",
    "val": {  },
    "reply": "Resp"
  }
}



die json Strings kannst Du so wie sie sind in die x_raw_payload einwerfen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

raiderxxl

Danke Otto123,

Funktioniert für mich, da kann ich ein AT basteln ;-)

Grüßle
Pascal
FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....

Otto123

Moin Pascal,

das ist prima. Bist Du so nett, wenn Du das gelöst hast - postest Du hier bitte die Kommandos? Ich kann das dann nach und nach in die sonos2mqttUtils übernehmen.

Gruß Otto 
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kjmEjfu

Schaut mal hier: https://github.com/svrooij/sonos2mqtt/issues/139

Da sind einige Commandos mit entsprechendem Aufruf bei, die vermutlich alle analog genutzt werden können.
Migriere derzeit zu Home Assistant

sebbo2002

#997
Zitat von: kjmEjfu am 09 April 2021, 09:13:01
Schaut mal hier: https://github.com/svrooij/sonos2mqtt/issues/139

Da sind einige Commandos mit entsprechendem Aufruf bei, die vermutlich alle analog genutzt werden können.

Hallo in die Runde,

ich versuche aktuell langsam vom SONOS Modul zu sonos2mqtt zu migrieren. Daher der Pull Request mit allen Kommandos, die für meine Migration noch gefehlt haben. Das ganze ist aktuell nur im Beta Channel released (npm i -g sonos2mqtt@beta), scheint bei mir aber so weit zu funktionieren.

Wie das ganze in FHEM umgesetzt ist habe ich ehrlich gesagt noch nicht so 100%ig verstanden, kann mir da jemand helfen? Vieleicht liegt es aber auch daran, dass mein Perl eher schlecht als recht ist...  :-[

Otto123

Zitat von: sebbo2002 am 14 April 2021, 16:21:57
Wie das ganze in FHEM umgesetzt ist habe ich ehrlich gesagt noch nicht so 100%ig verstanden,
Meinst Du generell oder "Deine" Kommandos?
Nach aktuellem Entwicklungsstand kommt die Ausführung in die sonos2mqttUtils und der Befehl in die setList des Gerätes (bzw. ins AttrTemplate)

Ich setze mich mal ran und versuche das einzubauen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

sebbo2002

Zitat von: Otto123 am 14 April 2021, 17:06:56
Meinst Du generell oder "Deine" Kommandos?

Generell wie MQTT2 funktioniert habe ich so grob schon verstanden, nur wie die sonos2mqttUtils aufgebaut ist habe ich auf den ersten Blick nicht so ganz verstanden. Aber vielleicht müsste ich mir da einfach mehr Zeit nehmen.


Zitat von: Otto123 am 14 April 2021, 17:06:56
Ich setze mich mal ran und versuche das einzubauen.

Das ist sehr lieb, vielen Dank  :D

Mitch

Hallo Zusammen,

mir ist gerade aufgefallen, dass ich keine Sprachausgabe mehr machen.

Ich nutze Text2Speech und es hat immer funktioniert. Nun leider nicht mehr.
MP3 wird erstellt, allerdings mit 0kb, also leer.
Das kann Sonos dann natürlich nicht abspielen.

Hier mal mein Device:

Internals:
   ALSADEVICE
   DEF        none
   FUUID      5fa17d3c-f33f-5738-be6e-5241d76be06d669d
   FVERSION   98_Text2Speech.pm:0.241380/2021-04-03
   MODE       SERVER
   NAME       SonosTTS
   NR         679
   STATE      Initialized
   TYPE       Text2Speech
   VOLUME     100
   READINGS:
     2020-11-03 16:54:58   host            192.168.0.202:8085
     2021-04-14 18:02:15   httpName        http://192.168.0.202:8085/fhem/cache/b4619599dd643ecddb0a4b02c1426eac.mp3
     2021-04-14 18:02:15   lastFilename    cache/b4619599dd643ecddb0a4b02c1426eac.mp3
     2021-04-14 18:02:15   playing         0
   helper:
     TTS_PlayerOptions
     Text2Speech:
Attributes:
   TTS_CacheFileDir cache
   TTS_Language Deutsch
   TTS_UseMP3Wrap 1
   userReadings httpName:lastFilename.* {'http://'.ReadingsVal($name,'host','set host:port first').'/fhem/'.ReadingsVal($name,'lastFilename','')}


Jemand eine zündende Idee?
FHEM im Proxmox Container

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Mitch

Nein, ist eine VM mit noch massig Platz.

Habe gerade mal Verbose 5 geschaut und gesehen, es hängt wohl bei Google (Log von unten nach oben):

2021.04.14 18:09:24 4: SonosTTS: Es wurden alle Teile ausgegeben und der Befehl ist abgearbeitet.
2021.04.14 18:09:24 4: SonosTTS: Bearbeite per MP3Wrap jetzt den Text: Hallo dies ist ein schöner Test
2021.04.14 18:09:24 4: SonosTTS: Schreibe mp3 in die Datei cache/dcfad3fa42999d5ab9c7ae5a1c2743ca.mp3 mit  Bytes
2021.04.14 18:09:24 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Text2Speech.pm line 901.
2021.04.14 18:09:24 3: SonosTTS: http://translate.google.com/translate_tts?tl=de&client=tw-ob&ie=UTF-8&q=Hallo%20dies%20ist%20ein%20sch%C3%B6ner%20Test: Can't connect(1) to http://translate.google.com:80: IO::Socket::INET: connect: Connection refused
2021.04.14 18:09:24 3: SonosTTS: Fehler beim abrufen der Daten von Google Translator
2021.04.14 18:09:24 4: SonosTTS: Hole URL: http://translate.google.com/translate_tts?tl=de&client=tw-ob&ie=UTF-8&q=Hallo%20dies%20ist%20ein%20sch%C3%B6ner%20Test
2021.04.14 18:09:24 4: SonosTTS: Verwende Google Resource zur TTS-Generierung
2021.04.14 18:09:24 4: SonosTTS: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: dcfad3fa42999d5ab9c7ae5a1c2743ca.mp3
2021.04.14 18:09:24 4: SonosTTS: Verwende TTS Spracheinstellung: Deutsch
2021.04.14 18:09:24 4: SonosTTS: 0 => Hallo dies ist ein schöner Test
2021.04.14 18:09:24 4: SonosTTS: Auflistung der Textbausteine nach Aufbereitung:
2021.04.14 18:09:24 4: SonosTTS: MaxChar = 100, Delimiter = (?<=[\.!?])\s*, ForceSplit = 0, AddDelimiter =


Wobei, wenn ich an meinem Rechner die URL (http://translate.google.com/translate_tts?tl=de&client=tw-ob&ie=UTF-8&q=Hallo%20dies%20ist%20ein%20sch%C3%B6ner%20Test) direkt aufrufe, kommt die Ausgabe?

Ping nach Google auf der fhem VM geht ohne Probleme.
FHEM im Proxmox Container

Mitch

Gelöst!

Beim piHole Update ist wohl translate.google.com auf die Blacklist gerutscht  :-[
FHEM im Proxmox Container

Otto123

#1004
Zitat von: Otto123 am 14 April 2021, 17:06:56
Ich setze mich mal ran und versuche das einzubauen.
Ich habe eine neue Version der 99_sonos2mqttUtils.pm eingecheckt.
Neu ist eine sub, die einen Json String zurückliefert, der den advanced commands entspricht. Damit kann man von hier den ServiceNamen heraus nehmen und die erforderlichen Values übergeben. Ich habe das für folgende Kommandos getestet:
Den Erforderlich Wert 0/1 oder On/Off kann man natürlich setzen. Wie man sie ist die Reihenfolge relativ egal nur die Parameterpärchen müssen zusammenstehen.
{sonos2mqtt_command ('SetEQ','DesiredValue',1,'EQType','NightMode')}
{sonos2mqtt_command ('SetEQ','EQType','DialogLevel','DesiredValue',0)}
{sonos2mqtt_command ('SetButtonLockState','DesiredButtonLockState','Off')}
{sonos2mqtt_command ('SetLEDState','DesiredLEDState','On')}
{sonos2mqtt_command ('SetBass','DesiredBass',8)}
{sonos2mqtt_command ('SetTreble','DesiredTreble',-3)}
{sonos2mqtt_command ('AVTransportService.RemoveAllTracksFromQueue')}

Will man die Sub für den Set Befehl x_raw_payload verwenden - muss man wie üblich bei set magic zusätzlich klammern -> {(sonos2mqtt_command ())}

Jetzt muss man das noch in das Template verankern und ich muss dazu noch  hier lesen  um keine Schimpfe zu bekommen.

Mitarbeit und Vorschläge sind willkommen! Wer testen will:
{ Svn_GetFile("contrib/AttrTemplate/99_sonos2mqttUtils.pm", "FHEM/99_sonos2mqttUtils.pm", sub(){ CommandReload(undef, "99_sonos2mqttUtils") }) }

Ich würde das gerne etwas mehrstufig machen um die setList nicht ewig lang zu machen. Irgendwie so in der Art
set player adv ledstate on
set player adv bass 8
set player adv nightmode on


Wer wissen will wie das Codestückchen aussieht und dazu Vorschläge hat :)
sub sonos2mqtt_command
{
use JSON;
my (%h_value,%h_input) = ();
my $acmd = shift // return 'error';
   if ($acmd !~ /\w+\.\w+/) {
     if ($acmd eq 'SetLEDState' or $acmd eq 'SetButtonLockState') {
         $acmd = 'DevicePropertiesService.'.$acmd}
      else {
         $acmd = 'RenderingControlService.'.$acmd}
   }
   if ($acmd =~ /RenderingControlService/) {%h_value = ('InstanceID' => 0,'Channel' => 'Master')}
   $h_input{'cmd'} = $acmd;
   if (@_) {
      %h_value = @_;
  $h_input{'val'} = {%h_value}
   }
   return encode_json {'command' => 'adv-command','input' => {%h_input}};
}

In Summe geht damit jetzt mehr, als Stephan in die neue Beta als Shortcuts eingebaut hat. z.B. Abends beim TV Nachtmodus und Sprachverbesserung an
set alias=Wohnzimmer x_raw_payload {(sonos2mqtt_command ('SetEQ','EQType','DialogLevel','DesiredValue',1))}
set alias=Wohnzimmer x_raw_payload {(sonos2mqtt_command ('SetEQ','EQType','NightMode','DesiredValue',1))}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz