Beiträge von sschuste

    Maz Das mit den Schalter war mir klar, habe ich ja auch so. Dachte es gibt vielleicht noch eine andere Lösung, werden sonst ganz schön viele Schalter. Testest du noch das TTS?

    Das TTS hab ich getestet. Ich hab mir einen Account bei http://www.voicerss.org angelegt und dann das kostenlose Paket gewählt. Das erlaubt immerhin 350 Speech-Ausgaben am Tag. Das reicht mir völlig.


    Ich habs genauso installiert wie in der Github-Seite angegeben und es hat auch gleich funktioniert. Aber: hier gibt's erstrecht Probleme mit den Leerzeichen oder ganz anderen Sonderzeichen. Ein API-Call wie

    Code
    /Wohnzimmer/say/Wasn los hier?

    muss urlencodet werden in

    Code
    /Wohnzimmer/say/Wasn%20los%20hier%3F

    Ich habe mich dann nicht weiter drum gekümmert, weil ich dafür gar keine Anwendung habe. Um diese Codierung vorzunehmen, benötigt man ein urlencode-Programm oder man macht's nach einer Tabelle wie hier zu sehen: https://de.wikipedia.org/wiki/…hen_in_Prozentdarstellung oder online: https://www.urlencoder.org.


    Die Sprachqualität ist eher mäßig, aber auch auf deutsch zu bekommen. Ob am Ende ein Fragezeichen steht oder nicht, spielt für die Aussprache keine Rolle - hört sich immer gleich an.

    Das ist doch schon Mega. Wie machst du das mit den Lautstärken?

    Also, das kann man erstmal ganz schön im Browser auf dem Rechner testen.


    Meine Sonos-Zone heißt übrigens "Wohnzimmer".

    Die IP meines Raspis ist 192.168.1.21


    http://192.168.1.21:5005/Wohnzimmer/volume/40 setzt die Lautstärke auf 40%

    http://192.168.1.21:5005/Wohnzimmer/volume/0 setzt die Lautstärke auf 0%

    http://192.168.1.21:5005/Wohnzimmer/volume/100 setzt die Lautstärke auf 100%


    Wenn die Sonos-App auf dem Rechner gestartet ist, kann man dort direkt nachverfolgen, was der Lautstärkeregler so treibt.


    Ich nehme an, dass man die Zone "Wohnzimmer" auch weglassen kann und dann werden damit dann alle Sonos-Lautsprecher in allen Zimmern angesprochen. Ich hab augenblicklich aber nur welche in einem einzigen Raum. Also:


    http://192.168.1.21:5005/volume/40 (hab's nicht getestet)


    Abspielen tu ich mit

    http://192.168.1.21:5005/Wohnzimmer/play

    http://192.168.1.21:5005/Wohnzimmer/pause


    Dann gibt's noch so einiges anderes wie

    http://192.168.1.21:5005/Wohnzimmer/next

    http://192.168.1.21:5005/Wohnzimmer/previous

    http://192.168.1.21:5005/Wohnzimmer/mute


    Das geht alles im Browser. Auf der Raspi-Shell nimmt man curl:

    curl http://192.168.1.21:5005/Wohnzimmer/play


    Vieles andere findet man noch auf der Projektseite im Github

    https://github.com/jishi/node-sonos-http-api


    Dort aufgepasst! Die Beispiele dort nehmen die Zone "living room". Zwei Wörter mit einem Leerzeichen dazwischen sind der Tod jeder URL. Das muss erst noch URLencoded werden, das heißt, das Leerzeichen wird durch "%20" ersetzt.


    Aus http://localhost:5005/living room/volume/15

    wird dann http://localhost:5005/living%20room/volume/15


    Gruß

    Dann kannst du ja mal Meldung machen wenn du die API etwas getestet hast. Ich nutze sie zur Zeit nur für Sprachausgaben. Ich würde aber gerne noch Radiosender und Playlisten etc einfügen, aber ich habe noch kein Plan wie das funzt.

    So, allzu viel kann ich mir der API nicht anfangen, aber sie ist trotzdem im Einsatz. Ich stelle damit in bestimmten Szenen nur die Lautstärke meines Sonos-Zeugs ein. Beispielsweise schaltet nun ein "Siri, Kino ein" etwaig laufende Musik aus und hebt die Lautstärke der Lautsprecher an. "Kino aus" macht das Gegenteil: Lautsprecher leiser und Musik wieder an.


    Eine Szene wie "Siri, mach, dass die Nachbarn das Haus verlassen" könnte also die Lautstärke auf Maximum schalten und üblen Thrash Metal abspielen. Das noch mit Geofencing verbunden, und du bist selbst schon ein paar hundert Meter weg, bevor es losgeht :D


    Verbunden hab ich die API einfach mit Homebridge-http.

    so ist es OK, wobei es eigentlich nur von root oder system gestartet/bearbeitet werden sollte,

    Eigentlich ist das nicht ganz richtig. Manche Startskripte müssen von root gestartet werden, andere können auch von normalen Usern gestartet werden. In vorliegenden Fall läuft der Service sowieso unter dem User pi (das liegt an dem verwendeten Startskript, das den Service mit einem sudo -u pi node server.js startet). Das hat die Vorteile, dass


    a) der Service nicht mit root-Rechten läuft - einfallende Hacker, die diesen Service missbrauchen, haben damit nur die Rechte des Users pi, wenn sie euren Raspi und danach euer Netz verwüsten


    b) der User pi den Service selber starten kann und nicht extra einen Admin rufen muss (na gut, in unserem Fall egal, sind wir nicht alle ein bisschen root?).


    Ich empfehle sogar, alles Zeugs, dass keine root-Rechte braucht, auch nicht mit root-Rechten zu starten. Da bei Systemstart allerdings alle Skripte von root gestartet werden, muss das Startskript das dann selbst händeln (so, wie oben schon beschrieben).


    Trotzdem würde ich das Startskript selbst immer absichern mit

    sudo chown root /etc/init.d/mein-geiles-startscript

    damit keiner ohne root-Rechte es verändern kann.


    Damit jedermann die Startskripte nutzen kann, müssen natürlich die darüber liegenden Verzeichnis ebenfalls offen sein, also /etc und /etc/init.d. Und per default sind die das auch.


    Jaaa, aber, wird jetzt der eine oder andere vielleicht sagen und fragen: was ist jetzt mit den Startscripten, die nur root aufführen darf und kein anderer? Wasn mit denen?


    Falls die Skripte nicht von selbst abbrechen, weil sie Funktionen aufrufen, für die man root-Rechte braucht (oder die abbrechen, weil in Ihnen eine Abfrage steckt, die den root-User abfragen, oder die abbrechen, weil ein Service auf einem Port gestartet werden soll, der root vorbehalten ist): einfach ein


    sudo chown root /etc/init.d/mein-geiles-startscript

    sudo chmod 700 /etc/init.d/mein-geiles-startscript


    drüberbügeln. Allerdings rate ich dringendst davon ab, an den Startskripten herumzufummeln, die man nicht selber geschrieben habt. Ich rate auch davon ab, mit chmod 777 irgendwas die Dinge gangbar zu machen, die irgendwie nicht gehen wollen, und ich rate davon ab, chmod -R einzusetzen, bevor man nicht zwei Stunden intensiv darüber nachgedacht hat, was das bewirkt und ob man das auch wirklich braucht.


    Gruß

    Wie bist du eigentlich auf : cmd="npm start gekommen ? Würde es mit cmd = node server.js auch laufen?

    Nun, das stand ja so in der Installationsanleitung auf https://www.mkshb.de/howto-node-sonos-http-api-installation/ . Unter der Überschrift Der erste Start steht, ich solle


    npm start


    eintippern. Da ich immer alles mache, was man mir sagt, hab ich diesen Befehl auch für das Startscript verwendet. Allerdings funktioniert das bei mir auch mit cmd="node server.js".


    Da ich diesen ganzen Node-Verhau unübersichtlich und gruselig finde, kann ich Detailfragen dazu leider nicht beantworten.

    Ich kannte sie bislang nicht. Das ist ja das schöne an diesem Forum - ständig wird man hier mit der Nase auf neues Spielzeug gestoßen. Jetzt muss ich erstmal ausprobieren, was das kann und ob ich es brauchen kann.

    Quatsch. Vergiss es. Ich arbeite dran.

    Sodele. Bei mir startet der Server mit diesen Zeilen:


    dir="/home/pi/node-sonos-http-api-master"

    cmd="npm start"

    user="pi"


    Das Startscript heißt bei mir


    /etc/init.d/sonos-http-api-master


    und ich habe ihm die notwenigen Rechte mit dem Befehl


    sudo chmod 755 /etc/init.d/sonos-http-api-master


    gegeben.

    Vielleicht funktionieren die ja mit Alexa nicht, weil glücklicherweise andere die Privatsphäre höher einschätzen 8o

    :thumbup:Allerdings finde ich es jetzt nicht soooo wichtig, wie hoch andere den Wert meiner Privatsphäre einschätzen. Ich hab mir nämlich die Mühe gemacht, über diese nachzudenken und sie sozusagen auf den "Prüfstand" zu setzen. Ist nicht viel übrig geblieben, was unbedingt privat bleiben müsste :huh: Ist der Ruf erst ruiniert... Aber das ist natürlich jedermanns eigene Sache.


    Das ich Alexa einsetzen muss, finde ich höchst ärgerlich und ich habe mich eine Weile dagegen gesträubt. Aber von Apple kommt schlichtweg nichts Brauchbares. Siri ist ein bisschen "schlauer" als Alexa, und Alexa ist viel umständlicher, kann dafür aber viel weniger - trotz Skills! Die sind oft halbherzig gemacht und nicht bis zu Ende gedacht. "Alexa, öffne $SKILL und $VORGEFERTIGTER_SATZ": nee, das ist völlig unelegant.


    Ist so ähnlich wie der Apple Newton vs. den Palm Pilot. Ersterer lernte meine Schrift, letzterer zwang mich, seine Schrift zu lernen. Das war vor 25 Jahren, aber ich werd auch nicht jünger und hab dementsprechend noch weniger Lust, Alexas Befehle auswendig zu lernen.


    Demgegenüber steht ein Echo Dot für 35 Euros, der mich in der ganzen Wohnung versteht, teilweise durch mehrere Zimmer hindurch, ohne dass ich sonderlich laut sein müsste. Das Gegenstück von Apple heißt HomePod, kostet das Zehnfache und kann Sachen, die ich nicht brauche - Lautsprecher hab ich hier nämlich schon genug. Das kann ich leider nicht gebrauchen. Leider! Apple, ihr seid ein paar Penner und überlasst Amazon diesen Markt mit allem Schnickschnack - ohne Steve Jobs seid ihr zu doof, wirklich coole Sachen zu entwickeln.


    Egal, gehört alles nicht zum Thema hier und deswegen nehm ich jetzt mein Lieblingskissen und heul da rein.

    Man kann ein Gerät einschalten, so was wie eine Lampe oder eine Waschmaschine. Eine Szene ist aber kein Gerät, sondern eine Gruppe von Aktionen, wie beispielsweise:


    [Szene weihnachtliches Haus]

    Baumbeleuchtung ein

    Playlist Weihnachtslieder spielen

    Feuerlöscher gelb beleuchten


    Wenn diese Szene ausgelöst wird, macht sie genau das. Bitte beachten: die Szene wird ausgelöst, nicht etwa eingeschaltet. Deshalb kann man sie auch nicht ausschalten. Wenn das Auslösen einer Szene rückgängig gemacht werden könnte, so müsste Homebridge die Geräte, die nun ihren Status verändert haben (Baumbeleuchtung ist ein, Musik läuft, Feuerlöcher wird gelb beleuchtet) auf den Status bringen, den sie vorher hatten. Die müssen ja vorher nicht unbedingt ausgeschaltet gewesen sein. Vielleicht war ja der Feuerlöscher ja schon vorher weiß oder blau beleuchtet.


    Eine Statusänderung deiner Geräte ausgelöst durch eine bestimmte Szene kann nur durch das Auslösen einer weiteren Szene erreicht werden. Du benötigst also eine Szene, die Baumbeleuchtung ausschaltet, die Musik stoppt und den Feuerlöscher im Dunkeln verschwinden lässt. Geht nur so.


    Stefan

    Ich wollte mal berichten, was ich mit Homebridge getrieben habe. Ich habe nämlich bestimmt keine sonderlich alttägliche Konfiguration gebastelt.


    Was node.js angeht, kann man nämlich nur von Basteln sprechen. Ich bin ein erfahrener Linux-Nutzer, bin seit über 25 Jahren Unix/Linux-Admin und muss kann schon ein bisschen mehr als ein einfaches ls - aber dieses node.js-Zeugs finde ich übelst. Egal, aber kommt bloß nicht auf die Idee, mir dazu Fragen zu stellen. Mein Setup funktioniert, aber ich kann teilweise nicht sagen, warum. Gefrickel.


    Zur Sache: ich bin seit 35 Jahren auf der Suche nach schönen Lampen, und innerhalb dieser Zeitspanne habe ich genau zwei gefunden von der Sorte, die ich auch bezahlen wollte. Natürlich habe ich in der langen Zeit noch viel anderes schönes Zeugs gefunden, aber meine Bank hat immer den Kopf geschüttelt und gemeint: „so eine teure Lampe brauchen wir nicht“.


    Da fielen mir die feuchten Träume meiner Pubertät ein. Nein, nicht die Phantasien über Brigitte, Kirsten und Susanne, sondern bewegliche Bühnenbeleuchtung, heutzutage Moving Heads genannt. Warum nicht solche Wackeldackel unter die Decke hängen und damit nicht nur Farbe und Lichtstärke, sondern auch die Beleuchtungsrichtung steuern? Also beispielsweise eine Szene kreieren, in der drei oder vier Moving Heads die Bilder an der Wand beleuchten, so als Standard-Wohnzimmerszene. Und dann könnte man, wenn man das Heimkino einschaltet, alle bis auf einen ausmachen, und der eine dreht sich so, dass er nun schwach den Wohnzimmertisch beleuchtet. Oder ich bekomme Licht an den Schreibtisch, wenn ich es dort brauche. Oder ich mach ein farbige Kleckse auf den Fußboden, mal hier, mal dort. Was auch immer.


    So wie fucking Genesis 1986 mit ihren Vary*lites in der Düsseldorfer Philipshalle. Genau so.


    Für mich hörte sich das gut an, also fing ich mich an damit zu beschäftigen. Ich habe gelernt, dass es verschiedene Arten von Moving Heads gibt, die Washer, die Teams und die Spots. Wie bei allen Lampen ist auch hier die Preisskala nach oben offen. Ich hab, um zu testen, dann einen billigen Washer gekauft, ein China-Ding namens Lixada Moving Head Mini LED [1] für 70 Eurodinger .


    Um einen Moving Head zu steuern, muss man das DMX-Protokoll verwenden. Die Bühnentechnik verwendet dieses Protokoll. Nur ganz kurz: Die Lampen werden mittels eines dreipoligen Kabels in Reihe miteinander verbunden, an ein Ende kommt eine Art Endwiderstand (soll man machen, hab ich aber nicht getan) und das andere Ende wird in ein Mischpult eingestöpselt. Jeder Lampe wird per Dipswitch an der Lampe eine Adresse zugewiesen. Und am Mischpult kann man dann die Lampen steuern, unter anderem Dim (Lichtstärke), Tilt (vertikale Bewegung), Pan (horizontale Bewegung), und die Farbe des Lichts.


    Dabei kann man Lampen verschiedener Hersteller mixen. Ist alles kompatibel. Zumindest mit gutem Willen.


    Nun habe ich kein derartiges Mischpult und wollte auch keins im Wohnzimmer haben. Ich wollte für die Steuerung HomeKit verwenden. Also ging’s ans Basteln.


    Ich hab also einen Raspi 3 erworben. Auf den habe ich Homebridge installiert - mühsam per Hand - und danach eine Software namens dmx-web [2], witzigerweise auch ein node.js-Modul. Da der Raspi keinen dreipoligen Anschluss anbietet, um dort das DMX-Kabel anzuschließen, habe ich bei dmx4all ein NanoDMX USB Interface [3] für knappe 60 Euro gekauft. Dabei handelt es sich um ein Kabel, das auf der einen Seite den Dreipolstecker hat und auf der anderen Seite einen USB-Stecker. Und der passt ja in den Raspi.


    Nur mal so zwischendurch: dieses Wissen musste ich mir erstmal draufschaffen. Wie funktioniert node.js, wie funktioniert DMX, wie funktioniert die Adressierung, wie funktioniert ein Moving Head. Ich hab vorher nichts drüber gewusst, und der Lernprozess hat so seine Zeit gedauert.


    Zu dmx-web gibt es nur sehr schmale Doku. Ein einzeiliges bash-Skript hat mehr Inhalt. Nachdem ich die beiliegende Konfigurationsdatei halbwegs verstanden hatte, habe ich sie so verändert, das sie meinen Lixada Washer vernünftig beschrieb. Glückliches Lächeln verzerrte mein Gesicht, als ich den Moving Head dann nach einigen Fehlversuchen per Webinterface, das dmx-web mitliefert, von meinem PC aus steuern konnte. Links, rechts, hoch, runter, rot, blau, gelb, grün. Geilomat.


    Für Homebridge gibt es ein Plug-in, das sich homebridge-dmxuniverse [4] nennt. Dieses Plug-in arbeitet mit der API von dmx-web zusammen. Ich kann wiedi, dem Programmierer von dmx-web, nur dafür danken, dass er so was Feines wie diese API programmiert hat, und bluemaex, dem Programmierer von homebridge-dmxuniverse, dafür, dass er diese API nutzt.


    Mit dem Plug-in homebridge-dmxuniverse kommt nun zusammen, was zusammen gehört. Allerdings musste ich dafür für meinen Washer einen kleinen Treiber in JavaScript schreiben. Hässlich, hässlich sowas, vor allem, wenn man wie ich keinen blassen Schimmer von JavaScript hat. Ich habe also einen Treiber genommen, der bei homebridge-dmxuniverse für eine ganz andere Lampe dabei war und habe nach einer Weile herausbekommen, wie ich den so verändern konnte, dass damit mein Moving Head funktioniert.


    Und was soll ich sagen: die Scheiße geht! Der Washer taucht jetzt in Apples Home App auf, und weil ich noch fies getrickst habe, kann ich nun mit der App Dim, Tilt und Pan einstellen. Und ja, das ist eindeutig besser als das, was mir Brigitte, Kirsten und Susanne damals hätten bieten können.


    Kleine Problemchen gibt dann natürlich doch: HomeKit kennt keine Lampen, die sich bewegen können. HomeKit kennt nur Lichtstärke und Farbe, nicht aber eine Richtung. Das bedeutet, dass es kein richtiges Userinterface für Tilt oder Pan gibt. Ich habe mir damit beholfen, dass ich drei Treiber zusammengefrickelt habe: einen für Lichtstärke, einen für Tilt und einen für Pan. Daher taucht der Washer nun dreimal in der Home App auf: als lixada-led, lixada-tilt und lixada-pan. Bei letzteren beiden schiebe am Helligkeitsregler und die Lampe bewegt sich.


    Darüber hinaus sind meine Anpassungen der JavaScript-basierten Treiber nicht gerade ein großes Werk. Es funktioniert halt, aber schön ist es nicht.


    Und, ok, ich muss es zugeben, so wie Genesis 1986 isses jetzt gerade auch nicht mit dem einen Washer, aber wenn man die Augen zusammenkneift, kann man's so ein bisschen erahnen.


    Mein Test ist damit beendet. Demnächst werde ich also drei oder vier Cameo NanoSpot 120 Moving Head Spots [5] beschaffen. Und dann wollen wir mal sehen, ob mein Plan am Ende auch in Gänze aufgeht und das ganze cool funktioniert. Ich muss noch ein bisschen an den Moving Heads basteln, die haben alle laute Lüfter für die Servos und die will ich noch durch leisere austauschen oder schaltbar machen. Und in diesen Dingen bin ich noch schlechter als in JavaScript-Programmierung. Mit dem Lötkolben, über den ich verfüge, kann man auch Dachrinnen reparieren. Immerhin habe ich die erweitere Alexa-Version von Homebridge installiert und kann den Washer nun auch per Alexa steuern.


    Dieses Setup ist bestimmt nichts für jedermann, aber ich wollte es euch trotzdem mal vorstellen.


    Gruß,

    Stefan


    [1] https://www.amazon.de/Lixada-D…+head&tag=hktips-forum-21

    [2] https://github.com/wiedi/node-dmx

    [3] http://www.shop.dmx4all.de/de/…anoDMX-USB-Interface.html

    [4] https://github.com/bluemaex/homebridge-dmxuniverse

    [5] https://www.thomann.de/de/cameo_nanaspot_120.htm