Matter & Thread: where we’re at

Is it possible to use the skyconnect dongle on a remote machine and connect to it with ZHA over the network? This is what I do for zwave and zigbee currently because HA OS runs in a vm on a server in my basement.

I can think of one possible way, in theory at least.
On your remote machine where the SkyConnect will reside, use the HA Multiprotocol/multipan software. You can do this either running another instance of HA with the Multiprotocol Add-On or perhaps compile/build it yourself. At your main HA where ZHA resides, instead of configuring ZHA to use a serial/USB device, configure it to use the socket address to connect it to the multiprotocol/multipan software. This socket config will look something like socket://ip_of_remote:9999.

my home assistant runs virtualized on one machine (with no USB support)
it connects to a pi where i run things like frigate, zwave2mqtt (i use integration not mqtt)

I see the skyconnect says it supports zigbee2mqtt (with the experimental firmwatre)
I am a little confused…
If i put skyconnect on the pi, run zigbee2mqtt will i be able to use all the skyconnect thread/mattter/zigbee features?

you seem to know what you are talking about so hope you can takt eh the time to clarify!

1 Like

I’m still coming up to speed on Thread and Matter, but I can speak a little bit to your questions on Zigbee and hopefully help you out a little…

SkyConnect comes from the factory loaded with a ZigBee stack, so zigbee2mqtt can use the SkyConnect directly as any other zigbee usb stick. The protocol used by zigbee2mqtt to talk to the SkyConnect is called EZSP, which is a Silicon Labs protocol that is used to talk to their ZigBee Stack (SkyConnect by the way uses Silicon Labs chipset). zigbee2mqtt has implemented EZSP but they have labeled it as “experimental”, but best I can tell, its been that way for some time and users have been using it just fine.

If one wants to use SkyConnect for both ZigBee and Thread, then Homeassistant provides a solution using their “Multiprotocol” Add-On (which itself is based on Silicon Labs software). This Add-On contains the Zigbee stack (and the Thread stack) and the Add-On can NOT use the original firmware on the SkyConnect. So the Add-On requires the original firmware on SkyConnect to be replaced with something else that the AddOn needs. When you set up the AddOn, there is a selection switch in the config that allows the AddOn to “automatically” replace this firmware. Once this is done, then anything needing the zigbee stack, such as zigbee2mqtt, has to use a socket instead of a serial usb /dev/xxx because the zigbee stack that now resides inside the AddOn requires the application using its Zigbee stack to use a socket. I have had success doing this with zigbee2mqtt, but there are currently some bugs and instability issues, so I would not use zigbee2mqtt with the Multiprotocol Add-On until things settle out.

As for Matter and Thread, the HA solutions to this, which also includes the Multiprotocol Add-On and SkyConnect, are things I’m trying to learn more about, so can’t provide much more insight.

When it comes to splitting things up between HA on a VM, and things running on the PI, I think for sure that you can have an HA instance on the Pi that runs zigbee2mqtt along with the multiprotocol Add-On and use MQTT as the messaging protocol back to your HA instance on the VM. That should work just fine. As for splitting Matter and Thread between your VM and Pi, I’ll have to dig further.

3 Likes

Now with 2023.3 out and several point releases, I turned on the Thread integration and was able to see my nest network. The new panel seems to have some of the functionality described in the mock. Do you know when we will get the synchronization/merge of networks? Or even being able to set the preferred network?

You should be able to set the preferred network now. If you make an attempt to set the preferred network but find that it doesn’t seem to work, then one solution appears in the following thread:

“Matter & Thread: where we are”. No need for the “at”.
Never end a sentence, a preposition with.

Hopefully we start seeing more thread and matter devices shipping.

1 Like

I tried this out yesterday with an Eve Energy plug and everything worked as described and I can control the power state of the plug in HA. For some reason, the power monitoring is not being detected in HA though this might be a device problem because the Eve app shows zero watts usage even though there is a load on the plug.

This can take quite a while until the Eve Energy shows the real values in HA, for me it was two days!

1 Like

I read that the current Matter standards do NOT include energy monitoring features: If you read the description of the Eve Energy plugs carefully, it is only the Eve app that allows you to read energy monitoring data. Consequently, HA is currently not able to receive consumption data, if I’m right.

Can some expert confirm?

1 Like

Thats the way I read it - and as far as corroboration: Do Matter devices support smart energy management? - Stacey on IoT | Internet of Things news and analysis

1 Like

I re-flashed the SkyConnect firmware before, using https://skyconnect.home-assistant.io/firmware-update/.
Today I installed OpenThread border router, and it flashed my SC dongle.
After that, my zha won’t load, b/c of custom quirks. So I disabled quirks, rebooted and all, but it won’ t load.
So I flash the SC again using the FW update tool, but whatever I do, it ends after a few minutes with these errors.
Euh , help? I’ ve no spare dongle here…

2023-04-03 01:50:11 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.GECKO_BOOTLOADER
2023-04-03 01:50:11 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x1674c00>
2023-04-03 01:50:11 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'3'
2023-04-03 01:50:13 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.CPC
2023-04-03 01:50:13 emscripten universal_silabs_flasher.common[42] DEBUG Connection made: <webserial_transport.WebSerialTransport object at 0x1679e30>
2023-04-03 01:50:13 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2023-04-03 01:50:13 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2023-04-03 01:50:14 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 1 of 4)
2023-04-03 01:50:14 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2023-04-03 01:50:14 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2023-04-03 01:50:15 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 2 of 4)
2023-04-03 01:50:15 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2023-04-03 01:50:15 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2023-04-03 01:50:16 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 3 of 4)
2023-04-03 01:50:16 emscripten universal_silabs_flasher.cpc[42] DEBUG Sending frame CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b'')))
2023-04-03 01:50:16 emscripten universal_silabs_flasher.common[42] DEBUG Sending data b'\x14\x00\n\x00\xc4U\xd3\x02\x00\x04\x00\x03\x00\x00\x00\xdb\x12'
2023-04-03 01:50:17 emscripten universal_silabs_flasher.cpc[42] DEBUG Failed to send CPCTransportFrame(endpoint=<EndpointId.SYSTEM: 0>, control=196, payload=UnnumberedFrame(command_id=<UnnumberedFrameCommandId.PROP_VALUE_GET: 2>, command_seq=0, payload=PropertyCommand(property_id=<PropertyId.SECONDARY_CPC_VERSION: 3>, value=b''))), trying again in 0.10s (attempt 4 of 4)
2023-04-03 01:50:17 emscripten universal_silabs_flasher.flasher[42] INFO Probing ApplicationType.EZSP
2023-04-03 01:50:17 emscripten bellows.ezsp[42] DEBUG Resetting EZSP
2023-04-03 01:50:17 emscripten bellows.uart[42] DEBUG Resetting ASH
2023-04-03 01:50:17 emscripten bellows.uart[42] DEBUG Sending: b'1ac038bc7e'
2023-04-03 01:50:22 emscripten bellows.uart[42] DEBUG Connection lost: None
2023-04-03 01:50:22 emscripten bellows.uart[42] DEBUG Closed serial connection
2 Likes

hello,
I have exactly the same problem, any developments?

Is the HA team working on getting USB/ip working properly in HAOS so we can use the sky connect from a separate device from the one the VM runs on?

I tried everything I found online… I took my loss, learned my lesson about experimental and beta stuff, and I ordered a €23,- Sonoff-zigbee-3.0-usb-dongle-plus-e.
Advantage: it works great with Zigbee2MQTT.
Oh, everything has to be paired as new devices again, there’s no migration from ZHA to Z2M (yet).

It’s really annoying, and expensive, about there is/seems to be no way to flash the stock firmware to the SkyConnect.
I bought it for the “Matter preparedness”, but I’ll now stick to zigbee.

What a bummer.

Were you able to get the Sonoff Dongle Plus E working with multiprotocol as well?

I can’t get the SkyConnect working with multiprotocol through a VM and it’s absolutely frustrating, and no one else seems to have the same requirements/issues. So looking for alternatives.

Really a bummer!
I don’t understand how they claim to have a working tool to reset the firmware (Home Assistant SkyConnect) but it doesn’t work!
We can only hope that some update will come out soon.

No I’m not gonna flash my Sonoff until I’m really sure it works.

Btw, just in case anyone needs to flash the SkyConnect back to EZSP.

Web flasher can be found here.

Ezsp firmware can be found here. I’m using 7.2.1, working fine with Z2M.

You’ll need to have CP210x drivers installed to flash the firmware.

Yes, I know. I tested everything in every way but could not restore the original firmware. Right now my SkyConnect is useless.