Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Alexa-Anbindung eines Dimmers mit Node-RED

    NEWS

    • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    Alexa-Anbindung eines Dimmers mit Node-RED

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      schnipsel71 last edited by

      Aus irgendeinem Grund schaffe ich es nicht, die Dimmfunktion meiner Spots im Wohnzimmer über Alexa mit Node-RED zu realisieren.

      8beda449-826f-4638-a43e-e7114bc7a7f6-image.png

      Wo liegt der Fehler?

      J 1 Reply Last reply Reply Quote 0
      • J
        J_Paul @schnipsel71 last edited by

        @schnipsel71
        leider verrätst Du ja nicht viel wie weit du kommst, oder wo es hakt.
        Man sieht ja den bewährten Skill "Node-RED Contrib Amazon Echo module", aber auch den Nachfolger "dulonode".
        Wird denn dein Smart-Gerät (Spots) überhaupt bei einer Alexa Suche gefunden? Das wäre ja der erste Schritt. Ich hatte immer Schwierigkeiten (nach jedem iobroker Neustart) das ganze funktionabel zu halten, solange Port 80 benutzt wurde. es musste immer auf der Konsole "erlaubt" werden unterhalb von Port 1000 was zu machen.

        sudo setcap ‚cap_net_bind_service=+ep‘ which node
        

        Leider keine Lösung die "Bootsicher" ist
        Nutze seither einen anderen Port und "biege" mir den Port 80 dahin um.
        Damit Alexa dein Gerät(e) findet, müsste so ein Aufruf funktionieren:

        http://youraddr:80/description.xml
        und so ein Ergebnis liefern:

        fc5a6bec-fd3d-4754-a245-66636ed1ed8e-image.png

        Solange das nicht funktioniert, brauchst du gar nicht weiter machen.
        Hier mal meine alten Notizen, die ich mir mal gemacht hatte:


        Deshalb „biegen wir den Port um“ und zwar von Port 80 auf Port 8095. So schickt das Echo Device die Befehle an Port 80, diese „landen“ aber auf Port 8095. Der hier gezeigte Weg scheint kompliziert und aufwendig, aber nur auf den ersten Blick und ist eigentlich einfach und schnell in 4 Schritten erledigt. Als root User per SSH auf der Iobroker Maschine wird festgestellt wie die Netzwerkkarte heißt:

        ifconfig

        gibt ifconfig eine Fehlermeldung aus, ist es noch nicht installiert, das holt man nach mit:

        apt-get install net-tools und versucht es nochmal mit dem Befehl ifconfig. Die Ausgabe sieht dann ungefähr so aus:

        425c3447-745a-4c8d-9429-bca72b97f0c8-image.png

        Von dieser Ausgabe brauchen wir nur den Namen der Netzwerkkarte z.B ETH0, oder wie in diesem Fall ens18.

        Zuerst „befehlen“ wir, dass unsere „Portumbiegung“ akzeptiert werden soll:

        iptables -I INPUT 1 -p tcp –dport 80 -j ACCEPT

        Dann kommt die eigentliche „Umbiegung“ von Port80 auf Port 8095:

        iptables -A PREROUTING -t nat -i ens18 -p tcp –dport 80 -j REDIRECT –to-port 8095

        Wobei für ens18 evtl. der eigene Name der Netzwerkkarte eingesetzt werden muss (zB. ETH0). Mit diesen 3 schritten wäre die Umbiegung bereits fertig, allerdings nur bis zum nächsten Neustart der Maschine. Deswegen müssen wir das ganze noch „permanent“ machen:

        apt install iptables-persistent

        Damit ist die Port Einrichtung auch schon beendet und wir kommen zu den einfacheren Schritten. Zuerst installieren wir unter Adapter node-red und fügen eine Instanz hinzu....


        In der Konfiguration vom Echo-Hub in Node-Red wird dann der port 8095 eingetragen, durch die "Umbiegung" findet Alexa den Hub aber trotzdem auf Port 80 (siehe Link von oben)

        330a38e6-defe-48d9-b33e-90aa28d93701-image.png

        Auseinander getüddelt hatte ich mir das Ganze von hier (Solution 2)

        https://github.com/datech/node-red-contrib-amazon-echo/wiki/Troubleshooting

        Wenn Du bis da gekommen bist und es dann bei den weiteren Schritten klemmt, sag Bescheid.

        Es ist extrem entspannend unbeteiligt die Diskussionen rund um IOT, Matter, Alexa Skills (v2, v3) mit zu verfolgen und gleichzeitig zu wissen, dass alles weiter funktioniert und weiter funktionieren wird, ohne Gedöns.

        e324a8de-fe04-47c3-82ee-a2432e344413-image.png

        KISS. Was man nicht benutzt, kann auch nicht kaputt gehen.

        S 1 Reply Last reply Reply Quote 0
        • S
          schnipsel71 @J_Paul last edited by

          @j_paul Ja, du hast Recht - ich muss noch nachtragen:

          Die Spots kann ich über Alexa erreichen, indem ich beispielsweise sage "Spots aus" oder "Spots an". Aber das Dimmen mit "Spots dimmen auf 30%" funktioniert leider nicht.

          Vielen Dank für den Tipp mit dem Port, aber an dem hängt es anscheinend nicht.

          Hast du noch eine andere Idee?

          J 1 Reply Last reply Reply Quote 0
          • J
            J_Paul @schnipsel71 last edited by

            @schnipsel71

            542e6318-9ce9-4dab-835e-711b2979ea99-image.png

            Die Funktion fürs dimmen:

            msg.payload = parseInt(msg.bri / 254 * 100);
            return msg;
            

            zum (sicheren) Auschalten hatte ich noch den Switch

            b576db63-8ecb-461e-a8c0-659ee5b0ad3e-image.png

            Mit der angehängten Funktion

            msg.payload = 0;
            return msg;
            

            Sag mal bitte, ob das so klappt.

            S 1 Reply Last reply Reply Quote 0
            • S
              schnipsel71 @J_Paul last edited by

              @j_paul Leider funktioniert das auch nicht. Die Spots schalten immer grundsätzlich auf 50%, gleich welche Zahl ich sage zwischen 1% und 100%. Nur bei 0% schalten die Spots komplett aus. Genauso, wie wenn ich sage "Spots aus".

              J 1 Reply Last reply Reply Quote 0
              • J
                J_Paul @schnipsel71 last edited by

                @schnipsel71
                Könntest du mal (um das Problem einzukreisen) auf einen anderen Datenpunkt lenken? Irgend ein State im 0_User Verzeichnis vom Typ Number würde ja reichen.
                Nur zum Testen mal….

                P 1 Reply Last reply Reply Quote 0
                • P
                  peterfido @J_Paul last edited by peterfido

                  @j_paul Alexa kennt den aktuellen Wert nicht. Der wird auf der linken Seite mit Angabe der Node-ID an Alexa gemeldet. Da kommen alle Istwerte hin, damit Alexa weiß, dass der letzte Befehl auch eingetrudelt ist. Die Hilfe zu dem Node gibt da Details zu preis.
                  Screenshot_20251029_193146_Vivaldi.jpg

                  Ansosnten sollte man auch alle angelernten Geräte in der Alexa-App sehen und steuern können, wenn die Anbindung in Ordnung ist.

                  J 1 Reply Last reply Reply Quote 0
                  • J
                    J_Paul @peterfido last edited by J_Paul

                    @peterfido
                    Weiß jetzt nicht, ob Du den Beitrag nicht richtig gelesen hast, oder wo das Missverständnis herrührt.

                    Es geht darum, dass bei @schnipsel71 das Dimmen über die (siehe oben) "Dimm Funktion" nicht funktioniert, bei mir aber schon:
                    "Alexa, schalte Kronleuchter auf 18 Prozent"
                    wird im Datenpunkt über das "Iobroker-Node-Out" 18 geschrieben, siehe:
                    1f0b0275-acb3-4216-abfc-934211ac182b-image.png
                    Um auszuschließen, dass etwas externes (Das Gerät von Schnipsel, oder ein Skript o.ä.) den Datenpunkt mit 50 beschreibt, war mein Vorschlag es mal mit einem frisch angelegtem Datenpunkt im 0_Userverzeichnis zu probieren, zum testen/ausschließen.
                    @peterfido, zumindest kann ich nicht erkennen, wie Deine Antwort zur Fragestellung passen könnte.
                    @schnipsel71 Konntest Du das mal testen?
                    und bist du sicher, dass dies in der Dimmer Funktion steht?

                    msg.payload = parseInt(msg.bri / 254 * 100);
                    return msg;
                    
                    P S 2 Replies Last reply Reply Quote 0
                    • P
                      peterfido @J_Paul last edited by peterfido

                      @j_paul Zumindest mein Hinweis und der App. Da kann man dann sehen, was tatsächlich bei Alexa ankommt.

                      Zum Testen würde ich einfach ein oder mehrere Inject nehmen, und den Wert manuell vorgeben. Mit einem Debug-Node kann man schauen, was Alexa da sendet. Dafür das komplette Nachrichtenobjekt ausgeben. Wenn das klappt, dann weiterschauen.

                      Ich kann mich erinnern, dass anfangs immer 50% an Alexa gesendet wurden, um den Befehl heller oder dunkler mit fixen Werten zu erkennen. Evtl. nehmen die Spots auch Werte bei bri bis 255 direkt an.

                      Das Zurückmelden des Ist-Zustands an Alexa ist auch notwendig, um die Schalterpositionen in der Alexa App korrekt vorzugeben und einem "reagiert nicht" vorzubeugen.

                      1 Reply Last reply Reply Quote 0
                      • S
                        schnipsel71 @J_Paul last edited by

                        @j_paul Leider wird meinem, zu Testzwecken definierten Datenpunkt "Probewert" auch nur 0 oder 50 übergeben.

                        34f40d12-3a1d-4b70-90b9-3f52575f52cf-image.png

                        P 1 Reply Last reply Reply Quote 0
                        • P
                          peterfido @schnipsel71 last edited by peterfido

                          @schnipsel71 Häng mal hinter Spots ein Debug-Node mit der Konfig komplettes Nachrichtenobjekt. Dann Alexa bitten, die Helligkeit auf 33 Prozent zu setzen. Die Ausgabe des Debug-Nodes hier posten.

                          Beispiel: Wenn ich sage, Alexa, Gartenlicht 30 Prozent, kommt Folgendes raus:

                          fb545bab-a095-455b-b86f-ad9759d6bdcb-image.png

                          Meine Rückmeldung an Alexa sieht so aus:

                          bfd627c6-ff85-46e1-9475-0786afab94b2-image.png

                          var nodeid = "idDesNodesGartenLicht";
                          var obj = JSON.parse(msg.payload);
                          var ison=obj.on;
                          var proz=obj.percentage;
                          var hex=obj.rgb;
                          var hell=parseInt(obj.bri*255/100);
                          var color = [];
                          color[0] = parseInt (hex.substring (0, 2), 16);
                          color[1] = parseInt (hex.substring (2, 4), 16);
                          color[2] = parseInt (hex.substring (4, 6), 16);
                          
                          var newMsg={
                              payload: ''
                          }
                          
                          newMsg.payload= {
                              nodeid: nodeid,
                              on: ison,
                              bri: hell,
                              rgb: color
                              }
                          
                          node.status({text:"on: "+ison+", proz:"+proz});
                          return newMsg;
                          

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          1.1k
                          Online

                          32.3k
                          Users

                          81.1k
                          Topics

                          1.3m
                          Posts

                          3
                          11
                          132
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo