Error when updating the same state in SmartThings Schema Connector

I am currently using the SmartThings Schema Connector to integrate my device with SmartThings. However, I am encountering an issue where an error is returned on ST App (It takes time and ST app shows “network or server got error. Try later” ) when attempting to update the device state to the same value. Below are the details of the issue and related logs.

1. Issue Description

  • I am handling the setActionMode command to update the actionMode state of my device.

  • When the state changes (e.g., StopMove), everything works as expected.

  • However, when the state remains the same (e.g., MoveMove), SmartThings returns an error.

2. Logs

  • Stop→Move OK
  • REQUEST {
    “headers”: {
    “schema”: “st-schema”,
    “version”: “1.0”,
    “interactionType”: “commandRequest”,
    “requestId”: “892a886b-060b-4b56-9f22-61af94ad5c08”
    },
    “authentication”: {
    “tokenType”: “Bearer”,
    “token”: “Smartthings_RB230415:$fsADJH”
    },
    “devices”: [
    {
    “externalDeviceId”: “external-device-1”,
    “deviceCookie”: {},
    “commands”: [
    {
    “component”: “main”,
    “capability”: “bigwaveroboticsdev.action”,
    “command”: “setActionMode”,
    “arguments”: [
    “Move”
    ]
    }
    ]
    }
    ]
    }
    Command handler called with accessToken: Smartthings_RB230415:$fsADJH
    setActionMode command received
    Current actionMode: Stop
    Requested actionMode: Move
    RESPONSE {
    “headers”: {
    “schema”: “st-schema”,
    “version”: “1.0”,
    “interactionType”: “commandResponse”,
    “requestId”: “892a886b-060b-4b56-9f22-61af94ad5c08”
    },
    “deviceState”: [
    {
    “externalDeviceId”: “external-device-1”,
    “states”: [
    {
    “component”: “main”,
    “capability”: “bigwaveroboticsdev.action”,
    “attribute”: “actionMode”,
    “value”: “Move”
    }
    ]
    }
    ]
    }
  • Move → Move
  • REQUEST {
    “headers”: {
    “schema”: “st-schema”,
    “version”: “1.0”,
    “interactionType”: “commandRequest”,
    “requestId”: “ce177989-b05b-4021-a43d-ed787eaf0f0e”
    },
    “authentication”: {
    “tokenType”: “Bearer”,
    “token”: “Smartthings_RB230415:$fsADJH”
    },
    “devices”: [
    {
    “externalDeviceId”: “external-device-1”,
    “deviceCookie”: {},
    “commands”: [
    {
    “component”: “main”,
    “capability”: “bigwaveroboticsdev.action”,
    “command”: “setActionMode”,
    “arguments”: [
    “Move”
    ]
    }
    ]
    }
    ]
    }
    Command handler called with accessToken: Smartthings_RB230415:$fsADJH
    setActionMode command received
    Current actionMode: Move
    Requested actionMode: Move
    RESPONSE {
    “headers”: {
    “schema”: “st-schema”,
    “version”: “1.0”,
    “interactionType”: “commandResponse”,
    “requestId”: “ce177989-b05b-4021-a43d-ed787eaf0f0e”
    },
    “deviceState”: [
    {
    “externalDeviceId”: “external-device-1”,
    “states”: [
    {
    “component”: “main”,
    “capability”: “bigwaveroboticsdev.action”,
    “attribute”: “actionMode”,
    “value”: “Move”
    }
    ]
    }
    ]
    }

4. Questions

  • Why does SmartThings return an error when the state remains the same and is returned in the response?

It looks like a similar sympton
state_change = true of edge driver.

But it’s C2C case. it seems related topic.
Interaction Types | Developer Documentation | SmartThings

  • stateChange: Optional; a value of Y forces the event to be considered a change, which will trigger automations and be displayed in the event history. If stateChange is not specified, the SmartThings platform generally determines whether a change has occurred by comparing the new deviceState value to the previous value.

I was wondering about stateChange too but was hoping someone with experience of Schema apps would be able to respond and then the thread got buried.

That message in the mobile app has been irritating users for years because of how ridiculously vague it is. If the API returns an error there is always an error code and message and the app knows what it was trying to do so why not tell us, or at least give us the option of knowing?

In this case the SmartThings backend seems perfectly happy with things so I think the error is created by the mobile app’s expectations not being met. For example, if your capability has defined setActionMode as the setter for the actionMode attribute (I haven’t looked) then calling setActionMode with Move as the argument should result in the actionMode being set to Move. It does but the app might be expecting to receive an actual event saying so and complaining when one doesn’t turn up. If that is the case you might reasonably wonder why it just doesn’t say so.

It may be that actually you don’t want e.g. Move to Move to generate an event. In which case maybe you don’t need a setter in the capability (if you have one) and the app then won’t know to expect anything. Possibly.

Let’s tag @nayelyz as she understands Schema while I just find them strangely alien.

@ST-PRO-KR1

Hi, thanks for the report.
Our engineering team reviewed the logs but they did not find a failure matching the specific request you mentioned.

However, they did find other requests failing due to an empty device state, which seems unrelated.

To help them investigate further, could you please do the following:

  • Try to reproduce the issue
  • Provide either a screen recording, or
  • Share the exact timestamp (with timezone) and, if possible, the request ID of the failed request

This additional information would be very helpful for troubleshooting.

Is there a reason that Adding “state_change = true” is needed?

In my opinion, It should be default.