Matter Camera UI looks very basic in SmartThings App — generated presentation instead of `matter-camera`?

Hi everyone,

I have been testing the Aqara Camera Hub G350 as a Matter camera with SmartThings, and I noticed something interesting that may explain why the UI in the SmartThings app currently looks much more basic than expected.

The camera itself is detected correctly as a Matter camera and the Matter Switch driver loads the camera sub-driver. In the logs, SmartThings also discovers and enables camera-related capabilities such as:

  • webrtc
  • videoStreamSettings
  • imageCapture
  • nightVision
  • cameraViewportSettings
  • speaker / microphone mute and volume

So at first glance, the camera support looks quite promising.

However, the actual UI in the SmartThings app is still very minimal.

Instead of a richer camera page, I basically get a very basic detail view:


This is how it should look like:

After digging deeper with the SmartThings CLI, I found that the device is not using the stock camera presentation from the Edge Driver repository.

The stock camera profile in the repo points to:

metadata:
  mnmn: SmartThingsEdge
  vid: matter-camera

But my actual device presentation is:

{
  "mnmn": "SmartThingsCommunity",
  "vid": "f866541d-ce12-3f37-9be2-5fce4eecec98"
}

And the generated detail view is very basic. It only contains:

  • webrtc
  • motionSensor

The webrtc capability is rendered as a simple state tile showing stunUrl.value, which is clearly not what a normal end user would expect from a camera page.

CLI output

This is what smartthings devices:presentation <device-id> -j returns for my G350:

{
    "mnmn": "SmartThingsCommunity",
    "vid": "f866541d-ce12-3f37-9be2-5fce4eecec98",
    "detailView": [
        {
            "capability": "webrtc",
            "displayType": "state",
            "state": {
                "label": "{{stunUrl.value}}"
            },
            "component": "main"
        },
        {
            "capability": "motionSensor",
            "displayType": "state",
            "component": "main"
        }
    ],
    "dpInfo": [
        {
            "os": "ios",
            "dpUri": "storyboard://HMVSController/HMVSViewController"
        },
        {
            "os": "android",
            "dpUri": "plugin://com.samsung.android.plugin.camera"
        }
    ]
}

And this is what smartthings devices <device-id> -j shows for the live device profile:

{
    "profile": {
        "id": "b8bc8e03-5efb-3339-9255-eb4fa85164eb"
    },
    "mnmn": "SmartThingsCommunity",
    "vid": "f866541d-ce12-3f37-9be2-5fce4eecec98",
    "components": [
        {
            "id": "main",
            "capabilities": [
                { "id": "webrtc" },
                { "id": "videoStreamSettings" },
                { "id": "imageCapture" },
                { "id": "nightVision" },
                { "id": "cameraViewportSettings" },
                { "id": "firmwareUpdate" },
                { "id": "refresh" }
            ]
        },
        {
            "id": "speaker",
            "capabilities": [
                { "id": "audioMute" },
                { "id": "audioVolume" }
            ]
        },
        {
            "id": "microphone",
            "capabilities": [
                { "id": "audioMute" },
                { "id": "audioVolume" }
            ]
        }
    ]
}

Why this seems important

To me, this looks like a presentation / VID issue, not primarily a Matter cluster support issue.

In other words:

  • the camera is discovered correctly
  • the driver enables several camera capabilities
  • but SmartThings seems to generate a custom presentation for the device
  • and that generated presentation is much more limited than the stock matter-camera presentation

That would explain why the app UI looks so basic, even though the underlying Matter support seems more advanced.

Questions

Has anyone else seen this behavior with Matter cameras in SmartThings?

Especially:

  • Is SmartThings currently generating custom presentations for Matter cameras instead of using vid: matter-camera?
  • Is that expected?
  • Could this be the reason why the app UI is currently so limited?
  • Has anyone managed to get the richer stock camera UI with a Matter camera?

I would be very interested to hear whether others can reproduce this, especially with the Aqara G350 or other Matter 1.5 cameras.

Thanks!

@nayelyz @Itati

  • AOS 1.8.45.18 and AOS 1.8.41.23
  • Access granted, same email.
  • Device ID might change, because I’m working on it, but the device label is always Aqara G350. Currently: 7af6a834-94ca-41cd-82a2-c8071cbcf8b0
2 Likes

Note to self: tomorrow I’ll test a driver with this commit reverted:

diff --git a/drivers/SmartThings/matter-switch/profiles/camera.yml b/drivers/SmartThings/matter-switch/profiles/camera.yml
index 7a46099cf6..7f62319984 100644
--- a/drivers/SmartThings/matter-switch/profiles/camera.yml
+++ b/drivers/SmartThings/matter-switch/profiles/camera.yml
@@ -47,6 +47,9 @@ components:
       - id: motionSensor
         version: 1
         optional: true
+      - id: vision.clipAnalysis
+        version: 1
+        optional: true
       - id: firmwareUpdate
         version: 1
       - id: refresh

This was the latest change to the camera profile and maybe the matter-camera presentation wasn’t updated.

There’s nothing in the screenshots in this article that looks like vision.clipAnalysis.


Original profile:

https://raw.githubusercontent.com/SmartThingsCommunity/SmartThingsEdgeDrivers/eb90b37a50739f58c4b12188a46265ad458278e9/drivers/SmartThings/matter-switch/profiles/camera.yml

I must be incredibly rusty with these
things as I thought that the idea of an embedded deviceConfig in an Edge driver profile was to define the presentation and so the vid in the metadata would be ignored if it were present.

It looks different without the deviceConfig:

At least, it’s using the matter-camera presentation:

Some interesting snippets from the matter-camera presentation:

smartthings devices:presentation 7af6a834-94ca-41cd-82a2-c8071cbcf8b0 -j

{
    "mnmn": "SmartThingsEdge",
    "vid": "matter-camera",
    "version": "0.0.1",
    "dashboard": {
        "states": [
            {
                "label": "{{captureTime.value}}",
                "capability": "imageCapture",
                "version": 1,
                "component": "main",
                "composite": false,
                "group": "main",
                "transient": false
            }
        ],
        "actions": [
            {
                "displayType": "standbyPowerSwitch",
                "standbyPowerSwitch": {
                    "command": {
                        "on": "on",
                        "off": "off"
                    },
                    "state": {
                        "value": "switch.value",
                        "on": "on",
                        "off": "off"
                    }
                },
                "group": "main",
                "capability": "switch",
                "version": 1,
                "component": "statusLed"
            }
        ],
        "basicPlus": []
    },
    "detailView": [
        {
            "capability": "webrtc",
            "version": 1,
            "label": "___PO_CODE_CAPABILITY.SMARTTHINGS.WEBRTC_DEFAULT_ATTRIBUTES_STUNURL",
            "displayType": "state",
            "state": {
                "label": "{{stunUrl.value}}"
            },
            "component": "main"
        },
[ ... ]
   ]
    "dpInfo": [
        {
            "os": "ios",
            "dpUri": "plugin://com.samsung.ios.plugin.stplugin/assets/files/index.html",
            "arguments": []
        },
        {
            "os": "android",
            "dpUri": "plugin://com.samsung.android.plugin.stplugin",
            "arguments": []
        },
        {
            "os": "web",
            "dpUri": "wwst://com.samsung.one.plugin.stplugin",
            "arguments": []
        }
    ],

The version is 0.0.1 and the plugins look like placeholders: "dpUri": "plugin://com.samsung.android.plugin.stplugin"

But it should be dpUri: "plugin://com.samsung.android.plugin.camera" according to this:

At least it’s WWST certified …

… and the announcement is released:

https://news.samsung.com/global/samsung-smartthings-becomes-the-industrys-first-to-support-matter-cameras

Hi, @Andreas_Roedl
Just to confirm, are these screenshots from the same device using the SmartThings driver? I see there was a certification for this device but with a Cloud-to-Cloud integration.

The first one is from a custom driver you created, correct?

We’ve been told in the past that to load the video plugin you must include the dpInfo property with those values in your device configuration.
I got the original device-config for the matter-camera presentation, and it doesn’t include the dpInfo property, which is why the value differs from the other one in this commit.

Since using the same presentation ID doesn’t make things look the same, it is most likely that the device is getting a special UI based on certain conditions.

I can check with the team to see if they know more about this but I just wanted to confirm where those screenshots are coming from.

1 Like

It’s the screenshot after adding the Matter camera for the first time.

The first one is from a custom driver you created, correct?

No. It’s the stock Matter Switch driver (current production version). Hours later, I forked it to fix and report a serious issue (GitHub) and later I was trying out different profiles to see if I could fix the presentation. The camera is currently - since yesterday, when I gave up - back on the stock Matter Switch driver.

I’m also in contact with the author of this article who was trying to log in to the AWA to take a screenshot for me from the summary section, but the AWA was broken at the time:

So yes, the screenshot is from the first time I onboarded a Matter camera with the stock production Matter Switch driver.

I can check with the team to see if they know more about this

Thank you very much! It would be a shame if the first Matter camera wouldn’t work with SmartThings - especially after the announcement.

Hi, @Andreas_Roedl
The engineering team mentioned the following:

  1. This basic view is expected for Aqara G350, as the device in its first firmware does not expose most of the functionality over Matter.
  2. The device presentation doesn’t provide the full information on what the camera plugin does. There’s further logic behind it. So, it isn’t an issue with the presentation, but based on the Matter clusters exposed.
  3. They recognized some features in the screenshots where more buttons are shown and mentioned that they come from an older version of the app.
    • In this version, they were displayed even if they weren’t actually supported in the device (capabilities present included).
    • In the new one, only supported features are displayed.

This particular device exposes the following features over Matter:

  • AV Live-streaming
  • Settings
    • Night vision
    • Speaker volume
    • Microphone volume

And about the issue you opened, they’re already working on it. However, this doesn’t affect the functionality of the device since it’s only a logging issue.

2 Likes

Not what I was hoping to hear. That means that the Aqara G350 is basically useless in ST. Someone told me that there’s a test event mainly for cameras this week hosted by CSA at Aqara HQ. We’ll see.

The Aqara C2C camera integration isn’t much better and just as bad as the C2C TP-Link/Tapo camera integration:

Thanks again for your efforts!