cancel
Showing results for 
Search instead for 
Did you mean: 

Unable to dim light on Google Home App with Matter bridge app

lijie
Community Member

Based on the examples/bridge-app reference using the v1.0.0.2 tag in the Matter SDK, I have added a dimmable light using the OnOff Cluster and LevelControl Cluster. It works fine in the Apple Home app, but in the Google Home app, I can only turn it on or off. The dimmable button is disabled by default, and the dimming feature does not work without sending any interaction commands.

PS:
Matter SDK Version: v1.0.0.2
Google Home App Version: 2.65.24.1-dogfood
Google Nest Display Version: 1.56.324896

6 REPLIES 6

armen_dpe
Solutions Expert
Solutions Expert

Thanks for bringing this up. Project Chip on GitHub mentions only OnOff cluster in readme file. Check with developers if it’s meant to also support LevelControl cluster. Looking at history of commits it might still be under development. If you continue to experience issues please create a ticket on GitHub.

Harry_p
Community Member

@lijie have you tested the dimmable light with alexa. As I'm facing the issue with alexa .

lijie
Community Member

@Harry_p Yep, I just tested Alexa. Everything is fine.

Harry_p
Community Member

Is there anything that you have changed in the configuration as when I change the brightness values, the callbacks are not called.

These are the level configurations made:

DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(bridgedLightClusters)
DECLARE_DYNAMIC_CLUSTER(OnOff::Id, onOffAttrs, onOffIncomingCommands, nullptr),
    DECLARE_DYNAMIC_CLUSTER(Descriptor::Id, descriptorAttrs, nullptr, nullptr),
    DECLARE_DYNAMIC_CLUSTER(BridgedDeviceBasic::Id, bridgedDeviceBasicAttrs, nullptr,
                            nullptr) DECLARE_DYNAMIC_CLUSTER_LIST_END;

// Declare Bridged Light endpoint
DECLARE_DYNAMIC_ENDPOINT(bridgedLightEndpoint, bridgedLightClusters);

DataVersion gLight1DataVersions[ArraySize(bridgedLightClusters)];


// Declare Dimmable Control cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(dimmableControlAttrs)
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_ON_OFF_ATTRIBUTE_ID, BOOLEAN, 1, 0),
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_CURRENT_LEVEL_ATTRIBUTE_ID , INT8U, 1, 0),
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_LEVEL_CONTROL_REMAINING_TIME_ATTRIBUTE_ID , INT16U, 2,ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE)),
DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
The change callback used:
void HandleDeviceStatusChangedDim(Device * dev, Device::Changed_t itemChangedMask)
{
    if (itemChangedMask & Device::kChanged_Reachable)
    {
        ScheduleReportingCallback(dev, BridgedDeviceBasic::Id, BridgedDeviceBasic::Attributes::Reachable::Id);
    }

    if (itemChangedMask & Device::kChanged_State)
    {
        printf("the level chnage callback \n ");
        ScheduleReportingCallback(dev, LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id);
        // MatterReportingAttributeChangeCallback(dev->GetEndpointId(), LevelControl::Id, ZCL_CURRENT_LEVEL_ATTRIBUTE_ID,
        //                                        ZCL_BOOLEAN_ATTRIBUTE_TYPE,NULL);
    }
  if (itemChangedMask & Device::kChanged_Name)
    {
        ScheduleReportingCallback(dev, BridgedDeviceBasic::Id, BridgedDeviceBasic::Attributes::NodeLabel::Id);
    }
}

lijie
Community Member

@Harry_p  You need to reference the 'Dimmable Light' device type in order to implement all the mandatory clusters.

ID Cluster Client/Server Quality Conformance

0x0003

Identify

Server

 

M

0x0004

Groups

Server

 

M

0x0005

Scenes

Server

 

M

0x0006

On/Off

Server

 

M

0x0008

Level Control

Server

 

M

0x0406

Occupancy Sensing

Client

 

O

I gave up  this micro implementation instead of using the examples at https://github.com/espressif/esp-matter/tree/main/examples/zigbee_bridge."

 

Harry_p
Community Member

@lijie As I'm adding the non-zigbee devices I have choosen bridge-app example. I can see the device as dimmer in alexa, but the thing is when changing the levels the callbacks are not active any idea about this issue.