Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Mitch

#675
So, hat sich alles geklärt.
Es lag am https. Entweder sonos2mqtt, oder Sonos selber kann kein https, nut http.

Was mir noch aufgefallen ist, wenn man eine MP3 abspielt, oder TTS, dauert es ,,sehr" lang, bis wieder Musik gespielt wird. Hier muss ich mal schauen, wo ich dran ,,schrauben" kann.

Ausserdem muss ich meinen Cleanup Script anpassen, damit der Cache nicht ,,zugemüllt" wird.

Achso, eins noch: Otto, im Wiki steht oft so etwas wie ,,set alias=Mein Player....".
Das ist okay, wenn man einen Aliasname nur einmal hat. Bei mir gibt es Aliasnamen öfter.
FHEM im Proxmox Container

Otto123

sonos kann schon https, das Beispiel aus der Doku (github sonos2mqtt) funktioniert ja. Aber wenn dein https kein offizielles Zertifikat hat und sonos das nicht prüfen kann muss er es ablehnen.

Das mit meinem devspec ist nur konsequent im Wiki durchgezogen. Schließlich werden die Player ja nach dem dortigem Setup automatisch so konfiguriert. Man kann die genauso gut umbenennen. Da wird es halt viele Vorlieben geben.
War irgendwie meine Idee das einfach zu verwenden, vielleicht muss man das noch umgestalten. Ich habe jetzt nicht geschaut ob es "kritische" Ecken gibt.
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

Eigentlich habe ich gültige Zertifikate.
Naja, egal, intern ist es auch ohne okay.

Ich baue gerade meine Umgebung um und gehe in den "Langzeittest".

Vielen Dank Otto, für die tolle Arbeit und Support!
FHEM im Proxmox Container

Mitch

Jetzt habe ich doch noch eine Frage: wie kann ich bei einem Player (bei mir ein Amp), den Eingang auf Line-In umschalten?
FHEM im Proxmox Container

Otto123

#679
Das ist ja genau - warum Input bei Sonos nicht so ganz einfach ist.
In sonos2mqtt gibt es glaub ich sogar den direkten Befehl - aber eben nur für den Player
https://svrooij.io/sonos2mqtt/control/commands.html
Aber Du kannst ja an jedem Player den Line-in eines supportenden Player abspielen. Was beim TV Eingang nicht geht :(

Aus diesem Grunde ist das bisher nicht wirklich implementiert - ich wusste bisher nicht wie.

Du kannst x-raw_payload zum testen nehmen.
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

So ganz habe ich nicht verstanden, was du meinst?

Hab jetzt einfach ein neuen Eintrag in die setList gemacht:   line-in:noArg sonos/RINCON_1234/control {"command": "switchtoline" }
Mal sehen, ob es geht.
FHEM im Proxmox Container

Otto123

Dann mach folgenden Versuch:
Steck etwas an den Line-in Eingang Deines Amp
Geh mit der App auf einen anderen Player - sagen wir Wohnzimmer.
Wähle durchsuchen (am PC rechtes Menü)
Wähle Eingang
Wähle den Eingang deines Amp

Dann spielt Dein Amp Player Line-in am Player Wohnzimmer - ohne Gruppierung!

Wenn Du in deinen FHEm Player schaust steht dann dort bei TrackUri x-rincon-stream:RINCON_1234 - die RINCON Deines AMP

So geht Line-in eigentlich :) einer hat den Eingang - einer spielt (muss nicht der gleiche sein)
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

Ganz ehrlich, ich verstehe es immer noch nicht, was du meinst.

Mein Amp hat einen Zuspieler über Line-In.
Den muss ich einstellen, wenn ich den Zuspieler starte.
Dazu fange ich den "on" Befehl von einer Harmony ab und sende Line-In als Eingang an den Amp.

Das ganze geht auch ohne Probleme mit meiner Erweiterung in der setList.
FHEM im Proxmox Container

Otto123

Also es kann sein dein Amp ist anders. Ich habe eine Play5 mit Line-in, ich hatte einen connect mit Line-in - beide verhielten sich gleich.
ich habe mal irgendwo gelesen, dass die analogen Line-in (nicht die digitalen Eingänge!) alle gleich sind.

Also ich kann: die Musik vom Zuspieler der an meinem Play5 steckt (ohne sie an der Play5 wirklich zu spielen) am PlayOne im Bad wiedergeben.

Wie gesagt - geht in der Android/IOS/Windows App ganz einfach. Man muss es nur wissen. 
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

Okay, jetzt verstehe ich, was du meinst.

Ich kann auch den Ton von Line-In vom Amp oder den Fernsehton (über optisch) an jeden beliebigen Player weiter geben (per App).
Das brauche ich aber nicht.

Mir ging es nur darum, per fhem den Amp auf Line-In zu schalten und das geht.
FHEM im Proxmox Container

Otto123

Zitat von: Mitch am 01 November 2020, 16:43:10
Das brauche ich aber nicht.
Das sagst Du jetzt :)
Die optischen gehen nicht, es gehen mW nur die analogen line-in - ich habe den Amp nicht.

Welche Modelnummer hat Dein Amp? Die Umschaltung der Eingänge habe ich ja eigentlich im Einrichtungsscript drin?
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

Modellnummer weis ich nicht genau, es ist der alte Connect:Amp.

In deinem Script war leider nichts dazu drinnen.
Auch für die Playbar fehlte die Möglichkeit. Hab ich auch in die setList aufgenommen.

Was mir noch so aufgefallen ist:
1. die Erstellung des Alias hat nicht funktioniert
2. wäre es schöner, wenn die Namen nicht aus der MAC Adresse erzeugt werden, sondern aus dem Playername (z.B. RINCON_Bad)
FHEM im Proxmox Container

Otto123

#687
Ich denke ja Du hast noch was altes eingerichtet? Mein Blog und nicht nach Wiki?
Die Modellnummer sollte in deinem Device drinstehen, wenn nicht dann ist quasi alles schief gelaufen.  ???

Die Namen sind die autocreate MQTT2 Namen - ich habe nur die Aliase dazugesetzt.

Die Playbar ist die S9 - da hätte es funktionieren müssen. Was hast Du bei list n_configSonos2 ?
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

Otto123

#688
Hallo Beta-User,

kannst Du mal bitte in den Templates was ergänzen:
das Template sonos2mqtt_bridge_comfort
set DEVICE attrTemplate sonos2mqtt_bridge
attr DEVICE setList PauseAll:noArg sonos/cmd/pauseall\
CheckSubscription:noArg sonos/cmd/check-subscriptions
defmod n_configSonos1 notify global:DEFINED.MQTT2_RINCON_[A-Z0-9]+ sleep 1;\
  set $EVTPART1 attrTemplate sonos2mqtt_speaker;\
  set $EVTPART1 x_raw_payload {"command": "adv-command","input": {"cmd":"GetZoneInfo","reply":"ZoneInfo"}}
defmod n_configSonos2 notify MQTT2_RINCON_[A-Z0-9]+:IPAddress:.* {\
  my @tv = ("S14","S11","S9");\
  my @line = ("S5","Z90","ZP120");\
  my $url="http://$EVTPART1:1400";\
  my $xmltext = GetFileFromURL("$url/xml/device_description.xml");\
  my ($mn)=$xmltext =~ /(S[0-9]+)/;\
  my ($img)=$xmltext =~ /(.*)<\/url>/;\
  my $icon="Sonos2mqtt_icon-$mn";\
  my $setList=AttrVal($NAME,'setList','');\
  fhem("setreading $NAME modelNumber $mn");\
  fhem("\"wget -qO ./www/images/default/$icon.png $url$img\"");\
  fhem("attr $NAME icon $icon;sleep 4 WI;set WEB rereadicons");\
  if (grep(/$mn/, @tv)) {$setList=~s/input:Queue \{/input:Queue,TV \{/};\
  if (grep(/$mn/, @line)) {$setList=~s/input:Queue \{/input:Queue,Line_In \{/};\
  $setList=~s/;/;;/g;\
  fhem("attr $NAME setList $setList")\
}


Es wird die setList für die Bridge um die neuen Funktionen checkSubscription und pauseall ergänzt.
Das config notify wird um die Line_In Funktion erweitert.
define in defmod geändert - sonst klappts nicht.

Hinweis:
Wenn man die alten Player neu machen will (um vom neuen Template zu profitieren) für die Raw Def
"pm2 stop sonos2mqtt"
delete MQTT2_RINCON_.*
"rm ./www/images/default/Sonos*.png"
delete FileLog_MQTT2_RINCON_.*
"rm ./log/MQTT2_RINCON_*.log"
sleep SonosBridge:connected:.0; set WEB rereadicons
sleep WEB:rereadicons;"pm2 start sonos2mqtt"


Die Templates neu machen:
{ Svn_GetFile("FHEM/lib/AttrTemplate/mqtt2.template", "FHEM/lib/AttrTemplate/mqtt2.template", sub(){ AttrTemplate_Initialize() }) }
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

Zitat von: Otto123 am 01 November 2020, 17:49:42
Ich denke ja Du hast noch was altes eingerichtet? Mein Blog und nicht nach Wiki?
Die Modellnummer sollte in deinem Device drinstehen, wenn nicht dann ist quasi alles schief gelaufen.  ???

Die Namen sind die autocreate MQTT2 Namen - ich habe nur die Aliase dazugesetzt.

Die Playbar ist die S9 - da hätte es funktionieren müssen. Was hast Du bei list n_configSonos2 ?

Nachdem mein fhem total abgestürzt ist, keine Ahnung warum, habe ich mein backup eingespielt und nochmal nach Wiki angefangen.
Gleiches "Problem", Alias wird nicht gesetzt.
FHEM im Proxmox Container