I'm trying to write a custom driver for a Jinvoo Zigbee Power Strip with model number SM-SO301-UZ. It appears to be the same hardware as the Useelink with the same model number. I tried using @bertabcd1234's driver but found that it did not work out of box for me, unsure if that's due to changes to Hubitat since it was last updated or due to differences between the Jinvoo model and the Useelink one. The version on github does have a typo in it that prevents import so I don't think it was fully tested, but I'm trying to use it as a starting point.
The fingerprint from the Useelink driver does not match my device (leading it to be a generic "Device" on pairing), so I updated it as follows based on the device info I saw when pairing with my hub, and repairing the device does select the correct device type now. I also changed the USB endpoint from 07 to 05.
// Original, from github
fingerprint profileId: "0104", endpointId: "01", inClusters: "0000,000A,0004,0005,0006", outClusters: "0019", model: "TS0115", manufacturer: "_TYZB01_vkwryfdr"
// Updated, works with the Jinvoo device
fingerprint profileId: '0104', inClusters: '0000,0006,0003,0004,0005,E001', outClusters: '', manufacturer: '_TZ3000_cfnprab5', model: 'TS011F', deviceJoinName: 'Jinvoo Power Strip'
Device pairing info showed as follows:
Manufacturer: _TZ3000_cfnprab5
Endpoint 01 application: 64
Endpoint 01 endpointId: 01
Endpoint 01 idAsInt: 1
Endpoint 01 inClusters: 0000,0006,0003,0004,0005,E001
Endpoint 01 initialized: true
Endpoint 01 manufacturer: _TZ3000_cfnprab5
Endpoint 01 model: TS011F
Endpoint 01 profileId: 0104
Endpoint 01 stage: 4
Endpoint 02 endpointId: 02
Endpoint 02 idAsInt: 2
Endpoint 02 inClusters: 0000,0006,0003,0004,0005,E001
Endpoint 02 initialized: true
Endpoint 02 profileId: 0104
Endpoint 02 stage: 4
Endpoint 03 endpointId: 03
Endpoint 03 idAsInt: 3
Endpoint 04 endpointId: 04
Endpoint 04 idAsInt: 4
Endpoint 05 endpointId: 05
Endpoint 05 idAsInt: 5
The Useelink driver and the built-in generic multi-endpoint driver both do not seem to do anything at all. I cannot control the state using the Hubitat device commands and the state does not update when I use the physical power button. I expected that when I pressed the power button which turns the outlets on and off that the parse(String)
function would be called, but it is not, on either the main device or any of the child devices. This is my first foray into groovy and Hubitat drivers but am I correct in thinking that parse
should be called when the physical device state changes? Since it is not, how do I troubleshoot that?
I believe the device itself is functional as I was able to pair it with my SmartThings hub previously and turn one of the outlets on and off, although I could only control the first outlet.