I can imagine that he’s a busy guy. He already gave me write access and in the meantime I’ve filed the request as an issue.
I found no manual/specification/documentation for this new device regarding the ZWave parameters. But I have the OH thing generated XML file on hand (the one which I’ve also attached to the filed issue as 3a).
I’ve tried to dig a bit deeper inside, but it seems to be complicated for a ZWave novice.
I’m already using some ZWave smart plugs which looks nearly the same, but from a different manufacturer (these ones are not longer available).
Already used smart plug NAS-WR01ZE: zwave:shenzhen_coolcampwrplug_00_000
New Qolsys smart plug: 012A:0005:0003:3.96
Both have switching, power and energy consumption features. If I look to the things/code data for the existing device I can see it’s configuration and channel details:
UID: zwave:shenzhen_coolcampwrplug_00_000:myzwave:tpati_light_patio_cactus_poweroutlet
label: "Light Patio Cactus PowerOutlet: node54 (NAS-WR01ZE Wall Plug Switch)"
thingTypeUID: zwave:shenzhen_coolcampwrplug_00_000
configuration:
config_11_1: 0
config_10_1: 1
wakeup_interval: 0
group_1:
- controller
group_3: []
group_2: []
config_1_1: 1
switchall_mode: 0
config_2_1: 1
wakeup_node: 0
config_7_2: 300
config_8_1: 0
config_9_2: 150
config_3_1: 13
config_4_1: 12
node_id: 54
config_5_2: 120
config_6_1: 5
bridgeUID: zwave:serial_zstick:myzwave
location: patio
channels:
- id: switch_binary
channelTypeUID: zwave:switch_binary
label: Switch
description: Switch the power on and off
configuration: {}
- id: meter_kwh
channelTypeUID: zwave:meter_kwh
label: Electric meter (kWh)
description: Indicates the energy consumption (kWh)
configuration: {}
- id: meter_watts
channelTypeUID: zwave:meter_watts
label: Electric meter (watts)
description: Indicates the instantaneous power consumption
configuration: {}
- id: meter_current
channelTypeUID: zwave:meter_current
label: Electric meter (amps)
description: Indicates the instantaneous current consumption
configuration: {}
- id: meter_voltage
channelTypeUID: zwave:meter_voltage
label: Electric meter (volts)
description: Indicates the instantaneous voltage
configuration: {}
- id: meter_reset
channelTypeUID: zwave:meter_reset
label: Clear Accumulated Energy
description: Reset the meter
configuration: {}
- id: alarm_power
channelTypeUID: zwave:alarm_power
label: Alarm (power)
description: Indicates if a power alarm is triggered
configuration: {}
The Qolsys device which was discovered by OH but still unknown looks like this - looks like an empty blueprint for unknown devices:
UID: zwave:device:myzwave:node75
label: Z-Wave Node 075 (012A:0005:0003:3.96)
thingTypeUID: zwave:device
configuration:
switchall_mode: 0
group_1:
- controller
group_3: []
node_id: 75
group_2: []
bridgeUID: zwave:serial_zstick:myzwave
I think I need to “transfer” the information from the OH generated XML file (3a) to something similar looking data (but in XML format which I don’t know) like the existing and working device. But for all these config parameters I don’t find anything useful in the OH generated XML file (3a).
Here is the generated OH XML file:
<node>
<homeId>0xd49b73d5</homeId>
<nodeId>75</nodeId>
<version>4</version>
<manufacturer>0x12a</manufacturer>
<deviceId>0x3</deviceId>
<deviceType>0x5</deviceType>
<listening>true</listening>
<frequentlyListening>false</frequentlyListening>
<routing>true</routing>
<security>false</security>
<beaming>true</beaming>
<maxBaudRate>40000</maxBaudRate>
<sleepDelay>500</sleepDelay>
<nodeInformationFrame>
<commandClass>COMMAND_CLASS_ZWAVEPLUS_INFO</commandClass>
<commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
<commandClass>COMMAND_CLASS_VERSION</commandClass>
<commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
<commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
<commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
<commandClass>COMMAND_CLASS_POWERLEVEL</commandClass>
<commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
<commandClass>COMMAND_CLASS_SWITCH_BINARY</commandClass>
<commandClass>COMMAND_CLASS_SWITCH_ALL</commandClass>
<commandClass>COMMAND_CLASS_ALARM</commandClass>
<commandClass>COMMAND_CLASS_METER</commandClass>
<commandClass>COMMAND_CLASS_BASIC</commandClass>
</nodeInformationFrame>
<associationGroups class="concurrent-hash-map">
<entry>
<int>1</int>
<associationGroup>
<index>1</index>
<maxNodes>0</maxNodes>
<name>Lifeline</name>
<profile1>0x0</profile1>
<profile2>0x1</profile2>
<commands>
<commandClass>COMMAND_CLASS_SWITCH_BINARY</commandClass>
<commandClass>COMMAND_CLASS_METER</commandClass>
<commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
<commandClass>COMMAND_CLASS_ALARM</commandClass>
</commands>
<associations>
<associationMember>
<node>1</node>
</associationMember>
</associations>
</associationGroup>
</entry>
<entry>
<int>2</int>
<associationGroup>
<index>2</index>
<maxNodes>0</maxNodes>
<name>Basic Set Rep.</name>
<profile1>0x71</profile1>
<profile2>0x8</profile2>
<commands>
<commandClass>COMMAND_CLASS_BASIC</commandClass>
</commands>
<associations/>
</associationGroup>
</entry>
<entry>
<int>3</int>
<associationGroup>
<index>3</index>
<maxNodes>0</maxNodes>
<name>Power Alarm Rep.</name>
<profile1>0x71</profile1>
<profile2>0x8</profile2>
<commands>
<commandClass>COMMAND_CLASS_ALARM</commandClass>
</commands>
<associations/>
</associationGroup>
</entry>
</associationGroups>
<endpoints class="concurrent-hash-map">
<entry>
<int>0</int>
<endPoint>
<deviceClass>
<basicDeviceClass>BASIC_TYPE_ROUTING_SLAVE</basicDeviceClass>
<genericDeviceClass>GENERIC_TYPE_SWITCH_BINARY</genericDeviceClass>
<specificDeviceClass>SPECIFIC_TYPE_POWER_SWITCH_BINARY</specificDeviceClass>
</deviceClass>
<endpointId>0</endpointId>
<secureCommandClasses/>
<supportedCommandClasses class="concurrent-hash-map">
<entry>
<commandClass>COMMAND_CLASS_NO_OPERATION</commandClass>
<COMMAND__CLASS__NO__OPERATION>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
</COMMAND__CLASS__NO__OPERATION>
</entry>
<entry>
<commandClass>COMMAND_CLASS_BASIC</commandClass>
<COMMAND__CLASS__BASIC>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__BASIC>
</entry>
<entry>
<commandClass>COMMAND_CLASS_SWITCH_BINARY</commandClass>
<COMMAND__CLASS__SWITCH__BINARY>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__SWITCH__BINARY>
</entry>
<entry>
<commandClass>COMMAND_CLASS_SWITCH_ALL</commandClass>
<COMMAND__CLASS__SWITCH__ALL>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
<isGetSupported>true</isGetSupported>
<mode>SWITCH_ALL_EXCLUDED</mode>
</COMMAND__CLASS__SWITCH__ALL>
</entry>
<entry>
<commandClass>COMMAND_CLASS_METER</commandClass>
<COMMAND__CLASS__METER>
<version>3</version>
<instances>1</instances>
<control>false</control>
<versionSupported>4</versionSupported>
<meterType>ELECTRIC</meterType>
<meterScales>
<meterScale>E_KWh</meterScale>
<meterScale>E_W</meterScale>
<meterScale>E_V</meterScale>
<meterScale>E_A</meterScale>
</meterScales>
<canReset>true</canReset>
<isGetSupported>true</isGetSupported>
<isSupportRequestSupported>true</isSupportRequestSupported>
</COMMAND__CLASS__METER>
</entry>
<entry>
<commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
<COMMAND__CLASS__ASSOCIATION__GRP__INFO>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
<autoSubscribeGroups>
<int>1</int>
<int>3</int>
</autoSubscribeGroups>
</COMMAND__CLASS__ASSOCIATION__GRP__INFO>
</entry>
<entry>
<commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
<COMMAND__CLASS__DEVICE__RESET__LOCALLY>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
</COMMAND__CLASS__DEVICE__RESET__LOCALLY>
</entry>
<entry>
<commandClass>COMMAND_CLASS_ZWAVEPLUS_INFO</commandClass>
<COMMAND__CLASS__ZWAVEPLUS__INFO>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>2</versionSupported>
<zwPlusVersion>1</zwPlusVersion>
<zwPlusRole>ROLE_TYPE_SLAVE_ALWAYS_ON</zwPlusRole>
<zwPlusNodeType>NODE_TYPE_ZWAVEPLUS_NODE</zwPlusNodeType>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__ZWAVEPLUS__INFO>
</entry>
<entry>
<commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
<COMMAND__CLASS__CONFIGURATION>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
<configParameters/>
</COMMAND__CLASS__CONFIGURATION>
</entry>
<entry>
<commandClass>COMMAND_CLASS_ALARM</commandClass>
<COMMAND__CLASS__ALARM>
<version>0</version>
<instances>1</instances>
<control>false</control>
<versionSupported>0</versionSupported>
<alarms/>
<v1Supported>false</v1Supported>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__ALARM>
</entry>
<entry>
<commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
<COMMAND__CLASS__MANUFACTURER__SPECIFIC>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>2</versionSupported>
<initSerialNumber>false</initSerialNumber>
<deviceManufacturer>298</deviceManufacturer>
<deviceType>5</deviceType>
<deviceId>3</deviceId>
</COMMAND__CLASS__MANUFACTURER__SPECIFIC>
</entry>
<entry>
<commandClass>COMMAND_CLASS_POWERLEVEL</commandClass>
<COMMAND__CLASS__POWERLEVEL>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
<powerLevel>0</powerLevel>
<powerTimeout>0</powerTimeout>
</COMMAND__CLASS__POWERLEVEL>
</entry>
<entry>
<commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
<COMMAND__CLASS__ASSOCIATION>
<version>2</version>
<instances>1</instances>
<control>false</control>
<versionSupported>2</versionSupported>
<maxGroups>3</maxGroups>
</COMMAND__CLASS__ASSOCIATION>
</entry>
<entry>
<commandClass>COMMAND_CLASS_VERSION</commandClass>
<COMMAND__CLASS__VERSION>
<version>2</version>
<instances>1</instances>
<control>false</control>
<versionSupported>2</versionSupported>
<libraryType>LIB_SLAVE_ENHANCED</libraryType>
<protocolVersion>4.5</protocolVersion>
<applicationVersion>3.96</applicationVersion>
<hardwareVersion>65</hardwareVersion>
</COMMAND__CLASS__VERSION>
</entry>
</supportedCommandClasses>
</endPoint>
</entry>
</endpoints>
<nodeNeighbors>
<int>59</int>
<int>65</int>
</nodeNeighbors>
<lastReceived>2025-02-24 21:56:56.442 UTC</lastReceived>
</node>
The 7 known channels for the working device are also exists somewhere in these commandClass structures of the new/unknown device.
I think I should wait until Chris will find time to generate the required XML file. Even if I would fully understand how to generated the final XML out of the OH generated XML it would be too error prone if I would do it manually.
Btw.: Do you know if there is some documentation/specification about the ZWave XML which OH is using for known devices?