diff --git a/README.md b/README.md index 323b838dbf..6294ddc9ef 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,14 @@ ![Open-ZWave Library](https://github.com/OpenZWave/open-zwave-web/raw/master/gfx/OZW_SF.png) ================== -*Last Updated: 4 October 2019* +*Last Updated: 17 November 2022* + +* * * + +## NOTICE: This project is no longer being maintained. :warning: +openzwave has no more maintainers, are there any motivated to continue the development of the library? + +## Introduction Our goal is to create free software library that interfaces with Z-Wave controllers, allowing anyone to create applications to control devices on a Z-Wave network, without requiring in-depth knowledge of the Z-Wave protocol. OpenZWave is not about creating Z-Wave devices (nodes). The project consists of the main library, written in C++ and wrappers and supporting projects, to interface different languages and protocol(s). diff --git a/config/aeotec/zw095.xml b/config/aeotec/zw095.xml index 6934b2bfcf..ca4fa7d4c4 100644 --- a/config/aeotec/zw095.xml +++ b/config/aeotec/zw095.xml @@ -1,7 +1,7 @@ +--> http://www.openzwave.com/device-database/0086:005F:0102 images/aeotec/zw095.png @@ -21,6 +21,7 @@ Products that are Z-Wave certified can be used and communicate with other Z-Wave Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1289/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1596/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2046/xml + Configure ordinary lifeline association instead of multi channel lifeline association https://products.z-wavealliance.org/products/2046/ CEPT (Europe) @@ -250,5 +251,10 @@ Products that are Z-Wave certified can be used and communicate with other Z-Wave + + + + false + diff --git a/config/aeotec/zw100.xml b/config/aeotec/zw100.xml index 03381caa11..5a04903762 100644 --- a/config/aeotec/zw100.xml +++ b/config/aeotec/zw100.xml @@ -1,8 +1,8 @@ - +--> http://www.openzwave.com/device-database/0086:0064:0102 images/aeotec/zw100.png @@ -25,6 +25,7 @@ V1.10 + V1.11 (12/14/2017) Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2684/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2695/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2714/xml + Updated parameter 41 documentation based on https://help.aeotec.com/support/solutions/articles/6000219267-set-parameter-41-in-fibaro-home-center https://products.z-wavealliance.org/products/2714/ ZW100-C @@ -78,22 +79,23 @@ V1.10 + V1.11 (12/14/2017) Value=10 to 50. - Enable/disable the selective reporting only when measurements reach a certain threshold or percentage + Enable/disable the selective reporting only when measurements reach a certain threshold or percentage set in the threshold settings. This is used to reduce network traffic. - - Threshold change in temperature to induce an automatic report. - Note: - 1. The unit is Fahrenheit for US version, Celsius for EU/AU version. - 2. The value contains one decimal point. E.g. if the value is set to 20, the threshold value = 2.0 C (EU/AU) or 2.0 F (US). When the temperature has changed by 2.0 (of the appropriate unit), a temperature report will be sent. - + + Threshold change in temperature to induce an automatic report. In hexadecimal, the value should be in the form 0xAABBCCDD (firmware 1.10 and up) or 0xAABBCC (older firmware): + 1. AA should be 00 + 2. BB contains the temperature threshold with one decimal point. E.g. if the value is set to 0x14 (20 decimal), the threshold value is 2.0 degrees. So when the temperature has changed by 2.0 degrees, a temperature report will be sent. + 3. CC contains the unit: 01 for Celsius, 02 for Fahrenheit + 4. DD should be 00 + Example: decimal 1310976 is hexadecimal 0x140100, so 0x14 is 20 decimal, hence a change of 2.0 degree Celsius will trigger a notification report. - Threshold change in humidity to induce an automatic report. - Note: + Threshold change in humidity to induce an automatic report. + Note: 1. The unit is %. 2. The default value is 10, which means that a 10% change in humidity will trigger a report. @@ -102,8 +104,8 @@ V1.10 + V1.11 (12/14/2017) Threshold change in luminance to induce an automatic report. - Threshold change in battery level to induce an automatic report. - Note: + Threshold change in battery level to induce an automatic report. + Note: 1. The unit is %. 2. The default value is 10, which means that a 10% change in battery will trigger a report. @@ -121,8 +123,8 @@ V1.10 + V1.11 (12/14/2017) Enable/disable to send a report when the measurement is more than the upper limit value or less than the lower limit value. - Note: - If USB power, the Sensor will check the limit every 10 seconds. If battery power, the Sensor will check the limit when it is waken up. + Note: + If USB power, the Sensor will check the limit every 10 seconds. If battery power, the Sensor will check the limit when it is waken up. French Help @@ -175,26 +177,24 @@ V1.10 + V1.11 (12/14/2017) Upper Ultraviolet Threshold-fr - + When the measurement is more than this upper limit, which will trigger to sent out a sensor report. - High byte is the upper limit value. Low byte is the unit (0x01=Celsius, 0x02=Fahrenheit). - 1. When unit is Celsius. - Upper limit range: -40.0 to 100.0 C (0xFE70 to 0x03E8). + High two bytes is the upper limit value. Low two (firmware 1.10 and up) or single (older firmware) bytes is the unit (0x0100=Celsius, 0x0200=Fahrenheit). + 1. When unit is Celsius, upper limit rang is from: -40.0 to 100.0 C (0xFE70 to 0x03E8). E.g. The default upper limit of EU/AU version is 28.0 C (0x0118), when the measurement is more than 28.0C, it will be triggered to send out a temperature sensor report. - 2. When unit is Fahrenheit. - Upper limit range: -40.0 to 212.0 F (0xFE70 to 0x0848). + 2. When unit is Fahrenheit, upper limit range: -40.0 to 212.0 F (0xFE70 to 0x0848). E.g. The default upper limit of US version is 82.4F (0X0338), when the measurement is more than 82.4F, it will be triggered to send out a temperature sensor report. - + When the measurement is less than this lower limit, which will trigger to sent out a sensor report. - High byte is the lower limit value. Low byte is the unit (0x01=Celsius, 0x02=Fahrenheit). + High two bytes is the lower limit value. Low two (firmware 1.10 and up) or single (older firmware) bytes is the unit (0x0100=Celsius, 0x0200=Fahrenheit). 1. When unit is Celsius. Lower limit range: -40.0 to 100.0 C (0xFE70 to 0x03E8). E.g. The default lower limit of EU/AU version is 0 C (0x0000), when the measurement is less than 0C, it will be triggered to send out a temperature sensor report. - 2. When unit is Fahrenheit. + 2. When unit is Fahrenheit. Upper limit range: -40.0 to 212.0 F (0xFE70 to 0x0848). E.g. The default lower limit of US version is 32.0F (0x0140), when the measurement is less than 32.0F, it will be triggered to send out a temperature sensor report. @@ -203,35 +203,35 @@ V1.10 + V1.11 (12/14/2017) When the measurement is more than this upper limit, which will trigger to sent out a sensor report. Upper limit range: 0 to 100%. - E.g. The default upper limit is 60%, when the measurement is more than 60%, it will be triggered to send out a humidity sensor report. + E.g. The default upper limit is 60%, when the measurement is more than 60%, it will be triggered to send out a humidity sensor report. When the measurement is less than this lower limit, which will trigger to sent out a sensor report. Lower limit range: 0 to 100%. - E.g. The default lower limit is 50%, when the measurement is less than 50%, it will be triggered to send out a humidity sensor report. + E.g. The default lower limit is 50%, when the measurement is less than 50%, it will be triggered to send out a humidity sensor report. When the measurement is more than this upper limit, which will trigger to sent out a sensor report. Upper limit range: 0 to 30000 Lux. - E.g. The default upper limit is 1000Lux, when the measurement is more than 1000Lux, it will be triggered to send out a Lighting sensor report. + E.g. The default upper limit is 1000Lux, when the measurement is more than 1000Lux, it will be triggered to send out a Lighting sensor report. When the measurement is less than this lower limit, which will trigger to sent out a sensor report. Lower limit range: 0 to 30000 Lux. - E.g. The default lower limit is 100Lux, when the measurement is less than 100Lux, it will be triggered to send out a Lighting sensor report. + E.g. The default lower limit is 100Lux, when the measurement is less than 100Lux, it will be triggered to send out a Lighting sensor report. When the measurement is more than this upper limit, which will trigger to sent out a sensor report. Upper limit range: 1 to 11. - E.g. The default upper limit is 8, when the measurement is more than 8, it will be triggered to send out a ultraviolet sensor report. + E.g. The default upper limit is 8, when the measurement is more than 8, it will be triggered to send out a ultraviolet sensor report. @@ -244,9 +244,9 @@ V1.10 + V1.11 (12/14/2017) Note: - 1. When the current measurement lower or equal (Upper limit - Recover limit), the upper limit report is enabled and then it would send out a sensor report when the next measurement is more than the upper limit. + 1. When the current measurement lower or equal (Upper limit - Recover limit), the upper limit report is enabled and then it would send out a sensor report when the next measurement is more than the upper limit. After that, the upper limit report would be disabled again until the measurement lower or equal (Upper limit - Recover limit). - 2. When the current measurement greater or equal (Lower limit + Recover limit), the lower limit report is enabled and then it would send out a sensor report when the next measurement is less than the lower limit. + 2. When the current measurement greater or equal (Lower limit + Recover limit), the lower limit report is enabled and then it would send out a sensor report when the next measurement is less than the lower limit. After that, the lower limit report would be disabled again until the measurement greater or equal (Lower limit + Recover limit). 3. High byte is the recover limit value. Low byte is the unit (0x01=Celsius, 0x02=Fahrenheit). 4. Recover limit range: 1.0 to 25.5 C/ F (0x0101 to 0xFF01 or 0x0102 to 0xFF02). @@ -256,20 +256,20 @@ V1.10 + V1.11 (12/14/2017) Note: - 1. When the current measurement lower or equal (Upper limit - Recover limit), the upper limit report is enabled and then it would send out a sensor report when the next measurement is more than the upper limit. + 1. When the current measurement lower or equal (Upper limit - Recover limit), the upper limit report is enabled and then it would send out a sensor report when the next measurement is more than the upper limit. After that the upper limit report would be disabled again until the measurement lower or equal (Upper limit - Recover limit). - 2. When the current measurement greater or equal (Lower limit + Recover limit), the lower limit report is enabled and then it would send out a sensor report when the next measurement is less than the lower limit. + 2. When the current measurement greater or equal (Lower limit + Recover limit), the lower limit report is enabled and then it would send out a sensor report when the next measurement is less than the lower limit. After that the lower limit report would be disabled again until the measurement greater or equal(Lower limit + Recover limit). 3. Recover limit range: 1 to 50% (0x01 to 0x32). - E.g. The default recover limit value is 5%, when the measurement is less than (Upper limit - 5), the upper limit report would be enabled one time or when the measurement is more than (Lower limit + 5), the lower limit report would be enabled one time. + E.g. The default recover limit value is 5%, when the measurement is less than (Upper limit - 5), the upper limit report would be enabled one time or when the measurement is more than (Lower limit + 5), the lower limit report would be enabled one time. Note: - 1. When the current measurement lower or equal (Upper limit - Recover limit), the upper limit report is enabled and then it would send out a sensor report when the next measurement is more than the upper limit. + 1. When the current measurement lower or equal (Upper limit - Recover limit), the upper limit report is enabled and then it would send out a sensor report when the next measurement is more than the upper limit. After that the upper limit report would be disabled again until the measurement lower or equal (Upper limit - Recover limit). - 2. When the current measurement greater or equal (Lower limit + Recover limit), the lower limit report is enabled and then it would send out a sensor report when the next measurement is less than the lower limit. + 2. When the current measurement greater or equal (Lower limit + Recover limit), the lower limit report is enabled and then it would send out a sensor report when the next measurement is less than the lower limit. After that the lower limit report would be disabled again until the measurement greater or equal (Lower limit + Recover limit). 3. Unit = 10*Recover limit (Lux) 4. Recover limit range: 10 to 2550Lux (0x01 to 0xFF). @@ -279,12 +279,12 @@ V1.10 + V1.11 (12/14/2017) Note: - 1. When the current measurement lower or equal (Upper limit - Recover limit), the upper limit report is enabled and then it would send out a sensor report when the next measurement is more than the upper limit. + 1. When the current measurement lower or equal (Upper limit - Recover limit), the upper limit report is enabled and then it would send out a sensor report when the next measurement is more than the upper limit. After that the upper limit report would be disabled again until the measurement lower or equal (Upper limit - Recover limit). - 2. When the current measurement greater or equal (Lower limit + Recover limit), the lower limit report is enabled and then it would send out a sensor report when the next measurement is less than the lower limit. + 2. When the current measurement greater or equal (Lower limit + Recover limit), the lower limit report is enabled and then it would send out a sensor report when the next measurement is less than the lower limit. After that the lower limit report would be disabled again until the measurement greater or equal(Lower limit + Recover limit). 3. Recover limit range: 1 to 50% (0x01 to 0x32). - E.g. The default recover limit value is 5%, when the measurement is less than (Upper limit - 5), the upper limit report would be enabled one time or when the measurement is more than (Lower limit + 5), the lower limit report would be enabled one time. + E.g. The default recover limit value is 5%, when the measurement is less than (Upper limit - 5), the upper limit report would be enabled one time or when the measurement is more than (Lower limit + 5), the lower limit report would be enabled one time. @@ -398,10 +398,10 @@ V1.10 + V1.11 (12/14/2017) Temperature calibration (the available value range is [-128,127] or [-12.8C,12.7C]). Note: 1. High byte is the calibration value. Low byte is the unit (0x01=Celsius,0x02=Fahrenheit) - 2. The calibration value (high byte) contains one decimal point. + 2. The calibration value (high byte) contains one decimal point. E.g. if the value is set to 20 (0x1401), the calibration value is 2.0C (EU/AU version) or if the value is set to 20 (0x1402), the calibration value is 2.0F (US version) - 3. The calibration value (high byte) = standard value - measure value. - E.g. If measure value =25.3C and the standard value = 23.2C, so the calibration value= 23.2C - 25.3C= -2.1C (0xEB). + 3. The calibration value (high byte) = standard value - measure value. + E.g. If measure value =25.3C and the standard value = 23.2C, so the calibration value= 23.2C - 25.3C= -2.1C (0xEB). If the measure value =30.1C and the standard value = 33.2C, so the calibration value= 33.2C - 30.1C=3.1C (0x1F). Default value: 1 for EU/AU version, 2 for US version. @@ -410,21 +410,21 @@ V1.10 + V1.11 (12/14/2017) The calibration value = standard value - measure value. (the available value range is [-50, 50]). If measure value =80RH and the standard value = 75RH, so the calibration value= 75RH-80RH = -5RH (0xFB). - If the measure value =85RH and the standard value = 90RH, so the calibration value= 90RH-85RH = 5RH (0x05). + If the measure value =85RH and the standard value = 90RH, so the calibration value= 90RH-85RH = 5RH (0x05). - The calibration value = standard value - measure value. + The calibration value = standard value - measure value. (the available value range is [-1000, 1000]). - If measure value =800Lux and the standard value = 750Lux, so the calibration value= 750-800 = -50 (0xFFCE). - If the measure value =850Lux and the standard value = 900Lux, so the calibration value= 900-850 = 50 (0x0032). + If measure value =800Lux and the standard value = 750Lux, so the calibration value= 750-800 = -50 (0xFFCE). + If the measure value =850Lux and the standard value = 900Lux, so the calibration value= 900-850 = 50 (0x0032). - The calibration value = standard value measure value. + The calibration value = standard value measure value. (the available value range is [-10, 10]). - If measure value =9 and the standard value = 8, so the calibration value= 8-9 = -1 (0xFE). - If the measure value =7 and the standard value = 9, so the calibration value= 9-7 = 2 (0x02). + If measure value =9 and the standard value = 8, so the calibration value= 8-9 = -1 (0xFE). + If the measure value =7 and the standard value = 9, so the calibration value= 9-7 = 2 (0x02). diff --git a/config/aeotec/zw141.xml b/config/aeotec/zw141.xml index 969759470e..90c022bb26 100644 --- a/config/aeotec/zw141.xml +++ b/config/aeotec/zw141.xml @@ -3,7 +3,7 @@ Aeotec ZW141 Nano Shutter, based on Engineering Spec 8/22/2019 Product Type ID: EU=0x00, US=0x01, AU=0x02 CN=0x1D --> - + http://www.openzwave.com/device-database/0086:008D:0103 images/aeotec/zw141.png @@ -41,7 +41,8 @@ Product Type ID: EU=0x00, US=0x01, AU=0x02 CN=0x1D Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2953/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3075/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/Products/3693/XML - Fixed timing types, Fixed button list types + Fixed timing types, Fixed button list types + Add missing list item for param 22 U.S. / Canada / Mexico ZW141-A @@ -56,8 +57,12 @@ Product Type ID: EU=0x00, US=0x01, AU=0x02 CN=0x1D - + Set to toggle the motor running direction + + + + Set the blade turn time for Venetian mode. Details can be found in section 4.2 of Advanced information Product Manual. @@ -67,9 +72,9 @@ Product Type ID: EU=0x00, US=0x01, AU=0x02 CN=0x1D Set to enter/exit calibration mode - - - + + + Set user confirmation for calibration diff --git a/config/aeotec/zwa011.xml b/config/aeotec/zwa011.xml new file mode 100644 index 0000000000..cae441bd69 --- /dev/null +++ b/config/aeotec/zwa011.xml @@ -0,0 +1,157 @@ + + + + http://www.openzwave.com/device-database/0371:000B:0002 + images/aeotec/zwa011.png + https://products.z-wavealliance.org/products/3866/ + Door / Window Sensor 7 + CEPT (Europe) + ZWA011-C + Aeotec Door/ Window Sensor 7 is built on the 700 series Z-Wave technology. + Its a small window position sensor for your smart home, it monitors window and their exact opening position and lets your know when a window is tilted or completely opened. + It also supports connecting external binary sensors with a dry contact through the dry binary contact of the Door/ Window sensor. + Using the latest technology it supports the highest Z-Wave security level of S2 and SmartStart. + + Press the tamper once + 1. Open the housing. + 2. Remove the battery protection. + 3. Press the tamper on the side of the appliance three times quickly. + + 1. Open the housing. + 2. Press the tamper on the side of the appliance three times quickly. + + Reset to factory default + This device also allows to be reset without any involvement of a Z-Wave controller. This procedure should only be used when the primary controller is inoperable. + Once Cover is removed and the tamper switch is tripped, push the tamper for 5 seconds until the RED LED + blinks once. Then release tamper and push it again for 5 seconds while the RED LED is blinking until the + GREEN LED blinks once. + + https://aeotec.freshdesk.com/support/solutions/folders/6000237099 + https://aeotec.freshdesk.com/support/solutions/folders/6000237099 + + Initial Config File taken from ZWA012 + Initial Config File taken from https://help.aeotec.com/support/solutions/articles/6000218764-door-windows-sensor-7-user-guide + + + + + + true + + + + + + Parameter defines device operation mode. + + + + + + Parameter defines state of the sensor when the magnet is close. + If the alarm sensor is connected, it determines the output type. + Parameter inactive in external button mode (parameter Operation Mode set to 1). + + + + + + + This parameter defines events indicated by the visual LED indicator. Disabling events might extend battery life. + Values of parameters may be combined, e.g. 1+2=3 means opening/closing and wake up will be indicated by the visual indicator. + 0 - No indications. + 1 - Indication of opening/closing status change (input In). + 2 - Indication of wake up (1 x click or periodical). + 4 - Indication of device tampering. + + + + + Allows to enable activation of Z-Wave range test with double click of a Tamper Switch 2. + + + + + + + Parameter defines events which result in sending On/Off commands to devices added to the 2nd Association Group. + These commands are sent alternately to switch the devices On and Off. + Commands represent the values of BASIC SET command frames. + Parameter is inactive in external dry-contact mode (parameter Operation Mode set to 1). + + + + + + + + Command frames sent to devices added to the 2nd association group. + + + + + + + + The value of 0 turns OFF the device, 255 turns it On. + In case of associating the Dimmer or Roller Shutter module, values 1-99 allow to set an Associated device to a specified level. + + + + + The value of 0 turns OFF the device, 255 turns it On. + In case of associating the Dimmer or Roller Shutter module, values 1-99 allow to set an Associated device to a specified level. + + + + + Time period after which On command frame will be sent. + + + + + Time period after which Off command frame will be sent. + + + + + Time period after which a tamper alarm will be cancelled. + + + + + Reporting cancellation of tamper alarm to the controller and 5th Association Group. + + + + + + + The device can trigger scenes via Dry Input Terminal (external contact) using scene IDs assigned to different events. + + + + + + + The device can report Tilt Window events. + This functionality can be disabled if the device is mounted on a door or windows without tilt functionality.To disable tilt detection set the value to 0. + + + + + + You can use this parameter to adjust the tilt sensitivity if the tilt is too low or too high. + + + + + + + + + + + + + diff --git a/config/aeotec/zwa023.xml b/config/aeotec/zwa023.xml new file mode 100644 index 0000000000..d5213e1f00 --- /dev/null +++ b/config/aeotec/zwa023.xml @@ -0,0 +1,310 @@ + + + + ZWA023 Smart Switch 7 + + Aeotec Smart Switch 7 is a Z-Wave Switch plug-in module specifically used to enable Z-Wave command and control (on/off) of any plug-in tool. It can report immediate wattage consumption or kWh energy usage over a period of time. In the event of power failure, non-volatile memory retains all programmed information relating to the unit’s operating status. + The Plug is also a security S2 Z-Wave device, it supports Over The Air (OTA) feature for the products firmware upgrade and SmartStart network pairing feature. + + http://www.openzwave.com/device-database/0371:0017:0103 + https://products.z-wavealliance.org/products/3844 + https://products.z-wavealliance.org/products/3844 + images/aeotec/zwa023.png + https://products.z-wavealliance.org/products/3844 + N/A + + 1. Set your Z-Wave Controller into its 'Add Device' mode. Refer to the Controller's manual if you are unsure of how to perform this step. + 2. Power your Smart Switch to any outlet; its LED will slowly fade in and out slowly with a blue color to indicate it is ready to pair. + 3. Tap the action button once. The LED will turn solid yellow when it enters pair mode. + 4. If your Z-Wave Controller supports S2 encryption, enter the first 5 digits of DSK into your Controller's interface if it is requested. The DSK is printed on Smart Switch. + a. If pairing succeeds, it will flash white/green 4 times. + b. If pairing fails, it will light a solid bright red light for 2 seconds and then return to a breathing blue light; repeat steps 1 to 4 if this happens. + + + 1. Set your Z-Wave Controller into 'Remove Device' / 'Unpair Device' mode. Refer to the Controller's manual if you are unsure of how to perform this step. + 2. Make sure the product is powered. If not, plug it into a wall socket and power it on. + 3. Click Action Button 2 times quickly; it will bright violet light up to 2s. + a. If Removing fails, it will light a bright red color for 2 seconds and then turn back to Load Indicator Mode; repeat steps 1 to 3. Contact us for further support if needed. + b. If Removing succeeds, it will become breathing blue light. Smart Switch is removed from the Z-Wave network successfully and is ready to be paired again. + + + If the primary controller is missing or inoperable, you may need to reset the device to factory settings. + + Make sure the product is powered. If not, plug it into a wall socket and power on. To complete the reset process manually: + + 1. Press and hold the Action Button for at least 20 seconds and then release. + 2. The LED indicator will fade its blue light in and out slowly, which indicates the reset operation is successful. + + https://products.z-wavealliance.org/products/3844 + U.S. / Canada / Mexico + ZWA023-A + + Add ZWA023 Smart Switch 7 - Info from Aeotec's engineering sheet + Fixed missing config params 1-9 - Info from Aeotec's engineering sheet + + + + + + + This parameter is used to change the reaction of LED setting. + + 0 - Disable LED completely. LED will only be used for network operation indicator, such as inclusion, exclusion, factory reset. + 1 - Turn on between particular times only (act as night light). The default color is red, color can be changed by Color CC. + 2 - Display On/Off Status. The default color is white at 50% lightness. Color can be changed by Color CC. + + + + + + + + This parameter is used to configure the Night Light on time. User can use Color CC to change the Night Light color(default Red). Only useful when parameter 1 is set to 1. + + Value is of the pattern 0xRRHHMMSS. Where: + RR = Reserved + HH = Hours + MM = Minutes + SS = Seconds + Default = 0x00180000 means 6pm. + 0x00180000 = 1572864 dec + + + + + This parameter is used to configure the Night Light off time. Only useful when parameter 1 is set to 1. + + Value is of the pattern 0xRRHHMMSS. Where: + RR = Reserved + HH = Hours + MM = Minutes + SS = Seconds + Default = 0x00060000 means 6am. + 0x00060000 = 393216 dec + + + + + Set the duration of blink, unit second. + 0 - indicates that it is not blinking + 1~255 - set the duration + + + + + Set amount of blinks per second. + i.e. If set to 5, it should blink 5 times per second. + + + + + Send alert when in use. A Scene Activation Set command will be sent when energy draw is above this setting value. + 0 - disable + 1~3000 - enable, unit W + + + + + Prevents the plug from being turned off via its button. + + 0 - the plug will operate as normal and can be turned on or off. + 1 - the button on the plug will be disabled for on and off commands, but still work for network inclusion and exclusion. + 2 - the plug will ignore any commands to turn it off and it will ignore any use of the button (but still work for network inclusion and exclusion) + + + + + + + + Set the plug’s action in case of power out. + + 0 - last status + 1 - power on + 2 - power off + + + + + + + + Set the scene id when Scene Activation Set Command sent through group3. Refer parameter 6 for more information. + + + + + Turn off switch when current of load connected bypasses the maximum allowed power regardless of always on setting. + 0 - disable overload protection + 1~1800 - When watt detected above this setting value, the switch will be turned off immediately. And an over-load notification will be sent. + + + + + This parameter is used to set the over-voltage protect value, unit V. + 0 - disable over-voltage protection + 1~94 - The device will set value to 95 instead. + 95~255 - When voltage detected above this setting value, the switch will be turned off immediately. And an over-voltage notification will be sent. + + + + + Set the period of threshold check. Unit second. + 0 - disable all threshold settings + 1~255 - set in seconds on how fast device checks for threshold settings + + + + + Energy kWh threshold reporting enable/disable. Unit kWh. + + + + + Threshold setting for Watt for inducing automatic report. Unit W. + + + + + Threshold settings for current for inducing automatic report. Unit A. + + + + + Set the automatic report time of Watt. Unit second. + 0 - disable + 1~30 = 30s. + 31-65535 = 31-65535s. + + + + + Set the automatic report time of kWh. Unit second. + 0 - disable + 1~30 = 30s. + 31-65535 = 31-65535s. + + + + + Set the automatic report time of Voltage. Unit second. + 0 - disable + 1~30 = 30s. + 31-65535 = 31-65535s. + + + + + Set the automatic report time of Current. Unit second. + 0 - disable + 1~30 = 30s. + 31-65535 = 31-65535s. + + + + + Bitfield. Determines if alarms are enabled in Switch, and what Switch will react to which alarms. + + 0 - Disable all alarm settings + 1 - Smoke Alarm + 2 - CO Alarm + 4 - CO2 Alarm + 8 - Heat Alarm + 16 - Water Alarm + 32 - Access Control (DW Sensor open) + 64 - Home Security (intrusion) + 128 - Motion Sensor trigger + + + + Smoke Alarm + + + + CO Alarm + + + + CO2 Alarm + + + + Heat Alarm + + + + Water Alarm + + + + Access Control (DW Sensor open) + + + + Home Security (intrusion) + + + + Motion Sensor trigger + + + + + Enabled by Alarm Settings, and determines what the switch does in the case an alarm is triggered. + + 0 - disable, no reaction to alarm settings + 1 - Switch is ON + 2 - Switch is OFF + 3~255 - Sets rate at which Switch turns ON and OFF in seconds. (i.e. If set to 3, then Switch will turn ON in 0.3 seconds, and then turn OFF in 0.3 seconds in a cycle until user disables the alarm manually. If set to 255, then it will cycle every 25.5 seconds) + + + + + Determines the method of disabling the alarm of the device. + + 0 - Can be disabled by 1 tapping Switches action button once. + 1 - Can be disabled by 2 tapping Switches action button within 1 second. + 2 - Can be disabled by 4 tapping Switches action button within 2 seconds. + 4 - Can be disabled by pressing and holding Switches action button about 4 seconds. + 5~255 - Sets the duration of the alarm in seconds (i.e Sets this setting to 50, the alarm state of the switch will disable after 50 seconds) + Note: when the device receives the corresponding Notification State Idle Event, which can also dismiss the current alarm. + + + + + Acts as auto off after as soon as the switch turns ON, setting is set in seconds. + + 0 - no auto off with timer + 1~86400 - seconds + + + + + Acts as auto on after as soon as the switch turns OFF, setting is set in seconds. + + 0 - no auto on with timer + 1~86400 - seconds + + + + + Which report will be sent to lifeline group when the output state is changed. + + 0 - Send nothing + 1 - Send Basic Report + 2 - Send Switch Binary Report + + + + + + + + + + + + + + + diff --git a/config/assa_abloy/ProSLKey-FreeDeadbolt.xml b/config/assa_abloy/ProSLKey-FreeDeadbolt.xml new file mode 100644 index 0000000000..77e1c21ba0 --- /dev/null +++ b/config/assa_abloy/ProSLKey-FreeDeadbolt.xml @@ -0,0 +1,105 @@ + + + + Yale Pro SL Key-Free Deadbolt (YRD136 or YRD156) + Never worry about the hassle of carrying around or losing your keys again. Lock and unlock your home with ease from the back-lit keypad. Create unique entry codes for friends, family, service providers, and renters. The YRD136 has Z-Wave Plus built in so you can easily integrate it into a compatible smart home or alarm system with one-touch enrollment. + http://www.openzwave.com/device-database/0129:803b:0508 + https://us.yalehome.com/en/yalehome-products/yale-pro-sl-yrd156yrd136/yale-pro-sl-yrd156yrd136/prosl/ + images/assa_abloy/ProSLKey-FreeDeadbolt.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3446/YRD136%20FINAL-compressed%20(1).pdf + + 1. Remove the battery cover. + 2. Press button and hold until unit beeps two (2) times. + 3. Release button and network joining automatically begins. + 4. Replace battery cover. + + + 1. Remove the battery cover. + 2. Press button and hold until unit beeps five (5) times. + 3. Release button and network removal automatically begins. + 4. Replace battery cover. + + https://products.z-wavealliance.org/products/3446/ + U.S. / Canada / Mexico + YRD136 + + Initial product configuration + Fix metadata + + + + + + + + Disable the door sensor alarm function. + + + + + + + + + + seconds; after successful code entry and unit unlocks, it will automatically re-lock after specified time (30 = default value) + + + + The number of invalid code entries lock will accept before sending TAMPER Alarm. + When number of wrong code entries is exceeded, lock will disable keypad for the time specified by Shutdown Time parameter. (5 = default) + + + + + + + + + + + + number of seconds unit will be inoperable after number of wrong code entries is exceeded (60 = default) + + + + Normal Mode: Master code and all user codes enabled (default). + Vacation Mode: Master code enabled, all user codes disabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/assa_abloy/yrm276.xml b/config/assa_abloy/yrm276.xml new file mode 100644 index 0000000000..888a298bf8 --- /dev/null +++ b/config/assa_abloy/yrm276.xml @@ -0,0 +1,112 @@ + + + + Yale Assure Lock for Andersen Patio Doors + Yale Assure Lock® is a secure, keyless lock developed by Yale exclusively available with Andersen Patio Doors (E-Series and A-Series hinged patio doors). Monitor, lock and unlock from anywhere with your Yale Assure Lock featuring Andersen’s VeriLock™ sensor technology and integrate into a compatible home automation or security system. + http://www.openzwave.com/device-database/0129:1604:8014 + https://shopyalehome.com/products/assure-lock-for-andersen-patio-doors-z-wave-plus-in-satin-nickel?_pos=9&_sid=9cc5e3274&_ss=r + https://support.shopyalehome.com/en_us/categories/getting-started-Sy5xA1Wyw + images/assa_abloy/yrm276.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2911/YRM276_YRM476-INST-FUL%20Rev%20A%20WEB_SystemGuide.pdf + 1. Enter the 4-8 digit master PIN code followed by the gear key. +2. Press the 7 key followed by the gear key. +3. Press the 1 key followed by the gear key. + 1. Enter the 4-8 digit master PIN code followed by the gear key. +2. Press the 7 key followed by the gear key. +3. Press the 3 key followed by the gear key. + Please use this procedure only when the network primary controller is missing or otherwise inoperable. +When resetting the lock, all user codes, including the Master code, are deleted. All programming features are reset to the original default settings. +1. Remove the battery cover and batteries. +2. Remove the interior lock to access the reset button. +3. The reset button is located above the cable connectors. PCB +4. Re-insert 3 batteries and hold the reset button for 3 seconds. +5. While still holding the reset button, insert the 4th battery, and hold the reset button for an additional 3 seconds. +6. Release the reset button. + https://products.z-wavealliance.org/products/2925 + U.S. / Canada / Mexico + YRM276 + + Initial entry with data obtained from https://products.z-wavealliance.org/products/2925 + + + + + Default is Low Volume + + + + + + Default is Off + + + + + 1 to 180 seconds (default is 30) + + + 3 to 10 (default is 5) + + + Default is English + + + + + + 10 to 180 seconds (default is 60) + + + Normal (default) +Vacation = keypad lockout +Privacy = no keypad, RF Unlock will work + + + + + + Default is On + + + + + Default is Off + + + + + Default is Off + + + + + No default value + + + + 10 to 2540 second. This value is represented as seconds X 10 (ie a value of 4 would mean a door propped timer of 40 seconds). Set to 0 to disable (default). + +**Optional Door Position Switch must hvae been installed with the lock. + + + Used to enable/disable door condition alarms for locks that support a door position sensor. Any lock that does not support DPS will always report Off. Default is Off + +**Optional Door Position Switch must hvae been installed with the lock. + + + + + Off (default) = The lock will always lock regardless of DPSstate +On = Check DPS before motorized lock function + +**Optional Door Position Switch must hvae been installed with the lock. + + + + + + + + + + \ No newline at end of file diff --git a/config/cooper/RF9501.xml b/config/cooper/RF9501.xml index 3bfa0d0806..b5cb07cc40 100644 --- a/config/cooper/RF9501.xml +++ b/config/cooper/RF9501.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/001A:0000:534C images/cooper/RF9501.png @@ -10,6 +10,7 @@ http://www.cooperindustries.com/content/public/en/wiring_devices/products/lighting_controls/aspire_rf_wireless/switches/aspire_rf_15a_wireless_switch_rf9501.html Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/740/xml + Removed Invalid RF9501 Group @@ -52,9 +53,8 @@ - + - diff --git a/config/cooper/RF9540-N.xml b/config/cooper/RF9540-N.xml index 91c0de1d5d..a0ca9264a7 100644 --- a/config/cooper/RF9540-N.xml +++ b/config/cooper/RF9540-N.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/001A:0101:4449 images/cooper/RF9540-N.png @@ -10,6 +10,7 @@ Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/797/xml Remove group 255 as 0 associations is reported from the device + Add VerifyChanged flags for Switch Multilevel V2 @@ -72,6 +73,12 @@ + + + + true + + diff --git a/config/cooper/RF9601.xml b/config/cooper/RF9601.xml new file mode 100644 index 0000000000..e42ad00e9b --- /dev/null +++ b/config/cooper/RF9601.xml @@ -0,0 +1,73 @@ + + + http://www.openzwave.com/device-database/001A:0503:534C + images/cooper/RF9601.png + https://products.z-wavealliance.org/products/3038/ + Eaton RF9601DW + U.S. / Canada / Mexico + Eaton’s Z-Wave Plus Wireless Switch + Eaton’s Z-Wave plus wireless switch replaces regular switches (where a neutral is present) to provide local and remote ON/OFF control for most common residential lighting loads including LEDs and certain motor loads. Each switch can be manually and + remotely controlled by commands sent from your compatible Z-Wave certified controller. Features and Benefits: • Replaces standard switch to add local and wireless control • Single pole and 3-Way control: Use with standard 3-Way switch or Z-Wave + Plus Accessory RF9617 • Neutral is required for installation • Supports motors loads up to ½ HP • Features blue load indicating LED light that can be dimmed in ON or OFF state + https://www.eaton.com/us/en-us/skuPage.RF9601DW.html + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3038/xml + + + + + + + The configuration value is a signed single byte number. This value may represent a value with no units or may represent a value such as time. 0 to 127 (decimal) represents 0 to 127 seconds of time. -128 to -1 (negative decimal numbers) represents 128 + to 255 seconds as calculated by this formula. Config value = desired time in seconds (or desired value) -256 For an example of 172 seconds: config value = 172 - 256 = -84 (decimal) or 0xAC (hex) + + + + + The amount of time in seconds the switch will turn on for when panic mode is trigered. The configuration value is a signed single byte number. This value may represent a value with no units or may represent a value such as time. 0 to 127 (decimal) represents + 0 to 127 seconds of time. -128 to -1 (negative decimal numbers) represents 128 to 255 seconds as calculated by this formula. Config value = desired time in seconds (or desired value) -256 For an example of 172 seconds: config value = 172 - 256 + = -84 (decimal) or 0xAC (hex) + + + + + The amount of time in seconds the switch will turn off for when panic mode is triggered. The configuration value is a signed single byte number. This value may represent a value with no units or may represent a value such as time. 0 to 127 (decimal) represents + 0 to 127 seconds of time. -128 to -1 (negative decimal numbers) represents 128 to 255 seconds as calculated by this formula. Config value = desired time in seconds (or desired value) -256 For an example of 172 seconds: config value = 172 - 256 + = -84 (decimal) or 0xAC (hex) + + + + + Power up state of the device + + + + + + + + Enables this switch to participate in panic mode + + + + + + + Adjust brightness of the blue indicator LED with Switch is ON - 0 = OFF 4 = Maximum brightness + + + + + Adjust brightness of the blue indicator LED with Switch is OFF - 0 = OFF 4 = Maximum brightness + + + + + + + + + + + + diff --git a/config/device_configuration.xsd b/config/device_configuration.xsd index 993553491c..9a1fe4e8f6 100644 --- a/config/device_configuration.xsd +++ b/config/device_configuration.xsd @@ -92,6 +92,7 @@ + diff --git a/config/dome/0104.xml b/config/dome/0104.xml new file mode 100644 index 0000000000..a7e6ac0c09 --- /dev/null +++ b/config/dome/0104.xml @@ -0,0 +1,95 @@ + + + http://www.openzwave.com/device-database/021F:0086:0003 + images/dome/0086.png + https://products.z-wavealliance.org/products/1847/ + The Dome™ Home Automation DMMZ1 Mouser is a powerful rodent electric trap with Z-Wave technology built-in. It kills mice, rats and other rodents quickly, cleanly and humanely with a powerful jolt of electricity. Simply set bait, turn on and place in desired location. When connected to Z-Wave Certified Hub, once the trap is full, it sends out a notification to your smarthome system. You can easily dispose of Mouser’s contents without ever having to touch them. Use the top handle and tip to dispose of caught rodents. Specially designed removable and washable bait tray will allow you to easily replace the bait and set it back up. It operates on 4 AA batteries (not included) and is optimised to last over 50 uses. Mouser features extra-long Z-Wave wireless range (up to 150 ft) and Dome™ DMMZ1 Mouser comes with a 1-year limited warranty. Measurements in inches: 8.75 x 4.5 x 5. Dome™ Home Automation Z-Wave devices give your family peace of mind and security you can count on. With Dome™, you’re always connected and always covered. +• Humanely kills mice, rats and other rodents with a powerful electric shock and sends an alert to your smarthome system when the trap needs to be emptied +• Easy to use: set bait, turn on and place in desired location +Touch free: hold handle and tip to dispose of contents, then set it again +• Up to 150-foot Z-Wave range. Operating Temperature: 32°F - 112°F. Powered by 4 AA batteries (not included) enabling it to be triggered over 50 times +• Z-Wave Plus Certified. Works as a stand alone electronic mouse trap but requires a Z-Wave Certified Hub for notification functionality +• Tested to work with SmartThings, Vera, Staples Connect, HomeSeer, Nexia, Piper, URC, Harmony. Not supported by Wink, DSC, ADT Pulse, 2Gig, Napco, Interlogix, Honeywell (Dome is not associated with listed brands) + + Follow the instructions for your Z-Wave Certified controller to enter inclusion mode. When prompted by the controller: +1. Bring the Mouser to within 10’ of your Z-Wave controller for the inclusion process. After successful pairing, the device can be brought to the desired location. +2. Remove top cover by sliding it back and lifting up. +3. Insert batteries. +4. Press the CONNECT BUTTON quickly 3 times in a row. +5. The LED INDICATOR will flash five times indicating inclusion + + If needed, the Mouser can be reset locally by following these steps. Only do this when your Z-Wave controller is disconnected or otherwise unreachable. Beware that resetting your device will disconnect it from the system: +1. Remove the TOP COVER and confirm that your Mouser is powered up. +2. Press and hold the CONNECT BUTTON for at least 10 seconds then release. A flashing LED INDICATOR indicates a successful factory reset. +3. The Mouser’s memory will be erased to factory settings. + + DMMZ1 + If needed, the Mouser can be reset locally by following these steps. Only do this when your Z-Wave controller is disconnected or otherwise unreachable. Beware that resetting your device will disconnect it from the system: +1. Remove the TOP COVER and confirm that your Mouser is powered up. +2. Press and hold the CONNECT BUTTON for at least 10 seconds then release. A flashing LED INDICATOR indicates a successful factory reset. +3. The Mouser’s memory will be erased to factory settings. + U.S. / Canada / Mexico + Follow the instructions for your Z-Wave Certified controller to enter exclusion mode. +When prompted by the controller: +1. Remove top cover by sliding it back and lifting up. +2. Press the CONNECT BUTTON quickly 3 times in a row. +The LED INDICATOR will flash five times indicating exclusion/disconnection. + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/1847/Mouser API Manual.pdf + Dome Mouser + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1847/xml + + + + + + + + This parameter defines the value sent by the BASIC_SET command to Association Group 2. + 0 Turn Off Device. + 1 to 99 Set Device to Value. + 255 Turn On Device. + + + + + This parameter sets firing mode of the Mouser. + Two firing modes are available: in the first (Continuous Fire,) electricity is passed continuously for the entire duration, + and in the second (Burst Fire,) electricity is passed continuously only for the first minute and it is pulsed at approximately 400 beats per minute for the remainder of the time. + + + + + + + This parameter defines how long the Mouser will fire continuously before it starts to burst-fire + + + + + This parameter enables or disables the indicator LED alarm when the trap is tripped. + + + + + + + This parameter sets the amount of time the LED Indicator blinks after the trap is tripped. + 0 LED Blinks Until Trap is Reset. + 1 to 255 in Hours. + + + + + + + + + + + + + diff --git a/config/eurotronic/eur_spiritz.xml b/config/eurotronic/eur_spiritz.xml index 8c0d664015..aa7237be6a 100644 --- a/config/eurotronic/eur_spiritz.xml +++ b/config/eurotronic/eur_spiritz.xml @@ -2,7 +2,7 @@ Eurotronic Spirit Z-Wave Plus Thermostat Product website: https://www.eurotronic.org/produkte/spirit-z-wave-plus.html Tech manual: https://www.eurotronic.org/fileadmin/user_upload/eurotronic.org/Produktbilder/spirit_z_wave_plus/Spirit_Z-Wave_BAL_web_EN_view_04.pdf ---> +--> http://www.openzwave.com/device-database/0148:0001:0003 images/eurotronic/eur_spiritz.png @@ -39,6 +39,7 @@ To perform the factory reset press boost button. Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2543/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2650/xml + Updated changed default behavior backlight https://products.z-wavealliance.org/products/2650/ 4250848804063 @@ -101,9 +102,9 @@ To perform the factory reset press boost button. Default: 0 (LCD always on) - + - Default: Backlight enabled + Default: Backlight disabled diff --git a/config/fibaro/fgt001.xml b/config/fibaro/fgt001.xml index 63f901016b..aa2904885c 100644 --- a/config/fibaro/fgt001.xml +++ b/config/fibaro/fgt001.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/010F:1000:1301 images/fibaro/fgt001.png @@ -51,6 +51,7 @@ Main features: Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2586/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2971/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3194/xml + Add new configuration settings for firmware 4.7 + + FGWCEU-201 Walli Controller + FIBARO Walli Controller is a smart wall, battery powered, switch. + http://www.openzwave.com/device-database/010f:1000:2301 + https://manuals.fibaro.com/document-category/fgwceu-201/ + https://manuals.fibaro.com/document-category/fgwceu-201/ + images/fibaro/fgwceu201.png + https://manuals.fibaro.com/content/manuals/en/FGWCEU-201/FGWCEU-201-T-EN-1.1.pdf + When on battery power, the device needs to be woken up to receive + information about the new configuration from the Z-Wave controller, like parameters and associations. + By default the device is woken up automatically every 6 hours. + You can wake up the device manually using first menu position (white). + To add the device to the Z-Wave network manually: + 1. Set the main controller in (Security/non-Security Mode) add mode (see the controller's manual). + 2. Quickly, three times click one of the buttons. + 3. If you are adding in Security S2 Authenticated, input the underlined part of the DSK (label on the box). + 4. LED will start blinking yellow, wait for the adding process to end. + 5. Adding result will be confirmed by the Z-Wave controller's message and the LED frame: + - Green: successful (non-secure, S0, S2 non-authenticated), + - Magenta: successful (Security S2 Authenticated), + - Red: not successful. + + https://products.z-wavealliance.org/products/3883 + FGWCEU-201 + CEPT (Europe) + + Initial Creation of config file + fix numgroups + + + + + + + + This parameter determines how the device will react in the event of power supply failure (e.g. power outage). The parameter is not relevant for outputs set to pulse mode (parameter 150/151 set to 2). + 0 - remains switched off after restoring power + 1 - restores remembered state after restoring power + + + + + This function allows to turn off the controlled device in case of exceeding the defined power. Controlled device can be turned back on via the button or sending a control frame. + 0 - function disabled + 10-5000 - (1.0-500.0W, step 0.1W) – power threshold + + + + + This parameter determines maximum active power. Exceeding it results in the LED frame flashing violet. Function is active only when parameter 11 is set to 8 or 9. + 100-5000 - (10.0-500.0W, step 0.1W) – power threshold + + + + + This parameter defines the LED colour when thedevice is ON. When set to 8 or 9, LED frame colour will change depending on he measured power and parameter 10. Other colours are set permanently and do not depend on power consumption. + + + + + + + + + + + + + + + This parameter defines the LED colour when the device is OFF. + + + + + + + + + + + + + This parameter allows to adjust the LED frame brightness. + 0 - LED disabled + 1-100 - (1-100% brightness) + + + + + This parameter defines operation of the device. + + + + + + + + + + + This parameter defines the colour of first button indicator (upper part of the LED ring) for indications using Indicator CC. + + + + + + + + + + + + + This parameter defines the colour of second button indicator (lower part of the LED ring) for indications using Indicator CC. + + + + + + + + + + + + + This parameter defines value of Basic Set or Multilevel Set frame + (depending on selected mode) sent to associated devices after double click. + This parameter is not relevant for Scene Controller Mode. + 0-99 or 255 + + + + + This parameter defines value of Basic Set or Multilevel Set frame + (depending on selected mode) sent to associated devices after double click. + This parameter is used only in Double Button Mode. + 0-99 or 255 + + + + + + + + + + + + + + + + + diff --git a/config/fibaro/fgwds221.xml b/config/fibaro/fgwds221.xml index b72f9d6429..6bfecfd876 100644 --- a/config/fibaro/fgwds221.xml +++ b/config/fibaro/fgwds221.xml @@ -1,4 +1,4 @@ - + FGWDSEU-221 Walli Double Switch @@ -36,9 +36,10 @@ Initial Creation of config file - https://products.z-wavealliance.org/Products/3395/XML Change definition of params 30-34 to fix https://github.com/domoticz/domoticz/issues/3557 Add Product Picture + Typo corrections / default value for LED frame – colour when OFF - + @@ -48,27 +49,27 @@ 1 - restores remembered state after restoring power - + This function allows to turn off the controlled device in case of exceeding the defined power. Controlled device can be turned back on via button or sending a control frame. 0 - Function disabled 10-36200 - (1.0-3620.0W, step 0.1W) – Power threshold - + This function allows to turn off the controlled device in case of exceeding the defined power. Controlled device can be turned back on via button or sending a control frame. 0 - Function disabled 10-36200 - (1.0-3620.0W, step 0.1W) – Power threshold - + This parameter determines maximum active power. Exceeding it results in the LED frame flashing violet. Function is active only when parameter 11 is set to 8 or 9. (50.0-3000.0W, step 0.1W) – power threshold - + This parameter defines the LED colour when thedevice is ON. When set to 8 or 9, LED frame colour will change depending on he measured power and parameter 10. Other colours are set permanently and do not depend on power consumption. @@ -83,8 +84,8 @@ - - + + This parameter defines the LED colour when thedevice is ON. When set to 8 or 9, LED frame colour will change depending on he measured power and parameter 10. Other colours are set permanently and do not depend on power consumption. @@ -96,16 +97,16 @@ - + This parameter allows to adjust the LED frame brightness. 0 - LED disabled 1-100 - (1-100% brightness) 101 - brightness directly proportional to measured power - 102 - brightness inversely proportional asured powerto me + 102 - brightness inversely proportional to measured power - + This parameter defines how device buttons should control the channels. @@ -113,19 +114,19 @@ - + This parameter allows reversing the operation of the buttons. - + This parameter allows reversing the operation of Q1 and Q2 without changing the wiring (e.g. in case of invalid connection). Changing orientation turns both outputs off. - + This parameter determines to which alarm frames and how the device should react. The parameters consist of 4 bytes, three most significant bytes are set according to the official Z-Wave protocol specification. 1B: [MSB] Notification Type, 2B: Notification Status, 3B: Event/State Parameters, 4B: [LSB] action @@ -163,7 +164,7 @@ 1-32400 - (1s-9h, 1s step) – Duration - + This parameter determines which actions result in sending scene IDs assigned to them. Values can be combined (e.g. 1+2=3 means that scenes for single and double click are sent). Enabling scenes for triple click disables entering the device in learn mode by triple clicking. 1 - Key pressed 1 time @@ -172,7 +173,7 @@ 8 - Key hold down and key released - + This parameter determines which actions result in sending scene IDs assigned to them. Values can be combined (e.g. 1+2=3 means that scenes for single and double click are sent). Enabling scenes for triple click disables entering the device in learn mode by triple clicking. 1 - Key pressed 1 time @@ -181,70 +182,70 @@ 8 - Key hold down and key released - + This parameter determines whether the power measurements should include power consumed by the device itself. - + This parameter defines minimal change (from the last reported) in measured power that results in sending new report. For loads under 50W the parameter is irrelevant, report are sent every 5W change. 0 - Reporting on change disabled 1-500 - (1-500%, 1% step) – Minimal change - + This parameter defines reporting interval for measured power. Periodic reports are independent from changes in value (parameter 61). 0 - periodic reports disabled 30-32400 - (30s-9h, 1s step) – time interval - + This parameter defines minimal change (from the last reported) in measured power that results in sending new report. For loads under 50W the parameter is irrelevant, report are sent every 5W change. 0 - Reporting on change disabled 1-500 - (1-500%, 1% step) – Minimal change - + This parameter defines reporting interval for measured power. Periodic reports are independent from changes in value (parameter 63). 0 - periodic reports disabled 30-32400 - (30s-9h, 1s step) – time interval - + This parameter defines minimal change (from the last reported) in measured energy that results in sending new report. 0 - reporting on change disabled 1-500 - (0.01-5kWh, 0.01kWh step) – minimal change - + This parameter defines reporting interval for measured energy. Periodic reports are independent from changes in value (parameter 66). 0 - periodic reports disabled 30-32400 - (30s-9h, 1s step) – time interval - + This parameter defines minimal change (from the last reported) in measured energy that results in sending new report. 0 - reporting on change disabled 1-500 - (0.01-5kWh, 0.01kWh step) – minimal change - + This parameter defines reporting interval for measured energy. Periodic reports are independent from changes in value (parameter 67). 0 - periodic reports disabled 30-32400 - (30s-9h, 1s step) – time interval - + This parameter allows to choose operating for the 1st channel. @@ -252,7 +253,7 @@ - + This parameter allows to choose operating for the 2nd channel. @@ -260,15 +261,15 @@ - + This parameter determines how the device in timed mode reacts to pushing the button for 1st channel. The parameter is relevant only for button toggles modes (parameter 20 set to 1 or 3). - - + + This parameter determines how the device in timed mode reacts to pushing the button for 2nd channel. The parameter is relevant only for button toggles modes (parameter 20 set to 1 or 3). @@ -276,21 +277,21 @@ - + This parameter allows to set time parameter used in timed modes for 1st channel (parameter 150). Delay time for switching off or duration of the pulse. 0 - 0.1 second 1-32000 - 1-32000s, 1s step – time parameter - + This parameter allows to set time parameter used in timed modes for 2nd channel (parameter 151). Delay time for switching off or duration of the pulse. 0 - 0.1 second 1-32000 - 1-32000s, 1s step – time parameter - + This parameter defines value sent with Switch ON command to devices associated in 2nd and 3rd association group for manual changes of Endpoint 1 state. 0-99 - 2nd association group @@ -318,14 +319,14 @@ 255 - 5th association group - + This parameter defines value sent with Switch OFF command to devices associated in 4th and 5th association group for manual changes of Endpoint 2 state. 0-99 - 4th association group 255 - 5th association group - + This parameter defines value sent with Double Click command to devices associated in 4th and 5th association group for manual changes of Endpoint 2 state. 0-99 - 4th association group @@ -340,8 +341,8 @@ - - + + diff --git a/config/fibaro/fgwds221ss.xml b/config/fibaro/fgwds221ss.xml new file mode 100755 index 0000000000..2264983abe --- /dev/null +++ b/config/fibaro/fgwds221ss.xml @@ -0,0 +1,262 @@ + + + + FGWDSEU-221 Walli Double Switch + FIBARO Walli Double Switch is a smart wall switch designed to control one or two light sources via Z-Wave network. It measures active power and energy consumed by the controlled load. + http://www.openzwave.com/device-database/010f:1000:1A01 + https://www.fibaro.com/en/products/smart-switches-and-outlets-walli-switch/ + https://manuals.fibaro.com/walli-switch/ + images/fibaro/fgwds221.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=Manuals/3395/FGWDSEU-221-T-EN-0.19.pdf + FIBARO Walli Double Switch is powered using DC power supply unit so it is always awake. + To add the device to the Z-Wave network manually: +1. Power the device. +2. Set the main controller in add mode(see the controller’s manual). +3. Quickly, three times click one of the buttons. +4. LED will start blinking yellow, wait for the adding process to end. +5. Adding result will be confirmed by the Z-Wave controller’s message and the LED frame: +• Green – successful (non-secure, S0, S2 non-authenticated), +• Magenta – successful (Security S2 Authenticated), +• Red – not successful. + To remove the device from the Z-Wave network: +1. Power the device. +2. Set the main controller into remove mode (see the controller’s manual). +3. Quickly, three times click one of the buttons. +4. LED will start blinking yellow, wait for the removing process to end. +5. Successful removing will be confirmed by the Z-Wave controller’s message and red LED colour. + Reset procedure allows to restore the device back to its factory settings, which means all information about the Z-Wave controller and user configuration will be deleted. Resetting to factory defaults does not reset energy consumption memory. +1. Quickly, three times click, then press and hold one of the buttons to enter the menu. +2. Release button when the device glows yellow. +3. Quickly click the button to confirm. +4. After few seconds the device will be restarted, which is signalled with red LED colour. + https://products.z-wavealliance.org/products/3395 + FGWDSEU-221 + CEPT (Europe) + + Initial Creation of config file - Copied over from Double switch mode (fgwds221) + + + + + + + + This parameter determines how the device will react in the event of power supply failure (e.g. power outage). The parameter is not relevant for outputs set to pulse mode (parameter 150/151 set to 2). + 0 - remains switched off after restoring power + 1 - restores remembered state after restoring power + For parameter "Buttons operation" (20) set to 2-way/3-way switch configuration (3), value 0 is not supported. + + + + + This function allows to turn off the controlled device in case of exceeding the defined power. Controlled device can be turned back on via button or sending a control frame. + 0 - Function disabled + 10-45000 (1.0-4500.0W, step 0.1W) – power threshold + + + + + This parameter determines maximum active power. Exceeding it results in the LED frame flashing violet. Function is active only when parameter 11 is set to 8 or 9. + 500-36800 (50.0-3680.0W, step 0.1W) – power threshold + + + + + This parameter defines the LED colour when thedevice is ON. When set to 8 or 9, LED frame colour will change depending on he measured power and parameter 10. Other colours are set permanently and do not depend on power consumption. + + + + + + + + + + + + + + + This parameter defines the LED colour when thedevice is ON. When set to 8 or 9, LED frame colour will change depending on he measured power and parameter 10. Other colours are set permanently and do not depend on power consumption. + + + + + + + + + + + + + This parameter allows to adjust the LED frame brightness. + 0 - LED disabled + 1-100 - (1-100% brightness) + 101 - brightness directly proportional to measured power + 102 - brightness inversely proportional to measured power + + + + + This parameter defines how device buttons should control the channels. + + + + + + + This parameter allows reversing the operation of the buttons. + For parameter "Buttons operation" (20) set to 2-way/3-way switch configuration (3), value 1 is not supported. + + + + + + This parameter determines to which alarm frames and how the device should react. The parameters consist of 4 bytes, three most significant bytes are set according to the official Z-Wave protocol specification. +1B: [MSB] Notification Type, 2B: Notification Status, 3B: Event/State Parameters, 4B: [LSB] action +0xX0: no action on output, 0xX1: turn ON, 0xX2: turn OFF, 0xX3: turn ON/OFF continuously, 0x0X: no action on LED frame, 0x1X: LED frame blinks red, 0x2X: LED frame blinks green, 0x4X: LED frame blinks blue, 0x8X: disable LED frame, 0xFX: LED frame LAPD signal (red-white-blue) + + + + This parameter determines to which alarm frames and how the device should react. The parameters consist of 4 bytes, three most significant bytes are set according to the official Z-Wave protocol specification. +1B: [MSB] Notification Type, 2B: Notification Status, 3B: Event/State Parameters, 4B: [LSB] action +0xX0: no action on output, 0xX1: turn ON, 0xX2: turn OFF, 0xX3: turn ON/OFF continuously, 0x0X: no action on LED frame, 0x1X: LED frame blinks red, 0x2X: LED frame blinks green, 0x4X: LED frame blinks blue, 0x8X: disable LED frame, 0xFX: LED frame LAPD signal (red-white-blue) + + + + This parameter determines to which alarm frames and how the device should react. The parameters consist of 4 bytes, three most significant bytes are set according to the official Z-Wave protocol specification. +1B: [MSB] Notification Type, 2B: Notification Status, 3B: Event/State Parameters, 4B: [LSB] action +0xX0: no action on output, 0xX1: turn ON, 0xX2: turn OFF, 0xX3: turn ON/OFF continuously, 0x0X: no action on LED frame, 0x1X: LED frame blinks red, 0x2X: LED frame blinks green, 0x4X: LED frame blinks blue, 0x8X: disable LED frame, 0xFX: LED frame LAPD signal (red-white-blue) + + + + This parameter determines to which alarm frames and how the device should react. The parameters consist of 4 bytes, three most significant bytes are set according to the official Z-Wave protocol specification. +1B: [MSB] Notification Type, 2B: Notification Status, 3B: Event/State Parameters, 4B: [LSB] action +0xX0: no action on output, 0xX1: turn ON, 0xX2: turn OFF, 0xX3: turn ON/OFF continuously, 0x0X: no action on LED frame, 0x1X: LED frame blinks red, 0x2X: LED frame blinks green, 0x4X: LED frame blinks blue, 0x8X: disable LED frame, 0xFX: LED frame LAPD signal (red-white-blue) + + + + This parameter determines to which alarm frames and how the device should react. The parameters consist of 4 bytes, three most significant bytes are set according to the official Z-Wave protocol specification. +1B: [MSB] Notification Type, 2B: Notification Status, 3B: Event/State Parameters, 4B: [LSB] action +0xX0: no action on output, 0xX1: turn ON, 0xX2: turn OFF, 0xX3: turn ON/OFF continuously, 0x0X: no action on LED frame, 0x1X: LED frame blinks red, 0x2X: LED frame blinks green, 0x4X: LED frame blinks blue, 0x8X: disable LED frame, 0xFX: LED frame LAPD signal (red-white-blue) + + + + + This parameter defines duration of alarm sequence. When time set in this parameter elapses, alarm is cancelled, LED frame and relay restore normal operation, but do not recover state from before the alarm. + 0 - Infinite + 1-32400 - (1s-9h, 1s step) – Duration + + + + + This parameter determines which actions result in sending scene IDs assigned to them. Values can be combined (e.g. 1+2=3 means that scenes for single and double click are sent). Enabling scenes for triple click disables entering the device in learn mode by triple clicking. + 1 - Key pressed 1 time + 2 - Key pressed 2 time + 4 - Key pressed 3 time + 8 - Key hold down and key released + + + + + This parameter determines which actions result in sending scene IDs assigned to them. Values can be combined (e.g. 1+2=3 means that scenes for single and double click are sent). Enabling scenes for triple click disables entering the device in learn mode by triple clicking. + 1 - Key pressed 1 time + 2 - Key pressed 2 time + 4 - Key pressed 3 time + 8 - Key hold down and key released + + + + + This parameter determines whether the power measurements should include power consumed by the device itself. + + + + + + + This parameter defines minimal change (from the last reported) in measured power that results in sending new report. For loads under 50W the parameter is irrelevant, report are sent every 5W change. + 0 - Reporting on change disabled + 1-500 - (1-500%, 1% step) – Minimal change + + + + + This parameter defines reporting interval for measured power. Periodic reports are independent from changes in value (parameter 61). + 0 - periodic reports disabled + 30-32400 - (30s-9h, 1s step) – time interval + + + + + This parameter defines minimal change (from the last reported) in measured energy that results in sending new report. + 0 - reporting on change disabled + 1-500 - (0.01-5kWh, 0.01kWh step) – minimal change + + + + + This parameter defines reporting interval for measured energy. Periodic reports are independent from changes in value (parameter 66). + 0 - periodic reports disabled + 30-32400 - (30s-9h, 1s step) – time interval + + + + + This parameter allows to choose operating for the 1st channel. + For parameter "Buttons operation" (20) set to 2-way/3-way switch configuration (3), delayed OFF (value 1) is not supported. + + + + + + + + This parameter determines how the device in timed mode reacts to pushing the button for 1st channel. The parameter is relevant only for button toggles modes (parameter 20 set to 1 or 3). + For parameter "Buttons operation" (20) set to 2-way/3-way switch configuration (3), only value 0 (set default state) is supported. + + + + + + + + This parameter allows to set time parameter used in timed modes for 1st channel (parameter 150). Delay time for switching off or duration of the pulse. + 0 - 0.1 second + 1-32000 - 1-32000s, 1s step – time parameter + For parameter "Buttons operation" (20) set to 2-way/3-way switch configuration (3) and parameter "First channel – operating mode" (150) set to single pulse (2), this parameter should not be lower than 5 (5s). + + + + + This parameter defines value sent with Switch ON command to devices associated in 2nd and 3rd association group for manual changes of Endpoint 1 state. + 0-99 - 2nd association group + 255 - 3rd association group + + + + + This parameter defines value sent with Switch OFF command to devices associated in 2nd and 3rd association group for manual changes of Endpoint 1 state. + 0-99 - 2nd association group + 255 - 3rd association group + + + + + This parameter defines value sent with Double Click command to devices associated in 2nd and 3rd association group for manual changes of Endpoint 1 state. + 0-99 - 2nd association group + 255 - 3rd association group + + + + + + + + + + + + + diff --git a/config/hank/hkzw-so08-smartplug.xml b/config/hank/hkzw-so08-smartplug.xml new file mode 100644 index 0000000000..d6978cc5a5 --- /dev/null +++ b/config/hank/hkzw-so08-smartplug.xml @@ -0,0 +1,120 @@ + + + http://www.openzwave.com/device-database/0208:0019:0100 + images/hank/hkzw-so05-smartplug.png + https://products.z-wavealliance.org/products/3202/ + Smart Plug + https://products.z-wavealliance.org/ProductManual/File?filename=MarketCertificationFiles/3202/SmartPlug%20SO08P%20SpecificationEngineering.pdf + CEPT (Europe) + 1) Insert the Plug into a socket, +2) Press and hold the Z button for more than 20 seconds, +3) If holding time more than 20seconds, the RGB LED indicator will keep yellow for 2 seconds, which means resetting is completed. +Use this procedure only in the event that the network primary controller is missing or otherwise inoperable. + + 1) Connect the power supply. +2) Set the Z-Wave network main controller into inclusion mode (see Z-Wave network controller operating manual). +3) Triple click the Z-button or power up the device , RGB LED indicator should blink fast in blue. +4) Smart Plug should be recognized and included into the Z-Wave network. + + HKZW-SO08 + Smart plug is a Z-Wave Switch plugin module specifically used to enable Z-Wave command and control (on/off) of any plug-in tool. It can report wattage consumption or kWh energy usage, and can indicate the power level with a RGB LED. +Smart Plug is also a security Z-Wave device and supports the Over The Air (OTA) feature for the product’s firmware upgrade . + + 1) Insert the Plug into a socket. +2) Set the Z-Wave network controller into the exclusion mode (see Z-Wave controller operating manual). +3) Triple click the Z button. +4) RGB LED indicator will blink orange till the removing process is completed, than the indicator will keep orange for 3 seconds. + + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3202/xml + + + + + + + Smart Plug keep detecting the load power, once the current exceeds 11.5A for more than 5s, smart plug's relay will turn off + + + + + Define how the plug reacts after the power supply is back on. + 0 - Smart Plug memorizes its state after a power failure. + 1 - Smart Plug does not memorize its state after a power failure. Connected device will be on after the power supply is reconnected. + 2 - Smart Plug does not memorize its state after a power failure. Connected device will be off after the power supply is reconnected. + + + + + + + + Smart Plug can send notifications to association device(Group Lifeline) when state of smart plug's load change + 0 - The function is disabled + 1 - Send Basic report. + 2 - Send Basic report only when Load condition is not changed by Z-WAVE Command + + + + + + + After smart plug being included into a Z-Wave network, the LED in the device will indicator the state of load. + 0 - The LED will follow the status(on/off) of its load + 1 - When the state of Switch's load changed, The LED will follow the status(on/off) of its load, but the red LED will turn off after 5 seconds if there is no any switch action. + + + + + + + Power threshold to be interpereted, when the change value of load power exceeds the setting threshold, the smart plug will send meter report to association device(Group Lifeline) + + + + + Power percentage threshold to be interpreted, when change value of the load power exceeds the setting threshold, the smart plug will send meter report to association device(Group Lifeline). + + + + + The interval of sending power report to association device(Group Lifeline). + 0 - The function is disabled. + + + + + The interval of sending power report to association device(Group Lifeline). + 0 - The function is disabled. + + + + + The interval of sending voltage report to association device(Group Lifeline). + 0 - The function is disabled. + + + + + The interval of sending electricity report to association device(Group Lifeline). + 0 - The function is disabled. + + + + + Lock/unlock all configuration parameters. + + + + + + + + + + + + diff --git a/config/images/aeotec/zwa011.png b/config/images/aeotec/zwa011.png new file mode 100644 index 0000000000..1ebf0c0241 Binary files /dev/null and b/config/images/aeotec/zwa011.png differ diff --git a/config/images/aeotec/zwa023.png b/config/images/aeotec/zwa023.png new file mode 100644 index 0000000000..4286c453ab Binary files /dev/null and b/config/images/aeotec/zwa023.png differ diff --git a/config/images/assa_abloy/ProSLKey-FreeDeadbolt.png b/config/images/assa_abloy/ProSLKey-FreeDeadbolt.png new file mode 100644 index 0000000000..c674c1868c Binary files /dev/null and b/config/images/assa_abloy/ProSLKey-FreeDeadbolt.png differ diff --git a/config/images/assa_abloy/yrm276.png b/config/images/assa_abloy/yrm276.png new file mode 100644 index 0000000000..0ea79eebb7 Binary files /dev/null and b/config/images/assa_abloy/yrm276.png differ diff --git a/config/images/cooper/RF9601.png b/config/images/cooper/RF9601.png new file mode 100644 index 0000000000..c178ea9ba4 Binary files /dev/null and b/config/images/cooper/RF9601.png differ diff --git a/config/images/fibaro/fgwceu201.png b/config/images/fibaro/fgwceu201.png new file mode 100644 index 0000000000..4efb5e1b1e Binary files /dev/null and b/config/images/fibaro/fgwceu201.png differ diff --git a/config/images/mcohome/015f_5102_d411.png b/config/images/mcohome/015f_5102_d411.png new file mode 100644 index 0000000000..652e3a2919 Binary files /dev/null and b/config/images/mcohome/015f_5102_d411.png differ diff --git a/config/images/namron/4512712.jpg b/config/images/namron/4512712.jpg new file mode 100644 index 0000000000..35389776ca Binary files /dev/null and b/config/images/namron/4512712.jpg differ diff --git a/config/images/namron/4512720.jpg b/config/images/namron/4512720.jpg new file mode 100644 index 0000000000..3722c004cb Binary files /dev/null and b/config/images/namron/4512720.jpg differ diff --git a/config/images/qubino/ZMNHHDx.png b/config/images/qubino/ZMNHHDx.png new file mode 100644 index 0000000000..1998a3039d Binary files /dev/null and b/config/images/qubino/ZMNHHDx.png differ diff --git a/config/images/ring/contact-sensor-v2.png b/config/images/ring/contact-sensor-v2.png new file mode 100644 index 0000000000..249c88dc62 Binary files /dev/null and b/config/images/ring/contact-sensor-v2.png differ diff --git a/config/images/ring/motion-detector-v2.png b/config/images/ring/motion-detector-v2.png new file mode 100644 index 0000000000..2af9fc9300 Binary files /dev/null and b/config/images/ring/motion-detector-v2.png differ diff --git a/config/images/shenzhen-neo/eu-1.png b/config/images/shenzhen-neo/eu-1.png new file mode 100644 index 0000000000..0c68174cd2 Binary files /dev/null and b/config/images/shenzhen-neo/eu-1.png differ diff --git a/config/images/shenzhen-neo/eu-2.png b/config/images/shenzhen-neo/eu-2.png new file mode 100644 index 0000000000..d7db1c2df5 Binary files /dev/null and b/config/images/shenzhen-neo/eu-2.png differ diff --git a/config/images/shenzhen-neo/eu-3.png b/config/images/shenzhen-neo/eu-3.png new file mode 100644 index 0000000000..162883c450 Binary files /dev/null and b/config/images/shenzhen-neo/eu-3.png differ diff --git a/config/images/simon/10002020-13X.png b/config/images/simon/10002020-13X.png new file mode 100755 index 0000000000..390505dbf1 Binary files /dev/null and b/config/images/simon/10002020-13X.png differ diff --git a/config/images/sunricher/ZW-3004-RGBW-wall-controller-3-zone-white.png b/config/images/sunricher/ZW-3004-RGBW-wall-controller-3-zone-white.png new file mode 100755 index 0000000000..41fec856f8 Binary files /dev/null and b/config/images/sunricher/ZW-3004-RGBW-wall-controller-3-zone-white.png differ diff --git a/config/images/thermofloor/heatitzm.png b/config/images/thermofloor/heatitzm.png new file mode 100755 index 0000000000..40efc5da7d Binary files /dev/null and b/config/images/thermofloor/heatitzm.png differ diff --git a/config/images/wenzhou/tz77.png b/config/images/wenzhou/tz77.png new file mode 100755 index 0000000000..146a236191 Binary files /dev/null and b/config/images/wenzhou/tz77.png differ diff --git a/config/images/zen17.png b/config/images/zen17.png new file mode 100644 index 0000000000..fffe10b5d8 Binary files /dev/null and b/config/images/zen17.png differ diff --git a/config/images/zooz/zen17.png b/config/images/zooz/zen17.png new file mode 100644 index 0000000000..90dded3336 Binary files /dev/null and b/config/images/zooz/zen17.png differ diff --git a/config/images/zooz/zen32.png b/config/images/zooz/zen32.png new file mode 100644 index 0000000000..729b88f59c Binary files /dev/null and b/config/images/zooz/zen32.png differ diff --git a/config/images/zooz/zen71.png b/config/images/zooz/zen71.png new file mode 100644 index 0000000000..2d2ff408ae Binary files /dev/null and b/config/images/zooz/zen71.png differ diff --git a/config/images/zooz/zen72.png b/config/images/zooz/zen72.png new file mode 100755 index 0000000000..f04aa6051c Binary files /dev/null and b/config/images/zooz/zen72.png differ diff --git a/config/images/zooz/zen76.png b/config/images/zooz/zen76.png new file mode 100644 index 0000000000..2d2ff408ae Binary files /dev/null and b/config/images/zooz/zen76.png differ diff --git a/config/images/zooz/zen77.png b/config/images/zooz/zen77.png new file mode 100644 index 0000000000..8fa3ec51cf Binary files /dev/null and b/config/images/zooz/zen77.png differ diff --git a/config/inovelli/lzw45.xml b/config/inovelli/lzw45.xml new file mode 100644 index 0000000000..b49d7beeb2 --- /dev/null +++ b/config/inovelli/lzw45.xml @@ -0,0 +1,194 @@ + + + http://www.openzwave.com/device-database/031E:0001:000a + images/inovelli/lzw31-sn.png + https://products.z-wavealliance.org/products/3438 + TBD + TBD + TBD + U.S. / Canada / Mexico + TBD + TBD + TBD + LZW45 LED Light Strip + LZW45 + TBD + + Initial Release + Fix device type, fix some issues with parameter sizes + Updates to work with firmware 1.16 + Updates to work with firmware 1.17 + Updates to work with firmware 1.18 + Updates parameter 30 to 4 bytes + Updates parameter 30 value max + + + + + + + When individually addressable LEDs are used, this parameter tells the controller the number of pixels that are attached. + 0: Automatic recognition of pixels + Range 1 - 130: Set the fixed value of the pixel bit + Default: 0 + + + + + This changes the speed in which the light strip dims up or down. A setting of 0 should turn the light immediately on or off (almost like an on/off switch). Increasing the value should slow down the transition speed. + Range 0 - 98: Set the dimming speed + Default: 4 + + + + + This changes the speed in which the light strip turns on or off. For example, when a user sends the switch a basicSet(value: 0xFF) or basicSet(value: 0x00), this is the speed in which those actions take place. A setting of 0 should turn the light immediately on or off (almost like an on/off switch). Increasing the value should slow down the transition speed. A setting of 99 should keep this in sync with parameter 2. + Range 0 - 98: Set the Ramp Rate + 99: Keep in sync with parameter 2 + Default: 99 + + + + + The minimum level that the strip can be dimmed to. Useful when the user has an LED strip that does not turn on or flickers at a lower level. + Range: 1 - 45 + Default: 1 + + + + + The maximum level that the strip can be dimmed to. Useful when the user has an LED strip that reaches its maximum level before the dimmer value of 99. + Range: 55 - 99 + Default: 99 + + + + + Automatically turns the strip off after this many seconds. When the strip is turned on a timer is started that is the duration of this setting. When the timer expires, the strip is turned off. + 0 - Auto off is disabled + Range: 0 - 32767 + + + + + Default level for the strip when it is powered on from the local switch. A setting of 0 means that the switch will return to the level that it was on before it was turned off. + Range 0 - 99 + Default: 0 + + + + + Default level for the dimmer when it is powered on from a Z-Wave command (i.e. BasicSet(0xFF)). A setting of 0 means that the switch will return to the level that it was on before it was turned off. + Range: 0-99 + Default: 0 + + + + + Byte(3-2): Values between 2700-6500 represent a color temperature. + Byte(1-0): Values between 0-361, represent the color on the Hue color wheel. The value of 361 represents a random color. + Range: 0 - 425984362 + Default: 262144000 + + + + + The state the switch should return to once power is restored after power failure. + 0 - Off + 1 - Default Color / Level (Parameter 9) + 2 - Previous + Default: Previous + + + + + + + + The power level change that will result in a new power report being sent. The value is a percentage of the previous report. 0 = disabled. + Range: 0 - 100 + Default: 10 + + + + + Time period between consecutive power & energy reports being sent (in seconds). The timer is reset after each report is sent. + Range: 0, 30 - 32767 + Default: 3600 + + + + + The energy level change that will result in a new energy report being sent (in kWh) + 0 = 0.01kWh, 10=0.1kWh, 100=1kWh + Range:0-127 + Default: 10 + + + + + See website for details + * Sending Basic, Binary Switch, Multilevel, and Color SET will automatically disable the strip effect. + * Toggling OFF -> ON will cancel effect mode set on LED Strip and change the LED Strip back to the Previous color. + Range: 0 - 2147483647 + Default: 0 + + + + + See website for details. + Range: 0 - 2147483647 + Default: 0 + + + + + See website for details. + Range: 0 - 2147483647 + Default: 0 + + + + + See website for details. + Range: 0 - 2147483647 + Default: 0 + + + + + See website for details. + Range: 0 - 197375 + Default: 0 + + + + + Byte 1 - Level + Byte 0 - Effect + See website for details. + Default: 0 + + + + + The 700ms delay that occurs after pressing the physical button to turn the switch on/off is removed. Consequently this also removes the following scenes: 2x, 3x, 4x, 5x tap. Still working are the 1x tap, held, released, and the level up/down scenes. (firmware 1.36+) + 0 - 700ms delay disabled (some scenes will not work) + 1 - 700ms delay enabled (All scenes work) + Default: 700ms delay enabled + + + + + + + + + + + + + + + + diff --git a/config/logicsoft/ZDB5100.xml b/config/logicsoft/ZDB5100.xml index 1bd2391697..53276735d1 100644 --- a/config/logicsoft/ZDB5100.xml +++ b/config/logicsoft/ZDB5100.xml @@ -1,5 +1,6 @@ - + Matrix MATRIX ZDB5100 is a dimmer wall switch module with four backlit pushbuttons. MATRIX is designed to fit into 1-module FUGA® wall boxes (Danish standard). @@ -16,17 +17,35 @@ ZDB5100 Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3399/xml + Convert param 1 to a bitset + Remove duplicate entry + Add bitmask on param 1 - + This parameter specifies which pushbutton(s) that shall be used to control the built-in dimmer. - - - - - + + + No local operation of the dimmer + + + + Pushbutton 1 controls the dimmer + + + + Pushbutton 2 controls the dimmer + + + + Pushbutton 3 controls the dimmer + + + + Pushbutton 4 controls the dimmer + diff --git a/config/manufacturer_specific.xml b/config/manufacturer_specific.xml index 42430b603f..fa09d58ecc 100644 --- a/config/manufacturer_specific.xml +++ b/config/manufacturer_specific.xml @@ -1,5 +1,5 @@ - + @@ -223,12 +223,14 @@ + + @@ -280,6 +282,7 @@ + @@ -291,6 +294,7 @@ + @@ -401,6 +405,7 @@ + @@ -529,6 +534,7 @@ + @@ -687,6 +693,7 @@ + @@ -755,9 +762,11 @@ + + @@ -810,7 +819,9 @@ - + + + @@ -905,6 +916,7 @@ + @@ -1062,6 +1074,7 @@ + @@ -1232,7 +1245,7 @@ - + @@ -1248,13 +1261,16 @@ + + + @@ -1297,8 +1313,10 @@ + + @@ -1309,6 +1327,9 @@ + + + @@ -1486,6 +1507,7 @@ + @@ -1547,6 +1569,8 @@ + + @@ -1630,6 +1654,7 @@ + @@ -1638,6 +1663,7 @@ + @@ -1658,6 +1684,8 @@ + + @@ -1744,8 +1772,9 @@ + - + @@ -1772,12 +1801,14 @@ + + @@ -1818,8 +1849,10 @@ + + @@ -2025,6 +2058,7 @@ + @@ -2040,8 +2074,14 @@ + + + + + + diff --git a/config/mcohome/mh10pm25wd.xml b/config/mcohome/mh10pm25wd.xml new file mode 100644 index 0000000000..5774e4231e --- /dev/null +++ b/config/mcohome/mh10pm25wd.xml @@ -0,0 +1,26 @@ + + + + + + + 0 report disabled, base on 0.1ug/m3 unit, 10 by default, 10*0.1ug/m3=1ug/m3 + + + 0 report disabled, base on 0.5C unit, 1 by default, 1*0.5C=0.5C + + + 0 report disabled, base on 1% unit, 2 by default, 2*1C=2C + + + Restore the factory setting - write only, set to 85 to reset + + + + + + + + + + diff --git a/config/mcohome/mhdt411.xml b/config/mcohome/mhdt411.xml new file mode 100644 index 0000000000..9289165b86 --- /dev/null +++ b/config/mcohome/mhdt411.xml @@ -0,0 +1,131 @@ + + + + + Dimmer Switch MH-DT411 + Dimmer switch is a wall panel built-in with Z-Wave Plus module. With it's stylish design and stable performance, the panel can be used to control the light level. It supports basic command class, multi channel command class and multi channel association command class, also works as a repeater in a Z-Wave network. This product can be included and operated in any Z-Wave network with other Z-Wave certified devices from any other manufacturers. + http://www.openzwave.com/device-database/015f:5102:d411 + http://www.mcohome.com/ProductDetail/3894312.html + http://www.mcohome.com/ProductDetail/3894312.html + images/mcohome/015f_5102_d411.png + Set controller into inclusion mode and press 3 clicks on '+' button to include. If succeeded, green led flashes 4 times. + Set controller into exclusion mode and press 3 clicks on '-' button to exclude. If succeeded, green led flashes 4 times. + Press 10 times of any button or exclude the device from Z-Wave network, then cut off the main power. The factory setting will be restored. + CEPT (Europe) + + Information retrieved from manual pages delivered with the product. No revision or date on the manual. + Fixed option 17. Enabled and Disabled where interchanged. + Fixed association group indexes. Was 1, 2, 5, 8. Now 1, 2, 3, 4. + + + + + + + Switch state saved or not when power down + + + + + 0x00 leading edge, 0x01 trailing edge, 0x02 On/off only. Default 0x01. + + + + + + 0 = Auto detection disabled, 1 = Auto detection enabled. + + + + + 0 = LED disabled, 1 - 10 = min level - max level. + + + 1 - 98 percentage minimum brightness level. Must always be less than Maximum (option 6). + + + 1 - 98 percentage minimum brightness level. Must always be higher than Minimum (option 5). + + + Max 2.55s, in 10ms steps. Default = 3 for 30ms. + + + 1 - 99% per step. Recommended not to change. Default value = 1. + + + Max 2.55s, in 10ms steps. Default = 3 for 30ms. + + + 1 - 99% per step. Recommended not to change. Default value = 1. + + + 0 = percentage from the last button-holding touch. 1 - 99 = percentage to set. Default value = 0. + + + 0 = No report during dimming, 1 - 255 = send report in 1 - 255 * 10ms intervals. Default value = 10ms. + + + 0 = Buttons, 1 = Toggle. Default value = Buttons. + + + + + Default value = function disabled. + + + + + + + + Defines which metering values to send to the gateway. Default value = Disabled. + + + + + + + + + + + + + + + + + + + Interval to send unsollicited energy reports to the gateway. Requires option 15 (Energy meter reporting) to be set to anything other than Disabled. Default value is every 10 seconds. + + + Enable or disable beep upon touching '+' and '-'. Default value = Enabled. + + + + + 0 = alarm disabled, 1 - 5000 * 0.01 Ampere alarm enabled (notification to gateway). Default = 0 - alarm disabled. + + + 0 = alarm disabled, 1 - 10000 * 0.1 Volt alarm enabled (notification to gateway). Default = 0 - alarm disabled. + + + Restore factory settings (write only). Default value = Disabled. + + + + + + + + + + + + + + + diff --git a/config/namron/4512712.xml b/config/namron/4512712.xml new file mode 100644 index 0000000000..abf65f42b0 --- /dev/null +++ b/config/namron/4512712.xml @@ -0,0 +1,47 @@ + + + + Namron Z-Wave 1 kanal bryter K2 + The remote control is a Z-Wave device that can both control other Z-Wave devices and activate scenes in Gateways. Although it is controlling other devices, the device cannot act as Z-Wave network controller (primary or secondary) and will always need a Z-Wave network controller to be added into a Z-Wave network. + http://www.openzwave.com/device-database/0438:a30f:0300 + https://www.namron.com/products/namron-z-wave-1-kanal-bryter-k2/ + https://www.namron.com/contact/ + images/namron/4512712.jpg + https://www.elektroimportoren.no/docs/lib/4512712-Brukerveiledning-5.pdf + short press any button + Set controller in inclusion mode press and hold down group 2 keys for 3 seconds + Set controller in exclusion mode press and hold down group 2 keys for 3 seconds + Press and hold down group 2 keys for more than 10 seconds use only if controller is unavailable + https://products.z-wavealliance.org/products/3910 + CEPT + 4512712 + + Fix id. + Initial release. + + + + + + + Set to 21930 to factory reset the device. + + + + + true + + + + + true + + + + + + + + + + diff --git a/config/namron/4512720.xml b/config/namron/4512720.xml new file mode 100644 index 0000000000..64db4f68db --- /dev/null +++ b/config/namron/4512720.xml @@ -0,0 +1,48 @@ + + + + Namron Z-Wave 2 kanaler bryter K4 + The remote control is a Z-Wave device that can both control other Z-Wave devices and activate scenes in Gateways. Although it is controlling other devices, the device cannot act as Z-Wave network controller (primary or secondary) and will always need a Z-Wave network controller to be added into a Z-Wave network. + http://www.openzwave.com/device-database/0438:a306:0300 + https://www.namron.com/products/namron-z-wave-2-kanaler-bryter-k4/ + https://www.namron.com/contact/ + images/namron/4512720.jpg + https://www.elektroimportoren.no/docs/lib/4512720-Brukerveiledning-5.pdf + short press any button + Set controller in inclusion mode press and hold down group 2 keys for 3 seconds + Set controller in exclusion mode press and hold down group 2 keys for 3 seconds + Press and hold down group 2 keys for more than 10 seconds use only if controller is unavailable + https://products.z-wavealliance.org/products/3911 + CEPT + 4512720 + + Fix product page + Based on thermofloor/heatitz4.xml, fix groups and add multi channel assoc. + + + + + + + Set to 21930 to factory reset the device. + + + + + true + + + + + true + + + + + + + + + + + diff --git a/config/nei/ms11z.xml b/config/nei/ms11z.xml new file mode 100644 index 0000000000..0d2f95d5b1 --- /dev/null +++ b/config/nei/ms11z.xml @@ -0,0 +1,66 @@ + + + MS11Z + Minoston Smart Dimmer Switch + https://products.z-wavealliance.org/products/3610?selectedFrequencyId=2 + https://minoston.com/product/z-wave-plus-smart-dimmer-switch-%EF%BC%88ms11z%EF%BC%89/ + images/inovelli/lzw30.png + Add the MS13Z from the existing Z-Wave home control network with your primary controller. + + Refer to your primary controller instructions to process the inclusion / exclusion setup procedure. + When prompted by your primary controller, click the Up or Down button three times in one second. +Include MS13Z to/from a Z-Wave Gateway with supporting Security.The MS13Z can support the Primary Controller that implemented the security S2. + Remove the MS13Z from the existing Z-Wave home control network with your primary controller. + + Refer to your primary controller instructions to process the inclusion / exclusion setup procedure. + When prompted by your primary controller, click the Up or Down button three times in one second. + + + Adding Device + + + + + + Locally button function + + + + + + LED indicator + + + + + + + Enable Auto Turn-Off Timer + + + + + Auto turn off timer + + + Restore state after power failure + + + + + + + + + + + + + + + + + + + + diff --git a/config/qubino/ZMNHCDx.xml b/config/qubino/ZMNHCDx.xml index 633aca877f..2aa124569f 100644 --- a/config/qubino/ZMNHCDx.xml +++ b/config/qubino/ZMNHCDx.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0159:0052:0003 images/qubino/ZMNHCDx.png @@ -46,6 +46,7 @@ Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2504/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2505/xml Fixed problem of lifeline group 1.1 receives no update (https://www.domoticz.com/forum/viewtopic.php?f=24&t=29715#p225812) and fixed format of this XML + Second fix of lifeline group 1.1 receives no update (https://www.domoticz.com/forum/viewtopic.php?f=24&t=29715#p225812) @@ -158,6 +159,12 @@ + + + + false + + diff --git a/config/qubino/ZMNHHDx.xml b/config/qubino/ZMNHHDx.xml index 9a136b32bd..315e3ea31d 100644 --- a/config/qubino/ZMNHHDx.xml +++ b/config/qubino/ZMNHHDx.xml @@ -1,8 +1,52 @@ - + + + Mini Dimmer + + The Qubino Mini Dimmer is smaller than any other zwave wireless dimmer in the world. Mini Dimmer is a + MOSFET-switching light device that also supports control of low-voltage halogen lamps with electronic + transformers, dimmable compact fluorescent lights, and dimmable LED bulbs. It can work with or + without the neutral line (3 or 2-wire installation). + + http://www.openzwave.com/device-database/0159:0055:0001 + https://qubino.com + https://support.qubino.com/support/home + images/qubino/ZMNHHDx.png + + Manual inclusion is triggered by the following procedure: + 1. Connect the device to the power supply + 2. Enable add/remove mode on your Z-Wave gateway (hub) + 3. Toggle the switch connected to the terminal I 3 times within 3 seconds (this procedure puts the + device in LEARN MODE). The device has to get On/Off signal 3 times, meaning 3 times push of the + momentary switch or with toggle switch 3 times On and 3 times Off. + + + Exclusion is triggered by the following procedure: + 1. Connect the device to the power supply. + 2. Make sure the device is within direct range of your Z-Wave gateway (hub) or use a hand-held Z-Wave + remote to perform exclusion. + 3. Enable add/remove mode on your Z-Wave gateway (hub). + 4. Toggle the switch connected to the terminal I 3 times within 3 seconds (this procedure put the device + in LEARN MODE). The device has to get On/Off signal 3 times, meaning 3 times push of the momentary + switch or with toggle switch 3 times On and 3 times Off. + + + Reset is triggered after the following procedure: + 1. Connect the device to the power supply. + 2. Within the first minute (60 seconds) the device is connected to the power supply, toggle the switch + connected to the terminal I 5 times within 3 seconds. The device has to get On/Off signal 5 times, meaning + 5 times push of the momentary switch or with toggle switch 5 times On and 5 times Off. + + + Initial Import + Fixed value type of config parameter 65 + Changed descriptions of parameters 5 and 6 and added some metadata + + + @@ -11,7 +55,27 @@ - With this parameter, you can change the device presentation on the user interface. + With this parameter, you can change the device presentation on the user interface. This parameter was removed in ZMNHHDx H1S3P2 (recertification) and was replaced with parameter no.6. + + + + + + With this parameter, you select the load type: dimmable or non dimmable. + Device operating in dimmable mode or non-dimmable load can lead to device or load malfunction. + For non dimmable loads no.6 must be set to 1. + + NOTE: When no.6 set to 1 (non dimmable load) values of the following parameters will be ingnored: + - par.60 min. dimming value, + - par.61 max. dimming value, + - par.65 Dimm. Time when key presed, + - par.66 dimm. Time when key hold, + - par.21 Double click function + + NOTE: If the bulb is dimmable or non dimmable (generally valid for LED) is shown on the bulb itself or on packaging. + + This parameter was added in ZMNHHDx H1S3P2 (recertification) and replaces parameter no.5, that required a reinclusion of the device. + diff --git a/config/qubino/ZMNHMDx.xml b/config/qubino/ZMNHMDx.xml new file mode 100644 index 0000000000..a4311a15d9 --- /dev/null +++ b/config/qubino/ZMNHMDx.xml @@ -0,0 +1,168 @@ + + + Smart leak protector + Qubino Smart leak protector can get the information about consumed water on one side, or have the complete protection of your home water system with water metering, flood detection and actuator for opening and closing the valve accordingly. + http://www.openzwave.com/device-database/0159:0051:0006 + https://qubino.com + https://support.qubino.com/support/home + images/qubino/ZMNHADx.png + + 1. Enable add/remove mode on your Z-Wave gateway. + 2. Connect the device to the power supply. + 3. Make sure the device is within direct range of your Z-Wave gateway. + 4. Push the switch connected to the I1 terminal 3 times within 5 seconds. + OR + Press and hold the S (Service) button between 2 and 6 seconds. + 4. A new device will appear on your dashboard. + 5. Inclusion with the switch connected to I1 terminal is not limited by time. + + + 1. Connect the device to the power supply. + 2. Make sure the device is within direct range of your Z-Wave gateway or use a hand-held Z-Wave remote to perform exclusion. + 3. Enable add/remove mode on your Z-Wave gateway. + 4. Toggle the switch connected to the I1 terminal 3 times within 5 seconds. The device must get ON/OFF signal 3 times. + OR + Press and hold the S (Service) button between 2 and 6 seconds. + 5. Exclusion with the switch connected to I1 terminal is not limited by time. + 6. The device will be removed from your network, but any custom configuration parameters will not be erased. + + + 1. Connect the device to the power supply. + 2. Within the first minute (60 seconds) of the device being connected to the power supply, push the momentary switch connected to the I1 terminal 5 times within 5 seconds. + OR + Press and hold the S (Service) button for more than 6 seconds. + The procedure is always available. + + + Initial Import + + + + + + + + Defines the output contact type for Q↑. + + + + + + Defines how the device reacts if a signal from I2 input is registered. + + + + + + Defines how the device reacts if a signal from I3 input is registered.. + + + + + + With this parameter, the user can select if the state of the device should be restored, after a power failure. + + + + + + + With this parameter we can set the current water consumption value in liters. + The value is represented with two's complement notation so that it can represent negative values also. + Span of the input value is from (-2147483648) to (+2147483647). + Its main usage is to set the same value on our device as on physical water meter. + If we get the PARAMETER_48 value with PARAMETER_GET command we get the last value that was set with this parameter and not the current water consumption value! + To get the current consumption value we must send the METER_GET command. + + + + + + This number defines how many litres represent 1 received pulse from the water meter connected to I2. + Default value = 10 (1 pulse = 10 liters) + 1 to 1000 => 1 litre – 1000 litres (step is 1 litre). + + + + + + This number defines how many minimum litres must be consumed each hour and constantly repeated for the defined time in parameter 52 to cause the leak alarm (depends on meter resolution). + Default value = 1 (1 litre) + 1 to 1000 => 1 litre – 1000 litres (step is 1 litre). + + + + + + Set value means time interval (0 – 24) in hours, during which the device checks, if water consumption defined in Parameter 51 was consumed to cause the leak alarm. + Default value = 24 (checking for a leak alarm in 24 hours) + 1 – 24 => 1 hour – 24 hours + + + + + + This number defines how many minimum litres must be consumed each hour and constantly repeated for the defined time in parameter 54 to cause the leak alarm. + Default value = 150 (150 litres) + 1 – 1000 => 1 litre – 1000 litres – step is 1 litre + + + + + + Set value means time interval (0 – 24) in hours, during which the device checks, if water consumption defined in Parameter 53 was consumed to cause the leak alarm. + Default value = 6 (checking for a leak alarm in 6 hours) + 1 – 24 => 1 hour – 24 hours + + + + + + This number defines how many minimum liters must be consumed each hour and constantly repeated for the defined time in parameter 56 to cause the leak alarm. + Default value 300 (300 liters) + 1 – 1000 = 1 litre – 1000 litres – step is 1 litre + + + + + + Set value means time interval (0 – 24) in hours, during which the device checks, if water consumption defined in Parameter 53 was consumed to cause the leak alarm. + Default value = 3 (checking for a leak alarm in 3 hours) + 1 – 24 => 1 hour – 24 hours + + + + + This parameter defines what happens with the valve if the leak alarm is triggered. + + + + + + This parameter defines what happens with the valve if the leak alarm is triggered. + + + + + + This parameter defines what happens with the valve if the leak alarm is triggered. + + + + + + This parameter defines what happens with the valve if the leak alarm is triggered. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/ring/contact-sensor-v2.xml b/config/ring/contact-sensor-v2.xml new file mode 100644 index 0000000000..8f0dd68d54 --- /dev/null +++ b/config/ring/contact-sensor-v2.xml @@ -0,0 +1,74 @@ + + + Contact Sensor + Ring Alarm Contact Sensor is a wireless sensor for the Ring Alarm system which provides users the ability to know when a door or window is open or closed. After installing the sensor on a door or window and setting up the sensor in the Ring app, monitor and receive notifications when the door or window opens or closes. The Ring Alarm Base Station is required to enable Contact Sensor features and functions within the Ring app. + http://www.openzwave.com/device-database/0346:0301:0201 + images/ring/contact-sensor-v2.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3862/Z-WaveUserManual_Contact_Sensor_700.pdf + The sensor will wake up every so often to send a Wake-Up Notification to allow the life line master node controller that the sensor is now available for any queued messages that the controller may have for the sensor. The time between Wake-Up Notifications can be configured with the Wake-Up Notification command class according to the following configurable values: +• Min Value 1 hr +• Max Value 24 hr +• Default Value 12 hours (12 * 60 * 60 seconds) +• Wake Up Interval Step Seconds 1 hour (3600 seconds) + + After powering on the device, press and hold the button on the front of the device for ~3 seconds. Release the button and the device will enter Classic inclusion mode which implements both classic inclusion with a Node Information Frame, and Network Wide Inclusion. During Classic Inclusion mode, the green LED will blink three times followed by a brief pause, repeatedly. When Classic inclusion times-out, the device will blink alternating red and green a few times. + + Exclusion Instructions: +1. Initiate remove “Ring Alarm Contact Sensor” flow in the Ring Alarm mobile application – Select the settings icon from device details page and choose “Remove Device” to remove the device. This will place the controller into Remove or “Z-Wave Exclusion” mode. +2. With the controller in Remove (Z-Wave Exclusion) mode, use a paper clip or similar object and tap the pinhole button. The device’s red LED turns on solid to indicate the device was removed from the network. + + Factory Default Instructions +1. To restore Ring Alarm Contact Sensor to factory default settings, locate the pinhole reset button on the device. This is found inside the battery compartment on the back of the device after removing the back bracket. +2. Using a paperclip or similar object, insert it into the pinhole, press and hold the button down for 10 seconds. +3. The device will rapidly blink green continuously for 10 seconds. After about 10 seconds, when the green blinking stops, release the button. The red LED will turn on solid to indicate the device was removed from the network. + + https://products.z-wavealliance.org/products/3862/ + Contact Sensor v2 + U.S. / Canada / Mexico + + Initial Metadata Creation + Minor correction + + + + + + Heartbeats are automatic battery reports on a timer after the last event. + + + + + Number of application level retries attempted for messages either not ACKed or messages encapsulated via supervision get that did not receive a report. + + + + + This parameter is the number base seconds used in the calculation for sleeping between retry messages. + + + + + This parameter allows a user, via software, to configure the various LED indications on the device. + + + + + + + + Writing to this parameter prompts the sensor to send a wakeup notification one time after this parameter's number of seconds. After which it is reset back to 0. + + + + + The number of milliseconds waiting for a Supervisory Report response to a Supervisory Get encapsulated command from the sensor before attempting a retry. + + + + + + + + + + diff --git a/config/ring/motion-detector-v2.xml b/config/ring/motion-detector-v2.xml new file mode 100644 index 0000000000..b5ab5c9d0c --- /dev/null +++ b/config/ring/motion-detector-v2.xml @@ -0,0 +1,97 @@ + + + Motion Detector + Ring Alarm Motion Detector is a wireless sensor for the Ring Alarm system which provides users the ability to know when there is movement of a person or similar object within an area. After installing the sensor and setting up the sensor in the Ring app, monitor and receive notifications motion is detected. The Ring Alarm Base Station is required to enable Motion Detector features and functions within the Ring app. + http://www.openzwave.com/device-database/0346:0301:0301 + images/ring/motion-detector-v2.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3869/Z-WaveUserManual_Motion_Detector_700.pdf + Not applicable. Ring Alarm Motion Detector is a Frequently Listening Receiver Slave (FLiRS) device and does not support Wake Up Command Class. + + After powering on the device, press and hold the button on the front of the device for ~3 seconds. Release the button and the device will enter Classic inclusion mode which implements both classic inclusion with a Node Information Frame, and Network Wide Inclusion. During Classic Inclusion mode, the green LED will blink three times followed by a brief pause, repeatedly. When Classic inclusion times-out, the device will blink alternating red and green a few times. + + Exclusion Instructions: +1. Initiate remove “Ring Alarm Motion Detector” flow in the Ring Alarm mobile application – Select the settings icon from device details page and choose “Remove Device” to remove the device. This will place the controller into Remove or “Z-Wave Exclusion” mode. +2. Locate the pinhole reset button on the back of the device in the battery compartment. +3. With the controller in Remove (Z-Wave Exclusion) mode, use a paper clip or similar object and tap the pinhole button. The device’s red LED turns on solid to indicate the device was removed from the network. + + Factory Default Instructions +1. To restore Ring Alarm Motion Detector to factory default settings, locate the pinhole reset button on the device. This is found inside the battery compartment on the back of the device after removing the back bracket. +2. Using a paperclip or similar object, insert it into the pinhole, press and hold the button down for 10 seconds. +3. The device will rapidly blink green continuously for 10 seconds. After about 10 seconds, when the green blinking stops, release the button. The red LED will turn on solid to indicate the device was removed from the network. + +Note: Use this procedure only in the event that the network primary controller is missing or otherwise inoperable. + + https://products.z-wavealliance.org/products/3869/ + Motion Detector v2 + U.S. / Canada / Mexico + + Initial Metadata Creation + + + + + + This parameter is the number minutes between heartbeats. Heartbeats are automatic battery reports on a timer after the last event. + + + + + Number of application level retries attempted for messages either not ACKed or messages encapsulated via supervision get that did not receive a report. + + + + + The number base seconds used in the calculation for sleeping between retry messages. + + + + + This parameter allows a user, via software, to configure the various LED indications on the device. + + + + + + + + Delay time in seconds for occupancy signal to clear + + + + + Delay time in seconds for intrusion signal to clear + + + + + Standard delay time in seconds + + + + + Adjusts motion sensitivity + + + + + Enable or Disable light sensor + + + + + Delay used to turn off lights when motion is no longer detected + + + + + The number of milliseconds waiting for a Supervisory Report response to a Supervisory Get encapsulated command from the sensor before attempting a retry. + + + + + + + + + + diff --git a/config/sensative/kaipule/im20.xml b/config/sensative/kaipule/im20.xml new file mode 100644 index 0000000000..78a9bd1801 --- /dev/null +++ b/config/sensative/kaipule/im20.xml @@ -0,0 +1,50 @@ + + + http://www.openzwave.com/device-database/0214:0001:0002 + images/kaipule/im20.png + https://products.z-wavealliance.org/products/2027/ + enter the Exclusion Mode of gateway, and press the tamper switch 3 times within 1.5s, then the door sensor will be removed after a period of time. + U.S. / Canada / Mexico + IM20_Zwave is a door/window sensor adopting Zwave500 series chip. It uses special structure design, suitable for kinds of installation environments. Also, it supports door & window open/close detection, anti-tamper, battery level detection and associated gateway and interaction device notifications. + Z-Wave DOOR SENSOR + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/2027/IM20-Z-Wave Product Manual.pdf + IM20-Z-Wave + Press the tamper switch 6 times in 2s, it will recover to factory setting after a period of time(Please use the reset procedure only when the primary controller is missing or inoperable) + a) Manual Wake-up +Quickly press tamper switch once, the door sensor will automatically send wake-up information, and there will be 10s after wake-up to receive gateway setting information. +b) Automatic Wake-up +Default time of automatic wake-up is 24 hours, and there will be 10s after wake-up to receive gateway setting information, the max automatic report time = 24 hours, minimum=30min + enter the Inclusion Mode of gateway, and press the tamper switch 3 times within 1.5s,then the door sensor will stay in enrollment state until successfully enrolled into network or enrollment time out after 30s. + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2027/xml + + + + + + + Basic Set parameter setting, the receivers make relevant adjustment according to parameter value + + + + If there is any device under Association Group2, the door sensor will send Basic Set = value command to Group2, and send Basic Set = 0x00 command to turn-off light after t seconds, Set value = t, means to send Basic Set command after t seconds. + + + + + Under normal working status (without trigger), the door sensor will automatically send report to the Gateway about its current tamper and open/close status. + Set value = t, means t hours, (t=0, means no status report). + 0-24 hours (Default 6 hours) + + + + + + + + + + diff --git a/config/sensative/kaipule/ix32.xml b/config/sensative/kaipule/ix32.xml new file mode 100644 index 0000000000..fe79a1bb38 --- /dev/null +++ b/config/sensative/kaipule/ix32.xml @@ -0,0 +1,24 @@ + + + + + + + Basic Set parameter setting, the receivers make relevant adjustment according to parameter value + + + When the device triggered and sends out BASIC SET to the lightings, the light turns on and off as the set time. + The minimum value is 1, means the light bright time is 1*5s (5 seconds), and turn off after 5 seconds, if the value is t, means the bright time is t*5s, turn off after t*5 seconds. + + + Eliminate alarm after 5xt seconds. + + + + + + + + + + diff --git a/config/shenzen_neo/ls01ch.xml b/config/shenzen_neo/ls01ch.xml index 5726fe7a85..1136f2853f 100644 --- a/config/shenzen_neo/ls01ch.xml +++ b/config/shenzen_neo/ls01ch.xml @@ -1,28 +1,54 @@ - - - - - This parameter defines the on/off status of relay needs saving or not. The status will be saved when relay status is changed if this parameter is set to '1'. Otherwise the relay status is not saved. The Light Switch will restore the relay On/Off status when it's powered again. - - - - - This parameter defines the back light state of the touch button. - - - - - This Parameter defines the relay state. The led will be turned on with pink color when the button is touched to turn on relay if this parameter is set to '1'. Otherwise the LED is off. - - - - - + + + Shenzhen NEO Electronics (Neo-CoolCam) Light Switch (1 channel) + http://www.openzwave.com/device-database/0258:108c:0003 + https://szneo.com/en/products/show.php?id=201 + images/shenzhen-neo/eu-1.png + Set Z-Wave gateway into inclusion mode (refer to gateway user manual). +Touch any button three times continuously within 1,5 seconds, then Light Switch will enter into inclusion mode. +Meanwhile, LED light would flash red colour five time on and off alternately. + Set Z-Wave gateway into exclusion mode (refer to gateway user manual). +Touch any button three times continuously within 1,5 seconds, then Light Switch will enter into exclusion mode. + Touch and hold any button for 10 seconds, then release the button. +LEF lights would flash red (1CH:pink) color 5 times within 2s after resetting successfully. +During the resetting process, please make sure the Light Switch is powered on all the time. + https://szneo.com/en/products/show.php?id=201 + CEPT (Europe) + EU-1 + https://szneo.com/en/products/show.php?id=202 + U.S. / Canada / Mexico + US-1 + + Initial version + Added pictures, descriptions and metadata + + + + + + This parameter defines the on/off status of relay needs to be saved or not. +The status will be saved when relay status is changed if this parameter is set to '1'; otherwise the relay stataus is not saved. +The Light Switch will restore the relay On/Off status when is powered on again. + + + + + This parameter defines the back light state of the touch button. + + + + + This Parameter defines the relay state. The led will be turned on with pink color when the button is touched to turn on relay if this parameter is set to '1'. Otherwise the LED is off. + + + + + - \ No newline at end of file + diff --git a/config/shenzen_neo/ls02ch.xml b/config/shenzen_neo/ls02ch.xml index 03eb1ab13f..1233a6231c 100644 --- a/config/shenzen_neo/ls02ch.xml +++ b/config/shenzen_neo/ls02ch.xml @@ -1,27 +1,58 @@ - - + + + Shenzhen NEO Electronics (Neo-CoolCam) Light Switch (2 channels) + http://www.openzwave.com/device-database/0258:108b:0003 + https://szneo.com/en/products/show.php?id=196 + images/shenzhen-neo/eu-2.png + Set Z-Wave gateway into inclusion mode (refer to gateway user manual). +Touch any button three times continuously within 1,5 seconds, then Light switch will enter into inclusion mode. +Meanwhile, LED light would flash red colour five time on and off alternately. + Set Z-Wave gateway into exclusion mode (refer to gateway user manual). +Touch any button three times continuously within 1,5 seconds, then Light switch will enter into exclusion mode. + Touch and hold any button for 10 seconds, then release the button. +LEF lights would flash red (1CH:pink) color 5 times within 2s after resetting successfully. +During the resetting process, please make sure the light switch is powered on all the time. + https://szneo.com/en/products/show.php?id=196 + CEPT (Europe) + EU-2 + https://szneo.com/en/products/show.php?id=203 + U.S. / Canada / Mexico + US-2 + + Initial version + Added pictures, descriptions and metadata + + - - This parameter defines the back light state of the touch button. The back light led would be on when Light Switch is powered on if the parameter is set to '1'. Otherwise the back light led would be off. + + This parameter defines the back light state of the touch button. +The back light led would be on when Light Switch is powered on if the parameter is set to '1'. +Otherwise the back light led would be off. - - This parameter defines the relays state. The led will be turned on with pink color when the button is touched to tur on relay if this paramtere is set to '1'. Otherwise the ledstate is not changed. + + This parameter defines the relays state. +The led will be turned on with pink color when the button is touched to turn on relay if this paramtere is set to '1'. +Otherwise the led state is not changed. - - This parameter defines the on/off status of relay needs to be saved. The status will be saved when relay status is changed if this parameter is set to '1'. Otherwise the relay stataus is not saved. The Light Switch will restore the relay On/Off status when powered again. + + This parameter defines the on/off status of relay needs to be saved or not. +The status will be saved when relay status is changed if this parameter is set to '1'; otherwise the relay stataus is not saved. +The Light Switch will restore the relay On/Off status when is powered on again. - - This parameter defines which endpoint is mapped to root device (Endpoint 0). 0 - No endpoint is mapped to root device. 1 - Endpoint 1 is mapped to root device. 2 - Endpoint 2 is mapped to root device. 3 - Both endpoint 1 and 2 are mapped to root device. + + This parameter defines which endpoint is mapped to root device (Endpoint 0). +The valid values are explaned as follows. Default value is 1. +0 - No endpoint is mapped to root device; 1 - Endpoint 1 is mapped to root device; 2 - Endpoint 2 is mapped to root device; 3 - Both endpoint 1 and 2 are mapped to root device. +For example, assume this parameter is set to 1 (default value). Gateway or other devices (such as door/window sensor, motion sensor, etc.) that is associated +with Light Switch send a command BASIC_SET = 0xFF to Light Switch, the relay in endpoint 1 will be turned on, and other relay status will not be changed. diff --git a/config/shenzen_neo/ls03ch.xml b/config/shenzen_neo/ls03ch.xml index 3d86dfa1ec..86cccecc7e 100644 --- a/config/shenzen_neo/ls03ch.xml +++ b/config/shenzen_neo/ls03ch.xml @@ -1,16 +1,28 @@ - - + - https://www.szneo.com/en/products/show.php?id=237 - images/shenzen_neo/ls03ch.jpg - Prepaire z-wave controller for inclusion and press any button 3 times within 1.5 seconds to start the pairing process - Prepaire z-wave controller for exclusion and press any button 3 times within 1.5 seconds to start the exclusion process + Shenzhen NEO Electronics (Neo-CoolCam) Light Switch (3 channels) 3 gang lightswitch EU 868.42 MHz + http://www.openzwave.com/device-database/0258:102b:0200 + https://szneo.com/en/products/show.php?id=237 + images/shenzhen-neo/eu-3.png + Set Z-Wave gateway into inclusion mode (refer to gateway user manual). +Touch any button three times continuously within 1,5 seconds, then Light Switch will enter into inclusion mode. +Meanwhile, LED light would flash red colour five time on and off alternately. + Set Z-Wave gateway into exclusion mode (refer to gateway user manual). +Touch any button three times continuously within 1,5 seconds, then Light Switch will enter into exclusion mode. + Touch and hold any button for 10 seconds, then release the button. +LEF lights would flash red (1CH:pink) color 5 times within 2s after resetting successfully. +During the resetting process, please make sure the Light Switch is powered on all the time. + https://szneo.com/en/products/show.php?id=237 + CEPT (Europe) + EU-3 + https://szneo.com/en/products/show.php?id=236 + U.S. / Canada / Mexico + US-3 Initial Release + Added pictures, descriptions and metadata diff --git a/config/simon/10002020-13X.xml b/config/simon/10002020-13X.xml new file mode 100755 index 0000000000..b239236f8d --- /dev/null +++ b/config/simon/10002020-13X.xml @@ -0,0 +1,143 @@ + + + + images/simon/10002020-13X.png + https://products.z-wavealliance.org/products/2590/ + https://products.z-wavealliance.org/ProductManual/File?folder=%filename=MarketCertificationFiles/2590/DIMMER_991024_990912.pdf + S100 Rocker iO for Dimmer + + Added support for Simon S100 Rocker iO dimmer. + + + + + + + Used during Association process by Simon Shortcut Switch IO to turn ON the main LED of all devices already associated to this shortcut. + + + + + + + + This parameter allows to choose the dimmer set time in seconds. + Value 0 - Instantly (default). + Values from 1 to 127 - 1 second to 127 seconds in 1 second resolution. + + + + + + This parameter allows to choose the dimmer fade time in seconds. + Value 0 - Instantly (default). + Values from 1 to 127 - 1 second to 127 seconds in 1 second resolution. + + + + + + This parameter allows to choose the ON delay in seconds. + Value 0 - Instantly (default). + Values from 1 to 127 - 1 second to 127 seconds in 1 second resolution. + + + + + + This parameter allows to choose the activation time in seconds. + Value 0 - Instantly (default). + Values from 1 to 127 - 1 second to 127 seconds in 1 second resolution. + + + + + + This parameter allows to choose the OFF delay in seconds. + Value 0 - Instantly (default). + Values from 1 to 127 - 1 second to 127 seconds in 1 second resolution. + + + + + This parameter allows choosing between trailing or leading edge configuration. + + + + + + + Sets the Min percentage that can be reached. Once the device gets a value through Z-Wave, it scales the value read according to this Min margin. + + + + Sets the Max percentage that can be reached. Once the device gets a value through Z-Wave, it scales the value read according to this Max margin. + + + + Returns or sets the last non zero dimming value. In case of Set the device turns ON the load. + + + + This parameter allows to choose behaviour of LED in repose + + + + + + This parameter locks the direct control of load. + + + + + + Parameters, Groups, and Z-Wave status are restored to default (Only writable). + + + + + This parameter allows choosing. + + + + + + + + + Write only value that performs a fast blink on Central LED during 5 seconds in order to identify the device when it is installed in a multiple frame. + + + + + + Read only Configuration used to report the device state and last value. This value is represented in Hexadecimal. + Byte 0 informs about load state (0 load is OFF and 1 load is ON). + Byte 1 informs about last active dimming value (0x00 or 0x63) + + + + + + Reports whether the roller dimmer needs calibration. + 0x00 Calibration is not required. + 0xFF It is necessary to calibrate the dimmer to work properly. + + + + + This parameter allows to choose the long press behaviour. + + + + + + + + + + + diff --git a/config/sunricher/zw3004.xml b/config/sunricher/zw3004.xml new file mode 100755 index 0000000000..f695a1e768 --- /dev/null +++ b/config/sunricher/zw3004.xml @@ -0,0 +1,96 @@ + + + RGBGenie ZW-3004 Wall-mounted Lighting Control Remote + Wall-mounted remote controller for controlling other Z-Wave devices, specifically + designed around light control (RGBWC controls, dimming, pre-sets, speed). This model supports three groups, + and three scenes. + http://www.openzwave.com/device-database/0330:0301:a105 + https://rgbgenie.com/?product=rgbgenie-color-touch-panel-and-dimmer-white-z-wave-2 + http://rgbgenie.com/ + images/sunricher/ZW-3004-RGBW-wall-controller-3-zone-white.png + + Short press the “inclusion/exclusion” button (on back of device), + or press and hold down “ALL ON/OFF” button for over 3 seconds, the wall controller will be set to inclusion mode, + and waiting to be included, then LED indicator turns on and blinks 6 times quickly to indicate successful inclusion. + Short press the “inclusion/exclusion” button (on back of device), + or press and hold down “ALL ON/OFF” button for over 3 seconds, the wall controller will be set to exclusion mode, + and waiting to be excluded, then LED indicator turns on and shows 3 short blinks and 1 long blink to indicate + successful exclusion. + Press and hold down “inclusion/exclusion” button (on back of device) + for over 8 seconds, LED indicator blinks slowly to indicate successful factory reset, release + “inclusion/exclusion” button,the wall controller will restart automatically. + + + + + Initial entry after extensive testing. + + + + + + + Dynamic mode switching. Switch 1 - 0 - 2 - 0 - 3 - 0 etc. up to 20. Resets after hitting another + button and restarts from 1. Note: you don't SET this, this is a message you'll receive from the switch. + + + + + Dynamic mode speed (for effects). A value 0..255 to indicate speed. Note: you don't SET this, this is + a message that you'll receive from the switch. + + + + + Choose working mode of the remote control. This may or may not work. + + + + + + + + + false + + + + + + false + + + + + + + + + + + + + + + + + + + + + + true + + + + + true + + + + + + + + + diff --git a/config/thermofloor/heatit-zdim.xml b/config/thermofloor/heatit-zdim.xml index 0857c06ab0..f1b08e7a19 100644 --- a/config/thermofloor/heatit-zdim.xml +++ b/config/thermofloor/heatit-zdim.xml @@ -1,173 +1,187 @@ - - - - http://www.openzwave.com/device-database/019b:2200:0003 - images/thermofloor/heatit_zdim.png - https://products.z-wavealliance.org/products/3261 - Zdim - https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3261/Manual_Heatit_Z-DIM_FW%201.0_Ver2019-A_ENG.pdf - Z-Wave rotary dimmer for different light sources. The LED dimmer dims at low load without the light flickering. Dimmer LED from 1-200VA, 230V halogen and incandescent bulbs, dimmable LED drivers and electronic transformers. Not affected by additional starting currents. Need L + N conductor connected. -The dimmer has end-turn function. This allows you to turn on the light and dimming with one dimmer, and then turn off the light with another dimmer. Convenient for example in stairs and corridors. -The dimmer fits into standard Elko, Schneider Exxact and Gira System 55 frame systems. - -FUNCTIONS -- Z-wave rotary dimmer -- Scene controller -- Dims: -- LED -- 230V halogen -- Incandescent lightbulbs -- Dimable LED-drivers -- Electronic transformators -- Starts at 1VA and dims up to 200VA LED -- Trailing edge -- Multiway switching option -- Electronic thermal cutoff with automatic reset -- Firmware updates (OTA) -- Power metering -- Supports encryption mode: S0, S2 Authenticated Class, S2 Unauthenticated Class - -CONNECTION -1. Disconnect the power. -2. Connect the live to the dimmer terminal marked "L". -3. Connect the neutral to the dimmer terminal marked "N". -4. Connect the neutral to the load terminal marked "N". -5. Connect the load terminal marked "L" to the dimmer terminal marked (see wiring - diagram). -6. Install the dimmer (A) in the wall box. Make sure that no wires are pinched. -7. Attach the cover (B) with the supplied nut (C). -8. Attach the button (D) with a simple push. -To use the multiway function (stairway function) a 230VAC rated momentary switch -can be connected as follows: -9. Connect the live to the toggle switch terminal marked "L". -10. Connect the toggle switch terminal marked to the dimmer terminal marked "S" - (see wiring diagram). - -TECHNICAL DATA -Protocol Z-Wave, 868,4MHz -Chip Z-Wave 500 chip -SDK 6.71.03 -Rated voltage 230V AC 50Hz -Power 1VA - 200VA -Input current 0,9A -Controls Push and rotary dimmer -Operating temperature -20°C - 40 °C -Connection Max. 2,5mm2 -Flush mounting depth 15mm -IP Code IP 20 -Size (LxWxH) 84 x 84 x 43mm - -APPROVALS -Z-Wave Plus -CE -EN 55015/A2: 2009, EN 61547:2009 -EN 61000-3-2/A2:2009 -EN 61000-3-3:2008 -EN 60669-2-1/A12:2010 -EN 60669-1:A2:2008 -EMC 2014/30/EU, RoHS 2011/65/EU -LVD 2014/35/EU - - INCLUSION/EXCLUSION -Press the main button on dimmer 6 times in a rapid sequence. Heatit Z-DIM is now included in your Z-Wave network. - CEPT (Europe) - Heatit Zdim - FACTORY RESET - RES -By pressing and holding the main button for 20 seconds, the dimmer will perform -a complete factory reset. The connected light source will blink once and go in the -"OFF" state if successfully reset. NB! Please use this procedure only when the primary -controller is missing or otherwise inoperable - INCLUSION/EXCLUSION -Press the main button on dimmer 6 times in a rapid sequence. Heatit Z-DIM is now included in your Z-Wave network. - - Initial release - - - - - - -The parameter defines the value of connected load. Refer to Paragraph 8 "Power Metering". -0 = Default -1 - 200 = 1-200 Watts connected load - -POWER METERING -The Heatit Z-Dim has functionality to calculate power consumption. To enable this -function, Parameter 1 "Connected load" should have a value greater than 0. This is an -estimated value, therefore power consumption accuracy depends on load estimation. -1. Estimate the load value (Watt) connected to the Heatit Z-Dim. -2. Use this value in Parameter 1. -Heatit Z-Dim can report accumulated (kWh) and instant (Watt), or only instant (Watt) -power consumption. The report time interval can be altered by Parameter 9. - - - - -The parameter defines the lowest dimming level of the dimmer. The value must be lower than parameter 3 "Maximum Dim Level" -1% - 98% Default is 20 (20%) - - - - -The parameter defines the highest dimming level of the dimmer. -The value must be higher than parameter 2 "Minimum Dim Level" -2% - 99% Default is 85 (85%) - - - - -The parameter defines how many steps it should take to dim from minimum -to maximum dim level (One round = 20 steps). -5 - 255 = 5-255 steps. Default is 15 (3/4 round) - - - - The parameter defines the double press functionality. - - - - - Enables scene controller - - - - - -The parameter defines the dimming level when restored from the OFF state -by push button. -0 = Restores last dim level (Default) -1 - 99 = 1% - 99% - - - - -The parameter defines how long it takes to dim to the desired level. -Note! Only Multilevel Switch Command Class is affected by this parameter. -0 = Disabled -1 - 127 = Duration in seconds (1 - 127 seconds. Default is 1) -128 - 255 = Duration in minutes (1 - 127 minutes) - - - - -The parameter defines the report interval for Power Metering. -30 - 32767 = Duration in seconds (30 - 32 767. Default is 60) - - - - -The parameter defines the initial dimming level after power loss. -1 - 99 = 1% - 99% Default is 50 (50%) - - - - - - - - - - - - + + + + http://www.openzwave.com/device-database/019b:2200:0003 + images/thermofloor/heatit_zdim.png + https://products.z-wavealliance.org/products/3261 + Zdim + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3261/Manual_Heatit_Z-DIM_FW%201.0_Ver2019-A_ENG.pdf + Z-Wave rotary dimmer for different light sources. The LED dimmer dims at low load without the light flickering. Dimmer LED from 1-200VA, 230V halogen and incandescent bulbs, dimmable LED drivers and electronic transformers. Not affected by additional starting currents. Need L + N conductor connected. +The dimmer has end-turn function. This allows you to turn on the light and dimming with one dimmer, and then turn off the light with another dimmer. Convenient for example in stairs and corridors. +The dimmer fits into standard Elko, Schneider Exxact and Gira System 55 frame systems. + +FUNCTIONS +- Z-wave rotary dimmer +- Scene controller +- Dims: +- LED +- 230V halogen +- Incandescent lightbulbs +- Dimable LED-drivers +- Electronic transformators +- Starts at 1VA and dims up to 200VA LED +- Trailing edge +- Multiway switching option +- Electronic thermal cutoff with automatic reset +- Firmware updates (OTA) +- Power metering +- Supports encryption mode: S0, S2 Authenticated Class, S2 Unauthenticated Class + +CONNECTION +1. Disconnect the power. +2. Connect the live to the dimmer terminal marked "L". +3. Connect the neutral to the dimmer terminal marked "N". +4. Connect the neutral to the load terminal marked "N". +5. Connect the load terminal marked "L" to the dimmer terminal marked (see wiring + diagram). +6. Install the dimmer (A) in the wall box. Make sure that no wires are pinched. +7. Attach the cover (B) with the supplied nut (C). +8. Attach the button (D) with a simple push. +To use the multiway function (stairway function) a 230VAC rated momentary switch +can be connected as follows: +9. Connect the live to the toggle switch terminal marked "L". +10. Connect the toggle switch terminal marked to the dimmer terminal marked "S" + (see wiring diagram). + +TECHNICAL DATA +Protocol Z-Wave, 868,4MHz +Chip Z-Wave 500 chip +SDK 6.71.03 +Rated voltage 230V AC 50Hz +Power 1VA - 200VA +Input current 0,9A +Controls Push and rotary dimmer +Operating temperature -20°C - 40 °C +Connection Max. 2,5mm2 +Flush mounting depth 15mm +IP Code IP 20 +Size (LxWxH) 84 x 84 x 43mm + +APPROVALS +Z-Wave Plus +CE +EN 55015/A2: 2009, EN 61547:2009 +EN 61000-3-2/A2:2009 +EN 61000-3-3:2008 +EN 60669-2-1/A12:2010 +EN 60669-1:A2:2008 +EMC 2014/30/EU, RoHS 2011/65/EU +LVD 2014/35/EU + + INCLUSION/EXCLUSION +Press the main button on dimmer 6 times in a rapid sequence. Heatit Z-DIM is now included in your Z-Wave network. + CEPT (Europe) + Heatit Zdim + FACTORY RESET - RES +By pressing and holding the main button for 20 seconds, the dimmer will perform +a complete factory reset. The connected light source will blink once and go in the +"OFF" state if successfully reset. NB! Please use this procedure only when the primary +controller is missing or otherwise inoperable + INCLUSION/EXCLUSION +Press the main button on dimmer 6 times in a rapid sequence. Heatit Z-DIM is now included in your Z-Wave network. + + Initial release + Fixed COMMAND_CLASS_SWITCH_MULTILEVEL get commands + + + + + + +The parameter defines the value of connected load. Refer to Paragraph 8 "Power Metering". +0 = Default +1 - 200 = 1-200 Watts connected load + +POWER METERING +The Heatit Z-Dim has functionality to calculate power consumption. To enable this +function, Parameter 1 "Connected load" should have a value greater than 0. This is an +estimated value, therefore power consumption accuracy depends on load estimation. +1. Estimate the load value (Watt) connected to the Heatit Z-Dim. +2. Use this value in Parameter 1. +Heatit Z-Dim can report accumulated (kWh) and instant (Watt), or only instant (Watt) +power consumption. The report time interval can be altered by Parameter 9. + + + + +The parameter defines the lowest dimming level of the dimmer. The value must be lower than parameter 3 "Maximum Dim Level" +1% - 98% Default is 20 (20%) + + + + +The parameter defines the highest dimming level of the dimmer. +The value must be higher than parameter 2 "Minimum Dim Level" +2% - 99% Default is 85 (85%) + + + + +The parameter defines how many steps it should take to dim from minimum +to maximum dim level (One round = 20 steps). +5 - 255 = 5-255 steps. Default is 15 (3/4 round) + + + + The parameter defines the double press functionality. + + + + + Enables scene controller + + + + + +The parameter defines the dimming level when restored from the OFF state +by push button. +0 = Restores last dim level (Default) +1 - 99 = 1% - 99% + + + + +The parameter defines how long it takes to dim to the desired level. +Note! Only Multilevel Switch Command Class is affected by this parameter. +0 = Disabled +1 - 127 = Duration in seconds (1 - 127 seconds. Default is 1) +128 - 255 = Duration in minutes (1 - 127 minutes) + + + + +The parameter defines the report interval for Power Metering. +30 - 32767 = Duration in seconds (30 - 32 767. Default is 60) + + + + +The parameter defines the initial dimming level after power loss. +1 - 99 = 1% - 99% Default is 50 (50%) + + + + + + + + false + + + + + + + + + + + + + + true + + + \ No newline at end of file diff --git a/config/thermofloor/heatit021-v1.92.xml b/config/thermofloor/heatit021-v1.92.xml new file mode 100644 index 0000000000..e8f8832cb1 --- /dev/null +++ b/config/thermofloor/heatit021-v1.92.xml @@ -0,0 +1,221 @@ + + + + http://www.openzwave.com/device-database/019B:0201:0003 + images/thermofloor/heatit021.png + https://products.z-wavealliance.org/products/1234/ + Heatit Z-Wave is an electronic thermostat for mounting in a standard wall box. The thermostat has a built-in Z-Wave chip that +can be connected to Home Automation systems like Fibaro, Sensio, Vera, Zipato and others. +The display will show the actual room temperature. By pressing the buttons, the display will show the set value. +Heatit Z-Wave is equipped with a single-pole switch. +The thermostat can handle loads up to 16A/3600Wat 230V. If the load is greater than this, the thermostat needs to be connected to a contactor. It can be used with two external temperature sensors. + +FUNCTIONS +• Room sensor +• Floor sensor +• Temperature limiter +• Power regulator +• Z-Wave chip 500 series +• Week program/setback temperature via gateway +• Setback mode +• 7-segment LCD-screen +• Can be used in connection with diff erent NTC-sensors +• Lock mode/child lock +• Backlight +• Calibration +• 8 scenarios +CONNECTION CLAMPS +Use 1,5 mm² or 2,5 mm² cables according to power need. +TECHNICAL DATA +Display LED-display 3x 7-Seg 13.2mm CA white +Rated voltage: 230V 50/60Hz +Max. load: 3600W +Max. current: 16A +Power consumption: 1,5W +Protection class: IP21 +Min/Max installation temp: -20°C to 40°C +Min/Max operating temp: 5°C to 40°C +Temperature range +5°C/+40°C +Displayed temperature -30°C …. 60°C +Floor min. limit 5°C (5°C…35°C) +Floor max. limit 35°C (5°C…35°C) +Air min. limit 5°C (5°C…40°C) +Air max. limit 35°C (5°C…40°C) +Regulator min. limit 0 (0…9) +Power regulator P02 (P00…P10) cycle of 30 minutes +Temperature setback Adjustable within temperature range. +Temperature setback activation Pilot wire/Z-Wave user interface +Hysteresis: 0,5°C +Sensor values: 0°C 29,1 kOhm +10°C 18,6 kOhm +15°C 15,1 kOhm +20°C 12,2 kOhm +25°C 10,0 kOhm +Switch: Single-pole +Standard Color White RAL 9003 – Black RAL 9011 +Approvals CE – FIMKO - Z-Wave Plus + + INCLUSION/EXCLUSION +To include the thermostat to your home automation gateway, press Center (confirm) for 10 seconds. +The display will show OFF. Press Right (down) 4 times till you see Con in the display. +Now start add device in your home automation software. Start inclusion mode by pressing Center (confirm) for approximately +2 seconds. The inclusion/exclusion icon will appear in the display. Confirmation will show Inc/EcL in the display. If inclusion +fails, Err (error) will appear. +Leave programming mode by choosing ESC in menu. Your thermostat is ready for use with default settings. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1182/Manual_Multireg%20Z-Wave_Ver2015-A.pdf + CEPT (Europe) + Heatit Z-Wave + TF021 + FACTORY RESET - RES +By pressing buttons Left and Center (up and confirm) for 20 seconds, the thermostat will perform a complete factory reset. +NB! Please use this procedure only when the primary controller is missing or otherwise inoperable. + INCLUSION/EXCLUSION +To include the thermostat to your home automation gateway, press Center (confirm) for 10 seconds. +The display will show OFF. Press Right (down) 4 times till you see Con in the display. +Now start add device in your home automation software. Start inclusion mode by pressing Center (confirm) for approximately +2 seconds. The inclusion/exclusion icon will appear in the display. Confirmation will show Inc/EcL in the display. If inclusion +fails, Err (error) will appear. +Leave programming mode by choosing ESC in menu. Your thermostat is ready for use with default settings. + If Er2 appears in the display, touch any button to restart the display. + + Initial release + + + + + + 37 + + + + + + + + 0 + true + + + + + + + + + + + + + + + + + + + + + + + + 0 + true + + + + + + Set operation mode + + + + + + + Set sensor mode + + + + + + + + + Floor sensor type (10K NTC Default) + + + + + + + + + 0-30 (0,3C - 3.0C) + + + 50-400 (5.0C - 40.0C) + + + 50-400 (5.0C - 40.0C) + + + 50-400 (5.0C - 40.0C) + + + 50-400 (5.0C - 40.0C) + + + Min power 0-9 in FP-mode (Floor sensor and power regulator mode) + + + 50-400 (5.0C - 40.0C) + + + 50-400 (5.0C - 40.0C) + + + Power 0-10 in P-mode (Power regulator mode) + + + Only if cooling is enabled. 50-400 (5.0C - 40.0C) + + + Temperature correction 0 - 4.0C (Default: 0). For positive value 40 = 4.0C. Negative value is not working (Adjust negativ calibration on thermostat) + + + Temperature correction 0 - 4.0C (Default: 0). For positive value 40 = 4.0C. Negative value is not working (Adjust negativ calibration on thermostat) + + + Temperature correction 0 - 4.0C (Default: 0). For positive value 40 = 4.0C. Negative value is not working (Adjust negativ calibration on thermostat) + + + 0 (Report disabled) 1-8640 Multiply with 10 seconds, 10 seconds - 24 hours. Default is 6 (60 seconds) + + + 1-100 (0.1C - 10C). Default is 10 (1.0C) + + + + + + + + + + + + + + + + true + + + + + + + true + + + \ No newline at end of file diff --git a/config/thermofloor/heatitz4.xml b/config/thermofloor/heatitz4.xml index d6fde1bccc..0d1ead3ae2 100644 --- a/config/thermofloor/heatitz4.xml +++ b/config/thermofloor/heatitz4.xml @@ -1,4 +1,4 @@ - + Heatit Z-Push Button 4 @@ -7,7 +7,7 @@ https://www.heatit.com/z-wave/heatit-z-push-button-4/ https://www.heatit.com/z-wave/heatit-z-push-button-4/ images/thermofloor/Heatit-Z-Push-button-8-white.png - https://www.heatit.com/wp-content/uploads/2019/07/Manual_Heatit-Z-Push_Button-4-_FW-1.26_Ver2019-A_ENG.pdf + https://www.thermo-floor.no/media/multicase/documents/_tfasdokumentasjon/heatit%20controls/heatit%20z-push%20button/manual_heatit%20z-push_button%204%20_fw%201.26_ver2019-a_eng.pdf short press any button set controller in inclusion mode press and hold down group 2 keys for 3 seconds set controller in exclusion mode press and hold down group 2 keys for 3 seconds @@ -17,6 +17,7 @@ 45 126 82 (white) 45 126 83 (black) add Heatit Z-Push Button 4 + Fixed Association Groups @@ -31,12 +32,10 @@ - + - - - - + + diff --git a/config/thermofloor/heatitz8.xml b/config/thermofloor/heatitz8.xml index a32c80b39a..72946c507f 100644 --- a/config/thermofloor/heatitz8.xml +++ b/config/thermofloor/heatitz8.xml @@ -1,4 +1,4 @@ - + Heatit Z-Push Button 8 @@ -7,7 +7,7 @@ https://www.heatit.com/z-wave/heatit-z-push-button-8/ https://www.heatit.com/z-wave/heatit-z-push-button-8/ images/thermofloor/Heatit-Z-Push-button-8-white.png - https://www.heatit.com/wp-content/uploads/2019/07/Manual_Heatit_Z-Push_Button_8_FW_1.26_Ver2019-A_ENG.pdf + https://www.thermo-floor.no/media/multicase/documents/_tfasdokumentasjon/heatit%20controls/heatit%20z-push%20button/manual_heatit_z-push_button_8_fw_1.26_ver2019-a_eng.pdf short press any button set controller in inclusion mode press and hold down group 2 keys for 3 seconds set controller in exclusion mode press and hold down group 2 keys for 3 seconds @@ -17,6 +17,7 @@ 45 125 81 (white) 45 126 81 (black) Made config from manual and zwave alliance + Removed auto include controller to Association Groups @@ -33,10 +34,10 @@ - - - - + + + + diff --git a/config/thermofloor/heatitzm.xml b/config/thermofloor/heatitzm.xml new file mode 100644 index 0000000000..a249dc9bf2 --- /dev/null +++ b/config/thermofloor/heatitzm.xml @@ -0,0 +1,95 @@ + + + Heatit ZM Single Relay 16A + Heatit ZM Single Relay is a high power relay for in-wall installations. + The relay allows you to control connected devices either through your Z-Wave network or via a wired switch. The module is equipped with a 16A relay and has a scene controller functionality. + + The device can withstand a load of max 16A /3600W at 230VAC. + + The Heatit ZM Single Relay has a power metering feature that allows you to monitor the power consumption of your connected devices. + http://www.openzwave.com/device-database/019B:3500:0004 + https://products.z-wavealliance.org/products/4062/ + images/thermofloor/heatitzm.png + ZM Single Relay 16A + Tripple Click the button + CEPT (Europe) + Tripple Click the button + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/4062/Manual_Heatit%20ZM%20Single%20Relay%2016A_Ver%202020-A_ENG.pdf + This device allows reset without any involvement of a Z-Wave controller. + + Initial version + Multiline help texts revised + + + + + Ensures that the device does not draw more current than rated. Immunity for power consumption peaks + + + + Decide how the device should react when the overload/overheating features has turned relay OFF: + 0 - Disabled and will not retry. User needs to manually turn on afterwards. If temperature overload is on, device will not turn on until device has cooled down + >= 1 - After power shut down (param 1) device will try to turn back ON after delay specified here. (Time in minutes) + + + + Momentary or toggle switch + + + + + S1 button operation + + + + + Decides if/what scene controller notifications the device sends to gateway + + + + + + + + Relay power level after power is restored from power-outage. + When device is from factory/factory reset the first state of the device should be OFF + + + + + + + + 0 for auto off disabled (default) + 1-86400 for auto-off timeout in seconds + + + + + 0 for auto on disabled (default) + 1-86400 for auto-on timeout in seconds + + + + Decides if the relay output should be inverted + + + + + Time interval between consecutive meter reports. Meter reports can also be sent as a result of polling + + + Meter report delta value + + + + + + + + + + + + + diff --git a/config/wenzhou/tz77.xml b/config/wenzhou/tz77.xml new file mode 100644 index 0000000000..a276f307a4 --- /dev/null +++ b/config/wenzhou/tz77.xml @@ -0,0 +1,33 @@ + + + + images/wenzhou/tz77.png + RGBW Dimmer Switch + 1) Have Z-Wave controller with exclusion mode; 2) Press the on/off button three times within 1.5 seconds to be excluded from the controller + 1) Have Z-Wave controller with inclusion mode; 2) Press the on/off button three times within 1.5 seconds to be included to the controller + TZ77 + This insert switch module is a transceiver which is a Z-Wave enabled device and is fully compatible with any Z-Wave enabled network. Remote on/off control of the connected load is possible with other manufacturer's wireless controller. Each switch is designed to act as a repeater. + CEPT (Europe) + + Created + Fixed index of config variables + + + + + + + Change the state of indicator light. Default status of socket: LED is on as indicator when the load is off. + + + Socket status when powered on. Default with memory: the socket status is same as before when power on + + + + + + + + + + diff --git a/config/zooz/zen16.xml b/config/zooz/zen16.xml index 847a48ca69..82e4f79f48 100644 --- a/config/zooz/zen16.xml +++ b/config/zooz/zen16.xml @@ -1,5 +1,5 @@ - + Multirelay PRODUCT FEATURES: @@ -38,6 +38,7 @@ SPECIFICATIONS: Initial Metadata Import Updated for firmware version 1.02 + Updated for firmware version 1.03 @@ -153,6 +154,29 @@ SPECIFICATIONS: + + Decide whether you'd like Relay 1 to be normally open (NO) or normally closed (NC). Default normally open. + + + + + + Decide whether you'd like Relay 2 to be normally open (NO) or normally closed (NC). Default normally open. + + + + + + Decide whether you'd like Relay 3 to be normally open (NO) or normally closed (NC). Default normally open. + + + + + + Sync Relay 1 and Relay 2 together to prevent them from being activated at the same time. Default disabled. + + + diff --git a/config/zooz/zen17.xml b/config/zooz/zen17.xml new file mode 100644 index 0000000000..1784b85e27 --- /dev/null +++ b/config/zooz/zen17.xml @@ -0,0 +1,132 @@ + + + Zooz ZEN17 Universal Relay + + http://www.openzwave.com/device-database/027a:a00a:7000 + + + images/zooz/zen17.png + + + Click the button on top of the device 3x quickly + Click the button on top of the device 3x quickly + Click the button on top of the device 4x quickly, the LED indicator will light up, then quickly click the button 4x again. The LED indicator will flash 3x to confirm successful reset and will then turn off. + + + U.S. / Canada / Mexico + ZEN17 + + Initial configuration from Zooz + fix param size error + + + + + + + Set the on off status for the relays after power failure + + + + + + + + Choose the wall switch or input type you want to connect to the S1 C terminals. Important: If you set this parameter to value 4-10, you'll need to exclude and re-include the device (without changing any settings) so that a child device is created for the input of your choice) + + + + + + + + + + + + + + Choose the wall switch or input type you want to connect to the S1 C terminals. Important: If you set this parameter to value 4-10, you'll need to exclude and re-include the device (without changing any settings) so that a child device is created for the input of your choice) + + + + + + + + + + + + + + Choose if you want the LED indicator to turn on when any of the relays are on or if all of them are off, or if you want it to remain on or off at all times. + + + + + + + Use this parameter to set the time after which you want the device connected to relay 1 to automatically turn off once it has been turned on. The number entered as value corresponds to the unit type set by parameter 15 (minutes, seconds or hours) + + + Use this parameter to set the time after which you want the device connected to relay 1 to automatically turn on once it has been turned off. The number entered as value corresponds to the unit type set by parameter 16 (minutes, seconds or hours) + + + Use this parameter to set the time after which you want the device connected to relay 2 to automatically turn off once it has been turned on. The number entered as value corresponds to the unit type set by parameter 17 (minutes, seconds or hours) + + + Use this parameter to set the time after which you want the device connected to relay 2 to automatically turn on once it has been turned off. The number entered as value corresponds to the unit type set by parameter 18 (minutes, seconds or hours) + + + Choose if you'd like the connected input(switch) on S1 C / VC C to trigger the load connected to R1 or if you want to use the input reports for monitoring only and separate the output from the input. + + + + + Choose if you'd like the connected input(switch) on S2 C / VC C to trigger the load connected to R2 or if you want to use the input reports for monitoring only and separate the output from the input. + + + + + Choose between seconds, minutes and hours as the unit for the auto turn-off timer for relay 1 (parameter 6) + + + + + + Choose between seconds, minutes and hours as the unit for the auto turn-on timer for relay 1 (parameter 7) + + + + + + Choose between seconds, minutes and hours as the unit for the auto turn-off timer for relay 2 (parameter 8) + + + + + + Choose between seconds, minutes and hours as the unit for the auto turn-on timer for relay 2 (parameter 9) + + + + + + Sync R1 and R2 together to prevent them from being activated at the same time. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/zooz/zen23v3.xml b/config/zooz/zen23v3.xml index 8af76191ef..5ab2bb29ae 100644 --- a/config/zooz/zen23v3.xml +++ b/config/zooz/zen23v3.xml @@ -1,4 +1,4 @@ - + ZEN23 Toggle Switch V3 Product features: @@ -50,6 +50,7 @@ tap-tap-tap-and-hold: factory reset ZEN23v3 Initial configuration from Zooz product help pages + Correct typo of Parameter 19 to Parameter 12 @@ -118,7 +119,7 @@ tap-tap-tap-and-hold: factory reset - + Choose the type of 3-way switch you want to use in a 3-way set-up. diff --git a/config/zooz/zen24v2.xml b/config/zooz/zen24v2.xml index fb2943846d..3fc6437a7e 100644 --- a/config/zooz/zen24v2.xml +++ b/config/zooz/zen24v2.xml @@ -1,4 +1,4 @@ - + ZEN24 Dimmer Switch V2 Product features: @@ -52,6 +52,8 @@ tap-tap-tap-and-hold: factory reset ZEN24v2 Initial configuration from Zooz product help pages + Fix minimum value for parameter 9 + Fix maximum value for parameter 15 @@ -104,7 +106,7 @@ tap-tap-tap-and-hold: factory reset - + Adjust the physical ramp rate for your dimmer (fade-in / fade-out effect for on / off operation). Values correspond to the number of seconds it take for the dimmer to reach full brightness or turn off when operated manually. This setting is for physical taps only, see parameter 17 to adjust Z-Wave ramp rate. Values: 1 – 99 (seconds). 0 – instant on/off. Default: 1 @@ -129,11 +131,11 @@ tap-tap-tap-and-hold: factory reset - + Enable or disable manual on/off control. If enabled, you’ll only be able to control the connected light via Z-Wave. Scenes and other functionality will still be available through the physical switch. - + Set the time it takes to get from 0% to 100% brightness when pressing and holding the toggle (physical dimming). The number entered as value corresponds to the number of seconds. Default 4. diff --git a/config/zooz/zen32.xml b/config/zooz/zen32.xml new file mode 100644 index 0000000000..3bbe69712c --- /dev/null +++ b/config/zooz/zen32.xml @@ -0,0 +1,172 @@ + + + Zooz ZEN32 Scene Controller + + http://www.openzwave.com/device-database/027a:a008:7000 + + + images/zooz/zen32.png + + + Click the large button 3 times quickly. + Click the large button 3 times quickly. + + + + U.S. / Canada / Mexico + ZEN32 + + Initial configuration from Zooz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn off once it has been turned on. + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + + + + + + + + + + + + + + + + + + Choose the type of 3-way switch you want to use with this switch in a 3-way set-up. + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/zooz/zen34.xml b/config/zooz/zen34.xml index 3f9d3d244c..2a0e655e9d 100644 --- a/config/zooz/zen34.xml +++ b/config/zooz/zen34.xml @@ -1,6 +1,6 @@ - + - ZEN34 Remote switch + ZEN34 Remote Switch FEATURES: - Control Z-Wave devices or activate scenes with the multi-tap feature - Wire-free: the perfect add-on switch to put in an existing switch box or install on any flat surface @@ -24,14 +24,20 @@ SPECIFICATIONS: https://opensmarthouse.org/zwavedatabase/1310/reference/zooz-zen34-manual-curves.pdf Put the primary controller into inclusion mode and click the upper paddle 6 times quickly. The LED indicator will blink blue during the process and light up green once added successfully. It will light up red if failed. Put the primary controller into exclusion mode and click the lower paddle 6 times quickly. - Click the upper paddle 7 times quickly. The LED indicator will stay siolid blue during wakeup and will turn off when the device turns the Z-Wave radio off again. + Click the upper paddle 7 times quickly. The LED indicator will stay solid blue during wakeup and will turn off when the device turns the Z-Wave radio off again. When your network's primary controller is missing or otherwise inoperable, you may need to reset the device to factory settings manually. In order to complete the process, make sure the device is powered, then taptap- tap'and'hold the upper paddle. The LED indicator will blink red 5 times to indicate successful reset. + ZEN34 + U.S. / Canada / Mexico https://products.z-wavealliance.org/products/xxxx - U.S. / Canada / Mexico - ZEN-34 + ZEN34 + U.S. / Canada / Mexico + https://products.z-wavealliance.org/products/xxxx + Initial Metadata Import + Update to include hardware run with different type code + Fix small typo diff --git a/config/zooz/zen71.xml b/config/zooz/zen71.xml new file mode 100644 index 0000000000..5b8c7e5089 --- /dev/null +++ b/config/zooz/zen71.xml @@ -0,0 +1,142 @@ + + + Zooz ZEN71 On Off Switch + FEATURES: +- Control lights from the wall switch or wirelessly with Z-Wave +- On / off only for instant switching (get the dimmer here) +- NEW in 700 series: smaller profile (just 1.1" deep) to fit easily in a crowded or shallow box; replaceable paddles (almond, brown, and black paddle kits available) +- 700 chip: more range, faster signal, SmartStart inclusion + S2 security +- Direct 3-Way Solution: no add-on switch needed, wires just like the ZEN21 model (Neutral required, 4-Way wiring possible if direct connection to load and line are in the same box, check before buying) +- Works well in simple single pole installations +- Adjustable LED indicator: choose the color and brightness that works for you! +- Built-in range test tool: diagnose network issues straight from your switch +- Scene control available on hubs that support multi-tap triggers* +- Smart bulb mode: disable the relay for truly wireless control or use as a remote control / smart add-on switch +- Restores on/off status after power failure +- Compatible with LED, CFL, and incandescent bulbs (don't connect to tube lights or fans over 3A / 5 years old) +- Stronger repeater to boost your Z-Wave network + +SPECIFICATIONS: +- Z-Wave Frequency: 908.42 MHz (US) +- Power: 120 VAC, 60 Hz +- Maximum Loads: 960W Incandescent, 150W LED and CFL bulbs, 1800W (15A) Resistive, 3A fan motors +- Z-Wave Range: Up to 200 feet line of sight between the Wireless Controller and the closest Z-Wave receiver module +- Operating Temperature: 32-104° F (0-40° C) +- Installation: Indoor use only + +MANUAL CONTROL: +Upper Paddle: +1 x tap: load on; Scene 1, attribute 00 +2 x tap: Scene 1, attribute 03 +3 x tap: enter inclusion (pairing) mode (only if the switch is not included to the hub); Scene 1, attribute 04 +4 x tap: Scene 1, attribute 05 +5 x tap: Scene 1, attribute 06 +6 x tap: change LED indicator mode (see parameter 2) +held: Scene 1, attribute 01 +released: Scene 1, attribute 02 + +Lower Paddle: +1 x tap: load off; Scene 2, attribute 00 +2 x tap: Scene 2, attribute 03 +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 +4 x tap: Scene 2, attribute 05 +5 x tap: Scene 2, attribute 06 +held: Scene 2, attribute 01 +released: Scene 2, attribute 02 +held for 10 seconds (LED indicator starts blinking): enter the setting menu >> 5 x tap down for factory reset; 5 x tap up to change LED bulb mode (see parameter 11); 2 x tap down to enable the range test tool. + http://www.openzwave.com/device-database/027a:a001:7000 + https://www.thesmartesthouse.com/products/zooz-700-series-z-wave-plus-on-off-light-switch-zen71 + https://www.support.getzooz.com/kb/section/190/ + images/zooz/zen71.png + https://cdn.shopify.com/s/files/1/0218/7704/files/zooz-700-series-switch-zen71-manual.pdf + + Click the upper paddle 3 times quickly. The LED indicator will blink blue during the process and light up green once added successfully. It will light up red if failed. + Click the lower paddle 3 times very quickly. + Press and hold the lower paddle for 10 seconds until the LED indicator starts blinking. Release paddle, and immediately after, tap the lower paddle 5 times to complete the reset. The LED indicator will flash blue 3 times and turn red for 3 seconds to confirm successful reset. + + + U.S. / Canada / Mexico + ZEN71 + + Initial configuration from Zooz (firmware 1.01) + + + + + + + Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse mode: Upper paddle turns the light off, lower paddle turns the light on. Toggle mode: Either paddle toggles the light. + + + + + + LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn off once it has been turned on. + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Status after power failure. Off: always turn light off. On: always turn light on. Restore: remember the latest state and restore that state. + + + + + + Enable or disable scene control functionality for quick double tap triggers. + + + + + Enable or disable local on/off control. If enabled, you’ll only be able to control the connected light via Z-Wave. Scenes and other functionality will still be available through paddles. + + + + + + Choose the type of 3-way switch you want to use with this switch in a 3-way set-up. + + + + + Set reporting behavior for disabled physical control. + + + + + Choose the color of the LED indicator. + + + + + + + Choose the LED indicator's brightness level. + + + + + + Choose how the switch reports its status back to the hub. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/zooz/zen72.xml b/config/zooz/zen72.xml new file mode 100644 index 0000000000..0b861b3860 --- /dev/null +++ b/config/zooz/zen72.xml @@ -0,0 +1,173 @@ + + + + Zooz ZEN72 Dimmer Switch + Product features: +- Full brightness control of your lights, from the physical dimmer and via Z-Wave when added to your smart home hub (sold separately) +- Works with any dimmable LED bulb that accepts triac (forward-phase) dimmers up to 150 W total and with any incandescent bulbs up to 500 W. NOT COMPATIBLE WITH LUMINUS, LITHONIA, OR FEIT BULBS. +- NEW in 700 series: smaller in the back so it fits easier in shallow or crowded boxes; replace the standard white paddles with almond, brown, or black paddles (sold separately). +- NEW 700 chip: the latest S2 security, SmartStart for instant pairing and more Z-Wave coverage than ever! +- Direct 3-Way Solution: connects to an existing light switch for 2-point control, no add-on switch necessary! Wires just like the ZEN22 model. Neutral wire required, on/off control only from the secondary switch, use in 4-way installations only if you have direct connection to load and line in one box. +- Scene control: multi-tap triggers available on select hubs* +- Night Light Mode: press and hold the lower paddle when dimmer is off to turn the light on to low brightness +- Double tap to full brightness: now fully adjustable double tap and single tap behavior* +- Fully adjustable ramp rate* +- Don't use with fan motors, receptacles, or tube lights! +- Stronger signal repeater for a more reliable Z-Wave network +- Choose the color and brightness level of the LED indicator* +SPECIFICATIONS: +- Model Number: ZEN72 +- Z-Wave Frequency: 908.42 MHz (US) +- Power: 120 VAC, 60 Hz +- Maximum Loads: 500W Incandescent, 150W LED +- Range: Up to 200 feet line of sight +- Operating Temperature: 32-104° F (0-40° C) +- Installation and Use: Indoor only +https://www.support.getzooz.com/kb/article/538-zen72-dimmer-switch-700-ver-1-02-advanced-settings/ + +MANUAL CONTROL +Upper Paddle: +1 x tap: load on to last / custom / full / max brightness; Scene 1, attribute 00 +2 x tap: on to full / max / custom brightness; Scene 1, attribute 03 +3 x tap: enter inclusion (pairing) mode (only if not included to Z-Wave network); Scene 1, attribute 04 +4 x tap: Scene 1, attribute 05 +5 x tap: Scene 1, attribute 06 +6 x tap: change LED indicator mode (see parameter 2) +press and hold: increase brightness level; Scene 1, attribute 01 +release: Scene 1, attribute 02 +Lower Paddle: +1 x tap: load off; Scene 2, attribute 00 +2 x tap: Scene 2, attribute 03 +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 +4 x tap: Scene 2, attribute 05 +5 x tap: Scene 2, attribute 06 +press and hold: decrease brightness level; Scene 2, attribute 01 +press and hold when off: turn on to 20% brightness (night light mode) +release: Scene 2, attribute 02 +held for 10 seconds (LED indicator starts blinking): enter the setting menu, 5 x tap down for factory reset; 5 x tap up to change LED bulb mode (see parameter 11); 2 x tap down to enable the range test tool. + http://www.openzwave.com/device-database/027a:a002:7000 + https://www.thesmartesthouse.com/collections/light-switches/products/zooz-700-series-z-wave-plus-dimmer-zen72 + https://www.support.getzooz.com/kb/section/195/ + images/zooz/zen72.png + https://cdn.shopify.com/s/files/1/0218/7704/files/zooz-700-series-z-wave-dimmer-zen72-manual.pdf + 1. Initiate inclusion (pairing) in the app (or web interface) of your hub. 2. Tap the upper paddle on the switch 3 times quickly. + 1. Bring your Z-Wave gateway (hub) close to the switch if possible 2. Put the Z-Wave hub into exclusion mode (not sure how to do that? ask@getzooz.com) 3. Tap the lower paddle on the switch 3 times quickly + If your primary controller is missing or inoperable, you may need to reset the device to factory settings. To complete the reset process manually, tap-tap-tap’n’hold the upper paddle for at least 10 seconds. The LED indicator will flash to confirm successful reset. NOTE: All previously recorded activity and custom settings will be erased from the device’s memory. + U.S. / Canada / Mexico + ZEN72 + + Initial Copy from ZEN27, not yet available on ZWAlliance website + Reorganize metadataitem entries, correct ProductPic, add missing metadataitems and start revision at 1 + Fix a few configuration parameters for auto off/on timer. + + + + + + Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse mode: Upper paddle turns the light off, lower paddle turns the light on. Toggle mode: Either paddle toggles the light. + + + + + + LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. + + + + + + + Choose the color of the LED indicator. Default: Blue + + + + + + + Choose the brightness of the LED indicator. Default: Medium + + + + + + Set the time (in minutes) after which you want the switch to automatically turn off once it has been turned on. + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Status after power failure. Off: always turn light off. On: always turn light on. Restore: remember the latest state and restore that state. + + + + + + Adjust the physical ramp rate for your dimmer (fade-in / fade-out effect for on / off operation). Values correspond to the number of seconds it take for the dimmer to reach full brightness or turn off when operated manually. This setting is for physical taps only, see parameter 17 to adjust Z-Wave ramp rate. Values: 1 – 99 (seconds). 0 – instant on/off. Default: 1 + + + Set the minimum brightness level (in %) for your dimmer. You won't be able to dim the light below the set value. + + + Set the maximum brightness level (in %) for your dimmer. You won't be able to add brightness to the light beyond the set value. Note: if Parameter 12 is set to value "Full", Parameter 11 is automatically disabled. + + + Upper Paddle Double-Tap action. When set to Full, turns light on to 100%. When set to Custom Level, the light will turn on to custom brightness elvel set in Parameter 18. If set to Maximum Level, turns light on to % set in Parameter 11. Disable will disable the double tap feature. + + + + + + + Upper Paddle Single-Tap action. When set to Full, turns light on to 100%. When set to Custom Level, the light will turn on to custom brightness elvel set in Parameter 18. If set to Maximum Level, turns light on to % set in Parameter 11. If set to Last, turns light on to last brightness level (default). + + + + + + + Enable or Disable scene control functionality for quick double tap triggers. + + + + + Enable or disable local on/off control. If enabled, you’ll only be able to control the connected light via Z-Wave. Scenes and other functionality will still be available through paddles. NOTE: hold the lower paddle for 10 seconds until the LED indicator starts blinking, then within 2 seconds, tap the upper paddle 5 times quickly to change this mode. The LED indicator will stay solid green for 3 seconds to confirm the change. + + + + + + Set the time it takes to get from 0% to 100% brightness when pressing and holding the paddle (physical dimming). The number entered as value corresponds to the number of seconds. Default: 4 + + + Set the custom brightness level (instead of the last set brightness level) you want the dimmer to come on to when you single tap the upper paddle. Default: 0 - last brightness level + + + Choose how you'd like the dimmer to report when paddles are tapped and held and physical / Z-Wave control is enabled or disabled. + + + + + Choose the type of 3-way switch you want to use with this dimmer in a 3-way set-up. Changing this setting can allow you to control brightness and dim the light from both 3-way locations. Use a regular momentary switch (like the Zooz ZAC99 accessory switch) if value is set to 2. + + + + + + + Set reporting behavior for disabled physical control. + + + + + Set the brightness level the dimmer will turn on to when off and when lower paddle is held DOWN for a second. Default: 20 + + + + + + + + + + + diff --git a/config/zooz/zen76.xml b/config/zooz/zen76.xml new file mode 100644 index 0000000000..5de4dd3a96 --- /dev/null +++ b/config/zooz/zen76.xml @@ -0,0 +1,140 @@ + + + Zooz ZEN76 S2 On Off Switch + FEATURES: +- Control your lights from the switch and via Z-Wave +- Use with LED or incandescent lighting only: do NOT connect to switched receptacles, fans, or tube lights +- NEW in 700 series: slimmer switch to fit shallow and crowded boxes (just 1.1" deep); almond, brown, and black paddles available (basic version comes in white) +- NEW 700 chip: SmartStart inclusion, S2 security, more range than ever and super fast communication! +- Simple Direct 3-Way or 4-Way: Still no add-on and use it in larger set-ups for multi-point control. Wires like the ZEN26 model with quicker and easy installation guaranteed. (Neutral wire required) +- Scene Control on hubs that support multi-tap triggers* +- Program the LED indicator with custom color and brightness level that fits your needs* +- Smart range test mode: troubleshoot communication issues right from your switch +- Immediate on/off status reports +- Smart LED indicator makes pairing and set-up more intuitive (now control the LED mode with 6 clicks of any paddle!) +- Restores status after power failure + +SPECIFICATIONS: +- Model Number: ZEN76 +- Z-Wave Signal Frequency: 908.42 MHz (US) +- Power: 120 VAC, 60 Hz +- Range: Up to 200 feet line of sight +- Operating Temperature: 32-104° F (0-40° C) +- Installation: Indoor use only + +MANUAL CONTROL: +Upper Paddle: +1 x tap: load on; Scene 1, attribute 00 +2 x tap: Scene 1, attribute 03 +3 x tap: enter inclusion (pairing) mode (only if the switch is not included to the hub); Scene 1, attribute 04 +4 x tap: Scene 1, attribute 05 +5 x tap: Scene 1, attribute 06 +6 x tap: change LED indicator mode (see parameter 2) +held: Scene 1, attribute 01 +released: Scene 1, attribute 02 + +Lower Paddle: +1 x tap: load off; Scene 2, attribute 00 +2 x tap: Scene 2, attribute 03 +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 +4 x tap: Scene 2, attribute 05 +5 x tap: Scene 2, attribute 06 +held: Scene 2, attribute 01 +released: Scene 2, attribute 02 +held for 10 seconds (LED indicator starts blinking): enter the setting menu >> 5 x tap down for factory reset; 5 x tap up to change LED bulb mode (see parameter 11); 2 x tap down to enable the range test tool. + http://www.openzwave.com/device-database/027a:a006:7000 + https://www.thesmartesthouse.com/products/zooz-700-series-z-wave-plus-s2-on-off-wall-switch-zen76 + https://www.support.getzooz.com/kb/section/207 + images/zooz/zen76.png + https://cdn.shopify.com/s/files/1/0218/7704/files/zooz-700-series-z-wave-plus-s2-switch-zen76-manual.pdf + + Click the upper paddle 3 times quickly. The LED indicator will blink blue during the process and light up green once added successfully. It will light up red if failed. + Click the lower paddle 3 times very quickly. + Press and hold the lower paddle for 10 seconds until the LED indicator starts blinking. Release paddle, and immediately after, tap the lower paddle 5 times to complete the reset. The LED indicator will flash blue 3 times and turn red for 3 seconds to confirm successful reset. + + + U.S. / Canada / Mexico + ZEN76 + + Initial configuration from Zooz; firmware 1.01 + + + + + + + Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse mode: Upper paddle turns the light off, lower paddle turns the light on. Toggle mode: Either paddle toggles the light. + + + + + + LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn off once it has been turned on. + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Status after power failure. Off: always turn light off. On: always turn light on. Restore: remember the latest state and restore that state. + + + + + + Enable or disable scene control functionality for quick double tap triggers. + + + + + Enable or disable local on/off control. If enabled, you’ll only be able to control the connected light via Z-Wave. Scenes and other functionality will still be available through paddles. + + + + + + Choose the type of 3-way switch you want to use with this switch in a 3-way set-up. + + + + + Set reporting behavior for disabled physical control. + + + + + Choose the color of the LED indicator. + + + + + + + Choose the LED indicator's brightness level. + + + + + + Choose how the switch reports its status back to the hub. + + + + + + + + + + + + + + + diff --git a/config/zooz/zen77.xml b/config/zooz/zen77.xml new file mode 100644 index 0000000000..e1e515966d --- /dev/null +++ b/config/zooz/zen77.xml @@ -0,0 +1,177 @@ + + + Zooz ZEN77 S2 Dimmer Switch + FEATURES: +- Use with LED bulbs up to 100 W or incandescent bulbs up to 300 W (do NOT connect to tube lights, fans, switched receptacles, or CFL bulbs) +- NEW in 700 series: smaller form factor, fits better in shallow or crowded boxes (just 1.1" deep); get it with almond, brown, or black paddles (sold separately, basic version comes in white) +- NEW 700 chip: the latest S2 security, SmartStart for easy pairing and faster communication with better Z-Wave range! +- Simple Direct 3-Way or 4-Way: Less rewiring for more multi-point control scenarios like 4-ways and 5-ways where load and line are in separate boxes. Use it the same way as the ZEN27 dimmer. Neutral wire required. +- Night Light Mode: press and hold the lower paddle when dimmer is off to turn the light on to low brightness +- Scene Control (select hubs only): activate scenes and trigger other devices with multi-tap* +- You choose the color and brightness level of the LED indicator* +- Programmable double tap and single tap for truly customized control* +- Adjustable ramp rate and maximum/minimum brightness levels* +- OTA firmware updates for a future-proof device +- Signal repeater will make your Z-Wave network more reliable + +SPECIFICATIONS: +- Z-Wave Frequency: 908.42 MHz (US) +- Power: 120 VAC, 60 Hz +- Maximum Load: 100 W LED/CFL, 300 W incandescent +- Z-Wave Range: Up to 200 feet line of sight +- Operating Temperature: 32-104° F (0-40° C) +- Installation: Indoor use only +https://www.support.getzooz.com/kb/article/550-zen77-s2-dimmer-700-advanced-settings/ + +MANUAL CONTROL: +Upper Paddle: +1 x tap: load on to last / custom / full / max brightness; Scene 1, attribute 00 +2 x tap: on to full / max / custom brightness; Scene 1, attribute 03 +3 x tap: enter inclusion (pairing) mode (only if not included to Z-Wave network); Scene 1, attribute 04 +4 x tap: Scene 1, attribute 05 +5 x tap: Scene 1, attribute 06 +6 x tap: change LED indicator mode (see parameter 2) +press and hold: increase brightness level; Scene 1, attribute 01 +release: Scene 1, attribute 02 + +Lower Paddle: +1 x tap: load off; Scene 2, attribute 00 +2 x tap: Scene 2, attribute 03 +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 +4 x tap: Scene 2, attribute 05 +5 x tap: Scene 2, attribute 06 +press and hold: decrease brightness level; Scene 2, attribute 01 +press and hold when off: turn on to 20% brightness (night light mode) +release: Scene 2, attribute 02 +held for 10 seconds (LED indicator starts blinking): enter the setting menu >> 5 x tap down for factory reset; 5 x tap up to change LED bulb mode (see parameter 11); 2 x tap down to enable the range test tool. + http://www.openzwave.com/device-database/027a:a007:7000 + https://www.thesmartesthouse.com/products/zooz-700-series-z-wave-plus-s2-dimmer-switch-zen77 + https://www.support.getzooz.com/kb/section/208/ + images/zooz/zen77.png + https://cdn.shopify.com/s/files/1/0218/7704/files/zooz-700-series-z-wave-plus-s2-dimmer-zen77-manual.pdf + + Click the upper paddle 3 times quickly. The LED indicator will blink blue during the process and light up green once added successfully. It will light up red if failed. + Click the lower paddle 3 times very quickly. + Press and hold the lower paddle for 10 seconds until the LED indicator starts blinking. Release paddle, and immediately after, tap the lower paddle 5 times to complete the reset. The LED indicator will flash blue 3 times and turn red for 3 seconds to confirm successful reset. + + + U.S. / Canada / Mexico + ZEN77 + + Initial configuration from Zooz; firmware 1.02 + + + + + + + + Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse mode: Upper paddle turns the light off, lower paddle turns the light on. Toggle mode: Either paddle toggles the light. + + + + + + LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. + + + + + + + Choose the color of the LED indicator. Default: Blue + + + + + + + Choose the brightness of the LED indicator. Default: Medium + + + + + + Set the time (in minutes) after which you want the switch to automatically turn off once it has been turned on. + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Status after power failure. Off: always turn light off. On: always turn light on. Restore: remember the latest state and restore that state. + + + + + + Adjust the physical ramp rate for your dimmer (fade-in / fade-out effect for on / off operation). Values correspond to the number of seconds it take for the dimmer to reach full brightness or turn off when operated manually. This setting is for physical taps only, see parameter 17 to adjust Z-Wave ramp rate. Values: 1 – 99 (seconds). 0 – instant on/off. Default: 1 + + + Set the minimum brightness level (in %) for your dimmer. You won't be able to dim the light below the set value. + + + Set the maximum brightness level (in %) for your dimmer. You won't be able to add brightness to the light beyond the set value. Note: if Parameter 12 is set to value "Full", Parameter 11 is automatically disabled. + + + Upper Paddle Double-Tap action. When set to Full, turns light on to 100%. When set to Custom Level, the light will turn on to custom brightness elvel set in Parameter 18. If set to Maximum Level, turns light on to % set in Parameter 11. Disable will disable the double tap feature. + + + + + + + Upper Paddle Single-Tap action. When set to Full, turns light on to 100%. When set to Custom Level, the light will turn on to custom brightness elvel set in Parameter 18. If set to Maximum Level, turns light on to % set in Parameter 11. If set to Last, turns light on to last brightness level (default). + + + + + + + Enable or Disable scene control functionality for quick double tap triggers. + + + + + Enable or disable local on/off control. If enabled, you’ll only be able to control the connected light via Z-Wave. Scenes and other functionality will still be available through paddles. NOTE: hold the lower paddle for 10 seconds until the LED indicator starts blinking, then within 2 seconds, tap the upper paddle 5 times quickly to change this mode. The LED indicator will stay solid green for 3 seconds to confirm the change. + + + + + + Set the time it takes to get from 0% to 100% brightness when pressing and holding the paddle (physical dimming). The number entered as value corresponds to the number of seconds. Default: 4 + + + Set the custom brightness level (instead of the last set brightness level) you want the dimmer to come on to when you single tap the upper paddle. Default: 0 - last brightness level + + + Choose how you'd like the dimmer to report when paddles are tapped and held and physical / Z-Wave control is enabled or disabled. + + + + + Choose the type of 3-way switch you want to use with this dimmer in a 3-way set-up. Changing this setting can allow you to control brightness and dim the light from both 3-way locations. Use a regular momentary switch (like the Zooz ZAC99 accessory switch) if value is set to 2. + + + + + + + Set reporting behavior for disabled physical control. + + + + + Set the brightness level the dimmer will turn on to when off and when lower paddle is held DOWN for a second. Default: 20 + + + + + + + + + + + + + diff --git a/cpp/build/testconfigversions.cfg b/cpp/build/testconfigversions.cfg index 3ec263c8f8..6ec0702840 100644 --- a/cpp/build/testconfigversions.cfg +++ b/cpp/build/testconfigversions.cfg @@ -292,8 +292,8 @@ 'md5' => 'eda5882a0b1e3f78c95e51496307d1867a1b3dc756a0b24f705155a3a1996659e67b6af65e60bd4b800548b4b1b6bb57ff591140f2062027545612efbf2a3cfa' }, 'config/aeotec/zw095.xml' => { - 'Revision' => 5, - 'md5' => '64029aa66434ff853d0f5b54dbab6c5ab5039f9307474a6a28bd2405fe318c98f4d3fda8a718fdbc9d8765f8ce7625f6b0f9d245491f90b3559144dc9535fe0b' + 'Revision' => 6, + 'md5' => '2e61f67c818ce40e29881dfc21ac53d6fc51b650d8394a615c02221664d47d53882a967581943faf9fd1b67f9c64ead25d0dee1d50ffc4893876c328ef449f35' }, 'config/aeotec/zw096.xml' => { 'Revision' => 8, @@ -312,8 +312,8 @@ 'md5' => 'c4775cc1e44d3580cf6cadede3c1dca34dc94d9cb573888775ded7da5f224035853690d715ce8c7de0031d1e5df637d0da1ff7c1c86957755f09b65bcd4677f5' }, 'config/aeotec/zw100.xml' => { - 'Revision' => 24, - 'md5' => 'd7844707b29f8fe526d94aca4b1a47a26a3639e8d4a681199bb2775024d2f273c7be634cba65062d1ba2000803491af6aa654bcf33969e7ab870ffc80ce6f673' + 'Revision' => 25, + 'md5' => '3260a03fd6b6656d02ce4d70755e72cd7af35b0e1ed1c95efed230c8ee7d5bc13443092e031977d114efad81e43b35af53ba965b9c12b6a8e5c30b1e4fc59b02' }, 'config/aeotec/zw111.xml' => { 'Revision' => 8, @@ -364,8 +364,8 @@ 'md5' => 'b64f170b079ae1340bd4a74ef3a88f0cdf66281fa28d656b46f408b183d04c8e6a67f584f90dd6f8b2aa1fc2b2039e32b936f6f947394d28002b3d3a2a47cadb' }, 'config/aeotec/zw141.xml' => { - 'Revision' => 7, - 'md5' => '3707dc66d31c2b7b68d3067021825beb48e00aaf04802a8b5f69dbccb2e1228cb0fa10ea71e3fe1f4ce2f1ac92958504fe3200552f8daca10024da401d9bb7ea' + 'Revision' => 8, + 'md5' => '06b71d604f18c6a9a1dc5f7dd9ed31e561ad406814d96e2b2cf5d7242db12fc19ca5cea9d15901f8d22050fbdf9eb33c21099feacf53f692418d3f517fb27961' }, 'config/aeotec/zw162.xml' => { 'Revision' => 8, @@ -419,6 +419,10 @@ 'Revision' => 1, 'md5' => 'dea1ef33d8f6ee2abbe83a0aabd9c9e22e4a9d86e0715f1ee90c8851ed135ff27521ddd6cc308cd09648e2aca4a498903054fd5ee66f3338098f9ce81fcef2f3' }, + 'config/aeotec/zwa011.xml' => { + 'Revision' => 1, + 'md5' => 'a67f8c997e6813f1772b4e980ad1580327d4f993fe007442580b9a37163bf732ddecd431fdd944e8d1f5841f9a55ad8cd43e4a5b5471709748b5974e7171e55e' + }, 'config/aeotec/zwa012.xml' => { 'Revision' => 1, 'md5' => 'bcfcf5d1a552ab8a8ac6ab7586f3de4cd7189d72a11e60bbad6b0038eb33f1d4acba164b625e7d8343b712aa27752fbe9f17f5ee9294ce82599e7abdf6c675f9' @@ -431,6 +435,10 @@ 'Revision' => 2, 'md5' => '1337565d4bb52206d7c29f16a04957d09e9f800da716907a5190841f6b69901f5fde754d7e9713d0ac97f2ef6ab7b563edb3f3fda6981e58757e5f2202ab50e0' }, + 'config/aeotec/zwa023.xml' => { + 'Revision' => 2, + 'md5' => '55f789365f3b8a4f1c84a44dc93cac26f2afff40963a4ea6dee8a69f9ca5b40d71d0ca73e5b9f6dd6a420d9f38c75bec5bd2b7800256d9d1169035b88e114315' + }, 'config/airlinemechanical/zds-ud10.xml' => { 'Revision' => 1, 'md5' => '028c79db0efa85f50283cb57a22462dac7d2e7024851b5d715ddb7f715d0012b8f993829ad542639294ab266b3017fb31a62ed8fec929dde8f401dd276dde67f' @@ -451,6 +459,10 @@ 'Revision' => 2, 'md5' => '4252c298eacb7e31a79c7c8fcee5e2d40b56d9bf865c8eeed53e3a29e8695508d38ffb83f558a41871e13af346c65cbdbc8a7de6caf7c5a1a67af59b5fb384b3' }, + 'config/assa_abloy/ProSLKey-FreeDeadbolt.xml' => { + 'Revision' => 2, + 'md5' => '7a6771adb77b2bbcb11fa6e74733ff064b87311b1530dbfb048bb167d03e5a1b3880ad2d5fa59977080cc3c3b37f3624f457095ebc5770d97d4cf258d68cf0fd' + }, 'config/assa_abloy/PushButtonDeadbolt.xml' => { 'Revision' => 7, 'md5' => 'a39dc67ada1bb3ea32c5be977f635cb4e5758e5006d54b84ef8cb9c8bb91a830718e94758b5701d07af4c17ec3c83a68af34069aaded0e9096f70311e15ae2c5' @@ -475,6 +487,10 @@ 'Revision' => 14, 'md5' => '72b0c1a02e59692b581f0f242a36b9c0c96f97d94217e7f391d219130f73df398abdc8370dcdffd74462d41b9aa1bf69498d0d04c3c147ed89a093970d25fef7' }, + 'config/assa_abloy/yrm276.xml' => { + 'Revision' => 1, + 'md5' => '85f0bb84ad6fc350a6e916a4931d91adc77427366f8394bf07de3c9ca1394bf5a5dce576d6a4dd107097017454e4397f800ac597bec7fee8047a69a1709b2d12' + }, 'config/august/asl-03.xml' => { 'Revision' => 2, 'md5' => 'c20731a4c1ed5261983c163c619c36085cab448344caa87203a45f89938678cd755708bf67bb0bc997bc61120051ae0355e4465f7e50a83420f4fc12e9752ac0' @@ -496,8 +512,8 @@ 'md5' => 'a0ca60110b50b83dd53ed869fbe3cfafef1bbb1aa22c5cf96a85208370c55554d7af20b5a24eab3f2c81e333b9dea81a1134596def6254d9067a6f7de45d2e99' }, 'config/cooper/RF9501.xml' => { - 'Revision' => 2, - 'md5' => '0d6d2fd4e186dce9e6883597e539ee7f7836eca827e561afd80952ba6d4da16a074670fa8e1415470d1a258de2ef006130002d320cc01da83b0508defd10f2b1' + 'Revision' => 3, + 'md5' => '3607a09ae6cfb895c99875d96250165cc78a6072c12bc381ffa206792599f0a646e835ef535084c128e528453e4a23430d2ac0a6797aab7e6f1c56b0103ae28b' }, 'config/cooper/RF9505-T.xml' => { 'Revision' => 4, @@ -508,13 +524,17 @@ 'md5' => '79e0f21a4292d455896bdb3b87401bfd6f405a6a2a795c8b77a4a01513aefeb17b72ed4595f3f84c2463f17b386bd1ecea67ebbe547e5f39472abeb3d831b805' }, 'config/cooper/RF9540-N.xml' => { - 'Revision' => 4, - 'md5' => '30fc6c2cafe6e5550434edd71cf088cbc51885be8ce518e09d2231775fe2882405f4b258880027b14d9e3231b4d4d4fe7d66fd3581d236c367ee72f632a6851c' + 'Revision' => 5, + 'md5' => 'ee02b6f5fdaac0c1eabb44e093fa59d4962443a5d0c1f151ee4f00e9bc219d4224dc93e423f7fb6ff7a1342717644f71a689b301cbf29aec4eef49879f5a51c1' }, 'config/cooper/RF9542-Z.xml' => { 'Revision' => 3, 'md5' => '9b2bcec41e4a46a2a2558960b03f5a3e66db60d40832542bffa053f49c0f08c70e64151d2619f1328df23089028a83ed70dc17af9125b2299443e237957ebbee' }, + 'config/cooper/RF9601.xml' => { + 'Revision' => 1, + 'md5' => '086da7deb18b8df7738a637822279549d2fe9618ebe7965c1d190fc83e0120e8050e1a2f9ec082b0b36bd5ee5589ce2d93e54d04c768238c5be40d88dd3dbd5e' + }, 'config/cooper/RFWC5.xml' => { 'Revision' => 2, 'md5' => '5e94896a472f7be22fe176de80f784d333bbf9a1afdcbed80094ecc1ae89c0b5cfcf47dc57731aa5312a87120b4d04934060ac3bf78aa39133118c6f1dc6d3a7' @@ -643,6 +663,10 @@ 'Revision' => 1, 'md5' => '5ccce24dbb0b56cc6e5e5bbebc24e05da07750a24f64dd66a6a5cd5aec7d79a0ae59f854af5f4b40cc60806706f54cc007bb1c844346db0f91ac10c8e3b49a7e' }, + 'config/dome/0104.xml' => { + 'Revision' => 3, + 'md5' => 'e4121145912464763ef4ece86fb7f2ff8edc0c547329b1dc7d36e81717202be5b0b84ed5214bcaa31d8a2f5882b9f762d0892402dfb421f3bd80b8f81b4577e6' + }, 'config/dome/0201.xml' => { 'Revision' => 4, 'md5' => 'fee61cf3301b50c77758714649fa35f6d3bc3f1614124608577e3b47b897fc546fefb1a31520307f853c28726c5758cc3656d3ebe290b6ad858b43d4e99d7a64' @@ -816,8 +840,8 @@ 'md5' => 'fecc7214a3cb7334806e38686fa9e4635caefff7a7bac8cf98af1b1a6dedefaa33a7a943f6435d5ae8d2286d39a69c08b3fab173ed29fd367de5fba6b321886b' }, 'config/eurotronic/eur_spiritz.xml' => { - 'Revision' => 5, - 'md5' => '0aa11f27796457c03ca1de6842ffb31d7727edb6ceebc689fe7c03a71b29445807e331a6cac4f2140ae1e0cde9355bfed6a52312afe84c25c1f2b61004021776' + 'Revision' => 6, + 'md5' => '0dd6650679d4f3fb99fd10c0d3e125fd2c3320edf88c3a808a6fdc0c5e3301034335c9469c2b278e1858dbef381c885a442e816b3a2d40aae119ac1bcadfebcc' }, 'config/eurotronic/eur_stellaz.xml' => { 'Revision' => 4, @@ -1100,17 +1124,25 @@ 'md5' => 'b3ddc92e51ee5a0ac5eba30f3cdba72f8c8aa114b2b474f3d7096d0092ccf9ae8ce6042e8f6182f4a07129a891e6dc83517be0d5d67bda91893ec0bb210f0f45' }, 'config/fibaro/fgt001.xml' => { - 'Revision' => 5, - 'md5' => '64b989c2046a0c572b8e25ee2c3c595e1a5c2eb52e9c6a29d96cbe0c71b33d4a46bd640e551564e6794aeab9a5e7a9a011c0e7430ab2b52de518ba9cac81c3b4' + 'Revision' => 6, + 'md5' => 'dcf003e4bbe58bc3e0e706801a0734095db4ecf5a40c73ce5dd03a2a3ae9cc6e6033c87ae08b6d7c8575de5ee8fb56541496c584d676c6203ca29a98546b98cb' }, + 'config/fibaro/fgwceu201.xml' => { + 'Revision' => 2, + 'md5' => '6da183adf79ba89f7e5c079eb320a2b8ca521d329e110e9f01b99a48bd14d8fb1c5608ec568d6fef648d1ee56ba0cef91257000ec7b2ae4b13b88524cd501391' + }, 'config/fibaro/fgwd111.xml' => { 'Revision' => 2, 'md5' => 'bf6d95da83aad31068f0f62fb3abf1d03481f63dcaa347f8fe6a38cc8d4a2bd9a3031722f9a4e73cd6823dc151fdf30772c4c3b5d4f06bdc6df3120389091057' }, 'config/fibaro/fgwds221.xml' => { - 'Revision' => 3, - 'md5' => '91f5151dd35f34d1b51fdd98d75aea1a2bda0d9be5d34882ae666604492fa31af73d56e48a6e9644b1af093fa5acb1c884b135a612e7eaaaca5784689fbea729' + 'Revision' => 4, + 'md5' => '9641565fe4eca688bb3f0b73acf0a425b1f301f68c67e5ec8af0255457e9ded311aa311c15152700e3fdf51363ea8c04ce397e79426b2c01d75ab8193d2aae16' }, + 'config/fibaro/fgwds221ss.xml' => { + 'Revision' => 1, + 'md5' => '044ec0227f23e478e9d8315100cd9a4bb6886f94e5b7dd8077133159ce99a042abb6075ccdd6a03639e2e4681f5a21cf0bc3a6005d143195de829c5b799bff78' + }, 'config/fibaro/fgwoe.xml' => { 'Revision' => 1, 'md5' => '117d888dee07fa6b24bf1a69a144e631921c7f06ebdb0e90632560ecf45872eabdc82e2821d734f260585c660dfd47737c5948a44c9ed21674e13b8e1533824f' @@ -1439,6 +1471,10 @@ 'Revision' => 3, 'md5' => '6dc4cc5e720bb5c534f25510f20c134baffb3d4b1f68704d397bab9775b6b14397471dee6469f230ecb81afd79363837589a531be926a7d3e789e82b4c1c5a83' }, + 'config/hank/hkzw-so08-smartplug.xml' => { + 'Revision' => 3, + 'md5' => '825fa7c75df29cad9ad3d2556e2b3c3eed5636ee0a4b2ca3af5eeb0542908373eac082b2db0839ec362d18332842add4fc09aca713629fed8c092e9dcf576fde' + }, 'config/hank/scenecontroller1.xml' => { 'Revision' => 3, 'md5' => 'e748ff7ae3bb3358e80b863cdea2103275dbf536edbd538963502c7629aaa623c49b562d092cfbf4db17f7fa2f4b191223ad1e9513c86b58b937eb6504145f7c' @@ -1703,6 +1739,10 @@ 'Revision' => 2, 'md5' => '8a255b9f1762edab6edf809ac54964910f02427f3c215bb1def2741e8737b5479eb7ae3673be4f222558f3d70af66e3394ba16958dd9cb1dfd3e3b0c57122aa1' }, + 'config/inovelli/lzw45.xml' => { + 'Revision' => 7, + 'md5' => '06c8a460ef78d26a073341a0561641b98f7bb3b1cdd95e56b1f4ad7a28ab34ca3930a232ba023307090017e1fe85d5d83c8d3a0b0fb93dd4050a81c1f48e972c' + }, 'config/inovelli/lzw60.xml' => { 'Revision' => 1, 'md5' => 'd279c5b9dee85d2886f21b484af5ebd146c8189e480b6b676da38a0a3545c08194fab6a6c0b6c4de8f3cf145f2906d774af4bc703cb2dab9815f8d53f05c8b01' @@ -1916,8 +1956,8 @@ 'md5' => '88bf6abcbe1a82e590f415571cb96d9304ef77fedc43eea98b372142c84f79b94d001b87398f5610290d3c19ba79e59d856874f0b3fd3c65d2ffaea750d7e971' }, 'config/logicsoft/ZDB5100.xml' => { - 'Revision' => 2, - 'md5' => 'b931b0c85893c47f635431f0beab6f294298d86d7c948bef0e5148998132f1b70b951a64f20b2f725787fae9d56ae0b00ad739ab6fbed807c36130ba268536e1' + 'Revision' => 5, + 'md5' => '3145ca4b1a0d82f196c79590e28841826165c6c0c6a018260d7506c743bb16b424265e3ac56e36da8755385442f27222fc9983c5a4ce5974fe5d215927f623cb' }, 'config/logicsoft/ZHC5002.xml' => { 'Revision' => 1, @@ -1928,13 +1968,17 @@ 'md5' => '4d34aeaaea917c229bedbb737e4de1550b2d7db5f9e61566a1c0a39966b6442d381d01f93714e12aae1404797d36854274cc4063dd7424b00d27da238b17a36a' }, 'config/manufacturer_specific.xml' => { - 'Revision' => 151, - 'md5' => 'bdd5195196392644982c079a81321bf2d4fb5d55d43abede846cab193d8e00208addc74bf851bc97c937593d3bc98808cfa7e97786fec984e2225b78354f4019' + 'Revision' => 172, + 'md5' => '9109b76dd1cc60709e13492d0261bbfe15603474a03ed681591e696f8bc036c9346d7cc01571cc70fc455c8c32d9ca9c121c9510257fc1952eaec3017066b3b2' }, 'config/mcohome/a8-9.xml' => { 'Revision' => 1, 'md5' => 'd1809616fec114edc52eab80314654c8644550fecaec881193460099bface47dc976da727f2d2b0ed6b06fdea1560a942ba2bf230752722ec64c210ed8ce95db' }, + 'config/mcohome/mh10pm25wd.xml' => { + 'Revision' => 0, + 'md5' => 'ebef8141b4a35af56a90ca212206de80c39e15825c9f1a1101c24e6432d47644609b5d2d95dc19b7dd656fd3dc103fb487910f56f4bc032870290aba77ad4189' + }, 'config/mcohome/mh7h.xml' => { 'Revision' => 3, 'md5' => '03ca338b59a9e520891497741c0c25dd562734b3f6367a4eac65aaa739351a409004c95faab888ae84c523ce1721d9b5842a9f365554dedf6faf6ed9fb6c7cb9' @@ -1951,6 +1995,10 @@ 'Revision' => 2, 'md5' => '663b2cbf6cbf61244da0704e8882d0d39a5c95be197d7b29f1d9a494f139e4c3cd50a7f6571fbd3815cae78378716652dec606a69a40300e286e4df45995dd5c' }, + 'config/mcohome/mhdt411.xml' => { + 'Revision' => 3, + 'md5' => '5358c4702375567b723991acc1f6b126d1264a09712f6828be6294183d799dfee7d0b66a02bb1b200c2a4f9097c64568a6d6fc0ce04dbf8c4f42f255c10d6fcf' + }, 'config/mcohome/mhp210.xml' => { 'Revision' => 1, 'md5' => 'ef4a59bae64c999292ce1f3307af32bec1203cd74c1bf69a990d036e670c9e02fe75b441e4e58cc52a7f563a6c5aa854c36479c06da46db4a6962d1f8c8648c6' @@ -2027,6 +2075,10 @@ 'Revision' => 1, 'md5' => '6bdd47c7a0ba829e89cf2735e720bf2b62020f228a4e80df237c1b454707ea7aa7898e916bcad430ac313d38206e9862b5a51748ec3138368c2b5fb643d93d15' }, + 'config/namron/4512712.xml' => { + 'Revision' => 2, + 'md5' => 'a82b5f87b0be78f05917547ca8ca358d6d2ff484a3aab865597fc8fa8d59dac81498693d0768f4aa8aa7fdf45ce115edf96a6ad17cee09d9ef37941f803a2ade' + }, 'config/namron/4512714.xml' => { 'Revision' => 1, 'md5' => '223ddb325b70ed7abe9898aa74521b6ad263a45e6a4be4f6842af04d0093d300451ca1d9b07e392c129195e425f431b8faf5fadcb7c32ecc74096699419a8446' @@ -2035,10 +2087,18 @@ 'Revision' => 1, 'md5' => '601c713a6cef0fa0e5d92bbfe6fa0d6201b60959a5a1d427cf7280d73921d658ee5fdc703b003d42ba2ce3c000848c1cdd507bd9385a435ff93c1888d3fb1ca5' }, + 'config/namron/4512720.xml' => { + 'Revision' => 2, + 'md5' => 'c53b0beebcd8ef019da86791c1e6eebf632ed92c9fda51a6881b52dfeadf1b6e0c9809ef6c4072234ed73ee9b679cee5530866bd04916c27441e7d195a4a5c8d' + }, 'config/namron/4512724.xml' => { 'Revision' => 1, 'md5' => '10edb9b98013bac7754fd68151bef8b684dff2ad17d14b71cd6831f386a1e98aef64ff83138cdd28bf6bd1ab6526ca40b87e310beed25e9ed4a857b21e689b3f' }, + 'config/nei/ms11z.xml' => { + 'Revision' => 1, + 'md5' => '798d15de5a67cd238320459d17b73b168fdc269de623ccaf21d84c84d353fdb15efb693c10bf43075e555b7011344200e8111352250bc7bf688f4298d981e8b2' + }, 'config/nexia/db100z.xml' => { 'Revision' => 2, 'md5' => 'a85e3b5dd39faff1bd76dc1f73f3b3527eacea0e1e1c70aa6d6e879533219b9e8034fc872b2553a12c7144152781389f3d055927a62565814695db853b87bf8e' @@ -2340,8 +2400,8 @@ 'md5' => 'de18029a1539e10dd15fc85ede084182e1cfcbc78325602ca6e5b428884f6db6ce1bebdbea331a8ca0f4ba133828c09f13ce6c1f8486871a5ca9c17258358ba1' }, 'config/qubino/ZMNHHDx.xml' => { - 'Revision' => 2, - 'md5' => '190639b81177c88bd4a340e96d83578085f35ede860d7bc613bc879e4baff907c951d498696a52d84659936714855efae2a62e183d279957e3a8bda14d949a26' + 'Revision' => 3, + 'md5' => '1670fc7355688ae031018b28e6b3c184b3efa84a964b6d7b435175842e43a1ff445c5cdc7a336f71203fbd4d53ad9169a61968fac2b760db7339d9d5b58538b0' }, 'config/qubino/ZMNHIA2.xml' => { 'Revision' => 2, @@ -2375,6 +2435,10 @@ 'Revision' => 3, 'md5' => '5024808b8551691103b25c05fe37ae3b49499a38fe0491bcd492accab0eb346b7e810c3132cd67e1920ed0d971f07dd9303a3b774276aab38ac04610fe5dbd50' }, + 'config/qubino/ZMNHMDx.xml' => { + 'Revision' => 1, + 'md5' => '10bb3f3f11e86e4ec0e164e74e69f990864cd9fd76a4b407b1c26c54f5bcd5f16c3dc08482988b4f557f244da5cbb61b6555d5b1496d5ce3d7086868cd4ba3bc' + }, 'config/qubino/ZMNHNDx.xml' => { 'Revision' => 6, 'md5' => 'a10317520ca58616369d1d7782640ffeb84fb778c781f3bb39e7d6a0f22cfdad7aedb65b781f632e36c2c9837188019d00bb8b6509bc022719a64a77ea2c6277' @@ -2499,6 +2563,14 @@ 'Revision' => 1, 'md5' => '59652dc6da375fc15e84a385f1d90799e3fc7d6a6295d5f2eb6b28d2d965029a6eae376a21e326b3ce9d85dab066a46282db1a7edaeea29344d075d880c87601' }, + 'config/ring/contact-sensor-v2.xml' => { + 'Revision' => 2, + 'md5' => '1f51fedc85cebb63a19943c3635ef4a33748d37e9c37bda8c0370ae204903ba9325af12ca3b6ef22a32d01d929d02e97bf48c81fdb09b1c003bcf95f171ab479' + }, + 'config/ring/motion-detector-v2.xml' => { + 'Revision' => 1, + 'md5' => '40691ad61c15ad9d6cf90f46b2e04e707809db8f5db55250dacce93c19bf6c2057d1ba4b190995e40c044bc4f9f6bd2fa226b5b54935d1a6649632da0bc21d4b' + }, 'config/schlage/BE468.xml' => { 'Revision' => 2, 'md5' => '4b373a2ecad0691860087e425fea93ca9914330abef2b1b90ee39b4f8b6fd7298a832578640873ba6662383801e04601a8335062f20f4f787eff432c233ac31c' @@ -2544,16 +2616,16 @@ 'md5' => 'af10355b77d03b65fadf93f853057ded42d39a421df623b45dec230e9b55b34aef95eeded78e70212c02ae9e71745b45e63978706a3093d14a7f391a9177b560' }, 'config/shenzen_neo/ls01ch.xml' => { - 'Revision' => 1, - 'md5' => '27118871f8fd4290219a3f2988620725e14515fe70545b90e47940f78cd8f41ab72675a8401848d9899a0f712dafa52d8eb5ece68d633cf3556bb3b2af9f6a19' + 'Revision' => 2, + 'md5' => '59404ff10eff881692c709bbcec4717aff3179e546253171970482f37188a1f38f77fc3f6231841b5d1c47d8d7fd8983138a53e98cb3b2532b34f9d31ee8f4b5' }, 'config/shenzen_neo/ls02ch.xml' => { - 'Revision' => 1, - 'md5' => '54536587d5b748daabf86c94f72a62e6558c67a244f4da46e4c9dd63ba369b8c240a7f5f678ff58ea23dacf11913bfa1a23a11db265e715a089dc2f5e3fd3d7b' + 'Revision' => 2, + 'md5' => '9d83ab76ccbac89e559c98979142ead8da4851cff7529fb3ed5cfb9b7cb9f393f7ecb823be8c50e768862449b2310e6facec1c4979e8569c147df21541716d41' }, 'config/shenzen_neo/ls03ch.xml' => { - 'Revision' => 1, - 'md5' => '28310b3ed41fa108d60236abafc5cee2a0db2d92d9de756aedc227746bc80c9958adfe38571c63381bf5c5a23ac54b5aa75bf83ea600e82e172cedba03074b04' + 'Revision' => 2, + 'md5' => 'a0777d5e97620acc8b2b93df1adf51c848a45c379bd4e900ac3c9d9b8b61446273e2afb917faa71248c5ac467513b75050e0f6fbc5c3dc43f3aeadbd0eb85ca3' }, 'config/shenzen_neo/nas-ab01z.xml' => { 'Revision' => 4, @@ -2603,6 +2675,10 @@ 'Revision' => 1, 'md5' => '8f7ab98b4ab3f08f2d56bf834a8dc001973d58b06672ad049426a332b32bfb8072817ff714e22e89f57bcfda113651eb809c8d0e9010f035176feb5050af4bef' }, + 'config/simon/10002020-13X.xml' => { + 'Revision' => 1, + 'md5' => 'd2164162991f71803dffa110f7a4c65fc181cb8563b63097f07362a1cac2e2ac4a88ec775dad27c875b82b28ac3197822c1a69e08ac0e21c7bf2aefe04107e22' + }, 'config/simon/10002034-13X.xml' => { 'Revision' => 3, 'md5' => '8bb9641949c548b619a32d4169dd3f3b14367fd98bcc0168ffb6402fab467d0821f1a011e5be2987eab93ccad87692aaea9a63ee568722dc05e69c4a22359485' @@ -2707,6 +2783,10 @@ 'Revision' => 1, 'md5' => '1831cf691c954aa9546e99e5f8218b2d05d2aec3c850ee0bbf543947fbde7bfcf20b8e47fb232b4e43d2c6245aa15c94602b1efe48b1553b5daf75a6adeaa9cc' }, + 'config/sunricher/zw3004.xml' => { + 'Revision' => 1, + 'md5' => '40ff71f735896829ab95eb946530902629b31b32d5ae4bbb4cda97df08bed067c40e2b9ee7c82c536aae0acf21c749100a379ed5cb1185f10ff4d1dbf95cbe1c' + }, 'config/swiid/swiidinter.xml' => { 'Revision' => 3, 'md5' => '66525f843d8663f34af93e65b6979059e294139474aa3f63974f1ddb5e29c431e87ae0deb220a40169028a5e9e7c8553d2b24587afb905703ff14ffb0e6252ab' @@ -2744,9 +2824,13 @@ 'md5' => 'b065d0460c3da5e6bab88657b36d0c840db877c3c0c89c26313d7fd4bd12f7f57af2045cf89bcd689449989f0902f3ae3c6487fa9842dc45ca4538931e4a134e' }, 'config/thermofloor/heatit-zdim.xml' => { - 'Revision' => 1, - 'md5' => '29fc827fce0ac074d0508e2b677861d3d795f7000a5650596cbd6c4f7eaf30b4ed88915f82a0cf0946a2d302bb5def71f258e0b960a59b16571aac1d3ac13ec2' + 'Revision' => 2, + 'md5' => '627f5761aa76f8e6046e8f0e82d4d6b50a1395f76afb05936ffc2b42f95fcc15d490b4f33d0083e2300d8de65a9b05e66ceea516776ca911c2473e8f46bdbd10' }, + 'config/thermofloor/heatit021-v1.92.xml' => { + 'Revision' => 1, + 'md5' => '9839f51c4a1fd1c63a2d12843f73c341c329222b6032895805026752671aa2d58d7513c3d07cd7a9090e6dc7866faa19f7d7efb20f3e37253de0ad6ac1604dea' + }, 'config/thermofloor/heatit021.xml' => { 'Revision' => 9, 'md5' => 'ccb695b1d42cabdee7c16337e69ddc495f7b7ce6bdb208be7f2158c273c566957299a0406037539830b47cdcc853f20f015a3c91976dbf9a76db672fbfd30faf' @@ -2768,12 +2852,16 @@ 'md5' => 'c230bb573e64439be9d40720f4c5a72e901018078ab9d778aaac156666e248686706fe9d81f7b19a9ada774d9284a8a05c4ef1ef2aed9fb5a762c5c05ad1547e' }, 'config/thermofloor/heatitz4.xml' => { - 'Revision' => 1, - 'md5' => '57e5d7ee681bf0379054de7b35cb233d8cb2621d4c1741a85278c116a49ae4dfe483e79d605a9c8b0ff1ee4fd2154504bc65327524985cf868b05330df1ac41b' + 'Revision' => 2, + 'md5' => '2be6250742eb2ed930e0aef28513fb85da3dd37f00824a45c0a7af60797954ec46ccb32df5e4ec15a18e48e8cfe199639f77405d76749455d7850d0869be816b' }, 'config/thermofloor/heatitz8.xml' => { - 'Revision' => 1, - 'md5' => 'b55218c2be64c855325a1f781e259d016ca1adeaf0fab563e58ec6a5b0131f5fb88bfedb810cc40555d0e95e90a5c26ff2ff26d870242be4e01ed85c5868bb7c' + 'Revision' => 2, + 'md5' => '1fd512de745b166c79f9d16742f87c10b86ef0c259b504f3d2cb9ac081c22ed96c292a68394a5a7be110aafffa67ee82cb54d2f28e6d1c48cf51ff26fc32428f' + }, + 'config/thermofloor/heatitzm.xml' => { + 'Revision' => 2, + 'md5' => 'f824351dae1ad1ff2401004f06b391c690f5c93a746b5ffec10bbe7e9ae27621144937d27e599d28335b050ed91780d930ac66d45d70b52fa1d4c1bcbc892d52' }, 'config/trane/TZEMT400AB32MAA.xml' => { 'Revision' => 3, @@ -2971,6 +3059,10 @@ 'Revision' => 1, 'md5' => 'c468eb5e6431d0b66ff94aa18bbdfd225ef03a95dead2458078dca813074e34b206c949bb685c05a9767f24b508a22e6a1f1a702f1bd591256d1f236acfa2e92' }, + 'config/wenzhou/tz77.xml' => { + 'Revision' => 2, + 'md5' => 'df47b99135b0b10975717373c17b9feb15cfbba1a4c21542f939950495c5bab2f3fa285237bec363192728b8db58d4f9b00fe3d8d6f1ec9edf93517ae01a9025' + }, 'config/wenzhou/tz78.xml' => { 'Revision' => 2, 'md5' => 'c796f0198124f0fe0f76e7e0f97956464f6360648ec188c09d54593cc41041b0a7b45ccc8416bb22aca8cd644b22976ab87ff7f121714a42f72d3414a5300d06' @@ -3068,8 +3160,12 @@ 'md5' => 'bee21869106becfe025892a4f334af530450727b855ffe9418a110bfec9534a4855eca768f82f2c2ad3a8c0e78caf0cba704f1570850bcb28dcb506a1eddb2bc' }, 'config/zooz/zen16.xml' => { - 'Revision' => 3, - 'md5' => '55ba12c1055f187247ebc19314fc2c883023127712cfd38d3bf9ee2e802eb31ee28b61276c122c69e79e6832ccd67bf55a5363a844e7896b23cf900b49619428' + 'Revision' => 4, + 'md5' => 'eab1371f2c81d3dac4edeb677afee22eb684fa157dff73bc89e95c93e0421abd949c382b4f2d2203bf6d4d981e913ed31a3080e649694ffdba1ece3fdc46295a' + }, + 'config/zooz/zen17.xml' => { + 'Revision' => 2, + 'md5' => 'c2cf58e4c44fba886e7470fdcc8559ed3f574c3e6f34c02a87094d82df463db20996182e56df000eb211022259fcc7aa2a7cad0089783ed511422bccc287bff5' }, 'config/zooz/zen20.xml' => { 'Revision' => 2, @@ -3100,16 +3196,16 @@ 'md5' => 'b5609b50b35f91a81c21293680581f6a5bfd69cadfdc7987d41f1a41380553d7250fc4ac75d00b2057cf7ec54f5a8479bbe793682e2fcfe207aaa301889fce6f' }, 'config/zooz/zen23v3.xml' => { - 'Revision' => 1, - 'md5' => 'c8f21e0f8cbd05de6c68eea2afa733f4590928c8605b589cfcbcbc66de34f7df7d01d008430c602e5cf37e2c8ebd9fcb62a990bfea64be487033ed1312528599' + 'Revision' => 2, + 'md5' => '1760d6685c1bdba5b9dc8310c443d8b9badfe505c3b0800ece20d8951d6f35833036d883e4777635449754d0a97618e43d80af9b801d80512bf78b298a18d606' }, 'config/zooz/zen24.xml' => { 'Revision' => 1, 'md5' => '818d5a9b417d8e06cb5864ec4859d82d30d5d2e6e91bbd4672ac3fd84b20585b8c8529c327e0ac49359276674bf7e3cd15f0ac4f812896bf334c24963f6abd18' }, 'config/zooz/zen24v2.xml' => { - 'Revision' => 1, - 'md5' => '7d82148b7087c8f8fc0e22d5e2a6a26b0bbc8c9085e413e772536fc7f323a7137ba6769fe8ac277528325e42b23771b82a521f8c5f38b22d16e75fd102a4c1ef' + 'Revision' => 3, + 'md5' => '7e5357ea8bfd73d38525c27b3cacf13c157a5a036cc54b0f2cc01d04d39f0ac2c916e6ff28bdc3fd47a1fa2b2fdbf4c17ac89dc9adff4e36a245251ad896ad51' }, 'config/zooz/zen25.xml' => { 'Revision' => 1, @@ -3131,9 +3227,29 @@ 'Revision' => 2, 'md5' => 'a4ee0ec974ffa1fe6c1e46f0610ad8a2623504b1f52b5d20efdcf665548ca4229d0c9a6c782e5da97b4869dfd2f38b5640f6748424b91f8516dc7cffbf5a0799' }, + 'config/zooz/zen32.xml' => { + 'Revision' => 1, + 'md5' => '44780a6b6961e573dbe019f6b8c40608694908c2047e0c5801e5ca5af0f074447b17e60d90ad2a6bb3ece3c7a023f974507aa3af2b50ee89aa48fd5b953266c6' + }, 'config/zooz/zen34.xml' => { + 'Revision' => 3, + 'md5' => 'd5fa659b35e2b666f4127ae68be223e21808e9828629b29d1fe7abe24b40b6dcf33b6af2ad0ba06eef6975a14b4d65f078940b956ce58f94281cdf0116f01dcd' + }, + 'config/zooz/zen71.xml' => { + 'Revision' => 1, + 'md5' => '532785efd4cddfb32361dfd76d09d403882b7df7073a05546df9b03fc9d7e46132596c2889f4674d2ddfe71a221bb64d2b5c8689e6ba5335be2b4f6b1a7509dd' + }, + 'config/zooz/zen72.xml' => { + 'Revision' => 3, + 'md5' => 'd90c8971f61267ff65180507bd10e92fbd9086a6599b63bf0ba0820c85b2e7568938129a1f918c8b195636b1fe8f7520ac007b0d808b79210741949293465100' + }, + 'config/zooz/zen76.xml' => { + 'Revision' => 1, + 'md5' => 'ad4c7d4bde0b987ab90cf12038946d95c464473145a16c7082c013ec0f4a258274f6d7a9cd2197d4d990f8fc3726e56dc946b3a835158ebe48ab2bd3f9273713' + }, + 'config/zooz/zen77.xml' => { 'Revision' => 1, - 'md5' => 'f154011eca83ccbd89a8e236929f5dce54aee450886f39e1392c6a587c6db2fcab5a5c5937e338ac35787b3b5f664cd748048375c59bb44fe94df98a942a413d' + 'md5' => '26355b030745a5bac773e0aceaf8813c34f1137ba67e95e843455521a0035cbbe68d37aabfdfbeac0570d150c6a4756b6a93667f45e73339f612fb0aeb247843' }, 'config/zooz/zse08.xml' => { 'Revision' => 1, diff --git a/cpp/build/winRT/vs2015/OpenZWave.vcxproj b/cpp/build/winRT/vs2015/OpenZWave.vcxproj index f511f189b5..311aff9e17 100644 --- a/cpp/build/winRT/vs2015/OpenZWave.vcxproj +++ b/cpp/build/winRT/vs2015/OpenZWave.vcxproj @@ -169,7 +169,7 @@ true true WINRT;%(PreprocessorDefinitions) - ..\..\..\tinyxml;..\..\..\src;E:\GitHub\OpenZWave\openzwave-dotnet-uwp\open-zwave\cpp\hidapi\hidapi;%(AdditionalIncludeDirectories) + ..\..\..\tinyxml;..\..\..\src;..\..\..\hidapi\hidapi;%(AdditionalIncludeDirectories) Console @@ -189,7 +189,7 @@ exit 0 true true WINRT;%(PreprocessorDefinitions) - ..\..\..\tinyxml;..\..\..\src;E:\GitHub\OpenZWave\openzwave-dotnet-uwp\open-zwave\cpp\hidapi\hidapi;%(AdditionalIncludeDirectories) + ..\..\..\tinyxml;..\..\..\src;..\..\..\hidapi\hidapi;%(AdditionalIncludeDirectories) Console @@ -209,7 +209,7 @@ exit 0 true true LITTLE_ENDIAN;WINRT;%(PreprocessorDefinitions) - ..\..\..\tinyxml;..\..\..\src;E:\GitHub\OpenZWave\openzwave-dotnet-uwp\open-zwave\cpp\hidapi\hidapi;%(AdditionalIncludeDirectories) + ..\..\..\tinyxml;..\..\..\src;..\..\..\hidapi\hidapi;%(AdditionalIncludeDirectories) Console @@ -230,7 +230,7 @@ exit 0 true true LITTLE_ENDIAN;WINRT;%(PreprocessorDefinitions) - ..\..\..\tinyxml;..\..\..\src;E:\GitHub\OpenZWave\openzwave-dotnet-uwp\open-zwave\cpp\hidapi\hidapi;%(AdditionalIncludeDirectories) + ..\..\..\tinyxml;..\..\..\src;..\..\..\hidapi\hidapi;%(AdditionalIncludeDirectories) Console @@ -250,7 +250,7 @@ exit 0 true true LITTLE_ENDIAN;WINRT;%(PreprocessorDefinitions) - ..\..\..\tinyxml;..\..\..\src;E:\GitHub\OpenZWave\openzwave-dotnet-uwp\open-zwave\cpp\hidapi\hidapi;%(AdditionalIncludeDirectories) + ..\..\..\tinyxml;..\..\..\src;..\..\..\hidapi\hidapi;%(AdditionalIncludeDirectories) Console @@ -271,7 +271,7 @@ exit 0 true true LITTLE_ENDIAN;WINRT;%(PreprocessorDefinitions) - ..\..\..\tinyxml;..\..\..\src;E:\GitHub\OpenZWave\openzwave-dotnet-uwp\open-zwave\cpp\hidapi\hidapi;%(AdditionalIncludeDirectories) + ..\..\..\tinyxml;..\..\..\src;..\..\..\hidapi\hidapi;%(AdditionalIncludeDirectories) Console @@ -291,7 +291,7 @@ exit 0 true true WINRT;%(PreprocessorDefinitions) - ..\..\..\tinyxml;..\..\..\src;E:\GitHub\OpenZWave\openzwave-dotnet-uwp\open-zwave\cpp\hidapi\hidapi;%(AdditionalIncludeDirectories) + ..\..\..\tinyxml;..\..\..\src;..\..\..\hidapi\hidapi;%(AdditionalIncludeDirectories) Console @@ -332,6 +332,7 @@ exit 0 + @@ -357,12 +358,13 @@ exit 0 - + + @@ -370,6 +372,7 @@ exit 0 + @@ -384,9 +387,15 @@ exit 0 - + + + + + + + + - @@ -451,6 +460,7 @@ exit 0 + false @@ -482,21 +492,12 @@ exit 0 - - - - - - - - - - + @@ -517,8 +518,16 @@ exit 0 + + + + + + + + + - @@ -586,157 +595,7 @@ exit 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/cpp/examples/MinOZW/Main.cpp b/cpp/examples/MinOZW/Main.cpp index 07b494f866..e76705afce 100644 --- a/cpp/examples/MinOZW/Main.cpp +++ b/cpp/examples/MinOZW/Main.cpp @@ -261,6 +261,8 @@ void OnNotification case Notification::Type_UserAlerts: case Notification::Type_ManufacturerSpecificDBReady: case Notification::Type_ValueRefreshed: + case Notification::Type_LevelChangeStart: + case Notification::Type_LevelChangeStop: { } } diff --git a/cpp/src/CompatOptionManager.cpp b/cpp/src/CompatOptionManager.cpp index ef4271a5b2..8e22417f6d 100644 --- a/cpp/src/CompatOptionManager.cpp +++ b/cpp/src/CompatOptionManager.cpp @@ -59,7 +59,8 @@ namespace OpenZWave { "VerifyChanged", COMPAT_FLAG_VERIFYCHANGED, COMPAT_FLAG_TYPE_BOOL_ARRAY }, { "EnableNotificationClear", COMPAT_FLAG_NOT_ENABLECLEAR, COMPAT_FLAG_TYPE_BOOL }, { "EnableV1AlarmTypes", COMPAT_FLAG_NOT_V1ALARMTYPES_ENABLED, COMPAT_FLAG_TYPE_BOOL }, - { "NoRefreshAfterSet", COMPAT_FLAG_NO_REFRESH_AFTER_SET, COMPAT_FLAG_TYPE_BOOL_ARRAY } + { "NoRefreshAfterSet", COMPAT_FLAG_NO_REFRESH_AFTER_SET, COMPAT_FLAG_TYPE_BOOL_ARRAY }, + { "MultiChannelSenderOnly", COMPAT_FLAG_MULTICHANNEL_SENDER_ONLY, COMPAT_FLAG_TYPE_BOOL } // RGBGenie (Sunricher rebadge) supports MultiChannelAssociate, but not MultiChannel }; uint16_t availableCompatFlagsCount = sizeof(availableCompatFlags) / sizeof(availableCompatFlags[0]); diff --git a/cpp/src/CompatOptionManager.h b/cpp/src/CompatOptionManager.h index 237e11b204..a098a7ffde 100644 --- a/cpp/src/CompatOptionManager.h +++ b/cpp/src/CompatOptionManager.h @@ -69,6 +69,7 @@ namespace OpenZWave COMPAT_FLAG_NOT_ENABLECLEAR, COMPAT_FLAG_NOT_V1ALARMTYPES_ENABLED, COMPAT_FLAG_NO_REFRESH_AFTER_SET, + COMPAT_FLAG_MULTICHANNEL_SENDER_ONLY, STATE_FLAG_CCVERSION, STATE_FLAG_STATIC_REQUESTS, STATE_FLAG_AFTERMARK, diff --git a/cpp/src/Driver.cpp b/cpp/src/Driver.cpp index 0bc39400d6..84124da920 100644 --- a/cpp/src/Driver.cpp +++ b/cpp/src/Driver.cpp @@ -621,6 +621,7 @@ bool Driver::ReadCache() string filename = userPath + string(str); TiXmlDocument doc; + doc.SetCondenseWhiteSpace(false); if (!doc.LoadFile(filename.c_str(), TIXML_ENCODING_UTF8)) { return false; @@ -7089,6 +7090,7 @@ void Driver::ReloadNode(uint8 const _nodeId) string filename = userPath + string(str); TiXmlDocument doc; + doc.SetCondenseWhiteSpace(false); if (doc.LoadFile(filename.c_str(), TIXML_ENCODING_UTF8)) { doc.SetUserData((void *) filename.c_str()); diff --git a/cpp/src/Driver.h b/cpp/src/Driver.h index cdca6b00a1..26fbed8d97 100644 --- a/cpp/src/Driver.h +++ b/cpp/src/Driver.h @@ -59,6 +59,8 @@ namespace OpenZWave class NodeNaming; class Security; class SceneActivation; + class SwitchMultilevel; + class Color; } namespace VC { @@ -100,6 +102,8 @@ namespace OpenZWave friend class Internal::CC::WakeUp; friend class Internal::CC::ApplicationStatus; /* for Notification messages */ friend class Internal::CC::Security; + friend class Internal::CC::SwitchMultilevel; /* for Notification messages */ + friend class Internal::CC::Color; /* for Notification messages */ friend class Internal::Msg; friend class Internal::ManufacturerSpecificDB; friend class TimerThread; diff --git a/cpp/src/Group.cpp b/cpp/src/Group.cpp index 990f830c2c..08a39e5915 100644 --- a/cpp/src/Group.cpp +++ b/cpp/src/Group.cpp @@ -244,11 +244,20 @@ void Group::AddAssociation(uint8 const _nodeId, uint8 const _endPoint) Internal::CC::MultiInstance *mc = static_cast(node->GetCommandClass(Internal::CC::MultiInstance::StaticGetCommandClassId())); if (cc && IsMultiInstance()) { - if (mc) { + // Check the compatibility flag. Known instance is RGBGenie, which supports MultiChannelAssociation, but not MultiChannel + if ( mc || (cc->m_com.GetFlagBool(Internal::COMPAT_FLAG_MULTICHANNEL_SENDER_ONLY) == true)) + { + // Set up an instance for the values, along with an endpoint mapped to that instance. + cc->SetInstance( _endPoint ); + cc->SetEndPoint( _endPoint, _endPoint ); + cc->SetInstanceLabel( _endPoint, (char *)m_label.c_str() ); + cc->Set(m_groupIdx, _nodeId, _endPoint); cc->QueryGroup(m_groupIdx, 0); return; - } else { + } + else + { Log::Write(LogLevel_Warning, m_nodeId, "MultiChannelAssociation is Present, but MultiChannel CC is not. Trying Plain Association..."); } } @@ -321,7 +330,7 @@ void Group::OnGroupChanged(vector const& _associations) { bool notify = false; - // If the number of associations is different, we'll save + // If the number of associations is different, we'll save // ourselves some work and clear the old set now. if (_associations.size() != m_associations.size()) { diff --git a/cpp/src/Manager.cpp b/cpp/src/Manager.cpp index 60c2a84cd6..0fcfd18764 100644 --- a/cpp/src/Manager.cpp +++ b/cpp/src/Manager.cpp @@ -184,7 +184,18 @@ Manager::Manager() : int nDumpTrigger = (int) LogLevel_Warning; Options::Get()->GetOptionAsInt("DumpTriggerLevel", &nDumpTrigger); - string logFilename = userPath + logFileNameBase; + string logFilePath = ""; + Options::Get()->GetOptionAsString("LogFilePath", &logFilePath); + if ( logFilePath.size() < 1 ) + { + // Default behavior - LogFilePath not specified, and defaults to the userpath + logFilePath = userPath; + } + else if ( logFilePath[ logFilePath.size() -1] != '/') + { + logFilePath += "/"; + } + string logFilename = logFilePath + logFileNameBase; Log::Create(logFilename, bAppend, bConsoleOutput, (LogLevel) nSaveLogLevel, (LogLevel) nQueueLogLevel, (LogLevel) nDumpTrigger); Log::SetLoggingState(logging); @@ -2552,7 +2563,11 @@ bool Manager::GetValueFloatPrecision(ValueID const& _id, uint8* o_value) } else { - OZW_ERROR(OZWException::OZWEXCEPTION_CANNOT_CONVERT_VALUEID, "ValueID passed to GetValueFloatPrecision is not a Decimal Value"); + // GCT: I'm not sure the exact source, but occasional bad values being passed + // here. Swallowing the error produces no bad effects, and prevents bad + // initialization. + // OZW_ERROR(OZWException::OZWEXCEPTION_CANNOT_CONVERT_VALUEID, "ValueID passed to GetValueFloatPrecision is not a Decimal Value"); + Log::Write(LogLevel_Error, "Exception swallowed in Manager::GetValueFloatPrecision (!). Invalid GetValueFloatPrecision() on value %u of type %s", *o_value, Internal::VC::Value::GetTypeNameFromEnum(_id.GetType())); } } diff --git a/cpp/src/Msg.cpp b/cpp/src/Msg.cpp index 9a4c9c3ff5..b11227d1e6 100644 --- a/cpp/src/Msg.cpp +++ b/cpp/src/Msg.cpp @@ -33,6 +33,7 @@ #include "ZWSecurity.h" #include "platform/Log.h" #include "command_classes/MultiInstance.h" +#include "command_classes/Supervision.h" #include "command_classes/Security.h" #include "aes/aescpp.h" @@ -50,7 +51,7 @@ namespace OpenZWave //----------------------------------------------------------------------------- Msg::Msg(string const& _logText, uint8 _targetNodeId, uint8 const _msgType, uint8 const _function, bool const _bCallbackRequired, bool const _bReplyRequired, // = true uint8 const _expectedReply, // = 0 - uint8 const _expectedCommandClassId // = 0 + uint8 const _expectedCommandClassId // = 0 ) : m_logText(_logText), m_bFinal(false), m_bCallbackRequired(_bCallbackRequired), m_callbackId(0), m_expectedReply(0), m_expectedCommandClassId(_expectedCommandClassId), m_length(4), m_targetNodeId(_targetNodeId), m_sendAttempts(0), m_maxSendAttempts( MAX_TRIES), m_instance(1), m_endPoint(0), m_flags(0), m_encrypted(false), m_noncerecvd(false), m_homeId(0), m_resendDuetoCANorNAK(false) { @@ -102,6 +103,19 @@ namespace OpenZWave } } +//----------------------------------------------------------------------------- +// +// Encapsulate the data inside a Supervision message +//----------------------------------------------------------------------------- + void Msg::SetSupervision(uint8 _supervision_session_id) + { + if (_supervision_session_id != Internal::CC::Supervision::StaticNoSessionId()) + { + m_supervision_session_id = _supervision_session_id; + m_flags |= m_Supervision; + } + } + //----------------------------------------------------------------------------- // // Add a byte to the message @@ -135,6 +149,12 @@ namespace OpenZWave return; } + // Deal with Supervision encapsulation + if ((m_flags & m_Supervision) != 0) + { + SupervisionEncap(); + } + // Deal with Multi-Channel/Instance encapsulation if ((m_flags & (m_MultiChannel | m_MultiInstance)) != 0) { @@ -280,6 +300,33 @@ namespace OpenZWave } } +//----------------------------------------------------------------------------- +// +// Encapsulate the data inside a Supervision message +//----------------------------------------------------------------------------- + void Msg::SupervisionEncap() + { + char str[256]; + if (m_buffer[3] != FUNC_ID_ZW_SEND_DATA) + { + return; + } + + for (uint32 i = m_length - 1; i >= 6; --i) + { + m_buffer[i + 4] = m_buffer[i]; + } + m_buffer[6] = Internal::CC::Supervision::StaticGetCommandClassId(); + m_buffer[7] = Internal::CC::Supervision::SupervisionCmd_Get; + m_buffer[8] = Internal::CC::Supervision::SupervisionMoreStatusUpdates_MoreReports | m_supervision_session_id; + m_buffer[9] = m_buffer[5]; + m_buffer[5] += 4; + m_length += 4; + + snprintf(str, sizeof(str), "Supervisioned (session=%d): %s", m_supervision_session_id, m_logText.c_str()); + m_logText = str; + } + //----------------------------------------------------------------------------- // // Get a pointer to our driver diff --git a/cpp/src/Msg.h b/cpp/src/Msg.h index 8a0bbb6c5f..dbaa127d9c 100644 --- a/cpp/src/Msg.h +++ b/cpp/src/Msg.h @@ -54,6 +54,7 @@ namespace OpenZWave { m_MultiChannel = 0x01, // Indicate MultiChannel encapsulation m_MultiInstance = 0x02, // Indicate MultiInstance encapsulation + m_Supervision = 0x04, // Indicate Supervision encapsulation }; Msg(string const& _logtext, uint8 _targetNodeId, uint8 const _msgType, uint8 const _function, bool const _bCallbackRequired, bool const _bReplyRequired = true, uint8 const _expectedReply = 0, uint8 const _expectedCommandClassId = 0); @@ -62,6 +63,7 @@ namespace OpenZWave } void SetInstance(OpenZWave::Internal::CC::CommandClass * _cc, uint8 const _instance); // Used to enable wrapping with MultiInstance/MultiChannel during finalize. + void SetSupervision(uint8 _session_id); void Append(uint8 const _data); void AppendArray(const uint8* const _data, const uint8 _length); @@ -215,7 +217,7 @@ namespace OpenZWave { m_homeId = homeId; } - void setResendDuetoCANorNAK() + void setResendDuetoCANorNAK() { m_resendDuetoCANorNAK = true; } @@ -231,6 +233,7 @@ namespace OpenZWave private: void MultiEncap(); // Encapsulate the data inside a MultiInstance/Multicommand message + void SupervisionEncap(); // Encapsulate the data inside a Supervision message string m_logText; bool m_bFinal; bool m_bCallbackRequired; @@ -249,6 +252,7 @@ namespace OpenZWave uint8 m_instance; uint8 m_endPoint; // Endpoint to use if the message must be wrapped in a multiInstance or multiChannel command class uint8 m_flags; + uint8 m_supervision_session_id; bool m_encrypted; bool m_noncerecvd; diff --git a/cpp/src/Node.cpp b/cpp/src/Node.cpp index 377a6b3738..0ecd05a092 100644 --- a/cpp/src/Node.cpp +++ b/cpp/src/Node.cpp @@ -58,6 +58,7 @@ #include "command_classes/NodeNaming.h" #include "command_classes/NoOperation.h" #include "command_classes/Version.h" +#include "command_classes/Supervision.h" #include "command_classes/SwitchAll.h" #include "command_classes/ZWavePlusInfo.h" #include "command_classes/DeviceResetLocally.h" @@ -4049,3 +4050,35 @@ void Node::WriteMetaDataXML(TiXmlElement *mdElement) mdElement->LinkEndChild(cl); } } + +//----------------------------------------------------------------------------- +// +// Generate a new session id for Supervision encapsulation, if supported +//----------------------------------------------------------------------------- +uint8 Node::CreateSupervisionSession(uint8 _command_class_id, uint8 _index) +{ + if (Internal::CC::CommandClass* cc = GetCommandClass(Internal::CC::Supervision::StaticGetCommandClassId())) + { + return cc->CreateSupervisionSession(_command_class_id, _index); + } + else + { + return Internal::CC::Supervision::StaticNoSessionId(); + } +} + +//----------------------------------------------------------------------------- +// +// Get the index used by a session +//----------------------------------------------------------------------------- +uint32 Node::GetSupervisionIndex(uint8 _session_id) +{ + if (Internal::CC::CommandClass* cc = GetCommandClass(Internal::CC::Supervision::StaticGetCommandClassId())) + { + return cc->GetSupervisionIndex(_session_id); + } + else + { + return Internal::CC::Supervision::StaticNoIndex(); + } +} diff --git a/cpp/src/Node.h b/cpp/src/Node.h index 9fbd0f42af..bae66efb07 100644 --- a/cpp/src/Node.h +++ b/cpp/src/Node.h @@ -911,6 +911,10 @@ namespace OpenZWave void WriteMetaDataXML(TiXmlElement*); map m_metadata; map m_changeLog; + + public: + uint8 CreateSupervisionSession(uint8 _command_class_id, uint8 _index); + uint32 GetSupervisionIndex(uint8 _session_id); }; } //namespace OpenZWave diff --git a/cpp/src/Notification.cpp b/cpp/src/Notification.cpp index 675b6585eb..81b22657fe 100644 --- a/cpp/src/Notification.cpp +++ b/cpp/src/Notification.cpp @@ -336,6 +336,12 @@ string Notification::GetAsString() const case Type_ManufacturerSpecificDBReady: str = "ManufacturerSpecificDB Ready"; break; + case Type_LevelChangeStart: + str = "Level Change Start"; + break; + case Type_LevelChangeStop: + str = "Level Change Stop"; + break; } return str; diff --git a/cpp/src/Notification.h b/cpp/src/Notification.h index 455d536491..6e7a06e408 100644 --- a/cpp/src/Notification.h +++ b/cpp/src/Notification.h @@ -45,6 +45,8 @@ namespace OpenZWave class NodeNaming; class SceneActivation; class WakeUp; + class SwitchMultilevel; + class Color; } namespace VC { @@ -73,6 +75,8 @@ namespace OpenZWave friend class Internal::CC::SceneActivation; friend class Internal::CC::WakeUp; friend class Internal::CC::ApplicationStatus; + friend class Internal::CC::SwitchMultilevel; + friend class Internal::CC::Color; friend class Internal::ManufacturerSpecificDB; /* allow us to Stream a Notification */ //friend std::ostream &operator<<(std::ostream &os, const Notification &dt); @@ -119,7 +123,9 @@ namespace OpenZWave * Notification::GetEvent returns Driver::ControllerCommand and Notification::GetNotification returns Driver::ControllerState */ Type_NodeReset, /**< The Device has been reset and thus removed from the NodeList in OZW */ Type_UserAlerts, /**< Warnings and Notifications Generated by the library that should be displayed to the user (eg, out of date config files) */ - Type_ManufacturerSpecificDBReady /**< The ManufacturerSpecific Database Is Ready */ + Type_ManufacturerSpecificDBReady, /**< The ManufacturerSpecific Database Is Ready */ + Type_LevelChangeStart, /**< Start level changes (multilevel switch, color) */ + Type_LevelChangeStop /**< Stop level changes (multilevel switch, color) */ }; /** @@ -156,6 +162,53 @@ namespace OpenZWave Alert_ApplicationStatus_Rejected, /**< Command has been rejected */ }; + /** + * Types of things that support start/stop of level changes. + */ + enum LevelChangeType + { + LevelChange_Switch, /**< Multilevel Switch */ + LevelChange_Color /**< Color Switch start/stop level change */ + }; + + /** + * Interpretation of the up/down bits in a level change command. + * For color change, this is just up or down. For a multilevel switch with + * a secondary control, could ignore one or the other. + */ + enum LevelChangeDirection + { + LevelChangeDirection_Up, /**< When the change is started, increment. */ + LevelChangeDirection_Down, /**< When the change is started, decrement. */ + LevelChangeDirection_None /**< Do not increment or decrement. Used for multilevel switch with 2 switches. */ + }; + + /** + * Used for storing the parameters for a multilevel switch or color change start command. + * Only a multilevel switch has the secondary parameters. + */ + struct LevelChangeParameters + { + LevelChangeParameters(): + m_type( LevelChange_Switch ), + m_primaryDirection(LevelChangeDirection_None), + m_secondaryDirection(LevelChangeDirection_None), + m_ignoreStartLevel(0), + m_primaryStartLevel(0), + m_durationSeconds(0), + m_secondaryStepSize(0), + m_colorTarget(""){} + + LevelChangeType m_type; + LevelChangeDirection m_primaryDirection; + LevelChangeDirection m_secondaryDirection; + uint8 m_ignoreStartLevel; + uint8 m_primaryStartLevel; + uint16 m_durationSeconds; + uint8 m_secondaryStepSize; + string m_colorTarget; + }; + /** * Get the type of this notification. * \return the notification type. @@ -184,6 +237,15 @@ namespace OpenZWave return m_valueId.GetNodeId(); } + /** + * Get the CommandClass Instance associated with this notification. + * @return the instance ID + */ + uint8 GetInstance() const + { + return m_valueId.GetInstance(); + } + /** * Get the unique ValueID of any value involved in this notification. * \return the value's ValueID @@ -300,6 +362,11 @@ namespace OpenZWave } ; + LevelChangeParameters const& GetLevelChangeParameters () const + { + return m_levelChangeParameters; + } + private: Notification(NotificationType _type) : m_type(_type), m_byte(0), m_event(0), m_command(0), m_useralerttype(Alert_None) @@ -366,6 +433,36 @@ namespace OpenZWave assert(Type_UserAlerts == m_type); m_byte = timeout; } + void SetLevelChangeStartParameters( LevelChangeType type, + LevelChangeDirection primaryDirection, + LevelChangeDirection secondaryDirection, + uint8 ignoreStartLevel, + uint8 primaryStartLevel, + uint16 durationSeconds, + uint8 secondaryStepSize, + string colorTarget ) + { + assert(Type_LevelChangeStart == m_type); + m_levelChangeParameters.m_type = type; + m_levelChangeParameters.m_primaryDirection = primaryDirection; + m_levelChangeParameters.m_secondaryDirection = secondaryDirection; + m_levelChangeParameters.m_ignoreStartLevel = ignoreStartLevel; + m_levelChangeParameters.m_primaryStartLevel = primaryStartLevel; + m_levelChangeParameters.m_durationSeconds = durationSeconds; + m_levelChangeParameters.m_secondaryStepSize = secondaryStepSize; + m_levelChangeParameters.m_colorTarget = colorTarget; + } + void SetLevelChangeType ( LevelChangeType type ) + { + assert(Type_LevelChangeStart == m_type || Type_LevelChangeStop == m_type ); + m_levelChangeParameters.m_type = type; + } + + void SetColorTarget ( string colorTarget ) + { + assert(Type_LevelChangeStart == m_type || Type_LevelChangeStop == m_type ); + m_levelChangeParameters.m_colorTarget = colorTarget; + } NotificationType m_type; ValueID m_valueId; @@ -374,6 +471,7 @@ namespace OpenZWave uint8 m_command; UserAlertNotification m_useralerttype; string m_comport; + LevelChangeParameters m_levelChangeParameters; }; } //namespace OpenZWave diff --git a/cpp/src/Options.cpp b/cpp/src/Options.cpp index 9137f0e7cc..381d6e4cfe 100644 --- a/cpp/src/Options.cpp +++ b/cpp/src/Options.cpp @@ -100,6 +100,7 @@ Options* Options::Create(string const& _configPath, string const& _userPath, str s_instance->AddOptionBool("Logging", true); // Enable logging of library activity. s_instance->AddOptionString("LogFileName", "OZW_Log.txt", false); // Name of the log file (can be changed via Log::SetLogFileName) + s_instance->AddOptionString("LogFilePath", string(""), false); // Alternate path (rather than using userpath) for the logfile - e.g., to keep in RAM s_instance->AddOptionBool("AppendLogFile", false); // Append new session logs to existing log file (false = overwrite) s_instance->AddOptionBool("ConsoleOutput", true); // Display log information on console (as well as save to disk) s_instance->AddOptionInt("SaveLogLevel", LogLevel_Detail); // Save (to file) log messages equal to or above LogLevel_Detail diff --git a/cpp/src/command_classes/CentralScene.cpp b/cpp/src/command_classes/CentralScene.cpp index d088894547..9eb4ce778c 100644 --- a/cpp/src/command_classes/CentralScene.cpp +++ b/cpp/src/command_classes/CentralScene.cpp @@ -87,7 +87,7 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- CentralScene::CentralScene(uint32 const _homeId, uint8 const _nodeId) : - CommandClass(_homeId, _nodeId), m_slowrefresh(false), m_sequence(0) + CommandClass(_homeId, _nodeId), m_slowrefresh(false), m_sequence(0xFE) // init to this to pick up initial set to scene 0 { m_dom.EnableFlag(STATE_FLAG_CS_SCENECOUNT, 0); m_dom.EnableFlag(STATE_FLAG_CS_CLEARTIMEOUT, 1000); diff --git a/cpp/src/command_classes/Color.cpp b/cpp/src/command_classes/Color.cpp index fe97a028d6..6c66949200 100644 --- a/cpp/src/command_classes/Color.cpp +++ b/cpp/src/command_classes/Color.cpp @@ -35,6 +35,7 @@ #include "Node.h" #include "Driver.h" #include "platform/Log.h" +#include "Notification.h" #include "value_classes/ValueInt.h" #include "value_classes/ValueString.h" @@ -394,6 +395,104 @@ namespace OpenZWave return true; } + /* + * Next three are to support the RGBGenie, which is a wall plate you can use to send signals + * to the lights in a group. In this case, we want to receive the signals so that we can act on + * them. + */ + if (ColorCmd_Set == (ColorCmd) _data[0]) + { + // Get our current color capabilities -- we'll be updating if we see a new color channel set. + uint16_t f_capabilities = m_dom.GetFlagShort(STATE_FLAG_COLOR_CHANNELS); + uint16_t f_save_capabilities = f_capabilities; + + uint8 nComponents = _data[1] & 0x1F; + for ( uint8_t idx = 0; idx < nComponents; idx++ ) + { + uint8 coloridx = _data[ 2 + idx*2 ]; + m_colorvalues[coloridx] = _data[ 3 + idx*2 ]; + Log::Write(LogLevel_Detail, GetNodeId(), "Setting index %u to value %u", coloridx, m_colorvalues[ coloridx ]); + + // If we're being asked to set a color, be sure it's set in our capabilities (i.e., force it)! + // Each bit stands for one of the color indices. + f_capabilities |= (1 << coloridx); + } + if ( f_capabilities != f_save_capabilities ) // then we updated it along the way . . . + { + m_dom.SetFlagShort(STATE_FLAG_COLOR_CHANNELS, f_capabilities); + } + string colorStr = decodeColor(m_colorvalues); + Log::Write(LogLevel_Info, GetNodeId(), "Received COLOR_SET from Device: %s for instance %d", colorStr.c_str(), _instance); + + Internal::VC::ValueString* color = static_cast(GetValue(_instance, ValueID_Index_Color::Color)); + + if ( ! color ) + { + if (Node* node = GetNodeUnsafe()) + { + // Create it read-only ... + node->CreateValueString(ValueID::ValueGenre_User, GetCommandClassId(), _instance, + ValueID_Index_Color::Color, "Color", "", true, false, "#000000", 0); + color = static_cast(GetValue(_instance, ValueID_Index_Color::Color)); + } + else + { + Log::Write(LogLevel_Error, GetNodeId(), "Couldn't get node (!?)."); + } + } + + color->OnValueRefreshed(colorStr); + color->Release(); + + /* if we got a updated Color Index Value - Update our ValueID */ + if (Internal::VC::ValueList* coloridx = static_cast(GetValue(_instance, ValueID_Index_Color::Index))) + { + if ((m_dom.GetFlagShort(STATE_FLAG_COLOR_CHANNELS)) & (1 << (COLORIDX_INDEXCOLOR))) + { + coloridx->OnValueRefreshed(m_colorvalues[COLORIDX_INDEXCOLOR]); + } + else + { + coloridx->OnValueRefreshed(decodeColorList(colorStr)); + } + coloridx->Release(); + } + + return true; + } + if (ColorCmd_StartCapabilityLevelChange == (ColorCmd) _data[0]) + { + uint8 ignoreStartLevel = ( _data[1] >> 5 ) & 0x01; + uint8 directionRaw = ( _data[1] >> 6 ) & 0x01; + uint8 colorComponentId = _data[2]; + uint8 startLevel = _data[3]; + uint16 durationSeconds = 4; // TODO: should do something else here. Overall, this seems like a good duration, but ... + string colorStr = decodeColorIndexAndAddColor(colorComponentId); + + Notification::LevelChangeDirection direction = ( directionRaw == 0) ? Notification::LevelChangeDirection_Up : Notification::LevelChangeDirection_Down; + + Log::Write(LogLevel_Info, GetNodeId(), "Received ColorCmd_StartStateChange from node %d - instance %d. Color index %d - %s. Sending event notification.", GetNodeId(), _instance, colorComponentId, colorStr.c_str()); + Notification* notification = new Notification(Notification::Type_LevelChangeStart); + notification->SetHomeNodeIdAndInstance(GetHomeId(), GetNodeId(), _instance); + notification->SetLevelChangeStartParameters( Notification::LevelChange_Color, direction, Notification::LevelChangeDirection_None, ignoreStartLevel, startLevel, durationSeconds, 0, colorStr ); + GetDriver()->QueueNotification(notification); + + return true; + } + if (ColorCmd_StopStateChange == (ColorCmd) _data[0]) + { + uint colorComponentId = _data[1]; + string colorStr = decodeColorIndexAndAddColor(colorComponentId); + Log::Write(LogLevel_Info, GetNodeId(), "Received ColorCmd_StopStateChange from node %d - instance %d. Color index %d - %s. Sending event notification.", GetNodeId(), _instance, colorComponentId, colorStr.c_str()); + Notification* notification = new Notification(Notification::Type_LevelChangeStop); + notification->SetHomeNodeIdAndInstance(GetHomeId(), GetNodeId(), _instance); + notification->SetLevelChangeType( Notification::LevelChange_Color ); + notification->SetColorTarget( colorStr ); + GetDriver()->QueueNotification(notification); + + return true; + } + return false; } @@ -520,6 +619,13 @@ namespace OpenZWave return 17; } + /** + * NOTE: 12.30.2020: This had a defect in that instead of decoding from the valueArray passed in, + * it was always decoding from m_colorvalues. This only impacts the calls that + * were calling with m_colorTargetValues. Pretty sure they were defective. + * @param valueArray + * @return + */ string Color::decodeColor(uint8 valueArray[9]) { /* create a RGB[W] String */ @@ -530,17 +636,17 @@ namespace OpenZWave ss << "#"; /* do R */ if ((f_capabilities) & (1 << (COLORIDX_RED))) - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_RED]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_RED]; else ss << "00"; /* do G */ if ((f_capabilities) & (1 << (COLORIDX_GREEN))) - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_GREEN]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_GREEN]; else ss << "00"; /* do B */ if ((f_capabilities) & (1 << (COLORIDX_BLUE))) - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_BLUE]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_BLUE]; else ss << "00"; @@ -548,18 +654,18 @@ namespace OpenZWave if (((f_capabilities) & (1 << (COLORIDX_WARMWHITE))) && ((f_capabilities) & (1 << (COLORIDX_COLDWHITE)))) { /* append them both */ - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_WARMWHITE]; - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_COLDWHITE]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_WARMWHITE]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_COLDWHITE]; } else if ((f_capabilities) & (1 << (COLORIDX_WARMWHITE))) { /* else, if the warm white is present, append that */ - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_WARMWHITE]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_WARMWHITE]; } else if ((f_capabilities) & (1 << (COLORIDX_COLDWHITE))) { /* else, if the cold white is present, append that */ - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_COLDWHITE]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_COLDWHITE]; } else { @@ -578,7 +684,7 @@ namespace OpenZWave usingbuf = false; } /* and then our Color */ - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_AMBER]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_AMBER]; } else { @@ -597,7 +703,7 @@ namespace OpenZWave usingbuf = false; } /* and then our Color */ - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_CYAN]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_CYAN]; } else { @@ -616,7 +722,7 @@ namespace OpenZWave usingbuf = false; } /* and then our Color */ - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_PURPLE]; + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) valueArray[COLORIDX_PURPLE]; } /* No need for a else case here as COLORIDX_PURPLE is the last color. If its not supported, we * don't put anything in our Color String @@ -624,6 +730,32 @@ namespace OpenZWave return ss.str(); } +//----------------------------------------------------------------------------- +// +// Helper function for turning a single color index value into a string. Used +// when handling color change start/stop (applies to single color index). We +// also force the color index into our supported flags, as if we're being asked +// to change it, we must support it! Note that that makes this a single-use utility; +// you would modify it to optionally force the flag if you wanted to use it elsewhere. +//----------------------------------------------------------------------------- + + string Color::decodeColorIndexAndAddColor ( uint8 const colorIndex ) + { + // Get our current color capabilities -- we'll be updating if we see a new color channel set. + uint16_t f_capabilities = m_dom.GetFlagShort(STATE_FLAG_COLOR_CHANNELS); + uint8 colorvalues[9]; + for (uint8 i = 0; i < 9; i++) + colorvalues[i] = 0; + + colorvalues[colorIndex] = 0xFF; + // If we're being asked to set a color, be sure it's set in our capabilities (i.e., force it)! + // Each bit stands for one of the color indices. + if ( ! ( f_capabilities & (1 << colorIndex)) ) { // ... then it's a new color index + m_dom.SetFlagShort(STATE_FLAG_COLOR_CHANNELS, f_capabilities | (1 << colorIndex)); + } + return decodeColor(colorvalues); + } + //----------------------------------------------------------------------------- // // Set the device's Color value diff --git a/cpp/src/command_classes/Color.h b/cpp/src/command_classes/Color.h index 104ace81f8..8374b04cec 100644 --- a/cpp/src/command_classes/Color.h +++ b/cpp/src/command_classes/Color.h @@ -84,6 +84,7 @@ namespace OpenZWave virtual void CreateVars(uint8 const _instance) override; string decodeColor(uint8 valueArray[9]); uint8 decodeColorList(string color); + string decodeColorIndexAndAddColor ( uint8 const colorIndex ); private: Color(uint32 const _homeId, uint8 const _nodeId); diff --git a/cpp/src/command_classes/CommandClass.h b/cpp/src/command_classes/CommandClass.h index 92b382691e..4dc194a8c9 100644 --- a/cpp/src/command_classes/CommandClass.h +++ b/cpp/src/command_classes/CommandClass.h @@ -149,6 +149,13 @@ namespace OpenZWave virtual bool supportsMultiInstance() { return true; } + virtual uint8 CreateSupervisionSession(uint8 _command_class_id, uint8 _index) { + return 0; + } + virtual uint32 GetSupervisionIndex(uint8 _session_id) { + return 0; + } + virtual void SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance) {}; void SetInstances(uint8 const _instances); void SetInstance(uint8 const _endPoint); diff --git a/cpp/src/command_classes/CommandClasses.cpp b/cpp/src/command_classes/CommandClasses.cpp index d8748caeec..41345ce783 100644 --- a/cpp/src/command_classes/CommandClasses.cpp +++ b/cpp/src/command_classes/CommandClasses.cpp @@ -70,6 +70,7 @@ #include "command_classes/SensorBinary.h" #include "command_classes/SensorMultilevel.h" #include "command_classes/SoundSwitch.h" +#include "command_classes/Supervision.h" #include "command_classes/SwitchAll.h" #include "command_classes/SwitchBinary.h" #include "command_classes/SwitchMultilevel.h" @@ -226,6 +227,7 @@ namespace OpenZWave cc.Register(SensorBinary::StaticGetCommandClassId(), SensorBinary::StaticGetCommandClassName(), SensorBinary::Create); cc.Register(SensorMultilevel::StaticGetCommandClassId(), SensorMultilevel::StaticGetCommandClassName(), SensorMultilevel::Create); cc.Register(SoundSwitch::StaticGetCommandClassId(), SoundSwitch::StaticGetCommandClassName(), SoundSwitch::Create); + cc.Register(Supervision::StaticGetCommandClassId(), Supervision::StaticGetCommandClassName(), Supervision::Create); cc.Register(SwitchAll::StaticGetCommandClassId(), SwitchAll::StaticGetCommandClassName(), SwitchAll::Create); cc.Register(SwitchBinary::StaticGetCommandClassId(), SwitchBinary::StaticGetCommandClassName(), SwitchBinary::Create); cc.Register(SwitchMultilevel::StaticGetCommandClassId(), SwitchMultilevel::StaticGetCommandClassName(), SwitchMultilevel::Create); diff --git a/cpp/src/command_classes/Configuration.cpp b/cpp/src/command_classes/Configuration.cpp index 3e60385853..1f7a577b58 100644 --- a/cpp/src/command_classes/Configuration.cpp +++ b/cpp/src/command_classes/Configuration.cpp @@ -61,7 +61,8 @@ namespace OpenZWave bool Configuration::HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance // = 1 ) { - if (ConfigurationCmd_Report == (ConfigurationCmd) _data[0]) + if ((ConfigurationCmd_Report == (ConfigurationCmd) _data[0]) + || (ConfigurationCmd_Set == (ConfigurationCmd) _data[0])) { // Extract the parameter index and value uint8 parameter = _data[1]; @@ -73,7 +74,10 @@ namespace OpenZWave paramValue |= (int32) _data[i + 3]; } - if (Internal::VC::Value* value = GetValue(1, parameter)) + Log::Write(LogLevel_Info, GetNodeId(), "Configuration Set: Parameter %d - Size %d - Value %d", parameter, size, paramValue); + + // This had previously been forced to be GetValue(1, ...), ignoring the _instance. + if (Internal::VC::Value* value = GetValue(_instance, parameter)) { switch (value->GetID().GetType()) { @@ -156,6 +160,10 @@ namespace OpenZWave Log::Write(LogLevel_Info, GetNodeId(), "Received Configuration report: Parameter=%d, Value=%d", parameter, paramValue); return true; } + else + { + Log::Write(LogLevel_Info, GetNodeId(), "Configuration Set: Unhandled command %d", _data[0]); + } return false; } diff --git a/cpp/src/command_classes/MultiChannelAssociation.cpp b/cpp/src/command_classes/MultiChannelAssociation.cpp index 5ab4f3738e..f7ac3bae21 100644 --- a/cpp/src/command_classes/MultiChannelAssociation.cpp +++ b/cpp/src/command_classes/MultiChannelAssociation.cpp @@ -59,6 +59,7 @@ namespace OpenZWave CommandClass(_homeId, _nodeId), m_queryAll(false), m_numGroups(0) { m_com.EnableFlag(COMPAT_FLAG_MCA_FORCEINSTANCES, true); + m_com.EnableFlag(COMPAT_FLAG_MULTICHANNEL_SENDER_ONLY, false); SetStaticRequest(StaticRequest_Values); } diff --git a/cpp/src/command_classes/MultiInstance.cpp b/cpp/src/command_classes/MultiInstance.cpp index ad8221ea17..b0353f5003 100644 --- a/cpp/src/command_classes/MultiInstance.cpp +++ b/cpp/src/command_classes/MultiInstance.cpp @@ -79,6 +79,7 @@ namespace OpenZWave m_com.EnableFlag(COMPAT_FLAG_MI_IGNMCCAPREPORTS, false); m_com.EnableFlag(COMPAT_FLAG_MI_ENDPOINTHINT, 0); m_com.EnableFlag(COMPAT_FLAG_MI_REMOVECC, false); + m_com.EnableFlag(COMPAT_FLAG_MULTICHANNEL_SENDER_ONLY, false); } //----------------------------------------------------------------------------- @@ -609,16 +610,59 @@ namespace OpenZWave */ if (endPoint == 0) { - Log::Write(LogLevel_Info, GetNodeId(), "MultiChannelEncap with endpoint set to 0 - Send to Root Device"); - pCommandClass->HandleMsg(&_data[4], _length - 4); - return; + /* + * If this flag is set, then we have a device that we can make an end-point association + * with for *our* (simulated) end-point, and it will return commands to that end point. + * Example here is the RGBGenie wall panel, which can associate color commands to groups. + * If we want to pick those up (segregated by group), we need to catch the group (endpoint) + * indicated in the return. COMPAT_FLAG_MULTICHANNEL_SENDER_ONLY indicates this case. + */ + if ( m_com.GetFlagBool(Internal::COMPAT_FLAG_MULTICHANNEL_SENDER_ONLY) == true ) + { + endPoint = _data[2] & 0x7f; + Log::Write(LogLevel_Info, GetNodeId(), "MultiChannelEncap with (s)endpoint set to %d.", endPoint ); + + uint8 testInstance = pCommandClass->GetInstance(endPoint); + + if ( testInstance != endPoint ) + { + Log::Write(LogLevel_Info, GetNodeId(), "MultiChannelEncap fixing instance %d for endpoint %d.", testInstance, endPoint ); + + pCommandClass->SetInstance( endPoint ); + pCommandClass->SetEndPoint( endPoint, endPoint ); + // Should probably also set an instance label here (?) -- pCommandClass-SetInstanceLabel( endPoint, ??) + + /* + * TODO: solve incorrect value label for first discovered instance if IncludeInstanceLabel set to true + * The way we're doing this, which is to add the instances at the point we receive a message, + * introduces a defect. See Manager::GetValueLabel(). It checks the IncludeInstanceLabel + * configuration option, and if set, then it also checks to see if the CC has multiple instances. + * In our case, for the very first added instance, we will not have multiple instances, + * so the label will *not* include the Instance # prefix. It's not immediately clear to me + * how to solve this in a clean way, as for the device I'm adding (RGBGenie), you don't necessarily + * know what endpoints you're going to get back until you get a message on them. The messy way + * (brute force) to solve this would be to add an "isMultiInstance" flag in the CommandClass, and + * set that to true here when we detect this, and then check it in Manager::GetValueLabel(). But + * for that flag to be meaningful everywhere (i.e., to have clean semantics, as opposed to just + * brute-forcing this one case) would require a more thorough implementation. + * The temporary workaround is just to always handle both cases in your client (instance label in value + * label, or none). + */ + } + } + else + { + Log::Write(LogLevel_Info, GetNodeId(), "MultiChannelEncap with endpoint set to 0 - Send to Root Device"); + pCommandClass->HandleMsg(&_data[4], _length - 4); + return; + } } uint8 instance = pCommandClass->GetInstance(endPoint); /* we can never have a 0 Instance */ if (instance == 0) instance = 1; - Log::Write(LogLevel_Info, GetNodeId(), "Received a MultiChannelEncap from node %d, endpoint %d for Command Class %s", GetNodeId(), endPoint, pCommandClass->GetCommandClassName().c_str()); + Log::Write(LogLevel_Info, GetNodeId(), "Received a MultiChannelEncap from node %d, endpoint %d, instance %d for Command Class %s", GetNodeId(), endPoint, instance, pCommandClass->GetCommandClassName().c_str()); if (!pCommandClass->IsAfterMark()) { if (!pCommandClass->HandleMsg(&_data[4], _length - 4, instance)) diff --git a/cpp/src/command_classes/Supervision.cpp b/cpp/src/command_classes/Supervision.cpp new file mode 100644 index 0000000000..97908e081c --- /dev/null +++ b/cpp/src/command_classes/Supervision.cpp @@ -0,0 +1,174 @@ +//----------------------------------------------------------------------------- +// +// Supervision.h +// +// Implementation of the Z-Wave COMMAND_CLASS_SUPERVISION +// +// Copyright (c) 2020 Mark Ruys +// +// SOFTWARE NOTICE AND LICENSE +// +// This file is part of OpenZWave. +// +// OpenZWave is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published +// by the Free Software Foundation, either version 3 of the License, +// or (at your option) any later version. +// +// OpenZWave is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with OpenZWave. If not, see . +// +//----------------------------------------------------------------------------- + +#include "command_classes/CommandClasses.h" +#include "command_classes/Supervision.h" +#include "Defs.h" +#include "Msg.h" +#include "Node.h" +#include "Driver.h" +#include "platform/Log.h" + +#include "value_classes/Value.h" + +namespace OpenZWave +{ + namespace Internal + { + namespace CC + { + uint8 Supervision::CreateSupervisionSession(uint8 _command_class_id, uint8 _index) + { + m_last_session_id++; + m_last_session_id &= 0x3f; + + if (m_sessions.size() >= 6) + { + // Clean up oldest session, we support max 6 simultaneous sessions per node + m_sessions.pop_front(); + } + + m_sessions.push_back({ + .session_id = m_last_session_id, + .command_class_id = _command_class_id, + .index = _index + }); + + return m_last_session_id; + } + + uint32 Supervision::GetSupervisionIndex(uint8 _session_id) + { + for (auto it = m_sessions.cbegin(); it != m_sessions.cend(); ++it) + { + if (it->session_id == _session_id) + { + return it->index; + } + } + + return StaticNoIndex(); + } + +//----------------------------------------------------------------------------- +// +// Handle a supervision report message from the Z-Wave network +//----------------------------------------------------------------------------- + void Supervision::HandleSupervisionReport(uint8 const* _data, uint32 const _length, uint32 const _instance) + { + if (Node* node = GetNodeUnsafe()) + { + if (_length >= 4) + { + uint8 more_status_updates = _data[1] >> 7; + uint8 session_id = _data[1] & 0x3f; + uint8 status = _data[2]; + int duration = _data[3]; + + const char *status_identifier; + switch (status) { + case 0x00: status_identifier = "NO_SUPPORT"; break; + case 0x01: status_identifier = "WORKING"; break; + case 0x02: status_identifier = "FAIL"; break; + case 0xff: status_identifier = "SUCCESS"; break; + default: status_identifier = "UNKNOWN"; break; + } + + for (auto it = m_sessions.cbegin(); it != m_sessions.cend(); ++it) + { + if (it->session_id == session_id) + { + if (CommandClass* pCommandClass = node->GetCommandClass(it->command_class_id)) + { + Log::Write(LogLevel_Info, GetNodeId(), "Received SupervisionReport: session %d, %s index %d, status %s, duration %d sec, more status updates %d", + session_id, + pCommandClass->GetCommandClassName().c_str(), it->index, + status_identifier, decodeDuration(duration), more_status_updates); + + if (status == SupervisionStatus::SupervisionStatus_Success) + { + pCommandClass->SupervisionSessionSuccess(session_id, _instance); + } + } + else + { + Log::Write(LogLevel_Warning, GetNodeId(), "Received SupervisionReport for unknown CC %d", it->command_class_id); + } + + if (more_status_updates == 0) + { + m_sessions.erase(it); + } + + return; + } + } + + Log::Write(LogLevel_Warning, GetNodeId(), "Received SupervisionReport: unknown session %d, status %s, duration %d sec, more status updates %d", + session_id, + status_identifier, decodeDuration(duration), more_status_updates); + } + } + } + + bool Supervision::HandleIncomingMsg(uint8 const* _data, uint32 const _length, uint32 const _instance) + { + return HandleMsg(_data, _length, _instance); + } + +//----------------------------------------------------------------------------- +// +// Handle a message from the Z-Wave network +//----------------------------------------------------------------------------- + bool Supervision::HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance) // = 1 + { + bool handled = false; + Node* node = GetNodeUnsafe(); + if (node != NULL) + { + handled = true; + switch ((SupervisionCmd) _data[0]) + { + case SupervisionCmd_Report: + { + HandleSupervisionReport(_data, _length, _instance); + break; + } + default: + { + handled = false; + break; + } + } + } + + return handled; + } + } // namespace CC + } // namespace Internal +} // namespace OpenZWave + diff --git a/cpp/src/command_classes/Supervision.h b/cpp/src/command_classes/Supervision.h new file mode 100644 index 0000000000..2484717055 --- /dev/null +++ b/cpp/src/command_classes/Supervision.h @@ -0,0 +1,127 @@ +//----------------------------------------------------------------------------- +// +// Supervision.h +// +// Implementation of the Z-Wave COMMAND_CLASS_SUPERVISION +// +// Copyright (c) 2020 Mark Ruys +// +// SOFTWARE NOTICE AND LICENSE +// +// This file is part of OpenZWave. +// +// OpenZWave is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published +// by the Free Software Foundation, either version 3 of the License, +// or (at your option) any later version. +// +// OpenZWave is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with OpenZWave. If not, see . +// +//----------------------------------------------------------------------------- + +#ifndef _Supervision_H +#define _Supervision_H + +#include + +#include "command_classes/CommandClass.h" + +namespace OpenZWave +{ + namespace Internal + { + namespace CC + { + /** \brief Implements COMMAND_CLASS_SUPERVISION (0x6c), a Z-Wave device command class. + * \ingroup CommandClass + */ + class Supervision: public CommandClass + { + public: + enum SupervisionCmd + { + SupervisionCmd_Get = 0x01, + SupervisionCmd_Report = 0x02, + }; + enum SupervisionMoreStatusUpdates + { + SupervisionMoreStatusUpdates_LastReport = 0x00, + SupervisionMoreStatusUpdates_MoreReports = 0x80, + }; + enum SupervisionStatus + { + SupervisionStatus_NoSupport = 0x00, + SupervisionStatus_Working = 0x01, + SupervisionStatus_Fail = 0x02, + SupervisionStatus_Success = 0xff + }; + + static CommandClass* Create(uint32 const _homeId, uint8 const _nodeId) + { + return new Supervision(_homeId, _nodeId); + } + virtual ~Supervision() + { + } + + static uint8 const StaticGetCommandClassId() + { + return 0x6c; + } + static string const StaticGetCommandClassName() + { + return "COMMAND_CLASS_SUPERVISION"; + } + + uint8 CreateSupervisionSession(uint8 _command_class_id, uint8 _index); + static uint8 const StaticNoSessionId() + { + return 0xff; // As sessions are only 5 bits, this value will never match + } + uint32 GetSupervisionIndex(uint8 _session_id); + static uint32 const StaticNoIndex() + { + return 0xffff; // As indices are max 16 bits, this value will never match + } + + // From CommandClass + virtual uint8 const GetCommandClassId() const override + { + return StaticGetCommandClassId(); + } + virtual string const GetCommandClassName() const override + { + return StaticGetCommandClassName(); + } + virtual bool HandleIncomingMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; + virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; + + private: + Supervision(uint32 const _homeId, uint8 const _nodeId) : + CommandClass(_homeId, _nodeId), + m_last_session_id{StaticNoSessionId()} + { + } + + struct s_Session { + uint8 session_id; + uint8 command_class_id; + uint8 index; + }; + std::deque m_sessions; + uint8 m_last_session_id; + + void HandleSupervisionReport(uint8 const* _data, uint32 const _length, uint32 const _instance); + }; + } // namespace CC + } // namespace Internal +} // namespace OpenZWave + +#endif + diff --git a/cpp/src/command_classes/SwitchBinary.cpp b/cpp/src/command_classes/SwitchBinary.cpp index df5d079d0d..0fa9cc1332 100644 --- a/cpp/src/command_classes/SwitchBinary.cpp +++ b/cpp/src/command_classes/SwitchBinary.cpp @@ -30,6 +30,7 @@ #include "command_classes/CommandClasses.h" #include "command_classes/SwitchBinary.h" #include "command_classes/WakeUp.h" +#include "command_classes/Supervision.h" #include "Defs.h" #include "Msg.h" #include "Driver.h" @@ -139,6 +140,29 @@ namespace OpenZWave return false; } + + void SwitchBinary::SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance) + { + if (Node* node = GetNodeUnsafe()) + { + uint32 index = node->GetSupervisionIndex(_session_id); + + if (index != Internal::CC::Supervision::StaticNoIndex()) + { + if (Internal::VC::ValueBool* value = static_cast(GetValue(_instance, index))) + { + value->ConfirmNewValue(); + + Log::Write(LogLevel_Info, GetNodeId(), "Confirmed switch binary index %d to value=%s", + index, value->GetValue() ? "On" : "Off"); + } + } + else + { + Log::Write(LogLevel_Info, GetNodeId(), "Ignore unknown supervision session %d", _session_id); + } + } + } //----------------------------------------------------------------------------- // @@ -212,41 +236,54 @@ namespace OpenZWave { uint8 const nodeId = GetNodeId(); uint8 const targetValue = _state ? 0xff : 0; + + if (Node* node = GetNodeUnsafe()) + { + //add supervision encapsulation if supported + uint8 index = ValueID_Index_SwitchBinary::Level; + uint8 supervision_session_id = node->CreateSupervisionSession(StaticGetCommandClassId(), index); + if (supervision_session_id == Internal::CC::Supervision::StaticNoSessionId()) + { + Log::Write(LogLevel_Debug, GetNodeId(), "Supervision not supported, fall back to setpoint set/get"); + } - Log::Write(LogLevel_Info, nodeId, "SwitchBinary::Set - Setting to %s", _state ? "On" : "Off"); - Msg* msg = new Msg("SwitchBinaryCmd_Set", nodeId, REQUEST, FUNC_ID_ZW_SEND_DATA, true); - msg->SetInstance(this, _instance); - msg->Append(nodeId); + Log::Write(LogLevel_Info, nodeId, "SwitchBinary::Set - Setting to %s", _state ? "On" : "Off"); + Msg* msg = new Msg("SwitchBinaryCmd_Set", nodeId, REQUEST, FUNC_ID_ZW_SEND_DATA, true); + msg->SetInstance(this, _instance); + msg->SetSupervision(supervision_session_id); + msg->Append(nodeId); - if (GetVersion() >= 2) - { - Internal::VC::ValueInt* durationValue = static_cast(GetValue(_instance, ValueID_Index_SwitchBinary::Duration)); - uint32 duration = durationValue->GetValue(); - durationValue->Release(); - if (duration > 7620) - Log::Write(LogLevel_Info, GetNodeId(), " Duration: Device Default"); - else if (duration > 0x7F) - Log::Write(LogLevel_Info, GetNodeId(), " Rouding to %d Minutes (over 127 seconds)", encodeDuration(duration)-0x79); - else - Log::Write(LogLevel_Info, GetNodeId(), " Duration: %d seconds", duration); + if (GetVersion() >= 2) + { + Internal::VC::ValueInt* durationValue = static_cast(GetValue(_instance, ValueID_Index_SwitchBinary::Duration)); + uint32 duration = durationValue->GetValue(); + durationValue->Release(); + if (duration > 7620) + Log::Write(LogLevel_Info, GetNodeId(), " Duration: Device Default"); + else if (duration > 0x7F) + Log::Write(LogLevel_Info, GetNodeId(), " Rouding to %d Minutes (over 127 seconds)", encodeDuration(duration)-0x79); + else + Log::Write(LogLevel_Info, GetNodeId(), " Duration: %d seconds", duration); - msg->Append(4); - msg->Append(GetCommandClassId()); - msg->Append(SwitchBinaryCmd_Set); - msg->Append(targetValue); - msg->Append(encodeDuration(duration)); - } - else - { - msg->Append(3); - msg->Append(GetCommandClassId()); - msg->Append(SwitchBinaryCmd_Set); - msg->Append(targetValue); - } + msg->Append(4); + msg->Append(GetCommandClassId()); + msg->Append(SwitchBinaryCmd_Set); + msg->Append(targetValue); + msg->Append(encodeDuration(duration)); + } + else + { + msg->Append(3); + msg->Append(GetCommandClassId()); + msg->Append(SwitchBinaryCmd_Set); + msg->Append(targetValue); + } - msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); - return true; + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + return true; + } + return false; } //----------------------------------------------------------------------------- diff --git a/cpp/src/command_classes/SwitchBinary.h b/cpp/src/command_classes/SwitchBinary.h index ff4fdb0104..c301a73d67 100644 --- a/cpp/src/command_classes/SwitchBinary.h +++ b/cpp/src/command_classes/SwitchBinary.h @@ -80,6 +80,7 @@ namespace OpenZWave { return 2; } + virtual void SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance); protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/SwitchMultilevel.cpp b/cpp/src/command_classes/SwitchMultilevel.cpp index 7685b81bbf..bb6790a72c 100644 --- a/cpp/src/command_classes/SwitchMultilevel.cpp +++ b/cpp/src/command_classes/SwitchMultilevel.cpp @@ -28,11 +28,13 @@ #include "command_classes/CommandClasses.h" #include "command_classes/SwitchMultilevel.h" #include "command_classes/WakeUp.h" +#include "command_classes/Supervision.h" #include "Defs.h" #include "Msg.h" #include "Driver.h" #include "Node.h" #include "platform/Log.h" +#include "Notification.h" #include "value_classes/ValueBool.h" #include "value_classes/ValueButton.h" @@ -222,10 +224,81 @@ namespace OpenZWave } return true; } + + if ( SwitchMultilevelCmd_StartLevelChange == (SwitchMultilevelCmd)_data[0]) + { + uint8 secondaryDirectionRaw = ( _data[1] >> 3 ) & 0x03; + uint8 ignoreStartLevel = ( _data[1] >> 5 ) & 0x01; + uint8 primaryDirectionRaw = ( _data[1] >> 6 ) & 0x03; + uint8 primaryStartLevel = _data[2]; + uint8 codedDuration = _data[3]; + uint8 secondaryStepSize = ( _length > 4 ) ? _data[4] : 0; // > Version 2 only + uint16 durationSeconds = codedDuration; + + Notification::LevelChangeDirection primaryDirection = ( primaryDirectionRaw == 0) ? Notification::LevelChangeDirection_Up + : ( ( primaryDirectionRaw == 1) ? Notification::LevelChangeDirection_Down : Notification::LevelChangeDirection_None); + Notification::LevelChangeDirection secondaryDirection = ( secondaryDirectionRaw == 0) ? Notification::LevelChangeDirection_Up + : ( ( secondaryDirectionRaw == 1) ? Notification::LevelChangeDirection_Down : Notification::LevelChangeDirection_None); + + if ( codedDuration > 0x7F ) { + if ( codedDuration == 0xFF ) { + // Uh, it's supposed to be factory duration. Call it 10 seconds for grins. + // TODO: figure something else out, here? + durationSeconds = 10; + } + else { + // It's in minutes, starting from 0x80 == 1 minute. + durationSeconds = ( codedDuration - 0x7F ) * 60; + } + } + + Log::Write(LogLevel_Info, GetNodeId(), "Received MultilevelSwitchStart from node %d. Sending event notification.", GetNodeId()); + Notification* notification = new Notification(Notification::Type_LevelChangeStart); + notification->SetHomeNodeIdAndInstance(GetHomeId(), GetNodeId(), _instance); + notification->SetLevelChangeStartParameters( Notification::LevelChange_Switch, primaryDirection, secondaryDirection, ignoreStartLevel, primaryStartLevel, durationSeconds, secondaryStepSize, "" ); + GetDriver()->QueueNotification(notification); + + return true; + } + + if ( SwitchMultilevelCmd_StopLevelChange == (SwitchMultilevelCmd)_data[0]) + { + Log::Write(LogLevel_Info, GetNodeId(), "Received MultilevelSwitchStop from node %d. Sending event notification.", GetNodeId()); + Notification* notification = new Notification(Notification::Type_LevelChangeStop); + notification->SetHomeNodeIdAndInstance(GetHomeId(), GetNodeId(), _instance); + notification->SetLevelChangeType( Notification::LevelChange_Switch ); + GetDriver()->QueueNotification(notification); + + return true; + } + Log::Write(LogLevel_Warning, GetNodeId(), "Recieved a Unhandled SwitchMultiLevel Command: %d", _data[0]); return false; } + void SwitchMultilevel::SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance) + { + if (Node* node = GetNodeUnsafe()) + { + uint32 index = node->GetSupervisionIndex(_session_id); + + if (index != Internal::CC::Supervision::StaticNoIndex()) + { + if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_SwitchMultiLevel::Level))) + { + value->ConfirmNewValue(); + + Log::Write(LogLevel_Info, GetNodeId(), "Confirmed switch multi level index %d to value=%d", + index, value->GetValue()); + } + } + else + { + Log::Write(LogLevel_Info, GetNodeId(), "Ignore unknown supervision session %d", _session_id); + } + } + } + //----------------------------------------------------------------------------- // // Set the level on a device @@ -394,40 +467,54 @@ namespace OpenZWave //----------------------------------------------------------------------------- bool SwitchMultilevel::SetLevel(uint8 const _instance, uint8 const _level) { - Log::Write(LogLevel_Info, GetNodeId(), "SwitchMultilevel::Set - Setting to level %d", _level); - Msg* msg = new Msg("SwitchMultilevelCmd_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); - msg->SetInstance(this, _instance); - msg->Append(GetNodeId()); - if (GetVersion() >= 2) - { - Internal::VC::ValueInt* durationValue = static_cast(GetValue(_instance, ValueID_Index_SwitchMultiLevel::Duration)); - uint32 duration = durationValue->GetValue(); - durationValue->Release(); - if (duration > 7620) - Log::Write(LogLevel_Info, GetNodeId(), " Duration: Device Default"); - else if (duration > 0x7F) - Log::Write(LogLevel_Info, GetNodeId(), " Rouding to %d Minutes (over 127 seconds)", encodeDuration(duration)-0x79); - else - Log::Write(LogLevel_Info, GetNodeId(), " Duration: %d seconds", duration); - - msg->Append(4); - msg->Append(GetCommandClassId()); - msg->Append(SwitchMultilevelCmd_Set); - msg->Append(_level); - msg->Append(encodeDuration(duration)); - } - else + if (Node* node = GetNodeUnsafe()) { - msg->Append(3); - msg->Append(GetCommandClassId()); - msg->Append(SwitchMultilevelCmd_Set); - msg->Append(_level); - } + //add supervision encapsulation if supported + uint8 index = ValueID_Index_SwitchMultiLevel::Level; + uint8 supervision_session_id = node->CreateSupervisionSession(StaticGetCommandClassId(), index); + if (supervision_session_id == Internal::CC::Supervision::StaticNoSessionId()) + { + Log::Write(LogLevel_Debug, GetNodeId(), "Supervision not supported, fall back to setpoint set/get"); + } - msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); - return true; + Log::Write(LogLevel_Info, GetNodeId(), "SwitchMultilevel::Set - Setting to level %d", _level); + Msg* msg = new Msg("SwitchMultilevelCmd_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); + msg->SetInstance(this, _instance); + msg->SetSupervision(supervision_session_id); + msg->Append(GetNodeId()); + + if (GetVersion() >= 2) + { + Internal::VC::ValueInt* durationValue = static_cast(GetValue(_instance, ValueID_Index_SwitchMultiLevel::Duration)); + uint32 duration = durationValue->GetValue(); + durationValue->Release(); + if (duration > 7620) + Log::Write(LogLevel_Info, GetNodeId(), " Duration: Device Default"); + else if (duration > 0x7F) + Log::Write(LogLevel_Info, GetNodeId(), " Rouding to %d Minutes (over 127 seconds)", encodeDuration(duration)-0x79); + else + Log::Write(LogLevel_Info, GetNodeId(), " Duration: %d seconds", duration); + + msg->Append(4); + msg->Append(GetCommandClassId()); + msg->Append(SwitchMultilevelCmd_Set); + msg->Append(_level); + msg->Append(encodeDuration(duration)); + } + else + { + msg->Append(3); + msg->Append(GetCommandClassId()); + msg->Append(SwitchMultilevelCmd_Set); + msg->Append(_level); + } + + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + return true; + } + return false; } //----------------------------------------------------------------------------- diff --git a/cpp/src/command_classes/SwitchMultilevel.h b/cpp/src/command_classes/SwitchMultilevel.h index 72de24dd75..6c3aa7561a 100644 --- a/cpp/src/command_classes/SwitchMultilevel.h +++ b/cpp/src/command_classes/SwitchMultilevel.h @@ -79,6 +79,7 @@ namespace OpenZWave { return 4; } + virtual void SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance); protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/ThermostatMode.cpp b/cpp/src/command_classes/ThermostatMode.cpp index 37c657f279..7f00a7e6e1 100644 --- a/cpp/src/command_classes/ThermostatMode.cpp +++ b/cpp/src/command_classes/ThermostatMode.cpp @@ -26,6 +26,7 @@ //----------------------------------------------------------------------------- #include "command_classes/CommandClasses.h" +#include "command_classes/Supervision.h" #include "command_classes/ThermostatMode.h" #include "Defs.h" #include "Msg.h" @@ -92,7 +93,7 @@ namespace OpenZWave static char const* c_modeName[] = { "Off", "Heat", "Cool", "Auto", "Aux Heat", "Resume", "Fan Only", "Furnace", "Dry Air", "Moist Air", "Auto Changeover", "Heat Econ", "Cool Econ", "Away", "Unknown", "Full Power", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Manufacturer Specific" }; - + ThermostatMode::ThermostatMode(uint32 const _homeId, uint8 const _nodeId) : CommandClass(_homeId, _nodeId), @@ -323,6 +324,7 @@ namespace OpenZWave } } } + /* at this stage, we don't know the Actual Mode of the Fan, so set it to the lowest * value... If not, set to 0, which possibly could be invalid... */ @@ -341,29 +343,70 @@ namespace OpenZWave return false; } + void ThermostatMode::SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance) + { + if (Node* node = GetNodeUnsafe()) + { + uint32 index = node->GetSupervisionIndex(_session_id); + + if (index != Internal::CC::Supervision::StaticNoIndex()) + { + // We have received the confirmation for the thermostat mode from the Z-Wave device + if (Internal::VC::ValueList* valueList = static_cast(GetValue(_instance, ValueID_Index_ThermostatMode::Mode))) + { + valueList->ConfirmNewValue(); + if (valueList->GetItem()) + { + Log::Write(LogLevel_Info, GetNodeId(), "Confirmed thermostat mode: %s", valueList->GetItem()->m_label.c_str()); + m_currentMode = valueList->GetItem()->m_value; + } + else + Log::Write(LogLevel_Warning, GetNodeId(), "Confirmed thermostat mode (No Item)"); + valueList->Release(); + } + } + else + { + Log::Write(LogLevel_Info, GetNodeId(), "Ignore unknown supervision session %d", _session_id); + } + } + } + //----------------------------------------------------------------------------- // // Set the device's thermostat mode //----------------------------------------------------------------------------- bool ThermostatMode::SetValue(Internal::VC::Value const& _value) { - if (ValueID::ValueType_List == _value.GetID().GetType()) + + if (Node* node = GetNodeUnsafe()) { - Internal::VC::ValueList const* value = static_cast(&_value); - if (value->GetItem() == NULL) - return false; - uint8 state = (uint8) value->GetItem()->m_value; + if (ValueID::ValueType_List == _value.GetID().GetType()) + { + Internal::VC::ValueList const* value = static_cast(&_value); + if (value->GetItem() == NULL) + return false; + uint8 state = (uint8)value->GetItem()->m_value; + + uint8 index = value->GetID().GetIndex() & 0xFF; + uint8 supervision_session_id = node->CreateSupervisionSession(StaticGetCommandClassId(), index); + if (supervision_session_id == Internal::CC::Supervision::StaticNoSessionId()) + { + Log::Write(LogLevel_Debug, GetNodeId(), "Supervision not supported, fall back to setpoint set/get"); + } - Msg* msg = new Msg("ThermostatModeCmd_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); - msg->SetInstance(this, _value.GetID().GetInstance()); - msg->Append(GetNodeId()); - msg->Append(3); - msg->Append(GetCommandClassId()); - msg->Append(ThermostatModeCmd_Set); - msg->Append(state); - msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); - return true; + Msg* msg = new Msg("ThermostatModeCmd_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); + msg->SetInstance(this, _value.GetID().GetInstance()); + msg->SetSupervision(supervision_session_id); + msg->Append(GetNodeId()); + msg->Append(3); + msg->Append(GetCommandClassId()); + msg->Append(ThermostatModeCmd_Set); + msg->Append(state); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + return true; + } } return false; diff --git a/cpp/src/command_classes/ThermostatMode.h b/cpp/src/command_classes/ThermostatMode.h index 0dc4d59254..efa6fae742 100644 --- a/cpp/src/command_classes/ThermostatMode.h +++ b/cpp/src/command_classes/ThermostatMode.h @@ -82,6 +82,7 @@ namespace OpenZWave { return 3; } + virtual void SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance); protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/ThermostatSetpoint.cpp b/cpp/src/command_classes/ThermostatSetpoint.cpp index 9dde0ca533..e8c3ece796 100644 --- a/cpp/src/command_classes/ThermostatSetpoint.cpp +++ b/cpp/src/command_classes/ThermostatSetpoint.cpp @@ -26,6 +26,7 @@ //----------------------------------------------------------------------------- #include "command_classes/CommandClasses.h" +#include "command_classes/Supervision.h" #include "command_classes/ThermostatSetpoint.h" #include "Defs.h" #include "Msg.h" @@ -142,7 +143,7 @@ namespace OpenZWave // // Handle a message from the Z-Wave network //----------------------------------------------------------------------------- - bool ThermostatSetpoint::HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance // = 1 + bool ThermostatSetpoint::HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance // = 1 ) { if (ThermostatSetpointCmd_Report == (ThermostatSetpointCmd) _data[0]) @@ -260,28 +261,64 @@ namespace OpenZWave return false; } + void ThermostatSetpoint::SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance) + { + if (Node* node = GetNodeUnsafe()) + { + uint32 index = node->GetSupervisionIndex(_session_id); + + if (index != Internal::CC::Supervision::StaticNoIndex()) + { + if (Internal::VC::ValueDecimal* value = static_cast(GetValue(_instance, index))) + { + value->ConfirmNewValue(); + + Log::Write(LogLevel_Info, GetNodeId(), "Confirmed thermostat setpoint index %d to %s%s", + index, value->GetValue().c_str(), value->GetUnits().c_str()); + } + } + else + { + Log::Write(LogLevel_Info, GetNodeId(), "Ignore unknown supervision session %d", _session_id); + } + } + } + //----------------------------------------------------------------------------- // // Set a thermostat setpoint temperature //----------------------------------------------------------------------------- bool ThermostatSetpoint::SetValue(Internal::VC::Value const& _value) { - if (ValueID::ValueType_Decimal == _value.GetID().GetType()) + if (Node* node = GetNodeUnsafe()) { - Internal::VC::ValueDecimal const* value = static_cast(&_value); - uint8 scale = strcmp("C", value->GetUnits().c_str()) ? 1 : 0; + if (ValueID::ValueType_Decimal == _value.GetID().GetType()) + { + Internal::VC::ValueDecimal const* value = static_cast(&_value); + + uint8 index = value->GetID().GetIndex() & 0xFF; + uint8 supervision_session_id = node->CreateSupervisionSession(StaticGetCommandClassId(), index); + if (supervision_session_id == Internal::CC::Supervision::StaticNoSessionId()) + { + Log::Write(LogLevel_Debug, GetNodeId(), "Supervision not supported, fall back to setpoint set/get"); + } - Msg* msg = new Msg("ThermostatSetpointCmd_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); - msg->SetInstance(this, _value.GetID().GetInstance()); - msg->Append(GetNodeId()); - msg->Append(4 + GetAppendValueSize(value->GetValue())); - msg->Append(GetCommandClassId()); - msg->Append(ThermostatSetpointCmd_Set); - msg->Append((uint8_t) (value->GetID().GetIndex() & 0xFF)); - AppendValue(msg, value->GetValue(), scale); - msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); - return true; + uint8 scale = strcmp("C", value->GetUnits().c_str()) ? 1 : 0; + + Msg* msg = new Msg("ThermostatSetpointCmd_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); + msg->SetInstance(this, _value.GetID().GetInstance()); + msg->SetSupervision(supervision_session_id); + msg->Append(GetNodeId()); + msg->Append(4 + GetAppendValueSize(value->GetValue())); + msg->Append(GetCommandClassId()); + msg->Append(ThermostatSetpointCmd_Set); + msg->Append(index); + AppendValue(msg, value->GetValue(), scale); + + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + return true; + } } return false; diff --git a/cpp/src/command_classes/ThermostatSetpoint.h b/cpp/src/command_classes/ThermostatSetpoint.h index fb12a54eaf..adaebc397d 100644 --- a/cpp/src/command_classes/ThermostatSetpoint.h +++ b/cpp/src/command_classes/ThermostatSetpoint.h @@ -31,6 +31,7 @@ #include #include #include "command_classes/CommandClass.h" +#include "value_classes/ValueDecimal.h" namespace OpenZWave { @@ -79,6 +80,7 @@ namespace OpenZWave { return 3; } + virtual void SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance); protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/value_classes/Value.cpp b/cpp/src/value_classes/Value.cpp index 5849a52a2f..cc5933a694 100644 --- a/cpp/src/value_classes/Value.cpp +++ b/cpp/src/value_classes/Value.cpp @@ -36,6 +36,7 @@ #include "value_classes/Value.h" #include "platform/Log.h" #include "command_classes/CommandClass.h" +#include "command_classes/Supervision.h" #include #include "Options.h" @@ -312,9 +313,13 @@ namespace OpenZWave { if (!IsWriteOnly()) { - // queue a "RequestValue" message to update the value - if (m_refreshAfterSet) { - cc->RequestValue( 0, m_id.GetIndex(), m_id.GetInstance(), Driver::MsgQueue_Send ); + if (m_refreshAfterSet) + { + if (!node->GetCommandClass(Internal::CC::Supervision::StaticGetCommandClassId())) + { + // queue a "RequestValue" message to update the value + cc->RequestValue( 0, m_id.GetIndex(), m_id.GetInstance(), Driver::MsgQueue_Send ); + } } } else @@ -483,11 +488,11 @@ namespace OpenZWave // Check a refreshed value //----------------------------------------------------------------------------- int Value::VerifyRefreshedValue( - void* _originalValue, - void* _checkValue, - void* _newValue, + void* _originalValue, + void* _checkValue, + void* _newValue, void* _targetValue, - ValueID::ValueType _type, + ValueID::ValueType _type, int _originalValueLength, // = 0, int _checkValueLength, // = 0, int _newValueLength, // = 0, @@ -607,9 +612,9 @@ namespace OpenZWave bOriginalEqual = (*((bool*) _originalValue) == *((bool*) _newValue)); break; case ValueID::ValueType_Raw: // raw - bOriginalEqual = (_originalValueLength == _newValueLength); // first check length of arrays + bOriginalEqual = (_originalValueLength == _newValueLength); // first check length of arrays if (bOriginalEqual) - bOriginalEqual = (memcmp(_originalValue, _newValue, _newValueLength) == 0); // if length is the same, then check content + bOriginalEqual = (memcmp(_originalValue, _newValue, _newValueLength) == 0); // if length is the same, then check content break; case ValueID::ValueType_Schedule: // Schedule /* Should not get here */ @@ -788,19 +793,19 @@ namespace OpenZWave * - Caveat here is that if the outgoing queue is large, then this will be additionally delayed */ int32 timeout; - if (m_duration <= 2) + if (m_duration <= 2) { timeout = 250; } - else if (m_duration <= 5) + else if (m_duration <= 5) { /* for Durations less than 5 seconds, lets refresh every 1/2 seconds */ timeout = 500; - } - else + } + else { - /* Everything else is 1 second + /* Everything else is 1 second */ timeout = 1000; } @@ -813,7 +818,7 @@ namespace OpenZWave //----------------------------------------------------------------------------- // -// Callback from the Timer to send a Get value to refresh a value from the +// Callback from the Timer to send a Get value to refresh a value from the // CheckTargetValue function //----------------------------------------------------------------------------- void Value::sendValueRefresh(uint32 _unused) diff --git a/cpp/src/value_classes/ValueBool.cpp b/cpp/src/value_classes/ValueBool.cpp index 9699f256f5..eea68b2b8e 100644 --- a/cpp/src/value_classes/ValueBool.cpp +++ b/cpp/src/value_classes/ValueBool.cpp @@ -100,6 +100,9 @@ namespace OpenZWave // create a temporary copy of this value to be submitted to the Set() call and set its value to the function param ValueBool* tempValue = new ValueBool(*this); tempValue->m_value = _value; + + // Save the new value to be stored when the device confirms the value was set successfully, + m_newValue = _value; // Set the value in the device. bool ret = ((Value*) tempValue)->Set(); diff --git a/cpp/src/value_classes/ValueBool.h b/cpp/src/value_classes/ValueBool.h index 1fa837dfbc..41fb23d8e7 100644 --- a/cpp/src/value_classes/ValueBool.h +++ b/cpp/src/value_classes/ValueBool.h @@ -57,6 +57,10 @@ namespace OpenZWave bool Set(bool const _value); void OnValueRefreshed(bool const _value); + void ConfirmNewValue() + { + OnValueRefreshed(m_newValue != 0); + }; void SetTargetValue(bool const _target, uint32 _duration = 0); @@ -78,6 +82,7 @@ namespace OpenZWave bool m_value; // the current index in the m_items vector bool m_valueCheck; // the previous value (used for double-checking spurious value reads) bool m_targetValue; // The Target Value + bool m_newValue; // a new value to be set on the appropriate device (used by Supervision CC) }; } // namespace VC } // namespace Internal diff --git a/cpp/src/value_classes/ValueByte.cpp b/cpp/src/value_classes/ValueByte.cpp index 19a7b83ba2..a36b06425e 100644 --- a/cpp/src/value_classes/ValueByte.cpp +++ b/cpp/src/value_classes/ValueByte.cpp @@ -120,6 +120,9 @@ namespace OpenZWave ValueByte* tempValue = new ValueByte(*this); tempValue->m_value = _value; + // Save the new value to be stored when the device confirms the value was set successfully, + m_newValue = _value; + // Set the value in the device. bool ret = ((Value*) tempValue)->Set(); diff --git a/cpp/src/value_classes/ValueByte.h b/cpp/src/value_classes/ValueByte.h index 617018ff1b..bc65807087 100644 --- a/cpp/src/value_classes/ValueByte.h +++ b/cpp/src/value_classes/ValueByte.h @@ -55,6 +55,10 @@ namespace OpenZWave bool Set(uint8 const _value); void OnValueRefreshed(uint8 const _value); + void ConfirmNewValue() + { + OnValueRefreshed(m_newValue); + }; void SetTargetValue(uint8 const _target, uint32 _duration = 0); // From Value @@ -72,6 +76,7 @@ namespace OpenZWave uint8 m_value; // the current value uint8 m_valueCheck; // the previous value (used for double-checking spurious value reads) uint8 m_targetValue; // the Target Value, if the CC support it + uint8 m_newValue; // a new value to be set on the device (used by Supervision CC) }; } // namespace VC } // namespace Internal diff --git a/cpp/src/value_classes/ValueDecimal.cpp b/cpp/src/value_classes/ValueDecimal.cpp index 81a85d4840..34920cc4d6 100644 --- a/cpp/src/value_classes/ValueDecimal.cpp +++ b/cpp/src/value_classes/ValueDecimal.cpp @@ -87,6 +87,9 @@ namespace OpenZWave ValueDecimal* tempValue = new ValueDecimal(*this); tempValue->m_value = _value; + // Save the new value to be stored when the device confirms the value was set successfully, + m_newValue = _value; + // Set the value in the device. bool ret = ((Value*) tempValue)->Set(); diff --git a/cpp/src/value_classes/ValueDecimal.h b/cpp/src/value_classes/ValueDecimal.h index 0e39a5c77d..5b2d402b0b 100644 --- a/cpp/src/value_classes/ValueDecimal.h +++ b/cpp/src/value_classes/ValueDecimal.h @@ -59,6 +59,10 @@ namespace OpenZWave bool Set(string const& _value); void OnValueRefreshed(string const& _value); + void ConfirmNewValue() + { + OnValueRefreshed(m_newValue); + }; void SetTargetValue(string const _target, uint32 _duration = 0); // From Value diff --git a/cpp/src/value_classes/ValueList.cpp b/cpp/src/value_classes/ValueList.cpp index e5b00cdbf2..a89629d163 100644 --- a/cpp/src/value_classes/ValueList.cpp +++ b/cpp/src/value_classes/ValueList.cpp @@ -229,6 +229,9 @@ namespace OpenZWave ValueList* tempValue = new ValueList(*this); tempValue->m_valueIdx = _value; + // Save the new value to be stored when the device confirms the value was set successfully, + m_newValue = _value; + // Set the value in the device. bool ret = ((Value*) tempValue)->Set(); diff --git a/cpp/src/value_classes/ValueList.h b/cpp/src/value_classes/ValueList.h index 78a69ba47b..6aa46b351d 100644 --- a/cpp/src/value_classes/ValueList.h +++ b/cpp/src/value_classes/ValueList.h @@ -66,6 +66,10 @@ namespace OpenZWave bool SetByValue(int32 const _value); void OnValueRefreshed(int32 const _valueIdx); + void ConfirmNewValue() + { + OnValueRefreshed(m_items[m_newValue].m_value); + }; // From Value virtual string const GetAsString() const @@ -98,6 +102,7 @@ namespace OpenZWave vector m_items; int32 m_valueIdx; // the current index in the m_items vector int32 m_valueIdxCheck; // the previous index in the m_items vector (used for double-checking spurious value reads) + int32 m_newValue; // a new index to be set on the appropriate device (used by Supervision CC) uint8 m_size; int32 m_targetValue; // the Target Value, if the CC support it diff --git a/dist/openzwave.spec b/dist/openzwave.spec index b05b46db51..8057cedefc 100644 --- a/dist/openzwave.spec +++ b/dist/openzwave.spec @@ -3,7 +3,7 @@ %endif Name: openzwave -Version: 1.6.1545 +Version: 1.6.1958 Release: 1.0%{?dist} Summary: Sample Executables for OpenZWave URL: http://www.openzwave.net @@ -135,7 +135,7 @@ getent group zwave >/dev/null || groupadd -f -r zwave %changelog -* Wed May 08 2019 Justin Hammond - 1.6.1545 +* Wed May 08 2019 Justin Hammond - 1.6.1958 - Update to new release of OpenZwave - 1.6 * Fri Feb 01 2019 Fedora Release Engineering - 1.5.0-0.20180624git1e36dcc.0 diff --git a/distfiles.mk b/distfiles.mk index 80f3e3c22a..a804229a22 100644 --- a/distfiles.mk +++ b/distfiles.mk @@ -115,20 +115,24 @@ DISTFILES = .gitignore \ config/aeotec/zwa006.xml \ config/aeotec/zwa008.xml \ config/aeotec/zwa009.xml \ + config/aeotec/zwa011.xml \ config/aeotec/zwa012.xml \ config/aeotec/zwa019.xml \ config/aeotec/zwa021.xml \ + config/aeotec/zwa023.xml \ config/airlinemechanical/zds-ud10.xml \ config/alfred/DB2.xml \ config/assa_abloy/ConexisL1.xml \ config/assa_abloy/KeyfreeConnected-plus.xml \ config/assa_abloy/KeyfreeConnected.xml \ + config/assa_abloy/ProSLKey-FreeDeadbolt.xml \ config/assa_abloy/PushButtonDeadbolt.xml \ config/assa_abloy/PushButtonLever.xml \ config/assa_abloy/TouchDeadbolt.xml \ config/assa_abloy/TouchLever.xml \ config/assa_abloy/nexTouch.xml \ config/assa_abloy/yrd1x0.xml \ + config/assa_abloy/yrm276.xml \ config/august/asl-03.xml \ config/buffalo/hw-100v15a-zw.xml \ config/building36/b36-t10.xml \ @@ -141,6 +145,7 @@ DISTFILES = .gitignore \ config/cooper/RF9517.xml \ config/cooper/RF9540-N.xml \ config/cooper/RF9542-Z.xml \ + config/cooper/RF9601.xml \ config/cooper/RFWC5.xml \ config/cooper/rf9534.xml \ config/danfoss/living.xml \ @@ -176,6 +181,7 @@ DISTFILES = .gitignore \ config/dome/0087.xml \ config/dome/0088.xml \ config/dome/0101.xml \ + config/dome/0104.xml \ config/dome/0201.xml \ config/dome/dmex1.xml \ config/domitech/zb22uk.xml \ @@ -283,6 +289,7 @@ DISTFILES = .gitignore \ config/fibaro/fgs211.xml \ config/fibaro/fgs212.xml \ config/fibaro/fgs213.xml \ + config/fibaro/fgs214.xml \ config/fibaro/fgs221.xml \ config/fibaro/fgs222.xml \ config/fibaro/fgs223.xml \ @@ -290,8 +297,10 @@ DISTFILES = .gitignore \ config/fibaro/fgsd002.xml \ config/fibaro/fgss101.xml \ config/fibaro/fgt001.xml \ + config/fibaro/fgwceu201.xml \ config/fibaro/fgwd111.xml \ config/fibaro/fgwds221.xml \ + config/fibaro/fgwds221ss.xml \ config/fibaro/fgwoe.xml \ config/fibaro/fgwpb121.xml \ config/fibaro/fgwpe.xml \ @@ -329,6 +338,7 @@ DISTFILES = .gitignore \ config/ge/14294-dimmer.xml \ config/ge/14295-dimmer-toggle.xml \ config/ge/14298.xml \ + config/ge/14322-dimmer-toggle.xml \ config/ge/26931-motion-switch.xml \ config/ge/26932-motion-dimmer.xml \ config/ge/26933-motion-dimmer.xml \ @@ -373,6 +383,7 @@ DISTFILES = .gitignore \ config/hank/hkzw-so01-smartplug.xml \ config/hank/hkzw-so03.xml \ config/hank/hkzw-so05-smartplug.xml \ + config/hank/hkzw-so08-smartplug.xml \ config/hank/scenecontroller1.xml \ config/hank/scenecontroller4.xml \ config/heiman/HS1CA-Z.xml \ @@ -510,19 +521,23 @@ DISTFILES = .gitignore \ config/images/aeotec/zwa005.png \ config/images/aeotec/zwa006.png \ config/images/aeotec/zwa009.png \ + config/images/aeotec/zwa011.png \ config/images/aeotec/zwa012.png \ config/images/aeotec/zwa019.png \ config/images/aeotec/zwa021.png \ + config/images/aeotec/zwa023.png \ config/images/airlinemechanical/zds-ud10.png \ config/images/alfred/DB2.png \ config/images/assa_abloy/ConexisL1.png \ config/images/assa_abloy/KeyfreeConnected-plus.png \ config/images/assa_abloy/KeyfreeConnected.png \ + config/images/assa_abloy/ProSLKey-FreeDeadbolt.png \ config/images/assa_abloy/PushButtonDeadbolt.png \ config/images/assa_abloy/TouchDeadbolt.png \ config/images/assa_abloy/TouchLever.png \ config/images/assa_abloy/nexTouch.png \ config/images/assa_abloy/yrd1x0.png \ + config/images/assa_abloy/yrm276.png \ config/images/august/asl-03.png \ config/images/buffalo/hw-100v15a-zw.png \ config/images/building36/b36-t10.png \ @@ -533,6 +548,7 @@ DISTFILES = .gitignore \ config/images/cooper/RF9517.png \ config/images/cooper/RF9540-N.png \ config/images/cooper/RF9542-Z.png \ + config/images/cooper/RF9601.png \ config/images/cooper/rf9534.png \ config/images/danfoss/living.png \ config/images/danfoss/rsroom.png \ @@ -620,6 +636,7 @@ DISTFILES = .gitignore \ config/images/fibaro/fgcd001.png \ config/images/fibaro/fgd212.png \ config/images/fibaro/fgdw2.png \ + config/images/fibaro/fgfs101.png \ config/images/fibaro/fgfs101zw5.png \ config/images/fibaro/fggc001.png \ config/images/fibaro/fgk001.png \ @@ -631,14 +648,18 @@ DISTFILES = .gitignore \ config/images/fibaro/fgr223.png \ config/images/fibaro/fgrgbw442.png \ config/images/fibaro/fgrgbwm441.png \ + config/images/fibaro/fgrm222.png \ config/images/fibaro/fgs213.png \ + config/images/fibaro/fgs222.png \ config/images/fibaro/fgs223.png \ config/images/fibaro/fgs224.png \ config/images/fibaro/fgsd002.png \ config/images/fibaro/fgt001.png \ + config/images/fibaro/fgwceu201.png \ config/images/fibaro/fgwd111.png \ config/images/fibaro/fgwds221.png \ config/images/fibaro/fgwoe.png \ + config/images/fibaro/fgwpb121.png \ config/images/fibaro/fgwpe.png \ config/images/fibaro/fgwpfzw5.png \ config/images/fibaro/fgwpg111.png \ @@ -672,6 +693,7 @@ DISTFILES = .gitignore \ config/images/ge/14294-dimmer.png \ config/images/ge/14295-dimmer-toggle.png \ config/images/ge/14298.png \ + config/images/ge/14322-dimmer-toggle.png \ config/images/ge/26931-motion-switch.png \ config/images/ge/26933-motion-dimmer.png \ config/images/ge/28167-plugin-dimmer.png \ @@ -790,6 +812,7 @@ DISTFILES = .gitignore \ config/images/leviton/vrpa1.png \ config/images/leviton/vrpd3.png \ config/images/leviton/vrs15.png \ + config/images/leviton/zw15r.png \ config/images/leviton/zw4sf.png \ config/images/linear/LB60Z-1.png \ config/images/linear/WD500Z5-1.png \ @@ -798,6 +821,7 @@ DISTFILES = .gitignore \ config/images/linear/ngd00z.png \ config/images/logicsoft/ZDB5100.png \ config/images/logicsoft/ZHC5010.png \ + config/images/mcohome/015f_5102_d411.png \ config/images/mcohome/mh7h.png \ config/images/mcohome/mh8fceu0803.png \ config/images/mcohome/mhp220.png \ @@ -810,7 +834,10 @@ DISTFILES = .gitignore \ config/images/miyakawaelectric/me-d101.png \ config/images/namron/1402756.png \ config/images/namron/4512710.png \ + config/images/namron/4512712.jpg \ + config/images/namron/4512714.jpg \ config/images/namron/4512715.png \ + config/images/namron/4512720.jpg \ config/images/namron/4512724.png \ config/images/nexia/db100z.png \ config/images/nexia/th100nx.png \ @@ -871,6 +898,7 @@ DISTFILES = .gitignore \ config/images/qubino/ZMNHCDx.png \ config/images/qubino/ZMNHDA2.png \ config/images/qubino/ZMNHDDx.png \ + config/images/qubino/ZMNHHDx.png \ config/images/qubino/ZMNHIDx.png \ config/images/qubino/ZMNHNDx.png \ config/images/qubino/ZMNHODx.png \ @@ -896,6 +924,8 @@ DISTFILES = .gitignore \ config/images/remotec/zxt-310.png \ config/images/remotec/zxt-600.png \ config/images/ring/PIR-SS.png \ + config/images/ring/contact-sensor-v2.png \ + config/images/ring/motion-detector-v2.png \ config/images/schlage/BE468ZP.png \ config/images/schlage/BE469.png \ config/images/schlage/BE469ZP.png \ @@ -906,13 +936,19 @@ DISTFILES = .gitignore \ config/images/sercomm/sw-clp01-eu.png \ config/images/shenzen_neo/ls03ch.jpg \ config/images/shenzen_neo/nas-ab01z.png \ + config/images/shenzen_neo/nas-cs01z.jpg \ config/images/shenzen_neo/nas-ds01z.png \ config/images/shenzen_neo/nas-pd01z.png \ config/images/shenzen_neo/nas-pd02z.png \ + config/images/shenzen_neo/nas-sc03ze.jpg \ config/images/shenzen_neo/nas-wr01z.png \ config/images/shenzen_neo/nas-wr01ze.png \ config/images/shenzen_neo/nas-ws02z.png \ config/images/shenzen_saykey/SK-3007-05.png \ + config/images/shenzhen-neo/eu-1.png \ + config/images/shenzhen-neo/eu-2.png \ + config/images/shenzhen-neo/eu-3.png \ + config/images/simon/10002020-13X.png \ config/images/simon/10002034-13X.png \ config/images/simon/10002080-13X.png \ config/images/smartthings/pgc401m.png \ @@ -935,6 +971,7 @@ DISTFILES = .gitignore \ config/images/sunricher/srzv9101sachpeu.png \ config/images/sunricher/srzv9101sachpswitch.png \ config/images/sunricher/zv2835rac.png \ + config/images/sunricher/zv9100a.png \ config/images/sunricher/zv9101.png \ config/images/swiid/swiidinter.png \ config/images/technisat/03009496.png \ @@ -945,11 +982,13 @@ DISTFILES = .gitignore \ config/images/telldus/tzwp102.png \ config/images/there/800z.png \ config/images/thermofloor/Heatit-Z-Push-button-8-white.png \ + config/images/thermofloor/heatit0204.png \ config/images/thermofloor/heatit021.png \ config/images/thermofloor/heatit056.png \ config/images/thermofloor/heatit058.png \ config/images/thermofloor/heatit20a.png \ config/images/thermofloor/heatit_zdim.png \ + config/images/thermofloor/heatitzm.png \ config/images/trane/TZEMT400AB32MAA.png \ config/images/trane/TZEMT400BB32MAA.png \ config/images/trane/TZEMT524AA21MA.png \ @@ -986,8 +1025,10 @@ DISTFILES = .gitignore \ config/images/wenzhou/tz67.png \ config/images/wenzhou/tz68.png \ config/images/wenzhou/tz69.png \ + config/images/wenzhou/tz77.png \ config/images/wenzhou/tz78.png \ config/images/wenzhou/tz88.png \ + config/images/wenzhou/tze96.png \ config/images/widom/DRY.png \ config/images/widom/UBS104.png \ config/images/widom/UME304C_S.png \ @@ -998,6 +1039,7 @@ DISTFILES = .gitignore \ config/images/widom/WTED.png \ config/images/wink/wnk-mot1.png \ config/images/wink/wnk-sir1p.png \ + config/images/zen17.png \ config/images/zipato/HS1CA-Z.png \ config/images/zipato/HS1CG-Z.png \ config/images/zipato/HS1SA-Z.png \ @@ -1014,6 +1056,7 @@ DISTFILES = .gitignore \ config/images/zooz/zen06.png \ config/images/zooz/zen15.png \ config/images/zooz/zen16.png \ + config/images/zooz/zen17.png \ config/images/zooz/zen20.png \ config/images/zooz/zen20v2.png \ config/images/zooz/zen21.png \ @@ -1025,7 +1068,12 @@ DISTFILES = .gitignore \ config/images/zooz/zen27.png \ config/images/zooz/zen30.png \ config/images/zooz/zen31.png \ + config/images/zooz/zen32.png \ config/images/zooz/zen34.png \ + config/images/zooz/zen71.png \ + config/images/zooz/zen72.png \ + config/images/zooz/zen76.png \ + config/images/zooz/zen77.png \ config/images/zooz/zse09.png \ config/images/zooz/zse19.png \ config/images/zooz/zse29.png \ @@ -1041,6 +1089,7 @@ DISTFILES = .gitignore \ config/images/zwave.me/popp_kfob-c.png \ config/images/zwave.me/razberry.png \ config/images/zwave.me/zme_raz5.png \ + config/images/zwave.me/zme_wallc_s.png \ config/images/zwave.me/zweather.png \ config/images/zwp/PA-100.png \ config/images/zwp/WD-100.png \ @@ -1053,6 +1102,7 @@ DISTFILES = .gitignore \ config/inovelli/lzw40.xml \ config/inovelli/lzw41.xml \ config/inovelli/lzw42.xml \ + config/inovelli/lzw45.xml \ config/inovelli/lzw60.xml \ config/inovelli/nzw1201.xml \ config/inovelli/nzw30.xml \ @@ -1090,6 +1140,7 @@ DISTFILES = .gitignore \ config/leviton/vrpa1.xml \ config/leviton/vrpd3.xml \ config/leviton/vrs15.xml \ + config/leviton/zw15r.xml \ config/leviton/zw4sf.xml \ config/linear/GC-TBZ48.xml \ config/linear/LB60Z-1.xml \ @@ -1111,13 +1162,16 @@ DISTFILES = .gitignore \ config/manufacturer_specific.xml \ config/manufacturer_specific.xsd \ config/mcohome/a8-9.xml \ + config/mcohome/mh10pm25wd.xml \ config/mcohome/mh7h.xml \ config/mcohome/mh8fceu.xml \ config/mcohome/mh8fceu0803.xml \ config/mcohome/mh9co2.xml \ + config/mcohome/mhdt411.xml \ config/mcohome/mhp210.xml \ config/mcohome/mhp220.xml \ config/mcohome/mhp511.xml \ + config/mcohome/mhs220.xml \ config/mcohome/mhs311.xml \ config/mcohome/mhs312.xml \ config/mcohome/mhs314.xml \ @@ -1133,8 +1187,12 @@ DISTFILES = .gitignore \ config/miyakawaelectric/me-d101.xml \ config/namron/1402756.xml \ config/namron/4512710.xml \ + config/namron/4512712.xml \ + config/namron/4512714.xml \ config/namron/4512715.xml \ + config/namron/4512720.xml \ config/namron/4512724.xml \ + config/nei/ms11z.xml \ config/nexia/db100z.xml \ config/nexia/th100nx.xml \ config/nodon/asp3100SmartPlug.xml \ @@ -1221,6 +1279,7 @@ DISTFILES = .gitignore \ config/qubino/ZMNHKDx.xml \ config/qubino/ZMNHLAx.xml \ config/qubino/ZMNHLDx.xml \ + config/qubino/ZMNHMDx.xml \ config/qubino/ZMNHNDx.xml \ config/qubino/ZMNHODx.xml \ config/qubino/ZMNHQDx.xml \ @@ -1252,6 +1311,8 @@ DISTFILES = .gitignore \ config/remotec/zxt-310.xml \ config/remotec/zxt-600.xml \ config/ring/PIR-SS.xml \ + config/ring/contact-sensor-v2.xml \ + config/ring/motion-detector-v2.xml \ config/schlage/BE468.xml \ config/schlage/BE468ZP.xml \ config/schlage/BE469.xml \ @@ -1260,6 +1321,8 @@ DISTFILES = .gitignore \ config/schlagelink/41.xml \ config/schlagelink/itemp.xml \ config/schlagelink/minikeypad.xml \ + config/sensative/kaipule/im20.xml \ + config/sensative/kaipule/ix32.xml \ config/sensative/strips.xml \ config/sensative/stripscomfort.xml \ config/sercomm/sw-clp01-eu.xml \ @@ -1267,15 +1330,18 @@ DISTFILES = .gitignore \ config/shenzen_neo/ls02ch.xml \ config/shenzen_neo/ls03ch.xml \ config/shenzen_neo/nas-ab01z.xml \ + config/shenzen_neo/nas-cs01z.xml \ config/shenzen_neo/nas-ds01z.xml \ config/shenzen_neo/nas-pd01z.xml \ config/shenzen_neo/nas-pd02z.xml \ config/shenzen_neo/nas-pd03z.xml \ config/shenzen_neo/nas-rc01z.xml \ + config/shenzen_neo/nas-sc03ze.xml \ config/shenzen_neo/nas-wr01z.xml \ config/shenzen_neo/nas-wr01ze.xml \ config/shenzen_neo/nas-ws02z.xml \ config/shenzen_saykey/sk-3007-05.xml \ + config/simon/10002020-13X.xml \ config/simon/10002034-13X.xml \ config/simon/10002041-13X.xml \ config/simon/10002080-13X.xml \ @@ -1296,6 +1362,7 @@ DISTFILES = .gitignore \ config/sunricher/srzv9001t4dimeu.xml \ config/sunricher/srzv9001tccteu.xml \ config/sunricher/srzv9003t4rgbweu.xml \ + config/sunricher/srzv9100aa.xml \ config/sunricher/srzv9101sachpeu.xml \ config/sunricher/srzv9101sachpswitch.xml \ config/sunricher/zv2835rac.xml \ @@ -1311,12 +1378,15 @@ DISTFILES = .gitignore \ config/telldus/tzwp102.xml \ config/there/800z.xml \ config/thermofloor/heatit-zdim.xml \ + config/thermofloor/heatit021-v1.92.xml \ config/thermofloor/heatit021.xml \ config/thermofloor/heatit056.xml \ config/thermofloor/heatit058.xml \ + config/thermofloor/heatit204.xml \ config/thermofloor/heatit20a.xml \ config/thermofloor/heatitz4.xml \ config/thermofloor/heatitz8.xml \ + config/thermofloor/heatitzm.xml \ config/trane/TZEMT400AB32MAA.xml \ config/trane/TZEMT400BB32MAA.xml \ config/trane/TZEMT524AA21MA.xml \ @@ -1366,9 +1436,11 @@ DISTFILES = .gitignore \ config/wenzhou/tz68.xml \ config/wenzhou/tz69.xml \ config/wenzhou/tz74.xml \ + config/wenzhou/tz77.xml \ config/wenzhou/tz78.xml \ config/wenzhou/tz79.xml \ config/wenzhou/tz88.xml \ + config/wenzhou/tze96.xml \ config/widom/DRY.xml \ config/widom/UBS104.xml \ config/widom/UME304C_S.xml \ @@ -1390,6 +1462,7 @@ DISTFILES = .gitignore \ config/zooz/zen07.xml \ config/zooz/zen15.xml \ config/zooz/zen16.xml \ + config/zooz/zen17.xml \ config/zooz/zen20.xml \ config/zooz/zen20v2.xml \ config/zooz/zen21.xml \ @@ -1405,7 +1478,12 @@ DISTFILES = .gitignore \ config/zooz/zen27.xml \ config/zooz/zen30.xml \ config/zooz/zen31.xml \ + config/zooz/zen32.xml \ config/zooz/zen34.xml \ + config/zooz/zen71.xml \ + config/zooz/zen72.xml \ + config/zooz/zen76.xml \ + config/zooz/zen77.xml \ config/zooz/zse08.xml \ config/zooz/zse09.xml \ config/zooz/zse18.xml \ @@ -1654,6 +1732,8 @@ DISTFILES = .gitignore \ cpp/src/command_classes/SimpleAVCommandItem.h \ cpp/src/command_classes/SoundSwitch.cpp \ cpp/src/command_classes/SoundSwitch.h \ + cpp/src/command_classes/Supervision.cpp \ + cpp/src/command_classes/Supervision.h \ cpp/src/command_classes/SwitchAll.cpp \ cpp/src/command_classes/SwitchAll.h \ cpp/src/command_classes/SwitchBinary.cpp \