Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Alexa in Node Red ohne contrib-alexa-home oder Ähnliches

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • Z
      zzippo @Christoph_12 last edited by zzippo

      @Christoph_12

      Hallo Christoph,
      ein Kompletter Response für einen Power Controller muss so aussehen:
      (Die MessageId ist generiert)

      {
        "event": {
          "header": {
            "namespace": "Alexa.Discovery",
            "name": "Discover.Response",
            "payloadVersion": "3",
            "messageId": "11339ec1-6c30-45bb-a7bf-12e113ebfc7c" 
          },
          "payload": {
            "endpoints": [
              {
                "friendlyName": "hund",
                "endpointId": "eg_esstisch_lampe_1",
                "manufacturerName": "HM Switch",
                "description": "hund",
                "displayCategories": [
                  "SWITCH"
                ],
                "capabilities": [
                  {
                    "properties": {
                      "supported": [
                        {
                          "name": "powerState"
                        }
                      ],
                      "proactivelyReported": false,
                      "retrievable": false
                    },
                    "type": "AlexaInterface",
                    "interface": "Alexa.PowerController",
                    "version": "3"
                  }
                ]
              }
            ]
          }
        }
      }
      

      zu Deiner Frage mit den Rollos, ja mit ModeController kannst Du beliebig viele Kommandos angeben.

      C 1 Reply Last reply Reply Quote 0
      • Z
        zzippo @Christoph_12 last edited by

        Ich wollte noch einmal ein Update geben. Bin dabei den Device Generator als HTML/Javascript umzusetzen. Sieht schon ganz gut aus, und ich habe noch neue Ideen implementiert.

        new adg.png

        new adg2.png

        new adg3.png

        M 1 Reply Last reply Reply Quote 0
        • C
          Christoph_12 @zzippo last edited by

          Danke @zzippo, das funktioniert jetzt.
          Jetzt wird an mein Script folgendes übergeben:

           [data] => Array
                  (
                      [directive] => Array
                          (
                              [header] => Array
                                  (
                                      [namespace] => Alexa.PowerController
                                      [name] => TurnOff
                                      [payloadVersion] => 3
                                      [messageId] => 067b0ff4-47a5-4017-bd6e-20093ebd44ba
                                      [correlationToken] => AAAAAAAAAQCdkRvyue7L1Qq0qi/...Qc5nVN0TSG5ee
                                  )
          
                              [endpoint] => Array
                                  (
                                      [scope] => Array
                                          (
                                              [type] => BearerToken
                                              [token] => Atza|IwEGNZBZz....YDa2Mx_czIbpTjwpu0fzM
                                          )
          
                                      [endpointId] => maus_1
                                      [cookie] => Array
                                          (
                                          )
          
                                  )
          
                              [payload] => Array
                                  (
                                  )
          
                          )
          
                  )
          

          Ich hatte das Gerät maus_1 genannt. Schalten kann ich also damit. Ich frage mich nur:
          Wie komme ich an die Info, welcher Echo die Anfrage geschickt hat?
          Wie kann ich den Text, der als Bestätigung ausgegben wird vorgeben? Wird das im Response mit angegeben?

          C 1 Reply Last reply Reply Quote 0
          • C
            Christoph_12 @Christoph_12 last edited by

            Hi,
            ich konnte die Rolllade einbinden per:

            {
              "event": {
                "header": {
                  "namespace": "Alexa.Discovery",
                  "name": "Discover.Response",
                  "payloadVersion": "3",
                  "messageId": "maus_message"
                },
                "payload": {
                  "endpoints": [
                    
            
                    {
                      "endpointId": "dach_rolllade",
                      "manufacturerName": "HM",
                      "description": "Rolllade Giebelwand",
                      "friendlyName": "Giebelrolllade",
                      "displayCategories": ["ROLLLADE"],
                      "cookie": {},
                      "capabilities": [
                        {
                          "type": "AlexaInterface",
                          "interface": "Alexa.ModeController",
                          "instance": "Rolllade.Position",
                          "version": "3",
                          "properties": {
                            "supported": [
                              {
                                "name": "mode"
                              }
                            ],
                            "retrievable": true,
                            "proactivelyReported": true
                          },
                          "capabilityResources": {
                            "friendlyNames": [
                              {
                                "@type": "asset",
                                "value": {
                                  "assetId": "Alexa.Setting.Opening"
                                }
                              },
                              {
                                "@type": "text",
                                "value": {
                                    "text": "hoch",
                                    "locale": "de-DE"
                                    }
                                }                  
                            ]
                          },
                          "configuration": {
                            "ordered": false,
                            "supportedModes": [
                              {
                                "value": "Position.Up",
                                "modeResources": {
                                  "friendlyNames": [
                                    {
                                      "@type": "asset",
                                      "value": {
                                        "assetId": "Alexa.Value.Open"
                                      }
                                    },
                                    {
                                    "@type": "text",
                                        "value": {
                                            "text": "hoch",
                                            "locale": "de-DE"
                                            }
                                    }                          
                                  ]
                                }
                              },
                              {
                                "value": "Position.Down",
                                "modeResources": {
                                  "friendlyNames": [
                                    {
                                      "@type": "asset",
                                      "value": {
                                        "assetId": "Alexa.Value.Close"
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          "semantics": {
                            "actionMappings": [
                              {
                                "@type": "ActionsToDirective",
                                "actions": ["Alexa.Actions.Close", "Alexa.Actions.Lower"],
                                "directive": {
                                  "name": "SetMode",
                                  "payload": {
                                    "mode": "Position.Down"
                                  }
                                }
                              },
                              {
                                "@type": "ActionsToDirective",
                                "actions": ["Alexa.Actions.Open", "Alexa.Actions.Raise"],
                                "directive": {
                                  "name": "SetMode",
                                  "payload": {
                                    "mode": "Position.Up"
                                  }
                                }
                              }
                            ],
                            "stateMappings": [
                              {
                                "@type": "StatesToValue",
                                "states": ["Alexa.States.Closed"],
                                "value": "Position.Down"
                              },
                              {
                                "@type": "StatesToValue",
                                "states": ["Alexa.States.Open"],
                                "value": "Position.Up"
                              }  
                            ]
                          }
                        },
                        {
                          "type": "AlexaInterface",
                          "interface": "Alexa",
                          "version": "3"
                        }
                      ]
                    }
            
            
            
            
                  ]
                }
              }
            }
            

            Der Befehl, die Rolllade zu bewegen wird bei den Befehlen "öffnen" und "schließen" ausgeführt und korrekt mit ok vom Echo quittiert.

            Sage ich aber "Giebelrolllade hoch", dann kommt als Antwort "Giebelrolllade unterstützt das nicht." Der Befehl wird aber dennoch korrekt an mein Verarbeitungsscript geschickt.

            Kann mir mal jemand seine Rollladendefinition senden, der außer öffnen und schließen weitere Befehle angelernt hat?
            Mich würde auch die Definition interessieren, für ein Gerät, bei dem eine alternative Antwort gegeben wird.
            Also den Inhalt aus MeineAdresse.de:443/alexaDisc (sh. Post#19)

            Z 1 Reply Last reply Reply Quote 0
            • Z
              zzippo @Christoph_12 last edited by

              @Christoph_12

              Hallo Christoph, ich habe das für meine Rollos so gemacht:

              {
                            "type": "AlexaInterface",
                            "interface": "Alexa.ModeController",
                            "instance": "kueche.rollo",
                            "version": "3",
                            "capabilityResources": {
                              "friendlyNames": [
                                {
                                  "@type": "text",
                                  "value": {
                                    "text": "Rolll\u00E4den",
                                    "locale": "de-DE"
                                  }
                                },
                                {
                                  "@type": "text",
                                  "value": {
                                    "text": "Rollladen",
                                    "locale": "de-DE"
                                  }
                                },
                                {
                                  "@type": "text",
                                  "value": {
                                    "text": "Rollo",
                                    "locale": "de-DE"
                                  }
                                },
                                {
                                  "@type": "text",
                                  "value": {
                                    "text": "Rollos",
                                    "locale": "de-DE"
                                  }
                                }
                              ]
                            },
                            "properties": {
                              "supported": [
                                {
                                  "name": "mode"
                                }
                              ],
                              "proactivelyReported": false,
                              "retrievable": false,
                              "nonControllable": false
                            },
                            "configuration": {
                              "ordered": false,
                              "supportedModes": [
                                {
                                  "value": "kueche.rollo.hoch",
                                  "modeResources": {
                                    "friendlyNames": [
                                      {
                                        "@type": "text",
                                        "value": {
                                          "text": "hoch",
                                          "locale": "de-DE"
                                        }
                                      },
                                      {
                                        "@type": "text",
                                        "value": {
                                          "text": "Auf",
                                          "locale": "de-DE"
                                        }
                                      }
                                    ]
                                  }
                                },
                                {
                                  "value": "kueche.rollo.runter",
                                  "modeResources": {
                                    "friendlyNames": [
                                      {
                                        "@type": "text",
                                        "value": {
                                          "text": "Runter",
                                          "locale": "de-DE"
                                        }
                                      },
                                      {
                                        "@type": "text",
                                        "value": {
                                          "text": "zu",
                                          "locale": "de-DE"
                                        }
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
              
              

              sowohl mit der Sprachausgabe als auch der Ermittlung welche Alexa angesprochen wurde wird es ohne IOBroker schwer. Ich habe dafür den Alexa2 Adapter benutzt, welcher sich, wie ich glaube in die AlexaApp einklinkt.

              C 1 Reply Last reply Reply Quote 0
              • C
                Christoph_12 @zzippo last edited by

                Danke @zzippo,
                ich werde es mal ausprobieren. Jetzt verstehe ich auch, weshalb ich in der Alexadoku nichts zu den Funktionen "individuelle Sprachausgabe bei Smarthome-Skills" und "Ermittlung des verwendeten Echos" gefunden habe.
                Ich hatte mal vor einigen Jahren die Kommunikation mit Echo über die Webseite getestet, die Funktionen aber wieder verworfen, da der Cookie nach unterschiedlichen Zeiträumen immer wieder neu generiert werden musste, was mir dann doch zu umständlich war.
                Aber ich denke, da wird es auf GitHub inzwischen auch automatische Scripte geben.

                Z 1 Reply Last reply Reply Quote 0
                • Z
                  zzippo @Christoph_12 last edited by

                  @Christoph_12

                  danach hatte ich auch vergeblich gesucht. mir ist nicht klar, warum Amazon bei Smarthome-Skills weder das angesprochen Gerät noch den Sprecher verrät,
                  zumal es gerade hier sinvoll wäre. Wie sollte man sonst verhindern, das Fremde oder Kinder das Garagentor öffnen, oder die Heizung auf voll drehen. 😠

                  C 1 Reply Last reply Reply Quote 0
                  • C
                    Christoph_12 @zzippo last edited by

                    @zzippo
                    ja das ist auch der Grund, weshalb ich die Haustüre nicht per Sprache öffnen kann. Das lässt sich nicht wirklich absichern

                    Die Historydaten lassen sich per

                    https://alexa.amazon.de/api/activities?startTime=&size=1&offset=1
                    

                    abrufen. Damit lässt sich über die serialNumber das Gerät ermitteln. Die SN-IDs erhalte ich über das Script aus: https://github.com/RalfsDev/AlexaTTS/tree/master
                    Damit kann ich dann auch bel. Texte sprechen lassen.

                    Leider wird keine ID mitgeliefert, welche Person Alexa angesprochen hat. Unter Verlauf sehe ich auch keinen Hinweis darauf. Es scheint so, als sollten diese Infos nicht zugänglich gemacht werden.

                    1 Reply Last reply Reply Quote 0
                    • M
                      Marsx79 @zzippo last edited by

                      @zzippo

                      Schön das es hier weitergeht. 🙂 Bin gespannt! Wann kann deine neue Version genutzt werden bzw. stellst du diese zur Verfügung?

                      Z 1 Reply Last reply Reply Quote 0
                      • Z
                        zzippo @Marsx79 last edited by

                        @Marsx79
                        Ich bin voll dabei, aber es ist noch ein harter Weg.
                        Immerhin läuft das ganze schon als Adapter. ich werde Zwischenbericht geben.
                        Und, natürlich stelle ich das dann zur Verfügung.

                        Unbenannt.jpg

                        M Z 2 Replies Last reply Reply Quote 0
                        • M
                          Marsx79 @zzippo last edited by

                          @zzippo

                          Richtig cool. Sogar als Adapter! Dann viel Erfolg. 🙂

                          1 Reply Last reply Reply Quote 0
                          • Z
                            zzippo @zzippo last edited by zzippo

                            Ich wollte mal ein kurzes Update geben zum aktuellen Stand.

                            Was geplant ist:

                            • Wie gehabt ein (oder mehrere) eigene Alexa skills
                            • Wegfall des Reverse-Proxies
                            • Webseite zum konfigurieren der Skills und devices
                            • Wegfall der SQLite Datenbank
                            • Umleitung jedes Requests vom Alexa-Skill auf beliebige Ziele (z.B. Node-Red)
                            • Selbsbehandeln von Alexa-Requests
                            • Frei definierbare Scripte zum wandeln der Ein und Ausgangs-Werte
                            • Automatisches Rückmeldung von Stati an Alexa-App
                            • Gerätesuche ersetzen durch asyncrones senden an die Alexa-API
                            • .... und was mir sonst noch einfällt

                            Was bereits geht:

                            • Webseite mit Configuration der Skills
                            • Webseite mit Configuration von Geräten, implementiert sind bereits: Power,PowerLevel,Color,Brightness,ColorTemperature,Percentage,Mode,Range,Toggle,Thermostat und Input Controller.
                            • Hinzufügen von Skills in der Alexa-App (inkl. abholen der access und refresh tokens über AuthO
                            • die Alexa Lambda Funktion kommuniziert schon über https mit meinem 'Skill-Server'
                            • Ich hole den Cookie vom Alexa2 Adapter und kann so die Alexa-API ansprechen
                            • Ich kann von der Alexa API abholen welcher Skill welche Geräte hat.
                            • Alexa kann schon sprechen
                            • Mann kann schon aktiv Geräte zu den Skills hinzufügen / updaten oder löschen.

                            was noch so fehlt:

                            • LetsEncrypt im IO-Broker zum laufen kriegen (im Moment hab ich die Keys per Hand kopiert)
                            • Behandlung aller Requests zum Schalten, User-Scripte implementieren....

                            hört sich erstmal nicht mehr viel an, wird aber sicher noch eine Weile brauchen.

                            M V 2 Replies Last reply Reply Quote 1
                            • M
                              Marsx79 @zzippo last edited by

                              @zzippo

                              Hört sich echt super an! Bin gespannt wie das ganze nachher aussieht.

                              1 Reply Last reply Reply Quote 0
                              • V
                                Volker 0 @zzippo last edited by

                                @zzippo
                                Ich kann mich meinem Vorredner nur anschließen. Sehr engagiertes und tolles Projekt.
                                Die Anbindung war bei mir nicht ganz so einfach, da ich (derzeit noch) kein IO-Broker verwenden und so auf die Node-Red Verarbeitung angewiesen bin. Ohne meinen Sohn (Informatiker) hätte ich es mit Sicherheit auch nicht geschafft.
                                Derzeit habe ich je einen Raspi als Reverse-Proxy, als Node-Red und als Homematic laufen.
                                Ich würde mich über eine Weiterführung dieses Projektes sehr freuen.

                                Gruß aus Norddeutschland

                                1 Reply Last reply Reply Quote 0
                                • F
                                  Fatmax last edited by

                                  @zzippo
                                  Gibt es ein Update zum Fortschritt?
                                  Ich bin ganz gespannt wie es weitergeht.

                                  1 Reply Last reply Reply Quote 0
                                  • P
                                    pkuppler last edited by

                                    @zzippo
                                    Hallo echt tolles Projekt
                                    Gibt es den Adapter schon?
                                    Mit dem Windows Programm hab ich noch Probleme, muss ich setup.exe ausführen bevor ich etwas machen kann oder reicht es die .application datei auszuführen. Denn wenn ich die setup datei ausführe kommt eine Fehlermeldung: "Die Datei "C:\Users\pkupp\AppData\Local\Temp\VSDE85A.tmp\DotNetFX472\NDP472-KB4054531-Web.exe" wurde seit ihrer ersten Veröffentlichung geändert." Und dann kann ich nicht weiter machen. Brauche ich einen neue Installationsdatei von dir, oder ist mein .Net Framework zu neu? Habe gesehen dass 4.7.2 benutzt wurde, aber meins ist neuer.
                                    MfG
                                    pkuppler

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

                                      @zzippo
                                      Habe gerade bemerkt, dass die setup datei versucht das .NET Framework 4.7.2 zu installieren, aber ich hab bereits ein neueres. Kann das Programm trotzdem funktionieren?

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      505
                                      Online

                                      31.9k
                                      Users

                                      80.2k
                                      Topics

                                      1.3m
                                      Posts

                                      alexa alexa ohne cloud alexa skill node red
                                      14
                                      82
                                      10378
                                      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