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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    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 @jrudolph last edited by zzippo

      @jrudolph
      das mit dem Script hatte ich auch schon gemerkt, und bereits editiert. es fehlten auch diverse escapes for den $ Zeichen in der <domainName>.conf Datei, so das Node-Red keine Debug Ausgaben geschmissen hat.
      Die solltest Du noch einmal anpassen.
      Ich versuche so schnell wie möglich den Rest nachzuschieben.

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

        @mcdance
        also mit Nginx habe ich noch nichts gemacht, obwohl der ja um eineiges einfacher und schlanker sein soll als der Apache.
        Das einzige was wir brauchen ist die HTTPS verbindung und Umleitungen auf IOBroker NodeRed sowie auf das Programm weches auf die Gerätesuche reagiert, sollte also auch mit dem Nginx funktionieren.
        Meine Umleitungen sehen wie folgt aus:
        MeineAdresse.de:443/alexa2 <-> http://NodeRed_IP:1880/alexa2
        MeineAdresse.de:443/alexaDisc <-> http://DiscoveryResponseServer_IP:41101/

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

          Teil 3: SQLite Datenbank, NodeRed Flow und Gerätesuche

          Wir laden erst einmal folgende Dinge herunter:
          Das Programm für die Geräteerkennung
          den NodeRed flow
          die SQLite Datenbank

          Wir öffnen als erstes NodeRed, klicken oben rechts im schwarzen Balken die drei weißen Striche an und wählen 'Palette verwalten'
          wir suchen nach 'node-red-node-sqlite' und installieren dieses.

          die SQLLite Datenbank kopieren wir auf unser IOBroker/NodeRed Gerät in das Verzeichnis /home/sqlite
          Das Verzeichnis sqlite muss angelegt werden. Ich benutze zum kopieren immer filezilla
          In der Datenbank sind nur ein paar demo Einträge, welche veranschaulichen sollen wie es funktioniert. Zum bearbeiten der Tabelle habe ich eine Samba Freigabe auf dem Raspi gemacht, und benutze auf dem Windows Rechner DB browser für SQLite
          Natürlich geht das auch mit dem Raspi, z.B. hiermit

          den NodeRed flow importieren wir uns im NodeRed mit der Import Funktion.
          In dem Importierten Flow sehen wir unten einen Zweig, welcher mittels des Alexa2 Adapters in der History ermittelt welche Alexa den Befehl abgesetzt hat. Hier müsst Ihr den code in 'function' editieren und mit euren Geräte-Nummern sowie den dazugehörigen Zimmern ändern. (Die Zimmer Namen werden sofern Ihr gleiche Befehle in unterschiedlichen Räumen benutzen wollt dann in der DB eingetragen)

          Jetzt noch zur Geräte Erkennung, das Programm ist in .NET geschrieben und benötigt Administrator Rechte, da es einen Port(41101) öffnet. Das Programm ist noch ein bischen rudimentär, da es eigendlich nur für den Eigengebrauch war.
          Wenn man unten auf neu klickt, wird ein neues Gerät angelegt, alle Geräte wo später links der Haken gesetzt ist werden bei der Gerätesuche beantwortet. Ihr könnt ja erst einmal mit dem Power-Controller anfangen (Heißt bei mir An Aus)
          die Endpoint-ID müsst ihr in der Datenbank eintragen, sowie die zugehörige IO-Broker Variable welche geschaltet werden soll. Teilweise gibt es im Hilfe Tab schon mal hilfe für die einzelnen Felder.
          Beim nächsten Teil erklär ich dann noch mehr. Vielleicht geht da ja so schon was bei euch mit ein bischen ausprobieren.
          Bei den Sprach-Antworten kann alles genutzt werden was hier beschrieben ist.
          Im flow sind noch nicht alle Controller unterstützt, aber eine Erweiterung ist recht einfach, alle Requests und die benötigten Antworten findet man hier

          Wer Interesse hat:
          Das ganze Visual Studio 2017 Projekt für die Geräte Erkennung kann man sich hier holen

          Z J 3 Replies Last reply Reply Quote 0
          • Z
            zzippo @zzippo last edited by

            Vielleicht hat ja mal jemand Interesse das ganze in einen Adapter zu bauen. das wär doch mal was.😁 😁 😁

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

              Ich habe die Dateien noch upgedatet.
              Änderungen im Windows Programm:

              • Unterstützung von brightnessDelta im Brightness Controller
              • Ein paar Hilfetexte zugefügt

              Änderungen im NodeRed Flow:

              • ColorController und BrightnessControler implementiert.

              Ich arbeite noch an weiteren Erweiterungen

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

                Nur zur Info, ich bin gerade dabei das Windows Programm umzubauen, und das OAuth-Verfahren zu implementieren. Dies würde die Möglichkeit bieten verschiedene User des Skills zu verwalten, und ausserdem asynchron benutzerspezifisch Geräte zuzufügen, zu ändern oder zu löschen. Eine Gerätesuche wäre dann nicht mehr notwendig.
                Es wäre nett wenn noch einmal feedback kommen würde, ob jemand bis dahin schon etwas benutzt hat, oder weiter Interesse besteht. Sonst kann ich es mir sparen hier weitere Anleitungen zu posten.

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

                  @zzippo Ich habe den Teil 3 nachvollzogen. Die Palette in Node-Red installieren --> OK. Die SQLite DB anlegen und editieren --> OK. Den Node-Red Flow importieren und die 'function' anpassen --> OK. Der untere Teil des Flows funktioniert korrekt und trägt die Werte bei Änderung der Alexa-History in die globalen Variablen ein. Das Windows-Programm installieren und als Admin starten --> OK. Es lauscht am Port 41101. Wenn ich den Port manuell anspreche (localhost:41101) sagt das Programm 'new request detected' und stürzt ab. Soweit OK.
                  Im Windows-Programm habe ich neue Geräte angelegt; ebenso die Einträge in der SQLite DB vorgenommen. Dann habe ich Alexa aufgefordert nach neuen Geräten zu suchen. Sie hat aber nichts neues gefunden. Oder fehlt noch etwas?

                  Danke und Gruß

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

                    @jrudolph Hallo, danke für das feedback.
                    Wird der request durch die Gerätesuche im Webserver Tab angezeigt?
                    Hast Du an den Geräten welche erkannt werden sollen den Haken gesetzt?
                    Gerätesuche.png

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

                      @zzippo Der Request der Gerätesuche wird nicht angezeigt. Ja, Haken ist gesetzt.

                      Habe mir mal die Logs des Reverse Proxy angesehen. Der Request vom Skill kommt offensichtlich an: (access.log)
                      [01/Nov/2020:14:25:44 +0000] "POST /alexaDisc HTTP/1.1" 401 5066 "-" "-"

                      Aber es kommt ein Auth. Error: (error.log)
                      14:25:44.322042 2020] [auth_basic:error] [pid 2356:tid 2963797024] [client 3.250.10.88:53768] AH01618: user ******\n not found: /alexaDisc

                      Die Logs waren übrigens im Root-Verzeichnis gelandet. APACHE_LOG_DIR war anscheinend nicht gesetzt.

                      Ich setze den Reverse Proxy nochmal neu auf und melde mich dann wieder.

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

                        @jrudolph eventuell lässt du das script noch einmal das <domain>.conf generieren. Hier fehlten ja diverse escapes vor den $ Zeichen, deshalb geht auch der Log in das Hauptverzeichnis.

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

                          @zzippo hast du versucht über <deine.dyndns>/nodered/ auf Dein Node red zu kommen? da sollte dann die Passwortabfrage kommen. Funktioniert user und Passwort hier, dann muss es ja am eingetragenem Passwort in der Lamda Datei liegen.

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

                            @jrudolph
                            hier noch die aktiven module bei meinem Apache, vielleicht fehlt ja noch was bei Dir.

                            pi@raspberrypi:/etc/apache2 $ cd mods-enabled
                            pi@raspberrypi:/etc/apache2/mods-enabled $ ls -l
                            total 0
                            lrwxrwxrwx 1 root root 36 Oct 29  2019 access_compat.load -> ../mods-available/access_compat.load
                            lrwxrwxrwx 1 root root 28 Oct 29  2019 alias.conf -> ../mods-available/alias.conf
                            lrwxrwxrwx 1 root root 28 Oct 29  2019 alias.load -> ../mods-available/alias.load
                            lrwxrwxrwx 1 root root 33 Oct 29  2019 auth_basic.load -> ../mods-available/auth_basic.load
                            lrwxrwxrwx 1 root root 33 Oct 29  2019 authn_core.load -> ../mods-available/authn_core.load
                            lrwxrwxrwx 1 root root 33 Oct 29  2019 authn_file.load -> ../mods-available/authn_file.load
                            lrwxrwxrwx 1 root root 33 Oct 29  2019 authz_core.load -> ../mods-available/authz_core.load
                            lrwxrwxrwx 1 root root 33 Oct 29  2019 authz_host.load -> ../mods-available/authz_host.load
                            lrwxrwxrwx 1 root root 33 Oct 29  2019 authz_user.load -> ../mods-available/authz_user.load
                            lrwxrwxrwx 1 root root 32 Oct 29  2019 autoindex.conf -> ../mods-available/autoindex.conf
                            lrwxrwxrwx 1 root root 32 Oct 29  2019 autoindex.load -> ../mods-available/autoindex.load
                            lrwxrwxrwx 1 root root 30 Oct 29  2019 deflate.conf -> ../mods-available/deflate.conf
                            lrwxrwxrwx 1 root root 30 Oct 29  2019 deflate.load -> ../mods-available/deflate.load
                            lrwxrwxrwx 1 root root 26 Oct 29  2019 dir.conf -> ../mods-available/dir.conf
                            lrwxrwxrwx 1 root root 26 Oct 29  2019 dir.load -> ../mods-available/dir.load
                            lrwxrwxrwx 1 root root 26 Oct 29  2019 env.load -> ../mods-available/env.load
                            lrwxrwxrwx 1 root root 29 Oct 29  2019 filter.load -> ../mods-available/filter.load
                            lrwxrwxrwx 1 root root 30 Oct 30  2019 headers.load -> ../mods-available/headers.load
                            lrwxrwxrwx 1 root root 27 Oct 29  2019 mime.conf -> ../mods-available/mime.conf
                            lrwxrwxrwx 1 root root 27 Oct 29  2019 mime.load -> ../mods-available/mime.load
                            lrwxrwxrwx 1 root root 32 Oct 29  2019 mpm_event.conf -> ../mods-available/mpm_event.conf
                            lrwxrwxrwx 1 root root 32 Oct 29  2019 mpm_event.load -> ../mods-available/mpm_event.load
                            lrwxrwxrwx 1 root root 34 Oct 29  2019 negotiation.conf -> ../mods-available/negotiation.conf
                            lrwxrwxrwx 1 root root 34 Oct 29  2019 negotiation.load -> ../mods-available/negotiation.load
                            lrwxrwxrwx 1 root root 37 Oct 30  2019 proxy_balancer.conf -> ../mods-available/proxy_balancer.conf
                            lrwxrwxrwx 1 root root 37 Oct 30  2019 proxy_balancer.load -> ../mods-available/proxy_balancer.load
                            lrwxrwxrwx 1 root root 28 Oct 30  2019 proxy.conf -> ../mods-available/proxy.conf
                            lrwxrwxrwx 1 root root 33 Oct 30  2019 proxy_http.load -> ../mods-available/proxy_http.load
                            lrwxrwxrwx 1 root root 28 Oct 30  2019 proxy.load -> ../mods-available/proxy.load
                            lrwxrwxrwx 1 root root 37 Oct 30  2019 proxy_wstunnel.load -> ../mods-available/proxy_wstunnel.load
                            lrwxrwxrwx 1 root root 33 Oct 29  2019 reqtimeout.conf -> ../mods-available/reqtimeout.conf
                            lrwxrwxrwx 1 root root 33 Oct 29  2019 reqtimeout.load -> ../mods-available/reqtimeout.load
                            lrwxrwxrwx 1 root root 30 Oct 15 13:28 rewrite.load -> ../mods-available/rewrite.load
                            lrwxrwxrwx 1 root root 31 Oct 29  2019 setenvif.conf -> ../mods-available/setenvif.conf
                            lrwxrwxrwx 1 root root 31 Oct 29  2019 setenvif.load -> ../mods-available/setenvif.load
                            lrwxrwxrwx 1 root root 34 Oct 30  2019 slotmem_shm.load -> ../mods-available/slotmem_shm.load
                            lrwxrwxrwx 1 root root 36 Oct 30  2019 socache_shmcb.load -> ../mods-available/socache_shmcb.load
                            lrwxrwxrwx 1 root root 26 Oct 30  2019 ssl.conf -> ../mods-available/ssl.conf
                            lrwxrwxrwx 1 root root 26 Oct 30  2019 ssl.load -> ../mods-available/ssl.load
                            lrwxrwxrwx 1 root root 29 Oct 29  2019 status.conf -> ../mods-available/status.conf
                            lrwxrwxrwx 1 root root 29 Oct 29  2019 status.load -> ../mods-available/status.load
                            lrwxrwxrwx 1 root root 30 Oct 30  2019 xml2enc.load -> ../mods-available/xml2enc.load
                            pi@raspberrypi:/etc/apache2/mods-enabled $ 
                            
                            J J 2 Replies Last reply Reply Quote 0
                            • J
                              Ju5t1n @zzippo last edited by

                              @zzippo
                              An genau der gleichen Stelle hänge ich auch.
                              Wenn ich eine Anfrage von localhost, oder auch von extern auf /alexaDisc mache kommt eine Passwortabfrage und der AlexaDeviceGenerator zeigt New Request Detected an, bevor er abstürzt.
                              Gehe ich in Amazon Alexa auf Geräte erkennen, findet er keine neuen Geräte und der AlexaDeviceGenerator zeigt keine Reaktion.
                              In meinem Errorlog kommt die Meldung Password Mismatch.
                              Ich habe mit echo Nutzername:Passwort | base64 das ganze nochmals kontrolliert und es scheint zu stimmen.
                              Momentan habe ich keine Idee, an welcher Stelle der Fehler liegen könnte.

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

                                @zzippo Ich hatte ja den Reverse Proxy komplett neu aufgesetzt. Das Script war fehlerfrei gelaufen (BTW, der Tipfehler in Zeile 65 ist immer noch drin). Es bleibt dabei, dass ein Password Mismatch gemeldet wird. Ich hatte auch den Skill komplett neu aufgesetzt, so dass das Passwort definitiv übereinstimmt.
                                Die manuelle Verbindung zu Node-Red unter Verwendung von user und pw funktioniert einwandfrei.
                                Ich habe auch Deinen Code im Skill und im Script geprüft --> alles einwandfrei und nachvollziehbar.
                                Evtl. ein Apache Bug?
                                Ich überlege testweise den Reverse Proxy mit Nginx aufzusetzen.

                                Z 3 Replies Last reply Reply Quote 0
                                • Z
                                  zzippo @jrudolph last edited by

                                  @jrudolph
                                  Ich werde gleich mal eine frische SD-Karte vorbereiten, und das script laufen lassen.
                                  Evtl. finde ich das Problem ja noch.

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

                                    @jrudolph Also, ich habe den Reverse Proxy mit einem nacktem raspbian-buster-lite auf einem PI3 über curl
                                    vom geposteten link installiert. Das Script lief durch, und die Geräteerkennung funktioniert. kann es am PI1 liegen?
                                    kann ich mir eigentlich nicht vorstellen. Steh gerade vor einem Rätsel.

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

                                      @jrudolph
                                      Ich glaub ich habe es....
                                      irgend etwas stimmt mit dem Base64 encoded passwort nicht. In meiner Lamda Funktion ist am ende ein '=' im Passwort, welches ausgegebene wird, hat am ende ein 'K'
                                      unter: diesem link kannst Du es gegenprüfen.
                                      Wenn du oben 'Username:Passwort' eingibst.

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

                                        @zzippo Ich frage mich wie ich das damals gemacht habe, der richtige Befehl für die Ausgabe des Passwortes wäre:
                                        echo -n $username:$pass | base64.
                                        Ich ändere gleich das script, und beseitige auch den Ausgabefehler in Zeile 65.

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

                                          @zzippo wie fast immer, sitzt das Problem zwischen Stuhl und Monitor. 😠
                                          kann mich wirklich ärgern über diesen Fehler. Entschuldige bitte, das ich Dir diese Sucherei eingebrockt habe.

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

                                            @zzippo Danke! Das probiere ich morgen gleich mal aus (habe gerade einen Termin). Hat mir aber Spaß gemacht mich mit dem Thema mal näher zu befassen.

                                            Schönen Abend noch!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            543
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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