Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Otto123

Zitat von: m8ichael am 23 Februar 2021, 14:00:17
Ja, wenn ich auf in der shell s2m starte,
Wie? Mit node /usr/lib/node_modules/sonos2mqtt ?

Bei pm2 bin ich auch bloß User - ich kann da genausoweit gucken was ich aufgeschrieben habe und was das Programm hergibt. Wobei pm2 ziemlich viel erzählt... Die größte Hürde für mich war zu verstehen, dass es davon abhängt wer, wie installiert hat und aufruft ...

Ich hab gute Erfahrungen mit docker gemacht, vielleicht ist das wirklich die Lösung: einfach wenn's schwierig ist den Container 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

Otto123

#856
Ich habe jetzt mal das Setup neu überlegt, die Templates etwas umgestaltet und alles Wesentliche auf sonos2mqttUtils gepackt. Den Code dort kann man noch besser strukturieren, mir ging es erstmal darum, dass das was jetzt läuft auch wieder läuft und unterm Strich alles ein bisschen besser und effektiver ist. Schön wäre, wenn es jemand testen würde.
Das Setup
1. Schritt: sonos2mqtt irgendwie einrichten und startfähig machen, entweder wie bisher mit pm2, oder lokal anders im System, oder den docker Container nehmen.
2. Schritt: wenn es schon lief: aufräumen! Die alten beiden notify müssen weg!
sonos2mqtt stoppen "pm2 stop sonos2mqtt" oder den container stoppen
delete n_configSonos.
delete a:model=sonos2mqtt_speaker

3. Schritt: Vorbereitung treffen, die Utils holen und temporär die anderen Templates (keine Angst kann später wieder zurücksetzen).
Edit: Ab heute ist die Utils im SVN damit entfällt der erste Step, die Utils wird jetzt im Template sonos2mqtt_bridge_comfort geladen
{qx(wget -qO ./FHEM/99_sonos2mqttUtils.pm https://raw.githubusercontent.com/heinz-otto/scripts/master/fhem/99_sonos2mqttUtils.pm);;fhem('reload 99_sonos2mqttUtils.pm')}
{qx(wget -qO ./FHEM/lib/AttrTemplate/mqtt2.template https://raw.githubusercontent.com/heinz-otto/scripts/master/fhem/mein.template) ;;sleep 0.2;; AttrTemplate_Initialize()}

4. Schritt: die Bridge definieren bzw. Template setzen
define SonosBridge MQTT2_DEVICE
attr SonosBridge IODev mqtt2s
attr SonosBridge room MQTT2_DEVICE
set SonosBridge attrTemplate sonos2mqtt_bridge_comfort

5. Schritt: sonos2mqtt starten und zuschauen wie die Player angelegt werden.  8)

Wenn sie alle da sind kann man die offiziellen Templates wiederholen:
{ Svn_GetFile("FHEM/lib/AttrTemplate/mqtt2.template", "FHEM/lib/AttrTemplate/mqtt2.template", sub(){ AttrTemplate_Initialize() }) }
Die Neuanlage der Speaker funktioniert auch mit dem offiziellen Template.

@Beta-User Hast Du eine Idee wo wir die 99_sonos2mqttUtils.pm hinpacken? SVN contrib? Ich hole mir da einen Zugang? Sollten wir diese Datei innerhalb des Bridge Template herunterladen? 

Ergänzung:  Die Erzeugung der Favoriten und Gruppen Liste am Player erfolgt mit je einem setter in der Bridge. Das ist jetzt so ein Henne/Ei Problem was ich noch nicht gelöst habe: Beim Anlegen der Bridge gibt es noch keinen Player, aber nur über einen Player kann ich die Liste abrufen. Die Gruppenliste macht eh erst Sinn wenn alle Player da sind. Also erstmal so:
per Hand die Favoriten lesen get Favorites
per Hand die Player um die Listen ergänzen set setplayFav, set setjoinGroup
Das Thema ist damit noch nicht perfekt, die Favoriten sind über playUri nicht alle abspielbar, bei mir funktionieren nur radios. Es gibt auch noch die Radiofavoriten die man in TuneIn anlegen kann, die könnte man auch auslesen.
Jetzt muss ich mich noch um das Setup der Speakfunktion und die Auswahl der TTS Variante kümmern.
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 24 Februar 2021, 12:53:44
@Beta-User Hast Du eine Idee wo wir die 99_sonos2mqttUtils.pm hinpacken? SVN contrib? Ich hole mir da einen Zugang? Sollten wir diese Datei innerhalb des Bridge Template herunterladen?
Ui, sehr versteckt...

Zugang über Rudi (bzw. die allgemein hierfür vorgesehene email-Adresse) beantragen wie in https://svn.fhem.de/ beschrieben (key mitschicken etc.).

Würde das ähnlich machen wie bei ebus&anderen, also die speziellen myUtils nach contrib, und die dann von dort holen, wenn das Basistemplate geladen/angewandt wird.

Du darfst dich auch gerne als 2. Maintainer ein mqtt2.template eintragen, wenn du magst ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Stefan_Hvr

#858
Hallo Otto, Hallo all die anderen,
nachdem ich vor 58 Seiten angefangen habe, dachte ich irgendwann ich lese mal Eure letzten Beiträge und bin dann auf diesen gestoßen ;-)

Zitat von: Otto123 am 24 Februar 2021, 12:53:44
Schön wäre, wenn es jemand testen würde.

GERN!

2. Schritt: wenn es schon lief: aufräumen! Die alten beiden notify müssen weg!
sonos2mqtt stoppen "pm2 stop sonos2mqtt" oder den container stoppen

CHECK

{qx(wget -qO ./FHEM/lib/AttrTemplate/mqtt2.template ./FHEM/99_sonos2mqttUtils.pm https://raw.githubusercontent.com/heinz-otto/scripts/master/fhem/mein.template) ;;sleep 0.2;; AttrTemplate_Initialize()}

2021.02.27 20:09:44 2: AttrTemplates: got 104 entries


Bridge definiert (MQTT Server vorhanden)

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


Screenshot -MQTT_RINCON angelegt

i@fhem:~ $ pm2 start sonos2mqtt
[...]
┌─────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name           │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ LandroidSrv    │ default     │ N/A     │ fork    │ 1054     │ 44h    │ 0    │ online    │ 0%       │ 53.9mb   │ pi       │ disabled │
│ 1   │ sonos2mqtt     │ default     │ N/A     │ fork    │ 5294     │ 0s     │ 0    │ online    │ 0%       │ 17.4mb   │ pi       │ disabled │
└─────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘


    Screenshot MQTT_RINCON_nach_Notify.png

    was geht adhoc:
    webcmd - Start / Stop - Mute - Lied vor/zurück
    set - Pause/play - set volume - next / Previous - toggle
    Favoriten --> Funktioniert für Radiosender / für Playlisten noch nicht (siehe unten Antwort von otto) (erst in der Bridge die Favoriten an die PLAYER schicken
    mp3 vom Share abspielen --> Wer es sucht:  "set PLAYER notify 25
x-file-cifs://<ip-adresse>/<FREIGABE>/<FILE>"
Text2speech --> bin ich noch am Testen.

was geht ad hoc nicht:
webcmd: lauter/leiser --> korrigiert Otto (siehe unten)
joingroup, wenn die Gruppen aus der Bridge verteilt worden sind

Cool was ihr da entwickelt habt. :-) Gefühlt ist FHEM viel "flüssiger/performanter" mit dieser Anbindung.

VG Stefan
[/list]
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

#859
Danke fürs testen. Stimmt volumeUp und volumeDown wird mit meinem neuen Setup nicht angelegt. Schau ich mir an!

Du brauchst eigentlich nur die SonosTTS anlegen - steht im Wiki :)

Edit: ok habs gefunden und einen "dirty fix" - bau ich ein und schiebe es dann ins svn - ich melde mich.
Es liegt an der Reihenfolge im Array in der setup Routine - so geht erst mal:
'volume:slider,0,1,100','volumeUp:noArg','volumeDown:noArg',
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

Stefan_Hvr

#860
sehr gern.
set notify mit
20 https://cdn.smartersoft-group.com/various/pull-bell-short.mp3
klappt auch

kannst Du mir sagen, wo ich finde wie ich einen slider für Volume in die webcmd bauen kann?

Favoriten in der Bridge mit "setplayfav" - dann stehen sie in den playern zur Verfügung und können ausgewählt werden, aber "nur" die Radiosender, keine Playlisten, richtig?
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

Du redest von dem was Du jetzt siehst? Das ist kein webcmd das ist devStateIcon.
Der Slider webcmd ginge so in der Art
attr MQTT2_RINCON_347E5C82560801400 webCmd volume
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

Stefan_Hvr

jetzt auch gesehen. Sorry attr MQTT2_RINCON.* webCmd volume
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

Zitat von: Stefan_Hvr am 27 Februar 2021, 21:23:27
Favoriten in der Bridge mit "setplayfav" - dann stehen sie in den playern zur Verfügung und können ausgewählt werden, aber "nur" die Radiosender, keine Playlisten, richtig?
Ja irgendwie ist die uri der Playlisten anders und geht nicht so einfach. Bei mir sind Radios die einzigen die funktionieren.
Ich schau mir das sicher später mal noch an.
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

Stefan_Hvr

Als ich eben
set joinGroup aufgerufen habe und den Namen des Players eingetippt habe wurde die Gruppe gebildet.

Dann habe ich in der Bridge
set SonosBridge setjoinGroup ausführt

dann ist das Auswahlmenü im Player vorhanden, aber ein

set PLAYER joinGroup  wird nicht mehr ausgeführt

2021-02-27 21:50:59 MQTT2_DEVICE MQTT2_RINCON_000E588C315C01400 joinGroup erscheint im EventMonitor
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

ich kann gerade nicht nachvollziehen was da passiert ist. Ich schau es mir morgen an.
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

Stefan_Hvr

der Unterschied zwischen saytext und speak ist mir nicht klar. wenn Du ihn mir sagt würde ich das im Wiki ergänzen.
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

#867
nochmal nachgefragt:
set SonosBridge setjoinGroup Fehler ich meinte
set PLAYER joinGroup
da gehört schon noch die Gruppe dazu? Egal ob da eine Liste ist oder nicht, im direkten Kommando muss die Gruppe dazu.

Lass das mal bitte mit dem Wiki. Wenn ich die Umstellung fertig habe muss ich das sowieso umbauen.

Der speak Befehl ist in Anlehnung an das klassische Sonos Modul, der ist aber genaugenommen nicht Development Guidelines konform.
sayText ist Guidelines konform. Lautstärke wird dabei nicht direkt im Befehl gesetzt sondern extra.
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

Stefan_Hvr

Danke für die Erläuterung.

set SonosBridge setjoinGroup - da kommt KEINE Gruppe dahinter, dachte ich. Damit werden doch die Gruppen (möglichen Gruppen?) in die Player geschrieben. da ist ja auch weder ein Auswahlfeld noch ein Textfeld

set PLAYER leaveGroup = PLAYER verlässt die Gruppe = OK
set PLAYER joinGroup NAME PLAYER soll zu einer Gruppe = klappt nicht mehr
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

Ja klar ich habe das falsche Kommando kopiert (oben editiert)
set PLAYER joinGroup NAME
klappt bei mir nach wie vor.
Also z.B.
set alias=Kueche joinGroup Bad

Ich habe irgendwie einen eigenartigen Fehler bei einem Player wenn ich setjoinGroup in der Bridge ausführe. den versteh ich gar nicht  >:(
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