EnOcean Schalter zum Steuern von Sonos Lautsprechern

  • Hallo Community,


    Ich nutze die EnOcean Schalter von Senic (ehmals Nuimo Click) mit dem homebridge-enocean-zonefuenf Plugin und die node-sonos-http-api (https://github.com/jishi/node-sonos-http-api) um meine Sonos Lautsprecher über die Wandtaster zu steuern.

    Das funktioniert soweit mit play/pause und lauter/leiser sehr gut.

    Nun möchte ich die „Favorietentaste“ so belegen, dass ich unsere lieblingsradiosender mit einem jeweiligen Tastendruck durchschalten kann.


    Die abzurufenden url‘s sehen wie folgt aus:

    http://xxx.xxx.xxx.xx:5005/terrasse/tunein/play/6635

    http://xxx.xxx.xxx.xx:5005/terrasse/tunein/play/9214

    http://xxx.xxx.xxx.xx:5005/terrasse/tunein/play/96189

    http://xxx.xxx.xxx.xx:5005/terrasse/tunein/play/200313


    Wie kann ich nun eine Abfrage starten, damit ich bei jedem Tastendruck zur nächsten url wechsle und bei der letzten wieder zurück zur 1. url.


    Vielen Dank im Vorsus

    Gruß Martin

    2 Mal editiert, zuletzt von Hanimaniac ()

  • Das scheint mir etwas aufwändiger zu sein. Ich würde es lösen mit einem Shell-Skript, das durch das Plugin homebridge-cmdtrigger aufgerufen wird.


    Das Plugin erzeugt einen Dummy-Schalter namens, hmm, sagen wir mal: "Umschalten". Nenn den Schalter später, wie du willst. Wenn man diesen Schalter in einer HomeKit-App wie Apple Home antippt, dann ruft er das unten stehende Skript auf. Dieses Skript nimmt Kontakt zur node-sonos-http-api auf und schaltet den Sender um. Danach setzt das Plugin den Schalter in HomeKit wieder auf aus. Drückt man den Schalter "Umschalten" erneut, dann schaltet er auf den nächsten Sender und geht wieder aus. Wenn das Ende der Senderliste erreicht ist, dann wird wieder der erste Sender gewählt.


    Um so ein Skript zu erstellen, mache dieses:

    1. Logge dich per ssh auf deinem Raspi ein.

    2. Rufe den Befehl sudo nano /usr/local/bin/senderswitch.sh auf. Das ruft den Editor nano auf.

    3. Kopiere das folgende Zeugs fort hinein:

    4. Verändere die Zeile SONOSMASTER_IP=192.168.178.22:5005, indem du dort IP-Adresse deiner SONOS-Api hinterlegst. Verändere die Zeile SENDERLIST=(6635 9214 96189 200313), indem du hier deine Sender hinterlegst (innerhalb der Klammern, es können auch mehr oder weniger als vier Einträge sein).


    5. Speichere das Skript ab, indem du control-x eingibst, dann die Taste y drückst und danach die Entertaste.


    6. Mache das Script mit dem Befehl sudo chmod +x /usr/local/bin/senderswitch.sh ausführbar.


    Fertig. An dieser Stelle musst du testen, ob das Umschalten funktioniert. Das machst du erst einmal auf der Raspi-Shell, indem du den Befehl /usr/local/bin/senderswitch.sh aufrufst. Das sollte den Sender umschalten. Eine erneute Eingabe des Befehls schaltet dann auf den nächsten Sender.


    Wenn das klappt, dann installierst und konfigurierst du das Plugin homebridge-cmdtrigger. Das kannst du bequem in der Web-UI von homebridge-config-ui-x machen. Die Konfiguration des Plugins ist:

    Code
    {
        "accessory": "CmdTrigger",
        "name": "Umschalten",
        "command": "/usr/local/bin/senderswitch.sh",
        "delay": "100"
    }

    Das abspeichern und danach die Homebridge neu starten. Du solltest dann in Apple Home den Schalter "Umschalten" sehen. Wenn du ihn antippst, sollte der Sender umschalten und der Schalter nach 100 ms wieder auf aus gestellt werden.


    Letzter Schritt: erstelle in Home eine Automation, die den Schalter "Umschalten" aufruft, sobald du die Favoritentaste deines EnOcean-Schalters drückst.


    Ich habe von meinem Vorschlag nur sehr wenig selbst ausprobiert. Ich verwende auch node-sonos-http-api, aber bei mir erzeugen deine Sender nur einen Error. Ich habe mich nicht weiter darum gekümmert, warum das so ist, sondern einfach angenommen, dass das bei dir schon funktioniert. Weiterhin habe ich das Plugin nicht mit dem obenstehendes Skript getestet. Ich verwende das Plugin aber selber zum Aufruf anderer Shell-Skripte und es funktioniert seit Jahren immer zuverlässig.


    Vielleicht hilft dir das weiter.

    2 Mal editiert, zuletzt von sschuste ()

  • Hallo sschuste,


    ich danke dir erstmal für deine tolle, ausführliche Antwort.

    Ich werde mich heut abend mal ran setzen und dann berichten.

    Gruß

    Martin


    .....


    was soll ich groß sagen, es funktioniert - vielen vielen Dank dafür.

    Ich habe das Shell-Skript noch leicht modifiziert:


    Somit muss ich für meine verschiedenen Räume nur den Namen oben ändern.

    Somit habe ich die Skripte in meinem Wintergarten, Schlafzimmer, Bad und Terrasse zum laufen bekommen.


    Nur bei meiner Küche und dem Gäste WC hat es nicht funktioniert, ich gehe mal davon aus, dass die Umlaute das Problem sind?

    Wie kann ich hier das Problem lösen?

    Wenn ich in meinem Browser http://192.168.178.22:5005/gäste%20wc/tunein/play/200313 eingebe,

    kommt der gewünschte Sender im Gäste WC. Nur die Shell Datei scheint sich beim Ausführen aufzuhängen.


    Nach einigen Tests kann ich sagen, dass das skript, ausgeführt über das terminal sehr gut funktioniert.

    Nur über den homekit schalter hängt es sich meist aus, sodass der Radiosender meist nur pausiert bzw. weitergespielt wird.

    Gruß

    Martin

    2 Mal editiert, zuletzt von Hanimaniac () aus folgendem Grund: Ein Beitrag von Hanimaniac mit diesem Beitrag zusammengefügt. Erfahrungsbericht von Hanimaniac

  • Versuch mal den Raum als gäste%20wc anzugeben. Hier wird das ä zu a-Umlaut oder ä (mit dem Semikolon am Ende). Das Leerzeichen ist das %20.


    Also:

    RAUM="gäste%20wc"

    In Anführungszeichen! Vielleicht geht dann sogar da ä.

    2 Mal editiert, zuletzt von sschuste ()

  • Nur über den homekit schalter hängt es sich meist aus, sodass der Radiosender meist nur pausiert bzw. weitergespielt wird.

    Das hat mich so sehr beschäftigt, dass ich jetzt den Switch "Umschalten" bei mir eingebaut habe, um herauszubekommen, was da wohl falsch läuft. Und ich hab rausgefunden, warum das bei dir nicht vernünftig läuft, denn bei mir tat es das auch nicht.


    Die alte Leier: Zugriffsrechte. Wenn man das Skript aufruft, dann legt es im /tmp-Verzeichnis eine Datei namens favradio.cache an. In diese Datei wird ein Zähler abgespeichert. Wenn man das also auf der Shell macht als User pi, dann wird die Datei abgespeichert mit den Zugriffsrechten des Users pi. Wird das Skript dann über die Homebridge aufgerufen, dann will es ebenfalls in die Datei schreiben. Bei mir läuft die Homebridge unter dem User homebridge und der will in die Datei schreiben, die ihm nicht gehört - verboten!


    Das könnte bei dir auch der Fall sein. Abhilfe schafft das Löschen von /tmp/favradio.cache mit dem Befehl

    rm /tmp/favradio.cache. Danach nicht wieder auf der Shell aufrufen, sondern gleich auf dem iPhone ausprobieren. Das hat bei mir sofort geklappt.


    Das kommt davon, wenn man glaubt, man könne funktionierende Anleitungen einfach so runterpölen, ohne das auch alles auszuprobieren. Daran hab ich schlichtweg nicht gedacht. Sorry.


    Ich kann die Umlautproblematik bei mir nicht testen. Deine Skript-Variable RAUM ist ein String und sollte in Anführungszeichen stehen, damit es keine Probleme mit Leerzeichen gibt, also:

    RAUM="terrasse" oder RAUM="gäste wc".

    Einmal editiert, zuletzt von sschuste ()

  • Hallo sschuste,


    ich bin wirklich froh hier einen absoluten Profi im Gespräch zu haben 👍🏻

    Das Rechteproblem war tatsächlich das Problem, somit funktioniert das alles.

    Nur meine Umlautthematik macht noch Probleme.


    Ich nutze für meine homekit Geräte mit ESP8266 wifi Chip die HAA Software (https://github.com/RavenSystem…devices/wiki/Installation).

    Hier bin auch gerade am Probieren, einen dummy switch mit http request zu basteln.


    Gruß und nochmals Dankeschön

    Martin


    Update 27.12.2022


    Hallo Community,

    ich hatte ja die Probleme, dass ich für meine Sonos Lautsprecher in Räumen mit Umlauten ( z.B. Gäste WC, Küche) die Ausführung von Shell-Skripten über das Plugin homebridge-cmdtrigger

    einfach nicht durchführen konnte.

    Ich habe es nun doch über einen Kurzbefehl hinbekommen,

    mein Ziel:

    durch jedes Mal drücken der selben Taste meiner Friends of Hue oder EnOcean Schalter durch meine 4 favorisierten Radiosender auf TuneIn zu wechseln.

    Dazu benötigt man aber das Plugin homebridge-dummy.

    Um wie in meinem Fall zwischen 4 Sendern zu wechseln, benötige ich 3 Dummy Schalter (bei mir benannt Sonos Gäste Sender 1 bis 3).



    Eventuell ist es für den Ein oder Anderen noch hilfreich.


    beste Grüße und guten Rutsch

    Martin

    2 Mal editiert, zuletzt von Spy () aus folgendem Grund: Ein Beitrag von Hanimaniac mit diesem Beitrag zusammengefügt.

  • Guten Morgen zusammen, ich habe seit Anfang der Woche eine Fehlermeldung bei der Sonos Api


    Kennt jemand dieses Problem ?



    Code
    {"status":"error","error":"Cannot read property 'uuid' of undefined","stack":"TypeError: Cannot read property 'uuid' of undefined\n    at /app/node_modules/sonos-discovery/lib/prototypes/SonosSystem/applyPreset.js:101:33"}