Ankündigung

Einklappen
Keine Ankündigung bisher.

Alexa Custom Skill für EDOMI (LBS 19000646 und 19000647)

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

  • jonofe
    antwortet
    Zitat von juliawf Beitrag anzeigen
    Kann es sein das diese Abfrage FALSE ist, wenn ich eine richtige anfrage über Alexa dienst sende
    Nein, eigentlich kann das nicht sein. Hast du den Code irgendwo modifiziert?
    Ich würde empfehlen, noch mal das alexa.php aus dem ZIP File neu zu kopieren.

    Außerdem die Frage: Hast du den Alexa Receiver LBS in Edomi richtig konfiguriert? Wenn der nicht vorhanden ist oder nicht richtig konfiguriert ist, dann geht das Senden des Befehls an EDOMI schief und das Skript sendet keine Response an den Alexa Cloud Service. Dazu musst du oben in alexa.php die IP des EDOMI Servers und den Port, den du im Alexa Receiver LBS konfiguriert hast, angeben. Ich vermute mal ganz stark, dass es genau da in die Binsen geht. Würde auch erklären warum "Starte EDOMI" funktioniert, denn dabei gibt es keine Kommunikation zum EDOMI Alexa Receiver LBS.

    Einen Kommentar schreiben:


  • juliawf
    antwortet
    so, jetzt habe ich ein paar versuche gemacht.
    Alexa.php editiert
    ab Zeile 108 bis 114
    Code:
    if (array_key_exists('response', $result)) {
        $response = $result['response'];
        logging("test"); 
        logging($response); 
        logging("test"); 
        sendResponse($response);
    }
    logging("test"); einfach aus dem Grund damit ich die Ausgabezeile einfacher finden kann.

    Test1 mit starte edomi Log
    Code:
    Received JSON Request from alexa@amazon
    =======================================
        Application ID : OK
              KeyChain : OK
         SSL signature : OK
     Certificate parse : OK
    SAN in certificate : OK
    Certificate expiry : OK
                Timing : OK
    Array
    (
        [version] => 1.0
        [session] => Array
            (
                [new] =>
                [sessionId] => SessionId.4de...f16
                [application] => Array
                    (
                        [applicationId] => amzn1.ask.s...3b21
                    )
    
                [attributes] => Array
                    (
                    )
    
                [user] => Array
                    (
                        [userId] => amzn1.ask.account.AHLB...CMQ
                    )
    
            )
    
        [request] => Array
            (
                [type] => LaunchRequest
                [requestId] => EdwRequestId.99809694-391c-4e82-8682-14ea3daaea56
                [timestamp] => 2017-01-03T13:37:26Z
                [locale] => de-DE
            )
    
    )
    
    test
    
                    {
                      "version": "1.0",
                      "sessionAttributes": {},
                      "response": {
                            "outputSpeech": {
                              "type": "PlainText",
                              "text": "Willkommen bei Ihrer EDOMI Smart Home Steuerung"
                            },
                            "card": {
                              "type": "Simple",
                              "title": "EDOMI",
                              "content": "EDOMI Steuerung gestartet."
                            },
                            "reprompt": {
                              "outputSpeech": {
                                    "type": "PlainText",
                                    "text": "Bitte geben Sie einen EDOMI Befehl ein."
                              }
                            },
                            "shouldEndSession": false
                      }
                    }
    test
    
                    {
                      "version": "1.0",
                      "sessionAttributes": {},
                      "response": {
                            "outputSpeech": {
                              "type": "PlainText",
                              "text": "Willkommen bei Ihrer EDOMI Smart Home Steuerung"
                            },
                            "card": {
                              "type": "Simple",
                              "title": "EDOMI",
                              "content": "EDOMI Steuerung gestartet."
                            },
                            "reprompt": {
                              "outputSpeech": {
                                    "type": "PlainText",
                                    "text": "Bitte geben Sie einen EDOMI Befehl ein."
                              }
                            },
                            "shouldEndSession": false
                      }
                    }
    sieht ok aus

    jetzt mit "starte edomi und schalte das Licht in der Küche ein"
    Code:
    Received JSON Request from alexa@amazon
    =======================================
        Application ID : OK
              KeyChain : OK
         SSL signature : OK
     Certificate parse : OK
    SAN in certificate : OK
    Certificate expiry : OK
                Timing : OK
    Array
    (
        [version] => 1.0
        [session] => Array
            (
                [new] =>
                [sessionId] => SessionId.4,,,6f16
                [application] => Array
                    (
                        [applicationId] => amzn1.ask.skill.6ce459e...3b21
                    )
    
                [attributes] => Array
                    (
                    )
    
                [user] => Array
                    (
                        [userId] => amzn1.ask.account.AHLB5,,,MQ
                    )
    
            )
    
        [request] => Array
            (
                [type] => IntentRequest
                [requestId] => EdwRequestId.19,,,70a
                [timestamp] => 2017-01-03T13:42:22Z
                [locale] => de-DE
                [intent] => Array
                    (
                        [name] => Light_Switch
                        [slots] => Array
                            (
                                [Light_Switch_Room] => Array
                                    (
                                        [name] => Light_Switch_Room
                                        [value] => Küche
                                    )
    
                                [Light_Name] => Array
                                    (
                                        [name] => Light_Name
                                        [value] => Licht
                                    )
    
                                [Light_Switch_Value] => Array
                                    (
                                        [name] => Light_Switch_Value
                                        [value] => ein
                                    )
    
                                [Praeposition] => Array
                                    (
                                        [name] => Praeposition
                                        [value] => in der
                                    )
    
                                [Article] => Array
                                    (
                                        [name] => Article
                                        [value] => das
                                    )
    
                            )
    
                    )
    
            )
    
    )
    
    Array
    (
        [group] => licht schalten
        [name] => Licht
        [location] => Küche
        [value] => 1
    )
    hier fehlen die zwei Tests einschliesslich zusätzliche doppelte Ausgabe.

    Code:
    if (array_key_exists('response', $result)) {
    Kann es sein das diese Abfrage FALSE ist, wenn ich eine richtige anfrage über Alexa dienst sende

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von juliawf Beitrag anzeigen
    Kannst du mir evtl. helfen wie ich das Logging einbauen kann, was alexa.php zurück schickt.
    Füge vor den Zeilen:

    PHP-Code:
    sendResponse($response);
    die(); 
    die Zeile

    PHP-Code:
    logging($response); 
    ein.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    schau ich mir gleich mal an...

    Einen Kommentar schreiben:


  • juliawf
    antwortet
    Kannst du mir evtl. helfen wie ich das Logging einbauen kann, was alexa.php zurück schickt.
    Habe in der Richtung auch nichts gefunden.

    Einen Kommentar schreiben:


  • juliawf
    antwortet
    Morgen André,
    meine Anweisung
    Code:
    starte EDOMI und schalte das Licht in der Küche ein
    Service Request
    Code:
    {
      "session": {
        "sessionId": "SessionId.b7ee4619-a5d5...532755f5a",
        "application": {
          "applicationId": "amzn1.ask.skill.6ce4...d-84b511103b21"
        },
        "attributes": {},
        "user": {
          "userId": "amzn1.ask.account.AHLB5CI5AXNP7WUSLV...JUHJKRIGRHSBBQ5YZSBZOCMQ"
        },
        "new": false
      },
      "request": {
        "type": "IntentRequest",
        "requestId": "EdwRequestId.1f0f002e-0c53-4201-a97d-0ebbfb0e79de",
        "locale": "de-DE",
        "timestamp": "2017-01-03T07:52:26Z",
        "intent": {
          "name": "Light_Switch",
          "slots": {
            "Light_Name": {
              "name": "Light_Name",
              "value": "Licht"
            },
            "Light_Switch_Value": {
              "name": "Light_Switch_Value",
              "value": "ein"
            },
            "Article": {
              "name": "Article",
              "value": "das"
            },
            "Light_Switch_Room": {
              "name": "Light_Switch_Room",
              "value": "Küche"
            },
            "Praeposition": {
              "name": "Praeposition",
              "value": "in der"
            }
          }
        }
      },
      "version": "1.0"
    }
    Service Response
    Code:
    There was an error calling the remote endpoint, which returned HTTP 500 : Internal Server Error
    Alexa Log
    Code:
    Received JSON Request from alexa@amazon
    =======================================
        Application ID : OK
              KeyChain : OK
         SSL signature : OK
     Certificate parse : OK
    SAN in certificate : OK
    Certificate expiry : OK
                Timing : OK
    Array
    (
        [version] => 1.0
        [session] => Array
            (
                [new] =>
                [sessionId] => SessionId.b7ee4619-a5d5-4f50-8f0e-818532755f5a
                [application] => Array
                    (
                        [applicationId] => amzn1.ask.skill.6c.......d-84b511103b21
                    )
    
                [attributes] => Array
                    (
                    )
    
                [user] => Array
                    (
                        [userId] => amzn1.ask.account.AHLB5CI5AXNP7WUSLVUKF....MOI2CO3RHSBBQ5YZSBZOCMQ
                    )
    
            )
    
        [request] => Array
            (
                [type] => IntentRequest
                [requestId] => EdwRequestId.1f0f002e-0c53-4201-a97d-0ebbfb0e79de
                [timestamp] => 2017-01-03T07:52:26Z
                [locale] => de-DE
                [intent] => Array
                    (
                        [name] => Light_Switch
                        [slots] => Array
                            (
                                [Light_Switch_Room] => Array
                                    (
                                        [name] => Light_Switch_Room
                                        [value] => Küche
                                    )
    
                                [Light_Name] => Array
                                    (
                                        [name] => Light_Name
                                        [value] => Licht
                                    )
    
                                [Light_Switch_Value] => Array
                                    (
                                        [name] => Light_Switch_Value
                                        [value] => ein
                                    )
    
                                [Praeposition] => Array
                                    (
                                        [name] => Praeposition
                                        [value] => in der
                                    )
    
                                [Article] => Array
                                    (
                                        [name] => Article
                                        [value] => das
                                    )
    
                            )
    
                    )
    
            )
    
    )
    
    Array
    (
        [group] => licht schalten
        [name] => Licht
        [location] => Küche
        [value] => 1
    )
    Habe ober userId und applicationId gekürzt! falls wichtig ist, kann ich komplett posten.

    mit nur "starte edomi" funktioniert es einwandfrei

    Vielleicht ist mir beim übertragen irgendwo ein Fehler unterlaufen?
    Ich komme gerade beim besten willen nicht drauf an welche stelle es sein könnte.

    Angehängte Dateien

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Eigentlich sieht die Ausgabe richtig aus. Der Befehl kommt ja richtig an.
    Wie genau sah der Befehl iaus, den du losgeschickt hast?
    Bin gerade an einem Update dran, dauert aber vermutlich noch ein paar Tage.
    Ggf. kannst du noch ein Logging einbauen und zwar von dem was das alexa.php als response zurück schickt.
    Ein Screenshot des Kommandos und dann des Sende- und Empfangsfensters in der alexa Konsole wäre noch hilfreich.

    Einen Kommentar schreiben:


  • juliawf
    antwortet
    Hallo an alle,
    Ich bin relativ neu hier, und etwas unerfahren. Bin bis jetzt auch immer mit der Suchfunktion weitergekommen.
    Leider stehe ich seid gestern etwas auf dem schlauch.
    Ich habe alles nach André seiner Anleitung gemacht und ziemlich weit gekommen.
    Test mit
    Code:
    starte edomi
    hat sauber funktioniert un ich habe im rechten Service Response Fenster auch eine Antwort bekommen wie es in der Anleitung steht.

    Sobald ich was anderes probiere, bekomme ich
    Code:
    There was an error calling the remote endpoint, which returned HTTP 500 : Internal Server Error
    die Terminal Ausgabe in EDOMI sieht dann so aus
    Code:
    Received JSON Request from alexa@amazon
    =======================================
        Application ID : OK
              KeyChain : OK
         SSL signature : OK
     Certificate parse : OK
    SAN in certificate : OK
    Certificate expiry : OK
                Timing : OK
    Array
    (
        [version] => 1.0
        [session] => Array
            (
                [new] =>
                [sessionId] => SessionId.e5932….7624154
                [application] => Array
                    (
                        [applicationId] => amzn1.ask.skill.6…3b21
                    )
    
                [attributes] => Array
                    (
                    )
    
                [user] => Array
                    (
                        [userId] => amzn1.ask.account.AHLB5CI5AXXXX….XXXHSBBQ5YZSBZOCMQ
                    )
    
            )
    
        [request] => Array
            (
                [type] => IntentRequest
                [requestId] => EdwRequestId.3379ee4f-2ebe-449a-ace2-92bd1c04fbaa
                [timestamp] => 2017-01-02T23:10:01Z
                [locale] => de-DE
                [intent] => Array
                    (
                        [name] => Light_Switch
                        [slots] => Array
                            (
                                [Light_Switch_Room] => Array
                                    (
                                        [name] => Light_Switch_Room
                                        [value] => Küche
                                    )
    
                                [Light_Name] => Array
                                    (
                                        [name] => Light_Name
                                        [value] => Licht
                                    )
    
                                [Light_Switch_Value] => Array
                                    (
                                        [name] => Light_Switch_Value
                                        [value] => ein
                                    )
    
                                [Praeposition] => Array
                                    (
                                        [name] => Praeposition
                                        [value] => in der
                                    )
    
                                [Article] => Array
                                    (
                                        [name] => Article
                                        [value] => das
                                    )
    
                            )
    
                    )
    
            )
    
    )
    
    Array
    (
        [group] => licht schalten
        [name] => Licht
        [location] => Küche
        [value] => 1
    )
    in Proxy-Konfiguration steht noch "Require all granted" und IP Filter ist noch aaskommentiert.

    Vielleicht hat einer oder anderer so ein ähnliches problem schon mal gehabt und kann mir hier helfen.

    Gruß Waleri

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von eriche Beitrag anzeigen
    braucht man nun zwingend die Hardware dafür?
    Leider kann man das Amazon Echo ja noch nicht kaufen,...
    Was genau meinst Du? Den Amazon Echo? Oder den RPI?
    Wenn du per Sprache steuern willst, dann brauchst du ein Amazon Echo Device.
    Für das Setup, dass im PDF beschrieben ist, kannst du auch schon ohne Echo Device starten.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von junibart Beitrag anzeigen

    Das ist mir gestern auch passiert. Das liegt offenbar daran, dass der Simulator von einer anderen IP aus auf alexa.php zugreift (72.21.217.66), und man diesen Test solange machen sollte wie in der Proxy-Konfiguration testweise noch "Require all granted" steht. (bei mir der Apache)
    Das schau ich mir noch mal an, ob die Service Simulator Requests von anderen IP's kommen. Ich habe den Netzwerktraffic gescannt und mit den offiziellen Liste der Amazon AWS IP-Ranges abgeglichen. Aber es kann sein, dass ich das nur für die realen Alexa Commands gemacht habe, die vom Device kommen.

    Zitat von junibart Beitrag anzeigen
    An dieser Stelle auch von mir herzlichen Dank an André für die sehr gute Entwicklung und Dokumentation! Immer wieder klasse, was Du hier leistest...
    Zwei kleine Anmerkungen zur PDF-Doku: Auf Seite 7/8: Die Datei "/etc/apache/sites-available/000-default-le-ssl.conf" liegt auf meinem Pi in /etc/apache2.
    Ja, das ist ein Bug in der Doku. Bei mir ist es auch apache2. Werde das anpassen.

    Zitat von junibart Beitrag anzeigen
    Was mich an dieser Stelle noch interessiert: Der reverse proxy ist ja sicherheitsrelevant. Was raten die Experten- sollte man einen Pi exklusiv für diese Aufgabe abstellen, oder kann man den Pi dann mit allen anderen Aufgaben, die man aus Edomi noch auslagern muss, beschäftigen? In meinem Fall 1wire, HABridge (noch), homegear?
    Ich persönlich mache auf dem RPi nur Reverse Proxy und alles was ich zum Internet bereitstellen möchte. Da ich einen eigenen Mailserver betreibe, fungiert dieser RPi auch als Proxy für die emails. Interne Funktionen betreibe ich dort jedoch nicht. Außerdem habe ich noch einen Router/Firewall zwischen internem Netz und dem RPI. D.h. er ist in meiner Mini-DMZ. D.h. wenn ein Angreifer Zugang zu meinem RPI in der DMZ bekommt, dann hat er keinen Zugriff auf mein internes Netz oder andere Server.

    Am Ende hängt es immer vom persönlichen Sicherheitsbedürfnis ab. Das würde ich grundsätzlich bei einer EDOMI Installation als hoch ansehen. Kostentechnisch ist es mir das Wert (ca. 50€ für den RPI inkl. Gehäuse, SD Karte und Netzteil + Stromverbrauch).

    Einen Kommentar schreiben:


  • eriche
    antwortet
    braucht man nun zwingend die Hardware dafür?
    Leider kann man das Amazon Echo ja noch nicht kaufen,...

    Einen Kommentar schreiben:


  • junibart
    antwortet
    Zitat von panzaeron Beitrag anzeigen
    jonofe
    Aber der letzte Schritt der Anleitung (Service Simulator) funktioniert bei mir nicht, beim Test wird der Service Request generiert, aber alexa.php antwortet nicht (The remote endpoint could not be called, or the response it returned was invalid.)
    Wenn ich das alexa.php direkt im Browser aufrufe wird keine Ausgabe erzeugt (vermutlich i.O.), setze ich ein echo "Test"; in das PHP wird dieses ausgegeben, also das Skript läuft prinzipiell von extern. Das Zertifikat hat ein Rating von A+, sollte auch i.O. sein.
    Aber was könnte ich noch prüfen? Hat jemand eine Idee?
    Das ist mir gestern auch passiert. Das liegt offenbar daran, dass der Simulator von einer anderen IP aus auf alexa.php zugreift (72.21.217.66), und man diesen Test solange machen sollte wie in der Proxy-Konfiguration testweise noch "Require all granted" steht. (bei mir der Apache)

    An dieser Stelle auch von mir herzlichen Dank an André für die sehr gute Entwicklung und Dokumentation! Immer wieder klasse, was Du hier leistest...
    Zwei kleine Anmerkungen zur PDF-Doku: Auf Seite 7/8: Die Datei "/etc/apache/sites-available/000-default-le-ssl.conf" liegt auf meinem Pi in /etc/apache2.

    Was mich an dieser Stelle noch interessiert: Der reverse proxy ist ja sicherheitsrelevant. Was raten die Experten- sollte man einen Pi exklusiv für diese Aufgabe abstellen, oder kann man den Pi dann mit allen anderen Aufgaben, die man aus Edomi noch auslagern muss, beschäftigen? In meinem Fall 1wire, HABridge (noch), homegear?

    Besten Dank,

    Gunnar

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Sehr gerne. Frohe Weihnachten

    Einen Kommentar schreiben:


  • webasti321
    antwortet
    Super!

    Funktioniert jetzt wie erwartet.

    Danke dir

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von jonofe Beitrag anzeigen

    Du hast recht, da ist noch ein Bug in der Validierung von Group, Name, Location und Value.
    Update kommt ...
    Update ist jetzt verfügbar: LBS19000647 - Alexa Command Validator v0.2

    Einen Kommentar schreiben:

Lädt...
X