-
-
Notifications
You must be signed in to change notification settings - Fork 913
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[config] Fix Leviton Vizia RF+ device family. #2290
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,45 @@ | ||
<Product Revision="3" xmlns="https://github.com/OpenZWave/open-zwave"> | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Product Revision="4" xmlns="https://github.com/OpenZWave/open-zwave"> | ||
<MetaData> | ||
<MetaDataItem name="OzwInfoPage">http://www.openzwave.com/device-database/001D:0206:0201</MetaDataItem> | ||
<MetaDataItem name="Name">VRCS2</MetaDataItem> | ||
<MetaDataItem name="Description">2-Button Scene Controller with Switches</MetaDataItem> | ||
<MetaDataItem name="OzwInfoPage">http://www.openzwave.com/device-database/001D:0243:1102</MetaDataItem> | ||
<MetaDataItem name="ProductPic">images/leviton/vrcs2.png</MetaDataItem> | ||
<MetaDataItem id="0206" name="ZWProductPage" type="0201">https://products.z-wavealliance.org/products/288/</MetaDataItem> | ||
<MetaDataItem id="0206" name="FrequencyName" type="0201">U.S. / Canada / Mexico</MetaDataItem> | ||
<MetaDataItem name="Description">The Vizia RF + 4-Button Zone Controller with Switch (VRCZ4-MR) and 4-Button Scene Controller with Switch (VRCS4-MR) are perfect for retrofit applications because they replace an existing switch giving the user control of the local load as well as the benefit of scene or zone control. | ||
Item Description | ||
Vizia RF + 4-Button Zone Controller with Switch for Multi-Location Control with IR Remote Capability. White face assembled on device, ivory and light almond faces included.</MetaDataItem> | ||
<MetaDataItem name="ProductPage">http://www.leviton.com/OA_HTML/ProductDetail.jsp?partnumber=VRCZ4-MRZ&section=44147&minisite=10251</MetaDataItem> | ||
<MetaDataItem id="0206" name="Identifier" type="0201">VRCZ4-MR</MetaDataItem> | ||
<MetaDataItem name="ProductSupport">http://www.leviton.com/OA_HTML/Home.jsp?minisite=10251&respid=22372</MetaDataItem> | ||
<MetaDataItem name="Name">VRCZ4-MR</MetaDataItem> | ||
<MetaDataItem id="0243" name="ZWProductPage" type="1102">https://products.z-wavealliance.org/products/286/</MetaDataItem> | ||
<MetaDataItem id="0243" name="FrequencyName" type="1102">U.S. / Canada / Mexico</MetaDataItem> | ||
<MetaDataItem id="0243" name="Identifier" type="1102">VRCS2-MRZ</MetaDataItem> | ||
<ChangeLog> | ||
<Entry author="Justin Hammond - [email protected]" date="03 May 2019" revision="1">Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/286/xml</Entry> | ||
<Entry author="Justin Hammond - [email protected]" date="03 May 2019" revision="2">Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/287/xml</Entry> | ||
<Entry author="Justin Hammond - [email protected]" date="03 May 2019" revision="3">Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/288/xml</Entry> | ||
<Entry author="Jeff Brown - [email protected]" date="29 June 2020" revision="4">Fixed metadata, added groups and indicators</Entry> | ||
</ChangeLog> | ||
</MetaData> | ||
<CommandClass id="112"/> | ||
|
||
<!-- Association Groups --> | ||
<CommandClass id="133"> | ||
<Associations num_groups="2"> | ||
<!-- Each button toggles an individual scene on or off. Multiple scenes can be active at once. | ||
By default the device will associate groups 1 and 2 with the local loads. | ||
Do not auto associate the controller with group 1. --> | ||
<Group index="1" max_associations="232" label="Button 1" auto="false"/> | ||
<Group index="2" max_associations="232" label="Button 2"/> | ||
</Associations> | ||
</CommandClass> | ||
|
||
<!-- Indicator Lights --> | ||
<!-- Use these messages to override the indicator lights. | ||
|
||
91 00 1D 0D 01 00 00 : Reset LEDs to locally controlled operation (default behavior). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Assuming I'm reading this correctly - its using the Manufactuter_Proprietary CC for Leds? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's correct. Unfortunately it doesn't support the "Indicator" command class. |
||
91 00 1D 0D 01 FF xx : Set LEDs by OR-ing together the following bit patterns. | ||
|
||
00000000: button 1 off | ||
00000001: button 1 green | ||
00010000: button 1 red | ||
00010001: button 1 amber | ||
00000000: button 2 off | ||
00000010: button 2 green | ||
00100000: button 2 red | ||
00100010: button 2 amber | ||
--> | ||
</Product> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Product Revision="1" xmlns="https://github.com/OpenZWave/open-zwave"> | ||
<MetaData> | ||
<MetaDataItem name="Name">VRCS4</MetaDataItem> | ||
<MetaDataItem name="Description">4-Button Scene Controller with or without Switches</MetaDataItem> | ||
<MetaDataItem name="OzwInfoPage">http://www.openzwave.com/device-database/001D:0261:0702</MetaDataItem> | ||
<MetaDataItem name="ProductPic">images/leviton/vrcs4.png</MetaDataItem> | ||
<MetaDataItem id="0261" name="ZWProductPage" type="0802">https://products.z-wavealliance.org/products/318/</MetaDataItem> | ||
<MetaDataItem id="0261" name="FrequencyName" type="0802">U.S. / Canada / Mexico</MetaDataItem> | ||
<MetaDataItem id="0261" name="Identifier" type="0802">VRCS4-M0Z</MetaDataItem> | ||
<MetaDataItem id="0243" name="ZWProductPage" type="1302">https://products.z-wavealliance.org/products/287/</MetaDataItem> | ||
<MetaDataItem id="0243" name="FrequencyName" type="1302">U.S. / Canada / Mexico</MetaDataItem> | ||
<MetaDataItem id="0243" name="Identifier" type="1302">VRCS4-MRZ</MetaDataItem> | ||
<ChangeLog> | ||
<Entry author="Jeff Brown - [email protected]" date="29 June 2020" revision="1">Initial creation</Entry> | ||
</ChangeLog> | ||
</MetaData> | ||
|
||
<!-- Association Groups --> | ||
<CommandClass id="133"> | ||
<Associations num_groups="4"> | ||
<!-- Each button toggles an individual scene on or off. Only one scene can be active at once. | ||
If the device has a switch, then by default it will associate group 1 with the local load. | ||
Do not auto associate the controller with group 1. --> | ||
<Group index="1" max_associations="232" label="Button 1" auto="false"/> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same comment as above. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Similarly, the VRCS4 presents its load as a separate device and auto-associated it to button 1 as the factory default. That said, 3 of the 4 buttons are useless out of the box unless additional associations are made. So we could argue that auto-association with the primary controller is more essential for this one. I've made those associations manually for my case along with other configurations documented in this file. Unfortunately, openzwave currently doesn't know how to configure the scenes such that it can distinguish between each button and it doesn't handle incoming scene actuator commands either. With that in mind, I don't think auto-association is a good idea just yet but I will defer to your judgement on the matter. |
||
<Group index="2" max_associations="232" label="Button 2"/> | ||
<Group index="3" max_associations="232" label="Button 3"/> | ||
<Group index="4" max_associations="232" label="Button 4"/> | ||
</Associations> | ||
</CommandClass> | ||
|
||
<!-- Indicator Lights --> | ||
<!-- Use these messages to override the indicator lights. | ||
|
||
91 00 1D 0D 01 00 00 : Reset LEDs to locally controlled operation (default behavior). | ||
91 00 1D 0D 01 FF xx : Set LEDs by OR-ing together the following bit patterns. | ||
|
||
00000000: button 1 off | ||
00000001: button 1 green | ||
00010000: button 1 red | ||
00010001: button 1 amber | ||
00000000: button 2 off | ||
00000010: button 2 green | ||
00100000: button 2 red | ||
00100010: button 2 amber | ||
00000000: button 3 off | ||
00000100: button 3 green | ||
01000000: button 3 red | ||
01000100: button 3 amber | ||
00000000: button 4 off | ||
00001000: button 4 green | ||
10000000: button 4 red | ||
10001000: button 4 amber | ||
--> | ||
|
||
<!-- Scene Control --> | ||
<!-- Use these messages to assign scenes to the controller's buttons. | ||
When no scene is assigned (default behavior), the controller sends BASIC_SET messages | ||
to association groups 1 to 4 corresponding to the active button. | ||
When a scene is assigned, the controller sends scene activations and level change messages | ||
that offer richer control of the device's behavior. | ||
|
||
The controller has 8 scene groups: | ||
- Groups 1-4 are triggered when buttons 1-4 are pressed when their LED is not lit. | ||
- Groups 5-8 are triggered when buttons 1-4 are pressed when their LED is already lit. | ||
|
||
To configure the scenes, send SCENE_CONTROLLER_CONF_SET to associate scenes with | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we don't support this CC.... so your saying a user should use the SendRaw to get this working? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yep. At least for now. |
||
each scene group. The simplest solution is to assign scene groups 1-8 to scenes 1-8 | ||
so they are in one-to-one correspondence using the following messages: | ||
|
||
2D 01 01 01 00 : Set scene group 1 to scene 1 | ||
2D 01 02 02 00 : Set scene group 2 to scene 2 | ||
2D 01 03 03 00 : Set scene group 3 to scene 3 | ||
2D 01 04 04 00 : Set scene group 4 to scene 4 | ||
2D 01 05 05 00 : Set scene group 5 to scene 5 | ||
2D 01 06 06 00 : Set scene group 6 to scene 6 | ||
2D 01 07 07 00 : Set scene group 7 to scene 7 | ||
2D 01 08 08 00 : Set scene group 8 to scene 8 | ||
|
||
Once this is done, the controller will send SCENE_ACTIVATION_SET to the devices | ||
in association groups 1-4 whenever their corresponding scenes are triggered. To handle | ||
these messages centrally, make sure to associate the primary controller (node 1) with | ||
association groups 1-4. The primary controller will then receive messages like this: | ||
|
||
2B 01 S# 00 : Sent by controller when scene S# is triggered | ||
|
||
When you press the up/down level below the scene buttons, the controller will send | ||
send SWITCH_MULTILEVEL_START_LEVEL_CHANGE and SWITCH_MULTILEVEL_STOP_LEVEL_CHANGE messages | ||
to the association group corresponding to the most recently activated scene. | ||
|
||
26 04 40 00 : Sent by controller when the down lever is pressed | ||
26 05 : Sent by controller when the down lever is released | ||
26 04 00 00 : Sent by controller when the up lever is pressed | ||
26 05 : Sent by controller when the up lever is released | ||
|
||
After a scene change, the controller sometimes sends SCENE_ACTUATOR_CONF_GET messages | ||
(2C 02 00) to query the scene configuration of the controlled devices. The controlled | ||
devices should reply with SCENE_ACTUATOR_CONF_REPORT (2C 03 <sceneId> FF 00) to confirm | ||
the scene change. Ignoring the message works too although the controller seems to ask | ||
several times after each scene change until it gets the expected reply. | ||
|
||
Scene messages interact with the indicator light change messages described above. | ||
Turning on and off button LEDs determines whether the controller considers the | ||
corresponding scenes to be active. | ||
--> | ||
<CommandClass id="38"> | ||
<State> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We need to port AfterMark to Compatibility rather than state. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That sounds good. How about I remove this section from this patch for now and reintroduce it once the necessary command classes are implemented? Alternatively, what would you think of encoding the "after mark" bit as an attribute of the CommandClass element itself because it fundamentally changes how the command class is interpreted? |
||
<AfterMark>true</AfterMark> | ||
</State> | ||
</CommandClass> | ||
</Product> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,111 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<!-- | ||
Leviton 4 Button Zone Controller VRCZ4 / VRCZ4-MR | ||
https://products.z-wavealliance.org/products/288 | ||
https://products.z-wavealliance.org/products/374 | ||
--> | ||
<Product xmlns='https://github.com/OpenZWave/open-zwave' Revision="1"> | ||
<!-- Association Groups --> | ||
<CommandClass id="133"> | ||
<Associations num_groups="4"> | ||
<!-- Do not auto associate with Group 1 on this device --> | ||
<Group index="1" max_associations="232" label="Basic - Button 1" auto="false"/> | ||
<Group index="2" max_associations="232" label="Basic - Button 2"/> | ||
<Group index="3" max_associations="232" label="Basic - Button 3"/> | ||
<Group index="4" max_associations="232" label="Basic - Button 4"/> | ||
</Associations> | ||
</CommandClass> | ||
<Product Revision="2" xmlns="https://github.com/OpenZWave/open-zwave"> | ||
<MetaData> | ||
<MetaDataItem name="Name">VRCZ4</MetaDataItem> | ||
<MetaDataItem name="Description">4-Button Zone Controller with or without Switches</MetaDataItem> | ||
<MetaDataItem name="OzwInfoPage">http://www.openzwave.com/device-database/001D:0261:0702</MetaDataItem> | ||
<MetaDataItem name="ProductPic">images/leviton/vrcz4.png</MetaDataItem> | ||
<MetaDataItem id="0261" name="ZWProductPage" type="0702">https://products.z-wavealliance.org/products/374/</MetaDataItem> | ||
<MetaDataItem id="0261" name="FrequencyName" type="0702">U.S. / Canada / Mexico</MetaDataItem> | ||
<MetaDataItem id="0261" name="Identifier" type="0702">VRCZ4-M0Z</MetaDataItem> | ||
<MetaDataItem id="0243" name="ZWProductPage" type="1202">https://products.z-wavealliance.org/products/288/</MetaDataItem> | ||
<MetaDataItem id="0243" name="FrequencyName" type="1202">U.S. / Canada / Mexico</MetaDataItem> | ||
<MetaDataItem id="0243" name="Identifier" type="1202">VRCZ4-MRZ</MetaDataItem> | ||
<ChangeLog> | ||
<Entry author="Jeff Brown - [email protected]" date="29 June 2020" revision="2">Fixed metadata and groups, added indicators</Entry> | ||
</ChangeLog> | ||
</MetaData> | ||
|
||
<!-- Association Groups --> | ||
<CommandClass id="133"> | ||
<Associations num_groups="4"> | ||
<!-- Each button toggles an individual zone on or off. Multiple zones can be active at once. | ||
If the device has a switch, then by default it will associate group 1 with the local load. | ||
Do not auto associate the controller with group 1. --> | ||
<Group index="1" max_associations="232" label="Button 1" auto="false"/> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same comment as others. |
||
<Group index="2" max_associations="232" label="Button 2"/> | ||
<Group index="3" max_associations="232" label="Button 3"/> | ||
<Group index="4" max_associations="232" label="Button 4"/> | ||
</Associations> | ||
</CommandClass> | ||
|
||
<!-- Indicator Lights --> | ||
<!-- Use these messages to override the indicator lights. | ||
|
||
91 00 1D 0D 01 00 00 : Reset LEDs to locally controlled operation (default behavior). | ||
91 00 1D 0D 01 FF xx : Set LEDs by OR-ing together the following bit patterns. | ||
|
||
00000000: button 1 off | ||
00000001: button 1 green | ||
00010000: button 1 red | ||
00010001: button 1 amber | ||
00000000: button 2 off | ||
00000010: button 2 green | ||
00100000: button 2 red | ||
00100010: button 2 amber | ||
00000000: button 3 off | ||
00000100: button 3 green | ||
01000000: button 3 red | ||
01000100: button 3 amber | ||
00000000: button 4 off | ||
00001000: button 4 green | ||
10000000: button 4 red | ||
10001000: button 4 amber | ||
--> | ||
|
||
<!-- Scene Control --> | ||
<!-- Use these messages to assign scenes to the controller's buttons. | ||
When no scene is assigned (default behavior), the controller sends BASIC_SET messages | ||
to association groups 1 to 4 corresponding to the active button. | ||
When a scene is assigned, the controller sends scene activations and level change messages | ||
that offer richer control of the device's behavior. | ||
|
||
The controller has 8 scene groups: | ||
- Groups 1-4 are triggered when buttons 1-4 are toggled to the left side. | ||
- Groups 5-8 are triggered when buttons 1-4 are toggled to the right side. | ||
|
||
To configure the scenes, send SCENE_CONTROLLER_CONF_SET to associate scenes with | ||
each scene group. The simplest solution is to assign scene groups 1-8 to scenes 1-8 | ||
so they are in one-to-one correspondence using the following messages: | ||
|
||
2D 01 01 01 00 : Set scene group 1 to scene 1 | ||
2D 01 02 02 00 : Set scene group 2 to scene 2 | ||
2D 01 03 03 00 : Set scene group 3 to scene 3 | ||
2D 01 04 04 00 : Set scene group 4 to scene 4 | ||
2D 01 05 05 00 : Set scene group 5 to scene 5 | ||
2D 01 06 06 00 : Set scene group 6 to scene 6 | ||
2D 01 07 07 00 : Set scene group 7 to scene 7 | ||
2D 01 08 08 00 : Set scene group 8 to scene 8 | ||
|
||
Once this is done, the controller will send SCENE_ACTIVATION_SET to the devices | ||
in association groups 1-4 whenever their corresponding scenes are triggered. To handle | ||
these messages centrally, make sure to associate the primary controller (node 1) with | ||
association groups 1-4. The primary controller will then receive messages like this: | ||
|
||
2B 01 S# 00 : Sent by controller when scene S# is triggered | ||
|
||
When you press the up/down level below the scene buttons, the controller will send | ||
send SWITCH_MULTILEVEL_START_LEVEL_CHANGE and SWITCH_MULTILEVEL_STOP_LEVEL_CHANGE messages | ||
to the association group corresponding to the most recently activated scene. | ||
|
||
26 04 40 00 : Sent by controller when the down lever is pressed | ||
26 05 : Sent by controller when the down lever is released | ||
26 04 00 00 : Sent by controller when the up lever is pressed | ||
26 05 : Sent by controller when the up lever is released | ||
|
||
After a scene change, the controller sometimes sends SCENE_ACTUATOR_CONF_GET messages | ||
(2C 02 00) to query the scene configuration of the controlled devices. The controlled | ||
devices should reply with SCENE_ACTUATOR_CONF_REPORT (2C 03 <sceneId> FF 00) to confirm | ||
the scene change. Ignoring the message works too although the controller seems to ask | ||
several times after each scene change until it gets the expected reply. | ||
|
||
Scene messages interact with the indicator light change messages described above. | ||
Turning on and off button LEDs determines whether the controller considers the | ||
corresponding scenes to be active. | ||
--> | ||
<CommandClass id="38"> | ||
<State> | ||
<AfterMark>true</AfterMark> | ||
</State> | ||
</CommandClass> | ||
</Product> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Product Revision="1" xmlns="https://github.com/OpenZWave/open-zwave"> | ||
<MetaData> | ||
<MetaDataItem name="Name">VRR15</MetaDataItem> | ||
<MetaDataItem name="Description">Scene Capable Receptable</MetaDataItem> | ||
<MetaDataItem name="OzwInfoPage">http://www.openzwave.com/device-database/001D:0334:1603</MetaDataItem> | ||
<MetaDataItem name="ProductPic">images/leviton/vrr15.png</MetaDataItem> | ||
<MetaDataItem id="0334" name="ZWProductPage" type="1603">https://products.z-wavealliance.org/products/812/</MetaDataItem> | ||
<MetaDataItem id="0334" name="FrequencyName" type="1603">U.S. / Canada / Mexico</MetaDataItem> | ||
<MetaDataItem id="0334" name="Identifier" type="1603">VRR15-1LZ</MetaDataItem> | ||
<ChangeLog> | ||
<Entry author="Jeff Brown - [email protected]" date="29 June 2020" revision="1">Initial creation</Entry> | ||
</ChangeLog> | ||
</MetaData> | ||
</Product> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No Config/Association Groups? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The configs are undocumented. I haven't needed to poke them, assuming there are any. The association groups are automatically detected just fine. There's only one group and it reports the state of the controlled load. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you do not auto associate, how does the controller get updates about state change? Maybe all Groups should be auto=true (group 1 is implicit)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The scene controller and the loads are represented as different zwave nodes using multichannel encapsulation.
The scene controller has factory default associations with the local loads (relays) on the device. There's no need to associate the primary controller unless you want the primary controller to respond to scene changes itself. In my case, I just want the VRCS2 loads to be locally controlled (so they're very responsive).
The loads appear as separate binary switches. They seem to get auto-associated (somehow?) with the primary controller so they do report their state changes as expected.
Aside: My old Vera automation system had a nasty habit of purging factory default associations when setting up a new device. In the case of the VRCS2, it would remove the associations for the local loads and effectively break the switch behavior unless manually reconfigured. It took ages to figure out what was happening there.