I'm working on a DTH for the Intermatic Pool/Spa controller. It's an unusual device; it has two heating set points (one for a pool, another for a spa) and switches between them.
An existing DTH works with two settings options for these two values, but I wanted to expose them as two virtual ThermostatHeatingSetpoint
s.
The two child devices are created and associated with the parent, and make calls back to the parent:
def List setHeatingSetpoint(Double degrees ) {
log.debug("+-+-+ setHeatingSetpoint ${degrees} - DNI: ${device.deviceNetworkId}")
parent.setChildHeatingSetpoint(degrees, device.deviceNetworkId)
}
These correctly and successfully call into the parent, and generate a list of commands, which get formatted and returned to the child command. But. . . nothing happens.
The same commands, when called from the parent directly, do work.
I've tried sending back both the identical commands and sending back encapsulated versions of the same command:
encapsulatedCommands << zwave.multiInstanceV1.multiInstanceCmdEncap(instance: childNumber).encapsulate(cmd)
Resulting in the following, showing zwave and formatted versions of a thermostat setpoint set/get:
dev:1302018-11-09 21:33:45.430:debug Commands:
0 [ MultiInstanceCmdEncap(command:1, commandClass:67, instance:11, parameter:[1, 9, 76])] - 60060B430101094C
1 [ MultiInstanceCmdEncap(command:2, commandClass:67, instance:11, parameter:[1])] - 60060B430201
I can't find a ton of documentation on zwavemultiinstance/multichannel, but this is analogous to what is done by the existing code for the five child switches, which do work.
Overall, it feels like the commands are generated properly, and dispatched, but just never get dispatched/delivered.
One clue, potentially related, is that the virtual devices show up as having status UNKNOWN
in the device list. They do, though, function and call back to the parent, etc.