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

    @jrudolph Dann hoffe ich, das morgen alles klappt. wenn es erstmal läuft, dann macht es richtig Freude. Ich wäre dann auch motiviert, weiter an der Sache zu entwickeln, obwohl im Moment schon alle meine Bedürfnisse gedeckt sind.
    Wenn ich nicht so ein blutiger Anfänger in JS wäre, würde ich auch einen Adapter bauen. Ich werde mir in den nächsten Tagen mal ein paar Youtube Videos zu Gemüte führen, evtl. hilft das ja.

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

    @zzippo Ich kann bestätigen dass nun neue Geräte gefunden werden. Erst gab es noch Probleme mit der Verbindung zwischen Proxy und PC. Im PC mußte ich noch eine Firewall Regel für den Port 41101 einrichten. Das als Hinweis für andere bei denen es evtl. auch an dieser Stelle klemmt.

    Z 1 Antwort Letzte Antwort
    0
    • J jrudolph

      @zzippo Ich kann bestätigen dass nun neue Geräte gefunden werden. Erst gab es noch Probleme mit der Verbindung zwischen Proxy und PC. Im PC mußte ich noch eine Firewall Regel für den Port 41101 einrichten. Das als Hinweis für andere bei denen es evtl. auch an dieser Stelle klemmt.

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

      @jrudolph, danke für den Hinweis. Wundert mich aber, weil ich die Firewall Regel per Software setzte, hattest Du das Programm mit Administrator Rechten gestartet?

      J 1 Antwort Letzte Antwort
      0
      • Z zzippo

        @jrudolph, danke für den Hinweis. Wundert mich aber, weil ich die Firewall Regel per Software setzte, hattest Du das Programm mit Administrator Rechten gestartet?

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

        @zzippo Tja, hat mich auch gewundert. Ich sehe die Regel für den AlexaDeviceGenerator (für alle Ports) in den Windows Defender Firewall Regeln. Habe mal probehalber wieder meine 41101 Regel deaktiviert --> geht wieder nicht. Regel 41101 aktiviert --> alles OK.
        Ja, läuft unter Admin.
        Jedenfalls funktioniert es jetzt.

        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.

          L Offline
          L Offline
          lito
          schrieb am zuletzt editiert von lito
          #44

          @zzippo Hi, besten Dank. Ich bin bei Teil 1 bis zum letzten Schritt gekommen. Leider wird bei mir in Alexa unter Skills der Button "Entwicklerskills" überhaupt nicht angezeigt. Muss ich da noch etwas zusätzlich aktivieren, damit ich das bekomme?alexa.jpg

          EDIT: hat sich erledigt. Irgendwie hatte ich einen Amazon Developer Account unter der gleichen Email, aber mit anderem Passwort als mein 'normaler' Amazon Account, der auch meine Echos drin hat. Daher war mein Alexa Developer und mein Alexa nicht miteinander verbunden.

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Marsx79
            schrieb am zuletzt editiert von Marsx79
            #45

            @zzippo

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

            Leider habe ich noch einige Schwierigkeiten mit Teil 2.

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

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

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

            Nur die IP? Kein Port oder weiteres?

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

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

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

            Das sind dann wohl die Zugangsdaten vom DynDNS?

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

            Z 1 Antwort Letzte Antwort
            0
            • M Marsx79

              @zzippo

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

              Leider habe ich noch einige Schwierigkeiten mit Teil 2.

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

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

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

              Nur die IP? Kein Port oder weiteres?

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

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

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

              Das sind dann wohl die Zugangsdaten vom DynDNS?

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

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

              Hallo Marsx79,

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

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

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

              Nur die IP? Kein Port oder weiteres?

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

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

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

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

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

              Das sind dann wohl die Zugangsdaten vom DynDNS?

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

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

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

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                Marsx79
                schrieb am zuletzt editiert von
                #47

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

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

                Aber welche IP soll ich denn da angeben?

                Z 1 Antwort Letzte Antwort
                0
                • M Marsx79

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

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

                  Aber welche IP soll ich denn da angeben?

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

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

                  Aber welche IP soll ich denn da angeben?

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

                  1 Antwort Letzte Antwort
                  0
                  • M Offline
                    M Offline
                    Marsx79
                    schrieb am zuletzt editiert von
                    #49

                    @zzippo

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

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

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

                    Z 1 Antwort Letzte Antwort
                    0
                    • M Marsx79

                      @zzippo

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

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

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

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

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

                      M 1 Antwort Letzte Antwort
                      0
                      • Z zzippo

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

                        M Offline
                        M Offline
                        Marsx79
                        schrieb am zuletzt editiert von
                        #51

                        @zzippo
                        NodeRed.jpg

                        Bei mir sieht das so aus.

                        Z 1 Antwort Letzte Antwort
                        0
                        • M Marsx79

                          @zzippo
                          NodeRed.jpg

                          Bei mir sieht das so aus.

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

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

                          M 1 Antwort Letzte Antwort
                          0
                          • Z zzippo

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

                            M Offline
                            M Offline
                            Marsx79
                            schrieb am zuletzt editiert von
                            #53

                            @zzippo

                            sql.jpg

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

                            Z 1 Antwort Letzte Antwort
                            0
                            • M Marsx79

                              @zzippo

                              sql.jpg

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

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

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

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

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

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

                              Zu den Einzelnen Feldern der Datenbank:

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

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

                              Ich hoffe das hilft ersteinmal weiter.

                              M M 2 Antworten Letzte Antwort
                              0
                              • Z zzippo

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

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

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

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

                                Zu den Einzelnen Feldern der Datenbank:

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

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

                                Ich hoffe das hilft ersteinmal weiter.

                                M Offline
                                M Offline
                                mech
                                schrieb am zuletzt editiert von
                                #55

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

                                Weiter so!

                                Gruß

                                1 Antwort Letzte Antwort
                                0
                                • Z zzippo

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

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

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

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

                                  Zu den Einzelnen Feldern der Datenbank:

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

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

                                  Ich hoffe das hilft ersteinmal weiter.

                                  M Offline
                                  M Offline
                                  Marsx79
                                  schrieb am zuletzt editiert von Marsx79
                                  #56

                                  @zzippo

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

                                  1 Antwort Letzte Antwort
                                  0
                                  • M Offline
                                    M Offline
                                    Marsx79
                                    schrieb am zuletzt editiert von Marsx79
                                    #57

                                    Ich hätte da aber noch zwei weitere Fragen:

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

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

                                    Z 1 Antwort Letzte Antwort
                                    0
                                    • M Marsx79

                                      Ich hätte da aber noch zwei weitere Fragen:

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

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

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

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

                                      Ich hätte da aber noch zwei weitere Fragen:

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

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

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

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

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

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

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

                                        Ich hätte da aber noch zwei weitere Fragen:

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

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

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

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

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

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

                                        @zzippo

                                        Auch das hat wieder super funktioniert! Danke!!!

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

                                        Z 1 Antwort Letzte Antwort
                                        0
                                        • M Marsx79

                                          @zzippo

                                          Auch das hat wieder super funktioniert! Danke!!!

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

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

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

                                          M 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

                                          1.0k

                                          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