question

kushalc avatar image
kushalc asked

Mode Controller not working

I am getting "I don't know how to set Light to that Setting." while setting the scene/mode using message "set light scene to normal". Discovery is working well and I can even see the modes "normal" and "presentation" on alexa app for "light" device. When I click normal on alexa app, it does call the lambda function with proper request. But not working through voice request on echo. Power on/off is working from everywhere. Can someone help with mode controller.


Here is the payload json from discovery response.

{
            "endpoints":
            [
                {
                    "endpointId": "light",
                    "manufacturerName": "Test",
                    "friendlyName": "Light",
                    "description": "Test Light Zone",
                    "displayCategories": ["LIGHT"],
                    "cookie":{},
                    "capabilities":
                    [
                        {
                          "type": "AlexaInterface",
                          "interface": "Alexa",
                          "version": "3"
                        },
                        {
                            "interface": "Alexa.PowerController",
                            "version": "3",
                            "type": "AlexaInterface",
                            "properties": {
                                "supported": [{
                                    "name": "powerState"
                                }],
                                 "retrievable": true
                            }
                        },
                        {
                            "type": "AlexaInterface",
                            "interface": "Alexa.ModeController",
                            "instance": "Light.SceneMode",
                            "version": "3",
                            "properties": {
                                "supported": [
                                  {
                                    "name": "mode"
                                  }
                                ],
                                "retrievable": true,
                                "proactivelyReported": true,
                                "nonControllable": false
                            },
                            "capabilityResources": {
                                "friendlyNames": [
                                  {
                                    "@type": "text",
                                    "value": {
                                      "text": "scene",
                                      "locale": "en-US"
                                    }
                                  },
                                  {
                                    "@type": "text",
                                    "value": {
                                      "text": "mode",
                                      "locale": "en-US"
                                    }
                                  }
                                ]
                            },
                            "configuration": {
                                "ordered": false,
                                "supportedModes": [
                                      {
                                        "value": "SceneMode.Normal",
                                        "modeResources": {
                                          "friendlyNames": [
                                            {
                                              "@type": "text",
                                              "value": {
                                                "text": "normal",
                                                "locale": "en-US"
                                              }
                                            },
                                            {
                                              "@type": "text",
                                              "value": {
                                                "text": "regular",
                                                "locale": "en-US"
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "value": "SceneMode.Presentation",
                                        "modeResources": {
                                          "friendlyNames": [
                                            {
                                              "@type": "text",
                                              "value": {
                                                "text": "presentation",
                                                "locale": "en-US"
                                              }
                                            },
                                            {
                                              "@type": "text",
                                              "value": {
                                                "text": "projector",
                                                "locale": "en-US"
                                              }
                                            }
                                          ]
                                        }
                                      }
                                ]
                            }
                        }
                    ]
                }
            ]
        };
alexa smart home
3 comments
10 |5000

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

Any inputs?

0 Likes 0 ·

Any inputs?

0 Likes 0 ·

Still stuck with no idea how to solve this?

0 Likes 0 ·
kushalc avatar image
kushalc answered

I figured out the issue. It was locale. My setup was for en-IN and I used en-US as part of discovery response. Changing it to en-IN resolved the issue for me.

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.

Thank you. Yes it was the language locale settings for me too. I changed from en-UK to en-GB and things started working for me

0 Likes 0 ·
kushalc avatar image
kushalc answered

Still stuck with no idea how to solve this?

10 |5000

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

KirkC@Amazon avatar image
KirkC@Amazon answered

Hi. I only see a few minor issues:

  • The JSON posted ends with a semi-colon, which is odd and invalid JSON.
  • The JSON posted is missing the entire "event" object.
  • The JSON posted is missing the "payload" object which encapsulates the "endpoints" array.

After making these changes, I was able to use your JSON to successfully discover the light. Please see the following full Discover.Response JSON that my test skill generated.


{
   "event": {
      "header": {
         "namespace": "Alexa.Discovery",
         "name": "Discover.Response",
         "payloadVersion": "3",
         "messageId": "0d17ccb1-de66-494c-807d-4f2b56634ffd"
      },
      "payload": {
         "endpoints": [
            {
               "endpointId": "light",
               "manufacturerName": "Test",
               "friendlyName": "Forum Light",
               "description": "Test Light Zone",
               "displayCategories": [
                  "LIGHT"
               ],
               "cookie": {},
               "capabilities": [
                  {
                     "type": "AlexaInterface",
                     "interface": "Alexa",
                     "version": "3"
                  },
                  {
                     "interface": "Alexa.PowerController",
                     "version": "3",
                     "type": "AlexaInterface",
                     "properties": {
                        "supported": [
                           {
                              "name": "powerState"
                           }
                        ],
                        "retrievable": true
                     }
                  },
                  {
                     "type": "AlexaInterface",
                     "interface": "Alexa.ModeController",
                     "instance": "Light.SceneMode",
                     "version": "3",
                     "properties": {
                        "supported": [
                           {
                              "name": "mode"
                           }
                        ],
                        "retrievable": true,
                        "proactivelyReported": true,
                        "nonControllable": false
                     },
                     "capabilityResources": {
                        "friendlyNames": [
                           {
                              "@type": "text",
                              "value": {
                                 "text": "scene",
                                 "locale": "en-US"
                              }
                           },
                           {
                              "@type": "text",
                              "value": {
                                 "text": "mode",
                                 "locale": "en-US"
                              }
                           }
                        ]
                     },
                     "configuration": {
                        "ordered": false,
                        "supportedModes": [
                           {
                              "value": "SceneMode.Normal",
                              "modeResources": {
                                 "friendlyNames": [
                                    {
                                       "@type": "text",
                                       "value": {
                                          "text": "normal",
                                          "locale": "en-US"
                                       }
                                    },
                                    {
                                       "@type": "text",
                                       "value": {
                                          "text": "regular",
                                          "locale": "en-US"
                                       }
                                    }
                                 ]
                              }
                           },
                           {
                              "value": "SceneMode.Presentation",
                              "modeResources": {
                                 "friendlyNames": [
                                    {
                                       "@type": "text",
                                       "value": {
                                          "text": "presentation",
                                          "locale": "en-US"
                                       }
                                    },
                                    {
                                       "@type": "text",
                                       "value": {
                                          "text": "projector",
                                          "locale": "en-US"
                                       }
                                    }
                                 ]
                              }
                           }
                        ]
                     }
                  }
               ]
            }
         ]
      }
   }
}


Note, I did change the "friendlyName" to "Forum Light" just to make it easier for me to differentiate this light from others.

2 comments
10 |5000

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

Problem is not with the discovery. It discovers for me. It's when I try to control the mode for that light.

I am getting "I don't know how to set Light to that Setting." while setting the scene/mode using message "set light scene to normal".


0 Likes 0 ·

When interacting with modes on a particular device, the utterance must follow one of two formats:

  • Alexa, set the "mode_name" on the "device_name" to "supported_mode_value"
  • Alexa, set the "mode_name" to "supported_mode_value"

Note, in that second interaction, Alexa may need to ask you to clarify what device you're referring to.


Using the Discover.Response JSON posted above, I received the following directives for the following utterances:

Utterance: Alexa, set the 'scene' on the 'forum light' to 'normal'

{
    "directive": {
        "header": {
            "namespace": "Alexa.ModeController",
            "name": "SetMode",
            "payloadVersion": "3",
            "instance": "Light.SceneMode",
            "messageId": "11a44bcb-2de7-4f30-9045-c6a10c5f9fb3",
            "correlationToken": "token-redacted"
        },
        "endpoint": {
            "scope": {
                "type": "BearerToken",
                "token": "token-redacted"
            },
            "endpointId": "light",
            "cookie": {}
        },
        "payload": {
            "mode": "SceneMode.Normal"
        }
    }
}


To summarize, I don't think there was anything wrong with the device's discover response either, it just looks like the utterance that you're attempting, "Alexa, set light scene to normal" does not follow a supported utterance format. If you instead say "Alexa, set the scene on the light to normal" I suspect your back-end will receive the expected directive.

0 Likes 0 ·