question

ImagineOn avatar image
ImagineOn asked

How to solve "device is unresponsive" when using Alexa Event Gateway?

Hey people, first of all thanks in advance for the help!

I am currently developing a smart home skill for alexa and running into the problem that the device appears unresponsive in the alexa app aswell for the echo device. I am able to set device properties but the response is always that the device is unresponsive.

I tried to use the Validation Schemas Repository however the schema.json does not look to support e.g. a "AddOrUpdate" response yet.

Some key things to note very briefly before I add the messages that are send across the network:

  1. I applied most of the best practices mentioned here
  2. I make great use of the event gateway. For all the request the event gateway returns status 202

Currently I am quite stuck so every help is appreciated. I do not know where this error occures.

Now for some messages:
Discovery Request

{
  "directive": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover",
      "payloadVersion": "3",
      "messageId": "8a2ecfe8-97d3-4e5a-a697-aac199a845b7"
    },
    "payload": {
      "scope": {
        "type": "BearerToken",
        "token": "..."
      }
    }
  }
}

Discovery Response
(Sent async, basically a power-, mode-, speed-controller)

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "AddOrUpdateReport",
      "payloadVersion": "3",
      "messageId": "8a2ecfe8-97d3-4e5a-a697-aac199a845b7",
      "correlationToken": "24d33011-343a-4ccc-a0b1-ae73f12a9c4d"
    },
    "payload": {
      "scope": {
        "type": "BearerToken",
        "token": "..."
      },
      "endpoints": [
        {
          "endpointId": "84fd2782a19a",
          "manufacturerName": "REMOVED",
          "description": "Purifier",
          "friendlyName": "OLX3",
          "additionalAttributes": {
            "manufacturer": "REMOVED",
            "model": "SmallPurifier",
            "serialNumber": "84fd2782a19a",
            "firmwareVersion": "1.2.2",
            "softwareVersion": "256"
          },
          "displayCategories": [
            "AIR_PURIFIER"
          ],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "powerState"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.RangeController",
              "version": "3",
              "instance": "Purifier.Speed",
              "properties": {
                "supported": [
                  {
                    "name": "rangeValue"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true
              },
              "configuration": {
                "supportedRange": {
                  "minimumValue": 0,
                  "maximumValue": 100,
                  "precision": 1
                },
                "presets": [
                  {
                    "rangeValue": 100,
                    "presetResources": {
                      "friendlyNames": [
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Value.Maximum"
                          }
                        },
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Value.High"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "rangeValue": 50,
                    "presetResources": {
                      "friendlyNames": [
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Value.Medium"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "rangeValue": 5,
                    "presetResources": {
                      "friendlyNames": [
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Value.Minimum"
                          }
                        },
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Value.Low"
                          }
                        }
                      ]
                    }
                  }
                ]
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "asset",
                    "value": {
                      "assetId": "Alexa.Setting.FanSpeed"
                    }
                  },
                  {
                    "@type": "text",
                    "value": {
                      "text": "Speed",
                      "locale": "en-US"
                    }
                  },
                  {
                    "@type": "text",
                    "value": {
                      "text": "Geschwindigkeit",
                      "locale": "de-DE"
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ModeController",
              "instance": "Purifier.Mode",
              "version": 3,
              "properties": {
                "supported": [
                  {
                    "name": "mode"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true
              },
              "configuration": {
                "ordered": false,
                "supportedModes": [
                  {
                    "value": "Purifier.Auto",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Auto",
                            "locale": "de-DE"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "Automatisch",
                            "locale": "de-DE"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "auto",
                            "locale": "en-US"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "automatic",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "Purifier.Night",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Setting.Night"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "Purifier.Boost",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Boost",
                            "locale": "de-DE"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "Boost",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "Purifier.Manual",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Manuell",
                            "locale": "de-DE"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "Manual",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  }
                ]
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "asset",
                    "value": {
                      "assetId": "Alexa.Setting.Mode"
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            }
          ]
        }
      ]
    }
  }
}

State Report Request,

{
  "directive": {
    "header": {
      "namespace": "Alexa",
      "name": "ReportState",
      "payloadVersion": "3",
      "messageId": "546142c4-fdcd-4b2d-bb0f-ce1eb34db41c",
      "correlationToken": "..."
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "..."
      },
      "endpointId": "84fd2782a19a",
      "cookie": {}
    },
    "payload": {}
  }
}

State Report Response

{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "StateReport",
      "payloadVersion": "3",
      "messageId": "546142c4-fdcd-4b2d-bb0f-ce1eb34db41c",
      "correlationToken": "..."
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "..."
      },
      "endpointId": "84fd2782a19a"
    },
    "payload": {}
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.ModeController",
        "instance": "Purifier.Mode",
        "name": "mode",
        "value": "Purifier.Auto",
        "timeOfSample": "2021-11-15T20:27:37.361Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.RangeController",
        "instance": "Purifier.Speed",
        "name": "rangeValue",
        "value": 0,
        "timeOfSample": "2021-11-15T20:27:37.362Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.PowerController",
        "name": "powerState",
        "value": "ON",
        "timeOfSample": "2021-11-15T20:27:37.362Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.EndpointHealth",
        "name": "connectivity",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2021-11-15T20:27:37.362Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}


Since the device is already unresponsive even when opening the app or interacting with the user interface I assume the problem resides in either the lambda function or in one of the two responses mentioned above. I also implemented the ChangeReport message. However, I think it is not the root of the problem. I will happily provide if need be.

Thanks in advance

alexa smart homeamazon device messagingproactive events
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

Jason@Amazon avatar image
Jason@Amazon answered

I can confirm that asynchronous StateReport responses won't work on updating the state right now - our team is aware of this but essentially this is not supported at this time. You will need to respond to the synchronously to the ReportState directive.

If you are returning a synchronous response, check out the following blog for troubleshooting tips:

https://developer.amazon.com/en-US/blogs/alexa/device-makers/2020/12/common-issues-in-alexa-smart-home-skills-and-how-to-troubleshoot-them

1 comment
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

After resolving some other issues along the way, is it possible that directives (e.g namespace Alexa.ModeController ) also need to be answered synchronously? I get the same message (device is unresponsive) as before while all properties are changed on the device and the mode is correclty set. After a report state request the "device is unresponsive" message disappears. I currently answer directives async.

Thought I would ask real quick since on the first glance this looks closely related before I start debugging.

Help appreciated

Edit: Problem solved, was on my end

0 Likes 0 ·