Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Alexa in Node Red ohne contrib-alexa-home oder Ähnliches

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    250

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Alexa in Node Red ohne contrib-alexa-home oder Ähnliches

Alexa in Node Red ohne contrib-alexa-home oder Ähnliches

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
alexanode redalexa ohne cloudalexa skill
82 Posts 14 Posters 12.1k Views 25 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Marsx79
    wrote on last edited by Marsx79
    #45

    @zzippo

    Sehr interessantes Projekt. Lob an zzippo! Teil 1 hat super funktioniert!

    Leider habe ich noch einige Schwierigkeiten mit Teil 2.

    Die Ports 80 und 443 müssen auf diesen vor der Installation durchgeschaltet sein.

    Nur die Ports vom Raspberry auf dem Router (in meinem Fall eine Fritzbox), oder noch woanders?

    Danach die IP Adresse auf der NodeRed bzw. der IOBroker läuft.

    Nur die IP? Kein Port oder weiteres?

    Dann Die IP des Rechners, welcher die Discovery Response von Alexa beantwortet.

    Was ist Discovery Response? Wird irgendwie nie vorher drüber gesprochen. Oder habe ich was überlesen?

    Zu guter letzt Dein Userlogin und Passwort für die Authentifizierung wenn Du auf Deine Geräte vom Internet zugreifen willst.

    Das sind dann wohl die Zugangsdaten vom DynDNS?

    Ich frage das alles weil das Script nur mit sehr vielen Fehlern durchläuft. Auch bei der Installtion von Letzencrypt scheint was nicht zu funktionieren. Ich komme nach der Installation auch nicht über den DynDNS auf die Apache Startseite.

    Z 1 Reply Last reply
    0
    • M Marsx79

      @zzippo

      Sehr interessantes Projekt. Lob an zzippo! Teil 1 hat super funktioniert!

      Leider habe ich noch einige Schwierigkeiten mit Teil 2.

      Die Ports 80 und 443 müssen auf diesen vor der Installation durchgeschaltet sein.

      Nur die Ports vom Raspberry auf dem Router (in meinem Fall eine Fritzbox), oder noch woanders?

      Danach die IP Adresse auf der NodeRed bzw. der IOBroker läuft.

      Nur die IP? Kein Port oder weiteres?

      Dann Die IP des Rechners, welcher die Discovery Response von Alexa beantwortet.

      Was ist Discovery Response? Wird irgendwie nie vorher drüber gesprochen. Oder habe ich was überlesen?

      Zu guter letzt Dein Userlogin und Passwort für die Authentifizierung wenn Du auf Deine Geräte vom Internet zugreifen willst.

      Das sind dann wohl die Zugangsdaten vom DynDNS?

      Ich frage das alles weil das Script nur mit sehr vielen Fehlern durchläuft. Auch bei der Installtion von Letzencrypt scheint was nicht zu funktionieren. Ich komme nach der Installation auch nicht über den DynDNS auf die Apache Startseite.

      Z Offline
      Z Offline
      zzippo
      wrote on last edited by
      #46

      Hallo Marsx79,

      Nur die Ports vom Raspberry auf dem Router (in meinem Fall eine Fritzbox), oder noch woanders?

      Ja, In der Fritzbox müssen die Ports 443 und 80 auf den Reverse-Procy umgeleitet werden.
      Portfreigabe.png

      Danach die IP Adresse auf der NodeRed bzw. der IOBroker läuft.

      Nur die IP? Kein Port oder weiteres?

      Ja, nur die IP Adresse, der NodeRed Port (1880) wird mit dem Script in die Datei <DeineDynDNS>.config automatisch eingetragen.

      Dann Die IP des Rechners, welcher die Discovery Response von Alexa beantwortet.

      Was ist Discovery Response? Wird irgendwie nie vorher drüber gesprochen. Oder habe ich was überlesen?

      Nein, das hatte ich nicht erklärt. Amazon nennt die Gerätesuche 'Discovery', Discovery Response ist dann die Antwort auf die Gerätesuche.

      Zu guter letzt Dein Userlogin und Passwort für die Authentifizierung wenn Du auf Deine Geräte vom Internet zugreifen willst.

      Das sind dann wohl die Zugangsdaten vom DynDNS?

      Nein, das sind die Login Daten für den Apache Server, Alle Adressen die Du über den Reverse Proxy erreichen möchtest, fordern Dich dann auf, Deine Daten einzugeben. Du möchtest ja sicher nicht, das jemand anderes Dein NodeRed aus der Ferne bedient.
      Die DynDNS diehnt ja nur dazu, (falls du eine Dynamische IP hast) Deine Fritzbox mit einem immer gleichen Namen aus dem Internet zu erreichen.

      Ich frage das alles weil das Script nur mit sehr vielen Fehlern durchläuft. Auch bei der Installtion von Letzencrypt scheint was nicht zu funktionieren. Ich komme nach der Installation auch nicht über den DynDNS auf die Apache Startseite.

      Hier wäre interessant welche Fehler auftreten, LetzEncrypt lässt sich nur installieren wenn die Portfreigabe funktioniert.

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Marsx79
        wrote on last edited by
        #47

        @zzippo said in Alexa in Node Red ohne contrib-alexa-home oder Ähnliches:

        Nein, das hatte ich nicht erklärt. Amazon nennt die Gerätesuche 'Discovery', Discovery Response ist dann die Antwort auf die Gerätesuche.

        Aber welche IP soll ich denn da angeben?

        Z 1 Reply Last reply
        0
        • M Marsx79

          @zzippo said in Alexa in Node Red ohne contrib-alexa-home oder Ähnliches:

          Nein, das hatte ich nicht erklärt. Amazon nennt die Gerätesuche 'Discovery', Discovery Response ist dann die Antwort auf die Gerätesuche.

          Aber welche IP soll ich denn da angeben?

          Z Offline
          Z Offline
          zzippo
          wrote on last edited by
          #48

          @Marsx79 said in Alexa in Node Red ohne contrib-alexa-home oder Ähnliches:

          Aber welche IP soll ich denn da angeben?

          Für die Geräte-Suche ist das Windows-Programm. Du brauchst also einen Rechner mit Windows. Dessen IP gibst Du hier ein, damit der Reverse Proxy Gerätesuchen zu diesem weiterleiten kann.
          Wichtig ist, das dieser immer die gleiche IP von Deinem Router zugewiesen bekommt.

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Marsx79
            wrote on last edited by
            #49

            @zzippo

            Vielen Dank erstmal für die Hilfe und die Erklärungen. Soweit hat jetzt alles mit dem Einrichten funktioniert.

            In der Alexa App findet er jetzt auch die neuen Geräte. Allerdings lassen diese sich nicht schalten. Kann ich irgendwie prüfen ob der Zugriff von NodeRed auf die sql Datenbank funktioniert?

            Wolltest du noch einen 4. Teil machen über die Datenbank usw.?

            Z 1 Reply Last reply
            0
            • M Marsx79

              @zzippo

              Vielen Dank erstmal für die Hilfe und die Erklärungen. Soweit hat jetzt alles mit dem Einrichten funktioniert.

              In der Alexa App findet er jetzt auch die neuen Geräte. Allerdings lassen diese sich nicht schalten. Kann ich irgendwie prüfen ob der Zugriff von NodeRed auf die sql Datenbank funktioniert?

              Wolltest du noch einen 4. Teil machen über die Datenbank usw.?

              Z Offline
              Z Offline
              zzippo
              wrote on last edited by zzippo
              #50

              @Marsx79
              Natürlich kannst Du das prüfen. Am besten erst einmal Debug Nodes in NodeRed anlegen, z.B. wie hier:
              NodeRedDebug.png
              Die debug nodes sollten so konfiguriert sein, das sie immer das gesammte Telegramm anzeigen:
              NodeRedDebug2.png
              Wenn Du es deploy'st und dann Alexa einen Schaltbefehl gibst solltest Du in etwa folgenden Output im Debug Tab sehen:
              NodeRedDebug3.png
              Hier wird eine Steckdose geschatltet, welche keiner speziellen Alexa zugeordnet ist.
              Wenn z.B. kein Output im Debug erscheint, dann kommt auch der HTTP request nicht bei NodeRed an.

              M 1 Reply Last reply
              0
              • Z zzippo

                @Marsx79
                Natürlich kannst Du das prüfen. Am besten erst einmal Debug Nodes in NodeRed anlegen, z.B. wie hier:
                NodeRedDebug.png
                Die debug nodes sollten so konfiguriert sein, das sie immer das gesammte Telegramm anzeigen:
                NodeRedDebug2.png
                Wenn Du es deploy'st und dann Alexa einen Schaltbefehl gibst solltest Du in etwa folgenden Output im Debug Tab sehen:
                NodeRedDebug3.png
                Hier wird eine Steckdose geschatltet, welche keiner speziellen Alexa zugeordnet ist.
                Wenn z.B. kein Output im Debug erscheint, dann kommt auch der HTTP request nicht bei NodeRed an.

                M Offline
                M Offline
                Marsx79
                wrote on last edited by
                #51

                @zzippo
                NodeRed.jpg

                Bei mir sieht das so aus.

                Z 1 Reply Last reply
                0
                • M Marsx79

                  @zzippo
                  NodeRed.jpg

                  Bei mir sieht das so aus.

                  Z Offline
                  Z Offline
                  zzippo
                  wrote on last edited by zzippo
                  #52

                  @Marsx79
                  Dann liegt es am Eintrag in der Datenbank, ich nehme nicht an das Du dort 'test' falsch geschrieben hast. Eher ist das Feld 'WelcheAlexa' nicht NULL sondert 'Leer'.
                  Zeig mal einen Screenshot.

                  M 1 Reply Last reply
                  0
                  • Z zzippo

                    @Marsx79
                    Dann liegt es am Eintrag in der Datenbank, ich nehme nicht an das Du dort 'test' falsch geschrieben hast. Eher ist das Feld 'WelcheAlexa' nicht NULL sondert 'Leer'.
                    Zeig mal einen Screenshot.

                    M Offline
                    M Offline
                    Marsx79
                    wrote on last edited by
                    #53

                    @zzippo

                    sql.jpg

                    Dürfen die Felder nicht leer sein? Muss ich dort "Null" eintragen? Mir ist auch noch nicht ganz klar für was die einzelnen Felder sind.

                    Z 1 Reply Last reply
                    0
                    • M Marsx79

                      @zzippo

                      sql.jpg

                      Dürfen die Felder nicht leer sein? Muss ich dort "Null" eintragen? Mir ist auch noch nicht ganz klar für was die einzelnen Felder sind.

                      Z Offline
                      Z Offline
                      zzippo
                      wrote on last edited by zzippo
                      #54

                      @Marsx79 OK, dann erkläre ich das mal.
                      Also bei einfügen einer neuen Zeile sind erst einmal alle Felder auf NULL. Wobei das kein Text ist, sondern heisst, das es keinen Eintrag gibt.
                      Da Du den DB-Browser benutzt, passiert es schnell das ein NULL Eintrag überschrieben wird. z.B. wenn Du mit Tab durch die Felder läufst.

                      • Lösungsmöglichkeit 1:
                        Du setzt das Feld wieder auf NULL (rechte Maustaste auf dem Feld, und 'Auf NULL setzten' anwählen)

                      • Lösungsmöglichkeit 2:
                        Das Script im Node-Red in der Node:'SQL for any Alexa' so ändern, das nicht nur auf NULL sondern auch auf Leerstring abgefragt wird. (siehe Zeile 14)

                      var instance = '';
                      if (typeof msg.FromSkill.payload.directive.header.instance !== 'undefined')
                      { instance = "' AND instance = '" + msg.FromSkill.payload.directive.header.instance;}
                      
                      
                      var mode = '';
                      if (typeof msg.FromSkill.payload.directive.payload.mode !== 'undefined')
                      { mode = "' AND mode = '" + msg.FromSkill.payload.directive.payload.mode;}
                      
                      msg.topic =    "SELECT topic,value,AlexaSpeakOn,AlexaSpeakOff FROM AlexaEndpoints WHERE endpointId = '"  + 
                                      msg.FromSkill.payload.directive.endpoint.endpointId + 
                                      instance + 
                                      mode + 
                                      "' AND (WelcheAlexa IS NULL OR WelcheAlexa = '');";
                      return msg;
                      

                      Zu den Einzelnen Feldern der Datenbank:

                      • EndpointID: Das ist die ID des Gerätes, diese hast Du beim Anlegen im Device generator definiert.
                        Sie wird von der Alexa App übertragen, damit Du weisst welches Gerät angesprochen wird.
                      • Controller: ist nur für Dich als Info welche Art controller es ist, wird sonst (noch) nirgends benutzt.
                      • comment: Nur ein Kommentar für Dich, wird sonst nicht benutzt.
                      • instance: Dies ist für Mode Controller, da eine Endpoint ID mehrere Mode-Controller haben kann. ist sozusagen auch eine ID. Z.B. hast Du einen Enpoint Kueche, dieser hat einen Mode-Controller für Rollos und einen für ein farbiges Licht.
                        Du könntest dann Deine instancen z.B. 'kueche.rollo' und 'kueche.farbe' nennen.
                        Hier trägst Du also den Namen ein welchen Du im Device Generator vergeben hast.
                        Bei nicht Mode-Controllern einfach das Feld leer lassen.
                      • mode: Das ist der mode für die instance, z.B. hast du die Instance 'kueche.rollo' und dann jeweils einen mode für 'auf' und 'ab', wieder Die ID eintagen welche Du im Device Generator vergeben hast.Bei nicht Mode-Controllern einfach das Feld leer lassen.
                      • topic: Das ist die IO-Broker Variable, welche Du schalten möchtest. Bitte immer darauf achten welchen Typen die Variable haben will. Aus dem Power-Controller kommt standardmässig immer true/false
                      • value: Bei Power-Controller wird automatisch true/false übertragen, Bei Percentage und anderen der gesprochene Wert. In diesen Fällen kann also der Wert freigelassen werden. Bei Mode-Controllern kannst Du hier den Wert eintragen der an die topic variable gesendet werden soll.
                      • WelcheAlexa: Du kannst zum Beispiel im Device-Generator ein Gerät anlegen, welches Stehlampe heißt, Du hast aber 3 Stehlampen im Haus, über die Angabe der Alexa kannst Du dann steuern welche Stehlampe geschaltet wird.
                        Du machst also 3 Zeilen in der Datenbank mit jeweils dem gleichen Endpoint, aber mit unterschiedlichen Alexas.
                      • AlexaSpeakOn: Für Powercontroller, Antwort von Alexa bei 'Ein', für Alle anderen Contoller: Antwort von Alexa,
                        -AlexaSpeakOff: Nur für Powercontroller, Antwort von Alexa bei 'Aus'

                      Ausserdem kannst Du mehrere Geräte gleichzeitig schalten, indem du einfach in mehreren Zeilen die gleiche Enpoint-ID, mit unterschiedlichen topics benutzt.
                      z.B habe ich ein Kommando 'alles Aus' welches diverse Lampen und Steckdosen ausschaltet.

                      Ich hoffe das hilft ersteinmal weiter.

                      M M 2 Replies Last reply
                      0
                      • Z zzippo

                        @Marsx79 OK, dann erkläre ich das mal.
                        Also bei einfügen einer neuen Zeile sind erst einmal alle Felder auf NULL. Wobei das kein Text ist, sondern heisst, das es keinen Eintrag gibt.
                        Da Du den DB-Browser benutzt, passiert es schnell das ein NULL Eintrag überschrieben wird. z.B. wenn Du mit Tab durch die Felder läufst.

                        • Lösungsmöglichkeit 1:
                          Du setzt das Feld wieder auf NULL (rechte Maustaste auf dem Feld, und 'Auf NULL setzten' anwählen)

                        • Lösungsmöglichkeit 2:
                          Das Script im Node-Red in der Node:'SQL for any Alexa' so ändern, das nicht nur auf NULL sondern auch auf Leerstring abgefragt wird. (siehe Zeile 14)

                        var instance = '';
                        if (typeof msg.FromSkill.payload.directive.header.instance !== 'undefined')
                        { instance = "' AND instance = '" + msg.FromSkill.payload.directive.header.instance;}
                        
                        
                        var mode = '';
                        if (typeof msg.FromSkill.payload.directive.payload.mode !== 'undefined')
                        { mode = "' AND mode = '" + msg.FromSkill.payload.directive.payload.mode;}
                        
                        msg.topic =    "SELECT topic,value,AlexaSpeakOn,AlexaSpeakOff FROM AlexaEndpoints WHERE endpointId = '"  + 
                                        msg.FromSkill.payload.directive.endpoint.endpointId + 
                                        instance + 
                                        mode + 
                                        "' AND (WelcheAlexa IS NULL OR WelcheAlexa = '');";
                        return msg;
                        

                        Zu den Einzelnen Feldern der Datenbank:

                        • EndpointID: Das ist die ID des Gerätes, diese hast Du beim Anlegen im Device generator definiert.
                          Sie wird von der Alexa App übertragen, damit Du weisst welches Gerät angesprochen wird.
                        • Controller: ist nur für Dich als Info welche Art controller es ist, wird sonst (noch) nirgends benutzt.
                        • comment: Nur ein Kommentar für Dich, wird sonst nicht benutzt.
                        • instance: Dies ist für Mode Controller, da eine Endpoint ID mehrere Mode-Controller haben kann. ist sozusagen auch eine ID. Z.B. hast Du einen Enpoint Kueche, dieser hat einen Mode-Controller für Rollos und einen für ein farbiges Licht.
                          Du könntest dann Deine instancen z.B. 'kueche.rollo' und 'kueche.farbe' nennen.
                          Hier trägst Du also den Namen ein welchen Du im Device Generator vergeben hast.
                          Bei nicht Mode-Controllern einfach das Feld leer lassen.
                        • mode: Das ist der mode für die instance, z.B. hast du die Instance 'kueche.rollo' und dann jeweils einen mode für 'auf' und 'ab', wieder Die ID eintagen welche Du im Device Generator vergeben hast.Bei nicht Mode-Controllern einfach das Feld leer lassen.
                        • topic: Das ist die IO-Broker Variable, welche Du schalten möchtest. Bitte immer darauf achten welchen Typen die Variable haben will. Aus dem Power-Controller kommt standardmässig immer true/false
                        • value: Bei Power-Controller wird automatisch true/false übertragen, Bei Percentage und anderen der gesprochene Wert. In diesen Fällen kann also der Wert freigelassen werden. Bei Mode-Controllern kannst Du hier den Wert eintragen der an die topic variable gesendet werden soll.
                        • WelcheAlexa: Du kannst zum Beispiel im Device-Generator ein Gerät anlegen, welches Stehlampe heißt, Du hast aber 3 Stehlampen im Haus, über die Angabe der Alexa kannst Du dann steuern welche Stehlampe geschaltet wird.
                          Du machst also 3 Zeilen in der Datenbank mit jeweils dem gleichen Endpoint, aber mit unterschiedlichen Alexas.
                        • AlexaSpeakOn: Für Powercontroller, Antwort von Alexa bei 'Ein', für Alle anderen Contoller: Antwort von Alexa,
                          -AlexaSpeakOff: Nur für Powercontroller, Antwort von Alexa bei 'Aus'

                        Ausserdem kannst Du mehrere Geräte gleichzeitig schalten, indem du einfach in mehreren Zeilen die gleiche Enpoint-ID, mit unterschiedlichen topics benutzt.
                        z.B habe ich ein Kommando 'alles Aus' welches diverse Lampen und Steckdosen ausschaltet.

                        Ich hoffe das hilft ersteinmal weiter.

                        M Offline
                        M Offline
                        mech
                        wrote on last edited by
                        #55

                        @zzippo danke für diese tolle Möglichkeit. Ich komme leider aktuell nicht zum ausprobieren, freue mich aber darauf hier weiter zu lesen.

                        Weiter so!

                        Gruß

                        1 Reply Last reply
                        0
                        • Z zzippo

                          @Marsx79 OK, dann erkläre ich das mal.
                          Also bei einfügen einer neuen Zeile sind erst einmal alle Felder auf NULL. Wobei das kein Text ist, sondern heisst, das es keinen Eintrag gibt.
                          Da Du den DB-Browser benutzt, passiert es schnell das ein NULL Eintrag überschrieben wird. z.B. wenn Du mit Tab durch die Felder läufst.

                          • Lösungsmöglichkeit 1:
                            Du setzt das Feld wieder auf NULL (rechte Maustaste auf dem Feld, und 'Auf NULL setzten' anwählen)

                          • Lösungsmöglichkeit 2:
                            Das Script im Node-Red in der Node:'SQL for any Alexa' so ändern, das nicht nur auf NULL sondern auch auf Leerstring abgefragt wird. (siehe Zeile 14)

                          var instance = '';
                          if (typeof msg.FromSkill.payload.directive.header.instance !== 'undefined')
                          { instance = "' AND instance = '" + msg.FromSkill.payload.directive.header.instance;}
                          
                          
                          var mode = '';
                          if (typeof msg.FromSkill.payload.directive.payload.mode !== 'undefined')
                          { mode = "' AND mode = '" + msg.FromSkill.payload.directive.payload.mode;}
                          
                          msg.topic =    "SELECT topic,value,AlexaSpeakOn,AlexaSpeakOff FROM AlexaEndpoints WHERE endpointId = '"  + 
                                          msg.FromSkill.payload.directive.endpoint.endpointId + 
                                          instance + 
                                          mode + 
                                          "' AND (WelcheAlexa IS NULL OR WelcheAlexa = '');";
                          return msg;
                          

                          Zu den Einzelnen Feldern der Datenbank:

                          • EndpointID: Das ist die ID des Gerätes, diese hast Du beim Anlegen im Device generator definiert.
                            Sie wird von der Alexa App übertragen, damit Du weisst welches Gerät angesprochen wird.
                          • Controller: ist nur für Dich als Info welche Art controller es ist, wird sonst (noch) nirgends benutzt.
                          • comment: Nur ein Kommentar für Dich, wird sonst nicht benutzt.
                          • instance: Dies ist für Mode Controller, da eine Endpoint ID mehrere Mode-Controller haben kann. ist sozusagen auch eine ID. Z.B. hast Du einen Enpoint Kueche, dieser hat einen Mode-Controller für Rollos und einen für ein farbiges Licht.
                            Du könntest dann Deine instancen z.B. 'kueche.rollo' und 'kueche.farbe' nennen.
                            Hier trägst Du also den Namen ein welchen Du im Device Generator vergeben hast.
                            Bei nicht Mode-Controllern einfach das Feld leer lassen.
                          • mode: Das ist der mode für die instance, z.B. hast du die Instance 'kueche.rollo' und dann jeweils einen mode für 'auf' und 'ab', wieder Die ID eintagen welche Du im Device Generator vergeben hast.Bei nicht Mode-Controllern einfach das Feld leer lassen.
                          • topic: Das ist die IO-Broker Variable, welche Du schalten möchtest. Bitte immer darauf achten welchen Typen die Variable haben will. Aus dem Power-Controller kommt standardmässig immer true/false
                          • value: Bei Power-Controller wird automatisch true/false übertragen, Bei Percentage und anderen der gesprochene Wert. In diesen Fällen kann also der Wert freigelassen werden. Bei Mode-Controllern kannst Du hier den Wert eintragen der an die topic variable gesendet werden soll.
                          • WelcheAlexa: Du kannst zum Beispiel im Device-Generator ein Gerät anlegen, welches Stehlampe heißt, Du hast aber 3 Stehlampen im Haus, über die Angabe der Alexa kannst Du dann steuern welche Stehlampe geschaltet wird.
                            Du machst also 3 Zeilen in der Datenbank mit jeweils dem gleichen Endpoint, aber mit unterschiedlichen Alexas.
                          • AlexaSpeakOn: Für Powercontroller, Antwort von Alexa bei 'Ein', für Alle anderen Contoller: Antwort von Alexa,
                            -AlexaSpeakOff: Nur für Powercontroller, Antwort von Alexa bei 'Aus'

                          Ausserdem kannst Du mehrere Geräte gleichzeitig schalten, indem du einfach in mehreren Zeilen die gleiche Enpoint-ID, mit unterschiedlichen topics benutzt.
                          z.B habe ich ein Kommando 'alles Aus' welches diverse Lampen und Steckdosen ausschaltet.

                          Ich hoffe das hilft ersteinmal weiter.

                          M Offline
                          M Offline
                          Marsx79
                          wrote on last edited by Marsx79
                          #56

                          @zzippo

                          Super es funktioniert! Danke für die tolle Erklärung!

                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            Marsx79
                            wrote on last edited by Marsx79
                            #57

                            Ich hätte da aber noch zwei weitere Fragen:

                            1. Hat schon jemand "Thermostat Regler" probiert? Die Alexa App findet zwar das Gerät aber wenn ich dann da drauf gehe sagt diese nur "Warte auf Verbindung..." und dann geht es nicht weiter.

                            2. Wenn ich eine dimmbare Lampe habe die keinen Datenpunkt für "an und aus" (also true und false) hat, sondern nur einen Datenpunkt für 0 - 99 (wobei 0 aus und 99 an ist) hat. Wie kann ich das machen? "Helligkeits Regler" funktioniert zwar für die Prozentangabe aber nicht für an/aus.

                            Z 1 Reply Last reply
                            0
                            • M Marsx79

                              Ich hätte da aber noch zwei weitere Fragen:

                              1. Hat schon jemand "Thermostat Regler" probiert? Die Alexa App findet zwar das Gerät aber wenn ich dann da drauf gehe sagt diese nur "Warte auf Verbindung..." und dann geht es nicht weiter.

                              2. Wenn ich eine dimmbare Lampe habe die keinen Datenpunkt für "an und aus" (also true und false) hat, sondern nur einen Datenpunkt für 0 - 99 (wobei 0 aus und 99 an ist) hat. Wie kann ich das machen? "Helligkeits Regler" funktioniert zwar für die Prozentangabe aber nicht für an/aus.

                              Z Offline
                              Z Offline
                              zzippo
                              wrote on last edited by zzippo
                              #58

                              @Marsx79 said in Alexa in Node Red ohne contrib-alexa-home oder Ähnliches:

                              Ich hätte da aber noch zwei weitere Fragen:

                              1. Hat schon jemand "Thermostat Regler" probiert? Die Alexa App findet zwar das Gerät aber wenn ich dann da drauf gehe sagt diese nur "Warte auf Verbindung..." und dann geht es nicht weiter.

                              den Thermostat Regler habe ich noch nicht implementiert, ersteinmal könnte man sich mit den anderen Reglern behelfen, (Mode, Prozent, Helligkeit)

                              1. Wenn ich eine dimmbare Lampe habe die keinen Datenpunkt für "an und aus" (also true und false) hat, sondern nur einen Datenpunkt für 0 - 99 (wobei 0 aus und 99 an ist) hat. Wie kann ich das machen? "Helligkeits Regler" funktioniert zwar für die Prozentangabe aber nicht für an/aus.

                              Hier kannst Du z.B folgendes machen, Du erstellst das Gerät mit einem Helligkeits und einem power controller. Beim Power-Controller trägst Du in der Datenbank unter value: '0-99' ein
                              diesen Wert können wir dann im Script abfragen und dementsprechend anders reagieren.

                              Du müsstes also node 'Move vals' z.B. so ändern:

                              //Set the output values to the given IO Broker variable
                              
                              switch (msg.FromSkill.payload.directive.header.namespace) {
                                case "Alexa.PowerController":
                                  switch (msg.original_payload.value) {
                                    // field value in Database is '0-99' then use 0 as Off and 99 as ON 
                                    case "0-99":
                                      msg.value = 0;
                                      if (msg.FromSkill.payload.directive.header.name == "TurnOn") {
                                        msg.value = 99;
                                      }
                                      break;
                                    default:
                                      // The Powercontroler sends the value (TurnOn/TurnOff), database value is NULL
                                      msg.value = false;
                                      if (msg.FromSkill.payload.directive.header.name == "TurnOn") {
                                        msg.value = true;
                                      }
                                      break;
                                  }
                                  break;
                              
                                case "Alexa.ModeController":
                                  // Value comes from the database
                                  msg.value = msg.payload.value;
                                  msg.value = msg.original_payload.value;
                                  break;
                              
                                case "Alexa.ColorController":
                                  msg.value = HSVtoRGBHEX(
                                    msg.FromSkill.payload.directive.payload.color.hue,
                                    msg.FromSkill.payload.directive.payload.color.saturation,
                                    msg.FromSkill.payload.directive.payload.color.brightness
                                  );
                                  break;
                              
                                case "Alexa.BrightnessController":
                                  if (msg.FromSkill.payload.directive.header.name == "AdjustBrightness") {
                                    // value is in msg.FromSkill.payload.directive.payload.brightnessDelta
                                    msg.value =
                                      parseInt(msg.payload) +
                                      parseInt(msg.FromSkill.payload.directive.payload.brightnessDelta);
                                  } else {
                                    // value is in msg.FromSkill.payload.directive.payload.brightness
                                    msg.value = msg.FromSkill.payload.directive.payload.brightness;
                                  }
                                  break;
                              }
                              
                              var newmsg2 = { payload: msg.value, topic: msg.topic };
                              return [newmsg2];
                              
                              // Alexa Color.Controler input is HSB(HSV). We need RGB value (0xRRGGBB00)
                              function HSVtoRGBHEX(h, s, v) {
                                var r, g, b, i, f, p, q, t;
                              
                                h = h / 360;
                              
                                i = Math.floor(h * 6);
                                f = h * 6 - i;
                                p = v * (1 - s);
                                q = v * (1 - f * s);
                                t = v * (1 - (1 - f) * s);
                              
                                switch (i % 6) {
                                  case 0:
                                    r = v;
                                    g = t;
                                    b = p;
                                    break;
                                  case 1:
                                    r = q;
                                    g = v;
                                    b = p;
                                    break;
                                  case 2:
                                    r = p;
                                    g = v;
                                    b = t;
                                    break;
                                  case 3:
                                    r = p;
                                    g = q;
                                    b = v;
                                    break;
                                  case 4:
                                    r = t;
                                    g = p;
                                    b = v;
                                    break;
                                  case 5:
                                    r = v;
                                    g = p;
                                    b = q;
                                    break;
                                }
                                r = Math.round(r * 255);
                                g = Math.round(g * 255);
                                b = Math.round(b * 255);
                              
                                var rgb = (r << 16) + (g << 8) + b;
                                var srgb = "000000" + (rgb.toString(16) + "00").toUpperCase();
                                return srgb.slice(-8);
                              }
                              
                              
                              M 1 Reply Last reply
                              0
                              • Z zzippo

                                @Marsx79 said in Alexa in Node Red ohne contrib-alexa-home oder Ähnliches:

                                Ich hätte da aber noch zwei weitere Fragen:

                                1. Hat schon jemand "Thermostat Regler" probiert? Die Alexa App findet zwar das Gerät aber wenn ich dann da drauf gehe sagt diese nur "Warte auf Verbindung..." und dann geht es nicht weiter.

                                den Thermostat Regler habe ich noch nicht implementiert, ersteinmal könnte man sich mit den anderen Reglern behelfen, (Mode, Prozent, Helligkeit)

                                1. Wenn ich eine dimmbare Lampe habe die keinen Datenpunkt für "an und aus" (also true und false) hat, sondern nur einen Datenpunkt für 0 - 99 (wobei 0 aus und 99 an ist) hat. Wie kann ich das machen? "Helligkeits Regler" funktioniert zwar für die Prozentangabe aber nicht für an/aus.

                                Hier kannst Du z.B folgendes machen, Du erstellst das Gerät mit einem Helligkeits und einem power controller. Beim Power-Controller trägst Du in der Datenbank unter value: '0-99' ein
                                diesen Wert können wir dann im Script abfragen und dementsprechend anders reagieren.

                                Du müsstes also node 'Move vals' z.B. so ändern:

                                //Set the output values to the given IO Broker variable
                                
                                switch (msg.FromSkill.payload.directive.header.namespace) {
                                  case "Alexa.PowerController":
                                    switch (msg.original_payload.value) {
                                      // field value in Database is '0-99' then use 0 as Off and 99 as ON 
                                      case "0-99":
                                        msg.value = 0;
                                        if (msg.FromSkill.payload.directive.header.name == "TurnOn") {
                                          msg.value = 99;
                                        }
                                        break;
                                      default:
                                        // The Powercontroler sends the value (TurnOn/TurnOff), database value is NULL
                                        msg.value = false;
                                        if (msg.FromSkill.payload.directive.header.name == "TurnOn") {
                                          msg.value = true;
                                        }
                                        break;
                                    }
                                    break;
                                
                                  case "Alexa.ModeController":
                                    // Value comes from the database
                                    msg.value = msg.payload.value;
                                    msg.value = msg.original_payload.value;
                                    break;
                                
                                  case "Alexa.ColorController":
                                    msg.value = HSVtoRGBHEX(
                                      msg.FromSkill.payload.directive.payload.color.hue,
                                      msg.FromSkill.payload.directive.payload.color.saturation,
                                      msg.FromSkill.payload.directive.payload.color.brightness
                                    );
                                    break;
                                
                                  case "Alexa.BrightnessController":
                                    if (msg.FromSkill.payload.directive.header.name == "AdjustBrightness") {
                                      // value is in msg.FromSkill.payload.directive.payload.brightnessDelta
                                      msg.value =
                                        parseInt(msg.payload) +
                                        parseInt(msg.FromSkill.payload.directive.payload.brightnessDelta);
                                    } else {
                                      // value is in msg.FromSkill.payload.directive.payload.brightness
                                      msg.value = msg.FromSkill.payload.directive.payload.brightness;
                                    }
                                    break;
                                }
                                
                                var newmsg2 = { payload: msg.value, topic: msg.topic };
                                return [newmsg2];
                                
                                // Alexa Color.Controler input is HSB(HSV). We need RGB value (0xRRGGBB00)
                                function HSVtoRGBHEX(h, s, v) {
                                  var r, g, b, i, f, p, q, t;
                                
                                  h = h / 360;
                                
                                  i = Math.floor(h * 6);
                                  f = h * 6 - i;
                                  p = v * (1 - s);
                                  q = v * (1 - f * s);
                                  t = v * (1 - (1 - f) * s);
                                
                                  switch (i % 6) {
                                    case 0:
                                      r = v;
                                      g = t;
                                      b = p;
                                      break;
                                    case 1:
                                      r = q;
                                      g = v;
                                      b = p;
                                      break;
                                    case 2:
                                      r = p;
                                      g = v;
                                      b = t;
                                      break;
                                    case 3:
                                      r = p;
                                      g = q;
                                      b = v;
                                      break;
                                    case 4:
                                      r = t;
                                      g = p;
                                      b = v;
                                      break;
                                    case 5:
                                      r = v;
                                      g = p;
                                      b = q;
                                      break;
                                  }
                                  r = Math.round(r * 255);
                                  g = Math.round(g * 255);
                                  b = Math.round(b * 255);
                                
                                  var rgb = (r << 16) + (g << 8) + b;
                                  var srgb = "000000" + (rgb.toString(16) + "00").toUpperCase();
                                  return srgb.slice(-8);
                                }
                                
                                
                                M Offline
                                M Offline
                                Marsx79
                                wrote on last edited by
                                #59

                                @zzippo

                                Auch das hat wieder super funktioniert! Danke!!!

                                Arbeitest du eigentlich noch weiter an dem Projekt? Ist echt mega!

                                Z 1 Reply Last reply
                                0
                                • M Marsx79

                                  @zzippo

                                  Auch das hat wieder super funktioniert! Danke!!!

                                  Arbeitest du eigentlich noch weiter an dem Projekt? Ist echt mega!

                                  Z Offline
                                  Z Offline
                                  zzippo
                                  wrote on last edited by
                                  #60

                                  @Marsx79
                                  Ja, ich arbeite weiter daran, zur Zeit habe ich aber ganz andere Sorgen.... Ein Todesfall in der Familie.

                                  M 1 Reply Last reply
                                  0
                                  • Z zzippo

                                    @Marsx79
                                    Ja, ich arbeite weiter daran, zur Zeit habe ich aber ganz andere Sorgen.... Ein Todesfall in der Familie.

                                    M Offline
                                    M Offline
                                    mech
                                    wrote on last edited by
                                    #61

                                    @zzippo Dann nimm dir auch die Zeit für deine Familie, das hier ist Hobby. Kopf hoch und Gruß

                                    Z 1 Reply Last reply
                                    0
                                    • M mech

                                      @zzippo Dann nimm dir auch die Zeit für deine Familie, das hier ist Hobby. Kopf hoch und Gruß

                                      Z Offline
                                      Z Offline
                                      zzippo
                                      wrote on last edited by
                                      #62

                                      @mech
                                      Danke für die freundlichen Worte.
                                      Ich bin aber jederzeit für Fragen offen, Ablenkung kann ich gut gebrauchen.

                                      1 Reply Last reply
                                      0
                                      • Z zzippo

                                        Hallo, ich wollte kurz vorstellen, wie ich die Sprachsteuerung meiner Heimautomatisierung gelöst habe.
                                        Am Anfang habe ich mit den alt bekannten Mitteln gearbeitet, also z.B. mit node-red-contrib-alexa-home.
                                        Nach einer Weile habe ich gemerkt, dass doch zu viele Einschränkungen vorhanden sind und mich auf die Suche nach einer neuen Lösung gemacht.
                                        Herausgekommen ist folgendes:

                                        • Ein eigener Smarthome Skill bei Amazon welcher über einen Raspi Reverse Proxy auf Node Red geleitet wird.
                                        • Ein Windows Programm mit dem ich beliebige Geräte konfigurieren kann, und das auf die Amazon Gerätesuche reagiert.
                                        • Eine SqLite Datenbank auf dem IOBroker Raspi, über die alle Geräte mit den entsprechenden IOBroker Datenpunkten verbunden werden.
                                        • Ein recht kurzer Node-Red Flow, der dann alle Dinge behandelt.

                                        Die Großen Vorteile an der Sache sind:

                                        • Alexa kann individuelle Antworten geben (zum Beispiel wenn ich sage Gäste WLAN ein. Antwortet mir Alexa mit der SSID und dem Passwort)
                                        • Ich kann mit gleichen Sprachbefehlen in verschiedenen Räumen arbeiten (z.B. Licht ein)
                                        • Ich kann alle Alexa Controller verwenden (z.B. mode, precentage, color etc.)
                                        • Neue Geräte erfordern keine Programmierung sondern lediglich eine Zeile in der Datenbank

                                        Bei Interesse kann ich das gerne einmal genauer vorstellen.

                                        AlexaDeviceGenerator.jpg
                                        db.jpg
                                        Flow.jpg

                                        M Offline
                                        M Offline
                                        matit2000
                                        wrote on last edited by
                                        #63

                                        @zzippo super schöne Lösung, werde ich zu Weihnachten mal nachbauen... weiter so!
                                        👍 👍 👍

                                        Z 1 Reply Last reply
                                        0
                                        • M matit2000

                                          @zzippo super schöne Lösung, werde ich zu Weihnachten mal nachbauen... weiter so!
                                          👍 👍 👍

                                          Z Offline
                                          Z Offline
                                          zzippo
                                          wrote on last edited by
                                          #64

                                          @matit2000
                                          So super schön finde ich es noch nicht. Ich bin grad am forschen, wie es besser gehen könnte. Ich wollte das ganze in den ioBroker integrieren, aber dafür muss ich noch viel lernen.... vs-code, node.js, html, css, express, adapter...., und, und, und.
                                          für einen 56 Jährigen nicht mehr ganz so einfach 🙂

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          93

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe