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 eriche Beitrag anzeigen
    ich habe in der Tat 2x den gleichen Server.
    einmal mit Port 8000 für das Smarthomeskill und einmal auf Port 8001 für das Customskill.

    Aber 2x den Status auf true.

    Nach Deaktivierung von einem Status, klappt es wieder.
    Du solltest nur einen Eintrag in $targets haben und auch nur einen Receiver in deinem Projekt verwenden, solange du nur einen Custom und Smarthome Skill einsetzt.
    Der Receiver hat ja genau dafür Ausgänge für Custom Skill (A1-A6) und für Smarthome Skill (A7-A12)

    Zitat von eriche Beitrag anzeigen
    Lustig ist, dass je nachdem welches der beiden Skills den Status true hat, unterschiedliche Antworten von Alexa kommen.

    Einmal nur "OK" und einmal "Schaltbefehl erhalten".

    Mir gefällt das kurze "OK" besser
    Das ist ein Nebeneffekt der falschen Konfiguration.


    Einen Kommentar schreiben:


  • eriche
    antwortet
    ich habe in der Tat 2x den gleichen Server.
    einmal mit Port 8000 für das Smarthomeskill und einmal auf Port 8001 für das Customskill.

    Aber 2x den Status auf true.

    Nach Deaktivierung von einem Status, klappt es wieder.
    Lustig ist, dass je nachdem welches der beiden Skills den Status true hat, unterschiedliche Antworten von Alexa kommen.

    Einmal nur "OK" und einmal "Schaltbefehl erhalten".

    Mir gefällt das kurze "OK" besser

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Sieht danach aus als hättest du in der alexa-config.php in $targets zweimal denselben EDOMI Server eingetragen und zweimal status auf true. Kann das sein?
    Wenn du nur einen EDOMI Server hast, dann brauchst du nur einen Eintrag:

    PHP-Code:
    $targets = array(
        array(
            
    'ip' => '192.168.1.66',
            
    'protocol' => 'tcp',
            
    'port' => 8000,
            
    'status' => true
        
    )
    ); 
    Wenn du mehrere EDOMI Server mit Smarthome Skill Anbindung hast, dann darf nur bei einem 'status' => true gesetzt sein.

    Einen Kommentar schreiben:


  • eriche
    antwortet
    Code:
    Source    : OK
    User-ID   : OK
    Client-ID : OK
    Expiry    : OK
    Authorization Token successfully validated
    Starting communication with EDOMI
    Smarthome Control started...
    Data sent to EDOMI
    
    Waiting for response from 192.168.1.66
    
    Status received from EDOMI: {"header":{"namespace":"Alexa.ConnectedHome.Control","name":"TurnOnConfirmation","payloadVersion":"2","messageId":"..."},"payload":{}}
    
    Data sent to EDOMI
    
    Waiting for response from 192.168.1.66
    
    Status received from EDOMI: 
    
    JSON RESPONSE: 
    
    
    Received (JSON) Event from alexa@amazon
    =========================================
    Array
    (
        [header] => Array
            (
                [payloadVersion] => 2
                [namespace] => Alexa.ConnectedHome.Control
                [name] => TurnOffRequest
                [messageId] => ...
            )
    
        [payload] => Array
            (
                [appliance] => Array
                    (
                        [additionalApplianceDetails] => Array
                            (
                            )
    
                        [applianceId] => Device001
                    )
    
                [accessToken] => Atza|IwEBIOI8Fr0uoI-...
            )
    
    )
    
    ...
    Habe nur die IDs rausgenommen - erkennst du hier, woran es liegen könnte.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von eriche Beitrag anzeigen
    Ich bekomme bei jedem Befehl, der über das Smarthome Skill läuft, die Antwort
    "Das Gerät reagiert gerade nicht".
    Trotzdem wird es jedoch über den Bus Ein/Ausgeschaltet.

    Was kann es da haben?
    Es ging schon mal ohne dieses Phänomen
    Das klingt danach als würde keine oder eine falsche Antwort an den Alexa Service zurückgeschickt.
    Was steht denn im Log des Smarthome Skills? Insbesondere hinter "Status received from EDOMI:"

    Einen Kommentar schreiben:


  • eriche
    antwortet
    Ich bekomme bei jedem Befehl, der über das Smarthome Skill läuft, die Antwort
    "Das Gerät reagiert gerade nicht".
    Trotzdem wird es jedoch über den Bus Ein/Ausgeschaltet.

    Was kann es da haben?
    Es ging schon mal ohne dieses Phänomen

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von ThorstenGehrig Beitrag anzeigen
    Hi
    hier mal mein Feedback und Fragen zu seiner - sehr gut gemachten Anleitung (Respekt!)
    Frage: warum aktivierst du SSL auf dem EDOMI und lässt das Script dort laufen?
    Bei mir läuft ein APACHE und die installation dort funktioniert auch wunderbar... also warum nicht auf dem Raspberry?
    Würde SSL aktivierung auf dem EDOMI sparen (weniger änderungen) - und evtl. auch den EDOMI weniger angreifbar machen?
    Weil der RPI in meiner DMZ läuft und ich aus Sicherheitsgründen lieber den SSL Port in meiner Firewall zum EDOMI Apache öffne als mehrere Port von meinen Skripts zu einem Edomi LBS. Klar kann man die Skripts auch auf dem RPI laufen lassen. Genau deshalb habe ich ja auch Sockets implementiert und keine Message Queues.

    Zitat von ThorstenGehrig Beitrag anzeigen
    Kapitel 9.2: könnte erweitert werden und direkt beide Scripts direkt installiert werden (ist nur in 11.4 kurz erwähnt aber in 11.3 schon refernziert?)
    Seite 13: "userIDValidation=false;" gibt es nicht mehr. Kleine aktualisierung/schönheitskorrektur möglich
    Screenshot auf Seite 19: hat mittlerweile noch "permissions" (können alle deaktiviert bleiben)
    Seite 32: "create a new alexa skill" - screenshot is veraltet. Da muss mittlerweile "Payload v2" ausgewählt werden
    Seite 42: (vor Kapitel 11.4) müsste da nicht noch rein: "jetzt zurück zu Kapitel 11.2 und dort weitermachen"?
    Alles valide Punkte. Danke dafür. Im Moment ist allerdings Doku-Kosmetik Prio2 bei mir. Gerne stelle ich aber auch das .odt File zur Verfügung, wenn jemand die Doku optimieren möchte.

    Zitat von ThorstenGehrig Beitrag anzeigen
    Und last but not least: für die beiden PHP-Scripts würde ich mir wüschen das die Log-files nicht hardcodiert sind.
    Da bei mir die Scripts nicht auf der Edomi laufen sind die Log-Pfade ungültig... durch anpassen der zeilen 189/202 (alexa-smarthome-skill.php) und 959/966 (alexa-custom-skill.php) auf ein gültiges Log-Verzeichniss klappt das nun auch bei mir :-)
    Guter Punkt. Werde ich ins alexa-config.php File einbauen.

    Danke noch mal für das ausführliche Feedback.



    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi
    hier mal mein Feedback und Fragen zu seiner - sehr gut gemachten Anleitung (Respekt!)
    Frage: warum aktivierst du SSL auf dem EDOMI und lässt das Script dort laufen?
    Bei mir läuft ein APACHE und die installation dort funktioniert auch wunderbar... also warum nicht auf dem Raspberry?
    Würde SSL aktivierung auf dem EDOMI sparen (weniger änderungen) - und evtl. auch den EDOMI weniger angreifbar machen?

    Kapitel 9.2: könnte erweitert werden und direkt beide Scripts direkt installiert werden (ist nur in 11.4 kurz erwähnt aber in 11.3 schon refernziert?)
    Seite 13: "userIDValidation=false;" gibt es nicht mehr. Kleine aktualisierung/schönheitskorrektur möglich
    Screenshot auf Seite 19: hat mittlerweile noch "permissions" (können alle deaktiviert bleiben)
    Seite 32: "create a new alexa skill" - screenshot is veraltet. Da muss mittlerweile "Payload v2" ausgewählt werden
    Seite 42: (vor Kapitel 11.4) müsste da nicht noch rein: "jetzt zurück zu Kapitel 11.2 und dort weitermachen"?

    Und last but not least: für die beiden PHP-Scripts würde ich mir wüschen das die Log-files nicht hardcodiert sind.
    Da bei mir die Scripts nicht auf der Edomi laufen sind die Log-Pfade ungültig... durch anpassen der zeilen 189/202 (alexa-smarthome-skill.php) und 959/966 (alexa-custom-skill.php) auf ein gültiges Log-Verzeichniss klappt das nun auch bei mir :-)

    Alles keine Kritik - sondern nur Feedback. Die Anleitung (besonders bei der Alexa/Amazon/Lambda komplexität) ist super!

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi,
    Zitat von jonofe Beitrag anzeigen
    Bislang waren die Lock Commands nur für U.S., d.h. in englisch verfügbar. In der API wird dies zwar nicht ausdrücklich erwähnt, allerdings habe ich dort auch nicht die deutschen Befehle gefunden. Hast du da irgendwo mehr Infos gesehen?
    äh - nö. Ich bin mal davon ausgegangen das man ein "Alexa schließe die tür" einfach nutzen kann... Alexa scheint zumindest öffnen und schließen zu versetehen - ich habe nur kein device das man öffnen/schließen kann...
    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von Wingfighter Beitrag anzeigen
    Ich hatte eben nach Umstellung auf Reverse-Proxy wieder das Timestamp-Problem. Auch wenn das sicher nichts miteinander zu tun hat.
    Da die beiden zu vergleichenden Timestamps mit unterschiedlichen Funktionen ermittelt werden ( time() und date("c") ), könnte es sein, dass deshalb Timestamps mit verschiedener Länge gespeichert bzw. verglichen werden.
    PHP-Code:
    function validateRequest($jsonRequest)
    .
    .
    fail('timestamp validation failure.. Current time: ' time() . ' vs. Timestamp: ' $requestTimestamp);

    PHP-Code:
    function handleSessionEndRequest($sessionEndRequest)
    .
    .
    "timestamp""' . date("c") . '",


    Lösungsidee: Zeile 7 ändern

    PHP-Code:
    1function handleSessionEndRequest($sessionEndRequest)
    2{
    3 $RequestId $sessionEndRequest['request']['requestId'];
    4 $response '{
    5 "type": "SessionEndedRequest",
    6 "requestId": "' 
    $RequestId '",
    7 "timestamp": "' 
    date("c") . '", --> "timestamp": "' time() . '",
    8 "reason": "USER_INITIATED "
    9 }
    10 '
    ;
    11 return array(
    12 'response' => $response
    13 
    );
    14

    Das hat bei mir dann sofort funktioniert. Kann aber auch Zufall gewesen sein. Wie oben geschrieben, ging es ja beim ersten Mal nach einer gewissen Zeit auch ohne mein Zutun.

    Möglicherweise gibt es ja noch andere Gründe, warum beide Timestamps unterschiedlich ermittelt werden. Dann hat dieser Änderungsvorschlag evtl. Seiteneffekte, die ich natürlich nicht überschaue.
    Habe mir das noch mal angeschaut. Das sind nicht die beiden Timestamps, die verglichen werden. Es wird der lokale Timestamp mit dem Timestamp der von Amazon kommt verglichen. Das was du gepostet hast, ist das Setzen eines Timestamps in der Antwort an den Amazon Alexa Service.
    Wäre interessant zu sehen, wie der Timestamp des JSON requests vor der Fehlermeldung aussah, der von Amazon kam, denn grundsätzlich liefert time() und auch strtotime() einen UNIX Zeitstempel. Dieser sollte immer Die Anzahl der Sekunden seit 01.01.1970 sein. Und genau das wird hier verglichen (strtotime(AMAZON-TimeStamp - time()). Falls jemand noch ein Log mit diesem Fehler hat, dann bitte man den Timestamp posten. Sollte ungefähr so aussehen:

    Code:
    [timestamp] => 2017-08-04T10:37:40Z
    Die unterschiedliche Auflösung im Log liegt vermutlich nur daran, dass bei der Ausgabe das strtotime() vergessen wurde und der requestTimestamp einfach so ausgegeben wurde. Habe das mal korrigiert und auch im positiven Fall das Logging des Timestamps aktiviert. Ist beim nächsten Update dann dabei.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von ThorstenGehrig Beitrag anzeigen
    Dann habe ich eine Frage zum Smarthome Skill - wenn ich es recht sehe geht der "setLockState" im Alexa Smarthome Command Validator.
    Das ist ja eigentlich für Schlösser vorgesehen (die man ja bekanntlich öffnet und schließt)... hat schon jemand damit ausprobiert Garagentüren und Rollladen damit zu steuern? Frei nach dem Motto
    * Alexa öffne/schließe die Garage
    * Alexa öffme/schließe den Rollladen Wohnzimmer
    Bislang waren die Lock Commands nur für U.S., d.h. in englisch verfügbar. In der API wird dies zwar nicht ausdrücklich erwähnt, allerdings habe ich dort auch nicht die deutschen Befehle gefunden. Hast du da irgendwo mehr Infos gesehen?

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hallo,
    erstmal ein "hut ab" für die Leisung hier!
    Und gleich ein feedback: Aufgrund des ersten posts - und dem deutlichem Hinweiß auf den "Custom Skill" ... habe ich erstmal das Smarthome-Skill von Panzaeron (https://knx-user-forum.de/forum/proj...art-home-skill) implementiert - und dachte mir das ich "irgendwann" (=> jetzt) mich zusätzlich um ein Custom Skill kümmere.
    Beim lesen der 32 Seiten sehe ich dann das hier beides gemacht wird... das könntest du vielleicht im ersten post mal aktualisieren. Danke.
    Dann habe ich eine Frage zum Smarthome Skill - wenn ich es recht sehe geht der "setLockState" im Alexa Smarthome Command Validator.
    Das ist ja eigentlich für Schlösser vorgesehen (die man ja bekanntlich öffnet und schließt)... hat schon jemand damit ausprobiert Garagentüren und Rollladen damit zu steuern? Frei nach dem Motto
    * Alexa öffne/schließe die Garage
    * Alexa öffme/schließe den Rollladen Wohnzimmer
    Irgendwelche %-Positionen sind damit zwar nicht anfahrbar - das brauche ich aber bei einer Garage nicht und bei den Rollladen wird die Beschattung von Autokatiken geregelt - also keine Notwendigkeit für manuelle "rollladen auf 60%"...
    Und wenn wir irgendwann mal beim Smarthome skill seheen welcher Dot/Echo angesprochen wurde können wir sogar die Raumbezeihnung sparen: Alexa öffne/schließe den Rollladen.

    Gruß
    Thorsten
    Zuletzt geändert von ThorstenGehrig; 04.08.2017, 09:45.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Grundsätzlich gibt es spezielle Befehle für Szenen in der Smarthome API, die ich allerdings gerade nicht griffbereit habe.
    Einfach mal nach Alexa Smarthome API in Google suchen, dann müsste die API Doku auftauchen und darin stehen die Utterances, die man verwenden muss. Ob das dann direkt funktioniert kann ich allerdings nicht versprechen.

    Einen Kommentar schreiben:


  • juliawf
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Szenen sind m.W. schon implementiert, aber dieses Feature ist nur in U.S. verfügbar und somit noch nicht verfügbar in Germany.
    Ich kann seit dem letzten Update in meine Alexa App die Szenen sehen, allerdings nur die von Philips HUE.
    Kannst du mir evtl. Sagen wie ich diese in Alexa SmartHome LBS aktiviere? In der Hilfe habe ich nichts gefunden.


    IMG_3262.PNGIMG_3261.PNG
    Zuletzt geändert von juliawf; 03.08.2017, 06:30.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Wingfighter : Guter Hinweis mit dem Timestamp und den beiden Funktionen. Da ich die Validierungsfunktion von extern übernommen habe, kann das natürlich der Grund sein. Ich schau mir das mal an, aber der Vorschlag scheint gut zu sein und das Problem hoffentlich zu lösen. Danke schon mal dafür.

    Einen Kommentar schreiben:

Lädt...
X