Incorporating Matter

@netwolfuk : note that some vendors like TP-link force you to pair the device in their own app first ! Their app offers features that are not supported by Matter. One important feature is updating the device firmware.
Welcome to the wonderful world of Matter :slight_smile:

God damn itā€¦ even zigbee allows updates without the vendor appā€¦

1 Like

note that some vendors like TP-link force you to pair the device in their own app first !

Yes, I found that, and the TP-Link app requires one to create a TP Link account and agree to their privacy policy. grrr.

I managed toā€¦

  1. Switch to normal Wifi, Install the app and create an account (sign up was a requirement)
  2. Switch to IoT Wifi and discover the 110M. Required bluetooth to be switched on.
  3. I was then asked which WiFi to attach the 110M to, so thatā€™s good. Apparently some apps just assume the current WiFi and push the WiFi credentials to the device without asking.
  4. I saw in the DHCP logs that the 110M has an IP on the IoT VLAN.
  5. Switch the unit on and off within the Tapo app on Mobile.
  6. Switch back to normal Wifi and switch off Bluetooth
  7. I can still control the device!! I canā€™t figure out why this works. I forgot I have a firewall rule that lets my mobile access the IoT VLAN from normal wifi. Once discovered the Tapo app caches devices for a while, and I can send events to it from the app. Eventually discovered devices fall off the app again.

Next job is to update OH 3 to 4, and try out the new binding.

Hi Dan,

I did a joint session with @florian-h05

re1: In comparison I did not create the thing directly with the pairing code but without any
re3: Only now I provided the code from the Google Home app
re4: No device comes up (but errors in the log)

And this is the result I get:

2024-10-01 11:07:47.174 [DEBUG] [r.internal.handler.ControllerHandler] - onReady obtaining lock
2024-10-01 11:09:23.049 [DEBUG] [r.internal.handler.ControllerHandler] - handleConfigurationUpdate
2024-10-01 11:09:23.052 [DEBUG] [r.internal.handler.ControllerHandler] - pairCode: old: null new: 0303-571-7208
2024-10-01 11:09:23.052 [DEBUG] [r.internal.handler.ControllerHandler] - Controller Configuration update pairCode to 0303-571-7208
2024-10-01 11:09:23.053 [DEBUG] [r.internal.handler.ControllerHandler] - nodeId: old: 0 new: 0
2024-10-01 11:09:23.053 [DEBUG] [r.internal.handler.ControllerHandler] - Controller Configuration update ignored nodeId to 0 (BigDecimal)
2024-10-01 11:09:23.053 [DEBUG] [r.internal.handler.ControllerHandler] - decommissionNodesOnDelete: old: true new: true
2024-10-01 11:09:23.053 [DEBUG] [r.internal.handler.ControllerHandler] - Controller Configuration update ignored decommissionNodesOnDelete to true (Boolean)
2024-10-01 11:09:23.059 [DEBUG] [nternal.client.MatterWebsocketClient] - sendMessage: {"id":"523c3449-8283-4041-8261-b6ec585e5d62","namespace":"nodes","function":"pairNode","args":["03035717208"]}
2024-10-01 11:09:23.070 [DEBUG] [ding.matter.internal.util.NodeRunner] - MatterController: Commissioning device with identifier {"shortDiscriminator":1} and 1 scanners and knownAddress "undefined"
2024-10-01 11:09:23.071 [DEBUG] [ding.matter.internal.util.NodeRunner] - ControllerDiscovery: Start Discovering devices using identifier {"shortDiscriminator":1} ...
2024-10-01 11:09:53.075 [DEBUG] [ding.matter.internal.util.NodeRunner] - ControllerDiscovery: Found 0 devices using identifier {"shortDiscriminator":1}
2024-10-01 11:09:53.076 [DEBUG] [ding.matter.internal.util.NodeRunner] - Controller: Error executing function pairNode: No device discovered using identifier {"shortDiscriminator":1}! Please check that the relevant device is online.
2024-10-01 11:09:53.077 [DEBUG] [ding.matter.internal.util.NodeRunner] - Controller: Stack trace: Error: No device discovered using identifier {"shortDiscriminator":1}! Please check that the relevant device is online.
2024-10-01 11:09:53.078 [DEBUG] [ding.matter.internal.util.NodeRunner] - Controller: Error name: Error
2024-10-01 11:09:53.078 [DEBUG] [ding.matter.internal.util.NodeRunner] - Controller: Full error object: {"stack":"Error: No device discovered using identifier {\"shortDiscriminator\":1}! Please check that the relevant device is online.\n    at eval (webpack://matter-server/./node_modules/@matter.js/protocol/dist/cjs/protocol/ControllerDiscovery.js?:51:15)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","message":"No device discovered using identifier {\"shortDiscriminator\":1}! Please check that the relevant device is online."}
2024-10-01 11:09:53.080 [DEBUG] [nternal.client.MatterWebsocketClient] - onWebSocketText {"type":"response","message":{"type":"resultError","id":"523c3449-8283-4041-8261-b6ec585e5d62","result":"undefined","error":"No device discovered using identifier {\"shortDiscriminator\":1}! Please check that the relevant device is online."}}
2024-10-01 11:09:53.082 [DEBUG] [nternal.client.MatterWebsocketClient] - result type: resultError 

How are you running openHAB? on a PI, in docker, etcā€¦ Is it a platform with IPV6 enabled and on the same vlan? How long was it before you used the code issued? Was it within the time limit ? I think you said it was only valid for 2 mins ?

Ergā€¦ is this a requirement??

Yes, Matter needs IPV6!

https://project-chip.github.io/connectedhomeip-doc/index.html#architecture-overview

2 Likes
  • How are you running openHAB?
    • on a RP4 (no docker!)
  • Is it a platform with IPV6 enabled and on the same vlan?
    • It is on same LAN (no VLAN) and no, IP6 is NOT enabled on the Raspberry PI. And there is a reason for it: There are some bindings (like Govee) that have an issue if both IPV4 and IPV6 is enabled because during discovery the device is then discovered twice which somehow we havenā€™t found a solution how to deal with that.
    • however, if IPV6 IS required (is it true what @hmerk posted?) I could at least enable it for testing the Matter topic to see if that is actually the root cause of the current problem.
  • How long was it before you used the code issued?
    • Was it within the time limit ? I think you said it was only valid for 2 mins ?
      • Yes, definitely, because I almost immediately typed it in and the Google Home also tells you in realtime if the code is not valid anymore.

Regarding IPV6: Google Gemini is very clear with the answer that it IS required and that it does NOT work without it.

Yeah, i have said multiple times in this thread that IPV6 is required.

4 Likes

I beg your pardon to have overread that! :frowning:

Anyways, I have reconfigured my system and I can confirm that this was the root cause. It ā€œworksā€ now.

ā€¦ which leads me to the off-topic not to be discussed here, how I deal with devices in a binding that expose themselves twice. By that time nobody was able to answer that question but I will open a different thread for that (as both bindings do not work anymore now #sigh)

One caveat though:

In fact an endpoint was created with two channels (totally correct):

  • Level Control (is this brightness and out of curiosity if yes why do we not call it that way?)
  • Color

I linked an item of Type Switch to the Color channel but it doesnā€™t work well.

  • First the item of course is null.
  • Then I switch the device to ON for the first time via it physical power switch and the Item State goes to ON.
2024-10-01 16:40:34.781 [DEBUG] [nternal.client.MatterWebsocketClient] - onWebSocketText {"type":"response","message":{"type":"resultSuccess","id":"d5b0e90b-7695-4f5f-a24b-cd3ed10e91b4","result":{"id":"16482606113728065571","endpoints":{"0":{"number":0,"clusters":{"Identify":{"id":3,"name":"Identify","identifyTime":0,"identifyType":2,"clusterRevision":4,"featureMap":{},"attributeList":[0,1,65528,65529,65531,65532,65533],"acceptedCommandList":[0,64],"generatedCommandList":[]},"Groups":{"id":4,"name":"Groups","nameSupport":{"nameSupport":true},"clusterRevision":4,"featureMap":{"groupNames":true},"attributeList":[0,65528,65529,65531,65532,65533],"acceptedCommandList":[0,1,2,3,4,5],"generatedCommandList":[0,1,2,3]},"Descriptor":{"id":29,"name":"Descriptor","deviceTypeList":[{"deviceType":22,"revision":1}],"serverList":[3,4,29,31,40,42,43,44,48,49,51,52,54,60,62,63,64,65],"clientList":[41],"partsList":[1],"clusterRevision":1,"featureMap":{"tagList":false},"attributeList":[0,1,2,3,65528,65529,65531,65532,65533],"acceptedCommandList":[],"generatedCommandList":[]},"AccessControl":{"id":31,"name":"AccessControl","acl":[{"privilege":5,"authMode":2,"subjects":["6125067515107788462"],"targets":null,"fabricIndex":3}],"extension":[],"subjectsPerAccessControlEntry":4,"targetsPerAccessControlEntry":3,"accessControlEntriesPerFabric":3,"clusterRevision":1,"featureMap":{},"attributeList":[0,1,2,3,4,65528,65529,65531,65532,65533],"acceptedCommandList":[],"generatedCommandList":[]},"BasicInformation":{"id":40,"name":"BasicInformation","dataModelRevision":1,"vendorName":"Shenzhen Qianyan Technology","vendorId":4999,"productName":"H61D5","productId":25045,"nodeLabel":"","location":"XX","hardwareVersion":0,"hardwareVersionString":"1.0","softwareVersion":27,"softwareVersionString":"27.0","uniqueId":"EB835E67A75A010E","capabilityMinima":{"caseSessionsPerFabric":3,"subscriptionsPerFabric":3},"clusterRevision":1,"featureMap":{},"attributeList":[0,1,2,3,4,5,6,7,8,9,10,18,19,65528,65529,65531,65532,65533],"acceptedCommandList":[],"generatedCommandList":[]},"OtaSoftwareUpdateRequestor":{"id":42,"name":"OtaSoftwareUpdateRequestor","defaultOtaProviders":[],"updatePossible":true,"updateState":1,"updateStateProgress":null,"clusterRevision":1,"featureMap":{},"attributeList":[0,1,2,3,65528,65529,65531,65532,65533],"acceptedCommandList":[0],"generatedCommandList":[]},"LocalizationConfiguration":{"id":43,"name":"LocalizationConfiguration","activeLocale":"en-US","supportedLocales":["en-US","de-DE","fr-FR","en-GB","es-ES","zh-CN","it-IT","ja-JP"],"clusterRevision":1,"featureMap":{},"attributeList":[0,1,65528,65529,65531,65532,65533],"acceptedCommandList":[],"generatedCommandList":[]},"TimeFormatLocalization":{"id":44,"name":"TimeFormatLocalization","hourFormat":0,"clusterRevision":1,"featureMap":{"calendarFormat":false},"attributeList":[0,1,2,65528,65529,65531,65532,65533],"acceptedCommandList":[],"generatedCommandList":[],"activeCalendarType":0,"supportedCalendarTypes":[0,1,2,3,4,5,6,8,9,10,11,7]},"GeneralCommissioning":{"id":48,"name":"GeneralCommissioning","breadcrumb":0,"basicCommissioningInfo":{"failSafeExpiryLengthSeconds":60,"maxCumulativeFailsafeSeconds":900},"regulatoryConfig":0,"locationCapability":0,"supportsConcurrentConnection":true,"clusterRevision":1,"featureMap":{},"attributeList":[0,1,2,3,4,65528,65529,65531,65532,65533],"acceptedCommandList":[0,2,4],"generatedCommandList":[1,3,5]},"NetworkCommissioning":{"id":49,"name":"NetworkCommissioning","maxNetworks":1,"networks":[{"networkId":"53616d6d7957696669322e340000000000000000000000000000000000000000","connected":false}],"interfaceEnabled":true,"lastNetworkingStatus":0,"lastNetworkId":"53616d6d7957696669322e34","lastConnectErrorValue":null,"scanMaxTimeSeconds":10,"connectMaxTimeSeconds":20,"clusterRevision":1,"featureMap":{"wiFiNetworkInterface":true,"threadNetworkInterface":false,"ethernetNetworkInterface":false},"attributeList":[0,1,2,3,4,5,6,7,65528,65529,65531,65532,65533],"acceptedCommandList":[0,2,4,6,8],"generatedCommandList":[1,5,7]},"GeneralDiagnostics":{"id":51,"name":"GeneralDiagnostics","networkInterfaces":[{"name":"r0","isOperational":true,"offPremiseServicesReachableIPv4":null,"offPremiseServicesReachableIPv6":null,"hardwareAddress":"6074f4da62a4","iPv4Addresses":["c0a8b2a6"],"iPv6Addresses":["fe800000000000006274f4fffeda62a4"],"type":1}],"rebootCount":6,"upTime":22342,"totalOperationalHours":6,"testEventTriggersEnabled":false,"clusterRevision":1,"featureMap":{"dataModelTest":false},"attributeList":[0,1,2,3,8,65528,65529,65531,65532,65533],"acceptedCommandList":[0],"generatedCommandList":[]},"SoftwareDiagnostics":{"id":52,"name":"SoftwareDiagnostics","threadMetrics":[{"id":29,"name":"UpperSt","stackFreeCurrent":2932,"stackFreeMinimum":590,"stackSize":3064},{"id":30,"name":"HCI I/F","stackFreeCurrent":1828,"stackFreeMinimum":362,"stackSize":2040},{"id":23,"name":"rtw_rec\u0010","stackFreeCurrent":5772,"stackFreeMinimum":872,"stackSize":5928},{"id":25,"name":"rtw_int","stackFreeCurrent":860,"stackFreeMinimum":200,"stackSize":1016},{"id":26,"name":"cmd_thr","stackFreeCurrent":3908,"stackFreeMinimum":641,"stackSize":4088},{"id":7,"name":"_uart_p","stackFreeCurrent":1876,"stackFreeMinimum":100,"stackSize":2040},{"id":12,"name":"mqtt_se","stackFreeCurrent":1852,"stackFreeMinimum":112,"stackSize":2040},{"id":32,"name":"uart_se`","stackFreeCurrent":364,"stackFreeMinimum":80,"stackSize":504},{"id":32,"name":"uart_se`","stackFreeCurrent":364,"stackFreeMinimum":80,"stackSize":504},{"id":33,"name":"rtw_coeļæ½","stackFreeCurrent":860,"stackFreeMinimum":215,"stackSize":1016},{"id":1,"name":"govee_s\u0012","stackFreeCurrent":1900,"stackFreeMinimum":475,"stackSize":2040},{"id":19,"name":"govee_h4","stackFreeCurrent":1884,"stackFreeMinimum":471,"stackSize":2040},{"id":6,"name":"_wifico\u0006","stackFreeCurrent":3660,"stackFreeMinimum":915,"stackSize":4088},{"id":5,"name":"_uart_s`","stackFreeCurrent":1892,"stackFreeMinimum":328,"stackSize":2040},{"id":24,"name":"rtw_xmi","stackFreeCurrent":868,"stackFreeMinimum":176,"stackSize":1016},{"id":31,"name":"bt_matt:","stackFreeCurrent":1844,"stackFreeMinimum":294,"stackSize":2040},{"id":10,"name":"matter_,","stackFreeCurrent":4004,"stackFreeMinimum":933,"stackSize":4088},{"id":4,"name":"matter_`","stackFreeCurrent":32636,"stackFreeMinimum":7594,"stackSize":32760},{"id":37,"name":"DHCPPro0","stackFreeCurrent":4004,"stackFreeMinimum":756,"stackSize":4088},{"id":22,"name":"TCP_IP","stackFreeCurrent":3836,"stackFreeMinimum":670,"stackSize":3992},{"id":17,"name":"lan_udp0","stackFreeCurrent":3668,"stackFreeMinimum":684,"stackSize":4088},{"id":16,"name":"lan_udpg","stackFreeCurrent":3668,"stackFreeMinimum":682,"stackSize":4088},{"id":14,"name":"_ota_ch`","stackFreeCurrent":3940,"stackFreeMinimum":470,"stackSize":4088},{"id":15,"name":"ota_serr","stackFreeCurrent":1868,"stackFreeMinimum":465,"stackSize":2040},{"id":11,"name":"mqtt_se","stackFreeCurrent":4268,"stackFreeMinimum":690,"stackSize":5112},{"id":2,"name":"feed_do`","stackFreeCurrent":164,"stackFreeMinimum":49,"stackSize":248},{"id":13,"name":"timer_sļæ½","stackFreeCurrent":1892,"stackFreeMinimum":217,"stackSize":2040},{"id":9,"name":"wifi_se","stackFreeCurrent":3996,"stackFreeMinimum":770,"stackSize":4088},{"id":21,"name":"Tmr Svc","stackFreeCurrent":1908,"stackFreeMinimum":360,"stackSize":2040},{"id":22,"name":"TCP_IP","stackFreeCurrent":3836,"stackFreeMinimum":670,"stackSize":3992},{"id":8,"name":"_uart_r","stackFreeCurrent":1900,"stackFreeMinimum":465,"stackSize":2040},{"id":20,"name":"IDLE","stackFreeCurrent":196,"stackFreeMinimum":49,"stackSize":272},{"id":35,"name":"matter_","stackFreeCurrent":8052,"stackFreeMinimum":1826,"stackSize":8184},{"id":34,"name":"CHIP","stackFreeCurrent":7036,"stackFreeMinimum":731,"stackSize":8184}],"currentHeapFree":3984824,"currentHeapUsed":276072,"clusterRevision":1,"featureMap":{"watermarks":true},"attributeList":[0,1,2,3,65528,65529,65531,65532,65533],"acceptedCommandList":[0],"generatedCommandList":[],"currentHeapHighWatermark":286232},"WiFiNetworkDiagnostics":{"id":54,"name":"WiFiNetworkDiagnostics","bssid":"bafbe4c73824","securityType":4,"wiFiVersion":3,"channelNumber":11,"rssi":-47,"clusterRevision":1,"featureMap":{"packetCounts":false,"errorCounts":false},"attributeList":[0,1,2,3,4,65528,65529,65531,65532,65533],"acceptedCommandList":[],"generatedCommandList":[]},"AdministratorCommissioning":{"id":60,"name":"AdministratorCommissioning","windowStatus":0,"adminFabricIndex":null,"adminVendorId":null,"clusterRevision":1,"featureMap":{"basic":false},"attributeList":[0,1,2,65528,65529,65531,65532,65533],"acceptedCommandList":[0,1,2],"generatedCommandList":[]},"OperationalCredentials":{"id":62,"name":"OperationalCredentials","nocs":[{"noc":"15300101022402013703241400182604d98ead2c260559c55a41370624150127112370718deefabde4182407012408013009410428371d47ca3dfe744a3ce9a81413d3bd79f7e03c6ebdae5709d3b819f166ffd3b06a2510cc14a90d47e5bb2f0a95d9347d45d356a1b3a2b1bbd760968642c271370a350128011824020136030402040118300414d7b1cbc77208f6d38fbf6d08721e9c4d62c25301300514c13c602dba39d06ff9edd8a012c2ce3ccf2b188e18300b40a91fd540196e2abf79eee3e4954d11d19130d1311a1a9756630e92d7e751bfdb93ba3d83947b23462a5543f3d6ed7d955734efdee59a7f72e33b1af29e27018618","icac":null,"fabricIndex":3}],"fabrics":[{"rootPublicKey":"043789ae5bbd01f8f187d639cae74bf2134178c748bd9264858fc379995dbe662e50645f79ce3685a0862ce789c17e528edd97b1f275870ad01305f46363c26c4c","vendorId":65521,"fabricId":"1","nodeId":"16482606113728065571","label":"","fabricIndex":3}],"supportedFabrics":5,"commissionedFabrics":2,"trustedRootCertificates":["153001010124020137032c840255532c0706476f6f676c652c010b4d617474657220526f6f74271401000000feffffff1826047fd2432926057f945be537062c840255532c0706476f6f676c652c010b4d617474657220526f6f74271401000000feffffff18240701240801300941045b37df6549c20dc8d722a6b8acb660a8a764ce7baf6c6c224f7ee84349684ad7d809ff650033d1527dcf1fbaac6a9c3ad8b41edac909f7b5c760fd542c892375370a350129012402011824026030041472c201f7571913b348ca00ca7b45f4774668c97e30051472c201f7571913b348ca00ca7b45f4774668c97e18300b4065164b166adff18c15610a8ce91bd703e9c1f677b711ce133505152df0da15111675ac5591cee786851cdd9efdad296674bebcb2a3a3209bcde7b309db552c6f18","15300101002402013703241400182604a58ead2c260525c55a41370624140018240701240801300941043789ae5bbd01f8f187d639cae74bf2134178c748bd9264858fc379995dbe662e50645f79ce3685a0862ce789c17e528edd97b1f275870ad01305f46363c26c4c370a3501290118240260300414c13c602dba39d06ff9edd8a012c2ce3ccf2b188e300514c13c602dba39d06ff9edd8a012c2ce3ccf2b188e18300b40ff58e276675139e2517234911ab91fa83f4e6db06c46340516805a9be6dc2217c6c290b890637ee2ad581a1dfdd6e5ef8ab7dcfa8276bf7b8473316a28e1e95018"],"currentFabricIndex":3,"clusterRevision":1,"featureMap":{},"attributeList":[0,1,2,3,4,5,65528,65529,65531,65532,65533],"acceptedCommandList":[0,2,4,6,7,9,10,11],"generatedCommandList":[1,3,5,8]},"GroupKeyManagement":{"id":63,"name":"GroupKeyManagement","groupKeyMap":[],"groupTable":[],"maxGroupsPerFabric":3,"maxGroupKeysPerFabric":3,"clusterRevision":1,"featureMap":{"cacheAndSync":false},"attributeList":[0,1,2,3,65528,65529,65531,65532,65533],"acceptedCommandList":[0,1,3,4],"generatedCommandList":[2,5]},"FixedLabel":{"id":64,"name":"FixedLabel","labelList":[{"label":"room","value":"bedroom 2"},{"label":"orientation","value":"North"},{"label":"floor","value":"2"},{"label":"direction","value":"up"}],"clusterRevision":1,"featureMap":{},"attributeList":[0,65528,65529,65531,65532,65533],"acceptedCommandList":[],"generatedCommandList":[]},"UserLabel":{"id":65,"name":"UserLabel","labelList":[],"clusterRevision":1,"featureMap":{},"attributeList":[0,65528,65529,65531,65532,65533],"acceptedCommandList":[],"generatedCommandList":[]}}},"1":{"number":1,"clusters":{"Identify":{"id":3,"name":"Identify","identifyTime":0,"identifyType":2,"clusterRevision":4,"featureMap":{},"attributeList":[0,1,65528,65529,65531,65532,65533],"acceptedCommandList":[0,64],"generatedCommandList":[]},"Groups":{"id":4,"name":"Groups","nameSupport":{"nameSupport":true},"clusterRevision":4,"featureMap":{"groupNames":true},"attributeList":[0,65528,65529,65531,65532,65533],"acceptedCommandList":[0,1,2,3,4,5],"generatedCommandList":[0,1,2,3]},"Unknown cluster 0x5":{"id":5,"name":"Unknown cluster 0x5","clusterRevision":4,"featureMap":{},"attributeList":[0,1,2,3,4,65528,65529,65531,65532,65533],"acceptedCommandList":[0,1,2,3,4,5,6],"generatedCommandList":[0,1,2,3,4,6],"unknownAttribute_0x0":0,"unknownAttribute_0x1":0,"unknownAttribute_0x2":0,"unknownAttribute_0x3":false,"unknownAttribute_0x4":0},"OnOff":{"id":6,"name":"OnOff","onOff":false,"clusterRevision":4,"featureMap":{"lighting":true,"deadFrontBehavior":false,"offOnly":false},"attributeList":[0,16384,16385,16386,16387,65528,65529,65531,65532,65533],"acceptedCommandList":[0,1,2,64,65,66],"generatedCommandList":[],"globalSceneControl":true,"onTime":0,"offWaitTime":0,"startUpOnOff":null},"LevelControl":{"id":8,"name":"LevelControl","currentLevel":254,"maxLevel":254,"options":{"executeIfOff":false,"coupleColorTempToLevel":false},"onOffTransitionTime":0,"onLevel":null,"onTransitionTime":0,"offTransitionTime":0,"defaultMoveRate":50,"clusterRevision":5,"featureMap":{"onOff":true,"lighting":true,"frequency":false},"attributeList":[0,1,2,3,15,16,17,18,19,20,16384,65528,65529,65531,65532,65533],"acceptedCommandList":[0,1,2,3,4,5,6,7],"generatedCommandList":[],"minLevel":1,"remainingTime":0,"startUpCurrentLevel":null},"Descriptor":{"id":29,"name":"Descriptor","deviceTypeList":[{"deviceType":269,"revision":1}],"serverList":[3,4,5,6,8,29,80,768],"clientList":[],"partsList":[],"clusterRevision":1,"featureMap":{"tagList":false},"attributeList":[0,1,2,3,65528,65529,65531,65532,65533],"acceptedCommandList":[],"generatedCommandList":[]},"ModeSelect":{"id":80,"name":"ModeSelect","description":"Music","standardNamespace":0,"supportedModes":[{"label":"Energic","mode":0,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"Rhythm","mode":1,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"Spectrum","mode":2,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"Rolling","mode":3,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"Separation","mode":4,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"Hopping","mode":5,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"PianoKeys","mode":6,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"Fountain","mode":7,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"DayAndNight","mode":8,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"Sprouting","mode":9,"semanticTags":[{"mfgCode":0,"value":0}]},{"label":"Shiny","mode":10,"semanticTags":[{"mfgCode":0,"value":0}]}],"currentMode":0,"clusterRevision":1,"featureMap":{"onOff":false},"attributeList":[0,1,65528,65529,65531,4293984257,2,3,65532,65533],"acceptedCommandList":[0],"generatedCommandList":[],"unknownAttribute_0xfff10001":0},"ColorControl":{"id":768,"name":"ColorControl","remainingTime":0,"colorMode":2,"options":{"executeIfOff":false},"numberOfPrimaries":0,"primary1X":0,"primary1Y":0,"primary1Intensity":0,"primary2X":0,"primary2Y":0,"primary2Intensity":0,"primary3X":0,"primary3Y":0,"primary3Intensity":0,"primary4X":0,"primary4Y":0,"primary4Intensity":0,"primary5X":0,"primary5Y":0,"primary5Intensity":0,"primary6X":0,"primary6Y":0,"primary6Intensity":0,"enhancedColorMode":2,"colorCapabilities":{"hueSaturation":true,"enhancedHue":true,"colorLoop":true,"xy":true,"colorTemperature":true},"clusterRevision":5,"featureMap":{"hueSaturation":true,"enhancedHue":true,"colorLoop":true,"xy":true,"colorTemperature":true},"attributeList":[0,1,2,3,4,7,8,15,16,17,18,19,21,22,23,25,26,27,32,33,34,36,37,38,40,41,42,16384,16385,16386,16387,16388,16389,16390,16394,16395,16396,16397,16400,65528,65529,65531,65532,65533],"acceptedCommandList":[0,1,2,3,4,5,6,7,8,9,10,64,65,66,67,68,71,75,76],"generatedCommandList":[],"currentHue":0,"currentSaturation":0,"currentX":24939,"currentY":24701,"colorTemperatureMireds":0,"enhancedCurrentHue":0,"colorLoopActive":0,"colorLoopDirection":0,"colorLoopTime":25,"colorLoopStartEnhancedHue":8960,"colorLoopStoredEnhancedHue":0,"colorTempPhysicalMinMireds":0,"colorTempPhysicalMaxMireds":65279,"coupleColorTempToLevelMinMireds":0,"startUpColorTemperatureMireds":0}}}}},"error":"undefined"}}
2024-10-01 16:40:34.821 [INFO ] [openhab.event.ItemStateUpdatedEvent ] - Item 'GoveeMatterNeon_Color' updated to ON
2024-10-01 16:40:34.821 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'GoveeMatterNeon_Color' changed from NULL to ON
  • Unfortunately after that no updates work on the item anymore. Neither if I switch it on or off again even though events are received:
2024-10-01 16:45:45.220 [DEBUG] [nternal.client.MatterWebsocketClient] - onWebSocketText {"type":"event","message":{"type":"attributeChanged","data":{"path":{"nodeId":"16482606113728065571","endpointId":1,"clusterId":6,"attributeId":0,"attributeName":"onOff"},"version":864697376,"value":true}}}
2024-10-01 16:45:45.221 [DEBUG] [nternal.client.MatterWebsocketClient] - attributeChanged message {"path":{"nodeId":"16482606113728065571","endpointId":1,"clusterId":6,"attributeId":0,"attributeName":"onOff"},"version":864697376,"value":true}
2024-10-01 16:45:45.222 [DEBUG] [rnal.converter.LevelControlConverter] - OnEvent: onOff
2024-10-01 16:45:47.627 [DEBUG] [nternal.client.MatterWebsocketClient] - onWebSocketText {"type":"event","message":{"type":"attributeChanged","data":{"path":{"nodeId":"16482606113728065571","endpointId":1,"clusterId":6,"attributeId":0,"attributeName":"onOff"},"version":864697377,"value":false}}}
2024-10-01 16:45:47.629 [DEBUG] [nternal.client.MatterWebsocketClient] - attributeChanged message {"path":{"nodeId":"16482606113728065571","endpointId":1,"clusterId":6,"attributeId":0,"attributeName":"onOff"},"version":864697377,"value":false}
2024-10-01 16:45:47.630 [DEBUG] [rnal.converter.LevelControlConverter] - OnEvent: onOff

When I toggle the Item:

  • to ON: an event is sent to the device
  • to OFF: nothing can be seen in the logs!

Because thats what the matter specification calls it and iā€™m going to stick to the specs otherwise our channels will become a naming nightmare over time.

Also note, that this binding is not even beta yet, there will be breaking changes between now and when i do release a beta, and thereā€™s probably a lot of details that are missing. So its great if people want to play with it, but i would caution expecting production quality details like channel labels to be important right now.

You should be linking a ā€œColorā€ item to a Color channel, which is the primary accepted item type for that channel. The Main UI would also generate this for you correctly. A switch should work eventually, but i donā€™t have that implemented yet in the code, its coming, but it sits in a long list of todos

2 Likes

Actually this is not true, i am correctly handling types. Can you show what your items look like ?

Sure, but I have to create it again because I just deleted it in favor of the Color item :smiley:

As I a just played around with color, here is another feedback: The color donā€™t seem to be correctly applied to the device. The reason I know is that I can control the device from my own Govee binding. When I send HSB 240, 100, 100 (=rgb 0,0,255) to the device via Matter, it should give me a nice dark blue (which my binding does) but it reveals a rather light blue with the Matter binding. (FYI: from experience I know that colors are a nightmareā€¦)

Here is the code for both channels:

UID: matter:endpoint:e26dd863e8:govee_matter_neon
label: Govee-Matter-Neon
thingTypeUID: matter:endpoint
configuration:
  commissionMode: false
  nodeId: "16482606113728065571"
  endpointId: 1
bridgeUID: matter:controller:e26dd863e8
channels:
  - id: LevelControl_dimmer
    channelTypeUID: matter:switch_level
    label: Level Control
    configuration: {}
  - id: ColorControl_color
    channelTypeUID: matter:color_color
    label: Color
    configuration: {}

and here the item:

label: GoveeMatterNeon_Color_Switch
type: Switch
category: switch
groupNames:
  - Arbeitszimmer
tags:
  - Point

Note: If I go to the item (which currently is ON) and I switch it of via the switch widget and the reload the item page, it is still ON.

Let me know, if I a joint debug session would helpā€¦

And the current state requires that any new user at least reads carefully your initial restrictions and instructions!

2 Likes

Included are the matter logs for the device, let me know if this works for you. In Home Assistant the device shows the following properties

matter.log (52.7 KB)

regards
Harry

Temper temper friendā€¦

Thanks, that perfect, Iā€™ll add it to my examples.

I appreciate that @Lolodomo is referring to the fact i have had to repeat a lot thats already posted in this thread, setup of this is a complicated matter (no pun intended) and not for the faint of heart, hopefully that changes soon. But if others want to play with it, it critical to read through this thread until i can get all the info in one place (the readme) .

3 Likes

Dan, for your information, I will be able to fully test the Tapo color bulb in few days and compare it with my current INNR white bulb (hue compatible).

1 Like

Dan, I just saw in GitHub that you implemented the new discovery way, thatā€™s great. Would be cool if you publish a new version once 4.3M2 is released.

Iā€™ll push a new version this weekend for sure, just buttoning up a few changes and fighting with IPV6 on my complicated network.

1 Like