Matter Binding (Marketplace, Deprecated)

I think you are probably correct :wink:

That worked, thanks.
Here’s the logs of one cycle of going offline and online again
logfile (1).txt (640.5 KB)

Thanks, would it be possible to get more of the earlier part of that log? It starts in the middle of requesting data, so does not include the original handshake that created the session that would eventually timeout. Also how close is the device to the thread router?

There’s a new Jar out with some new features and cleanups

  1. Renames the Thing bridge-endpoint to endpoint (see below for more info)
  2. Add node parent process checker to prevent orphaned node process.
  3. Adds new Fan device type for bridge.
  4. Fixes Thermostat bridge device options (uses dashes instead of periods)
  5. Adds bridge status message to settings
  6. Stops bridge from starting on errors
  7. Lots of internal cleanup (README, constants, logging etc..)

For those using bridges (Ikea, BAF, Hue, etc…) I have renamed the bridge-endpoint to just endpoint as its really just a standalone endpoint, and i never like the old name. Technically this can be used for non-bridge endpoints as well. Right now, bridge-endpoint will continue to work, but i will remove it in a future release, so please remove those devices and the parent bridge node and then add it again (they will use the new name) and update your items accordingly. Apologies for the inconvenience.

1 Like

Thanks Dan for adding fan support. How would I convert the following from Google Assistant to Matter:

Switch ceilingFan "Ceiling Fan" {channel="xxx", ga="Fan"}

Usually this would require a group item since there are multiple controls for a fan (that we would normally map to different items). But i can see sometimes wanting just a single item, so made a change to support that use case.

please update to the jar i just posted and then try:

Switch ceilingFan "Ceiling Fan"  {matter="Fan, fanControl.fanMode"}

Thanks for the update, the fan is showing up in Google Home, but has a slider from 0-100 and if I change the percentage, I get an error: Something went wrong. Turning the fan on/off doesn’t update the fan in Google Home either. I don’t see any errors in openHAB.

So, i’ll need to look into this more, but in Matter when exposing a Fan device, the PercentSetting (so the slider) attribute is required, so its likely this will need to be a group with multiple items after all. Since your item is a simple OnOFF device where you are not controlling speed, why not tag it as a OnOffPlugInUnit ? like:

Switch ceilingFan "Ceiling Fan"  {matter="OnOffPlugInUnit"}

Then the icon is a outlet instead of a fan. How does fanControl-fanModeSequence work? I see that fan mode 5 is OffHigh and works with a switch.

Screenshot 2025-02-23 at 7.44.44 PM

So in the above screenshot from Alexa, there are 3 parts, a Switch (on), the percent current setting (36) and the mode sequence (medium). The slider (percent) and mode (and the power is tied to the mode) are mandatory, so you can not omit them. fanControl-fanModeSequence simply states what modes you support, which i assume will be what’s populated in that mode button options. This is all part of the matter spec, so it not me limiting the options fyi.

maybe if you could tell me a bit about the physical device you are controlling (and the binding controlling it) i might be able to help better. Also i fully expect i need to tweak the Fan device as i literally just wrote the code yesterday and do not actually have a fan to test on.

I am using the Insteon binding. I have a couple in wall switches that turn on/off ceiling fans. Here’s the item config I’m currently using:

Switch mGreatCeilingFan     "Great Room Ceiling Fan"     <fan_ceiling>     (mGreat, cFan)          ["CeilingFan"]  {channel="insteon:device:home:24f27e:switch", matter="Fan, fanControl.fanMode"}

It was originally

Switch mGreatCeilingFan     "Great Room Ceiling Fan"     <fan_ceiling>     (mGreat, cFan)          ["CeilingFan"]  {channel="insteon:device:home:24f27e:switch", ga="Fan"}

I don’t care if I need to create a group to control this. Just so I can get ā€œHey Google, turn on the ceiling fanā€ to work.

Let me work on it a little today. I’m just reading the Matter Device Type specification again, and while a Fan device has ON and OFF in the sequence mode attribute (thats the mode button in Alexa), the spec also says the Device can also support a separate ON/OFF cluster (like a switch), which is probably more akin to what you want, but didn’t realize that when i wrote it. Its not a big change, but i’m guessing thats what Alexa would be using when you ask it to turn it on/off.

1 Like

New Jar is out, updates the Fan bridge device type , also upgrades to the latest matter.js which has some connection improvements.

@ranielsen try this for your fan

Switch ceilingFan "Ceiling Fan"  {matter="Fan, onOff.onOff"}

This forgoes needing a group and creates a Fan device that reacts to ON/OFF, Alexa successfully uses this for the ā€œON/OFFā€ voice command and in the UI.

1 Like

Awesome, this works exactly the way it used to with Google Assistant. Thanks for implementing!

1 Like

Dan, it looks like you kept bridge-endpoint for dynamic thing type:

UID: matter:endpoint:openhab:hubSwitchbot:meterPlus1
label: Meter Plus 1
thingTypeUID: matter:bridge-endpoint_11359365265881931550_7
configuration:
  endpointId: 7
bridgeUID: matter:node:openhab:hubSwitchbot

Maybe matter:bridge-endpoint_11359365265881931550_7 should be renamed into matter:endpoint_11359365265881931550_7 ?

I am runnign version 4.3.0.202502262236 of the binding.

If I press on the phone with the Home app I get:

Screenshot_20250228-063724

One thing I noticed is that the fan speed doesn’t change when the fan is turned on/off. Also, the slider is functional, but when I move it, I get an error. Maybe if the slider is anything other than 0, it goes to 100?

Hello!

I used my free time in the last few days with the target of getting this to work.
Since i had other issues with my setup and the transition to proxmox i took a deep dive into my network setup and changed quite a lot.

Now i don’t have any multicast feedback loops that caused my lxc vm and docker containers to throttle and everything seems pretty stable.

I even got the router option to work in the knx binding which uses multicast. I read the matter readme multiple times but it is still not working.

My setup:
Nanoleaf Shapes Matter Router (connectetd via wifi to my network).
A Matter Nanoleaf Spot that is connected to the Matter Rotuer via Thread.
I can control both of them using Homekit. Here i started the pairing process to connect it to openHAB but it does not find anything.

I attached my router ipv6 settings and some screenshots of my proxmox setup. I hope you can help.

Router (Vigor 166 Draytek):
Bildschirmfoto 2025-02-28 um 13.24.01
Bildschirmfoto 2025-02-28 um 13.32.05
Bildschirmfoto 2025-02-28 um 13.32.18

Proxmox PVE network:
PVE GUI
pve
pve2

proxmox openhab lxc network:

oh1
oh2

EDIT: I reconized that often when i try to add another thing in the matter binding the UI gets ā€œstuckā€ and i have to reinstall the binding in order to try again:

Bildschirmfoto 2025-02-28 um 14.11.45

Not sure i understand? The bridge-endpoint is deprecated, but existing things will work for a while until i fully remove it, any newly discovered endpoints on a bridge will use endpoint. Did i miss something (besides the README example config, i’ll fix that).

Right , your item is a single Switch mapped to ON/OFF, so we have no idea what the speed is. I guess i could fake it and say ON is 100% if there is no group member item withe the fanControl.percentSetting tagged. Then again, this becomes harder if the fanControl.fanMode is set and not the percent setting, what do i map those too? I guess probably 100%, its a little hacky, but i guess would probably work.

i don’t see where you describe how you are trying to do this in openHAB, step by step? Like, i create a controller, (Screen shot), i generate a code from apple, i try adding it using the scan button (screen shot) , here’s the TRACE logs, etc… etc…

Right now i have no data to help you with. At a minimum i would need logs.

I don’t see any ipv6 config in the interfaces config file. Could you post the output of ā€œip addrā€ on your OH server please?