A question about matter over thread products

During the development of a Matter over Thread product, I encountered the following issue:

After adding two Matter over Thread devices (an OnOff Switch and an OnOff Light) through a Matter border router and binding the switch to the light, the switch can directly control the light's on/off state. However, when the border router is powered off, the switch retains control over the light for about the first minute but loses this capability thereafter. The project is based on modifications to the light_bulb reference implementation. The version of SDK is 3.0.1. What causes this behavior, and how can it be resolved?

  • The error log is as follows:

    In file included from D:/Nordic/ncs/v3.0.1/modules/lib/openthread/src/core/instance/instance.hpp:102,
    from D:/Nordic/ncs/v3.0.1/modules/lib/openthread/src/core/api/nat64_api.cpp:42:
    D:/Nordic/ncs/v3.0.1/modules/lib/openthread/src/core/net/srp_server.hpp:42:2: error: #error "OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE is required for OPENTHREAD_CONFIG_SRP_SERVER_ENABLE"
    42 | #error "OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE is required for OPENTHREAD_CONFIG_SRP_SERVER_ENABLE"
    | ^~~~~
    In file included from D:/Nordic/ncs/v3.0.1/modules/lib/openthread/src/core/net/srp_server.hpp:79:
    D:/Nordic/ncs/v3.0.1/modules/lib/openthread/src/core/thread/network_data_publisher.hpp:42:2: error: #error "OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE requires either OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE" "or OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE"
    42 | #error "OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE requires either OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE"\
    | ^~~~~
    [164/858] modules\openthread\build\CMakeFiles\print-ot-config-96e6445.bat 1a5b503f79090e00
    OPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=1
    OPENTHREAD_CONFIG_TMF_ANYCAST_LOCATOR_ENABLE=0
    OPENTHREAD_CONFIG_ASSERT_ENABLE=1
    OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE=0
    OPENTHREAD_CONFIG_BACKBONE_ROUTER_DUA_NDPROXYING_ENABLE=0
    OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE=0
    OPENTHREAD_CONFIG_BLE_TCAT_ENABLE=0

  • Could we know what you want to achieve? Asking as in commercial ecosystems, binding is still not supported. You may implement a custom application to perform a binding operation. SRP Server and DNS-SD Server are usually implemented in the Thread Border Router to have enough capacity to store multiple of records. So I would say enabling SRP Server on embedded devices should work in some controlled/proprietary installations, but not as a generic solution. Currently, Matter devices rely on smart hubs that implement the Thread Border Router role.

  • I understand the importance of the  Border router, But If whatever reason the border router is down, there is no way to control the devices which is not good, atleast weshould be able to control the devices locally irrespective of the Border router status.

    For this local application control design, including the SRP server you mentioned, how should I integrate it into the terminal device?  According to the method you provided, I'm encountering compilation errors. Could you provide me with a sample project example?

  • I was able to build the Matter Light Bulb just with KConfigs:

    west build -p -b nrf52840dk/nrf52840 -- -DCONFIG_OPENTHREAD_SOURCES=y -DCONFIG_OPENTHREAD_SRP_SERVER=y -DCONFIG_OPENTHREAD_ENABLE_SERVICE=y -DCONFIG_OPENTHREAD_DNSSD_SERVER=y

    However, this functionality has not been tested by us; thus, you may experiment with it.

  • We used the method you provided to conduct verification tests and found that once the border router is powered off for more than 1 minute, the On/Off Switch becomes unable to control its bound light. The symptom is the same as before the modification. Could you please help us identify the cause and provide countermeasures? This functionality is quite critical for our project application. Thank you.

Related