Firmware state is not reflecting on SmartThings app

Hi SmartThings Community,

We are integrating OTA firmware update support using SmartThings Schema Connector.

We are able to trigger the firmware update command successfully from SmartThings/Postman flow. After OTA completion, we are sending a stateCallback to SmartThings and receiving 204 No Content, but the SmartThings app is still not showing the firmware update success status.

State refresh response before OTA:

{
  "component": "main",
  "capability": "st.firmwareUpdate",
  "attribute": "currentVersion",
  "value": "01.00.01"
},
{
  "component": "main",
  "capability": "st.firmwareUpdate",
  "attribute": "availableVersion",
  "value": "01.00.01"
},
{
  "component": "main",
  "capability": "st.firmwareUpdate",
  "attribute": "updateAvailable",
  "value": true
}

Command request to trigger firmware update:

{
  "headers": {
    "schema": "st-schema",
    "version": "1.0",
    "interactionType": "commandRequest",
    "requestId": "abc-123-456"
  },
  "authentication": {
    "tokenType": "accessToken",
    "token": "<access_token>"
  },
  "devices": [
    {
      "externalDeviceId": "COPD-WF/AQ_202416111E088E1_b90a0f5e9a",
      "deviceCookie": {},
      "commands": [
        {
          "component": "main",
          "capability": "st.firmwareUpdate",
          "command": "update"
        }
      ]
    }
  ]
}

State callback payload sent after OTA success:

{
  "headers": {
    "schema": "st-schema",
    "version": "1.0",
    "interactionType": "stateCallback",
    "requestId": "abc-123-456"
  },
  "authentication": {
    "tokenType": "accessToken",
    "token": "<access_token>"
  },
  "deviceState": [
    {
      "externalDeviceId": "COPD-WF/AQ_202416111E088E1_b90a0f5e9a",
      "deviceCookie": {},
      "states": [
        {
          "component": "main",
          "capability": "st.firmwareUpdate",
          "attribute": "lastUpdateStatus",
          "value": "updateSucceeded"
        }
      ]
    }
  ]
}

The callback API response is:

204 No Content

Questions:

  1. For the Schema Connector firmware update, is lastUpdateStatus = updateSucceeded the correct attribute/value to notify OTA success?

  2. Should we instead send attribute: "state" with a value like updated or updateInProgress?

  3. Do we need to send currentVersion, availableVersion, and updateAvailable: false again in the stateCallback after OTA success?

  4. After receiving 204 No Content, should the SmartThings app automatically update the UI, or is a separate state refresh required?

  5. Is there any specific required format for authentication.tokenType in stateCallback? We are currently using accessToken.

Any guidance or sample payload for OTA success/failure stateCallback for st.firmwareUpdate would be very helpful.

Thanks.

Tagging @nayelyz .

Hi @smartthing_hrdc

Could you please reproduce the issue again and share the timestamps (including your time zone) when it occurs?

Also, could you provide the Viper ID?

Thank you!

Hi @Itati,

Our time zone is IST and Viper ID: viper_8dcb00e0-4aba-11f1-9b08-5f24122a050b

Thank you!

@smartthing_hrdc

Can you enable access to your account, please?

  1. Confirm the email account registered in the forum is the same one you use for SmartThings. If not, please share it with me over DM
  2. Enable support access to your account:
  1. Go to the SmartThings Web (my.smartthings.com)
  2. Log in to your Samsung Account
  3. Select Menu (⋮) and choose Settings
  4. Toggle on Account Data Access
  5. Select the time period and confirm - In this step, please select “Until turned off”, once the team finishes, we’ll let you know so you can disable it again.
    See more information about this access here: https://support.smartthings.com/hc/en-us/articles/36170233944852-Enabling-Account-Data-Access-for-Support

@Itati,
Enabled Account Data Access and email account is same as forum email.
Refer screen shot

Hi,
At the moment, we don’t see any installed Schema integration associated with your account.

Could you please reproduce the issue again, leaving the Schema integration installed? This will allow the team to review it while it’s still available.

Once you’ve reproduced the issue, please let us know so we can continue the investigation.

Thank you!

Hi Itati,

Installed schema integration with name dev and reproduced issue for VIPER ID: viper_8dcb00e0-4aba-11f1-9b08-5f24122a050b and below is the state callback log sending to SmartThings.

Jul 09 06:50:43 dev-vir-0c709cc505988bdd7 notify[22531]: INFO thirdparty_sender.go:58 u1569-10b7 - SmartThings notify name=SmartThings callback uri=https://c2c-ap.smartthings.com/device/events payload={“headers”:{“schema”:“st-schema”,“version”:“1.0”,“interactionType”:“stateCallback”,“requestId”:“979e5be91e5148aa98600b2268d3c166”},“authentication”:{“tokenType”:“Bearer”,“token”:“removed-for-security-purpose”},“deviceState”:[{“externalDeviceId”:“COPD-WF/AQ_21240B111DF7B2B_96b1b0efd8”,“deviceCookie”:{},“states”:[{“component”:“main”,“capability”:“st.healthCheck”,“attribute”:“healthStatus”,“value”:“online”},{“component”:“main”,“capability”:“st.carbonMonoxideDetector”,“attribute”:“carbonMonoxide”,“value”:“clear”},{“component”:“main”,“capability”:“st.batteryLevel”,“attribute”:“battery”,“value”:“normal”},{“component”:“main”,“capability”:“st.airQualityHealthConcern”,“attribute”:“airQualityHealthConcern”,“value”:“good”},{“component”:“main”,“capability”:“st.temperatureMeasurement”,“attribute”:“temperature”,“value”:23.7,“unit”:“C”},{“component”:“main”,“capability”:“st.relativeHumidityMeasurement”,“attribute”:“humidity”,“value”:49.3,“unit”:“%”},{“component”:“main”,“capability”:“st.tvocMeasurement”,“attribute”:“tvocLevel”,“value”:5,“unit”:“ppb”},{“component”:“main”,“capability”:“st.firmwareUpdate”,“attribute”:“state”,“value”:“normalOperation”},{“component”:“main”,“capability”:“st.firmwareUpdate”,“attribute”:“lastUpdateStatus”,“value”:“updateSucceeded”}]}]} headers=map[Content-Type:application/json]

Thank you!