Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Otto123

@Phiolin
Man sieht es hier:     2021-03-16 06:54:53   groupName       Wohnzimmer + 1
     2021-03-15 17:09:46   inCouple        0
     2021-03-15 17:09:46   inGroup         0
     2021-03-15 17:09:46   isMaster        1
Der groupName wird geändert die userReadings nicht , das Du das mit event-on-change-reading komplett verhindert hast, hast Du schon gemerkt :) der groupName triggert. Kann man generell auch anders machen. Aber da der groupName ausgelesen wird habe ich mir angewöhnt auch genau den Wert als Trigger zu nehmen.

Das mit den Readings in der Bridge geht sicher, mal schauen wo man die Infos herbekommt.

@Spartacus Du bist jetzt glaube ich richtig in einen Umbruch reingeraten. Template war noch alt - da passte am Ende nicht alles zusammen.
Die Warnings sind normal, die passieren immer wenn man im laufenden Betrieb ein reload datei.pm macht und in unserem Fall passiert ja ein reload 99_sonso2mqttUtils.pm
Hast Du denn jetzt Player Devices?
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

Spartacus

Moin Otto,
naja, man sollte natürlich auch autocreate einschalten...dann klappt´s auch mit den Playern!  ;)

Aber noch ne Frage:
Was ist der Unterschied zwischen den einzelnen Templates.
bridge, speaker und bridge_comfort

Im Prinzip will ich keine Visualisierung der Player, sondern einfach nur das normale Device, ohne die ganzen Playertaste und die Senderlogos/Cover

Spartacus

Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Otto123

Naja - das war auch eine Entwicklung :)
Grundlage: Du kannst alles selbst bauen!
Du bist mein Testhelfer Du musst unbedingt nochmal den Artikel lesen und sagen was da nicht steht! https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Sonos2Mqtt

Bridge setzt nur das notwendigste, damit wird dem System ermöglicht separate MQTT2_DEVICES zu erzeugen, ansonsten würde alles in Eines geraten.
Speaker konfiguriert den Speaker, so das man ordentliche Readings und Funktionen hat. Wenn Du "ganzen Playertaste und die Senderlogos/Cover" nicht willst, löschst du einfach das attr devStateIcon
bridge_comfort ist quasi das rundumsorglos setup programm, dort wird auch das notify definiert welches die Player nicht anlegt aber wenn sie angelegt werden automatisch fertig konfiguriert

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

Phiolin

Ich hab bei mir auch noch 3 n_configSonos notifies.
Im aktuellen Template finde ich nur eins. Die beiden anderen sind dann vermutlich veraltet und können weg?
Wer weiß was da wegen dem alten Kram alles schief läuft. :D

n_configSonos
Internals:
   DEF        global:DEFINED.MQTT2_RINCON_[A-Z0-9]+|MQTT2_RINCON_[A-Z0-9]+:IPAddress:.* {sonos2mqtt_nty($NAME,$EVENT)}
   FUUID      604f127a-f33f-8c0c-3ff8-00edb88c591d6930
   NAME       n_configSonos
   NR         505
   NTFY_ORDER 50-n_configSonos
   REGEXP     global:DEFINED.MQTT2_RINCON_[A-Z0-9]+|MQTT2_RINCON_[A-Z0-9]+:IPAddress:.*
   STATE      2021-03-16 07:43:58
   TRIGGERTIME 1615877038.53374
   TYPE       notify
   READINGS:
     2021-03-15 17:01:06   state           active
Attributes:


n_configSonos1
Internals:
   DEF        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"}}
   FUUID      604efea1-f33f-8c0c-d7e1-35e4a6e8c6e61782
   NAME       n_configSonos1
   NOTIFYDEV  global
   NR         503
   NTFY_ORDER 50-n_configSonos1
   REGEXP     global:DEFINED.MQTT2_RINCON_[A-Z0-9]+
   STATE      2021-03-16 07:43:55
   TRIGGERTIME 1615877035.35129
   TYPE       notify
   READINGS:
     2021-03-15 16:50:00   state           active
Attributes:


n_configSonos2
Internals:
   DEF        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 =~ /<modelNumber>([SZ]P?[0-9]{1,3})/;
  my ($img)=$xmltext =~ /<url>(.*)<\/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")
}
   FUUID      604efea2-f33f-8c0c-598a-cbac1d436fec50f6
   NAME       n_configSonos2
   NR         504
   NTFY_ORDER 50-n_configSonos2
   REGEXP     MQTT2_RINCON_[A-Z0-9]+:IPAddress:.*
   STATE      2021-03-16 07:43:58
   TRIGGERTIME 1615877039.23088
   TYPE       notify
   READINGS:
     2021-03-15 16:50:00   state           active
Attributes:

Otto123

Ja das ist contarprduktiv ;) Ich hatte das irgendwo mal mit hingeschrieben. sollte ich die im Template löschen? Fände ich übergriffig - mal schauen ob mir da was einfällt.
das erste ist aktuell die anderen beiden:
delete n_configSonos.
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

Spartacus

Hi Otto,

Zitat von: Otto123 am 16 März 2021, 09:53:10
Naja - das war auch eine Entwicklung :)
Grundlage: Du kannst alles selbst bauen!
Du bist mein Testhelfer Du musst unbedingt nochmal den Artikel lesen und sagen was da nicht steht! https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Sonos2Mqtt

das werde ich im Laufe der Woche noch machen. Ich muss sowieso Sonos2Mqtt-Server neu aufsetzten, den aktuell ist da noch ein fhem drauf, was man nicht benötig und dann gehe ich die Anleitung noch mal durch. Mal gucken, ob die neue Sonos2Mqtt-vm mit 512MB RAM auskommt.

Muss dann auch noch testen, wie man aus fhem heraus den Sonos dienst auf der andere Kiste startet, denn ich habe verstanden, dass nur bei einem Neustart Änderungen an der Sonos-Umgebung discovered werden....
Im Prinzip benötige ich so etwas  global:INITIALIZED "pm2 -s start sonos2mqtt"
für die entfernte vm! oder wie löst man das am Besten?

Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Otto123

würde ich sicher über ssh machen. Komprimierter Einstieg https://heinz-otto.blogspot.com/2020/09/ssh-mit-public-key.html oder alle Artikel mit ssh https://heinz-otto.blogspot.com/search?q=ssh

Das mit dem discovered bin ich mir nicht sicher. Eigentlich gibt es das CheckSubscription(über mqtt) , das läuft auch in Abständen automatisch. Der sollte die Änderungen mitbekommen.
Also wenn ich Player ausschalte und später wieder einschalte funktioniert es damit.
Den Dienst selber muss man eigentlich nicht regelmäßig starten, aber ja, ist sicher gut es zu können.
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

TomLee

Hi,

bekomms nicht hin, hab zwar nur einen Player mag aber den Befehl zum muten nur ausführen lassen wenn der Player auch spielt.

Wie lautet die devspec denn korrekt ? So klappts nicht:

set a:model=sonos2mqtt_speaker:Filter=state=PLAYING mute

Otto123

 ;)
list a:model=sonos2mqtt_speaker:FILTER=transportState=STOPPED
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

TomLee

Hab ehrlich gesagt noch nicht umgestellt auf die aktuelle Version, in meinem Device mappe ich transportState noch nach state.

edit: Ach Sch.. brauche gar nicht weiter schreiben, Filter in Großschreibung  ::)

DANKE


Spartacus

Moin Otto,
so! Ich bin Dir noch ein Feedback schuldig. Ich habe jetzt das sons2mqtt noch einmal nach Deiner Anleitung aufgesetzt.
Was ich auf meinem "nackten" Debian-System gemacht habe:

apt-get install curl

curl -sL https://deb.nodesource.com/setup_14.x | bash -
apt-get update && apt-get install yarn

apt-get install -y nodejs
apt-get install -y libjson-pp-perl
npm install -g sonos2mqtt
npm install pm2 -g

pm2 start sonos2mqtt -- --mqtt mqtt://172.16.x.x:1800


Auf der fhem Büchse reicht es aus, die Bridge zu definieren:

define SonosBridge MQTT2_DEVICE
attr SonosBridge IODev NameDesVorhandenenMQTT2Servers
attr SonosBridge room MQTT2_DEVICE
set SonosBridge attrTemplate sonos2mqtt_bridge_comfort


Damit ist das System komplett funktionsfähig und die Player werden erkannt. Wichtig ist allerdings, dass "autocreate" aktiviert ist, sonst werden die Player nicht automatisch angelegt.


Allerdings bekomme ich es noch nicht hin, den Dienst auf dem anderen Host zu starten. Von der Konsole aus klappt das mit folgendem Befehl:
ssh -i \opt\fhem\.ssh\<privatekeyfile> user@SonosBridge pm2 start sonos2mqtt -- --mqtt mqtt://172.16.x.x:1800

wenn ich dies allerdings von der fhem-Konsolo mit
{qx (ssh -i \opt\fhem\.ssh\SonosBridge user@SonosBridge pm2 start sonos2mqtt -- --mqtt mqtt://172.16.x.x:1800)}
starte, dann kommt folgende Fehlermeldung:
Global symbol "@SonosBridge" requires explicit package name (did you forget to declare "my @SonosBridge"?) at (eval 165328) line 1.

Was ist hier in der Syntax falsch? SonosBridge heisst auch das private-key-file
Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Otto123

Hi spartacus,

Innerhalb der einfachen Klammern von qx() werden Variablen versucht aufzulösen analog zu "doppelten Hochkommas"
Du musst in dem Fall das @ schützen/escapen -> \@

Du verwendest immer Port 1800 ist das wegen meinem Beispiel im Wiki so oder ist das eine persönlicher Vorliebe oder warum nimmst Du nicht Standard 1883?

Schön das es ansonsten klappt wie beschrieben :)

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

Spartacus

#972
Hi Otto,
nö, das war halt aus Deinem Beispiel. Das hat keinen besonderen Grund mit dem Port.....

Allerdings klappt das aus fhem noch nicht! Ich habe das @nun maskiert, aber auch das hilf nicht. Es gibt zwar keine Fehlermeldung, aber er startet den Service auch nicht. Ich schätze es liegt am Benutzer. Hast Du noch nen Tipp?

Auf der Konsole des Fhem-Servers kann ich den Dienst auf SonosBridge sowohl unter "root" als auch unter dem Benutzer "user" starten

{qx (ssh -i /opt/fhem/SonosBridge user\@SonosBridge pm2 start sonos2mqtt -- --mqtt mqtt://172.16.x.x:1800)}
Spartacus

NACHTRAG:
Im fhem log steht Host "key verification failed."
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Otto123

Ich habe das ehrlich gesagt noch nie mit Option -i gemacht. das muss ich mir anschauen.
Ich vermute der user fhem (dein FHEM läuft doch mit user fhem?) kann irgendwas nicht lesen.

Du kannst auf der Konsole mit diesem User testen indem Du den Befehlen sudo -su fhem voranstellst.
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

Spartacus

Hi Otto,
danke Dir! Das war ein guter Tipp mit dem sudo -su fhem. Das Keyfile hatte noch die Berechtigung und Gruppenzuordnung vom User root. Habe es geändert und nun kann ich es auch unter fhem starten....

Gruß,
Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R