Matter Binding

Couple thermostat questions


Will Humidity be added?
Screenshot 2025-06-27 at 7.01.45 AM

Fan is not showing up in Apple Home

My Thermostat also has Away/Home/Sleep schedules
I’d like to add that to show up in Apple Home as read only

@Lolodomo Thanks for the suggestion. I will try it just to validate that things are working as they are intended, but this will create some other issues for me for which I will need to develop a work around. I need a pure number to interface with some other control systems, so I will have to create additional proxy items if this turns out to be the only solution. Interestingly, when I use the OH Home Kit Integration I do not have this problem. So perhaps there is a something that could be done in the Matter Binding to make it more robust.

Good catch, yeah i need to add humidity and fan control to the Thermostat bridge (and possibly others). I’ll look at that this week.

For those of you who haven’t figured it out yet, I’ve posted a How To on getting the Matter binding running within a Docker container on a Synology DiskStation: How To: Implementing Matter with Docker (or Container Manager) on a Synology Disk Station

1 Like

Hi,

I’m sorry, I couldn’t find the procedure. I have two questions:

  • How to create matter “water heater” from two items? I have an item “switch” for on/off and an item for temperature setting, matter should show it as one device.
  • How to set “offline” status of matter device? I have a thermometer, occasionally wifi goes down, thing is offline, but matter device looks like it is online with last known value.

I have installed OpenHAB-5.0.0-SNAPSHOT and am using the UI environment.

Thanks for the binding and your work!

When I start openHAB, I get the following message:

2025-07-04 14:39:17.471 [INFO ] [.matter.internal.bridge.MatterBridge] - No devices found to register with bridge, not starting bridge

This message is confusing because the bridge is starting and everything is working as expected. There may be a timing issue during startup.

Latest Test with code from this branch

btw: I got some build warnings:

[WARNING] /usr/src/matter/openhab-addons/bundles/org.openhab.binding.matter/src/main/java/org/openhab/binding/matter/internal/bridge/AttributeState.java:[65,13] Redundant null check: comparing ‘@NonNull Object’ against null
[WARNING] /usr/src/matter/openhab-addons/bundles/org.openhab.binding.matter/src/main/java/org/openhab/binding/matter/internal/bridge/AttributeState.java:[65,36] Redundant null check: comparing ‘@NonNull Object’ against null
[WARNING] /usr/src/matter/openhab-addons/bundles/org.openhab.binding.matter/src/main/java/org/openhab/binding/matter/internal/bridge/AttributeState.java:[65,51] Dead code
[WARNING] /usr/src/matter/openhab-addons/bundles/org.openhab.binding.matter/src/main/java/org/openhab/binding/matter/internal/bridge/AttributeState.java:[68,13] Redundant null check: comparing ‘@NonNull Object’ against null
[WARNING] /usr/src/matter/openhab-addons/bundles/org.openhab.binding.matter/src/main/java/org/openhab/binding/matter/internal/bridge/AttributeState.java:[68,28] Dead code
[WARNING] /usr/src/matter/openhab-addons/bundles/org.openhab.binding.matter/src/main/java/org/openhab/binding/matter/internal/bridge/AttributeState.java:[71,19] Redundant null check: comparing ‘@NonNull Object’ against null
[WARNING] /usr/src/matter/openhab-addons/bundles/org.openhab.binding.matter/src/main/java/org/openhab/binding/matter/internal/bridge/AttributeState.java:[71,34] Dead code

These variables are @NonNull and the compiler does not like the null check.

Thanks @ThomasM102 , i just fixed those warnings. As for the log message, if the bridged started up, there should be a lot of logs, especially in debug mode that would indicate so, do you have those?

Matter now normally runs with log level INFO on my openHAB server. This is the only message I get.
Attached is the log file from the startup with log level TRACE.

matter.log (257.1 KB)

The README has all the supported Matter device types listed there, water heater is not one of them, mostly because both Google and Alexa do not list these as supported yet, also i think this was added in matter 1.4, which has not rolled out yet by the big three, except for maybe the ios 26 beta.

Thats a tough one as we interact with items and not things. I could add the option to tag a switch or contact item as an optional online/offline indicator, but that item would need to be manually wired up through a rule or something to know if a thing is online/offline.

Are you using the bridge portion of the binding? All I see from the logs is an actual matter device (so the client functionality).

@digitaldan, thanks for the reply and “Water Heater” is a bad example. I’ll ask about the “On/Off Plug In Unit”, it has a switch and a dimmer. How do you combine the two items into one matter device please?

An online/offline option would be good and I thought I’d set it up via a rule based on the online/offline status thing.

Thank you.

Good point. No, I don’t need that. I only use a matter controller. All my matter things:

So I would have expected not to get a message about a bridge not starting if I do not use it.

Thats saying that a Switch OR a Dimmer can be used as an Item type for a On/Off Plug in unit, which is just that, a device that can be toggled ON or OFF. The examples show how to configure these. For instance, it could be

Dimmer TestDimmer "Test Dimmer [%d%%]" {matter="DimmableLight"}
OR
Dimmer TestDimmer "Test Dimmer [%d%%]" {matter="OnOffPlugInUnit"}

The difference will be in what Alexa/Apple/Google sees and displays (either a dimmer or switch, and possibly a different icon)

1 Like

Hi Dan,
I’m struggling with bringing a google home matter device into OH. (Goal is to get my Gen4 thermostats into OH even if the control is somewhat limited.)

I’ve got OH running in docker in a VM. The container is using host mode networking and, as far as my understanding goes, ip6 is properly functioning all the way through that stack to the container.

I’m on the latest snapshot +/- a day or two. I have the binding installed and I can use the Matter bridge to add OH devices to Google Home (which is pretty cool, nice work!), so it seems that most of the basic components are in fact working.

I’ve added a controller thing manually:

UID: matter:controller:0f55824efb
label: Matter Controller
thingTypeUID: matter:controller
configuration:
  nodeId: "9471"

and it registers as online.

The issue, if I understand what is going on (which may not be true), is that I cannot seem to get Google Home to recognize that controller as a potential 3rd party client and so it will not generate the pairing code for any items already controlled by Google home.

On trace I see only what I suspect are basic heartbeat messages every 30s or so:

2025-07-04 15:18:33.765 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: New exchange channel: udp://[****::****:****:****:****%eth0]:5540 on session secure/14540 protocol: 1 exId: 10531 sess: secure/14540 peerSess: 15119 SAT: 4000 SAI: 300 SII: 500 maxTrans: 5 MRP I
2025-07-04 15:18:33.767 [TRACE] [ternal.client.MatterWebsocketService] - ExchangeManager: Message » for: I/ReportData subId: 827510003 empty suppressResponse msgId: 15119/10531/250045908 type: 0x1/0x5 reqAck size: 13 payload: 152600f3cc5231290424ff0c18
2025-07-04 15:18:33.771 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: Message « for: SC/StandaloneAck msgId: 14540/10531/165666416 type: 0x0/0x10 acked: 250045908

No log activity occurs when I go through the Google Home app Device SettingsDevice InformationLinked Matter apps and services.

Any idea what I’m doing wrong?

So, if i understand, you are 1) using google home to generate a pairing code for the Nest thermostat. You are then 2) using that code (within 15 minutes) in the controller thing in the main ui using the “pair matter device” action.

Once Google Home requests a pairing code from the device, it is no longer in the path, openHAB uses this code to discover (mdns) and pair the device directly, which is one of the strengths of matter.

Can you confirm those are the steps you followed? The Main UI will give a useful error message if it does not work (was added in the build you are using). There should be a whole lot more TRACE logs either way once the pairing (commissioning) process starts.

I also have a Nest 4 and did the exact same steps above to pair mine.

Not quite. I never make it past step 1. There is never any option in the Google home app where it lets me generate the code. The thermostat is fully installed and functional in google home otherwise.

I toyed with all this a while back before it all was stable and if I recall in the Google Home app it had to know that OH was a legitimate matter controller before I had the option to generate the code (I very well could be mis-remembering). So I’m wondering if there’s a step I’m missing with regards to connecting OH and the Google Home app before I can even generate codes. (Or what the steps are that I should be taking in Google home to generate the code, maybe I’m just plain doing that wrong.)

OK, solved that problem. Now I am getting some trace logs and a failure to actually add the device:

2025-07-04 18:34:33.471 [DEBUG] [al.controller.MatterControllerClient] - sendMessage: {"id":"83e0b1d7-6564-4418-943c-80be7e14bb76","namespace":"nodes","function":"pairNode","args":["22864205455"]}
2025-07-04 18:34:33.472 [TRACE] [ternal.client.MatterWebsocketService] - Controller: Received request: {"id":"83e0b1d7-6564-4418-943c-80be7e14bb76","namespace":"nodes","function":"pairNode","args":["22864205455"]}
2025-07-04 18:34:33.472 [TRACE] [ternal.client.MatterWebsocketService] - ClientController: Executing function nodes.pairNode(["22864205455"])
2025-07-04 18:34:33.473 [TRACE] [ternal.client.MatterWebsocketService] - PeerCommissioner: Connecting to device with identifier {"shortDiscriminator":9} and 1 scanners and knownAddress "undefined"
2025-07-04 18:34:33.473 [TRACE] [ternal.client.MatterWebsocketService] - ControllerDiscovery: Start Discovering devices using identifier {"shortDiscriminator":9} ...
2025-07-04 18:34:33.473 [TRACE] [ternal.client.MatterWebsocketService] - ControllerDiscovery: Found 1 devices using identifier {"shortDiscriminator":9}
2025-07-04 18:34:33.473 [TRACE] [ternal.client.MatterWebsocketService] - ControllerDiscovery: Server addresses to try: udp://[****::****:****:****:****%eth0]:5540 (Nest Learning Thermostat 4th gen)
2025-07-04 18:34:33.473 [TRACE] [ternal.client.MatterWebsocketService] - ControllerDiscovery: Try to communicate with udp://[****::****:****:****:****%eth0]:5540 ...
2025-07-04 18:34:33.474 [TRACE] [ternal.client.MatterWebsocketService] - PeerCommissioner: Establish PASE to device SII: 300 SAI: 1500 SAT: 4000 T: 0 DT: 769 PH: 36 ICD: 0 VP: 24582+13 DN: Nest Learning Thermostat 4th gen PI: 
2025-07-04 18:34:33.474 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: New exchange channel: udp://[****::****:****:****:****%eth0]:5540 on session insecure/7743461352593719872 protocol: 0 exId: 13162 sess: insecure/7743461352593719872 peerSess: 0 SAT: 4000 SAI: 1500 SII: 300 maxTrans: 5 MRP I
2025-07-04 18:34:33.474 [TRACE] [ternal.client.MatterWebsocketService] - ExchangeManager: Message » for: SC/PbkdfParamRequest msgId: 0/13162/144332667 type: 0x0/0x20 reqAck size: 79 payload: 153001208c740c9e1b43c0d9dbdc1be51520dde2e39d400d0d66264d1d969d4af6aa58b02502540f240300280435052501f40125022c012503a00f24041224050c26060001040124070a2408001818
2025-07-04 18:34:33.885 [TRACE] [ternal.client.MatterWebsocketService] - DeviceAdvertiser: Resubmission started, re-announce node 7743461352593719872
2025-07-04 18:34:33.885 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: Resubmit message 144332667 (retransmission attempt 1, backoff time 381ms))
2025-07-04 18:34:33.885 [TRACE] [ternal.client.MatterWebsocketService] - ExchangeManager: Message » for: SC/PbkdfParamRequest msgId: 0/13162/144332667 type: 0x0/0x20 reqAck size: 79 payload: 153001208c740c9e1b43c0d9dbdc1be51520dde2e39d400d0d66264d1d969d4af6aa58b02502540f240300280435052501f40125022c012503a00f24041224050c26060001040124070a2408001818
2025-07-04 18:34:33.887 [TRACE] [ternal.client.MatterWebsocketService] - DeviceAdvertiser: Announcing fabricIndex: 1 fabricId: 1
2025-07-04 18:34:33.887 [TRACE] [ternal.client.MatterWebsocketService] - MdnsBroadcaster: Announcement Generator: Fabric id: 480BA19C966C9562-00000000F4D11E66 qname: 480BA19C966C9562-00000000F4D11E66._matter._tcp.local port: 5540 interface: eth0
2025-07-04 18:34:33.887 [TRACE] [ternal.client.MatterWebsocketService] - MdnsBroadcaster: Announcement Generator: Fabric id: 3769ABD3F2A1EF34-4C776A16C40316F7 qname: 3769ABD3F2A1EF34-4C776A16C40316F7._matter._tcp.local port: 42917 interface: eth0
2025-07-04 18:34:34.268 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: Resubmit message 144332667 (retransmission attempt 2, backoff time 559ms))
2025-07-04 18:34:34.268 [TRACE] [ternal.client.MatterWebsocketService] - ExchangeManager: Message » for: SC/PbkdfParamRequest msgId: 0/13162/144332667 type: 0x0/0x20 reqAck size: 79 payload: 153001208c740c9e1b43c0d9dbdc1be51520dde2e39d400d0d66264d1d969d4af6aa58b02502540f240300280435052501f40125022c012503a00f24041224050c26060001040124070a2408001818
2025-07-04 18:34:34.827 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: Resubmit message 144332667 (retransmission attempt 3, backoff time 863ms))
2025-07-04 18:34:34.827 [TRACE] [ternal.client.MatterWebsocketService] - ExchangeManager: Message » for: SC/PbkdfParamRequest msgId: 0/13162/144332667 type: 0x0/0x20 reqAck size: 79 payload: 153001208c740c9e1b43c0d9dbdc1be51520dde2e39d400d0d66264d1d969d4af6aa58b02502540f240300280435052501f40125022c012503a00f24041224050c26060001040124070a2408001818
2025-07-04 18:34:35.691 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: Resubmit message 144332667 (retransmission attempt 4, backoff time 1531ms))
2025-07-04 18:34:35.691 [TRACE] [ternal.client.MatterWebsocketService] - ExchangeManager: Message » for: SC/PbkdfParamRequest msgId: 0/13162/144332667 type: 0x0/0x20 reqAck size: 79 payload: 153001208c740c9e1b43c0d9dbdc1be51520dde2e39d400d0d66264d1d969d4af6aa58b02502540f240300280435052501f40125022c012503a00f24041224050c26060001040124070a2408001818
2025-07-04 18:34:37.222 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: Message 144332667: Wait additional 4698ms for processing time and peer resubmissions after all our resubmissions
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] - ControllerDiscovery: Failed to communicate with udp://[****::****:****:****:****%eth0]:5540, try other servers ... [retransmission-limit-reached] Operation timed out
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -   at #retransmitMessage (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/protocol/MessageExchange.js?:411:37)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -   at StandardTimer.eval [as callback] (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/protocol/MessageExchange.js?:404:42)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -   at Timeout.eval [as _onTimeout] (webpack://matter-server/./node_modules/@matter/general/dist/cjs/time/Time.js?:142:12)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -   at listOnTimeout (node:internal/timers:569:17)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -   at process.processTimers (node:internal/timers:512:7)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] - Controller: Error executing function pairNode: Failed to connect on any discovered server
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] - Controller: Stack trace: Error: Failed to connect on any discovered server
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -     at ControllerDiscovery.iterateServerAddresses (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/peer/ControllerDiscovery.js?:192:15)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -     at async ControllerCommissioner.discoverAndEstablishPase (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/peer/ControllerCommissioner.js?:138:26)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -     at async ControllerCommissioner.commissionWithDiscovery (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/peer/ControllerCommissioner.js?:160:50)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -     at async MatterController.commission (webpack://matter-server/./node_modules/@project-chip/matter.js/dist/cjs/MatterController.js?:291:21)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -     at async CommissioningController.commissionNode (webpack://matter-server/./node_modules/@project-chip/matter.js/dist/cjs/CommissioningController.js?:150:20)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -     at async Nodes.pairNode (webpack://matter-server/./src/client/namespaces/Nodes.ts?:133:36)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -     at async ClientController.handleRequest (webpack://matter-server/./src/Controller.ts?:25:37)
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] - Controller: Error name: Error
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] - Controller: Error id: pair-retransmission-limit-reached
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] - Controller: Full error object: {
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] -     "stack": "Error: Failed to connect on any discovered server\n    at ControllerDiscovery.iterateServerAddresses (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/peer/ControllerDiscovery.js?:192:15)\n    at async ControllerCommissioner.discoverAndEstablishPase (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/peer/ControllerCommissioner.js?:138:26)\n    at async ControllerCommissioner.commissionWithDiscovery (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/peer/ControllerCommissioner.js?:160:50)\n    at async MatterController.commission (webpack://matter-server/./node_modules/@project-chip/matter.js/dist/cjs/MatterController.js?:291:21)\n    at async CommissioningController.commissionNode (webpack://matter-server/./node_modules/@project-chip/matter.js/dist/cjs/CommissioningController.js?:150:20)\n    at async Nodes.pairNode (webpack://matter-server/./src/client/namespaces/Nodes.ts?:133:36)\n    at async ClientController.handleRequest (webpack://matter-server/./src/Controller.ts?:25:37)",
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] -     "message": "Failed to connect on any discovered server"
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] -   }
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] - Controller: --------------------------------
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] - Controller: [pair-retransmission-limit-reached] Failed to connect on any discovered server
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] -   at ControllerDiscovery.iterateServerAddresses (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/peer/ControllerDiscovery.js?:192:15)
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] -   at async ControllerCommissioner.discoverAndEstablishPase (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/peer/ControllerCommissioner.js?:138:26)
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] -   at async ControllerCommissioner.commissionWithDiscovery (webpack://matter-server/./node_modules/@matter/protocol/dist/cjs/peer/ControllerCommissioner.js?:160:50)
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] -   at async MatterController.commission (webpack://matter-server/./node_modules/@project-chip/matter.js/dist/cjs/MatterController.js?:291:21)
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] -   at async CommissioningController.commissionNode (webpack://matter-server/./node_modules/@project-chip/matter.js/dist/cjs/CommissioningController.js?:150:20)
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] -   at async Nodes.pairNode (webpack://matter-server/./src/client/namespaces/Nodes.ts?:133:36)
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] -   at async ClientController.handleRequest (webpack://matter-server/./src/Controller.ts?:25:37)
2025-07-04 18:34:41.924 [DEBUG] [al.controller.MatterControllerClient] - onWebSocketText {"type":"response","message":{"type":"resultError","id":"83e0b1d7-6564-4418-943c-80be7e14bb76","result":"undefined","error":"Failed to connect on any discovered server","errorId":"pair-retransmission-limit-reached"}}
2025-07-04 18:34:41.923 [TRACE] [ternal.client.MatterWebsocketService] - ControllerDiscovery: Server addresses to try: udp://[****::****:****:****:****%eth0]:5540 (Nest Learning Thermostat 4th gen)
2025-07-04 18:34:41.924 [DEBUG] [al.controller.MatterControllerClient] - result type: resultError 
2025-07-04 18:34:41.924 [TRACE] [ternal.client.MatterWebsocketService] - matter: Sending response: {"type":"response","message":{"type":"resultError","id":"83e0b1d7-6564-4418-943c-80be7e14bb76","result":"undefined","error":"Failed to connect on any discovered server","errorId":"pair-retransmission-limit-reached"}}

On an pseudo-related note: In my various misguided attempts this morning I accidentally clicked on the Controller’s execute pairing button in the UI with no pairing code input. If you execute the pairing action with a blank input for the code, it still reports back success adding a device to the inbox:

Ah, thanks for the report, thats not something i actually tried :wink:

The logs show it found your nest via MDNS, but could not connect to the IPV6 at udp://[****::****:****:****:****%eth0]:5540 so its very likely IPV6 routing is not working for your instance. It would be helpful to know the first part of the IPV6 address to know if its link local or global, but its likely the VM is not able to reach that IPV6 address. sounds like there are layers of networking going on.

Ah Ok. I’m working with ipv6 for the first time here. I thought I had it worked out. I thought these regular messages:

2025-07-04 15:18:33.765 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: New exchange channel: udp://[****::****:****:****:****%eth0]:5540 on session secure/14540 protocol: 1 exId: 10531 sess: secure/14540 peerSess: 15119 SAT: 4000 SAI: 300 SII: 500 maxTrans: 5 MRP I
2025-07-04 15:18:33.767 [TRACE] [ternal.client.MatterWebsocketService] - ExchangeManager: Message » for: I/ReportData subId: 827510003 empty suppressResponse msgId: 15119/10531/250045908 type: 0x1/0x5 reqAck size: 13 payload: 152600f3cc5231290424ff0c18
2025-07-04 15:18:33.771 [TRACE] [ternal.client.MatterWebsocketService] - MessageExchange: Message « for: SC/StandaloneAck msgId: 14540/10531/165666416 type: 0x0/0x10 acked: 250045908

plus the fact that I can control a OH item in Google Home indicated the routing is working. I guess there’s at least one more piece I need to learn.

I’m not sure how much you need: udp://[fe80::32fd:****:****:****%eth0]:5540

Thanks, I’ll dive back into the ipv6 stuff and see if I can figure out where I went wrong

If you mean you have exposed items using the matter bridge to Google Home (and not using our GA assistant, which does not use matter/ipv6) , then its possible it could be falling back to IPV4 to connect, technically matter does work over IPV4, and we support this both in the bridge and client, but its not required and not very talked about, only IPV6 is required, unfortunately the Nest does not seem to advertise a IPv4 address at all (otherwise we would have tried connecting to that after IPV6 failed).

That is a link local IPV6 address (fe80), it is not routable across networks/subnets/vlans and is not globally unique. I’m not sure how your VM is plumbed on your network? But if everything is not on the same subnet, its going to be tough.

1 Like

Thought I had it before, but you were right, I missed one layer and the local prefix was wrong. I’ve got it all fixed up and my nests are connected to OH. Thanks again.

1 Like