Ankündigung

Einklappen
Keine Ankündigung bisher.

Umfrage: Amazon Echo

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

  • patrickgoll
    antwortet
    Wenn ich vergleiche, was mir die AWS auf den Discover liefert:

    Code:
     {   
    "payload": {     
        "discoveredAppliances": [       
        {         
            "friendlyName": "Wohnzimmer Ofen",         
            "manufacturerName": "smarthomeNG.alexa",         
            "version": "1.0.0",         
            "actions": [           
                "turnOn",           
                "turnOff"         
            ],         
            "additionalApplianceDetails": {           
                "item1": "EG.Wohnzimmer.SpotsOfen.Schalten"         
            },         
            "isReachable": true,         
            "friendlyDescription": "",         
            "applianceId": "wohnzimmer-ofen",         
            "modelName": "smarthomeNG.alexa-device"       
        }     
      ]   
     },   
        "header": {     
            "name": "DiscoverAppliancesResponse",     
            "namespace": "Alexa.ConnectedHome.Discovery",     
            "payloadVersion": "2",     
            "messageId": "e6f5713dbf564ee49ec3ee06bb87d842"   
        } 
    }
    und was ich laut example in der Skill API Reference erwarten würde:
    Code:
    {
    "header": {
        "messageId": "e6f5713dbf564ee49ec3ee06bb87d842"
        "name": "DiscoverAppliancesResponse",
        "namespace": "Alexa.ConnectedHome.Discovery",
        "payloadVersion": "2",    
      },
      "payload": {
        "discoveredAppliances": [
          {
            "actions": [
              "turnOn",
              "turnOff"
            ],
            "additionalApplianceDetails": {
              "item1": "EG.Wohnzimmer.SpotsOfen.Schalten"
            },
            "applianceId": "wohnzimmer-ofen",
            "friendlyDescription": "",
            "friendlyName": "Wohnzimmer Ofen",
            "manufacturerName": "smarthomeNG.alexa",
            "modelName": "smarthomeNG.alexa-device"
            "version": "1.0.0",       
            "isReachable": true,
          }
        ]
      }  
    }
    Ist es denkbar, dass deine Response das falsche format hat? Spielt die Reihenfolge eine Rolle?
    Zuletzt geändert von patrickgoll; 29.11.2016, 14:28.

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Also die Funktion passt wohl, denke ich. Die Frage ist warum findet und schaltet der Dot keine Devices? Stimmt das Format, was da zurückkommt?

    Code:
    DiscoverAppliancesResponse example:
        {
        "header": {
            "messageId": "ff746d98-ab02-4c9e-9d0d-b44711658414",
            "name": "DiscoverAppliancesResponse",
            "namespace": "Alexa.ConnectedHome.Discovery",
            "payloadVersion": "2"
        },
        "payload": {
            "discoveredAppliances": [
                {
                    "actions": [
                        "incrementTargetTemperature",
                        "decrementTargetTemperature",
                        "setTargetTemperature"
                    ],
                    "additionalApplianceDetails": {
                        "extraDetail1": "optionalDetailForSkillAdapterToReferenceThisDevice",
                        "extraDetail2": "There can be multiple entries",
                        "extraDetail3": "but they should only be used for reference purposes.",
                        "extraDetail4": "This is not a suitable place to maintain current device state"
                    },
                    "applianceId": "uniqueThermostatDeviceId",
                    "friendlyDescription": "descriptionThatIsShownToCustomer",
                    "friendlyName": " Bedroom Thermostat",
                    "isReachable": true,
                    "manufacturerName": "yourManufacturerName",
                    "modelName": "fancyThermostat",
                    "version": "your software version number here."
                },
                {
                    "actions": [
                        "incrementPercentage",
                        "decrementPercentage",
                        "setPercentage",
                        "turnOn",
                        "turnOff"
                    ],
                    "additionalApplianceDetails": {},
                    "applianceId": "uniqueLightDeviceId",
                    "friendlyDescription": "descriptionThatIsShownToCustomer",
                    "friendlyName": "Living Room",
                    "isReachable": true,
                    "manufacturerName": "yourManufacturerName",
                    "modelName": "fancyLight",
                    "version": "your software version number here."
                }
            ]
        }
    }

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Obwohl ich noch keine Devices habe (zumindest Alexa findet keine) kann die AWS Funktion auf folgendes Evennt:

    Code:
    {
      "header": {
        "namespace": "Alexa.ConnectedHome.Control",
        "name": "TurnOffRequest",
        "payloadVersion": "2",
        "messageId": "81c27978-cc0c-4ae8-b1bc-09510c597a60"
      },
      "payload": {
        "accessToken": "123123",
        "appliance": {
          "applianceId": "wohnzimmer-ofen",
          "additionalApplianceDetails": {}
        }
      }
    }
    Die Lampe Schalten:

    Code:
     
     {   "payload": {},   "header": {     "name": "TurnOffConfirmation",     "namespace": "Alexa.ConnectedHome.Control",     "payloadVersion": "2",     "messageId": "cae35df190ad4fc3ad9ac055a236bc92"   } }
    Code:
    2016-11-29  14:14:21 DEBUG    CP Server Thread-17 Alexa: control-directive 'TurnOffRequest' received
    2016-11-29  14:14:21 DEBUG    CP Server Thread-17 Alexa: turnOff(EG.Wohnzimmer.SpotsOfen.Schalten)
    2016-11-29  14:14:21 INFO     CP Server Thread-17 192.168.1.1 - - [29/Nov/2016:14:14:21] "POST / HTTP/1.1" 200 174 "" ""
    Debug Log hab ich nun auch hinbekommen.

    Also ich kann auf jeden Fall sagen das der AccesToken egal ist. Wie funktioniert das genau mit dem AccessToken? In dem Testevent gebe ich den ja vor. Was nimmt denn der Dot wenn er es versucht?

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Okay mein ARN ist gleich geblieben. Der Deauth und neue OAuth hat leider auch nichts geholfen. Die Funktion im AWS erkennt das weiterhin und der Dot nicht. Was auch nicht richtig funktioniert ist der DEBUG Logger. Wenn ich das unter /etc/logging.yaml eintrage wie in deiner README.md dann startet smarthome nicht mehr.

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    die ARN enthaelt manchmal die version als suffix mit doppeltpunkt, bei mir :2

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Zitat von hotzen Beitrag anzeigen
    hast du die aktuelle version der funktion aktiviert und den aktuellen ARN in deinen skill übernommen?
    Der ARN ändert sich nicht. Die Funktion kann einfach entwickelt und gespeichert werden.
    Also sollte die Funktion aktuell sein. Kann höchstens den Skill einmal rauswerfen und das OAuth nochmal machen. Glaube aber nicht dass das was hilft.

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    @junibart hab das mal mit dem bestellungen ersetzen durch warenkorb-artikel durchgekaspert aber das scheint (auch lt. forum) gefixt zu sein. es wird nur noch geschenkgutschein und ersetattun angeboten... bin so 20 artikel durchgeklickt

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    hast du die aktuelle version der funktion aktiviert und den aktuellen ARN in deinen skill übernommen?

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Zitat von hotzen Beitrag anzeigen
    hast du eigentlich per alexa.amazon.de deinen alexa home skill freischalten muessen?
    Ja musste ich. Ich habe als OAuth Provider Amazon genutzt, so wie in der Anleitung angegeben.

    Ich mache nun einen Discover über alexa.amazon.com und sehe im smarthome.log:

    Code:
    2016-11-29  13:34:40 INFO     CP Server Thread-10 192.168.1.1 - - [29/Nov/2016:13:34:40] "POST / HTTP/1.1" 200 539 "" ""
    2016-11-29  13:34:41 INFO     CP Server Thread-11 192.168.1.1 - - [29/Nov/2016:13:34:41] "POST / HTTP/1.1" 200 539 "" ""
    2016-11-29  13:34:41 INFO     CP Server Thread-12 192.168.1.1 - - [29/Nov/2016:13:34:41] "POST / HTTP/1.1" 200 539 "" ""
    2016-11-29  13:34:41 INFO     CP Server Thread-13 192.168.1.1 - - [29/Nov/2016:13:34:41] "POST / HTTP/1.1" 200 539 "" ""
    2016-11-29  13:34:42 INFO     CP Server Thread-14 192.168.1.1 - - [29/Nov/2016:13:34:42] "POST / HTTP/1.1" 200 539 "" ""
    2016-11-29  13:34:42 INFO     CP Server Thread-15 192.168.1.1 - - [29/Nov/2016:13:34:42] "POST / HTTP/1.1" 200 539 "" ""
    Allerdings listet alexa danach keine devices.

    Die AWS Console meldet auf den Dicovery Testevent folgendes:

    Code:
     
     {   "payload": {     "discoveredAppliances": [       {         "manufacturerName": "smarthomeNG.alexa",         "additionalApplianceDetails": {           "item1": "EG.Wohnzimmer.SpotsOfen.Schalten"         },         "modelName": "smarthomeNG.alexa-device",         "isReachable": true,         "applianceId": "wohnzimmer-ofen",         "version": "1.0.0",         "actions": [           "turnOff",           "turnOn"         ],         "friendlyDescription": "",         "friendlyName": "Wohnzimmer Ofen"       }     ]   },   "header": {     "name": "DiscoverAppliancesResponse",     "namespace": "Alexa.ConnectedHome.Discovery",     "payloadVersion": "2",     "messageId": "55802cbf079b4b8582ce44093e9f3fbc"   } }
    Warum findet die Funktion ein Gerät aber Alexa dann nicht, die ja nur die Funktion verwendet?

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    logging s. readme ganz unten: https://github.com/hotzen/smarthome/.../plugins/alexa

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    hast du eigentlich per alexa.amazon.de deinen alexa home skill freischalten muessen?

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Zitat von hotzen Beitrag anzeigen
    ja, das ist dieser bescheidene cherrypy automatismus. schau mal in meine aws_lambda.js, da poste ich die payload an den parameter json. der wird leider von cherrypy so erwartet.

    ansonsten mach mal ein pull, da waren noch ein dutzend bugs drin
    Also das bekomme ich aktuell im smarthome.log, wenn ich bei alexa.amazon.com meinen verknüpften Skill Devices suchen lasse

    Code:
    2016-11-29  13:25:16 INFO     CP Server Thread-14 192.168.1.1 - - [29/Nov/2016:13:25:16] "POST / HTTP/1.1" 400 2320 "" ""
    2016-11-29  13:25:16 INFO     CP Server Thread-15 192.168.1.1 - - [29/Nov/2016:13:25:16] "POST / HTTP/1.1" 400 2320 "" ""
    2016-11-29  13:25:17 INFO     CP Server Thread-16 192.168.1.1 - - [29/Nov/2016:13:25:17] "POST / HTTP/1.1" 400 2320 "" ""
    2016-11-29  13:25:17 INFO     CP Server Thread-17 192.168.1.1 - - [29/Nov/2016:13:25:17] "POST / HTTP/1.1" 400 2320 "" ""
    2016-11-29  13:25:17 INFO     CP Server Thread-18 192.168.1.1 - - [29/Nov/2016:13:25:17] "POST / HTTP/1.1" 400 2320 "" ""
    2016-11-29  13:25:18 INFO     CP Server Thread-9 192.168.1.1 - - [29/Nov/2016:13:25:18] "POST / HTTP/1.1" 400 2320 "" ""
    und das gleiche kommt, wenn ich die lambda mit folgendem Test Event

    Code:
    {
      "header": {
        "namespace": "Alexa.ConnectedHome.Discovery",
        "name": "DiscoverAppliancesRequest",
        "payloadVersion": "2",
        "messageId": "06c4efaf-da9b-4deb-8561-54412400382c"
      },
      "payload": {
        "accessToken": "123123"
      }
    }
    testen lasse.

    Wie drehe ich denn das Logging hoch?

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    ich hab aws_lambda nochmal gepushed, da waren doch noch einige fehler drin... das mit dem json= war quatsch.
    http 500 heisst das plugin ist hart verreckt, http 400 heisst das alexa plugin hat explizit wegen eines erkannten fehlers eine 400 bad request exception geschmissen.

    Einen Kommentar schreiben:


  • junibart
    antwortet
    Zitat von hotzen Beitrag anzeigen
    das hier meine ich in der aws_lambda.js:
    ich hab nur keine moeglichkeit das zu aendern. lt amazon support braucht man dafuer einen echo oder echo dot und ich hab noch keinen
    Mittlerweile muss man icht mehr wirklich auf die Einladung warten, es sei denn, man möchte unbedingt den großen Echo mit dem Prime-Rabatt haben, den es für Vorbestellungen zwischen dem 14. und 16. September gab.

    Der erste Weg ist die Teilnahme an einer Sammelbestellung aus UK, da gibt es ein paar nette Leute, bei denen man einen echo dot für 65€ plus Versand innerhalb Deutschlands bekommt- das ist nur wenig mehr, als bei amazon direkt. OK, ein USB-Steckernetzteil mit deutschem Stecker braucht man noch.

    Oder ein anderer Trick, der wohl funktionieren soll: Amazon Browser-Erweiterung installieren, mit der man beliebige Produkte auf einer Browser-Seite auf den Amazon-Wunschzettel setzen kann. Dann vom Wunschzettel in den Einkaufswagen übertragen (soll gehen). Dann alle Produkte, die man in der letzten Zeit gekauft hat, durchprüfen, ob nach Anstoßen einer Rückgabe "ohne Grund" ein Austausch gegen Artikel aus dem Warenkorb angeboten wird (klappt nicht immer). Wenn das angeboten wird, Echo (dot) auswählen und Vorgang abschließen.

    Zu beiden Vorgehensweisen gibts jede Menge Infos im Thread "Amazon Echo Einladung" des Amazon Kundenforums.

    Ich kann verstehen, dass Amazon die Teile noch nicht in großem Stil rausrückt. Es hakt noch an allen Ecken und Enden, weniger Technikaffine Menschen würden das Teil bald verreissen. Alexa weiß nicht, wo ich wohne, liest Doppelpunkte vor, und erzählt mir, dass Weihnachten am 25. Dezember ist. Aber sie wird immerhin nicht müde, drei Kindern geduldig eine Viertelstunde lang gute Nacht und süße Träume zu wünschen. Ich hab noch Hoffnung.

    Grüße,
    Gunnar.

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Code:
    2016-11-29  13:09:53 INFO     alexa        [29/Nov/2016:13:09:53] ENGINE Monitor thread '_TimeoutMonitor' already started.
    2016-11-29  13:09:53 ERROR    Dummy-25     Unhandled exception: <WorkerThread(CP Server CP Server Thread-10, started 140205128300288)>
    <class 'KeyError'>
      File "/usr/lib/python3.4/threading.py", line 888, in _bootstrap
        self._bootstrap_inner()
      File "/usr/lib/python3.4/threading.py", line 912, in _bootstrap_inner
        del _limbo[self]
    
    2016-11-29  13:09:53 ERROR    Dummy-26     Unhandled exception: <WorkerThread(CP Server CP Server Thread-9, started 140205136692992)>
    <class 'KeyError'>
      File "/usr/lib/python3.4/threading.py", line 888, in _bootstrap
        self._bootstrap_inner()
      File "/usr/lib/python3.4/threading.py", line 912, in _bootstrap_inner
        del _limbo[self]
    
    2016-11-29  13:09:53 ERROR    Dummy-27     Unhandled exception: <WorkerThread(CP Server CP Server Thread-11, started 140205038233344)>
    <class 'KeyError'>
      File "/usr/lib/python3.4/threading.py", line 888, in _bootstrap
        self._bootstrap_inner()
      File "/usr/lib/python3.4/threading.py", line 912, in _bootstrap_inner
        del _limbo[self]
    
    2016-11-29  13:09:53 ERROR    Dummy-28     Unhandled exception: <WorkerThread(CP Server CP Server Thread-12, started 140205136692992)>
    <class 'KeyError'>
      File "/usr/lib/python3.4/threading.py", line 888, in _bootstrap
        self._bootstrap_inner()
      File "/usr/lib/python3.4/threading.py", line 912, in _bootstrap_inner
        del _limbo[self]
    
    2016-11-29  13:09:53 ERROR    Dummy-29     Unhandled exception: <WorkerThread(CP Server CP Server Thread-13, started 140205038233344)>
    <class 'KeyError'>
      File "/usr/lib/python3.4/threading.py", line 888, in _bootstrap
        self._bootstrap_inner()
      File "/usr/lib/python3.4/threading.py", line 912, in _bootstrap_inner
        del _limbo[self]
    
    2016-11-29  13:09:53 ERROR    Dummy-30     Unhandled exception: <WorkerThread(CP Server CP Server Thread-14, started 140205136692992)>
    <class 'KeyError'>
      File "/usr/lib/python3.4/threading.py", line 888, in _bootstrap
        self._bootstrap_inner()
    Dein Code schmeißt außerdem einen Fehler, wenn man das Backend Plugin aktiv hat. Hab das grad getestet. Wenn man das Backend deaktiviert klappt alles.
    Dann ist auch der Fehler auf der aws Konsole nicht 500, sondern 400. Was den Unterschied macht, keine Ahnung.

    Einen Kommentar schreiben:

Lädt...
X