Zigbee Multi-Endport Switch support for Tuya 12 way relay

Tuya TS0601 12 way relay switch

This thread for efforts around Hubitat support of these devices:

https://www.aliexpress.us/item/3256805419203969.html?spm=a2g0o.order_list.order_list_main.28.1fe91802z5o9qb&gatewayAdapt=glo2usa

finger print ID is:
_TZE204_dqolcpcp

1 Like

zigbee2MQTT support exists:

I've only been able to get relay #1 to turn on and off.

1 Like

The discussion on GitHub about Zigbee2MQTT provides enough information to create a Hubitat driver. I will provide additional hints later, but I have to head to work now.

Update: I have changed this thread category from ":toolbox: Built-In Apps and Drivers\Built-in Drivers" to ":gear: Custom Apps and Drivers\Custom Drivers (zigbee-tuya)".

Hubitat inbuilt drivers do NOT support Tuya-specific Zigbee protocol.

2 Likes

Alex, you have correctly spotted Martin Kura's driver as a good code base for adding support for TS0601 _TZE204_dqolcpcp

You can update the driver from here :

https://raw.githubusercontent.com/martinkura-svk/Hubitat/main/Moes%20ZigBee%20Wall%20Switch

In the dev. version 1.0.8, timeStamp 2023/11/20 9:56 AM, the first 6 relays should be supported for on/off switching in the child devices. From the parent device, only the first 4 will be switched on/off.

You will need to delete ("REMOVE DEVICE") and pair the board again to HE.
Can you test and confirm if the first 6 relays are controllable?

Enable the Debug logging, and try to activate relays #7..#12 from the board, if you can do that.
Please copy and paste the debug logs as a text (not as a picture!), enclosed in a summary section (use the forum editor cog wheel tool).

@kkossev,

here is what I get. I am going to turn it down to 3 relays config to avoid the null exceptions.

Summary

dev:37932023-11-20 09:01:25.504 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:25.496 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:25.440 PMinfoRefreshing...

dev:37932023-11-20 09:01:25.429 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:25.422 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:25.422 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:25.414 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:25.350 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:25.347 PMdebugcomponent refresh 3793-012 Moes ZigBee Wall Switch 1/2/3-Gang EP012

dev:37932023-11-20 09:01:25.332 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:25.324 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:25.302 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:25.294 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:25.280 PMinfoCreating device 3793-012

dev:37932023-11-20 09:01:25.274 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:25.271 PMdebugcomponent refresh 3793-011 Moes ZigBee Wall Switch 1/2/3-Gang EP011

dev:37932023-11-20 09:01:25.203 PMinfoCreating device 3793-011

dev:37932023-11-20 09:01:25.196 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:25.193 PMdebugcomponent refresh 3793-010 Moes ZigBee Wall Switch 1/2/3-Gang EP010

dev:37932023-11-20 09:01:25.174 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:25.166 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:25.122 PMinfoCreating device 3793-010

dev:37932023-11-20 09:01:25.116 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:25.113 PMdebugcomponent refresh 3793-09 Moes ZigBee Wall Switch 1/2/3-Gang EP09

dev:37932023-11-20 09:01:25.055 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:25.047 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:25.036 PMinfoCreating device 3793-09

dev:37932023-11-20 09:01:25.030 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:25.024 PMdebugcomponent refresh 3793-08 Moes ZigBee Wall Switch 1/2/3-Gang EP08

dev:37932023-11-20 09:01:25.013 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:25.001 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:24.938 PMinfoCreating device 3793-08

dev:37932023-11-20 09:01:24.931 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:24.926 PMdebugcomponent refresh 3793-07 Moes ZigBee Wall Switch 1/2/3-Gang EP07

dev:37932023-11-20 09:01:24.911 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:24.874 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:24.834 PMinfoCreating device 3793-07

dev:37932023-11-20 09:01:24.825 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:24.821 PMdebugcomponent refresh 3793-06 Moes ZigBee Wall Switch 1/2/3-Gang EP06

dev:37932023-11-20 09:01:24.753 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:24.745 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:24.740 PMinfoCreating device 3793-06

dev:37932023-11-20 09:01:24.733 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:24.727 PMdebugcomponent refresh 3793-05 Moes ZigBee Wall Switch 1/2/3-Gang EP05

dev:37932023-11-20 09:01:24.672 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:24.659 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:24.650 PMinfoCreating device 3793-05

dev:37932023-11-20 09:01:24.643 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:24.639 PMdebugcomponent refresh 3793-04 Moes ZigBee Wall Switch 1/2/3-Gang EP04

dev:37932023-11-20 09:01:24.594 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:24.594 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 101 (method parse)

dev:37932023-11-20 09:01:24.579 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:24.568 PMdebug[raw:42E301EF000A00002000, dni:42E3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:37932023-11-20 09:01:24.536 PMinfoCreating device 3793-04

dev:37932023-11-20 09:01:24.530 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:24.526 PMdebugcomponent refresh 3793-03 Moes ZigBee Wall Switch 1/2/3-Gang EP03

dev:37932023-11-20 09:01:24.451 PMinfoCreating device 3793-03

dev:37932023-11-20 09:01:24.445 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:24.441 PMdebugcomponent refresh 3793-02 Moes ZigBee Wall Switch 1/2/3-Gang EP02

dev:37932023-11-20 09:01:24.368 PMinfoCreating device 3793-02

dev:37932023-11-20 09:01:24.361 PMdebug{executed} 0x42E3 0x01 0xEF00 0x00

dev:37932023-11-20 09:01:24.349 PMdebugcomponent refresh 3793-01 Moes ZigBee Wall Switch 1/2/3-Gang EP01

dev:37932023-11-20 09:01:24.117 PMinfoCreating device 3793-01

dev:37932023-11-20 09:01:24.078 PMdebugParent createChildDevices

dev:37932023-11-20 09:01:24.076 PMinfomodel: _TZE204_dqolcpcp buttons: 12

dev:37932023-11-20 09:01:24.065 PMdebugParent deleteChildren

dev:37932023-11-20 09:01:24.063 PMdebugParent setupChildDevices

dev:37932023-11-20 09:01:24.061 PMwarnDebug logging will be automatically disabled after 30 minutes!

dev:37932023-11-20 09:01:24.055 PMinfoInstalling...

1 Like

ok... the first 6 work. I swear I tried pretty much your mod already. I'll need to study your modification in more detail to how they differ from mine and where I messed up. :wink:
Thank you!!

Could we use a String array to pull in the correct 2 digit hex value ID using the "buttons" as the index?

1 Like

update: I got all 12 relays working by reworking the driver to support a groovy list called "componentHexAddrMap". The default list I have as:
componentHexAddrMap = ["00", "01", "02", "03", "04", "05", "06"]

When the 12 relay board fingerprint is detected it sets buttons to 12 and then add to the groovy list the last 6 relays hex address as 2 digit hex strings.
case '_TZE204_dqolcpcp' :
buttons = 12
componentHexAddrMap[7] = "65"
componentHexAddrMap[8] = "66"
componentHexAddrMap[9] = "67"
componentHexAddrMap[10] = "68"
componentHexAddrMap[11] = "69"
componentHexAddrMap[12] = "6A"
break

I then cleaned up createChildDevices() function accordingly to use this componentHexAddrMap using the button iteration loop variable "i" as the index into the list.

def createChildDevices(int buttons, componentHexAddrMap) {
if (debugLogging) log.debug "Parent createChildDevices"

if (buttons <= 1) {
    if (debugLogging) log.debug "This device have only: $buttons button, Child devices not needed."
    return 
} 
else {
    for (i in 1..buttons) {
        def childId = "${device.id}-${componentHexAddrMap[i]}"
        def existingChild = getChildDevices()?.find { it.deviceNetworkId == childId}
    
        if (existingChild) {
            if (infoLogging) log.info "Child device ${childId} already exists (${existingChild})"
        } 
        else {
            if (infoLogging) log.info "Creating device ${childId}"
            addChildDevice("hubitat", "Generic Component Switch", childId, [isComponent: true, name: "Switch EP${componentHexAddrMap[i]}", label: "${device.displayName} EP${componentHexAddrMap[i]}"])
        }
    }
}

}

For now I hard coded the parser to accept the other 6 relays in they way the original code did it to just get it working. However, I want to clean that up to make it a bit more graceful using the componentHexAddrMap list concept instead of hard coding in values. I'll need to explore Groovy a bit more to figure out how to do that. Once I get that working, I'll push it into a commit on Github and let you review it. Thanks for your help.

Lessons learned,

  1. don't work far from the hub to avoid not knowing if the issue is your code or simply a weak mesh which takes a while to route the new device under test. The instability I experienced seems to be related to this issue.
  2. If in doubt, remove any code that may conflict with this device type.

Can't say I am a pro yet, but at least I know Groovy now like the back of my.. well... back of something.. not my hand.

1 Like

Great work Alex, congrats! :+1:

2 Likes

I updated my post above to give you an idea of what I did for the rework.

2 Likes

Hi, I'm just jumping in hoping someone has figured this out..
I have the 8 relay version ' Tuya 8 Way Relay Switch Module 8 Channel DC 7-27V wifi/igbee Wireless
Smart Home Remote Control Switch with RF 433MHZ'

I'tried your 12 relay code and one of my relays clicked but that was it, after that I couldn't got anything. My hand held remote works but Zigbee doesn't.

Im not good at code, so I would appreciate any help.
Thanks
Jim

Let figure out what you have.

Could you go into the device configuration/control page, scroll down to the very bottom of that page. It should have a "Device Details" table listing creating date, Manufacturer, cluster numbers, etc. Could you screen shot that region and post it here?

Also, do you have the link you used to purchase the unit? Went you look at the device panel what is the reported

Thanks.


looks similar to what I am working with. Still debugging a few things. Let me work on it.

Love this! May have to get one now!

give this a try
https://raw.githubusercontent.com/snova69/Hubitat/multigang_relays/Moes%20ZigBee%20Wall%20Switch

1 Like

New support:

  • 12 channel relay device periodically sends updates of status of multiple relays in one message. Up to 8 at a time. Reworked to support this. Previous design assume only a single relay status update per message.
  • sending switch dimmer LED values seems to confuse my relay. Created a configuration flag to not do this for relay only devices.
  • Allows relays to use a mapping to get 2 digit zigbee hex address for each relay. Previous design assumed relays would be sequentially addressed without address gap, which was not the case with the 12 relay board. Design reworked to allow this flexibility.

a few TODO and known issues:

  • I am was unsuccessful configuring relays to remember state between power cycles.
  • Not really sure what to do with the main parent on/off state at this point. Previous design assumed there were a fixed amount relays of 4 and sets ON or OFF command to relays in a single command. Needs rework IMHO to be more flexible and configurable. Looking for suggestions.
  • refreshComponent() doesn't seem to work for my 12 relay board.
1 Like

Device paired ok with User driver you provided. Device created 8 child.
No response from board though. Logs don't show any errors.
Thank you for your efforts, if you have any more thoughts let me know.
Jim

Even though it pairs, mine takes a little while for the board to respond after power up or factory reset. Give it a couple minutes before you try turning one of the relays on. Try to do all this close to the hub.
Also, a parent log might help to see if the communication is similar to what I am seeing with mine. If you paste the log, I guess its customary on this forum to do so by clicking on the gear icon and selecting "Hide Details" when you begin your reply. This will create a "Summary" section that you can paste the log into.

1 Like

Still no response from the relays.
I tried what you said, I also deleted driver code and device then rebooted Hub then reinstalled but still no response. Again, thank you for checking this out for me.

Summary

This text will be hidden
dev:1902023-12-01 08:05:15.384 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00 {00010601000100}

dev:1902023-12-01 08:05:15.382 PMinfo8 Relays EP06 is OFF

dev:1902023-12-01 08:05:15.380 PMdebugcomponent state is OFF - 8 Relays EP06 {190-06}

dev:1902023-12-01 08:05:12.186 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00 {00010601000101}

dev:1902023-12-01 08:05:12.184 PMinfo8 Relays EP06 is ON

dev:1902023-12-01 08:05:12.182 PMdebugcomponent state is ON - 8 Relays EP06 {190-06}

dev:1902023-12-01 08:05:02.112 PMinfoTurn all switches ON

dev:1902023-12-01 08:04:18.701 PMinfoRefreshing...

dev:1902023-12-01 08:04:17.388 PMinfoTurn all switches ON

dev:1902023-12-01 08:04:16.384 PMinfoTurn all switches OFF

dev:1902023-12-01 08:04:15.134 PMinfoRefreshing...

dev:1902023-12-01 08:04:15.011 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:04:15.007 PMdebugcomponent refresh 190-66 8 Relays EP66

dev:1902023-12-01 08:04:14.938 PMinfoCreating device 190-66

dev:1902023-12-01 08:04:14.897 PMinfoDeleting and recreating 190-66

dev:1902023-12-01 08:04:14.895 PMinfoChild device 190-66 already exists (190-66)

dev:1902023-12-01 08:04:14.890 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:04:14.887 PMdebugcomponent refresh 190-65 8 Relays EP65

dev:1902023-12-01 08:04:14.816 PMinfoCreating device 190-65

dev:1902023-12-01 08:04:14.773 PMinfoDeleting and recreating 190-65

dev:1902023-12-01 08:04:14.770 PMinfoChild device 190-65 already exists (190-65)

dev:1902023-12-01 08:04:14.762 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:04:14.759 PMdebugcomponent refresh 190-06 8 Relays EP06

dev:1902023-12-01 08:04:14.693 PMinfoCreating device 190-06

dev:1902023-12-01 08:04:14.662 PMinfoDeleting and recreating 190-06

dev:1902023-12-01 08:04:14.661 PMinfoChild device 190-06 already exists (190-06)

dev:1902023-12-01 08:04:14.655 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:04:14.653 PMdebugcomponent refresh 190-05 8 Relays EP05

dev:1902023-12-01 08:04:14.581 PMinfoCreating device 190-05

dev:1902023-12-01 08:04:14.542 PMinfoDeleting and recreating 190-05

dev:1902023-12-01 08:04:14.539 PMinfoChild device 190-05 already exists (190-05)

dev:1902023-12-01 08:04:14.531 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:04:14.527 PMdebugcomponent refresh 190-04 8 Relays EP04

dev:1902023-12-01 08:04:14.443 PMinfoCreating device 190-04

dev:1902023-12-01 08:04:14.391 PMinfoDeleting and recreating 190-04

dev:1902023-12-01 08:04:14.390 PMinfoChild device 190-04 already exists (190-04)

dev:1902023-12-01 08:04:14.385 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:04:14.382 PMdebugcomponent refresh 190-03 8 Relays EP03

dev:1902023-12-01 08:04:14.309 PMinfoCreating device 190-03

dev:1902023-12-01 08:04:14.266 PMinfoDeleting and recreating 190-03

dev:1902023-12-01 08:04:14.264 PMinfoChild device 190-03 already exists (190-03)

dev:1902023-12-01 08:04:14.256 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:04:14.252 PMdebugcomponent refresh 190-02 8 Relays EP02

dev:1902023-12-01 08:04:14.184 PMinfoCreating device 190-02

dev:1902023-12-01 08:04:14.149 PMinfoDeleting and recreating 190-02

dev:1902023-12-01 08:04:14.147 PMinfoChild device 190-02 already exists (190-02)

dev:1902023-12-01 08:04:14.142 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:04:14.139 PMdebugcomponent refresh 190-01 8 Relays EP01

dev:1902023-12-01 08:04:14.068 PMinfoCreating device 190-01

dev:1902023-12-01 08:04:14.030 PMinfoDeleting and recreating 190-01

dev:1902023-12-01 08:04:14.023 PMinfoChild device 190-01 already exists (190-01)

dev:1902023-12-01 08:04:14.020 PMdebugParent createChildDevices

dev:1902023-12-01 08:04:14.018 PMinfomodel: _TZE204_dvosyycn buttons: 8

dev:1902023-12-01 08:04:14.016 PMdebugParent setupChildDevices

dev:1902023-12-01 08:04:14.015 PMwarnDebug logging will be automatically disabled after 30 minutes!

dev:1902023-12-01 08:04:14.013 PMinfoInitializing...

dev:1902023-12-01 08:03:51.289 PMinfoTurn all switches OFF

dev:1902023-12-01 08:03:48.720 PMinfoTurn all switches ON

dev:1902023-12-01 08:03:46.607 PMinfoRefreshing...

dev:1902023-12-01 08:03:46.420 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:03:46.417 PMdebugcomponent refresh 190-66 8 Relays EP66

dev:1902023-12-01 08:03:46.299 PMinfoCreating device 190-66

dev:1902023-12-01 08:03:46.249 PMinfoDeleting and recreating 190-66

dev:1902023-12-01 08:03:46.247 PMinfoChild device 190-66 already exists (190-66)

dev:1902023-12-01 08:03:46.239 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:03:46.236 PMdebugcomponent refresh 190-65 8 Relays EP65

dev:1902023-12-01 08:03:46.099 PMinfoCreating device 190-65

dev:1902023-12-01 08:03:46.055 PMinfoDeleting and recreating 190-65

dev:1902023-12-01 08:03:46.054 PMinfoChild device 190-65 already exists (190-65)

dev:1902023-12-01 08:03:46.048 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:03:46.045 PMdebugcomponent refresh 190-06 8 Relays EP06

dev:1902023-12-01 08:03:45.908 PMinfoCreating device 190-06

dev:1902023-12-01 08:03:45.868 PMinfoDeleting and recreating 190-06

dev:1902023-12-01 08:03:45.866 PMinfoChild device 190-06 already exists (190-06)

dev:1902023-12-01 08:03:45.859 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:03:45.856 PMdebugcomponent refresh 190-05 8 Relays EP05

dev:1902023-12-01 08:03:45.709 PMinfoCreating device 190-05

dev:1902023-12-01 08:03:45.647 PMinfoDeleting and recreating 190-05

dev:1902023-12-01 08:03:45.644 PMinfoChild device 190-05 already exists (190-05)

dev:1902023-12-01 08:03:45.637 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:03:45.633 PMdebugcomponent refresh 190-04 8 Relays EP04

dev:1902023-12-01 08:03:45.540 PMinfoCreating device 190-04

dev:1902023-12-01 08:03:45.494 PMinfoDeleting and recreating 190-04

dev:1902023-12-01 08:03:45.492 PMinfoChild device 190-04 already exists (190-04)

dev:1902023-12-01 08:03:45.487 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:03:45.481 PMdebugcomponent refresh 190-03 8 Relays EP03

dev:1902023-12-01 08:03:45.370 PMinfoCreating device 190-03

dev:1902023-12-01 08:03:45.320 PMinfoDeleting and recreating 190-03

dev:1902023-12-01 08:03:45.318 PMinfoChild device 190-03 already exists (190-03)

dev:1902023-12-01 08:03:45.309 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:03:45.304 PMdebugcomponent refresh 190-02 8 Relays EP02

dev:1902023-12-01 08:03:45.211 PMinfoCreating device 190-02

dev:1902023-12-01 08:03:45.179 PMinfoDeleting and recreating 190-02

dev:1902023-12-01 08:03:45.177 PMinfoChild device 190-02 already exists (190-02)

dev:1902023-12-01 08:03:45.172 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:03:45.169 PMdebugcomponent refresh 190-01 8 Relays EP01

dev:1902023-12-01 08:03:45.094 PMinfoCreating device 190-01

dev:1902023-12-01 08:03:44.961 PMinfoDeleting and recreating 190-01

dev:1902023-12-01 08:03:44.960 PMinfoChild device 190-01 already exists (190-01)

dev:1902023-12-01 08:03:44.956 PMdebugParent createChildDevices

dev:1902023-12-01 08:03:44.954 PMinfomodel: _TZE204_dvosyycn buttons: 8

dev:1902023-12-01 08:03:44.951 PMdebugParent setupChildDevices

dev:1902023-12-01 08:03:44.950 PMwarnDebug logging will be automatically disabled after 30 minutes!

dev:1902023-12-01 08:03:44.949 PMinfoInitializing...

dev:1902023-12-01 08:03:42.112 PMinfoRefreshing...

dev:1902023-12-01 08:03:31.697 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00 {00010101000100}

dev:1902023-12-01 08:03:31.694 PMinfoTuya ZigBee Multi Gang Switch EP01 is OFF

dev:1902023-12-01 08:03:31.693 PMdebugcomponent state is OFF - Tuya ZigBee Multi Gang Switch EP01 {190-01}

dev:1902023-12-01 08:03:30.776 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00 {00010101000101}

dev:1902023-12-01 08:03:30.774 PMinfoTuya ZigBee Multi Gang Switch EP01 is ON

dev:1902023-12-01 08:03:30.772 PMdebugcomponent state is ON - Tuya ZigBee Multi Gang Switch EP01 {190-01}

dev:1902023-12-01 08:03:28.798 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:03:28.795 PMdebugcomponent refresh 190-01 Tuya ZigBee Multi Gang Switch EP01

dev:1902023-12-01 08:03:27.058 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00 {00010101000100}

dev:1902023-12-01 08:03:27.053 PMinfoTuya ZigBee Multi Gang Switch EP01 is OFF

dev:1902023-12-01 08:03:27.050 PMdebugcomponent state is OFF - Tuya ZigBee Multi Gang Switch EP01 {190-01}

dev:1902023-12-01 08:03:24.579 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00 {00010101000101}

dev:1902023-12-01 08:03:24.575 PMinfoTuya ZigBee Multi Gang Switch EP01 is ON

dev:1902023-12-01 08:03:24.573 PMdebugcomponent state is ON - Tuya ZigBee Multi Gang Switch EP01 {190-01}

dev:1902023-12-01 08:02:04.523 PMinfoRefreshing...

dev:1902023-12-01 08:02:04.441 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 112 (method parse)

dev:1902023-12-01 08:02:04.432 PMdebug[raw:83C301EF000A00002000, dni:83C3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:1902023-12-01 08:02:04.388 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:02:04.380 PMdebugcomponent refresh 190-66 Tuya ZigBee Multi Gang Switch EP66

dev:1902023-12-01 08:02:04.333 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 112 (method parse)

dev:1902023-12-01 08:02:04.327 PMdebug[raw:83C301EF000A00002000, dni:83C3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:1902023-12-01 08:02:04.270 PMinfoCreating device 190-66

dev:1902023-12-01 08:02:04.263 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:02:04.260 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 112 (method parse)

dev:1902023-12-01 08:02:04.253 PMdebugcomponent refresh 190-65 Tuya ZigBee Multi Gang Switch EP65

dev:1902023-12-01 08:02:04.244 PMdebug[raw:83C301EF000A00002000, dni:83C3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:1902023-12-01 08:02:04.112 PMinfoCreating device 190-65

dev:1902023-12-01 08:02:04.102 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:02:04.098 PMdebugcomponent refresh 190-06 Tuya ZigBee Multi Gang Switch EP06

dev:1902023-12-01 08:02:04.041 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 112 (method parse)

dev:1902023-12-01 08:02:04.030 PMdebug[raw:83C301EF000A00002000, dni:83C3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:1902023-12-01 08:02:03.981 PMinfoCreating device 190-06

dev:1902023-12-01 08:02:03.972 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:02:03.965 PMdebugcomponent refresh 190-05 Tuya ZigBee Multi Gang Switch EP05

dev:1902023-12-01 08:02:03.904 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 112 (method parse)

dev:1902023-12-01 08:02:03.888 PMdebug[raw:83C301EF000A00002000, dni:83C3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:1902023-12-01 08:02:03.849 PMinfoCreating device 190-05

dev:1902023-12-01 08:02:03.841 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:02:03.837 PMdebugcomponent refresh 190-04 Tuya ZigBee Multi Gang Switch EP04

dev:1902023-12-01 08:02:03.786 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 112 (method parse)

dev:1902023-12-01 08:02:03.771 PMdebug[raw:83C301EF000A00002000, dni:83C3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:1902023-12-01 08:02:03.756 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 112 (method parse)

dev:1902023-12-01 08:02:03.739 PMerrorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 112 (method parse)

dev:1902023-12-01 08:02:03.699 PMinfoCreating device 190-04

dev:1902023-12-01 08:02:03.686 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:02:03.681 PMdebugcomponent refresh 190-03 Tuya ZigBee Multi Gang Switch EP03

dev:1902023-12-01 08:02:03.659 PMdebug[raw:83C301EF000A00002000, dni:83C3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:1902023-12-01 08:02:03.613 PMdebug[raw:83C301EF000A00002000, dni:83C3, endpoint:01, cluster:EF00, size:0A, attrId:0000, encoding:20, command:01, value:00, clusterInt:61184, attrInt:0]

dev:1902023-12-01 08:02:03.574 PMinfoCreating device 190-03

dev:1902023-12-01 08:02:03.558 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:02:03.550 PMdebugcomponent refresh 190-02 Tuya ZigBee Multi Gang Switch EP02

dev:1902023-12-01 08:02:03.395 PMinfoCreating device 190-02

dev:1902023-12-01 08:02:03.388 PMdebug{executed} 0x83C3 0x01 0xEF00 0x00

dev:1902023-12-01 08:02:03.278 PMdebugcomponent refresh 190-01 Tuya ZigBee Multi Gang Switch EP01

dev:1902023-12-01 08:02:03.044 PMinfoCreating device 190-01

dev:1902023-12-01 08:02:03.021 PMdebugParent createChildDevices

dev:1902023-12-01 08:02:03.018 PMinfomodel: _TZE204_dvosyycn buttons: 8

dev:1902023-12-01 08:02:02.994 PMdebugParent setupChildDevices

dev:1902023-12-01 08:02:02.991 PMwarnDebug logging will be automatically disabled after 30 minutes!

dev:1902023-12-01 08:02:02.985 PMinfoInstalling...

What kind of hub are you using? I am expecting a status back from the relay to be reported back with a debug message that says "catchall ...." I don't see that. You said it worked with relay one only before. Can you report back the logs you see with the driver that allows you to use relay 1?