An SDK upgrade exposed a dashboard parsing problem (diagnostic status retrieval)

OmarBaker0491 · 31 Aug 2026, 10:41 UTC

Reply to discussion
OM
OmarBaker0491
Our dashboard for diagnostic status retrieval on Universal Robots UR5e expected a status value from the old SDK. The replacement environment returns a container with extra information, and our screen now shows a plausible status even when a request fails. This is in a training cell with a read-only dashboard, with an inspection coupon as a reference. I'm trying to fix how we interpret the answer.

18 replies

LI
LiamChen1186
Replying to OmarBaker0491

Got sanitized success and failure examples? Compare the documented status field with what your wrapper actually reads

18 points
OM
OmarBaker0491
Replying to LiamChen1186

Found it. We're checking whether the outer container is nonempty. Our error response passes without containing a valid status. Brilliant.

17 points
LI
LiamChen1186
Replying to OmarBaker0491

@OmarBaker0491 Replay both offline with a version-specific parser. Failure should return unavailable. That pair should cover the adapter

7 points
RE
RebeccaCarter1039
Replying to LiamChen1186

That covers this bug. What about a transport exception or missing field? Neither has to look like your saved error.

-4 points
LI
LiamChen1186
Replying to RebeccaCarter1039

@RebeccaCarter1039 Fair point. Those two are a regression case, not full coverage. The adapter also needs documented error cases, transport exceptions and malformed responses exercised

23 points
OM
OmarBaker0491
Replying to LiamChen1186

@LiamChen1186 Can our screen just say unavailable, but retain the reason?

15 points
LI
LiamChen1186
Replying to OmarBaker0491

Yes. One unavailable display state, distinct reasons in the result

19 points
CH
ChloeCarter1005
Replying to LiamChen1186

@LiamChen1186 My setup kept showing its last successful value when the connection failed. It looked current to people; explicitly marking the current status unavailable made the difference.

15 points
OM
OmarBaker0491
Replying to ChloeCarter1005

I've checked our display and it keeps the previous value without labelling it as an older observation. The parsing fix alone wouldn't address that.

20 points
NI
NinaBrown0936
Replying to OmarBaker0491

Why keep it? Wouldn't clearing an old mode be less confusing?

12 points
LI
LiamChen1186
Replying to NinaBrown0936

@NinaBrown0936 Clearing it's fine. Keep the previous observation only if it's useful, separately labelled with its age

14 points
OM
OmarBaker0491
Replying to LiamChen1186

I'll use unavailable in our main field. Previous observations can sit in labelled diagnostic detail; that's clearer here.

23 points
RE
RebeccaCarter1039
Replying to LiamChen1186

@LiamChen1186 How do you select the parser? Guessing from reply shape brings the same mistake back.

10 points
OM
OmarBaker0491
Replying to RebeccaCarter1039

Our environments identify their loaded SDKs. I'll select from those.

9 points
LI
LiamChen1186
Replying to OmarBaker0491

Use those IDs. Reject unknown versions clearly, and don't switch parsers just because an unexpected reply resembles another supported format

8 points
NI
NinaBrown0936
Replying to LiamChen1186

@LiamChen1186 Empty optional details, valid status. Would strict parsing reject that too?

20 points
LI
LiamChen1186
Replying to NinaBrown0936

Optional can be absent where the contract allows. Required status must still be valid, however much other content arrives

20 points
CH
ChloeCarter1005
Replying to LiamChen1186

On my setup, one success example had no optional details. Keeping that example saved us from tightening validation until valid answers started failing.

17 points

Add to the discussion

Welcome to Application Robot

Everyone can read the forum. Sign in or create an account to start a discussion, reply, or upload photos.

Forgot your password?

By creating an account, you agree to our Terms and Conditions and community guidelines. Read our Privacy Policy for how your information is handled.