Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Alexa in Node Red ohne contrib-alexa-home oder Ähnliches

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

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

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
alexanode redalexa ohne cloudalexa skill
82 Beiträge 14 Kommentatoren 12.2k Aufrufe 25 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Z zzippo

    Vorab, was wird benötigt:

    • Eine Dyndns Adresse, damit wir unser Smart Home aus dem Internet erreichen können.
    • Einen Rechner der als Reverse-Proxy dient, in meinem Fall ein Raspi.
    • Eine Portfreigabe im Router auf den Reverse-Proxy (port80 und port 443)
    • IOBroker mit NodeRed
    • Windows Rechner um neue Geräte zu konfigurieren.

    Für Teil 1 brauchen wir noch nichts.

    Teil 1: Erstellen eines eigenen Alexa Smarthome skills

    Bevor wir anfangen müssen wir uns als Developer bei Amazon anmelden, außerdem brauchen wir einen AWS account, da wir eine Lambda Funktion schreiben müssen. AWS ist ein kostenpflichtiger Dienst von Amazon, aber keine Angst, das monatliche Frei-Volumen ist so riesig, das man damit hunderte Smarthomes versorgen kann. (Als Beispiel: jeden Monat eine Million Lambda Aufrufe frei, was in unserem Fall einem Kommando unseres Skills an Alexa entspricht.)

    Wie man sich irgendwo anmeldet brauche ich ja wohl nicht erklären.
    Amazon Developer Seite: https://developer.amazon.com/de/
    Amazon AWS Seite: https://aws.amazon.com/de/

    Haben wir die Anmelde-Formalitäten hinter uns, brauchen wir ständig mehrere Tabs im Browser um Daten hin und her zu kopieren. Wir fangen an auf der Alexa Skill Developer Seite unter: https://developer.amazon.com/alexa/console/ask?
    Nach dem einloggen klicken wir auf den blauen Knopf „Create skill“
    Dann können wir aussuchen welchen Typ Skill wir erstellen wollen.
    bild1.png
    Wir geben unserem skill einen Namen, und wählen Smart Home, danach klicken wir auf Create skill. In einem weiteren Tab öffnen wir AWS-Lambda unter:
    https://eu-west-1.console.aws.amazon.com/lambda/home?region=eu-west-1#/functions
    Die Lambda Funktion ist sozusagen das Interface zwischem dem Skill und unserem Smart Home, normalerweise würde hier der Hersteller Deines Smart Home Devices, seine Routinen zur Verwaltung der Benutzer und Geräte implementieren.

    Wir klicken auf ‚Funktion erstellen‘, und es erscheint diese Seite:
    bild2.png
    Wir geben unserer Funktion einen beliebigen Namen und wählen Node.js 12x als Laufzeit aus. Danach unten auf Funktion erstellen. Dann sollten wir folgendes sehen:
    bild3.png
    Jetzt kopieren wir die oben rechts erschienene ARN, wechseln auf den Alexa skill Tab und tragen Sie im Alexa Skill unter: ‚default endpoint‘ ein. Danach kopieren wir im Alexa skill die „Your skill ID“, und klicken ‚Save‘.
    bild4.png
    jetzt wechseln wir wieder auf den Lambda tab. Hier klicken wir jetzt auf Auslöser hinzufügen, es erscheint folgendes:
    bild5.png
    Wir wählen als Auslöser Alexa Smart Home, und unter Anwendungs-ID die eben kopierte Adresse. Danach klicken wir Hinzufügen. Damit haben wir den Alexa Skill und die Lambda Funktion schon einmal miteinander ‚verheiratet‘.
    Wenn ein neuer Benutzer, in diesem Fall ja Ihr selbst, den Skill aktivieren möchte, so muss er sich authentifizieren. Amazon Benutzt hier das AuthO verfahren, dieses müssen wir jetzt noch kurz einrichten. Wir benutzen den Amazon Account um uns zu identifizieren. Öffne in einem neuen Tab die Amazon Developer Seite mit:
    https://developer.amazon.com/de/
    Klicke oben auf Developer Consolebild6.png
    Danach auf Login mit Amazon
    bild7.png
    Jetzt auf Erstellen eines neuen Sicherheitsprofils
    bild8.png
    Nun geben wir wieder einen beliebigen Namen ein, sowie eine Beschreibung. Außerdem brauchen wir noch eine Web Adresse mit den Datenschutzhinweisen, Hier sollte eine Sinnvolle Adresse stehen,
    damit auch alles funktioniert. Bei mir ist es eine leere Webseite. Danach könnt ihr auf speichern drücken.
    bild9.png
    Nach dem Speichern klicken wir auf „Client-ID und Client-Geheimnis anzeigen“. Wir kopieren jetzt die client-ID und wechseln auf unseren Alexa Skill tab. Hier wählen wir auf der linken Seite die Schaltfläche ‚ACCOUNT LINKING‘ und fügen unter: ‚Your Client ID‘ die kopierte ID ein. Das gleiche machen wir mit ‚Client Geheimnis‘ welches unter Your Secret eingetragen wird.
    Im Feld ‚Your Web Autorization URI‘ geben wir https://www.amazon.com/ap/oa
    ein. Im Feld Access Token URI geben wir: https://api.amazon.com/auth/o2/token
    ein. Jetzt klicken wir auf ‚Add scope‘, und geben im Eingabefeld ‚profile‘ ein.
    Jetzt drücken wir wieder den Save button oben
    bild10.png
    Danach müssen wir noch die 3 unten stehenden ‚Alexa Redirect URL’s‘ in die Zulässigen Rückleitungs URL’s des Authentifizierungsdienstes eingeben. Dafür klicken wir im Tab ‚Login with Amazon‘ auf das Zahnrad neben unserem erstellten Login, und wählen Webeinstellung
    bild11.png
    Jetzt kopieren wir nacheinander die 3 Adressen und drücken natürlich speichern.
    bild12.png
    Jetzt wechseln wir noch einmal in den Alexa Skill tab und wählen links Permission, und schalten den Schalter ‚Send Alexa events‘ auf ein, danach wieder Save.
    bild13.png
    Jetzt fehlt nur noch der Code für die Lambda Funktion, wir wechseln also in den Lambda Tab. Ist der Funktionscode nicht zu sehen dann klickt auf die Lambda Funktion. Darunter erscheint dann ein code Fenster.
    bild14.png
    Jetzt löschen wir alles was im code Fenster ist und kopieren den folgenden code hinein:
    index.js
    danach klicken wir auf deploy.
    Die Zeilen 9 und 10 müssen wir später noch ändern, hier kommt dann eure Adresse und das codierte Passwort rein.

    Jetzt sollte alles Startklar sein, und wir können die Alexa App, am Besten im Browser starten.
    unter: https://alexa.amazon.de
    wir gehen jetzt links auf Skills und dann oben rechts auf Ihre Skills.
    bild16.png
    jetzt wählen wir oben Entwicklerskills an.
    Wenn ich in meiner Anleitung nicht vergessen habe sollte jetzt der Skill auftauchen, und ihr könnt ihn installieren.

    Gerne Feedback, ob bis hierhin alles verständlich war, und ob es funktioniert hat.

    Teil 2 wird dann wesendlich einfacher, ich mache ein Skript, welches alles automatisch auf einem frischen Raspi installiert.
    inkl. Apache Webserver, LetsEncrypt Zertifikat, Einrichtung des Reverse Proxy mit Fernzugriff auf Node Red.

    P.S. Bitte keine Kommentare wenn das js Skript nicht optimal ist. Ich habe mir das innerhalb von einer Woche selbst beibringen müssen, da ich sonst nie etwas damit zu tun hatte.

    Z Offline
    Z Offline
    zzippo
    schrieb am zuletzt editiert von zzippo
    #10

    Zu einem späterem Zeitpunkt mache ich ein Git Repository auf, da lege ich dann alles ab.

    V 1 Antwort Letzte Antwort
    0
    • Z zzippo

      Vorab, was wird benötigt:

      • Eine Dyndns Adresse, damit wir unser Smart Home aus dem Internet erreichen können.
      • Einen Rechner der als Reverse-Proxy dient, in meinem Fall ein Raspi.
      • Eine Portfreigabe im Router auf den Reverse-Proxy (port80 und port 443)
      • IOBroker mit NodeRed
      • Windows Rechner um neue Geräte zu konfigurieren.

      Für Teil 1 brauchen wir noch nichts.

      Teil 1: Erstellen eines eigenen Alexa Smarthome skills

      Bevor wir anfangen müssen wir uns als Developer bei Amazon anmelden, außerdem brauchen wir einen AWS account, da wir eine Lambda Funktion schreiben müssen. AWS ist ein kostenpflichtiger Dienst von Amazon, aber keine Angst, das monatliche Frei-Volumen ist so riesig, das man damit hunderte Smarthomes versorgen kann. (Als Beispiel: jeden Monat eine Million Lambda Aufrufe frei, was in unserem Fall einem Kommando unseres Skills an Alexa entspricht.)

      Wie man sich irgendwo anmeldet brauche ich ja wohl nicht erklären.
      Amazon Developer Seite: https://developer.amazon.com/de/
      Amazon AWS Seite: https://aws.amazon.com/de/

      Haben wir die Anmelde-Formalitäten hinter uns, brauchen wir ständig mehrere Tabs im Browser um Daten hin und her zu kopieren. Wir fangen an auf der Alexa Skill Developer Seite unter: https://developer.amazon.com/alexa/console/ask?
      Nach dem einloggen klicken wir auf den blauen Knopf „Create skill“
      Dann können wir aussuchen welchen Typ Skill wir erstellen wollen.
      bild1.png
      Wir geben unserem skill einen Namen, und wählen Smart Home, danach klicken wir auf Create skill. In einem weiteren Tab öffnen wir AWS-Lambda unter:
      https://eu-west-1.console.aws.amazon.com/lambda/home?region=eu-west-1#/functions
      Die Lambda Funktion ist sozusagen das Interface zwischem dem Skill und unserem Smart Home, normalerweise würde hier der Hersteller Deines Smart Home Devices, seine Routinen zur Verwaltung der Benutzer und Geräte implementieren.

      Wir klicken auf ‚Funktion erstellen‘, und es erscheint diese Seite:
      bild2.png
      Wir geben unserer Funktion einen beliebigen Namen und wählen Node.js 12x als Laufzeit aus. Danach unten auf Funktion erstellen. Dann sollten wir folgendes sehen:
      bild3.png
      Jetzt kopieren wir die oben rechts erschienene ARN, wechseln auf den Alexa skill Tab und tragen Sie im Alexa Skill unter: ‚default endpoint‘ ein. Danach kopieren wir im Alexa skill die „Your skill ID“, und klicken ‚Save‘.
      bild4.png
      jetzt wechseln wir wieder auf den Lambda tab. Hier klicken wir jetzt auf Auslöser hinzufügen, es erscheint folgendes:
      bild5.png
      Wir wählen als Auslöser Alexa Smart Home, und unter Anwendungs-ID die eben kopierte Adresse. Danach klicken wir Hinzufügen. Damit haben wir den Alexa Skill und die Lambda Funktion schon einmal miteinander ‚verheiratet‘.
      Wenn ein neuer Benutzer, in diesem Fall ja Ihr selbst, den Skill aktivieren möchte, so muss er sich authentifizieren. Amazon Benutzt hier das AuthO verfahren, dieses müssen wir jetzt noch kurz einrichten. Wir benutzen den Amazon Account um uns zu identifizieren. Öffne in einem neuen Tab die Amazon Developer Seite mit:
      https://developer.amazon.com/de/
      Klicke oben auf Developer Consolebild6.png
      Danach auf Login mit Amazon
      bild7.png
      Jetzt auf Erstellen eines neuen Sicherheitsprofils
      bild8.png
      Nun geben wir wieder einen beliebigen Namen ein, sowie eine Beschreibung. Außerdem brauchen wir noch eine Web Adresse mit den Datenschutzhinweisen, Hier sollte eine Sinnvolle Adresse stehen,
      damit auch alles funktioniert. Bei mir ist es eine leere Webseite. Danach könnt ihr auf speichern drücken.
      bild9.png
      Nach dem Speichern klicken wir auf „Client-ID und Client-Geheimnis anzeigen“. Wir kopieren jetzt die client-ID und wechseln auf unseren Alexa Skill tab. Hier wählen wir auf der linken Seite die Schaltfläche ‚ACCOUNT LINKING‘ und fügen unter: ‚Your Client ID‘ die kopierte ID ein. Das gleiche machen wir mit ‚Client Geheimnis‘ welches unter Your Secret eingetragen wird.
      Im Feld ‚Your Web Autorization URI‘ geben wir https://www.amazon.com/ap/oa
      ein. Im Feld Access Token URI geben wir: https://api.amazon.com/auth/o2/token
      ein. Jetzt klicken wir auf ‚Add scope‘, und geben im Eingabefeld ‚profile‘ ein.
      Jetzt drücken wir wieder den Save button oben
      bild10.png
      Danach müssen wir noch die 3 unten stehenden ‚Alexa Redirect URL’s‘ in die Zulässigen Rückleitungs URL’s des Authentifizierungsdienstes eingeben. Dafür klicken wir im Tab ‚Login with Amazon‘ auf das Zahnrad neben unserem erstellten Login, und wählen Webeinstellung
      bild11.png
      Jetzt kopieren wir nacheinander die 3 Adressen und drücken natürlich speichern.
      bild12.png
      Jetzt wechseln wir noch einmal in den Alexa Skill tab und wählen links Permission, und schalten den Schalter ‚Send Alexa events‘ auf ein, danach wieder Save.
      bild13.png
      Jetzt fehlt nur noch der Code für die Lambda Funktion, wir wechseln also in den Lambda Tab. Ist der Funktionscode nicht zu sehen dann klickt auf die Lambda Funktion. Darunter erscheint dann ein code Fenster.
      bild14.png
      Jetzt löschen wir alles was im code Fenster ist und kopieren den folgenden code hinein:
      index.js
      danach klicken wir auf deploy.
      Die Zeilen 9 und 10 müssen wir später noch ändern, hier kommt dann eure Adresse und das codierte Passwort rein.

      Jetzt sollte alles Startklar sein, und wir können die Alexa App, am Besten im Browser starten.
      unter: https://alexa.amazon.de
      wir gehen jetzt links auf Skills und dann oben rechts auf Ihre Skills.
      bild16.png
      jetzt wählen wir oben Entwicklerskills an.
      Wenn ich in meiner Anleitung nicht vergessen habe sollte jetzt der Skill auftauchen, und ihr könnt ihn installieren.

      Gerne Feedback, ob bis hierhin alles verständlich war, und ob es funktioniert hat.

      Teil 2 wird dann wesendlich einfacher, ich mache ein Skript, welches alles automatisch auf einem frischen Raspi installiert.
      inkl. Apache Webserver, LetsEncrypt Zertifikat, Einrichtung des Reverse Proxy mit Fernzugriff auf Node Red.

      P.S. Bitte keine Kommentare wenn das js Skript nicht optimal ist. Ich habe mir das innerhalb von einer Woche selbst beibringen müssen, da ich sonst nie etwas damit zu tun hatte.

      V Offline
      V Offline
      vikk88
      schrieb am zuletzt editiert von
      #11

      @zzippo oh wow. Vielen Dank schon mal für diese ausführliche Erklärung. Da muss ich mir wohl mal ein paar Stunden Zeit nehmen 😅

      1 Antwort Letzte Antwort
      0
      • Z zzippo

        Zu einem späterem Zeitpunkt mache ich ein Git Repository auf, da lege ich dann alles ab.

        V Offline
        V Offline
        vikk88
        schrieb am zuletzt editiert von
        #12

        @zzippo muss ich einen zweiten raspi für den reverse proxy haben oder reicht der auf dem der iobroker installiert ist?

        Z 1 Antwort Letzte Antwort
        0
        • V vikk88

          @zzippo muss ich einen zweiten raspi für den reverse proxy haben oder reicht der auf dem der iobroker installiert ist?

          Z Offline
          Z Offline
          zzippo
          schrieb am zuletzt editiert von
          #13

          @vikk88 Ich würde nicht raten, das auf dem IOBroker zu installieren. Ich wüsste dann auch nicht wie ich die Requests umleiten sollte. Der Sinn des Reverse Proxy ist ja, das vom Internet Dein IOBroker Raspi nicht zu sehen ist, sondern aller Traffik über https (port 443) mit Passwort über den Proxy läuft. Ausserdem braucht der Apache Server recht viel Speicher.
          Generell geht das ganze natürlich auch ohne Proxy, dann müsste man die Lambda Funktion anpassen, aber mir persönlich wäre das zu gefährlich.
          Ausserdem weiss ich nicht, (da ich keine vis laufen habe) ob Du die Ports 80 und 443 für etwas anderes brauchst.

          Z 1 Antwort Letzte Antwort
          0
          • Z zzippo

            @vikk88 Ich würde nicht raten, das auf dem IOBroker zu installieren. Ich wüsste dann auch nicht wie ich die Requests umleiten sollte. Der Sinn des Reverse Proxy ist ja, das vom Internet Dein IOBroker Raspi nicht zu sehen ist, sondern aller Traffik über https (port 443) mit Passwort über den Proxy läuft. Ausserdem braucht der Apache Server recht viel Speicher.
            Generell geht das ganze natürlich auch ohne Proxy, dann müsste man die Lambda Funktion anpassen, aber mir persönlich wäre das zu gefährlich.
            Ausserdem weiss ich nicht, (da ich keine vis laufen habe) ob Du die Ports 80 und 443 für etwas anderes brauchst.

            Z Offline
            Z Offline
            zzippo
            schrieb am zuletzt editiert von zzippo
            #14

            So, das Script zum installieren eines Raspi mit Apache, Letsencrypt und Reverse-Proxy ist fertig.

            Teil2: Reverse Proxy installieren

            wir brauchen also:

            • Einen frischen Raspi (buster lite ist ausreichend) im lokalen Netzwerk.
            • Die Ports 80 und 443 müssen auf diesen vor der Installation durchgeschaltet sein.

            einfach diesen Befehl ausführen:

            curl -sL  http://zzippo.de/scripts/reverse_proxy.sh  | bash -
            

            Alternativ kann mann sich das Script natürlich runterladen und vorher ansehen.

            Am Anfang werden die Daten abgefragt:
            Als erstes der domain-Name, dies ist deine dynDNS sofern Du keine feste IP hast.
            Dann noch Deine E-Mail Adresse. (Die braucht Letztencrypt um Dich zu errinnern wenn das Zertifikat abläuft.)
            Danach die IP Adresse auf der NodeRed bzw. der IOBroker läüft.
            Dann Die IP des Rechners, welcher die Discovery Response von Alexa beantwortet.
            Zu guter letzt Dein Userlogin und Passwort für die Authentifizierung wenn Du auf Deine Geräte vom Internet zugreifen willst.

            Am Ende des Scriptes wird dir dann das Base64 encodede Passwort ausgegeben, dieses müssen wir in Zeile10 der in Teil1 erstellten Lambda Funktion eigeben.

            Wichtig: Reverse Proxy, IOBroker und das Gerät auf dem das Discovery Response läuft, müssen immer die selben internen IP's haben

            Wenn alles funktioniert hat, kanst du unter:
            'https://Deine.Dyndns' die Apache Startseite sehen.
            unter 'https://Deine.Dyndns/nodered/' kommst du nach Eingabe von username/passwort auf Dein node red.

            **EDIT:**Script noch einmal geändert, da Escape Zeichen vor den $ in der conf Datei vergessen.

            J M 2 Antworten Letzte Antwort
            0
            • Z zzippo

              So, das Script zum installieren eines Raspi mit Apache, Letsencrypt und Reverse-Proxy ist fertig.

              Teil2: Reverse Proxy installieren

              wir brauchen also:

              • Einen frischen Raspi (buster lite ist ausreichend) im lokalen Netzwerk.
              • Die Ports 80 und 443 müssen auf diesen vor der Installation durchgeschaltet sein.

              einfach diesen Befehl ausführen:

              curl -sL  http://zzippo.de/scripts/reverse_proxy.sh  | bash -
              

              Alternativ kann mann sich das Script natürlich runterladen und vorher ansehen.

              Am Anfang werden die Daten abgefragt:
              Als erstes der domain-Name, dies ist deine dynDNS sofern Du keine feste IP hast.
              Dann noch Deine E-Mail Adresse. (Die braucht Letztencrypt um Dich zu errinnern wenn das Zertifikat abläuft.)
              Danach die IP Adresse auf der NodeRed bzw. der IOBroker läüft.
              Dann Die IP des Rechners, welcher die Discovery Response von Alexa beantwortet.
              Zu guter letzt Dein Userlogin und Passwort für die Authentifizierung wenn Du auf Deine Geräte vom Internet zugreifen willst.

              Am Ende des Scriptes wird dir dann das Base64 encodede Passwort ausgegeben, dieses müssen wir in Zeile10 der in Teil1 erstellten Lambda Funktion eigeben.

              Wichtig: Reverse Proxy, IOBroker und das Gerät auf dem das Discovery Response läuft, müssen immer die selben internen IP's haben

              Wenn alles funktioniert hat, kanst du unter:
              'https://Deine.Dyndns' die Apache Startseite sehen.
              unter 'https://Deine.Dyndns/nodered/' kommst du nach Eingabe von username/passwort auf Dein node red.

              **EDIT:**Script noch einmal geändert, da Escape Zeichen vor den $ in der conf Datei vergessen.

              J Online
              J Online
              jrudolph
              schrieb am zuletzt editiert von
              #15

              @zzippo Ich finde den Ansatz sehr interessant. Vielen Dank für die Doku.
              Bisher verwende ich node-red-contrib-alexa-local. Das hat den Vorteil, dass es ohne Alexa Skill auskommt, ist aber in der Funktionalität recht eingeschränkt. Daher also die Suche nach Alternativen.
              Ich habe Teil 1 und 2 nachvollzogen, wobei ich Teil 2 (Proxy) als erstes gemacht habe. Das hat den Charme, dass man beim Einrichten des Skills bereits sieht, dass er sich mit dem Reverse-Proxy verbindet.
              Teil 2: Das Proxy Script funktioniert. Auf meinem alten Raspi 1 B+ muss man schon mal eine halbe Stunde Geduld aufbringen. Zwei Bemerkungen:
              • Zeile 65 muss wohl lauten: echo -e "\e[0mDiscovery Server :\e[91m" $pc_ip
              • In den letzten 3 Zeilen sollte das Kommentarzeichen entfernt werden, damit das encoded Password ausgeschrieben wird (man kann es natürlich auch manuell machen)
              Teil 1: Die Skill Erstellung funktioniert wie beschrieben. Wenn man Teil 2 schon absolviert hat kann man die Zeilen 9 und 10 gleich mit der Adresse und dem codierten Passwort versehen. Beim Speichern des Alexa Skills wurde eine Fehlermeldung geworfen, weil die Lambda Funktion zu dem Zeitpunkt noch keinen Code hatte. Einfach nach dem Deployen der Lambda Funktion den Skill nochmal speichern. Dann geht es ohne Fehler.
              Vielen Dank bis dahin. Wie geht es weiter mit Node-Red und Windows Programm?

              Z 1 Antwort Letzte Antwort
              0
              • Z zzippo

                So, das Script zum installieren eines Raspi mit Apache, Letsencrypt und Reverse-Proxy ist fertig.

                Teil2: Reverse Proxy installieren

                wir brauchen also:

                • Einen frischen Raspi (buster lite ist ausreichend) im lokalen Netzwerk.
                • Die Ports 80 und 443 müssen auf diesen vor der Installation durchgeschaltet sein.

                einfach diesen Befehl ausführen:

                curl -sL  http://zzippo.de/scripts/reverse_proxy.sh  | bash -
                

                Alternativ kann mann sich das Script natürlich runterladen und vorher ansehen.

                Am Anfang werden die Daten abgefragt:
                Als erstes der domain-Name, dies ist deine dynDNS sofern Du keine feste IP hast.
                Dann noch Deine E-Mail Adresse. (Die braucht Letztencrypt um Dich zu errinnern wenn das Zertifikat abläuft.)
                Danach die IP Adresse auf der NodeRed bzw. der IOBroker läüft.
                Dann Die IP des Rechners, welcher die Discovery Response von Alexa beantwortet.
                Zu guter letzt Dein Userlogin und Passwort für die Authentifizierung wenn Du auf Deine Geräte vom Internet zugreifen willst.

                Am Ende des Scriptes wird dir dann das Base64 encodede Passwort ausgegeben, dieses müssen wir in Zeile10 der in Teil1 erstellten Lambda Funktion eigeben.

                Wichtig: Reverse Proxy, IOBroker und das Gerät auf dem das Discovery Response läuft, müssen immer die selben internen IP's haben

                Wenn alles funktioniert hat, kanst du unter:
                'https://Deine.Dyndns' die Apache Startseite sehen.
                unter 'https://Deine.Dyndns/nodered/' kommst du nach Eingabe von username/passwort auf Dein node red.

                **EDIT:**Script noch einmal geändert, da Escape Zeichen vor den $ in der conf Datei vergessen.

                M Offline
                M Offline
                mcdance
                schrieb am zuletzt editiert von mcdance
                #16

                @zzippo
                hab da mal ein paar dumme fragen:
                Ich habe einen Server bei mir stehen welcher die Performance und Hardware bereitstellt, das ganze läuft unter Proxmox.
                Auf dem Server läuft neben IoBroker und einer SQL Datenbank einen Nginx Proxy Manager und ich vermute das es sich mit deinem Script sehr beißen würde,
                wie könnte den 2ten Teil mit Nginx Proxy Manager realisieren?

                Grüße

                Z 1 Antwort Letzte Antwort
                0
                • J jrudolph

                  @zzippo Ich finde den Ansatz sehr interessant. Vielen Dank für die Doku.
                  Bisher verwende ich node-red-contrib-alexa-local. Das hat den Vorteil, dass es ohne Alexa Skill auskommt, ist aber in der Funktionalität recht eingeschränkt. Daher also die Suche nach Alternativen.
                  Ich habe Teil 1 und 2 nachvollzogen, wobei ich Teil 2 (Proxy) als erstes gemacht habe. Das hat den Charme, dass man beim Einrichten des Skills bereits sieht, dass er sich mit dem Reverse-Proxy verbindet.
                  Teil 2: Das Proxy Script funktioniert. Auf meinem alten Raspi 1 B+ muss man schon mal eine halbe Stunde Geduld aufbringen. Zwei Bemerkungen:
                  • Zeile 65 muss wohl lauten: echo -e "\e[0mDiscovery Server :\e[91m" $pc_ip
                  • In den letzten 3 Zeilen sollte das Kommentarzeichen entfernt werden, damit das encoded Password ausgeschrieben wird (man kann es natürlich auch manuell machen)
                  Teil 1: Die Skill Erstellung funktioniert wie beschrieben. Wenn man Teil 2 schon absolviert hat kann man die Zeilen 9 und 10 gleich mit der Adresse und dem codierten Passwort versehen. Beim Speichern des Alexa Skills wurde eine Fehlermeldung geworfen, weil die Lambda Funktion zu dem Zeitpunkt noch keinen Code hatte. Einfach nach dem Deployen der Lambda Funktion den Skill nochmal speichern. Dann geht es ohne Fehler.
                  Vielen Dank bis dahin. Wie geht es weiter mit Node-Red und Windows Programm?

                  Z Offline
                  Z Offline
                  zzippo
                  schrieb am zuletzt editiert von zzippo
                  #17

                  @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 Antwort Letzte Antwort
                  0
                  • M mcdance

                    @zzippo
                    hab da mal ein paar dumme fragen:
                    Ich habe einen Server bei mir stehen welcher die Performance und Hardware bereitstellt, das ganze läuft unter Proxmox.
                    Auf dem Server läuft neben IoBroker und einer SQL Datenbank einen Nginx Proxy Manager und ich vermute das es sich mit deinem Script sehr beißen würde,
                    wie könnte den 2ten Teil mit Nginx Proxy Manager realisieren?

                    Grüße

                    Z Offline
                    Z Offline
                    zzippo
                    schrieb am zuletzt editiert von
                    #18

                    @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 Antwort Letzte Antwort
                    0
                    • Z zzippo

                      @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 Offline
                      Z Offline
                      zzippo
                      schrieb am zuletzt editiert von zzippo
                      #19

                      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 Antworten Letzte Antwort
                      0
                      • Z 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 Offline
                        Z Offline
                        zzippo
                        schrieb am zuletzt editiert von
                        #20

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

                        1 Antwort Letzte Antwort
                        0
                        • Z 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 Offline
                          Z Offline
                          zzippo
                          schrieb am zuletzt editiert von
                          #21

                          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 Antwort Letzte Antwort
                          0
                          • Z zzippo

                            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 Offline
                            Z Offline
                            zzippo
                            schrieb am zuletzt editiert von
                            #22

                            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 Antwort Letzte Antwort
                            0
                            • Z 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

                              J Online
                              J Online
                              jrudolph
                              schrieb am zuletzt editiert von
                              #23

                              @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 Antwort Letzte Antwort
                              0
                              • J jrudolph

                                @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 Offline
                                Z Offline
                                zzippo
                                schrieb am zuletzt editiert von zzippo
                                #24

                                @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 Antwort Letzte Antwort
                                0
                                • Z 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 Online
                                  J Online
                                  jrudolph
                                  schrieb am zuletzt editiert von
                                  #25

                                  @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 Antworten Letzte Antwort
                                  0
                                  • J jrudolph

                                    @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 Offline
                                    Z Offline
                                    zzippo
                                    schrieb am zuletzt editiert von
                                    #26

                                    @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 Antwort Letzte Antwort
                                    0
                                    • Z zzippo

                                      @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 Offline
                                      Z Offline
                                      zzippo
                                      schrieb am zuletzt editiert von
                                      #27

                                      @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 Antwort Letzte Antwort
                                      0
                                      • J jrudolph

                                        @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 Offline
                                        Z Offline
                                        zzippo
                                        schrieb am zuletzt editiert von
                                        #28

                                        @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 Antworten Letzte Antwort
                                        0
                                        • Z zzippo

                                          @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 Offline
                                          J Offline
                                          Ju5t1n
                                          schrieb am zuletzt editiert von
                                          #29

                                          @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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          996

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe