Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Otto123

#720
sowas ginge:
[SZP]+[0-9]+

So wäre es genauer
[SZ]P?[0-9]+

So noch etwas exkater
[SZ]P?[0-9]{1,3}
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

#721
Warum ist in deinem notify diese Zeile anders?
Deine:
my ($img)=$xmltext =~ /(.*)<\/url>/;;
Original
my ($img)=$xmltext =~ /<url>(.*)<\/url>/;;

Mist da ist ein Fehler im Template! Ich bin Schuld, ein Fehler in meinem Post gestern.  :'( :'(
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

#722
Es ist verrückt, es gibt einen Unterschied in den Ansichten im FHEMWEB - aber dazu später.
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 =~ /<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")\
}

@beta-user Bitte :) einmal neu

Schaut auf die Bilder. Das erste wenn ich die Definition einfach öffne. Wenn ich dann einmal den DEF Editor öffne, nichts tue und modify mache, sieht es aus wie im zweiten Bild. Der Code ist aber unverändert. Ein Refresh im Browser behebt die Ansicht.

Aber ich habe gestern aus dieser Ansicht kopiert (weil ich faul war und die Semikolon dort schon einfach sind)
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

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

kjmEjfu

Zitat von: Otto123 am 02 November 2020, 23:05:11
Ich bin noch auf S1 weil ich meinen Play5 nicht alleine stellen will.

Ich habe gestern übrigens getrennt.
Die Play 1 in die neue Sonos-App gepackt. Damit in einem eigenen Sonos-System.
Die Play 5 Gen 1 danach neu in die alte App gepackt.

Bisher läuft es scheinbar problemlos.
Aber eigentlich müsste es irgendeinen Unterschied geben, weil durch die zwei Sonos-Systeme dürften die sich ja keine Bridge mehr teilen.
Migriere derzeit zu Home Assistant

Mitch

Ich kann vermelden, nach den Änderungen im Template geht es jetzt!

Vielen Dank!!
FHEM im Proxmox Container

Mitch

Hm, nachdem es ist der Testumgebung super geklappt hat, bin ich gerade auf produtiv gegangen.
Leider kommen wieder keine Icons.
Im icon fehlt das png: Sonos2mqtt_icon-S1
FHEM im Proxmox Container

Otto123

Da sehe ich keinen Fehler. Du meinst in dem heruntergeladenen Dateinamen oder im attr icon ?
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

Beim attr icon wurde zwar der Name geschrieben, aber .png nicht
Die Icons wurden auch nicht runter geladen.

Ist nicht so schlimm, habe es jetzt manuell gemacht.
Bist jetzt läuft meine Umgebung ohne Probleme.
FHEM im Proxmox Container

Otto123

Naja beim attr icon steht nur der Dateiname ohne png. Das ist eigentlich in Ordnung.
Nicht heruntergeladen ist nicht in Ordnung - ich muss mal ein Script zum interaktiven Test machen.

Im Log hast Du zum fehlerhaften download nichts?
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

FHEM im Proxmox Container

87insane

Kann ich mich hier anstellen oder helfen?
Es geht hier aktuell um das Album Cover bzw. das Bild was angezeigt werden soll oder?

Das wird bei mir auch nicht mehr angezeigt. Hatte vor einiger Zeit mal neu angelegt und getestet. Habe die Bridge angepasst aber bin mir nicht sicher ggf. was übersehen zu haben. Bei mir bleiben die Cover leer aktuell....
Bzw. es ist so das diese irgendwann einfach mal erscheinen ... Warum weiß ich nicht und kann das absolut nicht nachvollziehen.

Beta-User

Bin grade nicht so richtig auf aktuellem Stand und habe auch nicht den Überblick, ob und was ggf. noch fehlt.

Trotzdem vielleicht der Hinweis auf ein paar Werkzeuge betr. die irgendwann mal angedachte Auslieferung von passendem myUtils-Code und sonstige Gedanken:
- Grundsätzlich müßte es (für devStateIcon) auch möglich sein, den html-Code so zusammenzusetzen, dass ggf. auch "externe Inhalte" geladen werden (falls das nicht sowieso schon der Fall ist);
- zu dem notify mit dem "hole mir das Bild"-Code: wäre es nicht einfacher, einmalig alle Bilder zu holen (bei Anwendung des Basis-Templates)?
- irgendwann kam die Frage auf, ob es nicht (teilweise) einfacher wäre, den JSON (bzw. den von json2nameValue() gelieferten Hash) vorzuverarbeiten. Neben dem schon länger existierenden Beispiel "map_data" in "roborock" habe ich es jetzt endlich mal geschafft, den "MiLight"-Remote-Code so aufzubereiten, dass man ihn direkt in der readingList verwenden kann: https://forum.fhem.de/index.php/topic,103493.0/topicseen.html. Zum Verständnis: Da wird (als Differenzmeldung) - anders als hier - nur ein sehr einfacher JSON mit nur einem key/value-Paar geliefert, aber im Prinzip sollte sich das auch relativ leicht aufbohren lassen, zB. mit der bool->on/off-Konvertierung und "eocr"-Bereinigung aus "6channel_ethernet_board_6input_split", das dann eben einen bereinigten Hash (ggf.) mit mehren Elementen zurückliefert, der dann von MQTT2_DEVICE weiter in Reading-Aktualisierungen umgesetzt wird.
Falls dazu Fragen sind, würde ich aber empfehlen, dazu einen eigenen Thread (gerne hier im MQTT-Bereich) aufzumachen, das ist m.E. ein eher generisches Thema, das ggf. auch für andere Anwendungsfälle interessant sein kann...

Grüße, Beta-User
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

Otto123

#733
Zitat von: 87insane am 05 November 2020, 07:53:40
Kann ich mich hier anstellen oder helfen?
Es geht hier aktuell um das Album Cover bzw. das Bild was angezeigt werden soll oder?

Das wird bei mir auch nicht mehr angezeigt. Hatte vor einiger Zeit mal neu angelegt und getestet. Habe die Bridge angepasst aber bin mir nicht sicher ggf. was übersehen zu haben. Bei mir bleiben die Cover leer aktuell....
Bzw. es ist so das diese irgendwann einfach mal erscheinen ... Warum weiß ich nicht und kann das absolut nicht nachvollziehen.
Wenn Du nur diese Einrichtung machst, gibt es kein Cover.
Wenn Du das DevstateIcon nach hier einrichtest - Kommt sofort das Albumcover (wenn es denn existiert). Das DevStateIcon stammt im wesentlichen von Dir. Bei mir funktioniert es so.
Was anderes kann ich ohne Details nicht nachvollziehen. Aber: Alles baut streng auf einer Einrichtung mit den Templates auf und dem MQTT2_Server mit autocreate simpel auf!

@Beta-user
Zitat- zu dem notify mit dem "hole mir das Bild"-Code: wäre es nicht einfacher, einmalig alle Bilder zu holen (bei Anwendung des Basis-Templates)?
Du meinst das Geräte Icon? Da läuft folgender Prozess ab - für jeden Player - beim ersten Anlegen also für xx Geräte quasi parallel:
- über den node sonos2mqtt Dienst werden erweiterte Informationen vom Player angefragt.
- Der Player antwortet 'irgendwann' - insofern läuft der Folgeprozess für jeden Player "irgendwann"
- Aus den Information wird eine URL gebaut und ein XML heruntergeladen. Das wird analysiert und eine ICON Url gebaut.
- das Icon wird lokal geladen, in das Attribute des Players eingetragen.
- damit die neuen Icons sichtbar werden muss rereadicon getriggert werden, das wird so verzögert, das es nur einmal passiert wenn alle Player fertig sind.
- alles habe ich versucht ohne blockieren von FHEM zu machen
Sicher könnte man eine Routine ins Speakertemplate machen. Ich muss sowieso noch für Mitch zum "debuggen" machen.

Rein von der Entwicklung her gibt es das Basistemplate und das "comfort" - ja man kann alles in einem machen. Dann auch noch noch das devstateicon.
Aber spätestens hier will ich das alles in eine Utils packen.

Rückmeldungen die zu Fehlerbehebung/Entwicklungen geführt haben gab es bisher von einer (knappen?) Hand voll User.
Der gesamte Code und Prozess ist sicher noch nicht perfekt.
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

wir müssten auch noch immer die Readings gerade ziehen, damit sowas wie das hier

if ($currentTrack_Title =~ 'x-sonosapi-stream:'){$currentTrack_Title=''};

im devStateIcon nicht notwendig ist ;-) Wobei sich da die Frage stellt, ob das nicht eigentlich eher im sonos2mqtt selbst schon behoben werden sollte.
Migriere derzeit zu Home Assistant