Alexa heiratet Loxone

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gast

    Alexa heiratet Loxone

    Hi,

    habe heute mal angefangen, einen eigenen Skill für Loxone zu erstellen. Jeder der Lust und Muße hat ist eingeladen es auszuprobieren und zu erweitern.
    Ich habe mich für einen Custom-Skill entschieden da diese wesentlich flexibler als die SmartHome-Skills sind. (https://developer.amazon.com/public/...ypes-of-skills) Nachteil ist dass man sie jedesmal gezielt triggern muss ("Alexa, sage Loxone er soll das Licht einschalten"). Bei den SmartHome-Skills ist das nicht notwendig, dort hat man aber nur eingeschränkte Befehle (schalte ein, schalte aus, dimme auf ...). Abfragen ("Wie ist der Zustand des Türkontakts?") gehen dort soweit ich weiß garnicht. Wenn Amazon hier nachlegt wäre es aber möglich auf einen SmartHome-Skill zu wechseln.

    Der Ablauf des Skills ist im groben:
    Zerlegen des gesprochenen Satzes in
    - was? (schalten oder abfragen)
    - wo? (Raum)
    - womit? (Gerät)
    - welcher wert?

    Wird kein Raum angegeben wird das erstbeste Gerät genommen, was zum Namen gefunden wird.

    Anschließend wird eine Verbindung mit dem MS aufgebaut, geschaut ob es ein passendes Gerät gibt und dann entsprechend geschaltet und mit einem OKAY bestätigt.
    Bei Abfragen wird versucht möglichst brauchbare Antworten zu geben, z.B.
    - wie ist der Zustand der Alarmanlage? -> Scharf mit Bewegungsmelder
    - wie ist der Zustand des Türkontakts? -> Der Türkontakt ist geschlossen
    - wie ist die Temperatur im Wohnzimmer? -> 22,5 Grad

    Sätze zum Steuern sind z.B.
    Licht an
    Licht einschalten
    Licht im Wohnzimmer einschalten
    Schalte Licht im Wohnzimmer ein
    Dimme Licht im Wohnzimmer auf 50%

    Fahre Rollladen im Wohnzimmer hoch
    Rollladen im Wohnzimmer runter!
    Fahre Rollladen im Wohnzimmer auf 30% (hierzu ist ein virtueller Eingang notwendig!)

    Schalte Alarmanlage ein
    Schalte unsere Alarmanlage aus

    Trigger Zentral aus


    Als Prefix muss immer "Alexa, sage Loxone, ..." gesagt werden.

    Ich biete den Skill nicht offiziell im "Alexa Skill Store" an, das ist eigentlich Aufgabe von Loxone.

    Jeder kann ihn aber hier herunterladen und in seinem eigenen Account benutzen und beliebig anpassen.

    Installation
    ============
    Info vorab: Um den AWS Dienst benutzen zu können ist eine Kreditkarte erforderlich. Es entstehen keine Kosten, sie wird aber trotzdem benötigt.
    Außerdem muss der MiniServer von außen erreichbar sein. Ich empfehle für den Skill einen eigenen Loxone-Benutzer anzulegen, der kritische Dinge wie Haustür öffnen nicht darf.

    Wie man eigene Skills in der App verfügbar macht ist hier beschrieben https://www.youtube.com/watch?v=MlNs23J4e8E
    Dort wo "Google" genannt wird "Loxone" benutzen.

    Im Video lediglich den GitHub Teil überspringen und stattdessen das folgende ZIP benutzen.
    Im ZIP befindet sich eine Datei index.js, dort in den Zeilen 13-15 die Zugangsdaten zum MiniServer eintragen und anschließend alles wieder packen.
    Angehängte Dateien
  • doc-brown
    Lox Guru
    • 13.09.2015
    • 1456

    #2
    moin,

    cool :-)

    ich sags gleich - ich möchte keine diskussion über datenschutz und sowas - ich denke jeder weiss was er macht wenn er sich den echo ins wohnzimmer stellt...
    ich frage nur zu meinem verständnis!!!

    mit dem skill ist es notwendig den benutzernamen und das pw des MS anzugeben. diese info geht dann "quasi raus" ins internet - richtig?

    grüsse :-)

    geändert: im script steht dass man einen dedizierten user anlegen sollte mit "lower rights" - sprich einen non admin user? denn ansonsten kann man ja nicht viel einstellen hinsichtlich berechtigung - oder?

    ist AWS eigentlich kostenlos auf dauer? da steht was von "einem jahr"?
    Zuletzt geändert von doc-brown; 11.03.2017, 10:03.

    Kommentar

    • DellJoe
      Extension Master
      • 25.08.2015
      • 133

      #3
      Gerade erst entdeckt, sehr schöne Sache!

      Muss ich gleich mal ausprobieren, sobald das Alexa<->Lox Plugin abgeschlossen
      Loxone Miniserver, Loxone 1wire Extension, KNX Sensorik & Aktorik (u.a. MDT Glastaster), Loxberry (Wetterserver, 433MHz, Netatmo, HA-Bridge), Helios KWL, Amazon Echo, Netatmo Wetterstation, Netatmo Presence und viele andere Basteleien...

      Kommentar

      • Gast

        #4
        Hat das schon jemand erfolgreich am laufen?
        Bitte um Feedback...

        Kommentar

        • doc-brown
          Lox Guru
          • 13.09.2015
          • 1456

          #5
          ich habs mir mal angeschaut... bis dato bekommt mein MS aber keine erlaubnis von draussen erreichbar zu sein ;-)

          Kommentar

          • dakine_55
            Smart Home'r
            • 25.01.2016
            • 67

            #6
            Wenn ich das Skill auch Lokal laufen lassen kann, würde ich auch mittesten..... Mein Ms ist auch nicht von Außen erreichbar, nur per VPN...

            Kommentar

            • Gast

              #7
              Warum macht ihr das?

              Gesendet von meinem SM-G935F mit Tapatalk

              Kommentar


              • dakine_55
                dakine_55 kommentierte
                Kommentar bearbeiten
                Meinst du warum wir unsere MS nicht im Internet verfügbar machen?
                Ich habe nichts extern verfügbar... Ist mir zu unsicher!
                Zusätzlich gibt's keine reboots des MS durch DDos Attacken.
            • wrack solutionist
              Extension Master
              • 09.09.2016
              • 183

              #8
              Hallo buddyman,

              villeicht macht es Sinn eure Aktivitäten zu bündeln:

              vg
              Hi@all, wie ich vor längerem nebenbei erwähnt habe, habe ich vor einen Loxone Skill für Amazon echo zu entwickeln, damit habe ich gestern bereits begonnen - und

              Kommentar


              • christof89
                christof89 kommentierte
                Kommentar bearbeiten
                Ich befinde mich "leider" noch bis April im Ausland, mein Projekt ist etwas eingeschlafen aufgrund meiner Arbeit...
                Läuft zwar mir etlichen "hardcoded" Teilen schon recht gut - aber ich hab mir diesen Skill hier mal rein Codetechnisch angesehen und sieht sehr vielversprechend aus...

                Interessant wird es wie schnell die Loxone JSON Datei heruntergeladen und ausgewertet ist...

                Wo ich bei meinem Projekt ebenfalls etwas ins grübeln gekommen bin, ist der externe Zugriff - mein MS wird nämlich von extern auch nur per VPN verfügbar sein...
            • wrack solutionist
              Extension Master
              • 09.09.2016
              • 183

              #9
              Hi,

              ich habe soweit die Skill einbinden können und finde es super. Ich hätte auch schon eine Verbesserung die man einbringen könnte, leider sind meine Programmierkenntnisse in js sehr begrenzt. Mir ist aufgefallen, dass die Skill nach den Bausteinbezeichnungen sucht, jedoch habe ich z.B: bei der Lichtsteuerung im Wohnzimmer mehrere Ausgänge (Spots, Nischenlicht, etc.). Dieses habe ich bisher nicht geschafft "anzusprechen". Auch die Temoeratur direkt aus der intelligenten Raumregelung zu erfragen geht derzeit nicht. Vielleicht kann man das in einer nächsten Version updaten.


              VG

              Michael
              Zuletzt geändert von wrack solutionist; 13.03.2017, 22:31.

              Kommentar

              • DMx
                Dumb Home'r
                • 26.08.2015
                • 20

                #10
                In diesem Zusammenhang würde mich interessieren, wie man "in einem Ritt" die erlaubten Benutzer (lokal und Internet) von allen Bausteinen ändern kann, ohne sie einzeln anfassen zu müssen?

                Kommentar

                • Gast

                  #11
                  ist AWS eigentlich kostenlos auf dauer? da steht was von "einem jahr"?
                  Das kostenlose Kontingent beinhaltet 1 Mio. Abfragen pro Monat sowie bei 512 MB 800 000 sek. Verarbeitungszeit / pro Monat. Daran kratzt der Skill nichtmal ansatzweise.

                  Mir ist aufgefallen, dass die Skill nach den Bausteinbezeichnungen sucht, jedoch habe ich z.B: bei der Lichtsteuerung im Wohnzimmer mehrere Ausgänge (Spots, Nischenlicht, etc.). Dieses habe ich bisher nicht geschafft "anzusprechen". Auch die Temoeratur direkt aus der intelligenten Raumregelung zu erfragen geht derzeit nicht. Vielleicht kann man das in einer nächsten Version updaten.
                  Ja das stimmt, Unterstützung für Bausteine, die aus der Reihe tanzen, fehlt quasi komplett.
                  Du könntest aber virtuelle Ein- und Ausgänge anlegen, mit dem Lichtsteuerungsbaustein verbinden und diese dann einfach triggern bzw. abfragen.

                  Kommentar

                  • Citibroker
                    Dumb Home'r
                    • 15.11.2015
                    • 18

                    #12
                    ​​​​​​Hallo zusammen

                    ich hoffe ihr könnt mir helfen. Ich bin nach folgender Anleitung vorgegangen aber bekomme in der Alexa App immer die folgende Fehlermeldung angezeigt: The target Lambda application returned a failure response. Ich habe unter Punkt 7 den entpackten und modifizierten Folder wieder als gezippte Datei hochgeladen...
                    1. Diese loxforum Seite aufrufen und die Zip Datei herunterladen und entpacken
                    2. Die Datei index.js mit dem Editor öffnen, dort in den Zeilen 13-15 die Zugangsdaten zum MiniServer eintragen und anschließend alles wieder packen.
                    3. AWS Amazon aufrufen und ein Konto anlegen. Dort erhält man eine kostenlose Mitgliedschaft für ein Jahr lang. WICHTIG!! da diese Frage nun schon häufiger aufgetreten ist: Nach dem Jahr bleibt der Service kostenlos, solange man keine kostenpflichtigen Dienste in Anspruch nimmt, d.h. es entstehen keine Kosten, falls ihr euch nicht abmeldet.
                    4. Bei AWS einloggen und in der Suche „lambda“ eingeben.
                    5. Klicke auf „Get started now“, „Configure Triggers“ und wähle danach oben rechts neben deinem Benutzernamen „Ireland“ als Region aus.
                    6. Nun das Alexa Skills Kit neben der orangenen Lambda Funktion auswählen und auf „next“ klicken.
                    7. Bei Name : „Loxone“ eingeben und die .Zip Datei hochladen
                    8. Bei „Role“ „Create new role from template(s)“ wählen und diese Zeile einfügen: lambda_basic_execution
                    9. Bei „Timeout“ 10 Sekunden wählen, „next“ klicken und abschließend auf „Create Funktion“ klicken.
                    10. Kopiere nun den ARN Code oben rechts und speicher ihn z.B. in einer Textdatei zwischen.
                    11. Account auf dveloper.amazon.com erstellen und einloggen
                    12. Klicke nun auf „Alexa“, „Get started“ und dann auf „Add new Skill“
                    13. Wähle nun bei „Language“ German aus und benenne den Skill mit Loxone und gib bei „Invocation Name“ loxone in Kleinbuchstaben ein.
                    14. Nachdem du auf „Next“ geklickt hast, gibst du folgenden Code in das erste Feld ein:

                      {
                    "intents": [
                    {
                    "intent": "ControlIntent",
                    "slots": [
                    {
                    "name": "control",
                    "type": "CONTROL"
                    }
                    ]
                    },
                    {
                    "intent": "AMAZON.StopIntent"
                    }
                    ]
                    }
                    1. Klicke auf „Add Slot Type“ und gib „CONTRORL“ in das „Enter Type“ Feld ein
                    2. In das „Enter Values“ Textfeld den folgenden Code einfügen:
                    fahre jalousie rauf
                    schalte licht ein
                    setze helligkeit licht wohnzimmer auf 50%

                    In das untere Textfeld den folgenden Code eingeben und auf „Next“ klicken.

                    ControlIntent {control}
                    1. Klicke auf „AWS Lambda ARN“ und wähle Europa aus. In das Textfeld den zwischengespeicherten ARN Code einfügen und auf „Next“ klicken
                    2. Den Schalter auf „Enable“ setzen, 2 mal auf „Next“ klicken und anschließend auf „Save“
                    3. Bei „Global Fields“ alle Haken auf „no“ setzen und unten die Bedingunen akzeptieren.
                    Du hast nun deinen eigen Skill erstellt und jetzt kannst du den Skill auf deinem Smartphone in der Alexa App aktivieren.

                    Herzlichen Dank an Euch!

                    Marcus

                    Kommentar


                    • Citibroker
                      Citibroker kommentierte
                      Kommentar bearbeiten
                      Hallo buddyman, danke für den Hinweis! Wo sehe ich, was sich jetzt im Root Archiv befindet? Finde mich im AWS noch nicht so ganz zurecht :-(((

                    • Gast
                      Gast kommentierte
                      Kommentar bearbeiten
                      Ich meinte das Archiv welches du erstellst hast nachdem du die index.js angepasst hast muss exakt so aussehen http://www.picfront.org/d/9wYL

                    • Citibroker
                      Citibroker kommentierte
                      Kommentar bearbeiten
                      ich bin langsam am verzweifeln:

                      Unable to import module 'index': Error at Function.Module._resolveFilename (module.js:325:15) at Function.Module._load (module.js:276:25) at Module.require (module.js:353:17) at require (internal/module.js:12:17)

                      Unable to import module 'index': Error
                      at Function.Module._resolveFilename (module.js:325:15)
                      at Function.Module._load (module.js:276:25)
                      at Module.require (module.js:353:17)
                      at require (internal/module.js:12:17)
                      Zuletzt geändert von Citibroker; 16.03.2017, 19:43.
                  • Negropo
                    Smart Home'r
                    • 10.10.2015
                    • 90

                    #13
                    Hallo,

                    habe es gestern mal installiert. Verbindung zum MS funktioniert. Besteht die Möglichkeit durch einen Befehl (z.B. irgendein GET) mal eine Übersicht aus der loxappjson zu bekommen welche die für Alexa benötigten Werte DeviceID, Room etc. enthält. Hintergrund ist, dass ich sehen will, wo ich den Namen des Bausteins bzw. die Beschreibung anpassen muss, damit ich Alexa den richtigen Bausteinnamen nennen kann.

                    Danke!

                    Beste Grüße

                    Negropo

                    Kommentar


                    • Muto
                      Muto kommentierte
                      Kommentar bearbeiten
                      Miniserver IP/data/LoxAPP3.json
                  • wrack solutionist
                    Extension Master
                    • 09.09.2016
                    • 183

                    #14
                    Hallo,

                    ich versuche gerade ein wenig mich am Programm. Folgende Idee möchte ich umsetzten, damit die Reaktionszeit schneller ist, möchte ich die loxapp3.json Datei direkt lokal am Server ablegen. Die betreffenden Codezeilen habe ich durch
                    Code:
                                var options = JSON.parse('./loxApp3.json');
                    ersetzt. Leider führt dies nicht zum Ziel.
                    Des Weiteren suche ich die Funktion loxappJSON, wo ist diese hinterlegt, ich möchte gerne subcontrols mit einbinden.

                    Danke für Unterstützung.

                    VG

                    Michael

                    Kommentar


                    • Gast
                      Gast kommentierte
                      Kommentar bearbeiten
                      Um das zu bewerkstelligen musst du das fs-Modul von node.js einbinden, um überhaupt mal lokale Dateien lesen zu können. Mit fs.readFile kannst du die Datei dann lesen und mit JSON.parse parsen. Die Arbeit würde ich mir aber nicht machen, denn wenn du nicht gerade die allerletzte Dorf-DSLlight-Verbindung hast dürfte das Abfragen der JSON-Datei keinen spürbaren Traffic- oder Zeitverbrauch haben. Zumal du dann bei Änderungen immer deine lokale Datei aktualisieren musst.

                      Deine zweite Frage verstehe ich nicht...

                    • wrack solutionist
                      wrack solutionist kommentierte
                      Kommentar bearbeiten
                      Hallo
                      und zwar rufst du function(loxAppJSON) auf, jedoch sehe ich den Inhalt der Funktions nirgens.
                      VG
                  • Negropo
                    Smart Home'r
                    • 10.10.2015
                    • 90

                    #15
                    Hallo,

                    irgendwo habe ich noch ein Problem, da Alexa mir immer sagt, dass sie den Loxone-Befehl nicht verstanden hat:

                    Folgenden Service Request habe ich als Test gesendet:
                    Code:
                     "request": {
                        "type": "IntentRequest",
                        "requestId": "EdwRequestId.56b27024-1009-4b92-ae38-b30ee0ab9e8c",
                        "locale": "de-DE",
                        "timestamp": "2017-03-17T15:54:11Z",
                        "intent": {
                          "name": "ControlIntent",
                          "slots": {
                            "control": {
                              "name": "control",
                              "value": "sage Loxone schalte Licht ein"
                            }
                          }
                        }
                      },
                      "version": "1.0"
                    }
                    Als Response bekomme ich Folgendes:
                    Code:
                    {
                      "version": "1.5.2 - German locale fix",
                      "response": {
                        "outputSpeech": {
                          "type": "SSML",
                          "ssml": "<speak>Sorry, diesen Loxone-Befehl habe ich nicht verstanden.</speak>"
                        },
                        "card": {
                          "content": "Sorry, diesen Loxone-Befehl habe ich nicht verstanden.",
                          "title": "sage loxone schalte licht ein",
                          "type": "Simple"
                        },
                        "shouldEndSession": true
                      },
                      "sessionAttributes": {}
                    }
                    In der Loxapp3.json ist folgender Eintrag enthalten:
                    Code:
                     
                     "907c430e-0813-11e3-bed0a3a1c4b3d3e9":{"name":"Licht","type":"LightController","uuidAction":"907c430e-0813-11e3-bed0a3a1c4b3d3e9"
                    Wenn ich manuell die URL mit /dev/sps/io/UUID usw. aufrufe wird das Licht auch geschaltet.

                    Hat jemand eine Ahnung woran das liegen könnte?

                    Danke! Gruß Negropo

                    Kommentar


                    • Gast
                      Gast kommentierte
                      Kommentar bearbeiten
                      Geht mir gleich...

                    • Gast
                      Gast kommentierte
                      Kommentar bearbeiten
                      Im Test-Request reicht "schalte licht ein"

                    • Negropo
                      Negropo kommentierte
                      Kommentar bearbeiten
                      Danke Gast, das funktioniert.
                  Lädt...