First Time Using Matter

I’ve been hearing about Matter here and there for a while, but since its support is still Beta I never bothered trying it. That was until a couple of days ago after buying the Govee strip H612F and finding out that they are not supported by Govee Lights Local. Only one option was left for local control, for that matter (pun intended).

Perusing the docs hit the first bump: IPv6 is required. I always dismissed configuring my very segmented and filtered home network for IPv6 because it wasn’t worth the trouble. But with this new motivation I started to dust off my rusty concepts on the topic. A few areas were assured to guarantee headache: the router (a Cisco model), the firewall (also Cisco) and the DHCP server (Windows built-in). Hour after hour of research, trial and error finally got me to the milestone of being able to get a (unique local) IPv6 address across subnets and having other needed access through the firewall. Then gave HA its IPv6 config, tested it and moved onto the next step.

Matter setup. Very easy, simply enable the integration, let it install the Matter server addon and commission the Govee using the Companion…, not so fast. Commissioning would just fail. Checking the addon logs got the other bump: it was looking for the device’s link-local address. This was a non-starter because the HA host is segregated on a VLAN away from the IoT junk. (Link-local addresses can’t traverse subnets). So…, “where did I glance something about having your own Matter server (which I guess opens the possibility of having it on different subnet than HA)? Ah, the Matter integration docs.” Which send you to the Matter Server Github so that you can install it wherever you want. Fast forward to the evening when a new Ubuntu Server VM had been stood up on the same VLAN as the IoT, with the matter-server image running on Docker. Then pointed the HA Matter integration to the server websocket URL, which just worked to my surprise.

Ok, moment of the truth, try to commission the Govee again. Factory reset it, scanned the code and saw with delight how each stage advanced on the app until the final Device connected. Went over to HA and there was the device with a bunch of entities.

It’s been about a day and everything works fine controlling and getting status. The only quirk so far (unsurprisingly) is that if I set any transition time when turning the strip on or off, it actually does it with a transition of about 10 seconds.

This is the Matter Server log of the successful commissioning, maybe it could be a helpful reference for someone else:

2025-02-18 04:52:42.397 (MainThread) INFO [matter_server.server.device_controller] Starting Matter commissioning using Node ID 1 and IP fe80::d2c9:7ff:fe82:4b6.
2025-02-18 04:52:44.939 (Dummy-2) INFO [chip.ChipDeviceCtrl] Established secure session with Device
2025-02-18 04:52:58.656 (Dummy-2) INFO [chip.ChipDeviceCtrl] Commissioning complete
2025-02-18 04:52:58.657 (MainThread) INFO [matter_server.server.device_controller] Matter commissioning of Node ID 1 successful.
2025-02-18 04:52:58.657 (MainThread) INFO [matter_server.server.device_controller] Interviewing node: 1
2025-02-18 04:53:07.222 (MainThread) INFO [matter_server.server.device_controller] <Node:1> Setting-up node...
2025-02-18 04:53:07.225 (MainThread) INFO [matter_server.server.device_controller] <Node:1> Setting up attributes and events subscription.
2025-02-18 04:53:07.702 (MainThread) INFO [matter_server.server.device_controller] <Node:1> No new update found.
2025-02-18 04:53:14.911 (MainThread) INFO [matter_server.server.device_controller] <Node:1> Subscription succeeded with report interval [1, 60]
2025-02-18 04:53:14.912 (MainThread) INFO [matter_server.server.device_controller] Commissioning of Node ID 1 completed.
1 Like