Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Otto123

Zitat von: Beta-User am 31 Juli 2020, 10:13:25
Diesen Stand habe ich jetzt mal eingecheckt.
Danke sieht glaube ich gut aus :) #390 hast Du mit eingebaut ;)
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

Beta-User

Zitat von: Otto123 am 31 Juli 2020, 12:23:16
Danke sieht glaube ich gut aus :) #390 hast Du mit eingebaut ;)
...hatte wie üblich etwas gesammelt und dann eben irgendwann eingecheckt; vermutlich, weil ich germerkt hatte, dass zum einen überhaupt erst mal irgendein devStateIcon wohl Sinn macht, und zum anderen, dass ich smartmatch zuerst übersehen hatte, und zu guter Letzt wollte ich einen Merker haben für das (völlig unabhängige) homebridgemapping-Thema von hier...

Generell wäre es für mich aber einfacher, wenn hin und wieder alles im Zusammenhang käme ;) . Dann müßte ich nicht (potentiell fehleranfällig) raten bzw. puzzlen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Bin am neu installieren/üben, immer noch am Test Pi.

Was das starten mit pm2 angeht steh ich immer noch auf dem Schlauch.

Wo nehm ich denn die Einstellungen vor mit denen pm2 starten soll ?

In der config.js in lib, klappt nämlich nicht ?

Oder muss ich eine config.json unter /data/config.json selbst anlegen, wo überschreibe ich dann CONFIG_PATH beim einstellen ?

Gruß

Thomas


Otto123

#423
Hallo Thomas,

habe ich ganz unten dokumentiert
ZitatNicht einfach default
Hat man den MQTT2_SERVER anders definiert, nicht lokal bzw. mit allowed abgesichert, muss beim Start von sonos2mqtt der Parameter --mqtt übergeben werden.
Dem pm2 Befehl folgenden durch die Angabe "--" die weiteren Parameter für sonos2mqtt.
"pm2 start sonos2mqtt -- --mqtt mqtt://myuser:the_secret_password@192.168.0.3:1800"
Mit dem Parameter --prefix könnte man den Basistopic setzen (default: sonos).

Liest sich vielleicht schwierig aber nach pm2 start sonos2mqtt -- kommen ab hier die ganz normalen sonos2mqtt Parameter.

Was fehlt Dir noch?

Oder meinst Du pm2 an sich? Das starte ich einfach in FHEM, dass läuft prima.

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

TomLee

Danke, das wars. Das steht aber noch nicht lange da mein ich  :P

Alles gut, das starten klappt so auch aus FHEM heraus

TomLee

Sicher nicht wichtig würds aber trotzdem gerne rückgängig machen, kannst du mir bitte noch sagen was per default in lib/config.js an der rot markierten Stelle in mqtt steht, den Eintrag hatte ich geändert.

Zitat...
const yargs_1 = __importDefault(require("yargs"));
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const static_logger_1 = require("./static-logger");
const defaultConfig = {
    mqtt: 'mqtt://bla:bla@192.168.188.67:1884',
    prefix: 'sonos',
    distinct: false,
    discovery: true,
    discoveryprefix: 'homeassistant',
    log: 'information',
    friendlynames: 'name'
}; ...

Otto123

const defaultConfig = {
    mqtt: 'mqtt://127.0.0.1',
    prefix: 'sonos',
    distinct: false,
    discovery: true,
    discoveryprefix: 'homeassistant',
    log: 'information',
    friendlynames: 'name'
};


Ich hatte diese Erkenntnis mit pm2 und dem -- irgendwie vor Wochen. Ich behaupte seit dem steht das da :)
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

#427
Zitatset alias=Büro x_raw_payload {"command": "adv-command","input": {"cmd": "GetFavorites","reply": "Reply"}}

statt setter geht auch ein getter.

defmod SonosControl MQTT2_DEVICE
attr SonosControl IODev m2s
attr SonosControl getList Favorites:noArg Replykomplett sonos/RINCON_000E58F7F67C01400/control {"command": "adv-command","input": {"cmd": "GetFavorites","reply": "Reply"}}
attr SonosControl readingList sonos/RINCON_([0-9A-Z]+)/Reply:.* Replykomplett
attr SonosControl room MQTT2_DEVICE


Ich weiß nicht ob das so korrekt definiert ist, es kommt aber im Dialogfeld der Wert des Reading Replykomplett zurück (kein timeout) und das Reading aktualisiert sich auch gleich.

87insane

Zitat von: Otto123 am 31 Juli 2020, 12:20:32
Naja, mMn ist ein nackter Player besser als ein devStateIcon was nicht funktioniert: je komplizierter umso mehr besteht genau diese Gefahr.
Deswegen nur die simple Variante aus #390 oder so etwas in der Art ausliefern. Der Rest ... irgendwie anders später...
@WumpE
Zu 2. ist klar, hab ich ja auch schon gesagt
Zu 3. Zustimmung

@87insane
Sorry, ich meinte currentTrack_Title und nicht next_track - habe es in meinem Post korrigiert.

Ich habe heute noch ein anders Experiment angestoßen: Die Favoriten lesbar auslesen :) Das hat mir im Sonos Modul von Reiner auch irgendwie immer gefehlt oder ich habe es nicht verstanden.

Meine Codeschnipsel erzeugen ein Sammeldevice (ob das der richtige Weg ist weiß ich noch nicht genau):
Durch die Abfrage eines Players entsteht dort ein Reading mit den Favoriten. Siehe auch hier https://svrooij.io/sonos2mqtt/control/browse.html
defmod SonosControl MQTT2_DEVICE
attr SonosControl IODev mqtt2s
attr SonosControl readingList sonos/RINCON_([0-9A-Z]+)/Reply:.* Replykomplett
attr SonosControl room MQTT2_DEVICE

set alias=Büro x_raw_payload {"command": "adv-command","input": {"cmd": "GetFavorites","reply": "Reply"}}

das kann man abfragen, z.B. einen bestimmten Namen suchen (ich weiß, das ist so alles Fehleranfällig - aber ich bin erstmal froh json geparsed zu haben - Danke ):
{
use JSON;;
my $s = ReadingsVal('SonosControl','Replykomplett','');;
my $decoded = decode_json($s);;
my @arr  = @{$decoded->{'Result'}};;
foreach (@arr) {if ($_->{'Title'} =~ /Deutschlandfunk Kultur RP/){return $_->{'TrackUri'} }} ;;
}


Damit kann man dann auch einfach in der FHEM Kommandozeile mit set magic testen (beachte die zusätzlichen () die Zeilenumbrüche stören nicht) :)
set alias=Arbeitszimmer playUri {(
use JSON;;
my $s = ReadingsVal('SonosControl','Replykomplett','');;
my $decoded = decode_json($s);;
my @arr  = @{$decoded->{'Result'}};;
foreach (@arr) {if ($_->{'Title'} =~ /Deutschlandfunk Kultur RP/){return $_->{'TrackUri'} }} ;;
)}


Sehe das mit der Funktion genau so. Aber es ist hier ja auch noch nix komplett fertig. Es funktioniert alles in der Konstellation wie es zu dem Zeitpunkt gepostet wurde. Wir hatten aber x Lösungen die interessant waren und zur lösung bei getragen haben.

Otto123

Hallo 87insane,

das sehe ich nicht so: Aus meiner Sicht ist der jetzige Stand der drei Templates zu sonos2mqtt in sich konsistent, fertig und so von jedermann verwendbar.
Den würde ich als Basis setzen, bugfixing betreiben und erstmal so lassen.
Alle weiteren Posts werde ich immer mit diesem Stand testen.
Weitere Entwicklungen kann man ja zunächst immer als Veränderung dieses Standes posten. Man könnte sogar Templates dazu machen.

Ich übertrage noch die Doku, die jetzt nur aktuell in meinem Blog steht, wie schon abgesprochen ins Wiki.

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

87insane

Konsistent mag es sein. Aber ich glaube da geht noch was und auch das in der rL noch was passiert und somit auch eine große Änderung an devstateicon. Klar läuft das so erstmal alles. Aber du baust zb noch Funktionen aus und ich bastel die so gut es geht mit in devstateicon. Will damit nur sagen das man sich nicht wundern muss, wenn hier "test" Versionen eingestellt werden, diese ggf eben nicht zu 100% laufen oder, wie ich selber schon lernen durfte, side effect nicht sofort auffallen.

Otto123

@Beta-User bugfixing  :-X
Sorry in meinem Post # 412 hat sich der Semikolon Fehler eingeschlichen. (das ist wirklich hart ;) )
sonos2mqtt_bridge_comfort
set DEVICE attrTemplate sonos2mqtt_bridge
define 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"}}
define n_configSonos2 notify MQTT2_RINCON_[A-Z0-9]+:IPAddress:.* {\
  my @tv = ("S14","S11","S9");\
  my $url="http://$EVTPART1:1400";\
  my $xmltext = GetFileFromURL("$url/xml/device_description.xml");\
  my ($mn)=$xmltext =~ /<modelNumber>(S[0-9]+)/;\
  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 \{/};\
  $setList=~s/;/;;/g;\
  fhem("attr $NAME setList $setList")\
}

Kannst Du das bitte ändern?
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

PatrickR

Mahlzeit!

Beschäftige mich aktuell intensiv mit sonos2mqtt, um meine Freezes loszuwerden. Habe aktuell leider das Problem, dass sonos2mqtt keine Events mehr sendet, wenn sich die Topologie ändert (mein Connect wird bspw. regelmäßig aus- und eigeschaltet, damit er nicht heizt, wenn er nicht benötigt wird.) Habe auch eine Issue erstellt. Hat jemand von Euch vielleicht ein ähnliches Problem und einen Workaround gefunden?

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Otto123

#433
Hallo Patrick,

ja ich habe so etwas ähnliches. Ich habe aber bisher den Eindruck, es hat nicht nur was mit dem Player zu tun der kommt und geht sondern es tritt bei oder in Kombination mit Gruppenänderung über sonos2mqtt  auf?

Ich habe das Gefühl, dass Problem tritt auf wenn man ein set ... playUri an einen Player sendet der einen Master hat. Der Player fliegt in dem Moment aus der Gruppe. Danach gibt es das Problem mit Events für Topologie Änderungen.

Aber ich habe das noch nicht so weit untersucht, das ist bisher ein "Bauchgefühl"

Nur Player aus und zwei Stunden wieder an funktioniert.
Edit: Nein funktioniert aktuell nicht - gerade probiert player war aus, angemacht in sonos2mqtt wird die topologie nicht aktualisiert :(
Ich dachte das hat schon funktioniert  ???

Ein pm2 restart sonos2mqtt behebt das Problem in jedem Fall.

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

Beta-User

Zitat von: Otto123 am 01 August 2020, 13:23:32
Kannst Du das bitte ändern?
Gerne, done!
($light@shelly/tasmota ist bei der Gelegenheit auch vollständig rausgeflogen).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files