Sensors, firmware, rooms

dev-smarthome

· Thread

Matter over Thread, from the bench

A weekend with a border router, a sleepy end device, and a dataset I should have backed up first.

I wanted one lamp on Thread, commissioned locally, visible in Home Assistant, with no account in the middle. The border router is OpenThread on a Raspberry Pi with a dongle. The lamp is a sleepy end device. Most of the weekend was not the lamp.

Dataset first

The operational dataset is the network. I formed it, commissioned nothing, and only then wrote the dataset to a file on the bench machine. The first attempt had the dataset only in the Pi's memory. A power cut later and the lamp was on a network that no longer existed. Backup is a text file. Treat it like a key.

IPv6 has to be dull and working before Matter is interesting. The Pi advertises the off-mesh route. My laptop could ping the border router's mesh-local address and could not ping the lamp until commissioning had created the child. That order matters. If the route is missing, commissioning fails in a way that looks like a bad QR code.

Sleep

The lamp polls. It does not sit on the radio. The first poll period I tried was long enough that the border router gave up on the child during commissioning and the session died at attestation. Shortening the poll while joining, then letting it sleep after the fabric was stored, made the join reliable.

A sleepy device that misses a few polls looks offline in Home Assistant even though the bulb is fine. I wait two poll periods before calling it a fault. One miss is the lamp doing its job.

What I can say after one weekend

Commissioning from Home Assistant, with the Thread credentials already on the border router, worked the third time. The QR code was never the problem. The dataset and the route were. I would not put a lock on this network yet. A lamp can sulk. A lock cannot.

Next time I will label the dongle, keep the dataset next to the other bench keys, and stop reforming the network because a single child was slow to answer.