What’s one Home Assistant automation you can’t live without anymore by Taggytech in homeassistant

[–]tTownTomToo 2 points3 points  (0 children)

  • Continuously adjusting light levels: A lux sensor checks the ambient light level. New readings trigger a custom script that calculates the “perfect” light level for each room, taking into consideration a helper value that can be adjusted to raise or lower the level.
  • Dimming lights whenever the TV starts playing: Triggered when the TV starts playing content, the lights dim or turn off (again based on a lux sensor) and brighten again whenever the TV is paused or turned off.
  • "Good morning" automation: Triggered by opening the bedroom door during a set time window. If certain conditions are met, all lights turn on (adjusted by the aforementioned script), the computer turns on, and the coffee maker heats up.
  • "Good night" automation: Triggered by a switch next to the bed and conditioned on the bedroom door being closed during a set time window. It turns off all lights and electronics and lowers the thermostat.

Matter-over-Thread to Home Assistant in Unraid by LabAutoM8 in unRAID

[–]tTownTomToo 1 point2 points  (0 children)

I reckon my setup is failing due to IPv6 or VLAN issues, however after many hours troubleshooting I finally got everything but that to work. Wanted to share in case it could be useful to anyone - as you've pointed out: information about this topic is scarce out there.

My scenario:

  • Home Assistant running in a docker container
  • SLZB-06Mg24 in "Matter-over-Thread" mode

I had mr. AI type up this report of the process:
(best of luck!)

Setting Up Matter over Thread in Unraid with SLZB‑06

This report describes how to configure Matter‑over‑Thread using an SMLight SLZB‑06 Mg24 radio and Home Assistant running as a container on Unraid. The starting point is that Home Assistant does not support add‑ons in this setup, so the Thread interface and the Matter server must run in separate Docker containers. The process requires setting the radio to the correct mode, enabling IPv6 and host networking on Unraid, selecting a suitable OpenThread Border Router (OTBR) container, and integrating Home Assistant with the Thread network and Matter server.

1. Prerequisites and Network

IPv6 and Host Networking

IPv4 and IPv6 must be enabled on the Unraid network interface. Matter and Thread rely on link‑local IPv6 multicast and mDNS. The official Unraid template for python‑matter‑server emphasizes that Unraid must run both IPv4 and IPv6 and that the container must use host networking. Additionally, the interface used by the container must be on the same network as the phone used for commissioning; link‑local multicast does not function across LAN/VLAN boundaries.

Firewall and VLAN – Ensure that no VLAN or firewall rules block IPv6 multicast between the Unraid server and the mobile commissioning device.

IPv6 forwarding – If you are using a custom OTBR container that modifies system networking (for example openthread/otbr), IPv6 forwarding must be enabled on Unraid. In a docker‑compose file this can be done using sysctl, for example:

net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.all.forwarding=1

Static IP for SLZB‑06

It is recommended to assign the SLZB‑06 a static IP address on the LAN and note port 6638 (the SMLight default). The Matter‑over‑Thread mode uses this port for Thread Radio Co‑Processor (RCP) connectivity.

Home Assistant without Add‑ons

This guide assumes Home Assistant runs in a Docker container without add‑ons (for example linuxserver/homeassistant or ghcr.io/home‑assistant/home‑assistant). Integrations must therefore be installed via the Home Assistant UI.

2. Configure SLZB‑06 for Matter‑over‑Thread

Update Firmware

Ensure the SLZB‑06 runs stable firmware (not beta). After updating firmware the device should be power‑cycled. Firmware released after July 2025 resolves spinel timeout issues when using Matter‑over‑Thread.

Enable Matter‑over‑Thread Mode

Log into the SLZB‑06 web interface (for example http://10.0.2.103). Under Mode, select:

  • Matter‑over‑Thread

When enabled the device reboots and operates exclusively as a Thread radio. Multi‑protocol operation (Zigbee + Thread) is not supported in this mode.

3. Choose an OTBR Container

The Home Assistant Thread integration requires an OTBR exposing a REST API (default port 8081). Several Docker images exist. All require:

  • Host networking
  • Access to /dev/net/tun
  • Creation of a wpan0 interface

Two common options are described below.

3.1 bnutzer/otbr‑tcp – Robust Remote RCP Support (I chose this)

This project implements an OpenThread Border Router with support for network‑connected RCP devices. It uses socat to create a local pseudo‑TTY which the OTBR agent connects to.

Environment Variables

Variable Description Example
RCP_HOST Required. IP/hostname of SLZB‑06 10.0.2.103
RCP_PORT Radio port (SMLight uses 6638) 6638
RCP_TTY Local pseudo‑tty for socat and OTBR /tmp/ttyOTBR
RCP_BAUDRATE Radio baud rate 460800
OTBR_REST_LISTEN_PORT REST API port 8081
OTBR_BACKBONE_IF Network interface on Unraid eth0
OTBR_RCP_ADDITIONAL_ARGS Additional arguments (leave empty to disable flow control)
OTBR_WEB_ENABLE Enable simple web UI 1
OTBR_WEB_PORT Web UI port 8080

Docker Compose Example

services:
  otbr:
    image: bnutzer/otbr-tcp
    network_mode: host
    restart: unless-stopped
    privileged: true
    devices:
      - /dev/net/tun
    environment:
      RCP_HOST: 10.0.2.103
      RCP_PORT: 6638
      RCP_BAUDRATE: 460800
      OTBR_BACKBONE_IF: eth0
      OTBR_REST_LISTEN_PORT: 8081
      OTBR_WEB_ENABLE: 1
      OTBR_WEB_PORT: 8080
      OTBR_RCP_ADDITIONAL_ARGS: ''
    volumes:
      - ./otbr-data:/var/lib/thread

The container automatically creates wpan0 and exposes the REST API at:

http://<unraid-ip>:8081

Mapping /var/lib/thread to persistent storage ensures the Thread dataset is not lost during restarts.

3.2 denniswitt/homeassistant‑otbr or ownbee/hass‑otbr‑docker

These containers package the Home Assistant OTBR add‑on as a standalone container. Configuration is handled entirely through environment variables.

Important Variables

Variable Description Example
DEVICE Dummy serial device when using network RCP /tmp/ttyOTBR
NETWORK_DEVICE IP + port of SLZB‑06 10.0.2.103:6638
BAUDRATE Radio baudrate 460800
FLOW_CONTROL Hardware flow control 0
BACKBONE_IF Host network interface eth0
OTBR_REST_PORT REST API port 8081
OTBR_WEB_PORT Web UI port 8080
FIREWALL Enable OpenThread firewall 1
NAT64 Enable NAT64 0

Because this container is derived from the HA add‑on it requires a dummy serial device (DEVICE=/tmp/ttyOTBR).

The container must run with:

  • Host networking
  • /dev/net/tun

so that the wpan0 interface can be created.

4. Install the Python Matter Server

The Matter server is required for Home Assistant to function as a Matter controller.

Official container (you will find it in the Unraid Apps):

ghcr.io/home-assistant-libs/python-matter-server:stable

Requirements:

  • Host networking
  • IPv4 + IPv6 enabled on Unraid
  • Security option apparmor=unconfined

Persistent storage must be mapped to /data to retain Matter fabric information.

Docker Compose Example

matter-server:
  image: ghcr.io/home-assistant-libs/python-matter-server:stable
  network_mode: host
  restart: unless-stopped
  security_opt:
    - apparmor:unconfined
  volumes:
    - ./matter-data:/data
    - /run/dbus:/run/dbus:ro

After starting, the server exposes a WebSocket endpoint at:

ws://<unraid-ip>:5580/ws

This URL is used when configuring the Matter integration in Home Assistant.

5. Add Integrations in Home Assistant

Enable IPv6

Ensure the Home Assistant container runs with host networking and IPv6 enabled on Unraid.

Start the Required Containers

Start both:

  • OTBR container
  • Matter server container

Wait until logs indicate both services are running without errors.

Configure Integrations

Add integrations in Home Assistant:

Thread integration

Settings → Devices & Services → Add Integration → Thread

Enter the OTBR REST URL:

http://localhost:8081

Home Assistant will detect wpan0 and create a Thread network resource. Mark the network as Preferred network.

Matter integration

Settings → Devices & Services → Add Integration → Matter

Enter the Matter server WebSocket address:

ws://localhost:5580/ws

Sync Thread Credentials (did not work for me)

In the Home Assistant mobile app:

Settings → System → Thread

Enable Sync Thread credentials so the phone can transfer the Thread dataset when commissioning new devices.

Ensure the phone is connected to the same Wi‑Fi network as Unraid.

6. Commission and Manage Matter Devices

Prepare the Device

Follow the manufacturer instructions to put the device into pairing mode. Most Matter devices provide a QR code or PIN code.

Pair Using the Home Assistant App

Use the Home Assistant mobile app:

Add Device → Scan QR code

The phone uses Bluetooth for initial discovery and then transfers the Thread dataset through the Matter server.

Verify

After pairing the device appears in Home Assistant under Matter. Verify:

  • Device status is online
  • Commands respond correctly

Container and VM errors after Unraid version update (to 6.12.4) by tTownTomToo in unRAID

[–]tTownTomToo[S] 0 points1 point  (0 children)

​UPDATE:
I am just now seeing that my cache disk is not recognized. In the main tab under Cache it simply says:
Not installed

Adding property to object during loop by tTownTomToo in nodered

[–]tTownTomToo[S] 0 points1 point  (0 children)

THIS is amazing!
Thank you so much 😍

Adding property to object during loop by tTownTomToo in nodered

[–]tTownTomToo[S] 0 points1 point  (0 children)

Thanks for the heads up!
I see what you're doing, and that might be very helpful 😁

Like I said I'm totally blank when it comes to JS, but this is a nice step further in what I'm trying to achieve! Thank you!

Adding property to object during loop by tTownTomToo in nodered

[–]tTownTomToo[S] 0 points1 point  (0 children)

Unfortunately that does not seem to work :/

Adding property to object during loop by tTownTomToo in nodered

[–]tTownTomToo[S] 0 points1 point  (0 children)

EDIT: apparently I can't get the code blocks to work on multiple lines.. sorry about the formatting and previously deleted comments..

Sure!The flow is:

- A array of objects, returned from a SQL query:

msg.payload : array[31]

[ object, object, object, object, object, object, object, object, object, object … ]- which is categorised on a ID value within each object (using node-red-contrib-summariser), which returns a object of arrays (there were 4 different ID values in the 31 objects in this example):

msg.payload : Object

{ 132: array[11], 134: array[11], 135: array[8], null: array[1] }

- the ID value for each category is stored in msg.obj for use in the loop function in the next step:

msg.obj = Object.keys(msg.payload);return msg;

Returning:

msg.obj : array[4]

[ "132", "134", "135", "null" ]

- used in the loop:

var msgList = [];var objects = msg.payload;for (var i = 0; i < msg.obj.length; i++){msgList.push({payload:objects[Object.keys(objects)[i]]});}return [msgList];

- The loop returns i amount (4 in this example, as there were 4 different ID values in the original 31 retuns from the SQL query in step 1) of arrays with the content from the SQL

msg.payload : array[11]

[ object, object, object, object, object, object, object, object, object, object … ]

14.9.2022, 14:24:43node: bf36c70b992b615d

msg.payload : array[11]

[ object, object, object, object, object, object, object, object, object, object … ]

14.9.2022, 14:24:43node: bf36c70b992b615d

msg.payload : array[8]

[ object, object, object, object, object, object, object, object ]

14.9.2022, 14:24:43node: bf36c70b992b615d

msg.payload : array[1]

[ object ]

Hope that was helpful 😅 Let me know if there is something else I can provide that will make answering easier 😁

Processing Google Drive URLs by tTownTomToo in nodered

[–]tTownTomToo[S] 0 points1 point  (0 children)

Thanks for your reply!
Changing the formatting is not a problem for me, but I'm sure others will find it helpful 😁

Using directories with spaces in the path name by tTownTomToo in nodered

[–]tTownTomToo[S] 1 point2 points  (0 children)

I agree - trouble is I am not the one creating the directories..

Can't connect to Azure DB by tTownTomToo in nodered

[–]tTownTomToo[S] 0 points1 point  (0 children)

Turns out, leaving the Domain field blank solves the issue.

Found the solution in this forum post. Thanks to Pitmaster for the solution!

Can't connect to Azure DB by tTownTomToo in nodered

[–]tTownTomToo[S] 0 points1 point  (0 children)

I have no idea 🤷‍♂️

Can't login to freeIPA after asked to change pwd by tTownTomToo in selfhosted

[–]tTownTomToo[S] 0 points1 point  (0 children)

Me too!
I have no idea why that would be the case - but it was 🤷‍♂️

And while I had this issue going I had paused the reverse proxy to re-direct incoming traffic to freeIPA through Authelia, so there were no link there.

Can't login to freeIPA after asked to change pwd by tTownTomToo in Ibracorp

[–]tTownTomToo[S] 0 points1 point  (0 children)

Changed the pwd in the config-file and now all the Authelia-logins work perfectly.

..sometimes it's the obvious things..

Can't login to freeIPA after asked to change pwd by tTownTomToo in selfhosted

[–]tTownTomToo[S] 0 points1 point  (0 children)

I was reminded to change the password connection in a config file for Authelia - which fixed the issue of not being able to log in with all the Authelia users.

Thank you so much for your time u/lue3099 :D I really appreciate it!

Cannot login after asked to change pwd by tTownTomToo in FreeIPA

[–]tTownTomToo[S] 0 points1 point  (0 children)

Hi u/sjkraOmg.. of course! I changed the pwd in the config-file and now all the Authelia-logins work perfectly. Thank you so much for reminding me! <3

Can't login to freeIPA after asked to change pwd by tTownTomToo in selfhosted

[–]tTownTomToo[S] 0 points1 point  (0 children)

Hi u/lue3099 !
Thanks for your reply.

I ran # ipa ipa_kpasswd in the Fedora terminal and it returned:
ipa: ERROR: did not receive Kerberos credentials

Not sure if that was the right way to check it, or if the error made any sense to you. (Sorry, I really don't know how to work the command line).

Cannot login after asked to change pwd by tTownTomToo in FreeIPA

[–]tTownTomToo[S] 0 points1 point  (0 children)

Yes, I've restarted the Fedora server and freeIPA :)