diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 0a41225d86..1d0f12a9f4 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,6 +1,6 @@ # These are supported funding model platforms -#github: [Fishwaldo, nechry] +github: [Fishwaldo, nechry] patreon: # Replace with a single Patreon username open_collective: ozw ko_fi: # Replace with a single Ko-fi username diff --git a/.github/XMLTestMatcher.json b/.github/XMLTestMatcher.json new file mode 100644 index 0000000000..9fc8b8c1cd --- /dev/null +++ b/.github/XMLTestMatcher.json @@ -0,0 +1,30 @@ +{ + "problemMatcher": [ + { + "owner": "xmltest", + "pattern": [ + { + "regexp": "^(.*\/open.zwave\/)(.*):([0-9]*):.?(.*)$", + "fromPath": 1, + "file": 2, + "line": 3, + "message": 4 + } + ] + }, + { + "owner": "ConfigDatabase", + "pattern": [ + { + "regexp": "^Errors: [0-9]*\\. \\(Please Correct before Submitting to OZW\\)$" + }, + { + "regexp": "^(.*):.(.*)$", + "file": 1, + "message": 2, + "loop": true + } + ] + } + ] +} diff --git a/.github/workflows/ConfigCheck.yml b/.github/workflows/ConfigCheck.yml new file mode 100644 index 0000000000..11dd6bdccb --- /dev/null +++ b/.github/workflows/ConfigCheck.yml @@ -0,0 +1,20 @@ +name: Test Config Files + +on: + pull_request: + paths: + - 'config/**' + +jobs: + ConfigTest: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: install dependancies + run: sudo apt update && sudo apt-get install libxml2-utils libxml-simple-perl + - name: make xmltest + run: | + echo "::add-matcher::.github/XMLTestMatcher.json" + make xmltest diff --git a/.github/workflows/PRTest.yml b/.github/workflows/PRTest.yml deleted file mode 100644 index faa46984ea..0000000000 --- a/.github/workflows/PRTest.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: PR Test - -on: - pull_request: - types: [opened, edited, reopened, synchronize] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - name: Trigger Build - uses: Fishwaldo/Bamboo-PR-Trigger@master - env: - BBSERVER: bamboo.my-ho.st - BBUSER: ${{ secrets.bamboouser }} - BBPASS: ${{ secrets.bamboopass }} - BBPRJ: OZW-PRTST - BBPR: ${{ github.event.number }} - diff --git a/.gitignore b/.gitignore index 3fcdfddb49..25f9779b9d 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ ozw_config ozw_config gtest-main cpp/src/command_classes/\.DS_Store +.DS_Store diff --git a/Makefile b/Makefile index 2b997b7555..df879c3575 100644 --- a/Makefile +++ b/Makefile @@ -57,10 +57,10 @@ xmltest: $(XMLLINT) @$(XMLLINT) --noout --schema $(top_srcdir)/config/NotificationCCTypes.xsd $(top_srcdir)/config/NotificationCCTypes.xml @$(XMLLINT) --noout --schema $(top_srcdir)/config/SensorMultiLevelCCTypes.xsd $(top_srcdir)/config/SensorMultiLevelCCTypes.xml @$(XMLLINT) --noout --schema $(top_srcdir)/config/device_configuration.xsd $(top_srcdir)/config/*/*.xml - -@cpp/build/testconfig.pl + @cpp/build/testconfig.pl endif fulltest: - -@cpp/build/testconfig.pl --printwarnings + @cpp/build/testconfig.pl --printwarnings diff --git a/README.md b/README.md index 7134a7e9eb..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). @@ -102,6 +109,8 @@ Become a financial contributor and help us sustain our community. [[Contribute]( +(We also have many users that support us via Github Sponsors program!) + #### Organizations Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/ozw/contribute)] @@ -116,3 +125,13 @@ Support this project with your organization. Your logo will show up here with a + +### Sponsors + +The Following Organisations Sponsor OpenZWave Development by donating hardware for testing and support + + + + + + diff --git a/config/2gig/ct200.xml b/config/2gig/ct200.xml new file mode 100644 index 0000000000..1e7bf001a6 --- /dev/null +++ b/config/2gig/ct200.xml @@ -0,0 +1,123 @@ + + + Vivint Element + The Vivint Element Smart Thermostat has an elegantly simple design making it easy for anyone to use. It's hidden display comes to life when you need it, providing clear information and simple controls. This simplicity purposefully masks Element's true intelligence. Element works in concert with the Vivint SkyControl system, leveraging an unmatched understanding of home routines and activity levels. Element automatically and dynamically adjusts to match home activities and ensure a personalized balance of comfort and energy savings. + http://www.openzwave.com/device-database/0098:0022:c801 + images/2gig/ct200.png + https://products.z-wavealliance.org/products/1678 + U.S. / Canada / Mexico + CT200 + + Initial + + https://products.z-wavealliance.org/products/1678/ + Press and hold the side button until you reach settings. Navigate to Installer / Reset. Use this procedure only in the event that the network primary controller is missing or otherwise inoperable. + CT200 + Same process as inclusion. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1678/CT200_UserGuide_20160308.pdf + U.S. / Canada / Mexico + When included into a Z-Wave network on battery power, this device is a FLiRS device. The Thermostat will wake up for communication when it receives a valid Z-Wave beam. + Hold the side button until you reach settings. Navigate to Installer / Network + + + + + This value determines the reporting threshold + + + + + + + + Retrieves the HVAC Settings + + + Enable or Disable the Utility Lock + + + Query power which source is in use + + + + + This value determines the reporting threshold + + + Auxiliary / Emergency Heat Pump Mode + + + Temperature spread between the on and off temperatures + + + + + + + + + + + How far off from target temp before turning on unit + + + + + + + + Bring a space back to a normal occupied temp + + + + + Toggle Simple UI Mode + + + + + Toggle Multicast Mode + + + + + Control which info is displayed in the main display area + + + + + Save Energy Mode behavior + + + Activate Fan w/ auto shutoff timer + + + Temperature Calibration / Offset + + + Celsius or Fahrenheit + + + + + + + + + 0 + true + + + + + + true + + + + diff --git a/config/2gig/ct32.xml b/config/2gig/ct32.xml index ae2ca074a1..9577470d7a 100644 --- a/config/2gig/ct32.xml +++ b/config/2gig/ct32.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0098:0100:2002 images/2gig/ct32.png @@ -16,6 +16,7 @@ Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1046/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1330/xml Force root instance to map to first endpoint via compat flag MapRootToEndpoint + Force Setpoint Interpretion A and update some config parameters. - - - + @@ -135,9 +135,9 @@ - + - The Temperature Reporting Threshold Configuration Set Command sets the reporting threshold for changes in the ambient temperature as detected by the thermostat. + The Humidity Reporting Threshold Configuration Set Command sets the reporting threshold for changes in the ambient humidity as detected by the thermostat. @@ -155,13 +155,17 @@ - + - The Auxiliary/Emergency configuration command enables or disables auxiliary/emergency heating in the thermostat. Auxiliary/emergency heating is only available if the thermostat is configured in heat pump mode and with at least one stage of auxiliary heating. This command enables auxiliary / emergency heating when the thermostat is in Auto mode. The Thermostat Set Mode command with mode Auxiliary/Emergency Heat will enable emergency heating but only if the thermostat is in Heat - mode. This command should only be used on thermsotats that support Auxiliary/Emergency Heat thermostat mode. + The Temperate Swing (HVAC cycling rate) is the desired variance in temperature between the thermostat setting and the room temperature required before the heating or cooling system will turn on. - - + + + + + + + @@ -217,14 +221,14 @@ - Simple UI Mode Enable/Disable + If the value is set to Disable then Normal Mode is enabled. If the value is set to Enable then Simple Mode is enabled. - Multicasting Enable/Disable + If set to 0, multicast is disabled, if set to 1, will enable the multicast. diff --git a/config/Localization.xml b/config/Localization.xml index e579507636..695ae26953 100644 --- a/config/Localization.xml +++ b/config/Localization.xml @@ -1,5 +1,5 @@ - + @@ -60,6 +60,8 @@ Silenced Maintenance Required: Dust In Device Maintenance_Required: Periodic Inspection + Rapid temperature fall at Location + Rapid temperature fall at Unknown Location Unknown Event @@ -73,6 +75,10 @@ Replace Filter Water Flow Water Pressure + Water Temperature + Water Level + Sump Pump Active + Sump Pump Failure Unknown Event @@ -102,6 +108,9 @@ Wireless Lock Invalid UserCode Entered Door/Window Open Door/Window Closed + Window/door handle is open + Window/door handle is closed + Messaging User Code entered via keypa Barrier Initializing Barrier Force Exceeded Barrier Motor Time Exceeded @@ -130,6 +139,8 @@ Motion Detected at Location Motion Detected at Unknown Location Tampering - Product Moved + Impact detected + Magnetic field interference detected Unknown Event @@ -151,6 +162,8 @@ Battery Charged Battery Low Battery Critical + Back-up battery is low + Back-up battery disconnected Unknown Event @@ -164,6 +177,9 @@ Heartbeat Tampering Detected Emergency Shutoff + Digital input high state + Digital input low state + Digital input open Unknown Event @@ -173,6 +189,7 @@ Contact Police Department Contact Fire Department Contact Medical Service + Panic alert Unknown Event @@ -221,6 +238,11 @@ Posture Changed Sitting On Edge Of Bed Volatile Organic Compound Level + Sleep apnea detected + Sleep stage 0 detected (Dreaming/REM) + Sleep stage 1 detected (Light sleep, non-REM 1) + Sleep stage 2 detected (Medium sleep, non-REM 2) + Sleep stage 3 detected (Deep sleep, non-REM 3) Unknown Event @@ -248,6 +270,7 @@ Clear Rain Detected Moisture Detected + Freeze Unknown Event @@ -273,6 +296,60 @@ Replacement Required Unknown Event + + Pest Control Alerts + + Clear + Trap armed at Location + Trap armed + Trap re-arm required at Location + Trap re-arm required + Pest detected at Location + Pest detected + Pest exterminated at Location + Pest exterminated + Unknown Event + + + Light Alerts + + Clear + Light detected + Light color transition detected + Unknown Event + + + Water Quality Monitoring Alerts + + Clear + Chlorine + Acidity (pH) + Water Oxidation + Chlorine empty + Acidity (pH) empty + Waterflow measuring station shortage detected + Waterflow clear water shortage detected + Disinfection system error detected + Filter cleaning ongoing + Heating operation ongoing + Filter pump operation ongoing + Freshwater operation ongoing + Dry protection operation active + Water tank is empty + Water tank level is unknow + Water tank is full + Collective disorder + Unknown Event + + + Home Monitoring Alerts + + Clear + Home occupied at Location + Home occupied + Unknown Event + + Previous Event that was sent @@ -359,6 +436,10 @@ The ID of the Valve Table that triggered this alert + + Detected Power of interference + + Alarm Type Received Type d'alarme reçu @@ -528,7 +609,7 @@ - Duration to change colors + Duration to change colors (Values above 7620 use the devices default duration) @@ -631,6 +712,455 @@ Current Indicator State + + Use to indicate that alarm is armed + + + + Use to indicate that alarm is disarmed + + + + Use to indicate that device is ready + + + + Use to indicate a general error + + + + Use to indicate that device is temporarily busy + + + + Use to signal that device is waiting for ID + + + + Use to signal that device is waiting for PIN code + + + + Use to indicate OK e.g. the entered code is accepted + + + + Use to indicate NOT OK e.g. the entered code is NOT accepted + + + + Use to indicate that the alarm is armed and users are staying in the home + + + + Use to indicate that the alarm is armed and users are away from the home + + + + Use to indicate that the alarm is triggered and active with no reason specified + + + + Use to indicate that the alarm is triggered and active due to a Burglar event + + + + Use to indicate that the alarm is triggered and active due to a Fire Alarm event + + + + Use to indicate that the alarm is triggered and active due to a CO event + + + + Use to indicate that the device expects a bypass challenge code + + + + Use to indicate that the alarm is about to be activated unless disarmed by a code + + + + Use to indicate that the alarm will be active after the exit delay + + + + Use to indicate that the alarm is triggered and active due to a medical emergency + + + + Use to indicate that the alarm is triggered and active due to a freeze warning + + + + Use to indicate that the alarm is triggered and active due to a water leak + + + + Use to indicate that the alarm is triggered and active due to a panic alarm trigger + + + + Use to indicate that alarm zone 1 is armed + + + + Use to indicate that alarm zone 2 is armed + + + + Use to indicate that alarm zone 3 is armed + + + + Use to indicate that alarm zone 4 is armed + + + + Use to indicate that alarm zone 5 is armed + + + + Use to indicate that alarm zone 6 is armed + + + + Use to indicate that alarm zone 7 is armed + + + + Use to indicate that alarm zone 8 is armed + + + + Use to turn on LCD backlight, e.g. to shortly draw attention when alarm is activated from another entry control keypad. + + + + Use to indicate that buttons are ready for user input + + + + Use to indicate that buttons are ready for user input + + + + Use to indicate that buttons are ready for user input + + + + Use to draw attention to button 1 + + + + Use to draw attention to button 2 + + + + Use to draw attention to button 3 + + + + Use to draw attention to button 4 + + + + Use to draw attention to button 5 + + + + Use to draw attention to button 6 + + + + Use to draw attention to button 7 + + + + Use to draw attention to button 8 + + + + Use to draw attention to button 9 + + + + Use to draw attention to button 10 + + + + Use to draw attention to button 11 + + + + Use to draw attention to button 12 + + + + This indicator is used to identify the node. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Sound indication, use to indicate that a generic event happened. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Manufacturer Defined. + + + + Use to draw attention or provide user feedback + + + @@ -807,7 +1337,7 @@ - How Many Messages to send to the Note for the Test + How Many Messages to send to the Node for the Test @@ -1020,8 +1550,8 @@ - Particulate Mater 2.5 Sensor Value - + Particulate Matter 2.5 Sensor Value + Formaldehyde CH20 Level Sensor Value @@ -1364,8 +1894,8 @@ - Particulate Mater 2.5 Sensor Available Units - + Particulate Matter 2.5 Sensor Available Units + Formaldehyde CH20 Level Sensor Available Units @@ -1609,7 +2139,7 @@ - How Long to Transition to new State + How Long to Transition to new State (Values above 7620 use the devices default duration) @@ -1636,7 +2166,7 @@ - Duration taken when changing the Level of a Device + Duration taken when changing the Level of a Device (Values above 7620 use the devices default duration) diff --git a/config/NotificationCCTypes.xml b/config/NotificationCCTypes.xml index 61546ad257..b0dbb1ac7d 100644 --- a/config/NotificationCCTypes.xml +++ b/config/NotificationCCTypes.xml @@ -1,5 +1,6 @@ - + + @@ -111,6 +112,11 @@ + + + + + @@ -147,6 +153,24 @@ + + + + + + + + + + + + + + + + + + @@ -203,6 +227,13 @@ + + + + + + + @@ -273,6 +304,13 @@ + + + + + + + @@ -311,6 +349,10 @@ + + + + @@ -335,6 +377,12 @@ + + + + + + @@ -349,6 +397,8 @@ + + @@ -440,6 +490,20 @@ + + + + + + + + + + + + + + @@ -502,6 +566,8 @@ + + @@ -550,4 +616,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/SensorMultiLevelCCTypes.xml b/config/SensorMultiLevelCCTypes.xml index 63d365b63c..17e65afa42 100644 --- a/config/SensorMultiLevelCCTypes.xml +++ b/config/SensorMultiLevelCCTypes.xml @@ -1,5 +1,5 @@ - + C F @@ -14,7 +14,7 @@ Lux - Watt + W Btu/h @@ -139,7 +139,7 @@ C F - + mol/m3 μg/m3 diff --git a/config/abus/SHRM10000.xml b/config/abus/SHRM10000.xml new file mode 100644 index 0000000000..acbc8c4ca2 --- /dev/null +++ b/config/abus/SHRM10000.xml @@ -0,0 +1,40 @@ + + + http://www.openzwave.com/device-database/0403:0003:0002 + images/abus/SHRM10000.jpg + https://products.z-wavealliance.org/products/3089/ + The Smart Smoke Alarm adopts Z-Wave protocol, when the sensor detects smoke to the set level, it will issue acoustic-optic alarm to alert the users and also send alarm notifications to gateway immediately.It's suitable to be installed in living room, office,warehouse,and etc. + - Click [Add] icon in Z-Wave Controller . +- Press the Net_Button 3 times within 1.5s, Green LED is Blinking 3 times within 1 second. +- If Inclusion Process is successful, Green led will turn off. + + - Click [Remove] icon in Z-Wave Controller +- Press the Net_Button 3 times within 1.5s +- If Exclusion Process is successful, Green led is Blinking 6 times, then turn off. + + - Wake up Notification is transmitted every 24 hours by default. +- Wake up Notification is transmitted after Notification Report is Transmitted + --Long press Net_Button while installing batteries in the product. +- Device Reset Locally notification is Transmitted. +Please use this procedure only when the network primary controller is missing or otherwise inoperable. + + HS1SA-Z + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3006/HS1SA-Z S2-documentation_3.pdf + Smart Smoke Alarm + CEPT (Europe) + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3089/xml + + + + + + + + + + + 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/zw111.xml b/config/aeotec/zw111.xml index ee9bddcf47..29e4352319 100644 --- a/config/aeotec/zw111.xml +++ b/config/aeotec/zw111.xml @@ -2,7 +2,7 @@ Aeotec ZW111 Nano Dimmer, base on Engineering Spec 3/6/2018 V2.02 Product Type ID: EU=0x00, US=0x01, AU=0x02 CN=0x1D https://aeotec.freshdesk.com/helpdesk/attachments/6048080397 ---> +--> http://www.openzwave.com/device-database/0086:006F:0103 images/aeotec/zw111.png @@ -21,6 +21,8 @@ The Nano Dimmer is also a security Z-Wave plus device and supports Over The Air Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2095/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2135/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2149/xml + Enable Basic command class + Revert 2517 https://products.z-wavealliance.org/products/2135/ ZW111-C diff --git a/config/aeotec/zw116.xml b/config/aeotec/zw116.xml index 6728ec4bae..34399a53e5 100644 --- a/config/aeotec/zw116.xml +++ b/config/aeotec/zw116.xml @@ -1,7 +1,7 @@ +--> http://www.openzwave.com/device-database/0086:0074:0103 images/aeotec/zw116.png @@ -20,6 +20,8 @@ The Nano Switch is also a security Z-Wave device and supports Over The Air (OTA) Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2208/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2288/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2289/xml + Enable Basic command class + Revert 2517 https://products.z-wavealliance.org/products/2288/ ZW116-B diff --git a/config/aeotec/zw132.xml b/config/aeotec/zw132.xml index 35008e25ed..56ec371017 100644 --- a/config/aeotec/zw132.xml +++ b/config/aeotec/zw132.xml @@ -1,7 +1,7 @@ +--> http://www.openzwave.com/device-database/0086:0084:0103 images/aeotec/zw132.png @@ -20,6 +20,8 @@ The Dual Nano Switch is also a security Z-Wave device and supports Over The Air Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2136/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2150/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2151/xml + Enable Basic command class + Revert 2517 https://products.z-wavealliance.org/products/2150/ ZW132-B diff --git a/config/aeotec/zw141.xml b/config/aeotec/zw141.xml index 4825bdfce6..90c022bb26 100644 --- a/config/aeotec/zw141.xml +++ b/config/aeotec/zw141.xml @@ -1,99 +1,180 @@ +--> + http://www.openzwave.com/device-database/0086:008D:0103 images/aeotec/zw141.png - https://products.z-wavealliance.org/products/3075/ - https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3075/Aeon Labs Nano Shutter -manual - 2.pdf + https://products.z-wavealliance.org/products/3693 + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3693/Nano%20Shutter%20-%20Product%20Manual.pdf Press and hold the Action button that you can find on the product's housing for 20 seconds and then release. This procedure should only be used when the primary controller is inoperable. - Turn the primary controller of Z-Wave network into exclusion mode, quick press the product’s Action button 6 times that you can find on the product's housing or toggle the external manual switch 2 times in fast succession. - -If the Nano Dimmer has been successfully removed from your Z-Wave network, its RGB LED will remain colorful gradient. If the removal was unsuccessful, the RGB LED will still be solid (following the state of the output load), repeat the instructions above from step 1. - Nano Shutter - Aeotec Nano Shutter is a Z-Wave motor controller specifically used to enable Z-Wave command and control (up/down/stop) for existing window covering motors. -It can connect to 2 external manual switches/buttons to control the motor up/down/stop independently. Its surface has a pin socket, which can be used for connecting to the touch panel, so you can also use the touch panel to control the Nano Shutter. -The wireless module is powered from the mains supply. In the event of power failure, non-volatile memory retains all programmed information relating to the units operating status. -Nano Shutter is also a security Z-Wave plus device and supports Over The Air (OTA) feature for the products firmware upgrade. -It can be a repeater in the Z-Wave network. Acting as a bridge for communication, it will forward Z-Wave command messages to their destinations if the originating controller is out of range from the destination node. -By taking advantage of the Z-Wave mesh network, commands can be routed to their destination via intermediary “listening” Z-Wave products. Products that are Z-Wave certified can be used and communicate with other Z-Wave certified devices. - U.S. / Canada / Mexico - ZW141-A - Turn the primary controller of Z-Wave network into inclusion mode, short press the product’s Action button that you can find on the product's housing. - -If the Nano Dimmer has been successfully added to your Z-Wave network, its RGB LED will be solid. If unsuccessful, the red LED will be on for 2 seconds and then remain a colorful gradient, repeat the instructions above from step 1. - + Turn the primary controller of Z-Wave network into exclusion mode, quick press the product’s Action button 6 times that you can find on the product's housing or toggle the external manual switch 2 times in fast succession. If the Nano Dimmer has been successfully removed from your Z-Wave network, its RGB LED will remain colorful gradient. If the removal was unsuccessful, the RGB LED will still be solid (following the state of the output load), repeat the instructions above from step 1. + Nano Shutter + Aeotec New Generation Nano Shutter 1. Used to control the motor of Curtain, support Shutter Mode and Venetian Mode . 2. Can be calibrated according to diff e rent curtains 3. Used to control other Z-Wave device directly. 4. Support S2, more safe and more re liable 5. Support SmartStart, faster inclusion + ZW141-C + CEPT (Europe) + https://products.z-wavealliance.org/Products/3693 + + 1. Set your z-wave controller into 'Add Device' mode to add the product into your z-wave network. Refer to the controller's manual if you are unsure of how to perform this step. + 2. Make sure the product is powered on. If not, plug it into a wall socket and power on; the LED will flash a blinking blue light. + 3. Click the action button once, the LED should flash a blue light for 30 seconds until the product is added into the network. The LED will flash a bright yellow light after being assigned a NodeID. + 4. If your z-wave controller supports S2 encryption, enter the first 5 digits of the DSK into your controller's interface if/when requested. The DSK is printed on its housing. + 5. If inclusion fails, the LED will flash a bright red light for 2 second and then flash a blinking blue light; repeat steps 1 to 4. Contact us for further support if needed. + 6. If inclusion succeeds, the LED will flash a bright blue light for 2 second and then turn to load indicator mode to indicate the product has been added to your z-wave network successfully. You can configure the product and its automations via your smart home automation platform; please refer to your software's user guide for details. + + + 1. Set your z-wave controller into 'Remove Device' mode to remove the product from your z-wave network. Refer to the controller's manual if you are unsure of how to perform this step. + 2. Click the action / S1 / S2 button 6 times to enter exclusion mode. + 3. If removal fails, the LED will flash bright red for 2 seconds and then turn return to regular light mode; repeat steps 1-2. Contact us for further support if needed. + 4. If removal succeeds, the LED will flash a blinking blue light to indicate the product has been removed from the z-wave network successfully. + + + Press and hold the action button for at least 20 second and then release. The LED will blink a blue light to indicate the factory reset was successful. Otherwise, please try again. Contact us for further support if needed. + This procedure should only be used when the primary controller is missing or inoperable. + Factory reset will: a) remove the product from your z-wave network; and b) delete the association setting. + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2903/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2907/xml 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 + Add missing list item for param 22 - https://products.z-wavealliance.org/products/2907/ + U.S. / Canada / Mexico + ZW141-A ZW141-B - Australia / New Zealand - https://products.z-wavealliance.org/products/2953/ - ZW141-C - CEPT (Europe) + Australia / New Zealand - - - Set the moving time from up (left) to down (right) for curtain. - + + Set the motor behavior after powering on + + + + + + Set to toggle the motor running direction + + + + - - - To set which report would be sent to the associated nodes in association group 1 when the state of output load is changed. - Note: When just only one channel load state is changed, the report message Basic Report CC would be Multi Channel encapsulated. - - - + + Set the blade turn time for Venetian mode. Details can be found in section 4.2 of Advanced information Product Manual. + + + Set the run time of the curtain. Details can be found in section 4.2 of Advanced information Product Manual. + + + Set to enter/exit calibration mode + + + + + + Set user confirmation for calibration + + + + + Get calibration mode status report + + + + + + + + + Set the curtain mode operation + + - + + Set to begin repositioning + + + + + Get repositioning status report + + + + + Enable/disable calibration lock + + + + + Set S1 scene activation + + + + + + + Set S1 scene activation + + + + + + + Select which report to send when switch status changes + + + + + - Set the operation mode of external switch. - For detailed instructions for Operation Mode 1 and 2, see end of this table. - + Set operation mode of external button. + In Operation Mode 1, external button 1 maps to z-wave button, external button 2 opens or stops motor. + In Operation Mode 2, external button 1 maps to z-wave button, external button 2 closes or stops motor. + - + When the mode is determined, this mode value will not be reset after exclusion - + - - + + When the mode is determined, this mode value will not be reset after exclusion - + - - Enable/disable Configuration Locked - - - - + + Get the DSK from the product + + + Set the operation of external switches S1 and S2 + + + + + Reset to factory defaults - - + - + - + diff --git a/config/aeotec/zw162.xml b/config/aeotec/zw162.xml index e4ac7c66fb..5a1e7eaeb3 100644 --- a/config/aeotec/zw162.xml +++ b/config/aeotec/zw162.xml @@ -1,6 +1,6 @@ +--> http://www.openzwave.com/device-database/0371:00A2:0103 images/aeotec/zw162.png @@ -56,6 +56,8 @@ Note: Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3218/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3291/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3292/xml + Fix up MapRootToEndpoint and Basic Get Disabled + Add option 96, allow stopping playing chime https://products.z-wavealliance.org/products/3291/ Australia / New Zealand @@ -66,7 +68,7 @@ Note: @@ -283,6 +285,9 @@ Please note that the Tone Play Mode needs to be configured to be 0 or 1 after th Please Refer to Engineering Specification - Aeotec Doorbell 6 + + Enable or Disable the ability that click the Action Button to stop a playing tone. + Reset to factory defaults @@ -290,7 +295,15 @@ Please note that the Tone Play Mode needs to be configured to be 0 or 1 after th + + + false + + + + true + @@ -299,7 +312,6 @@ Please note that the Tone Play Mode needs to be configured to be 0 or 1 after th - diff --git a/config/aeotec/zw164.xml b/config/aeotec/zw164.xml index 6ecf8f73fd..0ac6c65159 100644 --- a/config/aeotec/zw164.xml +++ b/config/aeotec/zw164.xml @@ -2,13 +2,16 @@ Aeotec ZW164 Indoor Siren 6 --> - + http://www.openzwave.com/device-database/0086:00a4:0003 images/aeotec/zw164.png ZW164-C https://products.z-wavealliance.org/products/3301/ CEPT (Europe) + ZW164-A + https://products.z-wavealliance.org/products/3284/ + U.S. / Canada / Mexico This product supports Security 2 Command Class. While a Security S2 enabled Controller is needed in order to fully use the security feature. This product can be included and operated in any Z-Wave network with other Z-Wave certified devices from other manufacturers and/or other applications. All non-battery operated nodes within the network will act as repeaters regardless of vendor to increase reliability of the network. 1. Set your Z-Wave Controller into its 'Add Device' mode in order to add Chime into your Z-Wave system. Refer to the Controller's manual if you are unsure of how to perform this step. 2. Power on Chime via the provided power adapter; its LED will be breathing white light all the time. 3. Click Chime Action Button once, it will quickly flash white light for 30 seconds until Chime is added into the network. It will become constantly bright white light after being assigned a NodeID. 4. If your Z-Wave Controller supports S2 encryption, enter the first 5 digits of DSK into your Controller's interface if/when requested. The DSK is printed on Chime's housing. 5. If Adding fails, it will slowly flash white light 3 times and then become breathing white light; repeat steps 1 to 4. Contact us for further support if needed. 6. If Adding succeeds, it will quickly flash white light 3 times and then become off. Now, Chime is a part of your Z-Wave home control system. You can configure it and its automations via your Z-Wave system; please refer to your software's user guide for precise instructions. Note: If Action Button is clicked again during the Learn Mode, the Learn Mode will exit. At the same time, Indicator Light will extinguish immediately, and then become breathing white light. Indoor Siren 6 @@ -18,6 +21,7 @@ Aeotec ZW164 Indoor Siren 6 https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3301/Indoor%20Siren%206%20product%20manual.pdf Add metadata for aeotec indoor siren 6 #1894 + Add metadata for North American model - https://products.z-wavealliance.org/products/3284 @@ -308,4 +312,4 @@ Aeotec ZW164 Indoor Siren 6 - \ No newline at end of file + diff --git a/config/aeotec/zw175.xml b/config/aeotec/zw175.xml index aa3f469f3c..a4d47b5544 100644 --- a/config/aeotec/zw175.xml +++ b/config/aeotec/zw175.xml @@ -1,4 +1,4 @@ - + ZW175 Smart Switch 7 @@ -36,6 +36,7 @@ Add ZW175 Smart Switch 7 Change refresh on node info frame + Fix description on configuration parameters 101 and 111 (power reporting) @@ -146,10 +147,10 @@ Defines the type of report sent for reporting group 1. - 1 is meter report for voltage. - 2 is meter report for current. - 4 is meter report for watts. - 8 is meter report for kilowatts. + 1 is meter report for kilowatts. + 2 is meter report for watts. + 4 is meter report for voltage. + 8 is meter report for current. Value 1 (msb) Reserved Value 2 Reserved Value 3 Reserved @@ -163,7 +164,7 @@ 0 => Disable. - 600..2592000 => 600-2592000s. (10minute-30day) + 30..2592000 => 30-2592000s. (30seconds-30day) diff --git a/config/aeotec/zw187.xml b/config/aeotec/zw187.xml index 6fae235f4c..75d7e9ae0f 100644 --- a/config/aeotec/zw187.xml +++ b/config/aeotec/zw187.xml @@ -1,5 +1,5 @@ - + http://www.openzwave.com/device-database/0371:00bb:0002 images/aeotec/zw187.png @@ -24,11 +24,10 @@ It can be included and operated in any Z-Wave network with other Z-Wave certifie Initial version + Notification Class is supported by device - - Enable/Disable Binary Sensor Report. Allow for backward compatibility to report Binary if Notification Report cannot be used for status changes. diff --git a/config/aeotec/zwa002.xml b/config/aeotec/zwa002.xml index cf3cc67c70..9a0781e82d 100644 --- a/config/aeotec/zwa002.xml +++ b/config/aeotec/zwa002.xml @@ -1,7 +1,7 @@ +--> http://www.openzwave.com/device-database/0371:0002:0103 images/aeotec/zwa002.png @@ -44,6 +44,7 @@ Blinks between 100% White and Blue 0x0000FF color for 3 seconds (at a rate of 20 Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2880/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2881/xml + Add Verified Change Flag to Color CC https://products.z-wavealliance.org/products/2881/ CEPT (Europe) @@ -94,6 +95,11 @@ Blinks between 100% White and Blue 0x0000FF color for 3 seconds (at a rate of 20 + + + true + + diff --git a/config/aeotec/zwa009.xml b/config/aeotec/zwa009.xml new file mode 100644 index 0000000000..729e6e6d55 --- /dev/null +++ b/config/aeotec/zwa009.xml @@ -0,0 +1,119 @@ + + + + http://www.openzwave.com/device-database/0371:0002:0009 + images/aeotec/zwa009.png + + Water Sensor 7 Pro + CEPT (Europe) + ZWA009-C + This device measures the three air quality parameters temperature, humidity and dew point and reports them to a central controller. + Besides this, the device can directly control groups of other Z-Wave devices on over- and undershooting a set temperature and/or humidity parameter. + This can be used to establish control loops for temperature and humidity. + The device wakes up every 15 minutes to measure the values and it will send unsolicited reports when values change. + Additionally, the device will report all values on request. + The AërQ Sensor is actively monitoring the danger of mould in a room based on the temperature and humidity and will issue alarm warnings when critical air conditions met. + Wireless Alarm and red and a green blinking LED will indicate a mould condition. + This local LED warning function is also available when the device is not included in any Z-Wave network and works stand alone. + + Press the button once + 1. Insert the battery. + 2. Press the button quickly three times in a row. + + 1. Press the button quickly three times in a row. + + Keep the button pressed for 10 seconds. Then the green LED will start blinking. + Release the button, when the LED stops blinking. Your device is reset to factory default now. + + https://aeotec.freshdesk.com/support/solutions/folders/6000236759 + https://aeotec.freshdesk.com/support/solutions/folders/6000236759 + + Initial Config File + + + + + + true + + + + + + This value defines the minimum change of temperature to cause an unsolicited report of humidity to the central controller using Lifeline. + If the value is set to 0, there will be no reports sent to the controller, when the temperature changes. + However, periodic reports, managed by configuration parameter 4, may still be active. + + + + This value defines the minimum change of humidity to cause an unsolicited report of humidity to the central controller using Lifeline. + If the value is set to 0, there will be no reports sent to the controller, when the humidity changes. + However, periodic reports, managed by configuration parameter 4, may still be active. + + + + This parameter defines the time interval to send an unsolicited report. + If the value is set to 0, there will be no periodic reports sent to the controller. + However, reports on temperature/humidity changes, managed by configuration parameters 1 and 2, may still be active. + + + + This parameter defines a temperature. + If the measured temperature surpasses this watermark a BASIC command is sent into Association Group 2 + + + + This parameter defines a temperature. + If the measured temperature dropps below this watermark a BASIC command is sent into Association Group 3 + + + + This parameter defines a relative humidity. + If the measured relative humidity surpasses this watermark a BASIC command is sent into Association Group 4 + + + + This parameter defines a relative humidity. + If the measured temperature drops below this relative humidity a BASIC command is sent into Association Group 5 + + + + This defines what BASIC command shall be sent out into association group 3 + + + + This defines what BASIC command shall be sent out into association group 2 + + + + This defines what BASIC command shall be sent out into association group 5 + + + + This defines what BASIC command shall be sent out into association group 4 + + + + This value allows to increase the humidity threshold for mould danger notification by max 10% + + + + This parameter helps reset configuration parameters and the device to factory defaults + + + + + + + + + + + + + + + + + + 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/zwa012.xml b/config/aeotec/zwa012.xml new file mode 100644 index 0000000000..6e722635f4 --- /dev/null +++ b/config/aeotec/zwa012.xml @@ -0,0 +1,151 @@ + + + + http://www.openzwave.com/device-database/0371:0002:000C + images/aeotec/zwa012.png + https://products.z-wavealliance.org/products/3866/ + Door / Window Sensor 7 Pro + CEPT (Europe) + ZWA012-C + Aeotec Door/ Window Sensor 7 Pro 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 + + + + + + true + + + + + + This parameter defines if the internal magnet sensor or the external terminal input is detected and used to issue alarm notification. + There is always one input active only. + The other sensor input the deactivated. + + + + + + This parameter defines the polarity of the magnet sensor. + + + + + + This parameter defines when the red LED will indicate events. Disabling all indications may extend battery life. + + + + No Indications + + + + Open/Close Status Change + + + + Wake Up + + + + Device Tampering + + + + Allows to enable activation of Z-Wave range test with double click of a Tamper Switch. + + + + + + This parameter defines the status of the magnet switch that causes sending a BASIC command to all devices of Association Group 2. + + + + + + + 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. + + + + + + This parameter enables/disables the central scene function. + + + + + + This parameter enables/disables the tilt function. + + + + + + You can use this parameter to adjust the tilt sensitivity if the tilt is too low or too high. + + + + + + + + + + + + + diff --git a/config/aeotec/zwa019.xml b/config/aeotec/zwa019.xml new file mode 100644 index 0000000000..f9cda345f4 --- /dev/null +++ b/config/aeotec/zwa019.xml @@ -0,0 +1,136 @@ + + + + http://www.openzwave.com/device-database/0371:0002:0013 + images/aeotec/zwa019.png + https://products.z-wavealliance.org/products/3872/ + Water Sensor 7 Pro + CEPT (Europe) + ZWA019-C + The Water Sensor 7 pro brings more safety into your home. + With its flexible sensor probe and the sensitive sensor point it detects the presence and absence of water at any given location. + Furthermore the Watersensor 7 pro is enabled to accurately measure the temperature and humidity of its environment, so you are always informed about your room climate. + Thanks to the latest Z-Wave 700 series technology, the Water Sensor 7 is distinguished with and increased range, S2 Security, OTA FW update 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/6000236794 + https://aeotec.freshdesk.com/support/solutions/folders/6000236794 + + Initial Config File + + + + + + true + + + + + + This parameter defines when the red LED will indicate events. Disabling all indications may extend battery life. + + + + No Indications + + + + Water Leakage Status Change + + + + Wake Up + + + + Device Tampering + + + + Allows to enable activation of Z-Wave range test with double click of a Tamper Switch. + + + + + + This parameter defines the status of the water leakage that causes sending a BASIC command to all devices of Association Group 2. + + + + + + + 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. + + + + This parameter defines if the alarm cancellation event is reported. + + + + + + This value defines the minimum change of temperature to cause an unsolicited report of humidity to the central controller using Lifeline. + If the value is set to 0, there will be no reports sent to the controller, when the temperature changes. However, periodic reports, managed by configuration parameter 18, may still be active. + + + + This value defines the minimum change of humidity to cause an unsolicited report of humidity to the central controller using Lifeline. + If the value is set to 0, there will be no reports sent to the controller, when the humidity changes. However, periodic reports, managed by configuration parameter 18, may still be active. + + + + This parameter defines the time interval to send an unsolicited report. + If the value is set to 0, there will be no periodic reports sent to the controller. However, reports on temperature/humidity changes, managed by configuration parameters 16 and 17, may still be active. + + + + + + + + + + + + + diff --git a/config/aeotec/zwa021.xml b/config/aeotec/zwa021.xml new file mode 100644 index 0000000000..ac67fc5ce7 --- /dev/null +++ b/config/aeotec/zwa021.xml @@ -0,0 +1,144 @@ + + + http://www.openzwave.com/device-database/0371:0015:0002 + images/aeotec/zwa021.png + https://products.z-wavealliance.org/products/3627 + Start Inclusion mode of your primary Z-Wave Controller. + Press the Boost-Button. + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=product_documents/3627/RadiatorThermostat_Mainmanual.pdf + Start Exclusion mode of your primary Z-Wave Controller. + Now press and hold the boost button of the Spirit Z-Wave Plus for at least 5 seconds. + Aeotec Radiator Thermost + 4251295701387 + UAE + Please use this procedure only when the network primary controller is missing or otherwise inoperable. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3627/RadiatorThermostat_Mainmanual.pdf + Remove batteries. + Press and hold boost button. + While still holding boost button insert batteries. + The LCD shows RES. Release boost button. + To perform the factory reset press boost button. + + With the Aeotec Radiator Thermostat you get many functions. It regulates the room temperature to your comfort. For the best use it is equipped with FLiRS (Frequently Listening Receiver Slave) and reacts immediately to incoming commands of the Z-Wave controller. Furthermore the device is able to be connected to an external Z-Wave temperature sensor. Because of that the thermostat refers to the temperature of the external sensor, which can be placed in the middle of the room. + + The display of the thermostat has a background light and has a big LCD screen. Besides you can also lock the local buttons as a child protection. + + The multicolor LED of the central button allows a intuitive usability because the User is invited to follow the instruction based on the blinking LED of the middle butto. + + The TRV can either be used as heating thermostat or as a actuator depending on the configuration of the device. The measured temperature or the position of the actuator of the thermostat are transfered to the Z-Wave gateway. + + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3627 + ProductPic + + https://products.z-wavealliance.org/products/3627 + 4251295701387 + UAE + + + + + + + + + + + Off: No heating, only frost protection. + Heat: Room temperature will be kept at the configured setpoint. + Heat Eco: Energy save heating mode. Room temperature will be lowered to the configured eco setpoint in order to save energy. + Full Power: Full power heating. This mode is left automatically after 5 minutes. + Manufacturer Specific: Direct valve control mode. The valve opening percentage can be controlled using the switch multilevel command class. + + + + + + + + + + + + + + + + + + + + + + 0 + false + + + + + + + + Allows rotating the LCD contents by 180 degrees. + Default: Normal + + + + + + + 0: No Timeout, LCD always on. + 5-30: Timeout after 5-30s. + Default: 0 (LCD always on) + + + + + Default: Backlight enabled + + + + + + + Default: Send once a day + + + + + + + 0: Don't send temperature automatically. + 1-50: Report temperature at 0.1-5.0°C temperature difference. + Default: 5 (Delta = 0.5°C) + + + + + 0: Don't send Valve opening percentage automatically. + 1-100: Report valve opening percentage at a delta of 1-100%. + Default: 0 + + + + + Default: Medium sensibility + + + + + + + + + 206-255: -5.0 to -0.1°C. + 0-50: 0°C-5°C. + 128: External Temperature Sensor. + Default: 0 (0.0°C Offset) + + + + 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/PushButtonDeadbolt.xml b/config/assa_abloy/PushButtonDeadbolt.xml index 0c8fbcd6b5..04bf00fc25 100644 --- a/config/assa_abloy/PushButtonDeadbolt.xml +++ b/config/assa_abloy/PushButtonDeadbolt.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0129:0000:0004 images/assa_abloy/PushButtonDeadbolt.png @@ -13,6 +13,7 @@ Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1039/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1971/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3239/xml + Fixed index of alarm message to trigger lock status refresh https://products.z-wavealliance.org/products/1039/ YRD110-ZW-US @@ -113,7 +114,8 @@ http://ozw.my-ho.st/Yale/Yale%20ZWave%20Developer%20Guide.pdf Lock Status is Changed, but instead send a Alarm Message - So we trigger a Refresh of the DoorLock Command Class when we recieve a Alarm Message Instead --> - + + diff --git a/config/assa_abloy/TouchDeadbolt.xml b/config/assa_abloy/TouchDeadbolt.xml index 2d8c60563e..733f870dd0 100644 --- a/config/assa_abloy/TouchDeadbolt.xml +++ b/config/assa_abloy/TouchDeadbolt.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0129:0000:0002 images/assa_abloy/TouchDeadbolt.png @@ -20,6 +20,7 @@ Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2403/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3211/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3251/xml + Fixed index of alarm message to trigger lock status refresh https://products.z-wavealliance.org/products/1040/ U.S. / Canada / Mexico @@ -134,7 +135,7 @@ http://products.z-wavealliance.org/products/1973/configs Lock Status is Changed, but instead send a Alarm Message - So we trigger a Refresh of the DoorLock Command Class when we recieve a Alarm Message Instead --> - + diff --git a/config/assa_abloy/TouchLever.xml b/config/assa_abloy/TouchLever.xml index a86e97eaaa..eda996dafc 100644 --- a/config/assa_abloy/TouchLever.xml +++ b/config/assa_abloy/TouchLever.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0129:0000:0001 images/assa_abloy/TouchLever.png @@ -10,8 +10,11 @@ Yale Real Living deadbolt and lever locks are the first products in the Yale Real Living™ (www.yalerealliving.com) portfolio of home control and security solutions. Available in both durable acrylic touchscreen or simple, elegant, tamper-resistant keypad, Yale's new platform of intelligent locks support Z-Wave, allowing them to integrate seamlessly into a wide range of home control and security systems. Regardless of the home control system employed, users will have access to a high degree of functionality, including the ability to lock and unlock doors from web-enabled devices or create customized entry scenes for family members, neighbors and guests. Features of Yale Real Living locks include personalized access-control scenes for up to 250 users; access to all user programmable settings via select user interfaces; plus the touchscreen versions employ voice assisted programming in English, Spanish and French. The new intelligent locks offer an elegant, next-generation home control solution for entryways and protected interior doors to make everyday living easier and safer. + https://products.z-wavealliance.org/products/3114/ + YRL226-ZW2 Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/686/xml + Added Yale YRL226 + + + (On = default) + + + + + (Off = default) + + + + + after successful code entry and unit unlocks, it will automatically re-lock after specified number of seconds (30 = default) + + + + 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. +Privacy Mode: Master code and all user codes disabled. + + + + + + (On = default) + + + + + (Off = default) + + + + + (Off = default) + + + + + + + + + + + + + + + + + + + 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/building36/b36-t10.xml b/config/building36/b36-t10.xml new file mode 100644 index 0000000000..3ab2d79cfe --- /dev/null +++ b/config/building36/b36-t10.xml @@ -0,0 +1,253 @@ + + + + Building 36 Intelligent Thermostat + The Building 36 Intelligent Thermostat gives you remote access and control of your thermostat. Enjoy effortless energy management, climate and ambiance control, custom automation and measurable results. Create custom smart schedules that automate your thermostat. Receive critical temperature alerts to know instantly when your thermostat reaches preset limits. Save energy by using location-based automation to have your thermostat adjust itself while you're out. + http://www.openzwave.com/device-database/0190:0001:0001 + images/building36/b36-t10.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1161/Product_Manual_11_25_14-spreads_B36.pdf + Short press any button + Press and hold the DOWN button on the thermostat to begin inclusion mode. Release the button when the RADIO icon lights up. + Set the thermostat to OFF mode. Press and hold the DOWN button on the thermostat to enter exclusion mode. Release the button when the RADIO icon lights up. + https://products.z-wavealliance.org/products/1161 + U.S. / Canada / Mexico + B36-T10 + + Added device + Bump revision + + + + + 64 + + + + + + + + Air Temperature Sensor Value + + + Humidity Sensor Value + + + Air Temperature Sensor Available Units + + + + + Humidity Sensor Available Units + + + + + + + + Set the Thermostat Mode + + + + + + + + + + + + + + + + + Set the Thermostat Operating State + + + + + + + Set the Thermostat target heating temperature + + + Set the Thermostat target cooling temperature + + + + + + + + + + + + + + + + + + + Set the Fan Mode + + + + + + + + + + + + + + + Set the Fan State + + + + + + + + + + + ZWave+ Version Supported on the Device + + + Icon File to use for the Installer Application + + + Icon File to use for the User Application + + + + + + + + + + + Revision of the Config file currently loaded + + + Revision of the Config file on the File System + + + Latest Revision of the Config file available for download + + + + + + + Output RF PowerLevel + + + + + + + + + + + + + Timeout till the PowerLevel is reset to Normal + + + Apply the Output PowerLevel and Timeout Values + + + Node to Perform a test against + + + PowerLevel to use for the Test + + + + + + + + + + + + + How Many Messages to send to the Node for the Test + + + Perform a PowerLevel Test against the a Node + + + Get the results of the latest PowerLevel Test against a Node + + + The Current Status of the last PowerNode Test Executed + + + + + + Number of Messages successfully Acked by the Target Node + + + + + + + Current Battery Level + + + + + + + Day of Week + + + + + + + + + + Hour + + + Minute + + + + + + + + + + + + + + + + Z-Wave Library Version + + + Z-Wave Protocol Version + + + Application Version + + + diff --git a/config/config-template.xml b/config/config-template.xml index 191900a5c8..1011710029 100644 --- a/config/config-template.xml +++ b/config/config-template.xml @@ -3,7 +3,7 @@ - http://www.openzwave.com/device-database/XXXX:XXXX:XXXX + http://www.openzwave.com/device-database/XXXX:YYYY:ZZZZ diff --git a/config/connecthome/ch-201.xml b/config/connecthome/ch-201.xml new file mode 100644 index 0000000000..27f19e463b --- /dev/null +++ b/config/connecthome/ch-201.xml @@ -0,0 +1,133 @@ + + + + CH-201 Thermostat + CH-201 thermostat is a Z-Wave device designed to maintain the set temperature. The thermostat can control the heating element directly (electric floor heating, electric heater, etc.) or with additional equipment (thermoelectric drive, etc.) The thermostat is equipped with a digital temperature sensor, but can work with any other temperature sensor if necessary Your Z-Wave network. + http://www.openzwave.com/device-database/0179:0001:0001 + https://connecthome.com.ua/product/ch201 + https://connecthome.com.ua/index.php?route=information/contact + images/connecthome/CH_201.png + https://connecthome.com.ua/product/ch201 + To include the thermostat in a Z-Wave network, place the controller in the inclusion mode (see the instructions of your controller) and apply power to the electrical network to which the device is connected. The device will be added automatically (NWI). If this does not happen automatically, briefly press the system button three times on the top cover of the device. +If there are problems with connecting the device to your Z-Wave network, you must complete the Z-Wave network exclusion procedure, and then repeat the inclusion procedure. + To exclude the thermostat from the Z-Wave network, place the controller in the exclusion mode (see the controller instruction) and press the system button three times briefly. +Please note that after excluding the device from the Z-Wave network, all settings you have made will be reset to the factory settings. + To perform factory reset exclude the device form Z-Wave network and include it again. + + Initial configuration definition of CH-201 + Setpoint feature fixed for CH-201 + + + + + + +Relay mode. +Normal: Close the relay when the thermostat is in the "heating" mode and open when the set temperature is reached (Default). The most frequently used mode is used when the heater is directly connected through a thermostat. +Reverse: Open the relay when the thermostat is in the "heating" mode, close - when the set temperature is reached. Can be used with a limited list of special equipment (normally closed valves, etc.). + + + + + + +Set temperature threshold +To maintain the temperature, two values ​​are used: minimum and maximum. When the minimum value is reached, the heating will be turned on, when heating to the maximum value - the heating element will be turned off. For the convenience of the user, the controller assumes temperature adjustment with only one value, from which the thermostat will calculate the previously mentioned "minimum" and "maximum" values ​​of the temperature range. We recommend using a small range of 1 degree for more comfort and the most accurate match to the chosen temperature. If your heating element consumes a significant amount of energy at the moment of switching on, then it is recommended to reduce the number of on-off cycles by increasing this parameter. With our thermostat, you can always achieve the optimum operating mode by experiment or by contacting our specialists for help. The acceptable value is from 1 to 7 degrees: + + + + +Set point mode. +0 Switch on the heating mode at set point, switch off at set point + Δt +1 Switch on the heating mode at set point - Δt, switch off at set point +2 Switching on the heating mode at set point - ½ Δt, switching off at set point - ½ Δt (Default) + + + + + + + Operating mode in case a thermostat doesn't receive data from a temp sensor + + + + + Max time of data expectation from room temperature sensor + + + Set minimum allowable temperature + + + Set minimum allowable temperature + + + Set maximum alowable temperature + + + Set time turbo mode + + + Set power on turbo mode + + + Set temperature sensor mode + + + + + + Set polling period of the room sensor + + + The value that temprature should be changed to send data + + + Set Interval for forced sending data + + + Set Type of switch 1 (thermostat operating mode) + + + + + + + Set type of switch 2 (turbo mode) + + + + + + + Adjust temperature sensor if required. + + + + + + + + + + + + + + + + + + 2 + 0 + + + + + + + + + + + + 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 daf0ab7d8f..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 @@ -9,6 +9,8 @@ Aspire RF All load smart dimmer master 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 @@ -71,11 +73,16 @@ + + + + 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 21c28b8063..993553491c 100644 --- a/config/device_configuration.xsd +++ b/config/device_configuration.xsd @@ -86,8 +86,6 @@ - - @@ -97,12 +95,17 @@ - + - + + + + + + diff --git a/config/devolo/mt2759.xml b/config/devolo/mt2759.xml new file mode 100644 index 0000000000..5fa7a79084 --- /dev/null +++ b/config/devolo/mt2759.xml @@ -0,0 +1,169 @@ + + + http://www.openzwave.com/device-database/0175:0052:0002 + images/devolo/mt2759.png + https://products.z-wavealliance.org/products/2645/ + REMOVAL FROM A ZWAVE NETWORK (Z-WAVE EXCLUSION) + +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 I1 terminal 3 times within 5 seconds +OR +If the device is powered by 24 V SELV supply, press and hold the S (Service) button between 2 and 6 seconds +5. The device will be removed from your network but any custom configuration parameters will not be erased + + FACTORY RESET + +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 I1 terminal 5 times within 5 seconds (5 times change switch state) +OR +If the device is powered by 24 V SELV supply, press and hold the S (Service) button for more than 6 seconds + +*By resetting the device, all custom parameters previously set on the device will return to their default values, and the owner ID will be deleted. Use this reset procedure only when the main gateway (hub) is missing or otherwise inoperable. + + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2645/Manual_Devolo_HCswitch_FM.pdf + MT2759 + Home Control Switch FM + CEPT (Europe) + AUTOMATICALLY ADDING THE DEVICE TO A Z-WAVE NETWORK (AUTO INCLUSION) + +1. Enable add/remove mode on your Z-Wave gateway (hub) +2. Connect the device to the power supply (with the temperature sensor already connected – sold separately*). +3. Auto-inclusion will be initiated within 5 seconds of connection to the power supply and the device will automatically enrol in your network + +MANUALLY ADDING THE DEVICE TO A Z-WAVE NETWORK (MANUAL INCLUSION) + +1. Enable add/remove mode on your Z-Wave gateway (hub) +2. Connect the device to the power supply (with the temperature sensor already connected*) +3. Toggle the switch connected to the I1 terminal 3 times within 5 seconds +OR +If the device is powered by 24 V SELV supply, press and hold the S (Service) button between 2 and 6 seconds +4. A new multi-channel device will appear on your dashboard +*If connecting the temperature sensor, switch off the power supply and make sure the device is excluded from your network BEFORE connecting the sensor. + + +*Make sure the device is excluded from your network before connecting the temperature sensor. Switch off the power supply, connect the temperature sensor, and re-include the device to your network. + + The Switch FM controls on/off function for one electrical device. It measures power consumption of the connected device, and can be paired with a digital temperature sensor (sold separately). It supports push-button/momentary switches and toggle switches (default). + +The connection of a digital temperature sensor means you can create complex scenes and control any device relative to a set temperature range. The Devolo Switch FM also acts as a Z-Wave repeater to improve the range and stability of the Z-Wave network. + + Initial Version - Copied from qubino/ZMNHADx.xml + + + + + + + + + + + + + + + + + + + + + + Switch FM module responds to commands ALL ON / ALL OFF that may be sent by the main controller or by other controller belonging to the system. + + + + + + + 0 => Auto OFF disabled. 1 - 32535 => 1 second (0,01s) - 32535 seconds (325,35s). Auto OFF enabled with define time, step is 1s or 10ms according to parameter 15. Default value 0 + + + 0 - Auto OFF disabled. 1 - 32535 => 1 second (0,01s) - 32535 seconds (325,35s). Auto ON enabled with define time, step is 1s or 10ms according to parameter 15. Default value 0 + + + + + + + + + + + + + Set value from 0 - 100 (0%- 100%). 0 = Reporting Disabled. 1 - 100 = 1% - 100% and reporting enabled. Power report is send (push) only when actual power in Watts in real time change for more than set percentage comparing to previous actual power in Watts, step is 1%. Default value 10% + + + Set value means time interval (0 - 32535) in seconds, when power report is send. 0 = Reporting Disabled. 1 - 32535 = 1 second - 32535 seconds and reporting enabled. Power report is send with time interval set by entered value. Default value 300 (power report in Watts is send each 300s) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set value is added or subtracted to actual measured value by sensor. Available configuration parameters : default value 32536. 32536 offset is 0.0C. From 1 to 100 = value from 0.1C to 10.0C is added to actual measured temperature. From 1001 to 1100 = value from -0.1 C to -10.0 C is subtracted to actual measured temperature. + + + If digital temperature sensor is connected, module reports measured temperature on temperature change defined by this parameter. Available configuration parameters : 0 = reporting disabled. 1 to 127 = 0,1C to 12,7C, step is 0,1C. Default value is 5 = 0,5C + + + + + + false + + + + + + + + + + + + + + + + + true + + + + + + + + + + false + + + diff --git a/config/devolo/mt2760.xml b/config/devolo/mt2760.xml new file mode 100644 index 0000000000..3649edaac3 --- /dev/null +++ b/config/devolo/mt2760.xml @@ -0,0 +1,218 @@ + + + http://www.openzwave.com/device-database/0175:0051:0001 + images/devolo/mt2760.png + https://products.z-wavealliance.org/products/2838/ + • Connect module to power supply +• bring module within maximum 1 meter (3feet) of the main controller, +• enable add/remove mode on main controller, +• press push button I1 five times within 3s ( 5 times change switch state within 3 seconds) in the first 60 seconds after the module is connected to the power supply or +• press service button S (only applicable for 24 V SELV supply voltage) for more than 6 second. +By this function all parameters of the module are set to default values and own ID is deleted. +If push button I1 is pressed three times within 3s (or service button S is pressed more than 2 and less than 6 seconds) module is excluded, but configuration parameters are not set to default values. +NOTE: If the module is included with parameters 100 or 101 with values different to default and module reset is done, wait at least 30s before next inclusion + + This Z-Wave module is used for dimming the bulb or to manage the speed of a fan. The module can be controlled either through a Z-Wave network or through the wall switch. The module is designed to be mounted inside a “flush mounting box”, hidden behind a traditional wall switch. Module measures power consumption of bulb or fan and supports connection of digital temperature sensor. It is designed to act as repeater in order to improve range and stability of Z-wave network. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2838/manualdevoloHCdimmerFM25012018_0910.pdf + CEPT (Europe) / Australia / New Zealand + • Connect module to power supply (with +temperature sensor connected - if purchased), +• enable add/remove mode on main controller +• auto-inclusion (works for about 2 minutes after connected to power supply) or +• press push button I1 three times within 3s (3 times change switch state within 3 seconds) or +• press service button S (only applicable for 24 V SELV supply voltage) for more than 2 second. +NOTE1: For auto-inclusion procedure, first set main controller into inclusion mode and then connect module to power supply. +NOTE2: When connecting temperature sensor to module that has already been included, you have to exclude module first. Switch off power supply, connect the sensor and re-include the module. + + MT2760 + Home Control Dimmer FM + • press push button I1 five times within 3s ( 5 times change switch state within 3 seconds) in the first 60 seconds after the module is connected to the power supply or +• press service button S (only applicable for 24 V SELV supply voltage) for more than 6 second. + +Please use reset procedure only when the network primary controller is missing or otherwise inoperable. + + Initial Version - Copied from qubino/ZMNHDDx.xml + + + + + + + + + + + + + + + + + + + + + + Default value 0 + + + + + Flush dimmer module responds to commands ALL ON / ALL OFF that may be sent by the main controller or by other controller belonging to the system. + Default value 255. + + + + + + + 0 - Auto OFF disabled. + 1 second to 32536 seconds Auto OFF enabled with defined time, step is 1 second. + Default value 0. + + + 0 - Auto ON disabled. + 1 second to 32535 seconds Auto ON enabled with defined time, step is 1 second. + Default value 0. + + + Dimming is done by push button or switch connected to I1 (by default). + Enabling 3-way switch, dimming can be controlled by push button or switch connected to I1 and I2. + Default value 0. + + + + + + + If Double click function is enabled, a fast double click on the push button will set dimming power at maximum dimming value. + Default value 0. + + + + + Default value 0. + + + + + Set value from 0 - 100 (0% - 100%). + 0 - Reporting Disabled. + 1 - 100 = 1% - 100% Reporting enabled. + Power report is send (push) only when actual power in Watts in real time change for more than set percentage comparing to previous actual power in Watts, step is 1%. + Default value 5. + + + Set value means time interval (0 - 32767) in seconds, when power report is send. + 0 - Reporting Disabled. + 1 second to 32767 seconds reporting enabled. + Power report is send with time interval set by entered value. + Default value 300 (power report in Watts is send each 300s). + + + 1 - 98 = 1% - 98%, step is 1%. Minimum dimming values is set by entered value. + Default value 1 (Minimum dimming value is 1%). + + + 2 - 99 = 2% - 99%, step is 1%. Maximum dimming values is set by entered value. + Default value 99 (Maximum dimming value is 99%). + + + Set value means time of moving the Dimmer between min. and max. dimming values by short press of push button I1 or controlled through. + 1- 255 = 10mseconds - 2550mseconds (2,55s), step is 10mseconds. + Default value 100 (Dimming time between min. and max. dimming values is 1s). + + + Time of moving the Dimmer between min. and max dimming values by continues hold of push button I1. + 1- 255 = 1 second - 255 seconds. + Default value 3 (Dimming time between min. and max. dimming values is 3s). + + + This parameter is used with association group 4. + A receiving device SHOULD respect the start level if the Ignore Start Level bit is 0. + A receiving device MUST ignore the start level if the Ignore Start Level bit is 1. + Default value 0. + + + + + This parameter is used with association group 3. + The Duration field MUST specify the time that the transition should take from the current value to the new target value. + A supporting device SHOULD respect the specified Duration value. + Default value 0. + + + + + Enabling I2 means that Endpoint (I2) will be present on UI. + Disabling it will result in hiding the endpoint according to the parameter set value. + Additionally, a Notification Type and Event can be selected for the endpoint. + Endpoint device type selection: notification sensor (1 - 6) sensor binary (9). + NOTE: After parameter change, module has to be re included into the network in order setting to take effect! + Default value 1. + + + + + + + + + + + Enabling I3 means that Endpoint (I3) will be present on UI. + Disabling it will result in hiding the endpoint according to the parameter set value. + Additionally, a Notification Type and Event can be selected for the endpoint. + Endpoint device type selection: notification sensor (1 - 6) sensor binary (9). + NOTE: After parameter change, module has to be re included into the network in order setting to take effect! + Default value 1. + + + + + + + + + + + Set value is added or subtracted to actual measured value by sensor. + 32536 : offset is 0.0C. + From 1 to 100 : value from 0.1 C to 10.0 C is added to actual measured temperature. + From 1001 to 1100 : value from -0.1 C to -10.0 C is subtracted to actual measured temperature. + Default value 32536. + + + + If digital temperature sensor is connected, module reports measured temperature on temperature change defined by this parameter. + 0 : Reporting disabled. + 1- 127 = 0,1C - 12,7C, step is 0,1C. + Default value 5 = 0,5C change. + + + + + + + + + + + + + + + + + + + + + + + + + true + + + diff --git a/config/devolo/mt2761.xml b/config/devolo/mt2761.xml new file mode 100644 index 0000000000..5c765db3fc --- /dev/null +++ b/config/devolo/mt2761.xml @@ -0,0 +1,154 @@ + + + http://www.openzwave.com/device-database/0175:0052:0003 + images/devolo/mt2761.png + https://products.z-wavealliance.org/products/2962/ + • Connect module to power supply (with +temperature sensor connected - if purchased), +• auto-inclusion (works for about 5 seconds after connected to power supply) or +• press push button I1 three times within 3s (3 times change switch state within 3 seconds) or +• press service button S (only applicable for 24 V SELV supply voltage) for more than 2 second. + +NOTE1: For auto-inclusion procedure, first set main controller into inclusion mode and then connect module to power supply. + +NOTE2: When connecting temperature sensor to module that has already been included, you have to exclude module first. Switch off power supply, connect the sensor and re-include the module. + + • Connect module to power supply +• bring module within maximum 1 meter (3 feet) of the main controller, +• enable add/remove mode on main controller, +• press push button I1 five times within 3s (5 times change switch state within 3 seconds) in the first 60 seconds after the module is connected to the power supply or +• press service button S (only applicable for 24 V SELV supply voltage) for more than 6 second. +By this function all parameters of the module are set to default values and own ID is deleted. + +If push button I1 is pressed three times within 3s (or service button S is pressed more than 2 and less than 6 seconds) module is excluded, but configuration parameters are not set to default values. + +NOTE: Please use this procedure only when the network primary controller is missing or otherwise inoperable. + +NOTE: If the module is included with parameters 71 with value different to default and module reset is done, wait at least 30s before next inclusion + + • press push button I1 five times within 3s (5 times change switch state within 3 seconds) in the first 60 seconds after the module is connected to the power supply or +• press service button S (only applicable for 24 V SELV supply voltage) for more than 6 second. + +NOTE: Please use this procedure only when the network primary controller is missing or otherwise inoperable. + + This Z-Wave module is used to control the motor of blinds, rollers, shades, venetian blinds, etc … The module can be controlled either through a Z-Wave network or through the wall switch. Precise positioning is supported for motors equipped with mechanical or electronic end switches. The module is designed to be mounted inside a “flush mounting box”, hidden behind a traditional wall switch. Module measures power consumption of motor and support connection of digital temperature sensor. It is designed to act as repeater in order to improve range and stability of Z-Wave network. + + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2962/Manual_Devolo_HC Shutter_FM.pdf + MT2761 + Home Control Shutter FM + CEPT (Europe) / Australia / New Zealand / U.S. / Canada / Mexico + + Initial Version - Copied from qubino/ZMNHCDx.xml + + + + + + Flush 1 relay module responds to commands ALL ON / ALL OFF that may be sent by the main controller or by other controller belonging to the system. + + + + + + + Set value from 0 - 100 (0% - 100%). 0 - Reporting Disabled. 1 - 100 = 1% - 100% Reporting enabled. Power report is send (push) only when actual power (in Watts) in real time changes for more than set percentage comparing to previous actual power in Watts, step is 1%. Default value 1 + + + Set value means time interval (0 - 65535) in seconds, when power report is send. 0 - Reporting Disabled. 1 - 65535 = 1second - 65535 seconds. Reporting enabled. Power report is send with time interval set by entered value. Default value 300 (power report in Watts is send each 300s) + + + This parameter defines selection between two available operating modes + + + + + + This parameter defines the time necessary for slats to make full turn (180 degrees) + default value 150 = 1,5 seconds + 0 - Tilting time disabled + 1 - 32767 = 0,01seconds - 327,67 seconds + + + + This parameter defines slats position after up/down movement through Z-wave or push-buttons + Slats return to previously set position only in case of + + + + + + This parameter defines shutter motor moving time of complete opening or complete closing. + Default value 0 + 0 - moving time disabled (working with limit switches). + 1 - 65535 = 0,1seconds - 6553,5seconds + After that time motor is stopped (relay goes to off state) + + + + Power threshold to be interpreted when motor reach the limit switch. + default value 10 = 10W + 0 - 127 = 1-127 W. The value 0 means reaching a limit switch will not be detected. + + + + By modifying the parameters setting from 0 to 1 a Shutter enters the calibration mode + + + + + + This parameter defines the max time before motor power consumption is read after one of the relays is switched ON. + If there is no power consumption during this max time (motor not connected, damaged or requires higher time to start, motor in end position) the relay will switch OFF. + Time is defined by entering it manually. + default value 0 = time is set automatically + 3 - 50 = 0,3seconds - 5seconds (100ms resolution) + + + + + This parameter defines the minimum time delay between next motor movement (minimum time between switching motor off and on again). + default value 5 = 500ms + 1 - 30 = 0,1seconds - 3seconds (100ms resolution) + + + + + Set value is added or subtracted to actual measured value by sensor. + default value 32536 + 32536 - offset is 0.0C + From 1 to 100 - value from 0.1 C to 10.0 C is added to actual measured temperature. + From 1001 to 1100 - value from -0.1 C to -10.0 C is subtracted to actual measured temperature. + + + + + If digital temperature sensor is connected, module reports measured temperature on temperature change defined by this parameter + default value 5 = 0,5C + 0 - Reporting disabled + 1-127 = 0,1C - 12,7C, step is 0,1C + + + + + + + + + + + + + + + + + + + + + + + true + + + diff --git a/config/dlink/dch-z210.xml b/config/dlink/dch-z210.xml new file mode 100644 index 0000000000..26fe615043 --- /dev/null +++ b/config/dlink/dch-z210.xml @@ -0,0 +1,37 @@ + + + This plug-in ON/OFF switch DCH-210 (aka Wenzhou TKB TZ88) is a security enabled wireless switch, based on Z-Wave Plus technology. Z-Wave Plus™ enabled devices displaying the Z-Wave Plus™ logo can also be used with it regardless of the manufacturer, and can also be used in other manufacturer’s Z-Wave™ enabled networks. 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. Repeaters will re-transmit the RF signal to ensure that the signal is received by its intended destination by routing the signal around obstacles and radio dead spots. Because TZ88 supports Security Command Class, it can learn with Secured controller. Its functionality and supported command classes is identical when included as a secure and non-secure device. +This plug-in ON/OFF switch is able to detect instance wattage (3000W/CE/CN, 1500W/UL/TW/JP) and overload current (14.5A) of connected lights or appliances. When detecting overload state, the Switch will be disabled and its On/Off button will be lockout of which LED will flash quickly. However, unplug and re-connect the switch will reset its overload condition to normal status. + + Smart Energy Plug In Switch + DCH-Z210 + CEPT (Europe) / U.S. / Canada / Mexico + images/dlink/dch-z210.png + + Initial version - clone of Wenzhou (TKB) TZ88 + Add Product Pic + + + Use this procedure only in the event that the primary controller is lost or otherwise inoperable. +1. Pressing On/Off button three times within 2 seconds will enter inclusion mode. +2. Within 1 second, press On/Off button again for 5 seconds until LED is off. +3. IDs are excluded. + 1. Put your Z-Wave controller into inclusion mode by following the instructions provided by the controller manufacturer. +2. Pressing On/Off button three times within 2 seconds will enter inclusion mode. + CEPT (Europe) + 1. Put your Z-Wave controller into exclusion mode by following the instructions provided by the controller manufacturer. +2.Pressing On/Off button three times within 2 seconds will enter exclusion mode. +3. Node ID has been excluded. + DCH-Z10 + + + + + + If the setting is configured for 1 hour (value=720), the plug will report its instant power consumption every 1 hour. + + + If the setting is configured for 1 hour (value=6), the plug will report its accumulated power consumption (kWh) every 1 hour. + + + 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/dome/dmex1.xml b/config/dome/dmex1.xml new file mode 100644 index 0000000000..b43773da5b --- /dev/null +++ b/config/dome/dmex1.xml @@ -0,0 +1,49 @@ + + + images/dome/dmex1.png + https://products.z-wavealliance.org/products/2984/ + U.S. / Canada / Mexico + Turn the primary controller of Z-Wave network into inclusion mode, press the button on DMEX1 quickly 3 times in a row. + The Dome Range Extender is designed to improve communication between Z-Wave devices. It amplifies Z-Wave signals and increases the reach of your controller, ensuring your devices stay connected. The Extender has an LED light that works as a nightlight and can also act as an indicator in regular mode. The included suction cup lets you mount the Extender onto any smooth surface while using a micro USB power supply. All these features make the Dome Range extender the perfect choice for your home. + DMEX1 Range Extender + Press the button 6 times quickly, then immediately press and hold for 10 seconds. Use this procedure only in the event that your primary network controller is missing or inoperable. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2984/DomeExtenderAPIManual10-31.pdf + DMEX1 + Turn the primary controller of Z-Wave network into inclusion mode, press the button on DMEX1 quickly 3 times in a row. + + Initial Entry + + + + + + false + + + + + + + This parameter sets the luminance (brightness) level at which night light is turned off. This is a unitless value that can be set to any value from 0 - 10, with a default value of 5. The higher this value, the brighter the ambient light must be to turn off the night light. + Range:0-10 + Default: 5 + + + + + This parameter sets the luminance (brightness) level at which night light is turned on. This is a unitless value that can be set to any value from 0 - 10, with a default value of 5. The lower this value, the dimmer the ambient light must be to turn on the night light. + Range:0-10 + Default: 5 + + + + + + + + + + + diff --git a/config/duco/DucoBox.xml b/config/duco/DucoBox.xml new file mode 100644 index 0000000000..9868e13001 --- /dev/null +++ b/config/duco/DucoBox.xml @@ -0,0 +1,127 @@ + + + + + DucoBox + The ducBox is a Z-wave controlled mechenical ventilation unit + http://www.openzwave.com/device-database/XXXX:XXXX:XXXX + https://www.duco.eu/nl-nl-gearchiveerde-systemen + https://www.duco.eu/nl-nl-gearchiveerde-systemen + images/DefaultProductImage.png + https://www.duco.eu/Wes/CDN/1/Attachments/GH_DucoTronic%20System%20Z-wave_(nl)_online%20garantie_LowRes_635500206155264045.pdf + + Press all 4 buttons to enter installer mode. Next pres button 1 to add the device to a z-wave network. + + Press all 4 buttons to enter installer mode. Next press and hold button 1 and 2 to remove the device from a z-wave network. + https://products.z-wavealliance.org/products/49 + CEPT (Europe) + 00001801/G12809 + + Created the config file from scratch based on information from https://products.z-wavealliance.org/products/49 and http://devel.pepper1.net/zwavedb/device/156 + Remove auto on group 1, cleanup MetaDataItem + + + + + + + + + + + + + + + + + + + + + + + + + How often the value is measured(example: if value=60, the sensor value is measured every 60 seconds) + + + + Set point CO2: Used in ‘automatic mode’. (button 4) if the device is a CO2 sensor. The CO2 level in a room is a good indication of the air quality in this room. + When the CO2 level is above this set point, the room needs more ventilation. Consequently, the CO2 sensor will open the associated grating unit. + + + + + Set point CO2: Used in ‘automatic mode’. (button 4) if the device is a CO2 sensor. The CO2 level in a room is a good indication of the air quality in this room. + When the CO2 level is above this set point, the room needs more ventilation. Consequently, the CO2 sensor will open the associated grating unit. + + + + + The value when button1 is pressed. Values above 99 will be capped to 99 (maximum) used in association group 1 + + + + + The value when button2 is pressed. Values above 99 will be capped to 99 (maximum) used in association group 1 + + + + + The value when button3 is pressed. Values above 99 will be capped to 99 (maximum) used in association group 1 + + + + + The minimum value that can be send by the CO2 sensor when it is in automatic mode. + + + + + Temperature high set point: used in association group 2 or 3 + + + + + Temperature low set point: used in association group 2 or 3 + + + + + Temperature delta set point: used in association group 4 + + + + + RH high set point: used in association group 5 or 6 + + + + + RH low set point: used in group5 or 6 + + + + + RH delta set point: used in group7 + + + + + CO2 high set point: not available in RH sensor + + + + + CO2 low set point: not available in RH sensor + + + + + CO2 delta set point: not available in RH sensor + + + + diff --git a/config/duco/Ducotronic_CO-RH_sensor.xml b/config/duco/Ducotronic_CO-RH_sensor.xml new file mode 100644 index 0000000000..22957b15e3 --- /dev/null +++ b/config/duco/Ducotronic_CO-RH_sensor.xml @@ -0,0 +1,140 @@ + + + + + Duco CO2/RH sensor + The DUCO CO2 sensor measures the indoor CO2 levels and temperature. This is a good indication for the indoor air quality.Duco Tronic System + The Duco Tronic System is a demand-driven natural ventilation system that always provides a balance between controlled natural ventilation and a central mechanical extraction. + The demand for ventilation is determined based on air quality (CO 2 ) in the living spaces, the relative humidity (RH) in the 'wet' rooms and outdoor temperature readings. + These values ​​are measured by means of various sensors in different rooms. The sensors communicate wirelessly via the Z-wave protocol with the electronically controlled by the air supply + grilles and DucoBox the mechanical removal of the polluted and humid air controls. This electronic control ensures that only where a ventilation when needed, so the energy loss is limited. + Moreover, the Duco Tronic System takes into account the temperature and adjusts to the weather conditions. If it gets colder outside, it will automatically schedule a higher CO 2 target gain. T + his opens it progresses less rapidly and less far. When the weather warms up, the opposite is true. In extreme heat is ventilated only by those grids where the lowest temperature measured, for example, + on the shady side of the building. The measurement of the outside temperature is done by means of a sensor located in the control unit of the air vents situated. Thanks to the electronically controlled grids + within the 'Duco Tronic System requires the user to do anything. The system ventilates automatically . Still, the resident boss and he may, if necessary or desired, the air supply and exhaust manually. + Over time, the system automatically switches back to the most optimal position. All components, sensors, DucoBox and grills are aesthetically designed, fast and easy to install, use and maintenance. + http://www.openzwave.com/device-database/XXXX:XXXX:XXXX + https://www.duco.eu/nl-nl-gearchiveerde-systemen + https://www.duco.eu/nl-nl-gearchiveerde-systemen + images/DefaultProductImage.png + https://www.duco.eu/Wes/CDN/1/Attachments/GH_DucoTronic%20System%20Z-wave_(nl)_online%20garantie_LowRes_635500206155264045.pdf + + Press all 4 buttons to enter installer mode. Next pres button 1 to add the device to a z-wave network. + + Press all 4 buttons to enter installer mode. Next press and hold button 1 and 2 to remove the device from a z-wave network. + https://products.z-wavealliance.org/products/49 + CEPT (Europe) + 00001801/G12809 + + Created the config file from scratch based on information from https://products.z-wavealliance.org/products/49 and http://devel.pepper1.net/zwavedb/device/156 + Remove auto on group 1, cleanup MetaDataItem + + + + + + + + + + + + + + + + + + + + + + + + + + + How often the value is measured(example: if value=60, the sensor value is measured every 60 seconds) + + + + + Set point CO2: Used in ‘automatic mode’. (button 4) if the device is a CO2 sensor. The CO2 level in a room is a good indication of the air quality in this room. + When the CO2 level is above this set point, the room needs more ventilation. Consequently, the CO2 sensor will open the associated grating unit. + + + + + Set point RH: Used in ‘automatic mode’. (button 4) if the device is a humidity sensor. The humidity level in a room is a good indication of the air quality in this room. + When the RH level is above this set point, the room needs more ventilation. Consequently, the RH sensor will open the associated grating unit. + + + + + The value when button1 is pressed. Values above 99 will be capped to 99 (maximum) used in association group 1 + + + + + The value when button2 is pressed. Values above 99 will be capped to 99 (maximum) used in association group 1 + + + + + The value when button3 is pressed. Values above 99 will be capped to 99 (maximum) used in association group 1 + + + + + The minimum value that can be send by the CO2 sensor when it is in automatic mode. + + + + + Temperature high set point: used in association group 2 or 3 + + + + + Temperature low set point: used in association group 2 or 3 + + + + + Temperature delta set point: used in association group 4 + + + + + RH high set point: used in association group 5 or 6 + + + + + RH low set point: used in group5 or 6 + + + + + RH delta set point: used in group7 + + + + + CO2 high set point: not available in RH sensor + + + + + CO2 low set point: not available in RH sensor + + + + + CO2 delta set point: not available in RH sensor + + + + + diff --git a/config/ecodim/0.7.xml b/config/ecodim/0.7.xml new file mode 100644 index 0000000000..5fee8ee94c --- /dev/null +++ b/config/ecodim/0.7.xml @@ -0,0 +1,99 @@ + + + + ECO-DIM.07 Z-Wave LED dimmer + ECO-DIM.07 Z-Wave is a push/rotary dimmer for LED lights. +The dimmer has a range of 0-200W LED, and is able to dim 230V halogen and incandescent bulds, dimable LED-drivers and electronic transfomers. +The minimum and maximum light level of the dimmer can be adjusted via a potentiometer. It is protected against overload and interference signals. +Installation can be done via 2 wires, there is no need for a neutral wire! +It is suitable for most popular smarthome systems, and the frame systems of the most popular brands can be used: Busch-Jaeger, Merten by Schneider, Berker by Hager, Niko, Gira, Jung and Peha. +The dimmer is compatible with 95% of all dimmable LED lights. + http://www.openzwave.com/device-database/0431:0001:0202 + https://www.ecodim.nl/eco-dim07-z-wave-druk-draai-led-dimmer-fase-afsnij.html + https://www.ecodim.nl/service/ + images/ecodim/0.7.jpg + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3796/Z-Wave%20Dimmer%20Controller%20V1.4%20(1).pdf + Double press the reset button on the device then initiate inclusion on your z-wave controller. + Press the reset button three times on the device then initiate exclusion on your z-wave controller. + Push reset button for 5 seconds. + https://products.z-wavealliance.org/products/3796/ + CEPT (Europe) + ECO-DIM.07 Z-Wave + + Information from manufacturer website and manual + Change ProductManual link format + + + + + + + + State After Power Restored: The state the switch should return to once power is restored after power failure. + Default value: 0 + 0 - Off. + 1 - On. + 2 - Returns to level before Power Outage + + + + + Notification when Load status change: The Dimmer will send notification to associated device (Group Lifeline) when the status of Dimmer load is changed. + Default value: 1 + 0 - The function is disabled. + 1 - Send Switch Multilevel Report. + + + + + Default dimming speed,unit is second. Valid values: 0-100. + Default value: 5 + 0 - Instanly. + 1 - Fast. + ... + 100 - Slow. + + + + + + Enable or Disable external switch to pair network. + Default value: 0 + 0 - Disable. + 1 - Enable. + + + + + Setting dimming way. + Default value: 0 + 0 - Linear dimming. + 1 - Logarithmic dimming. + + + + + Setting default brightness when turn on the dimmer from off status. + Setting of 0 means that the dimmer will use parameter 1. + Default value: 0 + Valid values: 0-99 + + + + + Setting delay time when turn off, unit is second. + Default value: 0 + Valid values: 0-60 + + + + + + + + + + + + + diff --git a/config/ecolink/doorwindow.xml b/config/ecolink/doorwindow.xml index 3b3bc44a5c..7194b4978f 100644 --- a/config/ecolink/doorwindow.xml +++ b/config/ecolink/doorwindow.xml @@ -1,7 +1,7 @@ +--> http://www.openzwave.com/device-database/014A:0002:0001 images/ecolink/doorwindow.png @@ -21,6 +21,7 @@ Includes white and brown cases Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/790/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1498/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2927/xml + Add parameter 1 and 2 https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/2927/EU Z-wave Door Window Sensor H114101 ZWAVE_Ver03.pdf The sensor will wake up every so often and when the case is closed 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 to be between 1 hour and 1 week with interval steps of 200 seconds. @@ -48,6 +49,24 @@ STEP THREE Test the sensor. Place the magnet next to the sensor to represent true + + + + + Configures the sensor to send or not send Basic Sets to nodes IDs in Association group 2 when the sensor is in a restored state (i.e. Door/Window Closed). + By default the sensor does NOT send Basic Set commands. + + + + + + + Configures the sensor to either send Sensor Binary Report and Notification Reports or only Notification Reports when the sensor is faulted and restored. + + + + + diff --git a/config/econet/ezw1204.xml b/config/econet/ezw1204.xml new file mode 100644 index 0000000000..f067ef1752 --- /dev/null +++ b/config/econet/ezw1204.xml @@ -0,0 +1,37 @@ + + + EcoNet Z-Wave Plus Water Leak Sensor + Damage from water leaks can be both devastating and costly, leading to both unnecessary expenses and stress. Protect your home from water damage with EcoNet’s EZW1204 Z-Wave leak sensor. This sleek and compact leak sensor can be placed below dishwashers, in laundry rooms, beside hot water tanks, on a wall close a sump pump and more. It comes with an optional snap-in wall mount piece. +Z-Wave Plus technology allows this sensor to communicate with any Z-Wave enabled network and controller so notifications can be sent to your smartphone or other enabled smart devices. Its compatible with most popular Smart Home systems including Samsung’s SmartThings, Wink, Vera and Homeseer. It has a wireless range of 30 meters in a clear line of sight. + + http://www.openzwave.com/device-database/015D:C41C:2003 + https://www.econetshop.com/products.html + https://www.econetshop.com/support + images/econet/ezw1204.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2748/EZW1204-Manual-Guide%C2%A0171220.pdf + Open the shell, wake up immediately + Press the inclusion switch 3 or more times rapidly (within 0.5s). It is recommended to keep the EZW1204 within 1M/3ft of the controller. +(Set controller to inclusion mode first) + Press the inclusion switch 3 or more times rapidly (within 0.5s). It is recommended to keep the EZW1204 within 1M/3ft of the controller. +(Set controller to exclusion mode first) + Press and hold down the inclusion switch for 5 or more seconds. +Note: this should only be used in the event your network's primary controller is missing or otherwise inoperable + https://products.z-wavealliance.org/products/2748/ + U.S. / Canada / Mexico + EZW1204 + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2748/xml + + + + + + + + + + + + + + diff --git a/config/enerwave/zwnrsm2plus.xml b/config/enerwave/zwnrsm2plus.xml index e519f27a93..b6774b81ea 100644 --- a/config/enerwave/zwnrsm2plus.xml +++ b/config/enerwave/zwnrsm2plus.xml @@ -1,20 +1,32 @@ - - - - - - - ZWN-RSM2 and ZWN-RSM2-PLUS can send unsolicited status reports to the primary controller (Node ID 0x1) when the switch is toggled if the controller is designed as a gateway. If your controller is not a gateway or does not need the status reported or you think it could confuse your Z-Wave network, you can use Command_Class_Configuration to disable this function. By default this function is disabled. ZWM-RSM2 disabled=0, enabled=255. ZWN-RSM2-PLUS disabled=0, enabled=1 - - + + + ZWN-RSM2-PLUS Smart Dual Relay Switch Module + ZWN-RSM2-Plus Transform any home into a connected home with the Enerwave Z-Wave Plus Smart Dual Relay Wireless Lighting Control Module. The lighting control enables wireless control of on/off functions for standard table and floor lamps, and is compatible with incandescent, LED, Xenon, Halogen, fluorescent and compact fluorescent bulbs. + http://www.openzwave.com/device-database/011A:0606:0111 + https://enerwaveautomation.com/products/zwnrsm2/ + https://enerwaveautomation.com/products/zwnrsm2/ + images/enerwave/zwnrsm2plus.png + https://products.z-wavealliance.org/ProductManual/File?folder=%26filename=MarketCertificationFiles/2242/ZWN-RSM2%202017-2-28.pdf + Once program button is pressed and hold for 10 second, the device will send a device reset locally notification to controller. Then clear all of information for the network, and restore factory defaults, and reset the module. Use this procedure only in the event that the network primary controller is missing or otherwise inoperable. + When the controller is in remove mode,Press and release the program button of ZWN-RSM2 module, or Flick 3 times of the connected switch with Aux1 line (or Aux2 line) in 1.5 second. Then the controller will remove the module from current Z-Wave network. + When the controller is in add mode,Press and release the program button of ZWN-RSM2 module,or Flick 3 times of the connected switch with Aux1 line(or Aux 2 line) in 1.5 second. Then the controller will add the module into current Z-Wave network. + U.S. / Canada / Mexico + + Original file was placeholder - had not revision entry + Wholesale replacement of placeholder file. Added information from mfg site + + + + + + true + + + + + ZWN-RSM2-PLUS can send unsolicited status reports to the primary controller (Node ID 0x1) when the switch is toggled if the controller is designed as a gateway. If your controller is not a gateway or does not need the status reported or you think it could confuse your Z-Wave network, you can use Command_Class_Configuration to disable this function. By default this function is disabled. ZWM-RSM2 disabled=0, enabled=255. ZWN-RSM2-PLUS disabled=0, enabled=1 + + diff --git a/config/eurotronic/eur_airquality.xml b/config/eurotronic/eur_airquality.xml new file mode 100644 index 0000000000..9dd08f040b --- /dev/null +++ b/config/eurotronic/eur_airquality.xml @@ -0,0 +1,121 @@ + + + + + http://www.openzwave.com/device-database/0148:0001:0005 + images/eurotronic/eur_airquality.png + Start Inclusion mode of your primary Z-Wave Controller. +Press the network button three times within 1 second. + https://eurotronic.org/wp-content/uploads/2020/02/LGS-Z-Wave-Plus_BDA_web_EN-1.pdf + Start Exclusion mode of your primary Z-Wave Controller. +Press the network button three times within 1 second. + Air Quality Sensor + Please use this procedure only when the network primary controller is missing or otherwise inoperable. + +Press and hold the network button for at least 10 seconds. The Air Quality Sensor Z-Wave Plus will indicate +the reset blinking pattern once the reset is completed. + + This Z-Wave sensor provides comprehensive information on indoor +air quality. +• Multicolor LED for signalling ventilation recommendations +• Returns the following values: + - VOC value (volatile organic compounds) in ppm + - CO2 value (as CO2 equivalent) in ppm + - Temperature (°C) + - Humidity (%) + - Dew point (°C) +• Supports Z-Wave Plus S2 security (encryption) +• Z-Wave repeater function +• Operation with plug-in power supply unit + + + Initial Metadata Import from https://eurotronic.org/wp-content/uploads/2020/02/LGS-Z-Wave-Plus_BDA_web_EN-1.pdf/ + + CEPT (Europe) + https://eurotronic.org/produkte/sensoren/luftguetesensor/ + + + + + + + + 0: No on change reporting (only time-based reports) + 1-50: report if temperature changed by delta = 0,1°C - 5,0°C + Default: 5 + + + + + + 0: No on change reporting (only time-based reports) + 1-10: report if humidity changed by delta = 1% ...10% + Default: 5 + + + + + Temperature in Degrees Celcius + Temperature in Degrees Fahrenheit + Default: Temperature in Degrees Celcius + + + + + + + No resolution (example 22°C) + 1/10 resolution (example 22.3°C) + 1/100 resolution (example 22.35°C) + Default: No resolution (example 22°C) + + + + + + + + No resolution (example 33%) + 1/10 resolution (example 33.4%) + 1/100 resolution (example 33.45% + Default: No resolution (example 33% + + + + + + + + 0: No on change reporting (only time-based reports) + 1-10: report if VOC reading changed by 100ppb - 1000ppb + Default: 5 + + + + + 0: No on change reporting (only time-based reports) + 1-10: report if CO2eq reading changed by 100ppm - 1000ppm + Default: 5 + + + + + 0: No air quality indication via LEDs + 1: Indicate measuered air quality via LEDs + Default: 1 + + + + + + + + + + + + + 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/eurotronic/eur_temphumin.xml b/config/eurotronic/eur_temphumin.xml new file mode 100644 index 0000000000..c7c33ee350 --- /dev/null +++ b/config/eurotronic/eur_temphumin.xml @@ -0,0 +1,92 @@ + + + + + http://www.openzwave.com/device-database/0148:0001:0004 + Temperature and Humidity Sensor + images/eurotronic/eur_temphumid.png + Start Inclusion mode of your primary Z-Wave Controller. +Press the network button three times within 1 second. + Please use this procedure only when the network primary controller is missing or otherwise inoperable. + +Press and hold the network button for at least 10 seconds. The temperature humidity sensor will indicate +the reset blinking pattern once the reset is completed. + + CEPT (Europe) + https://eurotronic.org/produkte/sensoren/temperatur-feuchte-sensor/ + https://eurotronic.org/ + + +This Z-Wave sensor provides comprehensive information on indoor +temperature and humidity. +• Returns the following values: + - Temperature (°C) + - Humidity (%) + - Dew point (°C) +• Supports Z-Wave Plus S2 security (encryption) + + + + Initial Metadata Import + + + + + + + + + 0: Don't report temperature changes + 1-50: Report temperature changes from 0,1°C - 5,0°C + Default: 5 + + + + + + 0: Don't report humidity changes + 1-10: report humidity changes in 1% steps + Default: 5 + + + + + 0: Temperature in Degrees Celcius + 1: Temperature in Degrees Fahrenheit + Default: 0 + + + + + + + 0: no decimal places + 1: one decimal place + 2: two decimal places + Default: 1 + + + + + 0: no decimal places + 1: one decimal place + 2: two decimal places + Default: 0 + + + + + + + + + + + + + diff --git a/config/evolve/t-100.xml b/config/evolve/t-100.xml new file mode 100644 index 0000000000..e7dbc2aeea --- /dev/null +++ b/config/evolve/t-100.xml @@ -0,0 +1,217 @@ + + + + Evolve Guest Controls T-100 Thermostat + The T-100H is a Z-Wave wireless digital thermostat, designed to control the majority of HVAC systems. The T-100H contains a robust thermostat interface and is designed for use with communicating systems where remote monitoring and/or remote control are desired. + http://www.openzwave.com/device-database/0113:5434:4556 + images/evolve/t-100.png + https://products.z-wavealliance.org/products/81 + + Initial config with 'Heating 1' setpoint missing from discovered config + + + + + 64 + + + + + + + + + + + + + + + + + + Air Temperature Sensor Value + + + + + + + Set the Thermostat Mode + + + + + + + + + + + + + + + + + + + Set the Thermostat Operating State + + + + + + + Set the Thermostat Setpoint Heating 1 + + + Set the Thermostat Setpoint Cooling 1 + + + Set the Thermostat Setpoint Unused 3 + + + Set the Thermostat Setpoint Cooling Econ + + + Set the Thermostat Setpoint Away Heating + + + + + + + Set the Fan Mode + + + + + + + + + + + + + Set the Fan State + + + + + + + + + + + Revision of the Config file currently loaded + + + Revision of the Config file on the File System + + + Latest Revision of the Config file available for download + + + + + + + Output RF PowerLevel + + + + + + + + + + + + + Timeout till the PowerLevel is reset to Normal + + + Apply the Output PowerLevel and Timeout Values + + + Node to Perform a test against + + + PowerLevel to use for the Test + + + + + + + + + + + + + How Many Messages to send to the Node for the Test + + + Perform a PowerLevel Test against the a Node + + + Get the results of the latest PowerLevel Test against a Node + + + The Current Status of the last PowerNode Test Executed + + + + + + Number of Messages successfully Acked by the Target Node + + + + + + + Day of Week + + + + + + + + + + Hour + + + Minute + + + + + + + + + + + + + + + + Z-Wave Library Version + + + Z-Wave Protocol Version + + + Application Version + + + diff --git a/config/fakro/arzsolar.xml b/config/fakro/arzsolar.xml new file mode 100644 index 0000000000..b047c4eb4c --- /dev/null +++ b/config/fakro/arzsolar.xml @@ -0,0 +1,15 @@ + + + http://www.openzwave.com/device-database/0085:0012:0003 + images/fakro/arz.png + https://products.z-wavealliance.org/products/677/ + http://www.fakro.com/htmlen/379.php + The ARZ SOLAR external roller shutters, powered by 12VDC, have been adapted for wireless cooperation with the Z-Wave system. The shutter is designed for FAKRO roof windows and its installation is possible at any time after roof window installation. It is also possible to use the shutter for roof windows of other manufactures. Installed on the outside of the window, the roller shutter constitutes an optimum solution against overheating and provides additional protection of the window e.g. against falling tree branches etc. The roller shutter enables complete blackout and good sound reduction. It is also good protection from glazing excessive cooling during the winter. The roller shutter also means increased security. It has built-in overload protection and can be controlled by using standard Z-Wave controller. + ARZ SOLAR Roof Window Roller Shutter + ARZ + CEPT (Europe) + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/677/xml + + + diff --git a/config/fakro/zrh12.xml b/config/fakro/zrh12.xml new file mode 100644 index 0000000000..7f12113df4 --- /dev/null +++ b/config/fakro/zrh12.xml @@ -0,0 +1,15 @@ + + + http://www.openzwave.com/device-database/0085:0012:0003 + images/fakro/arz.png + https://products.z-wavealliance.org/products/677/ + http://www.fakro.com/htmlen/379.php + Fakro ZRH12 Portable Remote Controller + Fakro ZRH12 Portable Remote Controller + ZRH12 + CEPT (Europe) + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/677/xml + + + diff --git a/config/fibaro/fgdw2.xml b/config/fibaro/fgdw2.xml index 3156ecbc66..2336063e7b 100644 --- a/config/fibaro/fgdw2.xml +++ b/config/fibaro/fgdw2.xml @@ -1,13 +1,15 @@ - + http://www.openzwave.com/device-database/010F:1000:0702 images/fibaro/fgdw2.png https://products.z-wavealliance.org/products/2181/ + https://products.z-wavealliance.org/products/2279/ FIBARO Door/Window Sensor 2 FIBARO Door/Window Sensor 2 is a wireless, battery powered, Z-Wave Plus compatible magnetic contact sensor. Changing the device’s status will automatically send signal to the Z-Wave controller and associated devices. In addition the FIBARO Door/Window Sensor 2 is equipped with a built-in temperature sensor. Sensor can be used to trigger scenes and wherever there is a need for information about opening or closing of doors, windows, garage doors, etc. Opening is detected by separating the sensor’s body and the magnet. FGDW-002 + FGDW-002-1 1) Place the Door/Window Sensor 2 within the direct range of your Z-Wave controller. 2) Set the main controller in (security/non-security) add mode (see the controller’s manual). 3) Click the Button at least six times. @@ -37,9 +39,11 @@ Sensor can be used to trigger scenes and wherever there is a need for informatio *Resetting the device is not the recommended way of removing the device from the Z-Wave network. Use reset procedure only if the primary controller is missing or inoperable. CEPT (Europe) + U.S. / Canada / Mexico Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2181/xml - + Add support for US Model. + diff --git a/config/fibaro/fgfs101.xml b/config/fibaro/fgfs101.xml index bc8d21e2fc..d5585552a6 100644 --- a/config/fibaro/fgfs101.xml +++ b/config/fibaro/fgfs101.xml @@ -1,4 +1,55 @@ - + + + http://www.openzwave.com/device-database/010f:1001:0b00 + images/fibaro/fgfs101.png + https://products.z-wavealliance.org/products/994/ + 1) Open the cover by turning it counter-clockwise. +2) Make sure the device is powered (either by a battery or a DC power supply). +3) Press and hold the TMP button for 15-20 seconds until LED glows yellow (4th menu position). +4) Release and click the TMP button to start the reset procedure. +5) Successful reset will be confirmed with the LED indicator changing colour to red and an acoustic signal. +Use reset procedure only if the primary controller is missing or inoperable. + + FGFS-101 + http://www.fibaro.com/manuals/en/FGFS-101-Flood-Sensor/FGFS-101-Flood-Sensor-en-2.1-2.3.pdf + FIBARO Flood Sensor will wake up at a defined time interval and will always try to communicate with the main controller. There is a possibility to wake up the device manually by triple click on the TMP button (version 2.6 or lower) or single click on the TMP button (version 3.2 or higher) + 1) Open the cover by turning it counter-clockwise. +2) Make sure the device is powered (either by a battery or a DC power supply). +3) Place the device within the direct range of your Z-Wave controller. +4) Set the main controller in remove mode (see the controller’s manual). +5) Quickly, triple click the TMP button located inside the casing. +6) Wait for the removing process to end. +7) Successful removing will be confirmed by the Z-Wave controller’s message. + + 1) Open the cover by turning it counter-clockwise. +2) Remove battery blocker. +3) Place the device within the direct range of your Z-Wave controller. +4) Set the main controller in (security/non-security) add mode (see the controller’s manual). +5) Quickly, triple click the TMP button located inside the casing. +6) Wait for the adding process to end. +7) Successful adding will be confirmed by the Z-Wave controller’s message. +8) Close the cover by turning it clockwise. +9) Place the sensor onto a surface prone to flooding. Three electrodes underneath the device should evenly touch the surface. + + Fibaro Flood Sensor is a universal, Z-Wave compatible, flood and temperature +sensor. Device can be battery (ca. 2 years battery life) or VDC powered (12 or 24 +VDC). Flood alarm is sent to the Z-Wave network devices or additionally to any +alarm system controller, through opening a NC contact. +The device has built in temperature sensor, monitoring temperature of e.g. floor. +Fibaro Flood Sensor is designed to be placed on the floor or on a wall with a flood +sensor probe extended by connected wire. The device has built in LED indicator +and acoustic alarm. In addition, the sensor is equipped with a tilt sensor reporting +tilt or movement to the main controller e.g. when someone has taken the Sensor +from its original location. LED diode signals flood, operating mode or the Z-Wave +network communication range. Fibaro Flood Sensor is sink-proof, which means it +drifts on the water surface and keeps on sending alarm signal in case of +substantial inundation of water. + CEPT (Europe) + FIBARO Flood Sensor + + Initial Metadata + + @@ -40,11 +91,11 @@ Possible parameter settings:1 to 1000 [each 0.01oC] [0.01oC to 10.00oC]. - The parameter stores a temperature value, below which LED indicator blinks with a colour determined by Parameter 61 settings. By default the LED indicator blinks blue. + The parameter stores a temperature value, below which LED indicator blinks with a colour determined by Parameter 61 settings. By default the LED indicator blinks blue. Possible parameter settings:-10000 to 10000 [each 0.01oC] [-100oC to 100oC]. - The parameter stores a temperature value, above which LED indicator blinks with a colour determined by Parameter 62 settings. By default the LED indicator blinks red. + The parameter stores a temperature value, above which LED indicator blinks with a colour determined by Parameter 62 settings. By default the LED indicator blinks red. Possible parameter settings:-10000 to 10000 [each 0.01oC] [-100oC to 100oC]. diff --git a/config/fibaro/fgmszw5.xml b/config/fibaro/fgmszw5.xml index 6453714b01..c3e01919f1 100644 --- a/config/fibaro/fgmszw5.xml +++ b/config/fibaro/fgmszw5.xml @@ -1,4 +1,4 @@ - http://www.openzwave.com/device-database/010F:1001:0801 @@ -37,6 +37,7 @@ Use reset procedure only if the primary controller is missing or inoperable.Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3336/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3379/xml Force Association Single Channel on Lifeline - https://github.com/OpenZWave/open-zwave/issues/1830 + Updated Metadata Import from Z-Wave Allian Database - https://products.z-wavealliance.org/products/3513/xml https://products.z-wavealliance.org/products/2763/ U.S. / Canada / Mexico @@ -47,6 +48,10 @@ Use reset procedure only if the primary controller is missing or inoperable.https://products.z-wavealliance.org/products/3379/ U.S. / Canada / Mexico FGMS-001 + https://products.z-wavealliance.org/products/3513/ + Australia / New Zealand + FGMS-001 + @@ -7,14 +52,14 @@ Once the Local Protection is activated, the module stops responding to S1 and S2 push buttons. SCENE ID and association commands will not be sent as well. The only exception is the B-button. Menu and Z-Wave network inclusion, after the B-button or S1 push button triple click, are still active. - + - + Once the RF Protection is activated, the module stops responding to command frames setting the blind position. It's still possible however to configure the device (advanced configuration parameters, protection modes) and checking it's current state through polling (position, power, energy). - + @@ -22,9 +67,9 @@ Parameters value shoud be set to 1 if the module operates in Venetian Blind mode. Default setting: 0 - - - + + + Default setting: 1 @@ -33,15 +78,15 @@ - + In Venetian Blind mode (parameter 10 set to 2) the parameter determines time of full turn of the lamellas. - In Gate Mode (parameter 10 set to 3 or 4) the parameter defines the COUNTDOWN time, i.e. the time period after which an open gate starts closing. + In Gate Mode (parameter 10 set to 3 or 4) the parameter defines the COUNTDOWN time, i.e. the time period after which an open gate starts closing. In any other operating mode the parameter value is irrelevant. Value of 0 means the gate will not close automatically Available settings: 0-65535 (0 - 655,35s) - Default setting: 150 (1,5 s) + Default setting: 150 (1,5 s) - + In Venetian Blind Mode (parameter 10 set to 2) the parameter influences lamellas positioning in various situations. In any other operating mode the parameter value is irrelevant. Default setting: 1 @@ -49,42 +94,42 @@ - + The parameter settings are relevant for Roller Blind Mode and Venetian Blind Mode (parameter 10 set to 0, 1, 2). - + In Roller Blind Mode or Venetian Blind mode (parameter 10 set to 0, 1, 2) the parameter determines when the Roller Shutter relays are turned off after reaching a limit switch. In Gate Mode (parameter 10 set to 3 or 4) the parameter determines a time period after which a gate will start closing after a S2 contact has been disconnected. In this mode, time to turn off the Roller Shutter relays after reaching a limit switch is set to 3 seconds and cannot be modified. Value of 0 means the gate will note close automatically. Available settings: 0 - 255 (0,1-25,5s). - Default setting: 10 (1s). + Default setting: 10 (1s). - + Power threshold to be interpreted as reaching a limit switch. Available settings: 0 - 255 (1-255 W) The value of 0 means reaching a limit switch will not be detected - Default setting: 10 (10W). + Default setting: 10 (10W). - + Time period for the motor to continue operation. Available settings: 0 - 65535 (0 - 65535s) The value of 0 means the function is disabled. - Default setting: 240 (240s. - 4 minutes) + Default setting: 240 (240s. - 4 minutes) - + By modifying the parameters setting from 0 to 1 a Roller Shutter enters the calibration mode. The parameter relevant only if a Roller Shutter is set to work in positioning mode (parameter 10 set to 1, 2 or 4). - + - + Default setting: 2-Close blind @@ -99,64 +144,64 @@ - + Default setting: 1-Open blind - + Default setting: 1-Open blind - + In Venetian Blind Mode (parameter 10 set to 2), the parameter determines how the lamellas will react upon alarm detection. In any other modes, the parameter value is not relevant. Default setting: 1 Set lamellas to their extreme position - + - + Power level change that will result in new power value report being sent. The parameter defines a change that needs to occur in order to trigger the report. The value is a percentage of the previous report. Power report threshold available settings: 1-100 (1-100%). Value of 0 means the reports are turned off. - Default setting: 10 (10%). + Default setting: 10 (10%). - + The parameter defines a time period between consecutive reports. Available settings: 1-65534 (1-65534 seconds) Value of 0 means the reports are turned off. - Default setting: 3600 (3600 seconds / 60 minutes). + Default setting: 3600 (3600 seconds / 60 minutes). - + Energy level change which will result in new energy value report being sent. The parameter defines a change that needs to occur in order to trigger the report. Energy threshold available settings: 1-254 (0,01 - 2,54kWh). Value of 0 means the reports are turned off. - Default setting 10 (0,1kWh). + Default setting 10 (0,1kWh). - + A Roller Shutter may include power and energy used by itself in reports sent to the main controller Default setting: 0-Self-measurement inactive - + - + Parameter determines whether scenes or associations are activated by the switch keys. Default setting: 0-Associations activation - + + + + This parameter determines the state of relays power supply failure (e.g. power outage). auto OFF and flashing modes the parameter not relevant and the relay will always remain off. + + + + + + This parameter allows to choose operating for channel controlled with Q/Q1 output. timed modes (value 1, 2 or 3), time is set parameter 154 and reaction to input is set with parameter 152. + + + + + + + This parameter determines how the device when changing state of S1 input in timed for first channel. + + + + + + This parameter allows to set time parameter used in timed modes. (s) + + + This parameter determines value sent with Switch On command to devices associated in 2nd association group. + + + This parameter determines value sent with Switch Off command to devices associated in 2nd association group. + + + This parameter determines value sent with Double Click command to devices associated in 2nd association group. + + + This parameter determines type of Q/Q1 output. + + + + + S1 - Inputs type configuration + + + + + + S2 - Inputs type configuration + + + + + + This parameter allows reversing operation of S1 and S2 inputs changing the wiring. Use in case of incorrect wiring. + + + + + + This parameter determines which actions result in sending scene IDs assigned to them. + 1 - Key pressed 1 time. + 2 - Key pressed 2 times. + 4 - Key pressed 3 times. + 8 - Key Hold Down and Key Released. + 15 - All active (Default) + Default setting: 0 (none) + + + + + This parameter determines which actions result in sending scene IDs assigned to them. + 1 - Key pressed 1 time. + 2 - Key pressed 2 times. + 4 - Key pressed 3 times. + 8 - Key Hold Down and Key Released. + 15 - All active (Default) + Default setting: 0 (none) + + + + + + + true + + + + + + + + + + + + + true + + + \ No newline at end of file diff --git a/config/fibaro/fgs222.xml b/config/fibaro/fgs222.xml index 0b9e1ed1ed..34443f7480 100644 --- a/config/fibaro/fgs222.xml +++ b/config/fibaro/fgs222.xml @@ -1,4 +1,43 @@ - + + + http://www.openzwave.com/device-database/010f:1002:0202 + images/fibaro/fgs222.png + https://products.z-wavealliance.org/products/2731/ + To remove the device from the Z-Wave network: +1. Place the device within the direct range of your Z-Wave controller +2. Identify switch no. 1 (turns the light on) or the B-button (located on the device’s housing) +3. Set the main controller in remove mode (see the controller's manual). +4. Quickly, three times press switch no. 1 or the B-button +5. Wait for the removing process to end +6. Successful removing will be confirmed by the Z-Wave controller’s message + + FIBARO Double Relay Switch is designed to be installed in standard wall switch boxes or anywhere else where it is necessary to control two independent devices drawing up to 1500W each. +As with all other Actors, FIBARO Double Relay Switch allows to control connected devices either via the Z-Wave network or via a switch connected directly to it. + https://manuals.fibaro.com/content/manuals/en/FGS-222/FGS-222-EN-A-v1.1.pdf + To add the device to the Z-Wave network: +1. Place the device within the direct range of your Z-Wave controller +2. Identify switch no. 1 (turns the light on) or the B-button (located on the device’s housing) +3. Set the main controller into the adding mode (see the controller’s manual). +4. Quickly, three times press switch no. 1 or the B-button +5. Wait for the adding process to end +6. Successful adding will be confirmed by the Z-Wave controller’s message + + Reset procedure erases memory of the device, including all information on the Z-Wave network and the main controller. +1. Disconnect the power supply +2. Remove the device from the wall switch box +3. Connect the power supply +4. Locate the B-button on the housing +5. Press and hold the B-button for 3 seconds +6. After few seconds the device will be reset + + FGS-223 + FIBARO Double Switch 2 + CEPT (Europe) + The FIBARO Double Switch 2 is powered with the mains voltage so it is always awake. + + Initial Metadata + + @@ -35,8 +74,8 @@ - Key no.2 is not represented by any physical device except of devices on association list. - This functionality prevents of lack of reaction on pressing key no.2 through polling devices + Key no.2 is not represented by any physical device except of devices on association list. + This functionality prevents of lack of reaction on pressing key no.2 through polling devices from association list one by one and checking their actual statuses. diff --git a/config/fibaro/fgs224.xml b/config/fibaro/fgs224.xml new file mode 100644 index 0000000000..b5d4c143d6 --- /dev/null +++ b/config/fibaro/fgs224.xml @@ -0,0 +1,166 @@ + + + http://www.openzwave.com/device-database/010F:1000:0204 + images/fibaro/fgs224.png + https://products.z-wavealliance.org/products/3980/ + 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 the maintenance button. +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. + + The remotely operated FIBARO Double Smart Module is designed to turn electrical devices or circuits on and off. Double Smart Module allows to control two devices or circuits. The compact size of the device allows for the product to be installed in the housings of other devices. The devices can be controlled either via the Z-Wave™ network or with buttons connected directly to them. + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3980/FGS-2x4-T-EN-1.0.pdf + To add the device to the Z-Wave network manually: +1. Power the device. +2. Set the main controller in (Security/non-Security Mode) add mode +(see the controller’s manual). +3. Quickly, three times click button connected to S1/S2 or the +maintenance button. +4. LED will start blinking yellow, wait for the adding process to end. +5. If you are adding in Security S2 Authenticated, input the underlined +part of the DSK (label on the bottom of the box). +6. Adding result will be confirmed by the Z-Wave controller’s message +and the LED: +• Green – successful (non-secure, S0, S2 non-authenticated), +• Magenta – successful (Security S2 Authenticated), +• Red – not successful. + + 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. In order to reset the device: +1. Press and hold the maintenance button 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. + +Use reset procedure only if the primary controller is missing or inoperable. + + FGS-224 + FIBARO Double Smart Module + CEPT (Europe) + The FIBARO Double Smart Module is powered with the mains voltage so it is always awake. + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/Products/3980/XML + Added parameter 151 + + + + + + This parameter determines the state of relays power supply failure (e.g. power outage). auto OFF and flashing modes the parameter not relevant and the relay will always remain off. + + + + + + This parameter allows to choose operating for channel controlled with Q/Q1 output. timed modes (value 1, 2 or 3), time is set parameter 154 and reaction to input is set with parameter 152. + + + + + + + This parameter allows to choose operating for channel controlled with Q/Q2 output. timed modes (value 1, 2 or 3), time is set parameter 155 and reaction to input is set with parameter 153. + + + + + + + This parameter determines how the device when changing state of S1 input in timed for first channel. + + + + + + This parameter determines how the device when changing state of S2 input in timed for second channel. + + + + + + This parameter allows to set time parameter used in timed modes. (s) + + + This parameter allows to set time parameter used in timed modes. (s) + + + This parameter determines value sent with Switch On command to devices associated in 2nd association group. + + + This parameter determines value sent with Switch Off command to devices associated in 2nd association group. + + + This parameter determines value sent with Double Click command to devices associated in 2nd association group. + + + This parameter determines value sent with Switch On command to devices associated in 3rd association group. + + + This parameter determines value sent with Switch Off command to devices associated in 3rd association group. + + + This parameter determines value sent with Double Click command to devices associated in 3rd association group. + + + This parameter determines type of Q/Q1 output. + + + + + This parameter determines type of Q2 output. + + + + + When the lock is enabled, both outputs cannot turned on at the same time. + + + + + S1 - Inputs type configuration + + + + + + S2 - Inputs type configuration + + + + + + This parameter allows reversing operation of S1 and S2 inputs changing the wiring. Use in case of incorrect wiring. + + + + + This parameter allows reversing operation of Q1 and Q2 outputs changing the wiring. Use in case of incorrect wiring. + + + + + + + + true + + + + + + + + + + + + + true + + + diff --git a/config/fibaro/fgsd002.xml b/config/fibaro/fgsd002.xml index ca89d2d100..21fbf252d0 100644 --- a/config/fibaro/fgsd002.xml +++ b/config/fibaro/fgsd002.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/010F:1002:0C02 images/fibaro/fgsd002.png @@ -33,7 +33,8 @@ https://www.youtube.com/watch?v=50QGfkdUtns Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1273/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2837/xml - + Updated Text for parameter 12 + https://products.z-wavealliance.org/products/2837/ FGSD-002 CEPT (Europe) @@ -82,10 +83,10 @@ https://www.youtube.com/watch?v=50QGfkdUtns - BASIC ON frame is sent in case of smoke presence detection and FIRE ALARM triggering. Available settings: (1 - 99) or 255. Default setting: 255 + BASIC ON frame is sent in case of smoke presence detection and FIRE ALARM triggering. Available settings: 0,(1 - 99) or 255. Default setting: 255 - BASIC OFF frame is sent in case of FIRE ALARM cancellation. Available settings: (1 - 99) or 255. Default setting: 255 + BASIC OFF frame is sent in case of FIRE ALARM cancellation. Available settings: 0,(1 - 99) or 255. Default setting: 0 A value other than 0 means that alarms are being sent in broadcast mode, i.e. to all devices within a Fibaro Smoke Sensor's range. 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 0d3e876a31..6bfecfd876 100644 --- a/config/fibaro/fgwds221.xml +++ b/config/fibaro/fgwds221.xml @@ -1,4 +1,4 @@ - + FGWDSEU-221 Walli Double Switch @@ -6,7 +6,7 @@ http://www.openzwave.com/device-database/010f:1000:1B01 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: @@ -35,9 +35,11 @@ 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 - + @@ -47,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. @@ -82,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. @@ -95,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. @@ -112,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 @@ -162,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 @@ -171,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 @@ -180,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. @@ -251,7 +253,7 @@ - + This parameter allows to choose operating for the 2nd channel. @@ -259,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). @@ -275,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 @@ -317,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 @@ -339,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/fibaro/fgwpb121.xml b/config/fibaro/fgwpb121.xml new file mode 100644 index 0000000000..94fe8221bf --- /dev/null +++ b/config/fibaro/fgwpb121.xml @@ -0,0 +1,252 @@ + + + FIBARO Wall Plug + FIBARO Wall Plug is a remotely controlled plug-in switch with the ability to measure power and energy consumption. It uses a LED frame to visualize the current load and operating mode with color changing illumination. FIBARO Wall Plug makes it possible to control electrical devices in a convenient and maintenance-free way. It is also equipped with a USB charging port with power metering. + http://www.openzwave.com/device-database/010f:2000:1401 + https://www.fibaro.com/us/products/wall-plug/ + https://manuals.fibaro.com/wall-plug-us/ + images/fibaro/fgwpb121.png + https://manuals.fibaro.com/content/manuals/en/FGWPB-121/FGWPB-121-EN-T-v1.0.pdf + To add the device to the Z-Wave network: +1. Plug the device into a socket nearby the main Z-Wave controller. +2. The LED frame will glow red signaling not being added (reset or +remove the device otherwise). +3. Set the main controller in (Security/non-Security Mode) add mode +(see the controller’s manual). +4. Quickly, triple click the button located on the casing +5. If you are adding in S2 authenticated mode, type in the device pin +code (underlined part of the public key available on the device or +in the manual). +6. Wait for the adding process to end. +7. Successful adding will be confirmed by the Z-Wave controller’s +message. + + To remove the device from the Z-Wave network: +1. Plug the device into a socket nearby the main Z-Wave controller. +2. The LED frame will glow green signaling being added (removing +is not necessary otherwise). +3. Set the main controller into remove mode (see the controller’s +manual). +4. Quickly, triple click the button located on the casing. +5. Wait for the removing process to end. +6. Successful + + 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. In order to reset the device: +1. Make sure the device is powered. +2. Press and hold the button. +3. Wait for the LED frame to glow yellow (3rd menu position). +4. Release the button. +5. Click the button once to confirm selection. +6. After few seconds the device will restart with factory settings, +which is signaled with the red frame color. + + https://products.z-wavealliance.org/products/2622/ + U.S. / Canada / Mexico + FGWPM-121 + + Initial Metadata Import + + The FIBARO Wall Plug is powered with the mains voltage so it is always awake. + + + + This parameter determines how the Wall Plug will react in the event of power supply failure (e.g. taking out from the electrical outlet). + After the power supply is back on, the Wall Plug can be restored to previous state or remain switched off. + This parameter is ignored in Always On mode - the device automatically turns ON after plugging it into the socket. + Default setting: 1 + + + + + + + This function allows to turning 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. + Available settings: 10 - 30000 (1,0W - 3000,0W step 0,1W). + Default setting: 0 (function inactive) + + + + + This parameter determines the minimum percentage change inactive power consumption (in relation to the previously reported) that will result in sending new power report. + Available settings: 1-100. 0 - power reports inactive. + Default Setting: 15 (%) + + + + + This parameter determines the minimum change in energy consumption (in relation to the previously reported), that will result in sending a new report. + Available settings: 1-500 (0,01kWh - 5kWh). 0 - energy reports inactive. + Default Setting: 10 (0,1 kWh) + + + + + This parameter defines time period between reports sent when changes in power load have not been record if changes are smaller than defined in parameter 11. + By default reports are sent every hour. + Available settings: 0 - 32400 (s). 0 - periodic reports inactive. + Default setting: 3600 + + + + + This parameter defines time period between reports sent when changes in power load have not been recorded or if changes are smaller than in paramater 11. + By default reports are sent every hour. + Available settings: 0 - 32400 (s). 0 - periodic reports inactive. + Default setting: 3600 + + + + + This parameter determines whether power metering should include the amount of power consumed by the Wall Plug itself. + Results are being added to the value of power consumed by controlled device. + Default setting: 0 Inactive + + + + + + + Upper power threshold, used in parameter 23. Up value cannot be lower than a value specified in parameter 22. + Available settings: 100 - 30000 (10,0W - 30000,0W). + Default setting: 500 (50W) + + + + + Lower power threshold, used in parameter 23. + DOWN value cannot be higher than a value specified in parameter 21. + Available settings: 0 - 29900 (0,0W - 2990,0W step 0,1W). + Default setting: 300 (30W) + + + + + This parameter defines the way that 3rd association group devices are controlled. + Depends on the actual measured power(according to parameters 21 and 22 settings). + Default setting: 3 + + + + + + + + The value of BASIC SET command frame sent to the devices associated in 2nd group On/Off (Button) when turning the device ON using the button. + Available settings: 0-99 or 255. + Default setting: 255 + + + + + The value of BASIC SET command frame sent to the devices associated in 2nd group On/Off (Button) when turning the device OFF using the button. + Available settings: 0-99 or 255. + Default setting: 0 + + + + + The value of BASIC SET command frame sent to the devices associated in 3rd group On/Off (Power) if power exceeded value of parameter 21. + Available settings: 0-99 or 255. + Default setting: 255 + + + + + The value of BASIC SET command frame sent to the devices associated in 3rd group On/Off (Power) if power dropped below value of parameter 22. + Available settings: 0-99 or 255. + Default setting: 0 + + + + + Define Z-Wave network alarms to which the Wall Plug will respond. + + + + + + + + + + + This parameter defines how the Wall Plug will respond to alarms (device's status change). + In case of values 1 or 2 the Wall Plug is operating normally and LED frame signals an alarm through time defined in parameter 32 or until the alarm is cancelled. + In case of values 5 to 50 the Wall Plug does not report status change, power changes, ignores BASIC SET command frames. + After time defined in parameter 32 or after the alarm cancellation, connected device is set to the previous state. + 0 - no reaction 1-turn connected device on 2-turn connected device off 5-50(0,5-50,0s step 0,1s)-cyclically change device state with set period. + Default setting:0-no reaction + + + + + This parameter specifies the duration of alarm state. + If a device sending an alarm frame through the Z-Wave network sets alarm duration as well, this settings are ignored. + Available settings 1-32400(s) + Default setting: 600 + + + + + This parameter determines maximum active power value, which when exceeded, causes the LED frame to flash violet. Function is active only when parameter 41 is set to 1 or 2. + Available settings: 1000 - 30000 (100,0W - 3000,0W, step 0,1W). + Default setting: 30000 (3000W) + + + + + When set to 1 or 2, LED frame colour will change depending on active power and parameter 40. + Other colours are set permanently and do not depend on power consumption + + + + + + + + + + + + + + + This parameter defines the illumination colour after turning off. + + + + + + + + + + + + + This parameter defines the illumination colour in case of Z-Wave alarm. + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/firstalert/zcombo-g.xml b/config/firstalert/zcombo-g.xml new file mode 100644 index 0000000000..e32434b3c4 --- /dev/null +++ b/config/firstalert/zcombo-g.xml @@ -0,0 +1,48 @@ + + + ZCombo-G Smoke/CO Alarm + http://www.openzwave.com/device-database/0138:0003:0001 + https://products.z-wavealliance.org/products/3886 + images/firstalert/zcombo-g.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3886/User_Manual_M08-0456-173833_D2.pdf + The Z-Wave Smoke/CO alarm can be implemented in residential and institutional applications. Installation settings include sleeping areas within hospitals, hotels, motels, dormitories and other multi-family dwellings that are defined in standard NFPA 101. The First Alert ZCOMBO-G Smoke and Carbon Monoxide Detector has been fully tested and complies with UL217, UL2034, CSFM, NFPA 720, NFPA 101 and other agencies that model their codes after the above agencies. The combination alarm meets building codes that require the use of a battery operated Z-Wave wireless Smoke and CO detector. This First Alert Z-Wave Combination Alarm includes silence features and meets the model building codes published by the ICC. + The First Alert Z-Wave Combo Alarm includes: an insect screened photoelectric smoke sensing chamber, electrochemical carbon monoxide sensor, 85dB horn, supervised 3V (2 AA batteries) power supply, full function test switch and a silence feature. + The First Alert Z-Wave Enabled Battery Smoke & Carbon Monoxide Combo Alarm includes a battery drawer that prevents battery removal and tamper resistant locking pins that lock the alarm to the mounting bracket. This First Alert Combination Alarm is an ideal fit for any number of applications that include apartments, dormitories, and hotels. Designed for wall or ceiling mounting, this alarm includes all of the required mounting anchors and screws needed for easy installation. + + To manual wake-up the device, slide the battery door open wait for ~5 seconds and then slide the battery drawer closed. Upon power-up, the device will send the wake-up notification. + 1. Slide battery door open. +2. Insert batteries checking the correct orientation. +3. Press and hold the test button. Keep it held down as you slide the battery drawer closed. You may then release the button. + 1. Slide battery door open. +2. Insert batteries checking the correct orientation. +3. Press and hold the test button. Keep it held down as you slide the battery drawer closed. You may then release the button. + If the device is powered up with the test button held down for 10+ seconds, the device will reset all Z-Wave settings and leave the network. +Upon completion of the Reset operation, the LED will glow and the horn will sound for ~1 second. +Please use this procedure only when the network primary controller is missing or otherwise inoperable. + + https://products.z-wavealliance.org/products/3886/ + U.S. / Canada / Mexico + ZCOMBO + + Copy from ZCOMBO, update based on Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3886/xml + + + + + ZCOMBO will send the message over SuperVision Command Class and it will wait for the SuperVision report from the Controller for the SuperVision report timeout time. + + + If the SuperVision report is not received within the SuperVision report timeout time, the ZCOMBO will retry sending the message again. Upon exceeding the max retry, the ZCOMBO device will send the next message available in the queue. + + + Before retrying the message, ZCOMBO will wait for the SuperVision wait time. Actual wait time is calculated using the formula: Wait Time = SuperVision wait time base-value + random-value + (attempt-count x 5 seconds). The random value will be between 100 and 1100 milliseconds. + + + + + + + + + diff --git a/config/firstalert/zsmoke.xml b/config/firstalert/zsmoke.xml new file mode 100644 index 0000000000..d086080b5c --- /dev/null +++ b/config/firstalert/zsmoke.xml @@ -0,0 +1,29 @@ + + + images/firstalert/zsmoke.png + https://products.z-wavealliance.org/products/863/ + Smoke Alarm + ZSMOKE + U.S. / Canada / Mexico + Smoke Alarm + + Initial release - modified from zcombo + + + + + + + + Causes the device to send double alarm messages. + + + + + + + + + + + diff --git a/config/fortrezz/fts05p.xml b/config/fortrezz/fts05p.xml new file mode 100755 index 0000000000..cdb4877283 --- /dev/null +++ b/config/fortrezz/fts05p.xml @@ -0,0 +1,78 @@ + + + FTS05P Flood & Temperature Sensor + Water damages are caused by leaking pipes and faulty appliances. Place sensors in areas near water consuming appliances. If a leak occurs, water will puddle and wet the sensor, triggering an alarm. + http://www.openzwave.com/device-database/0084:020a:00a3 + https://www.fortrezz.com/shop/flood-sensor-w-probe + https://www.fortrezz.com/support + images/fortrezz/fts05p.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2458/User%20Manual%20FTS05-FTS05P.pdf + To initiate manual wakeup, press the program button once, while in network. Device stays awake for 10 seconds or longer if communicating with the controller. + 1) Set up the Add/Inclusion mode at the controller; 2) Briefly press the switch once and the controller will indicate the unit has been added into the network. Also, the LED will blink 2 quick blinks when complete. + 1) Set up the Remove/Exclusion mode at the controller; 2) Press and hold the switch for approx. 2 seconds and then release. The controller will indicates the unit has been removed from the network. The LED will blink 4 quick blinks when complete. + Reset the device to factory Defaults - Press and hold the program button for longer than 15 seconds. When complete, the LED will flash approx. 30 times. This can be done while the device is either in or out of a network. Please use this procedure only when the network primary controller is missing or otherwise inoperable. Caution – When this is done in-network, the device will no longer be in the network and all configurations and associations will be set to default. + https://products.z-wavealliance.org/products/2458 + U.S. / Canada / Mexico + FTS05P + + Initial entry from Z-Wave Alliance Database and from Manufacturer's website. + + + + + + Use this to change the low temperature alarm threshold. Set the range between -10 and 69 deg C. + Note: The user configuration value is a positive decimal integer 0 through 255, but the device + interprets the value as 8-bit Two's complement. Examples: + -10 in Two's complement is 246 decimal (0xF6). + -2 in Two's complement is 254 decimal (xFE) + -1 in Two's complement is 255 decimal (xFF) + 0 in Two's complement is 0 decimal (0x00). + 69 in Two's complement is 69 decimal (0x45). + Thus the valid range the user may enter is 0-69 and 246-255. + + + + + Use this to change the high temperature alarm threshold. Set the range between -9 and 70 deg C. + Note: The user configuration value is a positive decimal integer 0 through 255, but the device + interprets the value as 8-bit Two's complement. Examples: + -9 in Two's complement is 247 decimal (0xF7). + -2 in Two's complement is 254 decimal (xFE) + -1 in Two's complement is 255 decimal (xFF) + 0 in Two's complement is 0 decimal (0x00). + 70 in Two's complement is 70 decimal (0x46). + Thus the valid range the user may enter is 0-70 and 247-255. + + + + + Default is set as a Normally DRY sensor. Use this to switch to Normally WET sensor. + The device only accepts one of two possible values: + 0 (0x00) - Normally Dry (default). + 240 (0xF0) - Normally Wet. + + + + + Use this to send basic set ON or Basic Set OFF when an alarm is detected. + The device only accepts one of two possible values: + 0 (0x00) - For sending basic set OFF when alarm detected. + 240 (0xF0) - For sending basic Set ON (default) when alarm detected. + + + + + + + + + + + + + + + + + diff --git a/config/ge/12720.xml b/config/ge/12720.xml new file mode 100644 index 0000000000..b47200a28b --- /dev/null +++ b/config/ge/12720.xml @@ -0,0 +1,22 @@ + + + http://www.openzwave.com/device-database/0063:3130:6363 + images/ge/14284.png + https://products.z-wavealliance.org/products/1194/ + 1. If plugged in, unplug the Switch from the receptacle. +2. Press and hold the top button for at least 3 seconds while you plug the switch into a receptacle. + 12720/ZW4201 + http://z-wave-assets.s3-us-west-2.amazonaws.com/docs/138/B0013V8K3O_GE_Jasco_Z-Wave_Plug-in_Outdoor_Smart_Switch_12720_Manual.pdf + Transform any home into a smart home with the GE Z-Wave Outdoor Smart Switch. The lighting control enables wireless control of on/off functions for outdoor applications, and is compatible with incandescent, LED, Xenon, Halogen, fluorescent and compact fluorescent bulbs. The weather-resistant housing with a protective outlet cover safeguards the outlet from dirt and debris when not in use. The discreet black color blends in with any outdoor environment. Perfect for decorative or seasonal lighting, fountains and other outdoor plug-in appliances. Take control of your home lighting with GE Z-Wave Smart Lighting Controls! + 1. Follow the instructions for your Z-Wave certified controller to exclude a device from the Z-Wave network. +2. Once the controller is ready to Exclude your device, press and release the manual/program button on the smart switch to exclude it from the network. + Plug-in Outdoor Smart Switch + U.S. / Canada / Mexico + 1. Follow the instructions for you Z-Wave certified controller to include the smart switch to the Z-Wave network. +2. Once the controller is ready to include your outdoor smart switch, press and release the manual/program button on the smart switch to include it in the network. +3. Once your controller has confirmed that the smart switch has been included, refresh the Z-Wave network to optimize performance. + + Initial Metadata added - https://products.z-wavealliance.org/products/1194/xml + + + diff --git a/config/ge/12724-dimmer.xml b/config/ge/12724-dimmer.xml index a40b21a875..dd1d3755af 100644 --- a/config/ge/12724-dimmer.xml +++ b/config/ge/12724-dimmer.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0063:3031:4944 images/ge/12724-dimmer.png @@ -12,13 +12,15 @@ U.S. / Canada / Mexico 12725 / ZW3006 - Update for 3032 Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1197/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1201/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1202/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1221/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2103/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2506/xml + Update for 3032 + Add Verifed Change Flag + Added COMMAND_CLASS_BASIC block to set Value type instead of Node Event for Basic Set, Added COMMAND_CLASS_ASSOCIATION block for double tap with double tap defauled to auto https://products.z-wavealliance.org/products/1201/ U.S. / Canada / Mexico @@ -71,4 +73,24 @@ Note: This should only be used in the event your network’s primary controller This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + true + + + + + + + + + + + + + + true + true + + diff --git a/config/ge/14280-plugin-dimmer.xml b/config/ge/14280-plugin-dimmer.xml new file mode 100644 index 0000000000..b840747682 --- /dev/null +++ b/config/ge/14280-plugin-dimmer.xml @@ -0,0 +1,58 @@ + + + none + images/ge/14280-plugin-dimmer.png + https://products.z-wavealliance.org/products/2139/ + Plug-in Smart Dimmer, Dual Plug With Simultaneous Control + https://products.z-wavealliance.org/ProductManual/File?folder=%26filename=MarketCertificationFiles/2139/Binder1.pdf + U.S. / Canada / Mexico + + + + 14280/ZW3107 + + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2139/xml + + + + + Sets when the LED on the switch is lit. + + + + + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + + + true + + + + + + + + + + + diff --git a/config/ge/14285.xml b/config/ge/14285.xml new file mode 100644 index 0000000000..b923bae7ea --- /dev/null +++ b/config/ge/14285.xml @@ -0,0 +1,58 @@ + + + http://www.openzwave.com/device-database/0063:3032:4F44 + images/ge/14285.png + https://products.z-wavealliance.org/products/2939/ + 1. Place the device into ON mode (upper position of Operating Mode Switch) +2. Press and hold the programming button. +3. While holding programming button, place device into OFF mode (middle position of Operating Mode Switch). +4. While holding programming button, place device back into ON mode (upper position of Operating Mode Switch). +5. After three (3) seconds, release programming button. Green LED will flash 3 times when completed successfully. + +Note: This should only be used in the event your networks primary controller is missing or otherwise inoperable. + 14285/ZW4007 + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2939/14285%20QSG.pdf + Transform any home into a smart home with the GE 40 Amp Z-Wave Direct-Wire Indoor/Outdoor Smart Switch. When added to a Z-Wave network, the heavy duty switch enables wireless control of on/off functions for large load, hard-wired applications such as waters heaters, landscape lighting, spas, pool pumps and heaters. The Smart Switch can be used indoors or outdoors and features an easy access wire connection block, front mounted LED lights indicating power and on/off status, and an override switch to turn connected devices on or off manually. The Smart Switch is housed in a lockable, tamper-resistant case to ensure settings and wiring are secure. The rugged, weather-resistant design will keep out dirt and debris while being suitable for use in extreme weather conditions. The GE Z-Wave Direct-Wire Outdoor Smart Switch is also equipped with state-of-the-art energy monitoring capability, allowing you to monitor watts and kilowatt hours, helping you keep your energy costs to a minimum. Take control of your home lighting and large load devices with GE Z-Wave Smart Lighting Controls! + Direct-Wire Outdoor Smart Switch + U.S. / Canada / Mexico + 1. Follow the instructions for your Z-Wave certified controller to add a device to the Z-Wave network. +2. Once the controller is ready to add your device, press and release the programming button to add it to the network. If prompted by the controller to enter the S2 security code, refer to the QR code/security number on the back of the box, or the QR code label on the product. +3. Once your controller has confirmed that the device has been added, refresh the Z-Wave network to optimize performance. + 1. Follow the instructions for your Z-Wave certified controller to remove a device from the Z-Wave network. +2. Once the controller is ready to remove your device press and release the programming button to remove it from the network. + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2939/xml + + + + + + Product State after Power Reset + + + + + + Energy Report Mode + + + + + + Energy Report Frequency + + + Alternate Exclusion + + + + + + + + + + + + + diff --git a/config/ge/14291-switch.xml b/config/ge/14291-switch.xml index 21e7304240..e768c1e692 100644 --- a/config/ge/14291-switch.xml +++ b/config/ge/14291-switch.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0063:3036:4952 images/ge/14291-switch.png @@ -19,6 +19,7 @@ Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1438/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1879/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2501/xml + Added COMMAND_CLASS_BASIC block to set Value type instead of Node Event for Basic Set, default double tap association auto=true @@ -39,7 +40,14 @@ - + + + + + true + true + + diff --git a/config/ge/14292-toggle-switch.xml b/config/ge/14292-toggle-switch.xml index ee86bde3f4..117fa5b3e2 100644 --- a/config/ge/14292-toggle-switch.xml +++ b/config/ge/14292-toggle-switch.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0063:3037:4952 images/ge/14292-toggle-switch.png @@ -18,6 +18,7 @@ Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1856/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2055/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2502/xml + Added COMMAND_CLASS_BASIC block to set Value type instead of Node Event for Basic Set, default double tap association auto=true https://products.z-wavealliance.org/products/2055/ U.S. / Canada / Mexico @@ -36,7 +37,14 @@ - + + + + + true + true + + diff --git a/config/ge/14294-dimmer.xml b/config/ge/14294-dimmer.xml index 24a2ee8dae..83b90d5669 100644 --- a/config/ge/14294-dimmer.xml +++ b/config/ge/14294-dimmer.xml @@ -1,11 +1,11 @@ - + + http://www.openzwave.com/device-database/0063:3038:4944 images/ge/14294-dimmer.png https://products.z-wavealliance.org/products/2105/ In-Wall Smart 1000W Dimmer - https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/2168/Binder1.pdf + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2105/Binder1.pdf U.S. / Canada / Mexico Quickly press ON (Top) button three (3) times then immediately press the OFF (Bottom) button three (3) times. The LED will flash @@ -31,11 +31,12 @@ and release the top or bottom of the wireless smart dimmer Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1442/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2105/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2168/xml + Add Verified Change Flag + Fixed metadata, added undocumented configuration parameters + Added COMMAND_CLASS_BASIC block to set Value type instead of Node Event for Basic Set, default double tap association auto=true - https://products.z-wavealliance.org/products/2168/ - 14299/ZW3006 - U.S. / Canada / Mexico + Sets when the LED on the switch is lit. @@ -48,6 +49,11 @@ and release the top or bottom of the wireless smart dimmer + + Adjust the speed at which the light ramps to a specific value other than 0 and FF. + + + Indicates how many levels the dimmer will change for each dimming step. @@ -67,13 +73,33 @@ and release the top or bottom of the wireless smart dimmer This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + Turn your dimmer into an On/Off switch with switch mode. + + + + + Set the minimum dimmer threshold when manually or remotely controlled. + + + + + true + - + + + + + true + true + + diff --git a/config/ge/14298.xml b/config/ge/14298.xml new file mode 100644 index 0000000000..3cdd719e1d --- /dev/null +++ b/config/ge/14298.xml @@ -0,0 +1,45 @@ + + + http://www.openzwave.com/device-database/0063:3034:4F50 + images/ge/14298.png + https://products.z-wavealliance.org/products/3408/ + 1. If plugged in, unplug the Switch from the receptacle. +2. Press and hold the top button for at least 3 seconds while you plug the switch into a receptacle. + 14298/ZW4202 + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3408/14298%20EnFrSp%20QSG%20v1.pdf + New Plug-in Outdoor Smart Switch is equipt with S2 and Smart Start which allows for easy and secure inclusion. + 1. Follow the instructions for your Z-Wave certified controller to exclude a device from the Z-Wave network. +2. Once the controller is ready to Exclude your device, press and release the manual/program button on the smart switch to exclude it from the network. + Plug-in Outdoor Smart Switch + U.S. / Canada / Mexico + 1. Follow the instructions for you Z-Wave certified controller to include the smart switch to the Z-Wave network. +2. Once the controller is ready to include your outdoor smart switch, press and release the manual/program button on the smart switch to include it in the network. +3. Once your controller has confirmed that the smart switch has been included, refresh the Z-Wave network to optimize performance. If prompted by the controller to enter the S2 security code +/security number on the side of the box or the QR code label on the product, enter the 5 digit code. + + Initial metadata + + + + + Sets when the LED on the switch is lit. + + + + + + Default - normal exclusion + Active - perform a series of button presses to help eliminate accidental exclusion + + + + + + + + + + + + + diff --git a/config/ge/14322-dimmer-toggle.xml b/config/ge/14322-dimmer-toggle.xml new file mode 100644 index 0000000000..143e17d862 --- /dev/null +++ b/config/ge/14322-dimmer-toggle.xml @@ -0,0 +1,65 @@ + + + + http://www.openzwave.com/device-database/0063:3137:4944 + images/ge/14322-dimmer-toggle.png + https://products.z-wavealliance.org/products/2123/ + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2123/Binder1.pdf + In-Wall Smart Toggle Dimmer + U.S. / Canada / Mexico + Quickly press ON (up) button (3) times then immediately +press the OFF (down) button (3) times. +Note: This should only be used in the even your network's +primary controller is missing or otherwise inoperable. + 1. Follow the instructions for your Z-Wave certified controller to +include a device to the Z-Wave network. +2. Once the controller is ready to include your device, +press and release the top or bottom of the wireless smart +dimmer (rocker) to include it in the network. + 14322/ZW3004 + 1. Follow the instructions for your Z-Wave certified controller to +exclude a device from the Z-Wave network. +2. Once the controller is ready to Exclude your device, +press and release the top or bottom of the wireless smart +dimmer (rocker) to exclude it from the network. + Transform any home into a smart home with the Jasco Z-Wave In-Wall Smart Toggle Dimmer. The dimmer enables wireless control of on/off and dim functions of hard-wired dimmable LED/CFL and incandescent lighting. The dimmer replaces your current light switch, uses your existing wiring, and provides Z-Wave wireless and in-wall control of overhead lighting. Use the dimmer feature to customize the lighting output and create the perfect ambiance for any room. Providing ultimate flexibility, the In-Wall Smart Dimmer allows you to operate the switch by itself or easily integrate the switch three-way or four-way wiring configurations by adding the Jasco Add-On Switch. Single Pole wiring configuration controls the light from one location. Three-way wiring configuration controls the light from two separate locations. Four-way wiring configuration controls the light from three separate locations. The Jasco Add-On Switch is required for three-way or four-way installations. Take control of your home lighting with Jasco Z-Wave Wireless Lighting Controls! + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2123/xml + + + + + + Change the top of the switch to OFF and the bottom of the switch to ON, if the switch was installed upside down. + + + + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + + + + + + + + + diff --git a/config/ge/26931-motion-switch.xml b/config/ge/26931-motion-switch.xml index 5fd6e0cdd2..eca2f64a3a 100644 --- a/config/ge/26931-motion-switch.xml +++ b/config/ge/26931-motion-switch.xml @@ -1,4 +1,5 @@ - + + http://www.openzwave.com/device-database/0063:3032:494D images/ge/26931-motion-switch.png @@ -26,6 +27,7 @@ on the smart switch to include it in the network. https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/2035/26931 EnFrSp QSG v1.3 and Parameters.pdf Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2035/xml + Update ForceInstance flag @@ -81,6 +83,13 @@ on the smart switch to include it in the network. + + + + + false + + diff --git a/config/ge/26932-motion-dimmer.xml b/config/ge/26932-motion-dimmer.xml new file mode 100644 index 0000000000..6b7a426438 --- /dev/null +++ b/config/ge/26932-motion-dimmer.xml @@ -0,0 +1,141 @@ + + + + http://www.openzwave.com/device-database/0063:3033:494d + images/ge/26933-motion-dimmer.png + https://products.z-wavealliance.org/products/2093/ + 26932 + 1. Follow the instructions for your Z-Wave certified +controller to remove a device from the Z-Wave +network. +2. Once the controller is ready to remove your device, +press and release the top button on the smart +dimmer to remove it from the network. + U.S. / Canada / Mexico + Press and release the top button ten times within 5 +seconds. The LED will flash 3 times quickly confirming +change. +Note: This should only be used in the event your +network’s primary controller is missing or otherwise +inoperable + 1. Follow the instructions for your Z-Wave certified +controller to add the smart dimmer to the Z-Wave +network. +2. Once the controller is ready to add your smart +dimmer, press and release the top or bottom +button on the smart dimmer to include it in the +network. + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/2093/26932 EnFrSp QSG v1.3 and Parameters.pdf + Transform any home into a smart home with the Jasco In-Wall Smart Motion Dimmer. This Z-Wave device replaces you current light switch using your existing wiring and provides Z-Wave wireless control of overhead lighting. The dimmer enables wireless control of On/Off functions of incandescent, LED, xenon, halogen and fluorescent lighting. Not only does it act as a dimmer but the Jasco In-Wall Smart Motion Dimmer has a built in PIR sensor which can control the local load and be set in occupancy or vacancy mode. + + + In-Wall Smart Motion Dimmer + + Initial Metadata Import from ge/26933-motion-dimmer.xml and https://products.z-wavealliance.org/products/2093/xml + Update VerifyChanged flag + Update ForceInstance flag + + + + + + Amount of time the light stays on after motion stops + + + + + + + + + Valid values are 0-99 or 255 for last dimming level + + + Motion-sensing mode of operation. + + + + + + In a three-way configuration, change the top of the add-on switch to OFF and the bottom of the switch to ON, if the switch was installed upside down. + + + + + + + + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + + + + + + + + + + 0 = disable + 1 = 10 seconds + 2 = 20 seconds + 3 = 30 seconds + 4 = 45 seconds + ... + 110 = 27 minutes 15 seconds + + + + + + + + + + + + + + + + + + + + + true + + + + + + false + + + + + + + + + + + diff --git a/config/ge/46201-switch.xml b/config/ge/46201-switch.xml index 3d6ebc182e..18fa0b55c4 100644 --- a/config/ge/46201-switch.xml +++ b/config/ge/46201-switch.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0063:3135:4952 images/ge/46201-switch.png @@ -17,6 +17,7 @@ 3. Once your controller has confirmed that the device has been included, refresh the Z-Wave network to optimize performance. Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3317/xml + Added COMMAND_CLASS_BASIC block to set Value type instead of Node Event for Basic Set, Added COMMAND_CLASS_ASSOCIATION block for double tap with double tap defauled to auto @@ -38,7 +39,14 @@ - + + + + + true + true + + diff --git a/config/ge/46202-switch.xml b/config/ge/46202-switch.xml new file mode 100644 index 0000000000..0e0f07ca27 --- /dev/null +++ b/config/ge/46202-switch.xml @@ -0,0 +1,44 @@ + + + http://www.openzwave.com/device-database/0063:3137:4952 + images/ge/46202-switch.png + https://products.z-wavealliance.org/products/3350/ + 1. Follow the instructions for your Z-Wave certified controller to exclude a device from the Z-Wave network. +2. Once the controller is ready to exclude your device, press and release the top button of the wireless smart switch (rocker) to exclude it from the network. + 14292/46202/ZW4009 + In-Wall Smart Switch with QuickFit and SimpleWire enhancements. Revolutionary QuickFit design features a housing depth that is up to 20 percent smaller than the previous Z-Wave models. This reduced size coupled with the elimination of heat taps provides a better fit in older style boxes and multi-gang configurations. SimpleWire technology allows line and load to automatically be configured with auto-sensing line-load terminals. All of this is coupled with Z-Wave S2 and Smart Start allows for effortless installation while being safer than ever! + 1. Quickly press ON (Top) button 3 times then immediately press the OFF (Bottom) button 3 times. The LED will flash ON/OFF 5 times when completed successfully. +2. Please use this reset procedure only when the primary controller is missing or inoperable. + U.S. / Canada / Mexico + In-Wall Smart Switch + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3350/46202%20Binder.pdf + 1. Follow the instructions for your Z-Wave certified controller to include a device to the Z-Wave network. +2. Once the controller is ready to include your device, press and release the top or bottom of the wireless smart switch(rocker) to include it in the network. +3. Once your controller has confirmed that the device has been included, refresh the Z-Wave network to optimize performance. + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3350/xml + + + + + Sets when the LED on the switch is lit. + + + + + + + Default - normal exclusion + Active - perform a series of button presses to help eliminate accidental exclusion + + + + + + + + + + + + diff --git a/config/ge/46204-dimmer-toggle.xml b/config/ge/46204-dimmer-toggle.xml new file mode 100644 index 0000000000..7af260fc24 --- /dev/null +++ b/config/ge/46204-dimmer-toggle.xml @@ -0,0 +1,67 @@ + + + + + http://www.openzwave.com/device-database/0063:3237:4944 + images/ge/46204-dimmer-toggle.png + https://products.z-wavealliance.org/products/3352/ + In-Wall Smart Toggle Dimmer + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3352/14295.46204%20Binder.pdf + U.S. / Canada / Mexico + Quickly press ON (up) button three times then immediately press the OFF (down) button three times. + NOTE: This should only be used in the event your network’s + primary controller is missing or otherwise inoperable. + 1. Follow the instructions for your Z-Wave certified controller to add a device to the Z-Wave network. + 2. Once the controller is ready to add your device, press up and release the toggle. Please reference the controller’s manual for instructions. + Now, you have complete control to turn your fixture ON/OFF or dim according to groups, scenes, schedules and interactive automations programmed by your controller. If your Z-Wave certified controller features remote access, you can control your fixture from your mobile devices. + In-Wall Smart Toggle Dimmer with QuickFit and SimpleWire enhancements. Revolutionary QuickFit design features a housing depth that is up to 20 percent smaller than the previous Z-Wave models. This reduced size coupled with the elimination of heat taps provides a better fit in older style boxes and multi-gang configurations. SimpleWire technology allows line and load to automatically be configured with auto-sensing line-load terminals. All of this is coupled with Z-Wave S2 and Smart Start allows for effortless installation while being safer than ever! + 14295/46204/ZW3011 + To remove and reset the device: + 1. Follow the instructions for your Z-Wave certified controller to remove a device from the Z-Wave network. + 2. Once the controller is ready to remove your device, press up and release the toggle. + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/Products/3352/XML + + + + + Adjust the LED status to default, invert, always OFF or always ON + + + + + + + Adjust the speed at which the ramps to a specific value other than 0 and FF + + + + + Turn your dimmer into an On/Off switch with switch mode + + + + + Never accidentally remove a device during with alternate exclusion + + + + + Set the minimum dimmer threshold + + + Set the brightness threshold + + + Set the default brightness level that the dimmer will turn on when being controlled manually + + + + + + + + + + + diff --git a/config/ge/zw6302.xml b/config/ge/zw6302.xml index 37ac5626d7..6899211c54 100644 --- a/config/ge/zw6302.xml +++ b/config/ge/zw6302.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0063:3133:4953 images/ge/zw6302.png @@ -24,6 +24,7 @@ Note: This should only be done in the event your primary controller is missing o Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1902/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2124/xml + Update min/max PIR parameter https://github.com/OpenZWave/open-zwave/issues/2041 https://products.z-wavealliance.org/products/2124/ U.S. / Canada / Mexico @@ -41,7 +42,7 @@ https://products.z-wavealliance.org/products/1902 - + 1 to 60 => 1 min to 60 min. 255 => 5 seconds. diff --git a/config/goodway/td14010.xml b/config/goodway/td14010.xml new file mode 100644 index 0000000000..739371580f --- /dev/null +++ b/config/goodway/td14010.xml @@ -0,0 +1,133 @@ + + + RGBW Color LED Dimmer + Good Way RGBW module is used to control RGB/RGBW strips and LED strips or bulbs to create countless colour options and has 6 special scene effects. Its extremely small size allows for easy installation behind wall sockets and switches. Controlled devices may be powered by 12 or 24 VDC. + http://www.openzwave.com/device-database/0068:000b:0003 + http://www.goodway.com.tw/product3.asp?listid=9&id=26&subid=102&id=1168&typeid= + + images/goodway/td14010.png + + Connect the module to the power supply. Enable inclusion mode on your Z-Wave controller. Press and release the Include/Exclude button 3 times within 2 seconds. + Connect the module to the power supply. Make sure the module is within direct range of your Z-Wave controller or use a hand-held Z-Wave remote to perform exclusion. Press and release the Include/Exclude button 3 times within 2 seconds. NOTE: The module will be excluded from your network, but any custom configuration parameters will not be erased. + Connect the module to the power supply. Press and hold the Include/Excude button for at least 10 seconds. NOTE: By resetting the module, all custom parameters previously set on the module will return to their default values and the owner ID will be deleted. Use this reset procedure only when the main controller is missing or otherwise inoperable. + https://products.z-wavealliance.org/products/2466/features + U.S. / Canada / Mexico + Good Way RGBW Dimmer + + Initial release + Added indexes 8 and 9 to CC 112 + Removed indexes 8 and 9 to CC 112 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This parameter is used to adjust time between 2 Colours in the Scene. + 1-127 – delay duration is 1 sec to 127 sec. + 1001-1127 – delay duration is from 1 min to 127 min. This parameter has no effect on lighting and Dancing scenes. + + + Device will be set to status memorized before power cut. + + + + + + + + NOTE: The minimum level may not be higher than the MAX dimming value. + + + + Default value 10 = 1 s. + 5–25 = from 0.5 to 2.5 seconds + + + + 1–127 = from 1 to 127 seconds. + NOTE: Dimming time depends also on Min and Max dimming value. + + + + + NOTE: If the parameter no. 14 is enabled, parameter no. 1,2,3,4 has no effect. + NOTE: After parameter change, first exclude device (without setting parameters to default value) and then re include the device. + + + + + + + + + + + + + + + + + true + + + diff --git a/config/graber/mcz1.xml b/config/graber/mcz1.xml new file mode 100644 index 0000000000..9fafd8ca98 --- /dev/null +++ b/config/graber/mcz1.xml @@ -0,0 +1,35 @@ + + + + Multi-Channel Remote + Enjoy the comfort, convenience and energy efficiency of beautiful custom motorized window treatments featuring Z-Wave protocol for easy integration. Lighting control has never been more simple. Window treatments can be automated using your favorite Z-Wave certified gateway or security system, or controlled by a remote control. Raise or lower the shades to control just the right amount of light, privacy and solar heat. Shades can be fully open, fully closed or anywhere in between, it’s up to you. In addition, some systems will also report back the state of the battery charge on battery operated versions. + http://www.openzwave.com/device-database/026e:5a31:4d43 + https://www.baliblinds.com/globalassets/3.-documents/installation-instructions/bali-motorization-owners-manual-autoview.pdf + https://www.baliblinds.com/customer-support/ + images/graber/mcz1.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2819/P2_79083-01_18-8215_MotorizationManual.pdf + Any button press will wake up the remote. + 1. From your home automation system’s user interface, select the option to enroll a new Z-Wave device. See your home automation system’s instructions for details. +2. On the remote, press and hold the MENU/RIGHT button to enter the menu. +3. Select ZWAVE > LEARN. + 1. From your home automation system’s user interface, select the option to exclue a Z-Wave device. See your home automation system’s instructions for details. +2. On the remote, press and hold the MENU/RIGHT button to enter the menu. +3. Select ZWAVE > LEARN. + 1. Press and hold the MENU/RIGHT button for 2 seconds to enter the menu. +2. Select ZWAVE > RESET. +3. With LIKE NEW? selected, press and hold the MENU/RIGHT button until the screen no longer tells you to wait. + https://products.z-wavealliance.org/products/2819 + U.S. / Canada / Mexico + MCZ1 + + Initial entry with data obtained from https://products.z-wavealliance.org/products/2819 + + + + + + + + + + diff --git a/config/hab/iblindsV2.xml b/config/hab/iblindsV2.xml new file mode 100644 index 0000000000..fdb0e620d4 --- /dev/null +++ b/config/hab/iblindsV2.xml @@ -0,0 +1,52 @@ + + + http://www.openzwave.com/device-database/0287:000D:0003 + images/hab/iblinds.png + https://products.z-wavealliance.org/products/2486/ + The Device Reset Locally function is used to reset the device to fatory default. The reset operation resets protocol data (HomeID, NodeID) as well as all application specific data to factory default values. +NOTE: Please only use this function when the primary controller is missing or inoperable! +1. Press the INC / EXC button 3 +Press the INC / EXC button 3 times within 5 seconds to enable the device reset function. +2. Wait 30 Seconds Press CLBR button +After device is reset wait 30 seconds and press the CLBR button to reboot the device and make it ready for Z-Wave Inclusion. + iblindsV2 + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2486/iBlind_User_Guide.pdf + An intelligent Z-Wave blind motor that installs out of sight in existing Horizontal (2" and 2 1/2" slatted-style) blind headrails. Use iBlinds to tilt the slats open, closed or use the value slider for precise positioning of the slat tilt angle. + Follow the directions for your Z-Wave device to place it in the exclusion mode. +Press the exclude button once and wait for the device to be removed from the Z-Wave network. + + iblinds V2 + U.S. / Canada / Mexico + Follow the directions for your Z-Wave hub/controller to place it in the add for inclusion mode. +Press the inclusion button once and wait for the device to be discovered and joined to the Z-Wave network. Follow the directions of your Z-Wave controller to uniquely identify your iblinds device. (Ex: Bedroom iblind) +Note: If the device is not joined to the network. Press the CLBR button Wait 1 minutes and repeat steps 1 and 2 again. If you continue to have trouble joining the iblinds motor to the Z-Wave network follow the Z-Wave network Exclusion process below. + + + Initial metadata + Folder namechange to hab, minor typos + + + + + + true + + + + + Changing the Auto Calibration torque will allow you to change the initial calibration torque. Use at your own risk! + + + + + + + + + + + + + + + diff --git a/config/hab/iblindsV3.xml b/config/hab/iblindsV3.xml new file mode 100644 index 0000000000..b94e49a76c --- /dev/null +++ b/config/hab/iblindsV3.xml @@ -0,0 +1,71 @@ + + + iblinds + An intelligent blind motor, a Z-Wave device designed for tilting Venetian (two inch slatted-style) blinds. Open and close the blinds and use a value slider for precise positioning of the tilt angle. + http://www.openzwave.com/device-database/0287:0071:0004 + https://myiblinds.com/ + https://support.myiblinds.com + images/hab/iblindsV3.png + http://support.myiblinds.com/wp-content/uploads/2019/06/User-Guide-v1.0.pdf + Press Include/Exclude button + Follow the directions for your Z-Wave hub/controller to place it into inclusion mode. Press the inclusion button three times and wait for the device to be discovered and joined to the Z-Wave network. + Follow the directions for your Z-Wave device to place it in the exclusion mode. Press the exclude button three times and wait for the device to be removed from the Z-Wave network. + Charge adapter button can be used to reset the device and perform manual auto calibration: press and hold the Charge Adapter button for 10 seconds. + https://products.z-wavealliance.org/products/2486/features + U.S. / Canada/ Mexico + CEPT + Australia / New Zealand + iblinds V3 + + + Initial Release + + + + + + + Auto Calibration Tightness + Lower value = tighter + Higher value = looser + MUST BE RECALIBRATED + Range:16-32 + Default: 22 + + + + + Reverse closing direction + + + + + + + + Value that iblinds will open to by Default + Default: 50 + + + + + Will disable the reset button on the motor, preventing it from accidentally being pressed + + + + + + + How fast iblinds will close in seconds + Default:0 + + + + + + + + + + + diff --git a/config/hank/hkzw-ms02-200.xml b/config/hank/hkzw-ms02-200.xml index dcd98042ab..02a148f369 100644 --- a/config/hank/hkzw-ms02-200.xml +++ b/config/hank/hkzw-ms02-200.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0208:0012:0200 images/hank/hkzw-ms02-200.png @@ -43,6 +43,7 @@ The features list: Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2578/xml + Adjust description and units of configuration parameter 18 as per user manual + + + + 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/heltun/he-ft01.xml b/config/heltun/he-ft01.xml new file mode 100644 index 0000000000..be17472a20 --- /dev/null +++ b/config/heltun/he-ft01.xml @@ -0,0 +1,405 @@ + + + + Fan Coil Thermostat HE-FT01 + This is advanced programmable Thermostat for Heating/Cooling Systems + http://www.openzwave.com/device-database/0344:0002:0004 + https://www.heltun.com/ + https://www.heltun.com/support + images/heltun/he-ft01.png + https://products.z-wavealliance.org/products/3717 + U.S. / Canada / Mexico + CEPT (Europe) + Australia / New Zealand + Russia + Israel + China + South Korea + Japan + Hong Kong + India + HE-FT01 + + Metadata for HELTUN FanCoil Thermostat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + Time correction by controller + + + + + + + Time format 0=24hour, 1=12hour (AM/PM) + + + + + + + Manually set week day + + + + + + + + + + + + Manually set time hour + + + + + Maually set time minute + + + + + Degree Mode 0=C, 1=F + + + + + + + Air Temperature Calibration in degree, x10 + + + + + Temperature Hysteresis in degree, x10 + + + + + Display auto-brightness control + + + + + + + Display manual brightness level + + + + + Touch buttons sensitivity. 5=Super sensitive. 50=lowest sensitivity. + + + + + This Parameter defines which Operating Mode the HE-FT01 reverts to if the Basic Set command is received. + + + + + + + + + + + + + + + Sensors consecutive reporting interval, minutes + + + + + Consumption meter consecutive reporting interval, minutes + + + + + Temperature difference to send to controller, value X 10 + Note: values between 0 ... 5 are not used. + + + + + Humidity difference to send to controller, % + Note: values between 0 ... 2 are not used. + + + + + Light sensor values difference to send to controller, % + Note: values between 0 ... 10 are not used. + + + + + Power of the Relay 1 load in W + + + + + Power of the Relay 2 load in W + + + + + Power of the Relay 3 load in W + + + + + Power of the Relay 4 load in W + + + + + Power of the Relay 5 load in W + + + + + This parameter determines the Climate Mode (Heating or Cooling) to which HE-FT01 will switch when the TIME operating mode is selected. + If the value = 1 the thermostat will go to Heating and Cooling mode, if value = 2 the thermostat goes to Heating mode, if the value = 3 the thermostat goes to Cooling Mode. + + + + + + + + Morning start time. Format: HHMM. e.g.08:00 should be sent as 0800 + + + + + Day start time. Format: HHMM. + + + + + Evening start time. Format: HHMM. + + + + + Night start time. Format: HHMM. + + + + + Monday morning temperature, value x10 + + + + + Monday day temperature, value x10 + + + + + Monday evening temperature, value x10 + + + + + Monday night temperature, value x10 + + + + + Tuesday morning temperature, value x10 + + + + + Tuesday day temperature, value x10 + + + + + Tuesday evening temperature, value x10 + + + + + Tuesday night temperature, value x10 + + + + + Wednesday morning temperature, value x10 + + + + + Wednesday day temperature, value x10 + + + + + Wednesday evening temperature, value x10 + + + + + Wednesday night temperature, value x10 + + + + + Thursday morning temperature, value x10 + + + + + Thursday day temperature, value x10 + + + + + Thursday evening temperature, value x10 + + + + + Thursday night temperature, value x10 + + + + + Friday morning temperature, value x10 + + + + + Friday day temperature, value x10 + + + + + Friday evening temperature, value x10 + + + + + Friday night temperature, value x10 + + + + + Saturday morning temperature, value x10 + + + + + Saturday day temperature, value x10 + + + + + Saturday evening temperature, value x10 + + + + + Saturday night temperature, value x10 + + + + + Sunday morning temperature, value x10 + + + + + Sunday day temperature, value x10 + + + + + Sunday evening temperature, value x10 + + + + + Sunday night temperature, value x10 + + + + + + + + + + + + + + diff --git a/config/heltun/he-ht01.xml b/config/heltun/he-ht01.xml new file mode 100644 index 0000000000..c9b2325c77 --- /dev/null +++ b/config/heltun/he-ht01.xml @@ -0,0 +1,427 @@ + + + Heating Thermostat HE-HT01 + This is advanced programmable Thermostat for Heating Systems + http://www.openzwave.com/device-database/0344:0001:0004 + https://www.heltun.com/ + https://www.heltun.com/support + images/heltun/he-ht01.png + https://products.z-wavealliance.org/products/3681 + U.S. / Canada / Mexico + CEPT (Europe) + Australia / New Zealand + Russia + Israel + China + South Korea + Japan + Hong Kong + India + HE-HT01 + + Metadata for HELTUN Heating Thermostat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + true + + + + + + + Floor Sensor Resistance, kohm + + + + + External input mode. The thermostat can be connected to an external device (like security system) dry output contacts and control the thermostat operating modes depending on the contacts state. + If parameter value is 0 no action will be take (the input state is ignored by the thermostat logic). If parameter value is 1 the thermostat will be switched to the operating mode selected in + Parameter 3 if the S1 was short-circuited. The thermostat will go back to previous mode as soon as the S1 is open. If parameter value is 2 the thermostat will be switched to the operating + mode selected in Parameter 3 if the S1 was short-circuited. But the thermostat will not undertake any action if the S1 is open again. + + + + + + + + Mode number for S1 input action. This parameter allows selecting which operating mode the thermostat should go to if the S1 input is short-circuited with Sx or LINE wire of the mains electricity. + 1=COM, 2=TIME, 3=DRY, 4=ECO, 5=VAC, 6=MAN mode with IDLE(off) state, 7=MAN mode with HEATING(on) state. + + + + + + + + + + + + Source Sensor: 1=A, 2=AF, 3=F, 4=FA, 5=P, 6=PA, 7=PF. + A=Air sensor, + AF - Air sensor + Floor sensor, + F - Floor sensor, + FA - Floor sensor +Air sensor, + P - Power regulator, + PA - Power regulator + Air sensor, + PF - Power regulator + Floor sensor + + + + + + + + + + + + Power Regulation ON time, min + + + + + Power Regulation OFF time, min + + + + + Dry Time, min + + + + + Mode to switch after Dry mode operation completion + + + + + + + + + + + Time correction by controller + + + + + Time format 0=24hour, 1=12hour (AM/PM) + + + + + + + Manually set week day + + + + + Manually set time hour + + + + + Maually set time minute + + + + + Air Temperature Minimum in degree, value X 10, e.g. 22.5°C=225 + + + + + Air Temperature Maximum in degree, x10 + + + + + Floor Temperature Minimum in degree, x10 + + + + + Floor Temperature Maximum in degree, x10 + + + + + Degree Mode 0=C, 1=F + + + + + + + Air Temperature Calibration in degree, x10 + + + + + Floor Temperature Calibration in degree, x10 + + + + + Temperature Hysteresis in degree, x10 + + + + + Display auto-brightness control + + + + + + + Display manual brightness level + + + + + Touch buttons sensitivity. 5=Super sensitive. 50=lowest sensitivity. + + + + + Mode to switch to on Basic Set Action command receive + + + + + + + + + + + Sensors consecutive reporting interval, minutes + + + + + Consumption meter consecutive reporting interval, minutes + + + + + Temperature difference to send to controller, value X 10 + Note: values between 0 ... 5 are not used. + + + + + Humidity difference to send to controller, % + Note: values between 0 ... 2 are not used. + + + + + Light sensor values difference to send to controller, % + Note: values between 0 ... 10 are not used. + + + + + Morning start time. Format: HHMM. e.g.08:00 should be sent as 0800 + + + + + Day start time. Format: HHMM. + + + + + Evening start time. Format: HHMM. + + + + + Night start time. Format: HHMM. + + + + + Monday morning temperature, value x10 + + + + + Monday day temperature, value x10 + + + + + Monday evening temperature, value x10 + + + + + Monday night temperature, value x10 + + + + + Tuesday morning temperature, value x10 + + + + + Tuesday day temperature, value x10 + + + + + Tuesday evening temperature, value x10 + + + + + Tuesday night temperature, value x10 + + + + + Wednesday morning temperature, value x10 + + + + + Wednesday day temperature, value x10 + + + + + Wednesday evening temperature, value x10 + + + + + Wednesday night temperature, value x10 + + + + + Thursday morning temperature, value x10 + + + + + Thursday day temperature, value x10 + + + + + Thursday evening temperature, value x10 + + + + + Thursday night temperature, value x10 + + + + + Friday morning temperature, value x10 + + + + + Friday day temperature, value x10 + + + + + Friday evening temperature, value x10 + + + + + Friday night temperature, value x10 + + + + + Saturday morning temperature, value x10 + + + + + Saturday day temperature, value x10 + + + + + Saturday evening temperature, value x10 + + + + + Saturday night temperature, value x10 + + + + + Sunday morning temperature, value x10 + + + + + Sunday day temperature, value x10 + + + + + Sunday evening temperature, value x10 + + + + + Sunday night temperature, value x10 + + + + + + + + + + diff --git a/config/homeseer/hs-fs100plus.xml b/config/homeseer/hs-fs100plus.xml index 18f62bdfab..ec183cc8fc 100644 --- a/config/homeseer/hs-fs100plus.xml +++ b/config/homeseer/hs-fs100plus.xml @@ -1,5 +1,40 @@ - - + + + Flex Sensor + HS-FS100+ (“Flex Sensor”) is a multifunction module that includes a temperature sensor, controllable buzzer and a port to connect optional external light or water sensors. It is designed to work with a variety of Z-Wave certified home controllers to launch automation events or scenes. + +- Use to trigger events based on changes in temperature +- Use the built-in buzzer as an audible notification that triggers when things happen in your home +- Use with optional light sensor to trigger events when indicator lights on applications turn on or off +- Use with optional water sensor to trigger events when water is detected + + http://www.openzwave.com/device-database/000C:0001:0202 + https://products.z-wavealliance.org/products/3050 + images/homeseer/hs-fs100plus.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=Manuals/3050/HS-FS100-Manual 081418.pdf + When on battery power, the unit will stay awake for 5 minutes when the button is pressed to complete inclusion process. Once included, the unit will wake up every 60 seconds and detect for water or light depending on which cable is plugged into it. + +Also, the unit will wake up every hour to report temperature to the controller. + + Inclusion: Add the device into your network by a Z-Wave certified controller. HS-FS100+ supports the latest S2 security offered by Z-Wave certified controllers. If your controller supports S2, please refer to the user guide of the controller for detailed instructions on adding devices to the network. The device can be added using the traditional method for Z-Wave as follows: +1. Place your controller into Inclusion (Add) mode by following the controller manufacturer's instructions. +2. When the controller is ready, single click the button of HS-FS100+. The controller should indicate that the new device was added successfully. If the controller shows it failed, repeat the procedure. + + Exclusion: Remove the device from your network by a Z-Wave certified controller. HS-FS100+ supports the latest S2 security offered by Z-Wave certified controllers. If your controller supports S2, please refer to the user guide of the controller for detailed instructions on removing devices from the network. The device can be removed using the traditional method for Z-Wave as follows: +1. Place your controller into Exclusion mode by following the controller manufacturer's instructions. +2. When the controller is ready, single click the button of HS-FS100+. The controller should indicate that the device was removed successfully. If the controller shows it failed, repeat the procedure. + + Use this procedure to reset Flex Sensor to factory settings when the Z-Wave controller is missing or otherwise inoperable. + +Press and hold the Z-Wave button on the sensor body for 10 seconds. If successful, the LED will flash 5 times. + + U.S. / Canada / Mexico + HS-FS100+ + + Metadata Import from Z-Wave Alliance Database + + + - + + diff --git a/config/homeseer/hs-wd100plus.xml b/config/homeseer/hs-wd100plus.xml index 2c39cd035a..b751a26cd5 100644 --- a/config/homeseer/hs-wd100plus.xml +++ b/config/homeseer/hs-wd100plus.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/000C:3034:4447 images/homeseer/hs-wd100plus.png @@ -35,8 +35,15 @@ To manually reset, tap the ON button twice quickly and then tap the OFF button t Apply PR #1546 from kaburke Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2563/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2874/xml + Added compatibility parameters to ensure correct dimming level is reported + + + + true + + diff --git a/config/honeywell/2681-plugin-dimmer.xml b/config/honeywell/2681-plugin-dimmer.xml new file mode 100644 index 0000000000..5c43c56ef4 --- /dev/null +++ b/config/honeywell/2681-plugin-dimmer.xml @@ -0,0 +1,102 @@ + + + http://www.openzwave.com/device-database/0039:3038:5044 + images/honeywell/2681-plugin-dimmer.png + https://products.z-wavealliance.org/products/2681/ + U.S. / Canada / Mexico + Plug-in Smart Dimmer, Single Plug + 1. Follow the instructions for your Z-Wave certified controller to add +the smart dimmer to the Z-Wave network. +2. Once the controller is ready to add your smart dimmer, single +press and release the manual/program button on the smart +dimmer to add it in the network. +Please reference the controller/gateway’s manual for instructions. + 39336/ZW3104 + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/2681/39336-HQSG_v1.pdf + To return your dimmer to factory defaults: +1. If plugged in, unplug the dimmer from the receptacle. +2. Press and hold the top button for at least 3 seconds while you +plug the dimmer into a receptacle. +Note: This should only be used in the event your networks’ primary +controller is missing or otherwise inoperable. + Transform any home into a smart home with the Honeywell Z-Wave Plug-In Smart Dimmer. The Smart Dimmer enables wireless control of on/off and dim functions for standard incandescent table and floor lamps, as well as dimmable fluorescent, LED and CFL fixtures and more! Use the dimmer control to customize the lighting output and create the perfect ambiance for any room. The space-saving horizontal module plugs into a standard wall receptacle without blocking the second outlet or obstructing placement of furniture. The Dimmer provides one Z-Wave enabled outlet for the lamp you would like to control. Take control of your home lighting with Honeywell Z-Wave Smart Lighting Controls! + 1. Follow the instructions for your Z-Wave certified controller to +remove a device from the Z-Wave network. +2. Once the controller is ready to remove your device, press and +release the manual/program button on the smart dimmer to +remove it from the network. + + Copied from 28617/ZW3104 GE Plug-in Dimmer by Justin Hammond - Justin@dynam.ac + + + + + + + true + + + + + + + Sets when the LED on the switch is lit. + + + + + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + + + + + + diff --git a/config/honeywell/3830-zw3107.xml b/config/honeywell/3830-zw3107.xml new file mode 100644 index 0000000000..f1bfeff9a1 --- /dev/null +++ b/config/honeywell/3830-zw3107.xml @@ -0,0 +1,70 @@ + + + Plug-in Dimmer (Dual Plug Simultaneous Control) + Transform any home into a smart home with the Honeywell Z-Wave Smart Lighting Control Lamp Module with Dimmer Control. The lamp module enables wireless control of on/off and dim functions for standard incandescent table and floor lamps, as well as dimmable fluorescent, LED and CFL fixtures and more! Use the dimmer control to customize the lighting output and create the perfect ambiance for any room. The space-saving horizontal module plugs into a standard wall receptacle without blocking the second outlet or obstructing placement of furniture. It provides a Z-Wave enabled outlet for the lamp you would like to control and one always-on, simultaneous control AC outlet for other electrical appliances. Take control of your home lighting with Honeywell Z-Wave Smart Controls! + http://www.openzwave.com/device-database/0039:3033:5044 + images/honeywell/3830-zw3107.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3830/39446-HQSG_v4.pdf + Follow the instructions for your Z-Wave certified controller to add a device to the Z-Wave network. Once the controller is ready to add your device, press and release the manual/program button on the smart dimmer. Repeat as necessary to add the dimmer to the network. + Follow the instructions for your Z-Wave certified controller to remove a device from the Z-Wave network. Once the controller is ready to remove your device, press and release the manual/program button on the smart dimmer to remove it from the network. + If plugged in, unplug the dimmer from the receptacle. Press and hold the top button, plug the device in and continue to hold for at least 3 seconds. + https://products.z-wavealliance.org/products/3830 + U.S. / Canada / Mexico + 39446 / ZW3107 + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/Products/3830/xml + + + + + + + true + + + + + + + + Adjusts when the indicator LED is turned ON, OFF, or disabled + + + + + + Adjusts when the indicator LED is turned ON, OFF, or disabled + + + + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + + + + + + + + + + + diff --git a/config/honeywell/39348-ZW4005.xml b/config/honeywell/39348-ZW4005.xml new file mode 100644 index 0000000000..86749a7f71 --- /dev/null +++ b/config/honeywell/39348-ZW4005.xml @@ -0,0 +1,46 @@ + + + + images/honeywell/39348-ZW4005.png + https://products.z-wavealliance.org/products/2689/ + 39348 / ZW4005 + 1. Follow the instructions for your Z-Wave certified controller to include a device to the Z-Wave network. +2. Once the controller is ready to include your device, press and release the top or bottom of the wireless smart switch(rocker) to include it in the network. +3. Once your controller has confirmed that the device has been included, refresh the Z-Wave network to optimize performance. + Quickly press ON (Top) button 3 times then immediately press the OFF (Bottom) button 3 times. The LED will flash ON/OFF 5 times when completed successfully. +Note: Please use this reset procedure only when the primary controller is missing or inoperable. + 1. Follow the instructions for your Z-Wave certified controller to exclude a device from the Z-Wave network. +2. Once the controller is ready to exclude your device, press and release the top button of the wireless smart switch (rocker) to exclude it from the network. + In-Wall Smart Switch + U.S. / Canada / Mexico + + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2689/39348-HQSG_v1.pdf + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/Products/2689/XML + Correct Product Pic Entry + + + + + + Sets when the LED on the switch is lit. + + + + + + Change the top of the switch to OFF and the bottom of the switch to ON, if the switch was installed upside down. + + + + + + + + + + + + + diff --git a/config/honeywell/39348-zw4008.xml b/config/honeywell/39348-zw4008.xml new file mode 100644 index 0000000000..a1a509189c --- /dev/null +++ b/config/honeywell/39348-zw4008.xml @@ -0,0 +1,57 @@ + + + + + images/honeywell/39348-ZW4008.png + https://products.z-wavealliance.org/products/3599/ + 39348 / ZW4008 + 1. Follow the instructions for your Z-Wave certified controller to add a device to the Z-Wave network. +2. Once the controller is ready to add your device, press and release the top or bottom of the wireless smart switch (rocker) to add it in the network. + +If prompted by the controller to enter the S2 security code, refer to the QR code/security number on the back of the box, or the QR code label on the product. + Quickly press ON (top) button 3 times, then, immediately press the OFF (bottom) button 3 times. The LED will flash ON/OFF 5 times when completed successfully. +Note: This should only be used in the event your network’s primary controller is missing or otherwise inoperable. + 1. Follow the instructions for your Z-Wave certified controller to remove a device from the Z-Wave network. +2. Once the controller is ready to remove your device, press and release the top or bottom of the wireless smart switch (rocker) to remove it from the network. + In-Wall Smart Switch + U.S. / Canada / Mexico + In-Wall Smart Switch with QuickFit and SimpleWire enhancements. Revolutionary QuickFit design features a housing depth that is up to 20 percent smaller than the previous Z-Wave models. This reduced size coupled with the elimination of heat taps provides a better fit in older style boxes and multi-gang configurations. SimpleWire technology allows line and load to automatically be configured with auto-sensing line-load terminals. All of this is coupled with Z-Wave S2 and Smart Start allows for effortless installation while being safer than ever! + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3599/39348%20Binder.pdf + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/Products/3599/xml + Added COMMAND_CLASS_BASIC block to set Value type instead of Node Event for Basic Set, Added COMMAND_CLASS_ASSOCIATION block for double tap with double tap defauled to auto + + + + + + Sets when the LED on the switch is lit. + + + + + + + 0 (default) - Press any button on the device +1 - Press 2 times ON button and then 2 times OFF button, LED will flash 5 times if done successful + + + + + + + + + + + + + + + + true + true + + + diff --git a/config/honeywell/39349-ZW1002.xml b/config/honeywell/39349-ZW1002.xml new file mode 100644 index 0000000000..165a806d70 --- /dev/null +++ b/config/honeywell/39349-ZW1002.xml @@ -0,0 +1,38 @@ + + + + images/honeywell/39349-ZW1002.png + https://products.z-wavealliance.org/products/2690 + 39349 / ZW1002 + 1. Follow the instructions for your Z-Wave certified controller to add a device to the Z-Wave network. 2. Once the controller is ready to add your device, press and release the program button to add it in the network. + Quickly press the button three (3) times, then press and hold the button for at least three (3) seconds. The LED will blink five (5) times to confirm. + 1. Follow the instructions for your Z-Wave certified controller to remove a device from the Z-Wave network. 2. Once the controller is ready to remove your device, press and release the manual/program button to remove it from the network. + In-Wall Tamper Resistant Outlet + U.S. / Canada / Mexico + The Honeywell Z-Wave Tamper Resistant Outlet enables wireless control of on/off functions from the Z-Wave controlled outlet + https://byjasco.com/products/ge-z-wave-plus-wall-tamper-resistant-smart-outlet + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2690/39349_HQSG_1.pdf + https://byjasco.com/support + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/Products/2690/XML + + + + + + Sets when the LED on the outlet is lit. + + + + + + + + + + + + + + diff --git a/config/honeywell/39351-ZW3010.xml b/config/honeywell/39351-ZW3010.xml new file mode 100644 index 0000000000..a738a208ac --- /dev/null +++ b/config/honeywell/39351-ZW3010.xml @@ -0,0 +1,74 @@ + + + + + http://www.openzwave.com/device-database/0039:3235:4944 + images/honeywell/39351-ZW3005.png + https://products.z-wavealliance.org/products/3600/ + In-Wall Smart Dimmer + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3600/39351%20Binder.pdf + U.S. / Canada / Mexico + Quickly press ON (Top) button three (3) times then immediately +press the OFF (Bottom) button three (3) times. The LED will flash +ON/OFF 5 times when completed successfully. +NOTE: This should only be used in the event your network’s +primary controller is missing or otherwise inoperable. + 1. Follow the instructions for your Z-Wave certified controller to +include a device to the Z-Wave network. +2. Once the controller is ready to add your device, +press and release the top or bottom of the wireless smart +switch (rocker) to add it in the network. +Please reference the controller’s manual for instructions. + In-Wall Smart Dimmer with QuickFit and SimpleWire enhancements. Revolutionary QuickFit design features a housing depth that is up to 20 percent smaller than the previous Z-Wave models. This reduced size coupled with the elimination of heat taps provides a better fit in older style boxes and multi-gang configurations. SimpleWire technology allows line and load to automatically be configured with auto-sensing line-load terminals. All of this is coupled with Z-Wave S2 and Smart Start allows for effortless installation while being safer than ever! + 39351/ZW3010 + 1. Follow the instructions for your Z-Wave certified controller to +remove a device from the Z-Wave network. +2. Once the controller is ready to Exclude your device, press +and release the top or bottom of the wireless smart dimmer +(rocker) to remove it from the network. + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3600/xml + + + + + Adjust the LED status to default, invert, always OFF or always ON + + + + + + + Adjust the speed at which the ramps to a specific value other than 0 and FF + + + + + Turn your dimmer into an On/Off switch with switch mode + + + + + Never accidentally remove a device during with alternate exclusion + + + + + Set the minimum dimmer threshold + + + Set the brightness threshold + + + Set the default brightness level that the dimmer will turn on when being controlled manually + + + + + + + + + + + diff --git a/config/honeywell/39357-ZW3004.xml b/config/honeywell/39357-ZW3004.xml new file mode 100644 index 0000000000..6ff16ac78e --- /dev/null +++ b/config/honeywell/39357-ZW3004.xml @@ -0,0 +1,56 @@ + + + + In-Wall Smart Toggle Dimmer + Transform any home into a smart home with the Honeywell Z-Wave In-Wall Toggle Dimmer. The dimmer enables wireless control of on/off and dim functions of hard-wired dimmable LED/CFL and incandescent lighting. The dimmer replaces your current light switch, uses your existing wiring, and provides Z-Wave wireless and in-wall control of overhead lighting. Use the dimmer feature to customize the lighting output and create the perfect ambiance for any room. Providing ultimate flexibility, the In-Wall Dimmer allows you to operate the switch by itself or easily integrate the switch three-way or four-way wiring configurations by adding the Honeywell Add-On Switch. Single Pole wiring configuration controls the light from one location. Three-way wiring configuration controls the light from two separate locations. Four-way wiring configuration controls the light from three separate locations. The Honeywell Add-On Switch is required for three-way or four-way installations. Take control of your home lighting with Honeywell Z-Wave Smart Controls! + http://www.openzwave.com/device-database/0039:3130:4944 + https://byjasco.com/honeywell-z-wave-plus-wall-smart-dimmer-0 + images/honeywell/39357-ZW3004.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2727/39357-QSG-v1-para.pdf + 1. Follow the instructions for your Z-Wave certified controller to add a device to the Z-Wave network. 2. Once the controller is ready to add your device, press up and release on the toggle to add it in the network + 1. Follow the instructions for your Z-Wave certified controller to remove a device from the Z-Wave network. 2. Once the controller is ready to remove your device, press up and release on the toggle to add it in the network + Quickly press UP button three (3) times then immediately press the DOWN button three (3) times. + https://products.z-wavealliance.org/products/2727 + U.S. / Canada / Mexico + 39357 / ZW3004 + + Initial creation + + + + + + Change the top of the switch to OFF and the bottom of the switch to ON, if the switch was installed upside down. + + + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + Indicates how many levels the dimmer will change for each dimming step. + + + This value indicates in 10 millisecond resolution, how often the dim level will change. For example, if you set this parameter to 1, then every 10ms the dim level will change. If you set it to 255, then every 2.55 seconds the dim level will change. + + + + + + + + + + + + + diff --git a/config/honeywell/39358-ZW4002.xml b/config/honeywell/39358-ZW4002.xml new file mode 100644 index 0000000000..3b08c2f1b3 --- /dev/null +++ b/config/honeywell/39358-ZW4002.xml @@ -0,0 +1,56 @@ + + + + http://www.openzwave.com/device-database/0039:3131:4944 + images/honeywell/39358-ZW4002.png + https://products.z-wavealliance.org/products/2725/ + 39358 / ZW4002 + 1. Follow the instructions for your Z-Wave certified controller to +include a device to the Z-Wave network. +2. Once the controller is ready to add your device, +press and release the top or bottom of the wireless smart +switch (rocker) to add it in the network. +Please reference the controller’s manual for instructions. + Quickly press ON (Top) button three (3) times then immediately +press the OFF (Bottom) button three (3) times. The LED will flash +ON/OFF 5 times when completed successfully. +NOTE: This should only be used in the event your network’s +primary controller is missing or otherwise inoperable. + 1. Follow the instructions for your Z-Wave certified controller to +remove a device from the Z-Wave network. +2. Once the controller is ready to Exclude your device, press +and release the top or bottom of the wireless smart dimmer +(rocker) to remove it from the network. + In-Wall Fan Control + U.S. / Canada / Mexico + Transform any home into a smart home with the Honeywell Z-Wave Fan Control. The in-wall fan control easily replaces any standard in-wall switch remotely controls a ceiling fan in your home and features a three-speed control system. Your home will be equipped with ultimate flexibility with the Honeywell Z-Wave Fan Control, capable of being used by itself or with up to four Honeywell add-on switches. Screw terminal installation provides improved space efficiency when replacing existing switches and the integrated LED indicator light allows you to easily locate the switch in a dark room. The Honeywell Z-Wave Fan Control is compatible with any Z-Wave certified gateway, providing access to many popular home automation systems. Take control of your home lighting with Honeywell Z-Wave Smart Controls! + + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2725/39358-HQSG-v1-para.pdf + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2725/xml + Add LED config + + + + + + Change the top of the switch to OFF and the bottom of the switch to ON, if the switch was installed upside down. + + + + + Sets when the LED on the switch is lit. + + + + + + + + + + + + + + diff --git a/config/honeywell/39449-ZW4106.xml b/config/honeywell/39449-ZW4106.xml new file mode 100644 index 0000000000..8f329ddad6 --- /dev/null +++ b/config/honeywell/39449-ZW4106.xml @@ -0,0 +1,52 @@ + + + + + 39449 / ZW4106 Plug-in Smart Switch + Plug-in Switch (Dual Plug Simultaneous Control) + http://www.openzwave.com/device-database/0039:3033:5052 + https://www.security.honeywellhome.com/product-repository/z5swpid + + images/honeywell/39449-ZW4106.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3740/39449-HQSG_v3.pdf + + + 1) Follow the instructions for your Z-Wave certified controller to add a device to the Z-Wave network. + 2) Once the controller is ready to add your device, press and release the manual/program button on the smart switch. Repeat as necessary to add the switch to the network. + + + 1) Follow the instructions for your Z-Wave certified controller to remove a device from the Z-Wave network. + 2) Once the controller is ready to remove your device, press and release the manual/program button on the smart switch to remove it from the network. + + + 1) If plugged in, unplug the device from the receptacle. + 2) Press and hold the top button, plug the device in, and continue to hold for at least 3 seconds. + + https://products.z-wavealliance.org/products/3740?selectedFrequencyId=2 + U.S. / Canada / Mexico + 39449 / ZW4106 + + Initial metadata import from Z-Wave Alliance + Correct Path to Image File + + + + + + + Invert/Disable LED (Adjusts when the indicator LED is turned ON, OFF, or disables it entirely) + + + + + + + + + + + + + + + diff --git a/config/honeywell/th6320zw2003.xml b/config/honeywell/th6320zw2003.xml index 3dddc7753a..96e9823741 100644 --- a/config/honeywell/th6320zw2003.xml +++ b/config/honeywell/th6320zw2003.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0039:0008:0011 images/honeywell/th6320zw2003.png @@ -36,12 +36,14 @@ Please use the reset procedure only when the primary controller is missing or in Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2583/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2893/xml + Thermostat requires 2 bytes for precision, not 1. Sending 1 results in decimal degrees (common in Celcius) setting the temperature to the minimum value. 0 + 2 diff --git a/config/honeywell/th8320zw1000.xml b/config/honeywell/th8320zw1000.xml index 46e439a51e..dbd19296f2 100644 --- a/config/honeywell/th8320zw1000.xml +++ b/config/honeywell/th8320zw1000.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0039:0001:0011 images/honeywell/th8320zw1000.png @@ -11,11 +11,13 @@ http://honeywell.com/Products-Services/Pages/consumer-home.aspx Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/44/xml + Thermostat requires 2 bytes for precision, not 1. Sending 1 results in all decimal sets returning back to minimum value. + 2 0 diff --git a/config/idlock/idlock150.xml b/config/idlock/idlock150.xml index a9ebaa849e..77efe3b687 100644 --- a/config/idlock/idlock150.xml +++ b/config/idlock/idlock150.xml @@ -1,4 +1,4 @@ - + ID Lock 150 Z-Wave module A module enabling your ID Lock digital door lock to a Z-Wave Plus enabled digital door Lock. @@ -55,6 +55,7 @@ FACTORY RESET DOOR LOCK FIRMWARE: Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2780/xml Update as per the 1.4.9/1.6 firmware specification + Update as per the 1.5.6/1.6 firmware specification @@ -116,7 +117,7 @@ FACTORY RESET DOOR LOCK FIRMWARE: Service PIN Mode A configuration get command on this parameter returns the latest set parameter value (set by Z-wave). - This is a set only value, if changed locally on keypad these values are not changed on Z-wave module. Value 5 and 6 are for future use on door lock. + This is a set only value, if changed locally on keypad these values are not changed on Z-wave module. Value 5 and 6 will generate a random PIN in location 108. Disabled: Disables both PIN and Service PIN menu on door lock Default Value: 0 (Deactivated) @@ -126,8 +127,8 @@ FACTORY RESET DOOR LOCK FIRMWARE: - - + + @@ -159,15 +160,6 @@ FACTORY RESET DOOR LOCK FIRMWARE: - - - Configuration Report for retriving the RFID information - Byte 1: Para1 (msb) - Byte 2: Para2 - Byte 3: Para3 - Byte 4: Para4 (lsb) - - diff --git a/config/images/2gig/ct200.png b/config/images/2gig/ct200.png new file mode 100644 index 0000000000..1fc8921e08 Binary files /dev/null and b/config/images/2gig/ct200.png differ diff --git a/config/images/BeNext/P1dongle.png b/config/images/BeNext/P1dongle.png new file mode 100644 index 0000000000..6f7fd67ffe Binary files /dev/null and b/config/images/BeNext/P1dongle.png differ diff --git a/config/images/DefaultProductImage.png b/config/images/DefaultProductImage.png new file mode 100644 index 0000000000..d13e1236fb Binary files /dev/null and b/config/images/DefaultProductImage.png differ diff --git a/config/images/abus/SHRM10000.jpg b/config/images/abus/SHRM10000.jpg new file mode 100644 index 0000000000..20fc7e2c3a Binary files /dev/null and b/config/images/abus/SHRM10000.jpg differ diff --git a/config/images/aeotec/zwa009.png b/config/images/aeotec/zwa009.png new file mode 100644 index 0000000000..c001db3837 Binary files /dev/null and b/config/images/aeotec/zwa009.png differ 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/zwa012.png b/config/images/aeotec/zwa012.png new file mode 100644 index 0000000000..5930535c32 Binary files /dev/null and b/config/images/aeotec/zwa012.png differ diff --git a/config/images/aeotec/zwa019.png b/config/images/aeotec/zwa019.png new file mode 100644 index 0000000000..ebb9a1fe25 Binary files /dev/null and b/config/images/aeotec/zwa019.png differ diff --git a/config/images/aeotec/zwa021.png b/config/images/aeotec/zwa021.png new file mode 100644 index 0000000000..f9df13e895 Binary files /dev/null and b/config/images/aeotec/zwa021.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/yrd1x0.png b/config/images/assa_abloy/yrd1x0.png new file mode 100644 index 0000000000..bbcf13d377 Binary files /dev/null and b/config/images/assa_abloy/yrd1x0.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/building36/b36-t10.png b/config/images/building36/b36-t10.png new file mode 100644 index 0000000000..371cb591fb Binary files /dev/null and b/config/images/building36/b36-t10.png differ diff --git a/config/images/connecthome/CH_201.png b/config/images/connecthome/CH_201.png new file mode 100644 index 0000000000..004f5fe3c5 Binary files /dev/null and b/config/images/connecthome/CH_201.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/devolo/mt2759.png b/config/images/devolo/mt2759.png new file mode 100644 index 0000000000..58bd4a660a Binary files /dev/null and b/config/images/devolo/mt2759.png differ diff --git a/config/images/devolo/mt2760.png b/config/images/devolo/mt2760.png new file mode 100644 index 0000000000..58bd4a660a Binary files /dev/null and b/config/images/devolo/mt2760.png differ diff --git a/config/images/devolo/mt2761.png b/config/images/devolo/mt2761.png new file mode 100644 index 0000000000..58bd4a660a Binary files /dev/null and b/config/images/devolo/mt2761.png differ diff --git a/config/images/dlink/dch-z210.png b/config/images/dlink/dch-z210.png new file mode 100644 index 0000000000..9093fdf906 Binary files /dev/null and b/config/images/dlink/dch-z210.png differ diff --git a/config/images/dome/dmex1.png b/config/images/dome/dmex1.png new file mode 100644 index 0000000000..f5536b7adb Binary files /dev/null and b/config/images/dome/dmex1.png differ diff --git a/config/images/ecodim/0.7.jpg b/config/images/ecodim/0.7.jpg new file mode 100644 index 0000000000..59893ce162 Binary files /dev/null and b/config/images/ecodim/0.7.jpg differ diff --git a/config/images/econet/ezw1204.png b/config/images/econet/ezw1204.png new file mode 100644 index 0000000000..673703e83e Binary files /dev/null and b/config/images/econet/ezw1204.png differ diff --git a/config/images/enerwave/zwnrsm2plus.png b/config/images/enerwave/zwnrsm2plus.png new file mode 100644 index 0000000000..5eaff10952 Binary files /dev/null and b/config/images/enerwave/zwnrsm2plus.png differ diff --git a/config/images/eurotronic/eur_airquality.png b/config/images/eurotronic/eur_airquality.png new file mode 100644 index 0000000000..59c6778bbe Binary files /dev/null and b/config/images/eurotronic/eur_airquality.png differ diff --git a/config/images/eurotronic/eur_temphumid.png b/config/images/eurotronic/eur_temphumid.png new file mode 100644 index 0000000000..59c6778bbe Binary files /dev/null and b/config/images/eurotronic/eur_temphumid.png differ diff --git a/config/images/evolve/t-100.png b/config/images/evolve/t-100.png new file mode 100644 index 0000000000..066455a1ef Binary files /dev/null and b/config/images/evolve/t-100.png differ diff --git a/config/images/fibaro/fgfs101.png b/config/images/fibaro/fgfs101.png new file mode 100644 index 0000000000..5649316a31 Binary files /dev/null and b/config/images/fibaro/fgfs101.png differ diff --git a/config/images/fibaro/fgrgbw442.png b/config/images/fibaro/fgrgbw442.png new file mode 100644 index 0000000000..8301134890 Binary files /dev/null and b/config/images/fibaro/fgrgbw442.png differ diff --git a/config/images/fibaro/fgrm222.png b/config/images/fibaro/fgrm222.png new file mode 100644 index 0000000000..01e5c0821e Binary files /dev/null and b/config/images/fibaro/fgrm222.png differ diff --git a/config/images/fibaro/fgs222.png b/config/images/fibaro/fgs222.png new file mode 100644 index 0000000000..3cfd73d23d Binary files /dev/null and b/config/images/fibaro/fgs222.png differ diff --git a/config/images/fibaro/fgs224.png b/config/images/fibaro/fgs224.png new file mode 100644 index 0000000000..efd39acceb Binary files /dev/null and b/config/images/fibaro/fgs224.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/fibaro/fgwds221.png b/config/images/fibaro/fgwds221.png new file mode 100644 index 0000000000..a75b1e500e Binary files /dev/null and b/config/images/fibaro/fgwds221.png differ diff --git a/config/images/fibaro/fgwpb121.png b/config/images/fibaro/fgwpb121.png new file mode 100644 index 0000000000..3b68a64b2a Binary files /dev/null and b/config/images/fibaro/fgwpb121.png differ diff --git a/config/images/firstalert/zcombo-g.png b/config/images/firstalert/zcombo-g.png new file mode 100644 index 0000000000..7ca9d478b7 Binary files /dev/null and b/config/images/firstalert/zcombo-g.png differ diff --git a/config/images/firstalert/zsmoke.png b/config/images/firstalert/zsmoke.png new file mode 100644 index 0000000000..fd13cc7b47 Binary files /dev/null and b/config/images/firstalert/zsmoke.png differ diff --git a/config/images/fortrezz/fts05p.png b/config/images/fortrezz/fts05p.png new file mode 100644 index 0000000000..632775c81e Binary files /dev/null and b/config/images/fortrezz/fts05p.png differ diff --git a/config/images/ge/14280-plugin-dimmer.png b/config/images/ge/14280-plugin-dimmer.png new file mode 100644 index 0000000000..f51b7d1aa3 Binary files /dev/null and b/config/images/ge/14280-plugin-dimmer.png differ diff --git a/config/images/ge/14285.png b/config/images/ge/14285.png new file mode 100644 index 0000000000..173e81cfe9 Binary files /dev/null and b/config/images/ge/14285.png differ diff --git a/config/images/ge/14298.png b/config/images/ge/14298.png new file mode 100755 index 0000000000..0958f7f1b1 Binary files /dev/null and b/config/images/ge/14298.png differ diff --git a/config/images/ge/14322-dimmer-toggle.png b/config/images/ge/14322-dimmer-toggle.png new file mode 100644 index 0000000000..9a36a69469 Binary files /dev/null and b/config/images/ge/14322-dimmer-toggle.png differ diff --git a/config/images/ge/46202-switch.png b/config/images/ge/46202-switch.png new file mode 100644 index 0000000000..64e6b76238 Binary files /dev/null and b/config/images/ge/46202-switch.png differ diff --git a/config/images/ge/46204-dimmer-toggle.png b/config/images/ge/46204-dimmer-toggle.png new file mode 100644 index 0000000000..016c679a59 Binary files /dev/null and b/config/images/ge/46204-dimmer-toggle.png differ diff --git a/config/images/goodway/td14010.png b/config/images/goodway/td14010.png new file mode 100644 index 0000000000..dd4e818f53 Binary files /dev/null and b/config/images/goodway/td14010.png differ diff --git a/config/images/graber/mcz1.png b/config/images/graber/mcz1.png new file mode 100644 index 0000000000..0846c83e65 Binary files /dev/null and b/config/images/graber/mcz1.png differ diff --git a/config/images/hab/iblinds.png b/config/images/hab/iblinds.png new file mode 100644 index 0000000000..0f25e3d666 Binary files /dev/null and b/config/images/hab/iblinds.png differ diff --git a/config/images/hab/iblindsV3.png b/config/images/hab/iblindsV3.png new file mode 100644 index 0000000000..67285a7b42 Binary files /dev/null and b/config/images/hab/iblindsV3.png differ diff --git a/config/images/heltun/he-ft01.png b/config/images/heltun/he-ft01.png new file mode 100755 index 0000000000..3a38280afb Binary files /dev/null and b/config/images/heltun/he-ft01.png differ diff --git a/config/images/heltun/he-ht01.png b/config/images/heltun/he-ht01.png new file mode 100755 index 0000000000..f437a231ec Binary files /dev/null and b/config/images/heltun/he-ht01.png differ diff --git a/config/images/homeseer/hs-fs100plus.png b/config/images/homeseer/hs-fs100plus.png new file mode 100644 index 0000000000..18d8534707 Binary files /dev/null and b/config/images/homeseer/hs-fs100plus.png differ diff --git a/config/images/honeywell/2681-plugin-dimmer.png b/config/images/honeywell/2681-plugin-dimmer.png new file mode 100644 index 0000000000..ac29cab4a4 Binary files /dev/null and b/config/images/honeywell/2681-plugin-dimmer.png differ diff --git a/config/images/honeywell/3830-zw3107.png b/config/images/honeywell/3830-zw3107.png new file mode 100644 index 0000000000..ec335b42e2 Binary files /dev/null and b/config/images/honeywell/3830-zw3107.png differ diff --git a/config/images/honeywell/39348-ZW4005.png b/config/images/honeywell/39348-ZW4005.png new file mode 100644 index 0000000000..ea966f93c8 Binary files /dev/null and b/config/images/honeywell/39348-ZW4005.png differ diff --git a/config/images/honeywell/39348-ZW4008.png b/config/images/honeywell/39348-ZW4008.png new file mode 100644 index 0000000000..17c85e566b Binary files /dev/null and b/config/images/honeywell/39348-ZW4008.png differ diff --git a/config/images/honeywell/39349-ZW1002.png b/config/images/honeywell/39349-ZW1002.png new file mode 100644 index 0000000000..2b69238c7f Binary files /dev/null and b/config/images/honeywell/39349-ZW1002.png differ diff --git a/config/images/honeywell/39357-ZW3004.png b/config/images/honeywell/39357-ZW3004.png new file mode 100644 index 0000000000..1fab0beee9 Binary files /dev/null and b/config/images/honeywell/39357-ZW3004.png differ diff --git a/config/images/honeywell/39358-ZW4002.png b/config/images/honeywell/39358-ZW4002.png new file mode 100644 index 0000000000..cad58e0648 Binary files /dev/null and b/config/images/honeywell/39358-ZW4002.png differ diff --git a/config/images/honeywell/39449-ZW4106.png b/config/images/honeywell/39449-ZW4106.png new file mode 100644 index 0000000000..ac29cab4a4 Binary files /dev/null and b/config/images/honeywell/39449-ZW4106.png differ diff --git a/config/images/inovelli/lzw31-sn.png b/config/images/inovelli/lzw31-sn.png new file mode 100644 index 0000000000..0006b06115 Binary files /dev/null and b/config/images/inovelli/lzw31-sn.png differ diff --git a/config/images/inovelli/lzw31.png b/config/images/inovelli/lzw31.png new file mode 100644 index 0000000000..c46eb1d431 Binary files /dev/null and b/config/images/inovelli/lzw31.png differ diff --git a/config/images/inovelli/lzw36.png b/config/images/inovelli/lzw36.png new file mode 100644 index 0000000000..b3be5c381a Binary files /dev/null and b/config/images/inovelli/lzw36.png differ diff --git a/config/images/inovelli/lzw40.png b/config/images/inovelli/lzw40.png new file mode 100644 index 0000000000..e559c88fbb Binary files /dev/null and b/config/images/inovelli/lzw40.png differ diff --git a/config/images/inovelli/lzw41.png b/config/images/inovelli/lzw41.png new file mode 100644 index 0000000000..e559c88fbb Binary files /dev/null and b/config/images/inovelli/lzw41.png differ diff --git a/config/images/inovelli/lzw42.png b/config/images/inovelli/lzw42.png new file mode 100644 index 0000000000..e559c88fbb Binary files /dev/null and b/config/images/inovelli/lzw42.png differ diff --git a/config/images/inovelli/lzw60.png b/config/images/inovelli/lzw60.png new file mode 100644 index 0000000000..8649b1a833 Binary files /dev/null and b/config/images/inovelli/lzw60.png differ diff --git a/config/images/inovelli/nzw30.png b/config/images/inovelli/nzw30.png new file mode 100644 index 0000000000..c8c9b5c9f8 Binary files /dev/null and b/config/images/inovelli/nzw30.png differ diff --git a/config/images/kwikset/888.png b/config/images/kwikset/888.png new file mode 100644 index 0000000000..fa999146fd Binary files /dev/null and b/config/images/kwikset/888.png differ diff --git a/config/images/kwikset/914c.png b/config/images/kwikset/914c.png new file mode 100644 index 0000000000..e1852d7cd2 Binary files /dev/null and b/config/images/kwikset/914c.png differ diff --git a/config/images/kwikset/916.jpg b/config/images/kwikset/916.jpg new file mode 100644 index 0000000000..185e958b7b Binary files /dev/null and b/config/images/kwikset/916.jpg differ diff --git a/config/images/kwikset/smartcode.png b/config/images/kwikset/smartcode.png index be0e552290..d12f6edd49 100644 Binary files a/config/images/kwikset/smartcode.png and b/config/images/kwikset/smartcode.png differ diff --git a/config/images/leviton/dz15s.png b/config/images/leviton/dz15s.png index c0b0605476..2e283cdfdc 100644 Binary files a/config/images/leviton/dz15s.png and b/config/images/leviton/dz15s.png differ diff --git a/config/images/leviton/dzpa1.png b/config/images/leviton/dzpa1.png new file mode 100644 index 0000000000..c0b0605476 Binary files /dev/null and b/config/images/leviton/dzpa1.png differ diff --git a/config/images/leviton/vrpa1.png b/config/images/leviton/vrpa1.png new file mode 100644 index 0000000000..c0b0605476 Binary files /dev/null and b/config/images/leviton/vrpa1.png differ diff --git a/config/images/leviton/vrpd3.png b/config/images/leviton/vrpd3.png new file mode 100644 index 0000000000..9fe34bf5dc Binary files /dev/null and b/config/images/leviton/vrpd3.png differ diff --git a/config/images/leviton/zw15r.png b/config/images/leviton/zw15r.png new file mode 100644 index 0000000000..19f9dfbd56 Binary files /dev/null and b/config/images/leviton/zw15r.png differ diff --git a/config/images/leviton/zw4sf.png b/config/images/leviton/zw4sf.png new file mode 100644 index 0000000000..ed5fd80a0e Binary files /dev/null and b/config/images/leviton/zw4sf.png differ diff --git a/config/images/linear/WT00Z5-1.png b/config/images/linear/WT00Z5-1.png new file mode 100644 index 0000000000..dcfbe115a3 Binary files /dev/null and b/config/images/linear/WT00Z5-1.png differ diff --git a/config/images/logicsoft/ZDB5100.png b/config/images/logicsoft/ZDB5100.png new file mode 100644 index 0000000000..8821c8d61a Binary files /dev/null and b/config/images/logicsoft/ZDB5100.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/mcohome/mh8fceu0803.png b/config/images/mcohome/mh8fceu0803.png new file mode 100644 index 0000000000..fd45f3b233 Binary files /dev/null and b/config/images/mcohome/mh8fceu0803.png differ diff --git a/config/images/mcohome/mhs513.png b/config/images/mcohome/mhs513.png new file mode 100644 index 0000000000..16ac30354d Binary files /dev/null and b/config/images/mcohome/mhs513.png differ diff --git a/config/images/namron/1402756.png b/config/images/namron/1402756.png new file mode 100644 index 0000000000..482435805a Binary files /dev/null and b/config/images/namron/1402756.png differ diff --git a/config/images/namron/4512710.png b/config/images/namron/4512710.png new file mode 100644 index 0000000000..39e940dbc7 Binary files /dev/null and b/config/images/namron/4512710.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/4512714.jpg b/config/images/namron/4512714.jpg new file mode 100644 index 0000000000..e98fc20347 Binary files /dev/null and b/config/images/namron/4512714.jpg differ diff --git a/config/images/namron/4512715.png b/config/images/namron/4512715.png new file mode 100644 index 0000000000..bd45bf4474 Binary files /dev/null and b/config/images/namron/4512715.png 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/namron/4512724.png b/config/images/namron/4512724.png new file mode 100644 index 0000000000..1e9b33b72c Binary files /dev/null and b/config/images/namron/4512724.png differ diff --git a/config/images/nexia/th100nx.png b/config/images/nexia/th100nx.png new file mode 100644 index 0000000000..cd3e963f1c Binary files /dev/null and b/config/images/nexia/th100nx.png differ diff --git a/config/images/oomi/ft112.png b/config/images/oomi/ft112.png new file mode 100644 index 0000000000..4efcec7531 Binary files /dev/null and b/config/images/oomi/ft112.png differ diff --git a/config/images/oomi/ft118.png b/config/images/oomi/ft118.png new file mode 100644 index 0000000000..8094d4f09e Binary files /dev/null and b/config/images/oomi/ft118.png differ diff --git a/config/images/popp/701202.png b/config/images/popp/701202.png new file mode 100644 index 0000000000..1c96a02ce6 Binary files /dev/null and b/config/images/popp/701202.png differ diff --git a/config/images/q-light/q-light_puck.png b/config/images/q-light/q-light_puck.png new file mode 100644 index 0000000000..16182761e1 Binary files /dev/null and b/config/images/q-light/q-light_puck.png differ diff --git a/config/images/q-light/q-light_zerodim.png b/config/images/q-light/q-light_zerodim.png new file mode 100644 index 0000000000..f6b374c3b6 Binary files /dev/null and b/config/images/q-light/q-light_zerodim.png differ diff --git a/config/images/q-light/q-light_zerodim_2pol.png b/config/images/q-light/q-light_zerodim_2pol.png new file mode 100644 index 0000000000..f6b374c3b6 Binary files /dev/null and b/config/images/q-light/q-light_zerodim_2pol.png differ diff --git a/config/images/qolsys/qz2140-840.png b/config/images/qolsys/qz2140-840.png new file mode 100755 index 0000000000..457909f233 Binary files /dev/null and b/config/images/qolsys/qz2140-840.png differ diff --git a/config/images/qubino/ZMNHADx.png b/config/images/qubino/ZMNHADx.png index af7137e288..dbc0fe43d0 100644 Binary files a/config/images/qubino/ZMNHADx.png and b/config/images/qubino/ZMNHADx.png differ diff --git a/config/images/qubino/ZMNHCDx.png b/config/images/qubino/ZMNHCDx.png index df3a1b7040..3e33c931cd 100644 Binary files a/config/images/qubino/ZMNHCDx.png and b/config/images/qubino/ZMNHCDx.png differ diff --git a/config/images/qubino/ZMNHDDx.png b/config/images/qubino/ZMNHDDx.png index e7f9564e77..382435ebb7 100644 Binary files a/config/images/qubino/ZMNHDDx.png and b/config/images/qubino/ZMNHDDx.png 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/qubino/ZMNHQDx.png b/config/images/qubino/ZMNHQDx.png new file mode 100644 index 0000000000..aea7c6e60f Binary files /dev/null and b/config/images/qubino/ZMNHQDx.png differ diff --git a/config/images/qubino/ZMNHTDx.png b/config/images/qubino/ZMNHTDx.png index 308a4bb3a3..13ba0cfcd0 100644 Binary files a/config/images/qubino/ZMNHTDx.png and b/config/images/qubino/ZMNHTDx.png differ diff --git a/config/images/qubino/ZMNHYDx.png b/config/images/qubino/ZMNHYDx.png index 1e5fb1a70e..54a19d52f6 100644 Binary files a/config/images/qubino/ZMNHYDx.png and b/config/images/qubino/ZMNHYDx.png differ diff --git a/config/images/qubino/ZMNKADx.png b/config/images/qubino/ZMNKADx.png new file mode 100644 index 0000000000..aea7c6e60f Binary files /dev/null and b/config/images/qubino/ZMNKADx.png differ diff --git a/config/images/qubino/zmnhxdx.png b/config/images/qubino/zmnhxdx.png index e76f632ec9..6579bd03cc 100644 Binary files a/config/images/qubino/zmnhxdx.png and b/config/images/qubino/zmnhxdx.png differ diff --git a/config/images/ring/PIR-SS.png b/config/images/ring/PIR-SS.png new file mode 100644 index 0000000000..8569959a5a Binary files /dev/null and b/config/images/ring/PIR-SS.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/shenzen_neo/ls03ch.jpg b/config/images/shenzen_neo/ls03ch.jpg new file mode 100644 index 0000000000..63a7786b0e Binary files /dev/null and b/config/images/shenzen_neo/ls03ch.jpg differ diff --git a/config/images/shenzen_neo/nas-cs01z.jpg b/config/images/shenzen_neo/nas-cs01z.jpg new file mode 100644 index 0000000000..0a2bba05d6 Binary files /dev/null and b/config/images/shenzen_neo/nas-cs01z.jpg differ diff --git a/config/images/shenzen_neo/nas-pd02z.png b/config/images/shenzen_neo/nas-pd02z.png new file mode 100644 index 0000000000..2ff6debb75 Binary files /dev/null and b/config/images/shenzen_neo/nas-pd02z.png differ diff --git a/config/images/shenzen_neo/nas-sc03ze.jpg b/config/images/shenzen_neo/nas-sc03ze.jpg new file mode 100644 index 0000000000..0a2bba05d6 Binary files /dev/null and b/config/images/shenzen_neo/nas-sc03ze.jpg differ diff --git a/config/images/shenzen_neo/nas-wr01ze.png b/config/images/shenzen_neo/nas-wr01ze.png new file mode 100644 index 0000000000..cf405354e4 Binary files /dev/null and b/config/images/shenzen_neo/nas-wr01ze.png differ diff --git a/config/images/shenzen_saykey/SK-3007-05.png b/config/images/shenzen_saykey/SK-3007-05.png new file mode 100644 index 0000000000..7a5676e111 Binary files /dev/null and b/config/images/shenzen_saykey/SK-3007-05.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/simon/10002080-13X.png b/config/images/simon/10002080-13X.png new file mode 100755 index 0000000000..fbfec58e39 Binary files /dev/null and b/config/images/simon/10002080-13X.png differ diff --git a/config/images/sunricher/srzv9001k12dimz4.png b/config/images/sunricher/srzv9001k12dimz4.png new file mode 100644 index 0000000000..3ab90d22cd Binary files /dev/null and b/config/images/sunricher/srzv9001k12dimz4.png differ diff --git a/config/images/sunricher/srzv9001k12dimz5.png b/config/images/sunricher/srzv9001k12dimz5.png new file mode 100644 index 0000000000..4d59a7a524 Binary files /dev/null and b/config/images/sunricher/srzv9001k12dimz5.png differ diff --git a/config/images/sunricher/srzv9001k2dim.png b/config/images/sunricher/srzv9001k2dim.png new file mode 100644 index 0000000000..78b38e8ef2 Binary files /dev/null and b/config/images/sunricher/srzv9001k2dim.png differ diff --git a/config/images/sunricher/srzv9001k4dim.png b/config/images/sunricher/srzv9001k4dim.png new file mode 100644 index 0000000000..7513fb56cc Binary files /dev/null and b/config/images/sunricher/srzv9001k4dim.png differ diff --git a/config/images/sunricher/srzv9001k4dimg2.png b/config/images/sunricher/srzv9001k4dimg2.png new file mode 100644 index 0000000000..a22b3245a6 Binary files /dev/null and b/config/images/sunricher/srzv9001k4dimg2.png differ diff --git a/config/images/sunricher/srzv9001tccteu.png b/config/images/sunricher/srzv9001tccteu.png new file mode 100644 index 0000000000..65a8c41139 Binary files /dev/null and b/config/images/sunricher/srzv9001tccteu.png differ diff --git a/config/images/sunricher/srzv9101facct.png b/config/images/sunricher/srzv9101facct.png new file mode 100644 index 0000000000..64e19406b1 Binary files /dev/null and b/config/images/sunricher/srzv9101facct.png differ diff --git a/config/images/sunricher/srzv9101sachpswitch.png b/config/images/sunricher/srzv9101sachpswitch.png new file mode 100644 index 0000000000..52db0cbceb Binary files /dev/null and b/config/images/sunricher/srzv9101sachpswitch.png differ diff --git a/config/images/sunricher/zv2835rac.png b/config/images/sunricher/zv2835rac.png new file mode 100644 index 0000000000..103210b3f2 Binary files /dev/null and b/config/images/sunricher/zv2835rac.png differ diff --git a/config/images/sunricher/zv9100a.png b/config/images/sunricher/zv9100a.png new file mode 100644 index 0000000000..c44dd11cc6 Binary files /dev/null and b/config/images/sunricher/zv9100a.png differ diff --git a/config/images/technisat/03009496.png b/config/images/technisat/03009496.png new file mode 100644 index 0000000000..e30dcd4d30 Binary files /dev/null and b/config/images/technisat/03009496.png differ diff --git a/config/images/technisat/03009497.png b/config/images/technisat/03009497.png new file mode 100644 index 0000000000..190da74e22 Binary files /dev/null and b/config/images/technisat/03009497.png differ diff --git a/config/images/technisat/03009499.png b/config/images/technisat/03009499.png new file mode 100644 index 0000000000..03375717d9 Binary files /dev/null and b/config/images/technisat/03009499.png differ diff --git a/config/images/thermofloor/Heatit-Z-Push-button-8-white.png b/config/images/thermofloor/Heatit-Z-Push-button-8-white.png new file mode 100644 index 0000000000..dd9c36d8b3 Binary files /dev/null and b/config/images/thermofloor/Heatit-Z-Push-button-8-white.png differ diff --git a/config/images/thermofloor/heatit0204.png b/config/images/thermofloor/heatit0204.png new file mode 100644 index 0000000000..47e5c522cd Binary files /dev/null and b/config/images/thermofloor/heatit0204.png differ diff --git a/config/images/thermofloor/heatit058.png b/config/images/thermofloor/heatit058.png new file mode 100644 index 0000000000..20204eade3 Binary files /dev/null and b/config/images/thermofloor/heatit058.png differ diff --git a/config/images/thermofloor/heatit20a.png b/config/images/thermofloor/heatit20a.png new file mode 100644 index 0000000000..34d1dac777 Binary files /dev/null and b/config/images/thermofloor/heatit20a.png differ diff --git a/config/images/thermofloor/heatit_zdim.png b/config/images/thermofloor/heatit_zdim.png new file mode 100644 index 0000000000..d89effe7de Binary files /dev/null and b/config/images/thermofloor/heatit_zdim.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/vision/zm1701.png b/config/images/vision/zm1701.png new file mode 100644 index 0000000000..081de74325 Binary files /dev/null and b/config/images/vision/zm1701.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/wenzhou/tz78.png b/config/images/wenzhou/tz78.png new file mode 100644 index 0000000000..80db6d16d8 Binary files /dev/null and b/config/images/wenzhou/tz78.png differ diff --git a/config/images/wenzhou/tze96.png b/config/images/wenzhou/tze96.png new file mode 100644 index 0000000000..dc7449a927 Binary files /dev/null and b/config/images/wenzhou/tze96.png differ diff --git a/config/images/widom/DRY.png b/config/images/widom/DRY.png new file mode 100644 index 0000000000..5696cbdd58 Binary files /dev/null and b/config/images/widom/DRY.png differ diff --git a/config/images/widom/UMS2.png b/config/images/widom/UMS2.png new file mode 100644 index 0000000000..b2700bc8e8 Binary files /dev/null and b/config/images/widom/UMS2.png differ diff --git a/config/images/widom/WDS2.png b/config/images/widom/WDS2.png new file mode 100644 index 0000000000..5d18a39646 Binary files /dev/null and b/config/images/widom/WDS2.png differ diff --git a/config/images/widom/WSP.png b/config/images/widom/WSP.png new file mode 100644 index 0000000000..08a226230c Binary files /dev/null and b/config/images/widom/WSP.png differ diff --git a/config/images/widom/WTED.png b/config/images/widom/WTED.png new file mode 100644 index 0000000000..a19a7c13cc Binary files /dev/null and b/config/images/widom/WTED.png differ diff --git a/config/images/wink/wnk-mot1.png b/config/images/wink/wnk-mot1.png new file mode 100644 index 0000000000..54e4f54761 Binary files /dev/null and b/config/images/wink/wnk-mot1.png differ diff --git a/config/images/wink/wnk-sir1p.png b/config/images/wink/wnk-sir1p.png new file mode 100644 index 0000000000..2736796a31 Binary files /dev/null and b/config/images/wink/wnk-sir1p.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/zipato/ne-nas-ab01z.png b/config/images/zipato/ne-nas-ab01z.png new file mode 100644 index 0000000000..9a0c36deaf Binary files /dev/null and b/config/images/zipato/ne-nas-ab01z.png differ diff --git a/config/images/zooz/zen16.png b/config/images/zooz/zen16.png new file mode 100644 index 0000000000..90dded3336 Binary files /dev/null and b/config/images/zooz/zen16.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/zen21v3.png b/config/images/zooz/zen21v3.png new file mode 100644 index 0000000000..227316f185 Binary files /dev/null and b/config/images/zooz/zen21v3.png differ diff --git a/config/images/zooz/zen23v3.png b/config/images/zooz/zen23v3.png new file mode 100644 index 0000000000..db4187cb22 Binary files /dev/null and b/config/images/zooz/zen23v3.png differ diff --git a/config/images/zooz/zen24v2.png b/config/images/zooz/zen24v2.png new file mode 100644 index 0000000000..6f3d69ab3c Binary files /dev/null and b/config/images/zooz/zen24v2.png differ diff --git a/config/images/zooz/zen30.png b/config/images/zooz/zen30.png new file mode 100644 index 0000000000..e29fcd05e4 Binary files /dev/null and b/config/images/zooz/zen30.png differ diff --git a/config/images/zooz/zen31.png b/config/images/zooz/zen31.png new file mode 100644 index 0000000000..ab0b391043 Binary files /dev/null and b/config/images/zooz/zen31.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/zen34.png b/config/images/zooz/zen34.png new file mode 100644 index 0000000000..f863ddb2f7 Binary files /dev/null and b/config/images/zooz/zen34.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/images/zwave.me/razberry.png b/config/images/zwave.me/razberry.png new file mode 100644 index 0000000000..9ff878b6d8 Binary files /dev/null and b/config/images/zwave.me/razberry.png differ diff --git a/config/images/zwave.me/zme_wallc_s.png b/config/images/zwave.me/zme_wallc_s.png new file mode 100644 index 0000000000..91eedc2ae9 Binary files /dev/null and b/config/images/zwave.me/zme_wallc_s.png differ diff --git a/config/images/zwp/PA-100.png b/config/images/zwp/PA-100.png new file mode 100644 index 0000000000..450dd59697 Binary files /dev/null and b/config/images/zwp/PA-100.png differ diff --git a/config/inovelli/lzw30-sn.xml b/config/inovelli/lzw30-sn.xml index 45ced8039f..0102acb6d0 100644 --- a/config/inovelli/lzw30-sn.xml +++ b/config/inovelli/lzw30-sn.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/031E:0001:0002 images/inovelli/lzw30-sn.png @@ -22,6 +22,10 @@ Only use either of these procedures in the event that the network primary contro Please Note: If this doesn't work, you can check to see if your switch is within Z-Wave Range by holding down the Configuration Button for 5-10 seconds (if it's not within range, the LED Bar will indicate Red and if it is within Range, the LED Bar will indicate Green). If your switch indicates Red, please move the switch closer to the HUB. If your switch indicates Green, please try running an Exclusion to reset your switch. Adding Metadata + Remove Static Central Scene Entries - Issue #2155 + Add Instant On/Off Parameter + Clarifying which scenes are disabled with parameter 51 + Adding parameter 13 to manually specify the load if auto detection doesn't work @@ -108,6 +112,20 @@ Please Note: If this doesn't work, you can check to see if your switch is within Default: 10 + + + The default of the switch is to auto detect the load. In some situations you may want to try the option for a special load type. (firmware 1.17+) + + + + + + + Enables instant on (ie: disables the 700ms button delay). Note, if you disable the delay, it will also disable scene control except for the following: Up pressed, held, released, Down pressed, held, released & config button pressed. + + + + @@ -117,13 +135,5 @@ Please Note: If this doesn't work, you can check to see if your switch is within - - - - - - - - diff --git a/config/inovelli/lzw30.xml b/config/inovelli/lzw30.xml index 357e6641dc..79870df39b 100644 --- a/config/inovelli/lzw30.xml +++ b/config/inovelli/lzw30.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/031E:0001:0004 images/inovelli/lzw30.png @@ -23,6 +23,9 @@ Please Note: If this doesn't work, you can check to see if your switch is within Adding Metadata + Add Instant On/Off Parameter + Clarifying which scenes are disabled with parameter 51 + Adding parameter 13 to manually specify the load if auto detection doesn't work @@ -81,6 +84,21 @@ Please Note: If this doesn't work, you can check to see if your switch is within Default: 0 + + + The default of the switch is to auto detect the load. In some situations you may want to try the option for a special load type. (firmware 1.17+) + + + + + + + Enables instant on (ie: disables the 700ms button delay). Note, if you disable the delay, it will also disable scene control except for the following: Up pres +sed, held, released, Down pressed, held, released & config button pressed. + + + + diff --git a/config/inovelli/lzw31-sn.xml b/config/inovelli/lzw31-sn.xml new file mode 100644 index 0000000000..959d7f0c5b --- /dev/null +++ b/config/inovelli/lzw31-sn.xml @@ -0,0 +1,255 @@ + + + http://www.openzwave.com/device-database/031E:0001:0001 + images/inovelli/lzw31-sn.png + https://products.z-wavealliance.org/products/3438 + https://inovelli.com/shop/smart-light-switches/zwave-smart-switches-gen2/pre-order-z-wave-dimmer-switch-no-neutral-required-scenes-notification/ + https://inovelli.com/shop/smart-light-switches/zwave-smart-switches-gen2/pre-order-z-wave-dimmer-switch-no-neutral-required-scenes-notification/ + To Exclude your switch, put your HUB in exclusion mode and press the Configuration Button three (3) times. + U.S. / Canada / Mexico + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3438/LZW31-SN%20Manual.pdf + You may factory reset the switch by holding down the Config Button for twenty (20) or more seconds. The LED Bar will turn Red and blink three (3) times to confirm. + +However, we recommend using a certified Z-Wave controller to remove the device from your network for factory resetting the switch. + +Only use either of these procedures in the event that the network primary controller is missing or otherwise inoperable. + + The Inovelli Red Series Dimmer is a Z-Wave in-wall dimmer that controls attached LED, CFL, & Incandescent lighting which can be highly customized to your liking at the switch itself with our unique config button and advanced firmware. The switch can also be used either with or without a neutral wire. In addition, the Red Series comes with advanced features such as scene support, power monitoring, notifications, local protection, etc. + LZW31-SN Dimmer + LZW31-SN + To include your switch, start the inclusion process on your HUB and tap the Configuration Button three (3) times. + +Please Note: If this doesn't work, you can check to see if your switch is within Z-Wave Range by holding down the Configuration Button for 5-10 seconds (if it's not within range, the LED Bar will indicate Red and if it is within Range, the LED Bar will indicate Green). If your switch indicates Red, please move the switch closer to the HUB. If your switch indicates Green, please try running an Exclusion to reset your switch. + + Initial Release + Update config for Firmware 1.47+ + Clarifying which scenes are disabled with parameter 51 + Fix maximum value for parameter 16 + Fixing value range for parameter 9 and 10 + + + + + + + This changes the speed in which the attached light 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-100 + Default: 3 + + + + + This changes the speed in which the attached light dims up or down when controlled from the physical switch. 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 101 should keep this in sync with parameter 1. + Range:0-101 + Default: 101 + + + + + This changes the speed in which the attached light 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 101 should keep this in sync with parameter 1. + Range:0-101 + Default: 101 + + + + + This changes the speed in which the attached light turns on or off from the physical switch. For example, when a user presses the up or down button, 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 101 should keep this in sync with parameter 1. + Range:0-101 + Default: 101 + + + + + The minimum level that the dimmer allows the bulb to be dimmed to. Useful when the user has an LED bulb that does not turn on or flickers at a lower level. + Range:1-45 + Default: 1 + + + + + The maximum level that the dimmer allows the bulb to be dimmed to. Useful when the user has an LED bulb that reaches its maximum level before the dimmer value of 99. + Range:55-99 + Default: 99 + + + + + Inverts the orientation of the switch. Useful when the switch is installed upside down. Essentially up becomes down and down becomes up. + Range: 0-1 + Default: 0 + + + + + + + Automatically turns the switch off after this many seconds. When the switch is turned on a timer is started that is the duration of this setting. When the timer expires, the switch is turned off. + Range:0-32767 + Default: 0 + + + + + Default level for the dimmer 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. 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 + + + + + The state the switch should return to once power is restored after power failure. 0 = off, 1-99 = level, 100=previous. + Range:0-100 + Default: 0 + + + + + When should the switch send commands to associated devices? 01 - local 02 - 3way 03 - 3way & local 04 - z-wave hub 05 - z-wave hub & local 06 - z-wave hub & 3-way 07 - z-wave hub & local & 3way 08 - timer 09 - timer & local 10 - timer & 3-way 11 - timer & 3-way & local 12 - timer & z-wave hub 13 - timer & z-wave hub & local 14 - timer & z-wave hub & 3-way 15 - all + Range: 0-15 + Default: 15 + + + + + This is the color of the LED strip. + Range: 0 to 255 + Default: 170 + + + + + This is the intensity of the LED strip. + Range: 0-10 + Default: 5 + + + + + + + + + + + + + + + + This is the intensity of the LED strip when the switch is off. This is useful for users to see the light switch location when the lights are off. + Range: 0-10 + Default: 1 + + + + + + + + + + + + + + + + Please see website for documentation. + Range: 0-100600575 + Default: 0 + + + + + When the LED strip is disabled (LED Strip Intensity is set to 0), this setting allows the LED strip to turn on temporarily while being adjusted. + Range: 0-10 + Default: 3 + + + + + + + + + + + + + + + + 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-32767 + Default: 3600 + + + + + The energy level change that will result in a new energy report being sent. The value is a percentage of the previous report. + Range:0-100 + Default: 10 + + + + + Configure the switch to use a neutral wire. + Range: 0-1 + Default: 1 + + + + + + + Configure the type of 3-way switch connected to the dimmer. + Range: 0-2 + Default: 0 + + + + + + + + Enables instant on (ie: disables the 700ms button delay). Note, if you disable the delay, it will also disable scene control except for the following: Up pres +sed, held, released, Down pressed, held, released & config button pressed. + + + + + + + + Optimize power output to be more compatible with smart bulbs. This prevents the dimmer from being able to dim and makes it act like an ON / OFF switch. (firmware 1.47+) + + + + + + + + + + + + + + + + + diff --git a/config/inovelli/lzw31.xml b/config/inovelli/lzw31.xml new file mode 100644 index 0000000000..9051a1e29c --- /dev/null +++ b/config/inovelli/lzw31.xml @@ -0,0 +1,225 @@ + + + http://www.openzwave.com/device-database/031E:0001:0003 + images/inovelli/lzw31.png + https://products.z-wavealliance.org/products/3442 + https://inovelli.com/shop/smart-light-switches/zwave-smart-switches-gen2/pre-order-z-wave-dimmer-switch-no-neutral-required/ + https://inovelli.com/shop/smart-light-switches/zwave-smart-switches-gen2/pre-order-z-wave-dimmer-switch-no-neutral-required/ + To Exclude your switch, put your HUB in exclusion mode and press the Configuration Button three (3) times. + U.S. / Canada / Mexico + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3442/LZW31%20Manual.pdf + You may factory reset the switch by holding down the Config Button for twenty (20) or more seconds. The LED Bar will turn Red and blink three (3) times to confirm. + +However, we recommend using a certified Z-Wave controller to remove the device from your network for factory resetting the switch. + +Only use either of these procedures in the event that the network primary controller is missing or otherwise inoperable. + + The Inovelli Dimmer has some amazing features such as a configuration button that allows you to change parameters without the need for a HUB. It also has an RGB LED bar that shows the dim level of the switch, the color and intensity can be changed and also has the ability to be off until the switch is manually dimmed. + LZW31 Dimmer + LZW31 + To include your switch, start the inclusion process on your HUB and tap the Configuration Button three (3) times. + +Please Note: If this doesn't work, you can check to see if your switch is within Z-Wave Range by holding down the Configuration Button for 5-10 seconds (if it's not within range, the LED Bar will indicate Red and if it is within Range, the LED Bar will indicate Green). If your switch indicates Red, please move the switch closer to the HUB. If your switch indicates Green, please try running an Exclusion to reset your switch. + + Initial Release + Update config for Firmware 1.47+ + Clarifying which scenes are disabled with parameter 51 + Fixing value range for parameter 9 and 10 + + + + + + + This changes the speed in which the attached light 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-100 + Default: 3 + + + + + This changes the speed in which the attached light dims up or down when controlled from the physical switch. 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 101 should keep this in sync with parameter 1. + Range:0-101 + Default: 101 + + + + + This changes the speed in which the attached light 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 101 should keep this in sync with parameter 1. + Range:0-101 + Default: 101 + + + + + This changes the speed in which the attached light turns on or off from the physical switch. For example, when a user presses the up or down button, 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 101 should keep this in sync with parameter 1. + Range:0-101 + Default: 101 + + + + + The minimum level that the dimmer allows the bulb to be dimmed to. Useful when the user has an LED bulb that does not turn on or flickers at a lower level. + Range:1-45 + Default: 1 + + + + + The maximum level that the dimmer allows the bulb to be dimmed to. Useful when the user has an LED bulb that reaches its maximum level before the dimmer value of 99. + Range:55-99 + Default: 99 + + + + + Inverts the orientation of the switch. Useful when the switch is installed upside down. Essentially up becomes down and down becomes up. + Range: 0-1 + Default: 0 + + + + + + + Automatically turns the switch off after this many seconds. When the switch is turned on a timer is started that is the duration of this setting. When the timer expires, the switch is turned off. + Range:0-32767 + Default: 0 + + + + + Default level for the dimmer 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. 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 + + + + + The state the switch should return to once power is restored after power failure. 0 = off, 1-99 = level, 100=previous. + Range:0-100 + Default: 0 + + + + + When should the switch send commands to associated devices? 01 - local 02 - 3way 03 - 3way & local 04 - z-wave hub 05 - z-wave hub & local 06 - z-wave hub & 3-way 07 - z-wave hub & local & 3way 08 - timer 09 - timer & local 10 - timer & 3-way 11 - timer & 3-way & local 12 - timer & z-wave hub 13 - timer & z-wave hub & local 14 - timer & z-wave hub & 3-way 15 - all + Range: 0-15 + Default: 15 + + + + + This is the color of the LED strip. + Range: 0 to 255 + Default: 170 + + + + + This is the intensity of the LED strip. + Range: 0-10 + Default: 5 + + + + + + + + + + + + + + + + This is the intensity of the LED strip when the switch is off. This is useful for users to see the light switch location when the lights are off. + Range: 0-10 + Default: 1 + + + + + + + + + + + + + + + + When the LED strip is disabled (LED Strip Intensity is set to 0), this setting allows the LED strip to turn on temporarily while being adjusted. + Range: 0-10 + Default: 3 + + + + + + + + + + + + + + + + Configure the switch to use a neutral wire. + Range: 0-1 + Default: 1 + + + + + + + Configure the type of 3-way switch connected to the dimmer. + Range: 0-2 + Default: 0 + + + + + + + + Enables instant on (ie: disables the 700ms button delay). Note, if you disable the delay, it will also disable scene control except for the following: Up pres +sed, held, released, Down pressed, held, released & config button pressed. + + + + + + + Optimize power output to be more compatible with smart bulbs. This prevents the dimmer from being able to dim and makes it act like an ON / OFF switch. (firmware 1.47+) + + + + + + + + + + + + + + + + + diff --git a/config/inovelli/lzw36.xml b/config/inovelli/lzw36.xml new file mode 100644 index 0000000000..148321b4bc --- /dev/null +++ b/config/inovelli/lzw36.xml @@ -0,0 +1,334 @@ + + + http://www.openzwave.com/device-database/031E:0001:000e + images/inovelli/lzw36.png + https://inovelli.com/red-series-fan-light-switch-z-wave/ + https://support.inovelli.com/portal/en/kb/inovelli/products/switches-fan-light-red-series-lzw36 + https://products.z-wavealliance.org/products/3902 + To Exclude your switch, put your HUB in exclusion mode, hold the light up or down button and press the Light on/off button three (3) times. + U.S. / Canada / Mexico + https://support.inovelli.com/portal/api/kbArticles/407409000002102001/attachments/kw8eq50c812f5d3344bc08295860b8b394c7c/content?portalId=edbsn8bb12d5f5a97d693e61ce4ce8a23f8b0e323eac44a6c2794f893e912acf005df&inline=true + You may factory reset the switch by holding down the light up or down button and the light on/off button for twenty (20) or more seconds. The LED Bar will turn Red and blink three (3) times to confirm. + + The Inovelli Red Series Fan/Light Switch is a 700 Series Z-Wave in-wall fan + light switch that controls both your fan motor and its attached LED, CFL, & Incandescent bulbs which can be highly customized to your liking at the switch itself with our unique config buttons and advanced firmware. In addition, the Red Series comes with advanced features such as scene support, power monitoring, notifications, local protection, etc. This is the first of its kind that allows homes that only have one wire coming from the fan to the light switch and uses both a light switch and canopy module. Inspired and worked on by our wonderful community. + LZW36 Fan/Light Dimmer + LZW36 + put your HUB in exclusion mode, hold the light up or down button and press the Light on/off button three (3) times. + +Please Note: If this doesn't work, you can check to see if your switch is within Z-Wave Range by holding down the Light Button for 5-10 seconds (if it's not within range, the LED Bar will indicate Red and if it is within Range, the LED Bar will indicate Green). If your switch indicates Red, please move the switch closer to the HUB. If your switch indicates Green, please try running an Exclusion to reset your switch. + + + Adding Metadata + Fix Config Parameters + Adding additional metadata + Adding parameter 51 for firmware 1.36+ + + + + + + + + + This changes the speed in which the attached light 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 + Default: 4 + + + + + + This changes the speed in which the attached light dims up or down when controlled from the physical switch. 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 1. + Range:0-99 + Default: 99 + + + + + + This changes the speed in which the attached light 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 1. + Range:0-99 + Default: 99 + + + + + + This changes the speed in which the attached light turns on or off from the physical switch. For example, when a user presses the up or down button, 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 1. + Range:0-99 + Default: 99 + + + + + + The minimum level that the dimmer allows the bulb to be dimmed to. Useful when the user has an LED bulb that does not turn on or flickers at a lower level. + Range:1-45 + Default: 1 + + + + + + The maximum level that the dimmer allows the bulb to be dimmed to. Useful when the user has an LED bulb that reaches its maximum level before the dimmer value of 99. + Range:55-99 + Default: 99 + + + + + + The minimum level that the dimmer allows the fan to be dimmed to. Useful when the user has a fan that does not turn at a lower level. + Range:1-45 + Default: 1 + + + + + + The maximum level that the dimmer allows the fan to be dimmed to. + Range:55-99 + Default: 99 + + + + + + Automatically turns the light switch off after this many seconds. When the switch is turned on a timer is started that is the duration of this setting. When the timer expires, the switch is turned off. + Range:0-32767 + Default: 0 + + + + + + Automatically turns the fan switch off after this many seconds. When the switch is turned on a timer is started that is the duration of this setting. When the timer expires, the switch is turned off. + Range:0-32767 + Default: 0 + + + + + + Default level for the dimmer 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:1-99 + Default: 0 + + + + + + Default level for the dimmer when it is powered on from a Z-Wave command. A setting of 0 means that the switch will return to the level that it was on before it was turned off. + Range:1-99 + Default: 0 + + + + + + Default level for the fan dimmer when it is powered on from the local switch. + Default: Last State + + + + + + + + + + Default level for the fan dimmer when it is powered on from the local switch. + Default: Last State + + + + + + + + + + The state the switch should return to once power is restored after power failure. 0 = off, 1-99 = level, 100=previous. + Range:0-100 + Default: 100 + + + + + + The state the switch should return to once power is restored after power failure. + Default: Off + + + + + + + + + + + This is the color of the Light LED strip represented as part of the HUE color wheel. Since the wheel has 360 values and this parameter only has 255, the following equation can be used to determine the color: value/255 * 360 = Hue color wheel value + Range: 0 to 255 + Default: 170 + + + + + + This is the intensity of the Light LED strip. + Range: 0-10 + Default: 5 + + + + + + This is the color of the Fan LED strip represented as part of the HUE color wheel. Since the wheel has 360 values and this parameter only has 255, the following equation can be used to determine the color: value/255 * 360 = Hue color wheel value + Range: 0 to 255 + Default: 170 + + + + + + This is the intensity of the Fan LED strip. + Range: 0-10 + Default: 5 + + + + + + This is the intensity of the Light LED strip when the switch is off. This is useful for users to see the light switch location when the lights are off. + Range: 0-10 + Default: 1 + + + + + + This is the intensity of the Fan LED strip when the switch is off. This is useful for users to see the light switch location when the lights are off. + Range: 0-10 + Default: 1 + + + + + + Please see website for documentation. + Byte 4: Effect - 0 = Off, 1 = Solid, 2 = Slow Blink, 3 = Fast Blink, 4 = Chase, 5 = Pulse + Byte 3: Duration - 1 to 60 = seconds, 61 to 120 minutes, 121 - 254 = hours, 255 = Indefinitely + Byte 2: Intensity - 0 to 9. 0 = dim, 9 = bright + Byte 1: Color - 0 - 255. Hue color wheel. value/255 * 360 = Hue color wheel value + Range: 0-100600319 + Default: 0 + + + + + + Please see website for documentation. + Byte 4: Effect - 0 = Off, 1 = Solid, 2 = Slow Blink, 3 = Fast Blink, 4 = Chase, 5 = Pulse + Byte 3: Duration - 1 to 60 = seconds, 61 to 120 minutes, 121 - 254 = hours, 255 = Indefinitely + Byte 2: Intensity - 0 to 9. 0 = dim, 9 = bright + Byte 1: Color - 0 - 255. Hue color wheel. value/255 * 360 = Hue color wheel value + Range: 0-100600319 + Default: 0 + + + + + + When the LED strip is disabled (Light LED Strip Intensity is set to 0), this setting allows the LED strip to turn on temporarily while being adjusted. + Range: 0-10 + Default: 3 + + + + + + + + + + + + + + + + + When the LED strip is disabled (Fan LED Strip Intensity is set to 0), this setting allows the LED strip to turn on temporarily while being adjusted. + Range: 0-10 + Default: 3 + + + + + + + + + + + + + + + + + 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-32767 + Default: 3600 + + + + + + The energy level change that will result in a new energy report being sent. The value is a percentage of the previous report. + Range:0-100 + Default: 10 + + + + + + Enable local protection on these buttons. 0 = none, 1 = light, 2 = fan, 3 = both. + + + + + + + + + + Enables instant on (ie: disables the 700ms button delay). Note, if you disable the delay, it will also disable scene control except for the following: Light on/off pressed, held, released, Fan on/off pressed, held, released & light up/down fan up/down pressed (firmware 1.36+). + + + + + + + + + + + + + + + + + + + diff --git a/config/inovelli/lzw40.xml b/config/inovelli/lzw40.xml new file mode 100644 index 0000000000..a687f28bc8 --- /dev/null +++ b/config/inovelli/lzw40.xml @@ -0,0 +1,39 @@ + + + http://www.openzwave.com/device-database/031E:0001:0007 + images/inovelli/lzw40.png + https://products.z-wavealliance.org/products/3657 + https://inovelli.com/shop/z-wave-smart-bulbs/z-wave-smart-bulb/ + https://inovelli.com/shop/z-wave-smart-bulbs/z-wave-smart-bulb/ + Put your HUB in Exclusion mode and turn the power to the bulb on/off/on. + U.S. / Canada / Mexico + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3657/LZW40%20-%20Manual%20(Compressed).pdf + You may power on/off the bulb 6x (between 0.5-2 seconds each time) until the bulb factory resets. + With 806 lumens and smooth dimming, this bulb has it all. Best part? It's powered by Z-Wave Plus technology. Imagine walking into a room, tapping a switch (hopefully Inovelli) and your ilumin lights come on to a beautiful movie scene. Or as you're winding down for the night, the lights gradually dim off as you drift to sleep. These are some of the many things you can do with smart bulbs and we're excited to be able to share them with you. + LZW40 Dimmable Bulb + LZW40 + Put your HUB in Inclusion mode and turn the power to the bulb on/off/on. + + Initial commit + + + + + + + When Power is restored + Range: 0-2 + Default: 0 + + + + + + + + + + + + + diff --git a/config/inovelli/lzw41.xml b/config/inovelli/lzw41.xml new file mode 100644 index 0000000000..f275b2d887 --- /dev/null +++ b/config/inovelli/lzw41.xml @@ -0,0 +1,56 @@ + + + http://www.openzwave.com/device-database/031E:0001:0006 + images/inovelli/lzw41.png + https://products.z-wavealliance.org/products/3614 + https://inovelli.com/shop/z-wave-smart-bulbs/z-wave-cct-smart-bulb/ + https://inovelli.com/shop/z-wave-smart-bulbs/z-wave-cct-smart-bulb/ + Put your HUB in Exclusion mode and turn the power to the bulb on/off/on. + U.S. / Canada / Mexico + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3614/LZW41%20Manual.pdf + You may power on/off the bulb 6x (between 0.5-2 seconds each time) until the bulb factory resets. + With 806 lumens, tunable white, and smooth dimming, this bulb has it all. Best part? It's powered by Z-Wave Plus technology. Imagine walking into a room, tapping a switch (hopefully Inovelli) and your ilumin lights come on to a beautiful movie scene. Or as you're winding down for the night, switch from cool white to warm and gradually dim off the lights as you drift to sleep. These are some of the many things you can do with smart bulbs and we're excited to be able to share them with you. + LZW41 Tunable White Bulb + LZW41 + Put your HUB in Inclusion mode and turn the power to the bulb on/off/on. + + Initial commit + Fix config parameter numbers + + + + + + + When Power is restored + Range: 0-2 + Default: 0 + + + + + + + + Changes the Kelvin from 2700k (1387) to 4999k (4999) + Range: 1387-4999 + Default: 2700 + + + + + Changes the Kelvin from 5000k (5000) to 6500k (6500) + Range: 5000-6500 + Default: 6500 + + + + + + + + + + + + diff --git a/config/inovelli/lzw42.xml b/config/inovelli/lzw42.xml new file mode 100644 index 0000000000..23d9d0683d --- /dev/null +++ b/config/inovelli/lzw42.xml @@ -0,0 +1,56 @@ + + + http://www.openzwave.com/device-database/031E:0001:0005 + images/inovelli/lzw42.png + https://products.z-wavealliance.org/products/3613 + https://inovelli.com/shop/z-wave-smart-bulbs/z-wave-rgbw-smart-bulb/ + https://inovelli.com/shop/z-wave-smart-bulbs/z-wave-rgbw-smart-bulb/ + Put your HUB in Exclusion mode and turn the power to the bulb on/off/on. + U.S. / Canada / Mexico + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3613/LZW42%20Manual.pdf + You may power on/off the bulb 6x (between 0.5-2 seconds each time) until the bulb factory resets. + With 806 lumens, millions of colors, tunable white, and smooth dimming, this bulb has it all. Best part? It's powered by Z-Wave Plus technology. Imagine walking into a room, tapping a switch (hopefully Inovelli) and your ilumin lights come on to a beautiful movie scene. Or as you're winding down for the night, switch from cool white to warm and gradually dim off the lights as you drift to sleep. These are some of the many things you can do with smart bulbs and we're excited to be able to share them with you. + LZW42 RGBW Bulb + LZW42 + Put your HUB in Inclusion mode and turn the power to the bulb on/off/on. + + Initial commit + Fix config parameter numbers + + + + + + + When Power is restored + Range: 0-2 + Default: 0 + + + + + + + + Changes the Kelvin from 2700k (1387) to 4999k (4999) + Range: 1387-4999 + Default: 2700 + + + + + Changes the Kelvin from 5000k (5000) to 6500k (6500) + Range: 5000-6500 + Default: 6500 + + + + + + + + + + + + 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/inovelli/lzw60.xml b/config/inovelli/lzw60.xml new file mode 100644 index 0000000000..d4dd2e372b --- /dev/null +++ b/config/inovelli/lzw60.xml @@ -0,0 +1,131 @@ + + + http://www.openzwave.com/device-database/031E:000d:0001 + images/inovelli/lzw60.png + https://products.z-wavealliance.org/products/3723 + https://inovelli.com/shop/smart-sensors/z-wave-4-in-1-sensor/ + https://inovelli.com/shop/smart-sensors/z-wave-4-in-1-sensor/ + To Exclude your switch, put your HUB in exclusion mode and press the Sensor Button on the back of the device one (1) time. + U.S. / Canada / Mexico + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3723/Inovelli%204-1%20Sensor%20Manual.pdf + Control and Monitor Temperature, Light, Motion, and Humidity with the 4 in 1 Sensor. + LZW60 4-in-1 Sensor + LZW60 + To include your switch, start the inclusion process on your HUB and Sensor Button on the back of the device one (1) time. + + + Initial Release + + + + + + + Value at which the sensor reports low battery to the gateway + Range:10-50 + Default: 10 + + + + + Change the sensitivity of the PIR (Motion) Sensor + 0 = off, 1 = Low sensitivity, 10 = High sensitivity + Default: 8 + + + + + The amount of seconds between motion detection (ie: the interval) + Range:5-15300 + Default: 30 + + + + + Should Basic Set Command be sent after PIR is triggered? This is used to turn other devices on/off when motion is detected. + Default: No + + + + + + + Ability to reverse the Basic Set behavior for devices associated in group 2 + Default: ON when motion is tripped, OFF when motion stops + + + + + + + The interval in which the temperature sensor is checked, in seconds. Set to 0 to disable (Note: will be rounded to the nearest minute) + Default: 7200 (2 hours) + + + + + The interval in which the humidity sensor is checked, in seconds. Set to 0 to disable (Note: will be rounded to the nearest minute) + Default: 7200 (2 hours) + + + + + The interval in which the luminance sensor is checked, in seconds. Set to 0 to disable (Note: will be rounded to the nearest minute) + Default: 7200 (2 hours) + + + + + The interval in which the battery level is checked, in seconds. Set to 0 to disable (Note: will be rounded to the nearest minute) + Default: 86400 (24 hours) + + + + + Sensor reports are only checked at the interval defined in parameters 101-104. Should the sensor data always be reported, or only if the value has changed more than the threshold configured in parameters 111-114? + Always: Send sensor data every interval, even if the value did not change. + Threshold: Send sensor data on interval, but only if the value has changed by more than the defined threshold since the last report was sent. + Default: Always + + + + + + + Set the temperature threshold of the sensor. If Sensor Report Method = "Threshold", the temperature change must exceed this value in order to be reported to the hub. + Range: 1-500 + 1 = 0.1 degrees Celcius, 500 = 50 degrees Celcuis + Default: 10 (1 degree Celcuis) + + + + + Set the humidity threshold of the sensor. If Sensor Report Method = "Threshold", the humidity change must exceed this value in order to be reported to the hub. + Range: 1-32, 1 = 1%, 32 = 32% + Default: 5% + + + + + Set the luminance threshold of the sensor (in lux). If Sensor Report Method = "Threshold", the luminance change must exceed this value in order to be reported to the hub. + Range: 1-65528 + Default: 150 + + + + + Set the battery threshold of the sensor (percent). If Sensor Report Method = "Threshold", the battery level change must exceed this value in order to be reported to the hub. + Range: 1-100 + Default: 10 + + + + + + + + + + + + diff --git a/config/inovelli/nzw30.xml b/config/inovelli/nzw30.xml index 048addafc4..2fe2fbff05 100644 --- a/config/inovelli/nzw30.xml +++ b/config/inovelli/nzw30.xml @@ -1,4 +1,10 @@ - + + + images/inovelli/nzw30.png + + Added pic + + diff --git a/config/kwikset/888.xml b/config/kwikset/888.xml new file mode 100644 index 0000000000..12b27b8a39 --- /dev/null +++ b/config/kwikset/888.xml @@ -0,0 +1,124 @@ + + + http://www.openzwave.com/device-database/0090:0541:0003 + images/kwikset/888.png + https://products.z-wavealliance.org/products/2176 + U.S. / Canada / Mexico + 888 + https://www.kwikset.com/products/detail/888-smartcode-electronic-deadbolt-with-z-wave-technology + Extend your smart home system to your current deadbolt, enabling your existing deadbolt to wirelessly communicate with your smart home or security system +Dramatically reduced, all-metal interior +Works with existing select single cylinder deadbolts + http://www.kwikset.com/Customer-Support/Overview.aspx + SmartCode 888 + + Initial Version + Add Config Params + + The electronic conversion kit remains asleep until an action occurs on the latch or a request is received from the RF side. +For the RF side, it will wake up every 1 second to check if there are any requests from your smart home controller. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2268/Install_Guide_914C_03_09_2017.pdf + Initiate the process to add the lock to your system at your smart home controller. +When prompted by your smart home system to add the lock, press button “A” on the lock interior one time. The red LED will illuminate when the lock enters Add Mode. +Please allow time for the controller to add the lock to your system. + Follow your smart home system’s instructions to remove the lock from the network. When prompted by the system, press button A” on the lock interior once. The red LED will illuminate when the lock enters Remove mode. + A factory reset will delete all user codes associated with the lock and will remove itself from your smart home system. +Please only perform a factory reset when the primary controller is missing or inoperable. + +To perform a factory reset, please perform the following: +1. Remove the battery pack +2. Press and HOLD the Program button while reinserting the battery pack. +3. Keep holding the button for 30 seconds until the lock beeps and the status LED flashes red. +4. Press the Program button once more. The status LED will flash green and red several times. +5. After a few seconds, the lock will initiate the door handing process. + + + + + The configuration parameters 33 and 34 are used to set and get the SKU part numbers. +The SKU is made up of 8 bytes. Each parameter consists of four bytes of data. +Parameter 33 contains the first four most significant bytes of the SKU, while parameter +34 contains the four least significant bytes of the SKU. +When setting the SKU, it must be done in two set commands, one for each parameter. +The order of programming the SKU does not matter. +Setting parameter 33 will program the first four bytes of the SKU. Setting parameter 34 +will program the last 4 bytes of the SKU. Most printable values are accepted for the set +command. +When getting the SKU, it must be done in two get commands, one for each parameter. +The order of getting the SKU does not matter. +Getting parameter 33 will retrieve the first four bytes of the SKU. Getting parameter 34 +will retrieve the last 4 bytes of the SKU. + + + + The Configuration Parameter 33 and 34 are used to set the SKU part numbers to the Kwikset locks. + Is the least four significant bytes (LSB). + + + + The configuration parameter 35 is a one byte field that will allow the user to get / set the +value for the Interior Status LED control. The value of 0 means that the setting is +disabled; whereas the value of 1 means that the setting is enabled. +Sending a set command with the default field set to 1 will cause the control to revert back +to its factory default setting. + + + The configuration parameter 36 uses 2 bytes that will allow the user to get / set the value +for the Auto Lock feature and timing for that feature. The first byte will be the +enable/disable byte. The value of 0 means that the setting is disabled; whereas the value +of 1 means that the setting is enabled. The next two bytes will be the timing for the Auto +Lock feature and should contain the number of seconds before the Auto Lock will occur. +The valid values are: 0 (default – 30 seconds), 30, 60, 90, 120, 180. For example, setting +the auto lock feature for 60 seconds, the two timing bytes should be: 0x003C. +Sending a set command with the default field set to 1 will cause the control to revert back +to its factory default settings. + + + + + + + + + The configuration parameter 37 is a one byte field that will allow the user to get / set the +value for the Audio feature. The value of 0 means that the setting is disabled; whereas +the value of 1 means that the setting is enabled. +Sending a set command with the default field set to 1 will cause the control to revert back +to its factory default setting. + + + + Reset to factory defaults + + + + + + The configuration parameter 47 uses 1 byte that will allow the user to get / set the value +to enable or disable the motor load alarm. Setting this byte to 0 will disable the alarm, +whereas setting this byte to 1 will enable the alarm. If a motor load alarm has been +activated and the alarm has been enabled, the alarm will be sent via the Power +Management group in the Notification Command Class as a Load Error (0x09). + + + + + + + + + + + + + + + + + + + + diff --git a/config/kwikset/910.xml b/config/kwikset/910.xml new file mode 100644 index 0000000000..dd606d0807 --- /dev/null +++ b/config/kwikset/910.xml @@ -0,0 +1,369 @@ + + + http://www.openzwave.com/device-database/0090:0001:0001 + images/kwikset/smartcode.png + https://products.z-wavealliance.org/products/945/ + U.S. / Canada / Mexico + 910 + http://www.kwikset.com/Products/Details/Electronic-Locks/910TRL-ZW-15-SMT.aspx + Weiser introduces the SmartCode™ 10 Touchpad Electronic Deadbolt with Z-Wave. + +10 digit backlit keypad with one touch locking +Dramatically reduced, all-metal interior +30 user codes plus master code +BHMA grade 2 certified +20 minute fire rating - UL certified +Full 128-bit encryption security +SmartKey: Re-key the lock in seconds + http://www.kwikset.com/Customer-Support/Overview.aspx + SmartCode 10 Touchpad Electronic Deadbolt + + Fixed TriggerRefresh Index to properly update lock status via Alarm Type. + + Even though the lock is sleeping, all buttons are active and can be used to initiate any lock activity. +For the RF side, it will wake up every 1 second to check if there are any requests from your smart home controller. + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/2369/Install Guide GED1800 04112017.pdf + Initiate the process to add the lock to your system at your smart home controller. +When prompted by your smart home system to add the lock, press button “A” on the lock interior one time. The red LED will illuminate when the lock enters Add Mode. +Please allow time for the controller to add the lock to your system. + Follow your smart home system’s instructions to remove the lock from the network. When prompted by the system, press button A” on the lock interior once. The red LED will illuminate when the lock enters Remove mode. + A factory reset will delete all user codes associated with the lock and will remove itself from your smart home system. +Please only perform a factory reset when the primary controller is missing or inoperable. + +To perform a factory reset, please perform the following: +1. Remove the battery pack +2. Press and HOLD the Program button while reinserting the battery pack. +3. Keep holding the button for 30 seconds until the lock beeps and the status LED flashes red. +4. Press the Program button once more. The status LED will flash green and red several times. +5. After a few seconds, the lock will initiate the door handing process. + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + Bit mask field that returns the state of the user accessible Dipswitches on the door look. + Bit 0 Lock LED Status (1: enable) + Bit 1 Auto lock (1: enable) + Bit 2 Auto Buzzer (1: enable) + Bit 3 Secure Screen (1: enable) *Only for MB 916 + + + + The Configuration Parameter 33 and 34 are used to set the SKU part numbers to the Kwikset locks. + Is the first four most significant bytes (MSB). + Below describes how Configuration Parameter 33 and 34 are being used. + * For a ZW Configuration Set, the DLM will first do a GET_SKU_ID to retrieve the full SKU from the lock, and the lock will respond with all 8 bytes. (If it not yet set, the DLM will consider that as all 0x30s.) + The DLM changes only the appropriate 4 bytes in its local copy of the SKU, and it then sends the full 8 bytes down to the lock in a SET_SKU_ID. + * For a ZW Configuration Get, the DLM will do a GET_SKU_ID down to the lock, to which the lock will respond with all 8 bytes. + The DLM will return the requested 4 bytes via ZW. If the SKU is not set, it will return all 0x30s (ASCII 0s). + + + + The Configuration Parameter 33 and 34 are used to set the SKU part numbers to the Kwikset locks. + Is the least four significant bytes (LSB). + + + + Unique ID of the lock type + 910 Z-Wave (Legacy, FW 3.4) 0x00 0x00 + 912 Z-Wave (Legacy, FW 3.2) 0x00 0x00 + 910 Z-Wave 0x02 0x36 + 912 Z-Wave 0x03 0x36 + 914 Z-Wave 0x04 0x36 + 916 Z-Wave 0x06 0x42 + + + + Reset to factory defaults + + + + + + + + + + + + + + + + + diff --git a/config/kwikset/914c.xml b/config/kwikset/914c.xml new file mode 100644 index 0000000000..5ea6fd5657 --- /dev/null +++ b/config/kwikset/914c.xml @@ -0,0 +1,81 @@ + + + http://www.openzwave.com/device-database/0090:0446:0003 + images/kwikset/914c.png + https://products.z-wavealliance.org/products/2268 + U.S. / Canada / Mexico + 914C + https://www.kwikset.com/products/detail/kwikset-convert-smart-lock-conversion-kit-with-z-wave-technology + Extend your smart home system to your current deadbolt, enabling your existing deadbolt to wirelessly communicate with your smart home or security system +Dramatically reduced, all-metal interior +Works with existing select single cylinder deadbolts + http://www.kwikset.com/Customer-Support/Overview.aspx + Convert Electronic Deadbolt + + Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2268/xml + Fixed index of alarm message to trigger lock status refresh + + The electronic conversion kit remains asleep until an action occurs on the latch or a request is received from the RF side. +For the RF side, it will wake up every 1 second to check if there are any requests from your smart home controller. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2268/Install_Guide_914C_03_09_2017.pdf + Initiate the process to add the lock to your system at your smart home controller. +When prompted by your smart home system to add the lock, press button “A” on the lock interior one time. The red LED will illuminate when the lock enters Add Mode. +Please allow time for the controller to add the lock to your system. + Follow your smart home system’s instructions to remove the lock from the network. When prompted by the system, press button A” on the lock interior once. The red LED will illuminate when the lock enters Remove mode. + A factory reset will delete all user codes associated with the lock and will remove itself from your smart home system. +Please only perform a factory reset when the primary controller is missing or inoperable. + +To perform a factory reset, please perform the following: +1. Remove the battery pack +2. Press and HOLD the Program button while reinserting the battery pack. +3. Keep holding the button for 30 seconds until the lock beeps and the status LED flashes red. +4. Press the Program button once more. The status LED will flash green and red several times. +5. After a few seconds, the lock will initiate the door handing process. + + + + + Bit mask field that returns the state of the user accessible Dipswitches on the door look. + Bit 0 Lock LED Status (1: enable) + Bit 1 Autolock (1: enable) + Bit 2 Buzzer (1: enable) + Bit 3 Handing Invert (1: enable) + + + + The Configuration Parameter 33 and 34 are used to set the SKU part numbers to the Kwikset locks. + Is the first four most significant bytes (MSB). + Below describes how Configuration Parameter 33 and 34 are being used. + * For a ZW Configuration Set, the DLM will first do a GET_SKU_ID to retrieve the full SKU from the lock, and the lock will respond with all 8 bytes. (If it not yet set, the DLM will consider that as all 0x30s.) + The DLM changes only the appropriate 4 bytes in its local copy of the SKU, and it then sends the full 8 bytes down to the lock in a SET_SKU_ID. + * For a ZW Configuration Get, the DLM will do a GET_SKU_ID down to the lock, to which the lock will respond with all 8 bytes. + The DLM will return the requested 4 bytes via ZW. If the SKU is not set, it will return all 0x30s (ASCII 0s). + + + + The Configuration Parameter 33 and 34 are used to set the SKU part numbers to the Kwikset locks. + Is the least four significant bytes (LSB). + + + + Reset to factory defaults + + + + + + + + + + + + + + + + + diff --git a/config/kwikset/916.xml b/config/kwikset/916.xml new file mode 100644 index 0000000000..33dbbec88f --- /dev/null +++ b/config/kwikset/916.xml @@ -0,0 +1,372 @@ + + + http://www.openzwave.com/device-database/0090:0001:0001 + images/kwikset/916.jpg + https://products.z-wavealliance.org/products/2188/ + U.S. / Canada / Mexico + 916 + https://www.kwikset.com/support/productdetail/916-smartcode-traditional-electronic-deadbolt-with-z-wave-technology + Kwikset®, the leader in residential security, introduces the SmartCode™ 916 Touchscreen Electronic Deadbolt with Z-Wave. + +Capacitive touchscreen +SecureScreen: Additional security by preventing fingerprint code detection +One touch locking +Dramatically reduced, all-metal interior +30 user codes plus master code +BHMA grade 2 certified +20 minute fire rating - UL certified +Full 128-bit encryption security +SmartKey: Re-key the lock in seconds + http://www.kwikset.com/Customer-Support/Overview.aspx + SmartCode 916 Touchscreen Electronic Deadbolt + + Initial Version + + + Even though the lock is sleeping, all buttons are active and can be used to initiate any lock activity. +For the RF side, it will wake up every 1 second to check if there are any requests from your smart home controller. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2188/Install_Guide_916_01_23_2017.pdf + Initiate the process to add the lock to your system at your smart home controller. +When prompted by your smart home system to add the lock, press button “A” on the lock interior one time. The red LED will illuminate when the lock enters Add Mode. +Please allow time for the controller to add the lock to your system. + Follow your smart home system’s instructions to remove the lock from the network. When prompted by the system, press button A” on the lock interior once. The red LED will illuminate when the lock enters Remove mode. + A factory reset will delete all user codes associated with the lock and will remove itself from your smart home system. +Please only perform a factory reset when the primary controller is missing or inoperable. + +To perform a factory reset, please perform the following: +1. Remove the battery pack +2. Press and HOLD the Program button while reinserting the battery pack. +3. Keep holding the button for 30 seconds until the lock beeps and the status LED flashes red. +4. Press the Program button once more. The status LED will flash green and red several times. +5. After a few seconds, the lock will initiate the door handing process. + https://products.z-wavealliance.org/products/2188/ + U.S. / Canada / Mexico + 916 + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + + set the User Code Type for their corresponding user codes. + + + + + + + + Bit mask field that returns the state of the user accessible Dipswitches on the door look. + Bit 0 Lock LED Status (1: enable) + Bit 1 Auto lock (1: enable) + Bit 2 Auto Buzzer (1: enable) + Bit 3 Secure Screen (1: enable) *Only for MB 916 + + + + The Configuration Parameter 33 and 34 are used to set the SKU part numbers to the Kwikset locks. + Is the first four most significant bytes (MSB). + Below describes how Configuration Parameter 33 and 34 are being used. + * For a ZW Configuration Set, the DLM will first do a GET_SKU_ID to retrieve the full SKU from the lock, and the lock will respond with all 8 bytes. (If it not yet set, the DLM will consider that as all 0x30s.) + The DLM changes only the appropriate 4 bytes in its local copy of the SKU, and it then sends the full 8 bytes down to the lock in a SET_SKU_ID. + * For a ZW Configuration Get, the DLM will do a GET_SKU_ID down to the lock, to which the lock will respond with all 8 bytes. + The DLM will return the requested 4 bytes via ZW. If the SKU is not set, it will return all 0x30s (ASCII 0s). + + + + The Configuration Parameter 33 and 34 are used to set the SKU part numbers to the Kwikset locks. + Is the least four significant bytes (LSB). + + + + Unique ID of the lock type + 910 Z-Wave (Legacy, FW 3.4) 0x00 0x00 + 912 Z-Wave (Legacy, FW 3.2) 0x00 0x00 + 910 Z-Wave 0x02 0x36 + 912 Z-Wave 0x03 0x36 + 914 Z-Wave 0x04 0x36 + 916 Z-Wave 0x06 0x42 + + + + Reset to factory defaults + + + + + + + + + + + + + + + + + diff --git a/config/kwikset/smartcode.xml b/config/kwikset/smartcode.xml index f511295c79..3426b3af0c 100644 --- a/config/kwikset/smartcode.xml +++ b/config/kwikset/smartcode.xml @@ -1,7 +1,7 @@ +--> http://www.openzwave.com/device-database/0090:0001:0001 images/kwikset/smartcode.png @@ -33,6 +33,7 @@ SmartKey: Re-key the lock in seconds Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2188/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2237/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2369/xml + Fixed TriggerRefresh Index to properly update lock status via Access Control. https://products.z-wavealliance.org/products/2188/ Even though the lock is sleeping, all buttons are active and can be used to initiate any lock activity. @@ -376,7 +377,7 @@ To perform a factory reset, please perform the following: Lock Status is Changed, but instead send a Alarm Message - So we trigger a Refresh of the DoorLock Command Class when we recieve a Alarm Message Instead --> - + diff --git a/config/leviton/dz15s.xml b/config/leviton/dz15s.xml index 8e03723bce..9a151fbde6 100644 --- a/config/leviton/dz15s.xml +++ b/config/leviton/dz15s.xml @@ -1,54 +1,50 @@ +--> http://www.openzwave.com/device-database/001D:0001:3401 images/leviton/dz15s.png https://products.z-wavealliance.org/products/1957/ When removing a device from a Z-Wave® network best practice is to use the exclusion command found in the Z-Wave® controller. -• Enter Programming Mode by holding the control button for 7 seconds, the Locator LED will turn amber. -• Follow directions in the Z-Wave® controller to enter exclusion mode. -• Tap the control button one time. The Locator LED will quickly flash green. -The Z-Wave® controller will exclude the Decora Smart device. +• Enter Programming Mode by holding the top of the paddle for 7 seconds, the Locator LED will blink amber. +• Follow directions in the Z-Wave® controller to enter exclusion mode +• Tap the top of the paddle one time. The Locator LED will quickly flash green. +The Z-Wave® controller will exclude the Decora Smart™ device • The Z-Wave® controller will confirm successful exclusion from the network. DZ15S - The wireless Leviton DZPA1 is a Z-Wave enabled plug-in outlet designed for use for most residential applications to control plug-in lamps, holiday lighting, or small appliances. The DZPA1 Plug-In Outlet is fully compatible with Z-Wave Plus certified controllers. Offers manual control to turn loads on/off. Manufacturer Parameters allow custom configuration via Z-Wave commands. Rated for 5A LED and CFL bulbs, 1800W incandescent bulbs, 1800W Fluorescent, 15A Resistive, and 1/2 HP Motor. These Z-Wave Plus devices support beaming, network wide inclusion, and over the air updates. - Leviton Decora SmartTM Z-Wave® devices support two methods of inclusion. -When using a Z-Wave PlusTM certified controller choose Network Wide Inclusion. + The wireless Leviton DZ15S is a Z-Wave enabled switch designed for use for most residential lighting applications to control LED, CFL, and incandescent bulbs. The DZ15S Switch is fully compatible with Z-Wave Plus certified controllers. Manufacturer Parameters allow custom configuration via Z-Wave commands. Offers manual control to turn lights on/off. Facilitates single pole or three-way multi-location applications. Rated for 600W LED and CFL bulbs, 1800W incandescent bulbs, 15A Fluorescent (at 120 VAC) and 8A (at 277 VAC), 15A Resistive, and 1/2 HP Motor. Requires neutral connection. These Z-Wave Plus devices support beaming, network wide inclusion, and over the air updates. White and Light Almond color faces included, Decora wallplate sold separately. + Leviton Decora Smart™ Z-Wave® devices support two methods of inclusion. When using a Z-Wave Plus® certified controller choose Network Wide Inclusion. Network Wide Inclusion: -Network Wide Inclusion allows your device to be added to the network using devices already in the network to assist with communication. Work your way from the closest devices to the controller outward. -• Enter Programming Mode by holding the control button for 7 seconds, the Locator LED will blink amber. -• Tap the control button one time. +Network Wide Inclusion allows your device to be included into the network using devices already in the network to assist with communication. Work your way from the closest devices to the controller outward. +• Enter Programming Mode by holding the top of the paddle for 7 seconds, the Locator LED will blink amber. +• Tap the top of the paddle one time. The Locator LED will quickly flash green. -• The Decora SmartTM Z-Wave® device is ready to learn into the Z-Wave® network. -• Follow directions in the Z-Wave® controller to complete the adding process. +• The Decora Smart™ Z-Wave® device is ready to learn into the Z-Wave® network. +• Follow directions in the Z-Wave controller to complete the adding process. • Upon successful addition to network the LED will turn off and then blink green 3 times. • If the adding process is not successful the LED will flash red 3 times. Traditional Inclusion: For older controllers Traditional Inclusion is supported. Depending on the age of the controller the controller will need to be 3 to 35 feet from the device when including. -• Enter Programming Mode by holding the control button for 7 seconds, the Locator LED will blink amber. +• Enter Programming Mode by holding the top of the paddle for 7 seconds, the Locator LED will blink amber. • The Decora SmartTM Z-Wave® device is ready to add to the Z-Wave® network. • Follow directions in the Z-Wave® controller to enter learn mode. -• Tap the control button one time. The Locator LED will quickly flash green. -The Z-Wave® controller will begin to pair with the Decora Smart device. +• Tap the top of the paddle one time. The Locator LED will quickly flash green. The Z-Wave® controller will begin to pair with the Decora Smart™ device. • Upon successful addition to the network the LED will turn off and then blink green 3 times. -• If the adding process is not successful the LED will flash red 3 times. - https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/1959/DI-000-DZPA1-02B-X4.pdf - When removing a device from a network it is best practice to use the Exclusion process. In situations where a device needs to be returned to factory default follow the following steps. A reset should only be used when a controller is inoperable or missing: -• Holding the control button for a total of 14 seconds. -- After the first 7 seconds the LED turns amber. -- The Locator LED will quickly flash red/amber after 14 seconds. -• Release the control button and the device will reset. - Plug-In Outlet +• If the adding process is not successful the LED will flash red 3 times. + + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/1957/DI-000-DZ15S-02A-X4.pdf + When removing a device from a network it is best practice to use the Exclusion process. In situations where a device needs to be returned to factory default follow the following steps. A reset should only be used when a controller is inoperable or missing. +• Hold the top of the paddle for a total of 14 seconds. +• After the first 7 seconds the LED turns amber. +• The Locator LED will quickly flash red/amber after 14 seconds. +• Release the top of the paddle and the device will reset. + Switch U.S. / Canada / Mexico - Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1957/xml - Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1959/xml + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1957/xml + Reverts to Revision 3 (before the changes making this almost the DZPA1) - https://products.z-wavealliance.org/products/1957/xml - https://products.z-wavealliance.org/products/1959/ - DZPA1 - U.S. / Canada / Mexico @@ -65,9 +61,4 @@ The Z-Wave® controller will begin to pair with the Decora Smart device. - - - false - - diff --git a/config/leviton/dzpa1.xml b/config/leviton/dzpa1.xml new file mode 100644 index 0000000000..99298dd83d --- /dev/null +++ b/config/leviton/dzpa1.xml @@ -0,0 +1,67 @@ + + + http://www.openzwave.com/device-database/001d:0001:3601 + images/leviton/dzpa1.png + https://products.z-wavealliance.org/products/1959/ + When removing a device from a Z-Wave® network best practice is to use the exclusion command found in the Z-Wave® controller. +• Enter Programming Mode by holding the control button for 7 seconds, the Locator LED will turn amber. +• Follow directions in the Z-Wave® controller to enter exclusion mode. +• Tap the control button one time. The Locator LED will quickly flash green. +The Z-Wave® controller will exclude the Decora Smart device. +• The Z-Wave® controller will confirm successful exclusion from the network. + DZPA1 + The wireless Leviton DZPA1 is a Z-Wave enabled plug-in outlet designed for use for most residential applications to control plug-in lamps, holiday lighting, or small appliances. The DZPA1 Plug-In Outlet is fully compatible with Z-Wave Plus certified controllers. Offers manual control to turn loads on/off. Manufacturer Parameters allow custom configuration via Z-Wave commands. Rated for 5A LED and CFL bulbs, 1800W incandescent bulbs, 1800W Fluorescent, 15A Resistive, and 1/2 HP Motor. These Z-Wave Plus devices support beaming, network wide inclusion, and over the air updates. + Leviton Decora SmartTM Z-Wave® devices support two methods of inclusion. +When using a Z-Wave PlusTM certified controller choose Network Wide Inclusion. +Network Wide Inclusion: +Network Wide Inclusion allows your device to be added to the network using devices already in the network to assist with communication. Work your way from the closest devices to the controller outward. +• Enter Programming Mode by holding the control button for 7 seconds, the Locator LED will blink amber. +• Tap the control button one time. +The Locator LED will quickly flash green. +• The Decora SmartTM Z-Wave® device is ready to learn into the Z-Wave® network. +• Follow directions in the Z-Wave® controller to complete the adding process. +• Upon successful addition to network the LED will turn off and then blink green 3 times. +• If the adding process is not successful the LED will flash red 3 times. +Traditional Inclusion: +For older controllers Traditional Inclusion is supported. Depending on the age of the controller the controller will need to be 3 to 35 feet from the device when including. +• Enter Programming Mode by holding the control button for 7 seconds, the Locator LED will blink amber. +• The Decora SmartTM Z-Wave® device is ready to add to the Z-Wave® network. +• Follow directions in the Z-Wave® controller to enter learn mode. +• Tap the control button one time. The Locator LED will quickly flash green. +The Z-Wave® controller will begin to pair with the Decora Smart device. +• Upon successful addition to the network the LED will turn off and then blink green 3 times. +• If the adding process is not successful the LED will flash red 3 times. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1959/DI-000-DZPA1-02B-X4.pdf + When removing a device from a network it is best practice to use the Exclusion process. In situations where a device needs to be returned to factory default follow the following steps. A reset should only be used when a controller is inoperable or missing: +• Holding the control button for a total of 14 seconds. +- After the first 7 seconds the LED turns amber. +- The Locator LED will quickly flash red/amber after 14 seconds. +• Release the control button and the device will reset. + Plug-In Outlet + U.S. / Canada / Mexico + + Fixed incomplete clone of DZ15S to DZPA1 - https://products.z-wavealliance.org/products/1959/xml + + https://products.z-wavealliance.org/products/1959/ + DZPA1 + U.S. / Canada / Mexico + + + + + Change the mode of the LED to Status Mode where the LED is illuminated when the load is On, Locator Mode where the LED is illuminated when the Load is Off, or turns off the LED completely for any other setting values. + + + + + + + + + + + + diff --git a/config/leviton/vrpa1.xml b/config/leviton/vrpa1.xml new file mode 100644 index 0000000000..eb49a6427b --- /dev/null +++ b/config/leviton/vrpa1.xml @@ -0,0 +1,41 @@ + + + http://www.openzwave.com/device-database/001D:0334:1805 + images/leviton/vrpa1.png + When removing a device from a Z-Wave® network best practice is to use the exclusion command found in the Z-Wave® controller. +• Enter Programming Mode by holding the control button for 7 seconds, the Locator LED will turn amber. +• Follow directions in the Z-Wave® controller to enter exclusion mode. +• Tap the control button one time. The Locator LED will quickly flash green. +The Z-Wave® controller will exclude the Decora Smart device. +• The Z-Wave® controller will confirm successful exclusion from the network. + VRPA1-15A + The Vizia RF + Scene Capable Plug-in Appliance Module is ideal for any residential setting where remote ON/OFF switching of appliances, motor loads up to 1/2 HP, or freestanding lights, including Incandescent, Magnetic Low Voltage, Fluorescent and Compact Fluorescent loads is needed. Typical applications include switching of fluorescent lamps, portable fans, kitchen appliances, indoor fountains and more. The Vizia RF + Scene Capable Plug-in Appliance Module also allows users to incorporate small appliances into scene and zone home control applications + 1. Plug in the unit + 2. Put your controller in inclusion mode + 3. Press the button on the front of the plug-in module + + 1. Plug in the unit + 1. Put your controller in exclusion mode + 2. Press the button on the front of the plug-in module + + + Plug-In Outlet + U.S. / Canada / Mexico + + Initial update based on dz15s, Leviton documentation, and CD-Jackson's Z-Wave Database + + https://products.z-wavealliance.org/products/1959/ + DZPA1 + U.S. / Canada / Mexico + + + + + + + + + + + + diff --git a/config/leviton/vrpd3.xml b/config/leviton/vrpd3.xml new file mode 100644 index 0000000000..102c4743bf --- /dev/null +++ b/config/leviton/vrpd3.xml @@ -0,0 +1,37 @@ + + + http://www.openzwave.com/device-database/001D:0334:1706 + images/leviton/vrpd3.png + VRPD3-1LW + The Vizia RF + Scene Capable Plug-in Lamp Dimming Module (VRPD3-1LW) is ideal for any residential setting where remote dimming of Incandescent loads up to 300 Watts CFL/LED loads up to 100W is needed. Typical applications include dimming of table and floor lamps. The Vizia RF + Scene Capable Plug-in Lamp Module also allows users to remotely control free-standing lamps individually or as part of a scene or zone grouping of lights through scene commands. + 1. Plug in Leviton VRPD3 +2. Place controller in inclusion mode +3. Press button on front of VRPD3 + +If successful, the VRPD3 LED will turn orange during inclusion and then green. The LED will flash red if it fails. + + 1. Place controller in exclusion mode +2. Press button on front of VRPD3 + +If successful, the VRPD3 LED will turn orange during exclusion and then green. The LED will flash red if it fails. + 1. Hold the control button for 5 seconds until the LED begins to flash amber +2. Continue holding the control button until the LED turns red +3. The plug-in dimmer module is reset + Scene Capable Plug-in Dimmer + U.S. / Canada / Mexico + + Initial update based on vrpa1, Leviton documentation, and CD-Jackson's Z-Wave Database + + https://products.z-wavealliance.org/products/1958 + + + + + + + + + + + + diff --git a/config/leviton/zw15r.xml b/config/leviton/zw15r.xml new file mode 100644 index 0000000000..9eec9af58c --- /dev/null +++ b/config/leviton/zw15r.xml @@ -0,0 +1,41 @@ + + + + http://www.openzwave.com/device-database/001D:0002:0037 + images/leviton/zw15r.png + https://products.z-wavealliance.org/products/3829/ + When removing an outlet from a network it is best practice to use the exclusion process. In situations where a device needs to be returned to factory default follow the following steps. A reset should only be used when a controller is inoperable or missing. 1. Hold the button for 7 seconds, the status light will turn amber. Continue holding the button for another 7 seconds (total of 14 seconds). The status light will quickly flash red/amber. 2. Release the button and the device will reset. + For older controllers Classic Inclusion is supported. Depending on the age of the controller the controller will need to be 3 to 35 feet from the device when including. 1. To enter programming mode, hold the button for 7 seconds. The status light will turn amber, release and the status light will blink. 2. Follow the Z-Wave controller instructions to enter exclusion mode. 3. Tap the top of the button one time. The status light will quickly flash green. 4. The Z-Wave controller will confirm successful exclusion from the network. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3829/Draft%20ZW4SF%203-25-20.pdf + ZW15R + Fan Speed Controller + 4 Speed Fan controller 120VAC. Compatible with pull chain ceiling fans without electronic control. White paddle and vanishing LEDs. Color change kits are available to change to Light Almond, Ivory, Black, Brown, Gray. + U.S. / Canada / Mexico + When removing an outlet from a Z-Wave network, best practice is to use the exclusion command found in the Z-Wave controller. 1. To enter programming mode, hold the button for 7 seconds. The status light will turn amber, release and the status light will blink. 2. Follow Z-Wave controller directions to enter exclusion mode 3. Tap the button 1 time. The status light will quickly flash green. 4. The Z-Wave controller will remove the device from the network + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3829/xml + + + + + + Change the mode of the LED to Status Mode where the LED is illuminated when the load is On, Locator Mode where the LED is illuminated when the Load is Off, or turns off the LED completely for any other setting values. + + + + + + + + + + + + + + false + + + diff --git a/config/leviton/zw4sf.xml b/config/leviton/zw4sf.xml new file mode 100644 index 0000000000..ea3c21ccd9 --- /dev/null +++ b/config/leviton/zw4sf.xml @@ -0,0 +1,62 @@ + + + + http://www.openzwave.com/device-database/001D:0002:0038 + images/leviton/zw4sf.png + https://products.z-wavealliance.org/products/3832/ + Factory Default When removing a fan speed controller from a network it is best practice to use the exclusion process. In situations where a device needs to be returned to factory default follow the following steps. A reset should only be used when a controller is inoperable or missing. 1. Hold the top of the paddle for 7 seconds, the status light will turn amber. Continue holding the top paddle for another 7 seconds (total of 14 seconds). The status light will quickly flash red/ amber. 2. Release the top of the paddle and the device will reset. + Classic Inclusion To A Z-Wave Network For older controllers Classic Inclusion is supported. Depending on the age of the controller the controller will need to be 3 to 35 feet from the device when including. 1. To enter programming mode, hold the button for 7 seconds. The status light will turn amber, release and the status light will blink. 2. Follow the Z-Wave controller instructions to enter inclusion mode. 3. Tap the top or the paddle of the paddle one time. The status light will quickly flash green. 4. The Z-Wave controller will confirm successful inclusion to the network. + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3832/Draft%20ZW4SF%203-25-20.pdf + ZW4SF + Fan Speed Controller + 4 Speed Fan controller 120VAC. Compatible with pull chain ceiling fans without electronic control. White paddle and vanishing LEDs. Color change kits are available to change to Light Almond, Ivory, Black, Brown, Gray. + U.S. / Canada / Mexico + Exclusion From A Z-Wave Network When removing an fan speed controller from a Z-Wave network, best practice is to use the exclusion command found in the Z-Wave controller. 1. To enter programming mode, hold the button for 7 seconds. The status light will turn amber, release and the status light will blink. 2. Follow Z-Wave controller directions to enter exclusion mode 3. Tap the the top of the paddle 1 time. The status light will quickly flash green. 4. The Z-Wave controller will remove the device from the network. + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3832/xml + + https://products.z-wavealliance.org/products/3382/ + U.S. / Canada / Mexico + ZW4SF + + + + + + Minimum Fan Speed level allowed + + + + + Maximum Fan Speed level allowed + + + + Preset Level for On + + + The length of time in seconds that the level indicators should stay illuminated after the dimming level is changed. A value of 0 means the indicator is always off, and a value of 255 means the indicators are always on. + + + + + Change the mode of the LED to Status Mode where the LED is illuminated when the load is On, Locator Mode where the LED is illuminated when the Load is Off, or turns off the LED completely for any other setting values. + + + + + + + + + + + + + + false + + + diff --git a/config/linear/LB60Z-1.xml b/config/linear/LB60Z-1.xml index dce4ec6a04..ead9c14ae2 100644 --- a/config/linear/LB60Z-1.xml +++ b/config/linear/LB60Z-1.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/014F:3038:4754 images/linear/LB60Z-1.png @@ -41,6 +41,7 @@ Note: If Inclusion still fails after the 2nd attempt, you need to first RESET th Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1290/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1291/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1414/xml + Updated Configuration Parameters from manufacturer's product data @@ -50,6 +51,16 @@ Note: If Inclusion still fails after the 2nd attempt, you need to first RESET th + + How much the bulb brightness will change. A low value (1) provides gradual dimming and brightening, a high value (99) makes it change rapidly. + + + + + How fast the bulb brightness will change. When the value is low (1), the step timing is quick. When the value is high (10), the step timing is slow. + + + diff --git a/config/linear/WT00Z5-1.xml b/config/linear/WT00Z5-1.xml new file mode 100644 index 0000000000..b4670aa2b2 --- /dev/null +++ b/config/linear/WT00Z5-1.xml @@ -0,0 +1,56 @@ + + + Smart 3-Way Switch/Dimmer + The WT00Z5-1 Wall Mount Accessory Dimmer Switch allows remote ON/OFF control and dimming of lights controlled by associated Z-Wave modules, creating virtual 3-way switches. The WT00Z5-1 controls no load directly, so it can be wired anywhere power is available, without the need for a traveler wire. + http://www.openzwave.com/device-database/014f:3530:5754 + https://www.gocontrol.com/detail.php?productId=1782 + https://www.gocontrol.com/support.php + images/linear/WT00Z5-1.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1888/10007350B%20.pdf + Refer to your Controller operating instructions to add this switch under the command of the Wireless Controller. +1. With your Controller in Discovery or Add Mode, tap the switch. The LED will blink slowly when in ADD Mode. +2. You should see an indication on your Controller that the “device was added” to the network and the LED will stop blinking. +3. The device will appear in the list of Switches. It should display as a switch. +If the Controller/Gateway shows the addition failed, repeat Steps 1-3. +NOTE: If you have trouble adding the WT00Z5-1 to a group it may be that the Home ID and Node ID were not cleared from it after testing. You must first “RESET UNIT” to remove it from the network. Although adding it to a group includes it in the network, removing it from a group does not remove it from the network. If removed from a group, it functions as a repeater (only). “RESET UNIT” removes it completely from the network. + The WT00Z5-1 can be removed from the network by the Controller/Gateway. Refer to the Controller operating instructions for details. +1. Set the Controller into Removal Mode and follow its instruction to delete the WT00Z5-1 from the Controller. +2. Remove the switch by tapping the paddle 2 times. The LED will begin blinking slowly for 10 seconds indicating that it has been removed. +3. You should see an indication on your Controller that the “device was removed” from the network. + In the event that your primary Controller is lost or otherwise inoperable, to reset the WT00Z5-1 and clear all network information, follow these steps: +1. Tap the top of the switch five (5) times. +2. Press and hold the bottom of the switch for 15 seconds. The LED will increasingly blink faster to indicate that a Reset is taking place. + https://products.z-wavealliance.org/products/1888 + U.S. / Canada / Mexico + WT00Z5-1 + + Initial entry with data obtained from https://products.z-wavealliance.org/products/1888 + + + + + + By default, the LED on the WT00Z5-1 will turn OFF when the Associated device is turned ON. + + + + + + + + + + Change the top of the switch to OFF and the bottom of the switch to ON. + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/logicsoft/ZDB5100.xml b/config/logicsoft/ZDB5100.xml new file mode 100644 index 0000000000..53276735d1 --- /dev/null +++ b/config/logicsoft/ZDB5100.xml @@ -0,0 +1,522 @@ + + + + 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). + http://www.openzwave.com/device-database/0234:0121:0003 + https://logic-group.com/products/matrix-switches/ + https://logic-group.com/contact/ + images/logicsoft/ZDB5100.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=Manuals/3399/MATRIX_ZDB5100_User_Manual_1_01-EN.pdf + MATRIX’add/remove function is initiated by pressing a single time on the smallpushbutton(I) in the middle of the module (under the tangent cover), and the LED’s inpushbutton1 will start blinking. + MATRIX’add/remove function is initiated by pressing a single time on the smallpushbutton(I) in the middle of the module (under the tangent cover), and the LED’s inpushbutton1 will start blinking. + MATRIX can be factory reset by holding the smallpushbutton(I) in the middle of the module under the tangent cover, for at least 10 seconds. + https://products.z-wavealliance.org/products/3399 + CEPT (Europe) + 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 + + + + + This parameter specifies the duration ofa full regulation of the light from 0% to 100%. + 0: Immediately. + 1-127: Durationin seconds (Default is 5 seconds). + 128-255: Duration in minutes (minus 127) from 1 –128 minutes, where 128 is 1 minute. + + + + + This parameter specifies the duration when turning the light on or off. + 0: Immediately. (Default). + 1-127: Time in seconds. + 128-255: Time in minutes (minus 127) from 1 –128 minutes, where 128 is 1 minute. + + + + The dimmer can work in three different modes: on/off, leading edge or trailing edge. + + + + + + This parameter specifies the actual level of the dimmer output when set to 0%. + + + This parameter specifies the actual level of the dimmer output when set to 99%. + + + This parameter can be used for disabling Central Scene notifications. + + + + + This parameter specifies the reaction when double-activating the pushbuttons. + + + + + + This parameter can be used for enabling the enhanced LED control. See document about MATRIX enhanced LED control. + + + + + + Pushbutton input debounce time in 0.01 seconds resolution. + 1-255: 1–2.55 seconds. Default is 5, which equals to a debounce-filter on 50 milliseconds (0.05 seconds). + + + + + Specifies the time that apushbuttonmust be activated before it is detected as pressed. Resolution is in 0.01 seconds. + 1-255: 1–2.55 seconds. Default is 20, which equals to 200 milliseconds (0.2 seconds). + + + + + Specifies the time that a pushbutton must have been activated before it is accepted as “held-down”. Resolution is 0.01 seconds. + 1-255: 1–2.55 seconds. Default is 50, which equals to 500 milliseconds (0,5 seconds). + + + + + Byte 1: Red brightness + 0-255 Brightness level for the red colour in the 4 indicator groups (Default is 255). + Byte 2: Green brightness + 0–255 Brightness level for the green colour in the 4 indicator groups (Default is 255). + Byte 3: Blue brightness + 0-255 Brightness level for the blue colour in the 4 indicator groups (Default is 255). + Byte 4: Not used–must be set to 0. + Default: 4294967040 + + + + This parameter specifies if commands are transmitted as a secure message for each of the association groups. + Bitmask: + 0: All messages in all groups are sent as insecure. + 1: Messages in association group 2 aresent as secure. + 2: Messages in association group 3 aresent as secure. + 4: Messages in association group 4 aresent as secure. + 8: Messages in association group 5 aresent as secure. + 16: Messages in association group 6 aresent as secure. + 32: Messages in association group 7 aresent as secure. + 64: Messages in association group 8 aresent as secure. + 128: Messages in association group 9 aresent as secure. + 256: Messages in association group 10 aresent as secure. + 512: Messages in association group 11 aresent as secure. + 1024: Messages in association group 12 aresent as secure. + 2048: Messages in association group 13 aresent as secure. + 4096: Messages in association group 14 aresent as secure. + 8191: Messages in allassociation groups are sent as secure. (Default) + + + + All messages in all groups are sent as insecure. + + + + Messages in association group 2 are sent as secure. + + + + Messages in association group 3 are sent as secure. + + + + Messages in association group 4 are sent as secure. + + + + Messages in association group 5 are sent as secure. + + + + Messages in association group 6 are sent as secure. + + + + Messages in association group 7 are sent as secure. + + + + Messages in association group 8 are sent as secure. + + + + Messages in association group 9 are sent as secure. + + + + Messages in association group 10 are sent as secure. + + + + Messages in association group 11 are sent as secure. + + + + Messages in association group 12 are sent as secure. + + + + Messages in association group 13 are sent as secure. + + + + Messages in association group 14 are sent as secure. + + + + Messages in all association groups are sent as secure. + + + + This parameter specifies the functionality of pushbutton 1. + + + + + + + + 0–43200: Specifies the time in seconds. Default is 300 = 5 minutes. + + + + Byte 1: Enable/ Disable + 0 Disabled – A single activation of the pushbutton will not send commands to devices in association group 4. + 1 Enabled – A single activation will send commands to devices in association group 4. Devices will receive commands with the values set in Byte 2 and 3 (Default). + Byte 2: Upper switch value + 0–99, 255 When single pressing the pushbutton for ON, a Multilevel Switch Set with this value will be send to devices in association group 4 (Default = 255). + Byte 3: Lower switch value + 0-99 When single pressing the pushbutton for OFF, a Multilevel Switch Set with this value will be send to devices in association group 4 (Default = 0). + Byte 4: Not used–must be set to 0. + Default: 33488896 + + + + This parameter specifies how received Binary Switch Setcommands are handled. + + + + + + This parameter specifies how the LED indication is controlled.. + + + + + + + + + + + This parameter specifies how received Binary Switch Set commands are handled. + + + + + + + Byte 1: Colour saturation, red + 0-255 Specifies the saturation for the red LEDs (Default is 0). + Byte 2: Colour saturation, green + 0–255 Specifies the saturation for the green LEDs (Default is 0). + Byte 3: Colour saturation, blue + 0-255 Specifies the saturation for the blue LEDs (Default is 127). + Byte 4: LED control + 0-255 LED indicator control - see the application note about this parameter (Default is 0). + Default: 32512 + + + + + Byte 1: Colour saturation, red + 0-255 Specifies the saturation for the red LEDs (Default is 47). + Byte 2: Colour saturation, green + 0–255 Specifies the saturation for the green LEDs (Default is 47). + Byte 3: Colour saturation, blue + 0-255 Specifies the saturation for the blue LEDs (Default is 47). + Byte 4: LED control + 0-255 LED indicator control - see the application note about this parameter (Default is 0). + Default: 50065152 + + + + This parameter specifies the functionality of pushbutton 2. + + + + + + + + 0–43200: Specifies the time in seconds. Default is 300 = 5 minutes. + + + + Byte 1: Enable/ Disable + 0 Disabled – A single activation of the pushbutton will not send commands to devices in association group 4. + 1 Enabled – A single activation will send commands to devices in association group 4. Devices will receive commands with the values set in Byte 2 and 3 (Default). + Byte 2: Upper switch value + 0–99, 255 When single pressing the pushbutton for ON, a Multilevel Switch Set with this value will be send to devices in association group 4 (Default = 255). + Byte 3: Lower switch value + 0-99 When single pressing the pushbutton for OFF, a Multilevel Switch Set with this value will be send to devices in association group 4 (Default = 0). + Byte 4: Not used–must be set to 0. + Default: 33488896 + + + + This parameter specifies how received Binary Switch Set commands are handled. + + + + + + This parameter specifies how the LED indication is controlled.. + + + + + + + + + + + This parameter specifies how received Binary Switch Setcommands are handled. + + + + + + + Byte 1: Colour saturation, red + 0-255 Specifies the saturation for the red LEDs (Default is 0). + Byte 2: Colour saturation, green + 0–255 Specifies the saturation for the green LEDs (Default is 0). + Byte 3: Colour saturation, blue + 0-255 Specifies the saturation for the blue LEDs (Default is 127). + Byte 4: LED control + 0-255 LED indicator control - see the application note about this parameter (Default is 0). + Default: 32512 + + + + + Byte 1: Colour saturation, red + 0-255 Specifies the saturation for the red LEDs (Default is 47). + Byte 2: Colour saturation, green + 0–255 Specifies the saturation for the green LEDs (Default is 47). + Byte 3: Colour saturation, blue + 0-255 Specifies the saturation for the blue LEDs (Default is 47). + Byte 4: LED control + 0-255 LED indicator control - see the application note about this parameter (Default is 0). + Default: 50065152 + + + + This parameter specifies the functionality of pushbutton 3. + + + + + + + + 0–43200: Specifies the time in seconds. Default is 300 = 5 minutes. + + + + Byte 1: Enable/ Disable + 0 Disabled – A single activation of the pushbutton will not send commands to devices in association group 4. + 1 Enabled – A single activation will send commands to devices in association group 4. Devices will receive commands with the values set in Byte 2 and 3 (Default). + Byte 2: Upper switch value + 0–99, 255 When single pressing the pushbutton for ON, a Multilevel Switch Set with this value will be send to devices in association group 4 (Default = 255). + Byte 3: Lower switch value + 0-99 When single pressing the pushbutton for OFF, a Multilevel Switch Set with this value will be send to devices in association group 4 (Default = 0). + Byte 4: Not used–must be set to 0. + Default: 33488896 + + + + This parameter specifies how received Binary Switch Set commands are handled. + + + + + + This parameter specifies how the LED indication is controlled.. + + + + + + + + + + + This parameter specifies how received Binary Switch Setcommands are handled. + + + + + + + Byte 1: Colour saturation, red + 0-255 Specifies the saturation for the red LEDs (Default is 0). + Byte 2: Colour saturation, green + 0–255 Specifies the saturation for the green LEDs (Default is 0). + Byte 3: Colour saturation, blue + 0-255 Specifies the saturation for the blue LEDs (Default is 127). + Byte 4: LED control + 0-255 LED indicator control - see the application note about this parameter (Default is 0). + Default: 32512 + + + + + Byte 1: Colour saturation, red + 0-255 Specifies the saturation for the red LEDs (Default is 47). + Byte 2: Colour saturation, green + 0–255 Specifies the saturation for the green LEDs (Default is 47). + Byte 3: Colour saturation, blue + 0-255 Specifies the saturation for the blue LEDs (Default is 47). + Byte 4: LED control + 0-255 LED indicator control - see the application note about this parameter (Default is 0). + Default: 50065152 + + + + This parameter specifies the functionality of pushbutton 4. + + + + + + + + 0–43200: Specifies the time in seconds. Default is 300 = 5 minutes. + + + + Byte 1: Enable/ Disable + 0 Disabled – A single activation of the pushbutton will not send commands to devices in association group 4. + 1 Enabled – A single activation will send commands to devices in association group 4. Devices will receive commands with the values set in Byte 2 and 3 (Default). + Byte 2: Upper switch value + 0–99, 255 When single pressing the pushbutton for ON, a Multilevel Switch Set with this value will be send to devices in association group 4 (Default = 255). + Byte 3: Lower switch value + 0-99 When single pressing the pushbutton for OFF, a Multilevel Switch Set with this value will be send to devices in association group 4 (Default = 0). + Byte 4: Not used–must be set to 0. + Default: 33488896 + + + + This parameter specifies how received Binary Switch Set commands are handled. + + + + + + This parameter specifies how the LED indication is controlled.. + + + + + + + + + + + This parameter specifies how received Binary Switch Setcommands are handled. + + + + + + + Byte 1: Colour saturation, red + 0-255 Specifies the saturation for the red LEDs (Default is 0). + Byte 2: Colour saturation, green + 0–255 Specifies the saturation for the green LEDs (Default is 0). + Byte 3: Colour saturation, blue + 0-255 Specifies the saturation for the blue LEDs (Default is 127). + Byte 4: LED control + 0-255 LED indicator control - see the application note about this parameter (Default is 0). + Default: 32512 + + + + + Byte 1: Colour saturation, red + 0-255 Specifies the saturation for the red LEDs (Default is 47). + Byte 2: Colour saturation, green + 0–255 Specifies the saturation for the green LEDs (Default is 47). + Byte 3: Colour saturation, blue + 0-255 Specifies the saturation for the blue LEDs (Default is 47). + Byte 4: LED control + 0-255 LED indicator control - see the application note about this parameter (Default is 0). + Default: 50065152 + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/manufacturer_specific.xml b/config/manufacturer_specific.xml index a4ad0563b7..a437a63316 100644 --- a/config/manufacturer_specific.xml +++ b/config/manufacturer_specific.xml @@ -1,5 +1,5 @@ - + @@ -18,13 +18,17 @@ + + - + + + @@ -84,11 +88,11 @@ - - - - - + + + + + @@ -206,6 +210,7 @@ + @@ -215,7 +220,22 @@ + + + + + + + + + + + + + + + @@ -255,14 +275,14 @@ - + - + @@ -272,6 +292,9 @@ + + + @@ -332,7 +355,9 @@ - + + + @@ -363,7 +388,7 @@ - + @@ -380,6 +405,7 @@ + @@ -397,6 +423,7 @@ + @@ -415,7 +442,7 @@ - + @@ -429,6 +456,9 @@ + + + @@ -469,6 +499,9 @@ + + + @@ -480,7 +513,9 @@ - + + + @@ -499,6 +534,8 @@ + + @@ -523,10 +560,8 @@ - - - - + + @@ -534,7 +569,7 @@ - + @@ -572,6 +607,7 @@ + @@ -585,12 +621,14 @@ + + - - - + + + @@ -598,6 +636,8 @@ + + @@ -607,6 +647,8 @@ + + @@ -625,6 +667,8 @@ + + @@ -632,8 +676,8 @@ + - @@ -647,7 +691,10 @@ + + + @@ -662,10 +709,12 @@ + + @@ -678,6 +727,7 @@ + @@ -686,11 +736,16 @@ + + + + + @@ -704,15 +759,20 @@ + + + + + @@ -732,6 +792,7 @@ + @@ -748,6 +809,9 @@ + + + @@ -755,7 +819,9 @@ - + + + @@ -765,21 +831,29 @@ + + + + + + + + @@ -803,12 +877,8 @@ - - - - - - + + @@ -824,7 +894,10 @@ - + + + + @@ -843,6 +916,7 @@ + @@ -863,6 +937,8 @@ + + @@ -890,15 +966,17 @@ + - - - + + + + @@ -907,6 +985,15 @@ + + + + + + + + + @@ -961,6 +1048,7 @@ + @@ -979,6 +1067,14 @@ + + + + + + + + @@ -1026,11 +1122,20 @@ - - + + + + + + + + + - + + + @@ -1058,7 +1163,7 @@ - + @@ -1067,7 +1172,11 @@ - + + + + + @@ -1098,6 +1207,7 @@ + @@ -1109,6 +1219,7 @@ + @@ -1134,29 +1245,37 @@ + - + + + + + + + - + - + + @@ -1191,6 +1310,15 @@ + + + + + + + + + @@ -1199,6 +1327,9 @@ + + + @@ -1208,6 +1339,7 @@ + @@ -1284,9 +1416,12 @@ + - + + + @@ -1298,6 +1433,7 @@ + @@ -1331,7 +1467,14 @@ - + + + + + + + + @@ -1362,7 +1505,9 @@ - + + + @@ -1407,6 +1552,7 @@ + @@ -1417,9 +1563,16 @@ + + + + + + + @@ -1489,36 +1642,54 @@ + + + + + + + + + + + + + + + + - + + + @@ -1540,6 +1711,7 @@ + @@ -1578,6 +1750,11 @@ + + + + + @@ -1595,8 +1772,16 @@ + + + + + + + + @@ -1616,11 +1801,15 @@ + + + + @@ -1644,14 +1833,29 @@ - + + + + + + + + + + + + + + + + @@ -1669,7 +1873,10 @@ - + + + + @@ -1750,17 +1957,6 @@ - - - - - - - - - - - @@ -1769,9 +1965,16 @@ + + + + - + + + + @@ -1783,6 +1986,7 @@ + @@ -1817,7 +2021,7 @@ - + @@ -1841,28 +2045,41 @@ + + + + - - - - - - - + + - - - - - + + + + + + + + + + + + + + + + + + + @@ -1871,7 +2088,7 @@ - + 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/mh8fceu0803.xml b/config/mcohome/mh8fceu0803.xml new file mode 100755 index 0000000000..b637d8b8fa --- /dev/null +++ b/config/mcohome/mh8fceu0803.xml @@ -0,0 +1,56 @@ + + + + MH8-FC + Fan Coil Thermostat MH8 is a Z-Wave Plus enabled device for indoor temperature control. + +It is mainly applied to a 2-pipe Fan coil system. + +It can read room temperature and local time, + +and automatically control fan speed based on the temperature difference. + +The device is of high reliability and practicability. + +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:0803 + http://www.mcohome.com/ProductDetail/3894174.html + http://www.mcohome.com/ProductDetail/3894174.html + images/mcohome/mh8fceu0803.png + http://www.mcohome.com/index.php?c=Front/DownDetail&a=downloadFujian&name=MH8-FC%20/%20MH8-FC4&path=L2NvbWRhdGEvOTUzMDEvcHJvZHVjdGZ1amlhbi8yMDIwMDYwMzE1MDQwNjVlZDc0YjY2MjRmODkucGRm + mh8fceu + + Initial Metadata Import + + + + + 0 + false + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/mcohome/mh9co2.xml b/config/mcohome/mh9co2.xml index 1c24ec2202..c437d938cc 100644 --- a/config/mcohome/mh9co2.xml +++ b/config/mcohome/mh9co2.xml @@ -1,11 +1,23 @@ - + CO2 Notification threshold 1 to 2000ppm + + 0 report disabled, base on 5ppm unit, 10 by default, 10*5ppm=50ppm + + + 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/mcohome/mhs220.xml b/config/mcohome/mhs220.xml new file mode 100644 index 0000000000..8885a18f78 --- /dev/null +++ b/config/mcohome/mhs220.xml @@ -0,0 +1,42 @@ + + + + + + + Switch state saved or not when power down. 0 = not saved, 1 = saved + + + External switch type. 0 = button, 1 = toggle (2 state switches) + + + 2-state switches: 0 = toggle switch without specific position, 1 = toggle with specific on/off positions + + + Report from Switch 1 to Association Group 1 + + + OFF timer + + + Timing function + + + Operation mode of Switch 1 + + + Operation report from Switch 2 to Association Group 2 + + + Factory setting + + + + + + + + + + + diff --git a/config/mcohome/mhs513.xml b/config/mcohome/mhs513.xml index cad9d94025..f78d92064f 100644 --- a/config/mcohome/mhs513.xml +++ b/config/mcohome/mhs513.xml @@ -1,11 +1,294 @@ - + + + MH-S513 Touch Panel Switch + MCOHome Touch Panel Switch is a wall panel built-in with Z-Wave Plus module. It supports basic command class, association command class, which can control all associated devices synchronously. 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:0103 + http://www.openzwave.com/device-database/015f:5103:5131 + http://www.mcohome.com/ProductDetail/3894278.html + images/mcohome/mhs513.png + Press and hold any key on the panel for 8 seconds or 3 clicks in quick succession. Note: If inclusion is successful, all INDICATION LEDs on the panel will flash 4 times. + Press and hold any key on the panel for 8 seconds or 3 clicks in quick succession. Note: If the exclusion is successful, all INDICATION LEDs on the panel will flash 4 times. The exclusion will delete all association data. + Write 0x55 to Configuration Parameter Index 255, or Press 20 times of any button or exclude the device from Z-Wave network, the factory setting will be restored. + US / Canada / Mexico + Australia / New Zealand + MH-S513-US + MH-S513-AU + + Add AU frequency and update Configuration + + - + Switch state saved or not when power down - - + + + + + All On / All Off + + + + + + + 0 = Off; 1 - 10 = Minimum - Maximum brightness level + + + + Key Mode + This function works for corridor or stairwell situation. + + + + + + + + + + + + Key On duration + 0 = infinite + 1 - 65535 = on duration in seconds + + + + + Basic CC integration setting + This parameter works for integration with different gateways/systems. If you do not know how to use, please keep as default. + + + + + + + + + Key Mode + This function works for corridor or stairwell situation. + + + + + + + + + + + + Key Mode + This function works for corridor or stairwell situation. + + + + + + + + + + + + Key Mode + This function works for corridor or stairwell situation. + + + + + + + + + + + All On / All Off + + + + + All On / All Off + + + + + Scene response + + + Key 1 scene response + + + + Key 2 scene response + + + + Key 3 scene response + + + + Key 1 Scene response + + + + + + + + Key1 Activate Scene ID + 0 = Scene ID is invalid and will not send scene activate command. + 1 - 255 = Scene ID + + + + + Key1 Activate Scene Duration + 0 = Instantly + 1 - 127 = Dimming durations from 1 second (1 | 0x01) to 127 seconds (127 | 0x7F) in 1-second resolution + 128 - 254 = Dimming durations from 1 minute (128 | 0x80) to 127 minutes (254 | 0xFE) in 1-minute resolution + + + + Key 2 Scene response + + + + + + + + Key2 Activate Scene ID + 0 = Scene ID is invalid and will not send scene activate command. + 1 - 255 = Scene ID + + + + + Key2 Activate Scene Duration + 0 = Instantly + 1 - 127 = Dimming durations from 1 second (1 | 0x01) to 127 seconds (127 | 0x7F) in 1-second resolution + 128 - 254 = Dimming durations from 1 minute (128 | 0x80) to 127 minutes (254 | 0xFE) in 1-minute resolution + + + + Key 3 Scene response + + + + + + + + Key3 Activate Scene ID + 0 = Scene ID is invalid and will not send scene activate command. + 1 - 255 = Scene ID + + + + + Key3 Activate Scene Duration + 0 = Instantly + 1 - 127 = Dimming durations from 1 second (1 | 0x01) to 127 seconds (127 | 0x7F) in 1-second resolution + 128 - 254 = Dimming durations from 1 minute (128 | 0x80) to 127 minutes (254 | 0xFE) in 1-minute resolution + + + + + Scene response ID 1 - 50 + Valid only when the default is 0 (0x00) for Scene response (parameter 16 | 0x10) + + + + Key 1 scene response + + + + Key 2 scene response + + + + Key 3 scene response + + + + + Scene response ID 51 - 100 + Valid only when the default is 0 (0x00) for Scene response (parameter 16 | 0x10) + + + + Key 1 scene response + + + + Key 2 scene response + + + + Key 3 scene response + + + + + Scene response ID 101 - 150 + Valid only when the default is 0 (0x00) for Scene response (parameter 16 | 0x10) + + + + Key 1 scene response + + + + Key 2 scene response + + + + Key 3 scene response + + + + + Scene response ID 151 - 200 + Valid only when the default is 0 (0x00) for Scene response (parameter 16 | 0x10) + + + + Key 1 scene response + + + + Key 2 scene response + + + + Key 3 scene response + + + + + Scene response ID 201 - 250 + Valid only when the default is 0 (0x00) for Scene response (parameter 16 | 0x10) + + + + Key 1 scene response + + + + Key 2 scene response + + + + Key 3 scene response + + + + Restore factory setting + + @@ -17,10 +300,10 @@ - - - - + + + + diff --git a/config/namron/1402756.xml b/config/namron/1402756.xml new file mode 100644 index 0000000000..551d38e1db --- /dev/null +++ b/config/namron/1402756.xml @@ -0,0 +1,84 @@ + + + + + Namron LED Dimmer Z-Wave 200W + LED Z-Wave dimmer with smart functionality and power consumption tackle most conditions such as LED, halogen or electronic transformer. Possibility of wireless control via central unit / gateway or pulse control by direct connection. +Technical description + +A trailing edge dimmer, for use with 230V Halogen, 230V LED and electronic transformers. Has built-in short cut protection in case of lamp failure. Only need L-conductor connected. + images/namron/1402756.png + Double click on the reset button + Double click on the reset button + Hold reset button for >5 secs + 1402756 + + Handcrafted based on domoticz/Config/config-template.xml and Vendors product manual + Add Product Pic + + + + + + + + Saving state before power failure. + Default Not saved. + + + + + + + Enable/disable to send notification to the Group Lifeline when the load state changed. + When value set as 1, re-power on the dimmer, it will send Basic report automatically. + Default Enabled. + + + + + + Dimming speed in seconds. Valid values is 0-100. + Default 5. + + + + + Enable or Disable external switch to pair network + + + + + + + Set the Dimming mode to be Linear or Logaritmic + + + + + + Setting brightness when turn on dimmer from off status. + Setting of 0 means that the dimmer will use parameter 1. + Valid values: 0-99 + + + + + Setting delay time in seconds when load is turned off. + Valid values : 0-60 seconds + + + + + + + + + + + + + diff --git a/config/namron/4512710.xml b/config/namron/4512710.xml new file mode 100644 index 0000000000..417182469b --- /dev/null +++ b/config/namron/4512710.xml @@ -0,0 +1,88 @@ + + + + Namron Z-Wave Dimmer 400W + + The in-wall dimmer is a Z-Wave device that is used to switch ON/OFF and adjust light intensity of the connected light. + + images/namron/4512710.png + Triple click on the reset button or repower the device + Triple click on the reset button + Press and hold reset button for 10 seconds + 4512710 + + Handcrafted based on namron/1402756.xml and Vendors product manual + + + + + + + + Saving state before power failure. + + + + + + + + Enable/disable to send the basic report to the Lifeline when the load state changed(When value set as 1, repower on the dimmer, it will send Basic report automatically) + + + + + + + Default fade time (unit is second, this value has the same function as Duration of Multilevel). + Valid value: 0~127 + + + + + Setting minimum brightness value. + Valid value: 0~50, the bigger the value is, the higher the load’s minimum brightness is. + + + + + Choose MOSFET driving type. + + + + + + + Added to and removed from a network through external + switch (when enables this function, triple press the external + switch within 1.5 seconds to be added to or removed from a + network) + + + + + + + Setting dimming curve + + + + + + + Setting startup brightness of the load + Valid value: 0~99 + Note: every time when turn on the load from OFF status, if the + target brightness is lower than the startup brightness, the + brightness will first go to the startup brightness value then + fall down to the target brightness + + + + + + + + + + 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/4512714.xml b/config/namron/4512714.xml new file mode 100644 index 0000000000..ce946db57d --- /dev/null +++ b/config/namron/4512714.xml @@ -0,0 +1,84 @@ + + + + + Namron Z-Wave 4 Channel Wall Remote K8 + 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 included into a Z-Wave network. It also + supports the Over The Air (OTA) feature for the product’s firmware upgrade. + + The remote control has following functions: + 1. Control of groups of other Z-Wave devices using 'ON', 'OFF' and Dim commands. + 2. Activation of scenes in Gateway mode. + + The encryption modes that the remote control supports are S0, S2 Authenticated, S2 Unauthenticated. When + the remote control is being included into a Z-Wave network, you can use your primary controller/gateway to + enable one encryption mode or disable encryption. (The primary controller/gateway shall support + encryption mode configuration). + + XX http://www.openzwave.com/device-database/0438:a305:0300 + https://www.namron.com/products/namron-z-wave-4-kanaler-bryter-k8-854/ + https://www.namron.com/contact/ + images/namron/4512714.jpg + https://www.elektroimportoren.no/docs/lib/4512714-Brukerveiledning-5.pdf + The remote control is under sleepy mode for most of the time to save battery power. It can not receive wireless + command under sleepy mode. Before the gateway interacts data with the remote, the remote control shall be + activated manually first. Short press any button to activate the remote control for 3s, and press and hold down + I and O buttons of Group 2 over 1 second to activate the remote control + Step 1. Make sure the remote control does not belong to any Z-Wave network, short press any button, if LED + indicator does not turn on, the remote control does not belong to any network, then continue step 2,if LED indicator turns on, it means the remote + control has already been included to a network, please first set the remote control to exclusion mode (refer to the part Exclusion"" of this manual), + then continue step 2. + + Step 2. Set primary controller/gateway into inclusion mode (Please refer to your primary controllers manual on how to turn your controller into inclusion). + + Step 3. Press and hold down both buttons I and O of Group 2 over 3 seconds, LED indicator turns on, the remote control will be set to inclusion mode, + and waiting to be included, after 10s LED indicator blinks 6 times quickly to indicate successful inclusion. The remote control is a sleepy device, + after inclusion it will not enter into sleepy mode immediately, and will continue activation status for 30s and wait data interaction from the gateway, + the LED indicator will stay solid on, please be patient to wait LED indicator to turn off. + + There are two exclusion methods: + Method 1: Exclusion from the primary controller/gateway as follows: + 1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual on how to set your controller into exclusion). + 2. Press and hold down both buttons I and O of Group 2 over 3 seconds, LED indicator turns on, the remote control will be set to exclusion mode, and + waiting to be excluded, after 7s LED indicator blinks 4 times quickly to indicate successful exclusion. + Method 2: Factory reset the remote control will force the remote control to be excluded from a network. (please refer to the part “Factory Reset” of this manual) + + Press and hold down both buttons I and O of Group 2 for over 10 seconds, LED indicator turns on and then + blinks 4 times quickly to indicate successful factory reset.Please use this procedure only when the network + primary controller is missing or otherwise inoperable. + https://products.z-wavealliance.org/products/3639 + CEPT + 4512720 + + Initial addition of product definition. + + + + + + Set to 21930 to factory reset the device. + + + + + true + + + + + true + + + + + + + + + + + + + diff --git a/config/namron/4512715.xml b/config/namron/4512715.xml new file mode 100644 index 0000000000..28036bb5a9 --- /dev/null +++ b/config/namron/4512715.xml @@ -0,0 +1,54 @@ + + + + Namron Z-Wave Switch 400W + + The in-wall switch is a Z-wave device that is used to switch ON/OFF the connected light and can be controlled by other Z-Wave devices. + Supports S2 Unauthenticated. + Supports OTA. + + images/namron/4512715.png + Triple click on the reset button or repower the device + Triple click on the reset button + Press and hold reset button for 10 seconds + 4512715 + + Handcrafted based on namron/1402756.xml and Vendors product manual + + + + + + + + Saving state before power failure. + + + + + + + + Enable/disable to send the basic report to the Lifeline when the load state changed(When value set as 1, repower on the dimmer, it will send Basic report automatically) + + + + + + + Added to and removed from a network through external + switch (when enables this function, triple press the external + switch within 1.5 seconds to be added to or removed from a + network) + + + + + + + + + + + + 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/namron/4512724.xml b/config/namron/4512724.xml new file mode 100644 index 0000000000..3997f64843 --- /dev/null +++ b/config/namron/4512724.xml @@ -0,0 +1,177 @@ + + + + Namron Z-Wave Dimmer 2 400W + https://products.z-wavealliance.org/products/3912 + + The micro smart dimmer is a Z-Wave device designed to work with various types of light sources. It may be + connected to two-wire or three-wire configuration so it can operate with or without neutral lead. The dimmer can + switch or dim connected light source either through Z-Wave devices or through the wall switch connected + directly to it. The smart dimmer is equipped with an algorithm of smart light source detection which makes + configuration easier and ensures high compatibility of the device. It may be used as a switch with nondimmable + light sources (in 3-wire connection). + + The dimmer can be included and operated in any Z-Wave network with other Z-Wave certified devices from + other manufacturers and/or other applications. All non- battery operated nodes within the network will act as + repeaters regardless of vendor to increase reliability of the network. + + The encryption mode that the dimmer supports is S2 Unauthenticated. When the dimmer is being included into + a Z-Wave network, you can use your primary controller/gateway to enable encryption mode or disable + encryption. (The primary controller/gateway shall support encryption mode configuration). The dimmer + supports OTA and can update firmware wirelessly. + + images/namron/4512724.png + Triple click on the reset button or repower the device + Triple click on the reset button + Press and hold reset button for 10 seconds + 4512724 + + Handcrafted based on namron/1402756.xml and Vendors product manual + + + + + + + + Saving state before power failure. + + + + + + + + Enable/disable to send the basic report to the Lifeline when the load state changed(When value set as 1, repower on the dimmer, it will send Basic report automatically) + + + + + + + Default fade time (unit is second, this value has the same function as Duration of Multilevel). + Valid value: 0~127 + + + + + Setting minimum brightness value. + Valid value: 0~50, the bigger the value is, the higher the load’s minimum brightness is. + + + + + Setting maximum brightness value. + Valid value: 0~100 + + + + + Choose MOSFET driving type. + + + + + + + External switch type + + + + + + + + Added to and removed from a network through external + switch (when enables this function, triple press the external + switch within 1.5 seconds to be added to or removed from a + network) + + + + + + + Wiring type (Read only) + + + + + + + + Wiring type (Read only) + + + + + + + + + Enable/disable over current protection (over 2.1A for 20 seconds continuously) + + + + + + + Power automatic report absolute threshold, unit is W. + When power changes above the absolute threshold, immediately report current power value + + + + + Power automatic report percentage threshold, unit is %. + When power changes above the percentage threshold, immediately report current power value + + + + + Power metering automatic report time cycle, unit is second. + Valid time cycle value: 5~2678400, when set as 0, report function disabled + + + + + Energy metering automatic report time cycle, unit is second + Valid time cycle value: 5~2678400, when set as 0, report function disabled + + + + + Voltage metering automatic report time cycle, unit is second + Valid time cycle value: 5~2678400, when set as 0, report function disabled + + + + + Current metering automatic report time cycle, unit is second + Valid time cycle value: 5~2678400, when set as 0, report function disabled + + + + + Setting dimming curve + + + + + + + Setting startup brightness of the load + Valid value: 0~99 + Note: every time when turn on the load from OFF status, if the + target brightness is lower than the startup brightness, the + brightness will first go to the startup brightness value then + fall down to the target brightness + + + + + + + + + + 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/nexia/th100nx.xml b/config/nexia/th100nx.xml new file mode 100644 index 0000000000..06df036759 --- /dev/null +++ b/config/nexia/th100nx.xml @@ -0,0 +1,98 @@ + + + + Remote Temperature and Humidity Sensor + The Remote Temperature and Humidity sensor is a Z-Wave Plus multilevel, battery-powered, routing sensor that measures and reports indoor temperature and relative humidity. The reporting intervals and thresholds for the indoor temperature, indoor humidity and battery are configurable. The wakeup interval is also configurable. This sensor cannot be used with Trane/American Standard thermostats for HVAC control. + http://www.openzwave.com/device-database/0178:3130:5448 + https://products.z-wavealliance.org/products/2223 + images/nexia/th100nx.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2223/18-HD84D1-1A.pdf + Press the Install button three times rapidly to send a Battery Report and Wakeup Notification when installed on a network. + Set primary controller to inclusion mode, then press and release install button. Status LED will blink three times to show success. + Set primary controller to exclusion mode, then press and release install button. Status LED will blink three times to show success. + Press and hold install button for 10 seconds to restore to factory defaults. + https://products.z-wavealliance.org/products/2223 + U.S. / Canada / Mexico + TH100NX + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2223/xml + + + + + + Time between Battery Reports in hours + + + + BASIC SET ON above this temperature. + + + + BASIC SET ON below this temperature. + + + + BASIC SET OFF above this temperature. + + + + BASIC SET OFF below this temperature. + + + + How many attempts + + + + Temperature Units used + + + + + BASIC SET ON above this humidity + + + + BASIC SET ON below this humidity + + + + BASIC SET OFF above this humidity + + + + BASIC SET OFF below this humidity + + + + Basic Set Options for temperature and humidity. + 1 = Enable Registers 2, 5, 12 15 + 2 = Enable Registers 2, 5, 13, 14 + 3 = Enable Registers 3, 4, 12, 15 + 4 = Enable Registers 3, 4, 13, 14 + + + + Temperature offset + + + Humidity offset + + + BASIC SET ON above this humidity + + + + + + + + + + + + + + diff --git a/config/oomi/ft112.xml b/config/oomi/ft112.xml new file mode 100644 index 0000000000..fba3ea2385 --- /dev/null +++ b/config/oomi/ft112.xml @@ -0,0 +1,74 @@ + + + images/oomi/ft112.png + Turn the primary controller into exclusion mode, short press the product’s Action Button that you can find in back of the product. + Press the Action Button once, which will trigger sending out the Wake up notification command, press and hold the Action Button for 3 seconds, which will toggle on/off the Sensor be waked up for 10 minutes. + Turn the primary controller into inclusion mode, short press the product’s Action Button that you can find in the back of the product. + Aeon Labs Door/ Window Sensor 6 is a smart Z-Wave sensor that can detect the status of door/window's open/close in real time. +It’s a security Z-Wave device that supports security encryption. Also it supports the “Over the Air Firmware Updating” that allows you wirelessly update its firmware if needs. +It can be included and operated in any Z-Wave network with other Z-Wave certified devices from manufacturers and/or other applications. + Door/ Window Sensor 6 + Press the Action Button once that you can find in the back of the product for 20 seconds and then release. This procedure should only be used when the primary controller is inoperable. + + Initial version - clone of aeotec/zw112 + Add Product Pic + + CEPT (Europe) + FT112-C + + + + + + + Which value of the Sensor Binary Report or Basic Set will be sent when the door is Opened/Closed + + + + + 10% to 50% + + + Enable/disable the low battery checking + + + + + + The minimum interval is 4 minutes + + + + + Configure which sensor report will be sent when the door is Opened/Closed + + + + + + + + Lock/ unlock all configuration parameters + + + + + Reset to factory defaults + + + + + + + + + true + + + + + + + + + diff --git a/config/oomi/ft118.xml b/config/oomi/ft118.xml new file mode 100644 index 0000000000..d980d82ccd --- /dev/null +++ b/config/oomi/ft118.xml @@ -0,0 +1,62 @@ + + + images/oomi/ft118.png + Turn the primary controller of Z-Wave network into exclusion mode, press the Z-Wave Button on Range Extender 6. + Oomi Range Extender is a Z-Wave mesh network repeater which can extend the range of communication between Z-Wave products and assist other devices to reach each other in your Z-Wave network. Clone of Aeotec ZW117 extender 6. +The Range Extender can also communicate securely via AES 128 wireless Z-Wave commands and supports Over-The-Air (OTA) firmware upgrades. + + Range Extender 6 + Press and hold the Z-Wave Button for 20 seconds and then release it. +Use this procedure only in the event that your primary network controller is missing or inoperable. + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/1998/Range Extender 6 manual.pdf + Turn the primary controller of Z-Wave network into inclusion mode, press the Z-Wave Button on Range Extender 6. + + Initial version, cloned from Aeotec ZW117 xml + Add Product Pic + + CEPT (Europe) + FT118-C15 + + + + + false + + + + + + Set the default status of the LED when the Range Extender relays Z-Wave message. + + + + + Partner ID + + + + + Enable/disable Configuration Locked + + + + + Device tag. + + + Reset to factory defaults + + + + + + + + + + + + + diff --git a/config/philio/pan04.xml b/config/philio/pan04.xml index 6cc4b6ea35..de370fc33c 100644 --- a/config/philio/pan04.xml +++ b/config/philio/pan04.xml @@ -1,4 +1,5 @@ - + + http://www.openzwave.com/device-database/013C:0003:0001 images/philio/pan04.png @@ -16,6 +17,7 @@ This in-wall switch module is able to detect Instant power wattage and overload Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/820/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/851/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1148/xml + Updated Config Params https://products.z-wavealliance.org/products/1148/ 1. Put your Z-Wave controller into inclusion mode by following the instructions provided by the controller manufacturer. @@ -55,6 +57,29 @@ This in-wall switch module is able to detect Instant power wattage and overload Threshold of kWh for Load Caution + + + + + + + 0: Disable auto off function. 1-32767: 1s ~32767s + + + + + + + + + + + + + Can repair problems with bad switch selected + + + diff --git a/config/popp/700342.xml b/config/popp/700342.xml new file mode 100644 index 0000000000..0d878d065b --- /dev/null +++ b/config/popp/700342.xml @@ -0,0 +1,33 @@ + + + 10 Year Smoke Detector + This products consists of a standard high-quality photo electric Smoke detector with a pluggable Z-Wave wireless interface module. The Smoke detector will also work as a stand alone product and is certified as '10 year Smoke Detector' The smoke chamber of the detector has a stainless steel reel with antistatic plastic chamber. A button allows on-device test of smoke chamber, electronics and battery. The device also offers a built-in self test and an electronic smoke chamber test to avoid the use of test aerosol. A low battery warning will last for 30 days but full function of the detector is guaranteed during this time. The Z-Wave module allows to report the smoke and low battery alarm wirelessly to a central controller. + http://www.openzwave.com/device-database/0154:0004:000D + https://www.popp.eu/products/sensors/10-jahres-rauchmelder-700342/ + https://www.popp.eu/support/manuals/ + images/popp/009402.png + https://www.popp.eu/005107en + A double click on the Z-Wave button wakes up the device> + Secure Inclusion: Push the button for 3 seconds, Unsecure Inclusion: Push the button for 1 seconds + Push the button for 1 second + To reset the device keep the button pushed for 10 seconds. After 5 seconds the led starts flashing and after another 5 seconds there is a short beep signaling the successful reset back to factory defaults. Use this procedure only when the network primary controller is missing or otherwise inoperable. + + From the User Manual and the 009402.xml + + + + + This value is sent as BASIC Set to Association Group 3 when an Smoke Alarm occurs. + + + This value is sent as BASIC Set to Association Group 3 when an Smoke Alarm is cleared. + + + + + + + + + + diff --git a/config/popp/701202.xml b/config/popp/701202.xml new file mode 100644 index 0000000000..0354cf20c2 --- /dev/null +++ b/config/popp/701202.xml @@ -0,0 +1,118 @@ + + + Mold Detector + + This device measures the three air quality parameters temperature, humidity and dew point and reports them to a central controller. Beside this, the device can directly control groups of other Z-Wave devices on over- and undershooting a set temperature and/or humidity parameter. This can be used to establish control loops for temperature and humidity. The device wakes up every 15 minutes to measure the values and it will send unsolicited reports when values change, Additionally the device will report all values request on. + The mold detector is actively monitoring the danger of mold in a room based on the temperature and humidity and will issue alarm warnings when critical air conditions are met. Wireless Alarm and red and a green blinking LED will indicate a mold condition. This local LED warning function is also available when the device is not included in any Z-Wave network and works stand alone. + + http://www.openzwave.com/device-database/0154:0014:0004 + https://popp.eu/products/sensors/mold-detector-701202/ + https://popp.eu/support/ + images/popp/701202.png + https://manuals.zwave.eu/backend/make.php?lang=EN&sku=POPE701202&cert= + Press the tamper button on the side of the appliance once. + + 1. Open the housing. + 2. Remove the battery protection. + 3. Press the tamper button on the side of the appliance three times quickly. + + 1. Open the housing. + 2. Press the tamper button on the side of the appliance three times quickly. + + + Remove the cover, press the button for 5 seconds until it flashes green. Release the button and press the button again until the blinking stops. + + + https://products.z-wavealliance.org/products/3249?selectedFrequencyId=1 + CEPT (Europe) + 701202 + + + Initial configuration file, based on information from the vendor's and z-wavealliance.org websites, but with small linguistic changes and a few corrections. + + + + + + + + This value defines the minimum change of temperature to cause an unsolicited report of humidity to the central controller using Lifeline. + If the value is set to 0, there will be no reports sent to the controller, when the temperature changes. However, periodic reports, managed by configuration parameter 4, may still be active. + Default Value: 20 + + + + + This value defines the minimum change of humidity to cause an unsolicited report of humidity to the central controller using Lifeline. + If the value is set to 0, there will be no reports sent to the controller, when the humidity changes. However, periodic reports, managed by configuration parameter 4, may still be active. + Default value: 7 + + + + + + This parameter defines the time interval to send an unsolicited report. + If the value is set to 0, there will be no periodic reports sent to the controller. However, reports on temperature/humidity changes, managed by configuration parameters 1 and 2, may still be active. + Default value: 43200 + + + + + This parameter defines a temperature. If the measured temperature surpasses this watermark a BASIC command is sent into Association Group 2 + Default Value: 0 + + + + + This parameter defines a temperature. If the measured temperature drops below this watermark a BASIC command is sent into Association Group 3 + Default Value: 0 + + + + + This parameter defines a relative humidity. If the measured relative humidity surpasses this watermark a BASIC command is sent into Association Group 4 + Default Value: 0 + + + + + This parameter defines a relative humidity. If the measured relative humidity drops below this relative humidity a BASIC command is sent into Association Group 5 + Default Value: 0 + + + + + This defines what BASIC command shall be sent out into association group 3 + Default Value: 255 + + + + + This defines what BASIC command shall be sent out into association group 2 + Default Value: 0 + + + + + This defines what BASIC command shall be sent out into association group 5 + Default Value: 255 + + + + + This defines what BASIC command shall be sent out into association group 4 + Default Value: 0 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/q-light/q-light_puck.xml b/config/q-light/q-light_puck.xml new file mode 100644 index 0000000000..1a41a95ac6 --- /dev/null +++ b/config/q-light/q-light_puck.xml @@ -0,0 +1,151 @@ + + + + http://www.openzwave.com/device-database/0433:0005:0003 + images/q-light/q-light_puck.png + https://products.z-wavealliance.org/products/3774 + Puck + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3774/Instructions_Z-Wave_Puck_Norsk_A4.pdf + Z-Wave Puck dimmer by Q-light is a micro size in wall dimmer. +Features: +- 0-100% dimming range +- 2-180W LED load +- Compatible with any Z-Wave or Z-Wave Plus Controller +- There is memorized function at power off +- OverLoad protection +- Soft start function +- SmartStart +- Works with various types of switches – on/off, momentary, roller-blind, and etc +- This device is a security enable Z-Wave Plus product that is able to use encrypted Z-Wave Plus +messages to communicate to other security enable Z-Wave Plus products. + + +Removing (Exclusion): +Allowing to remove the Z-Wave device from existing Z-Wave network. + +1. Place the Z-Wave Puck within the direct range of your Z-Wave controller. +2. Identify switch S1/S2 (turns the light on) or the Internal button (located on the device’s housing). +3. Set the main controller in (security/non-security) add mode (see the controller’s manual). +4. Quickly, three times press switch S1 / S2 or Internal button. +5. Wait for the removing process to end. + + CEPT (Europe) + Q-light Zerodim Z-Wave + Resetting the Z-Wave Puck: + +1. Quickly, nine times press switch S1 / S2 or Internal button. +2. Wait for the resetting process to end, which is signaled with the LED indicator blinks 20 times. + +Device reset status: Turn on the light at maximum brightness. + +Please use this procedure only when the network primary controller is missing or otherwise inoperable + + +Classic Learn Mode: + +1. Place the Z-Wave Puck within the direct range of your Z-Wave controller. +2. Identify switch S1/S2 (turns the light on) or the Internal button (located on the device’s housing). +3. Set the main controller in (security/non-security) add mode (see the controller’s manual). +4. Quickly, three times press switch S1 / S2 or Internal button. 5. Wait for the adding process to end. +6. Successful adding will be confirmed by the Z-Wave controller’s message. + + + Initial release + fix associations + + + + + + +Set the desired value from 1 to 98% for the minimum dim level that the dimmer is restricted to, the dimmer will not go lower than the value set here. + + + + +Set the desired value from 2 to 99% for the maximum dim level that the dimmer is restricted to, the dimmer will not go higher than the value set here. + + + + +This parameter defines the percentage value of dimming step during the automatic control. + + + + +This parameter defines the time of single dimming step set in parameter 3 during the automatic control. + + + + +This parameter defines the percentage value of dimming step during the manual control. + + + + +This parameter defines the time of single dimming step setin parameter 5 during the manual control. + + + + Set the desired value from 0 to 1 to turn on/off the memory function.Setting this value to 0 turns off the dimmer's Memory fucntion.Setting this value to 1 truns on the dimmer's Memory function. + + + + + +Choose between momentary, ON/OFF and roller blind switch. + +Available settings: +0 – momentary (Push) switch. +1 – ON/OFF switch. +2– roller blind switch-two switchs operate the device(S1 to brighter, S2 to dim + + + + + + + Set the desired value from 0 to 1 to turn on/off the memory function.Setting this value to 0 turns off the dimmer's Memory fucntion.Setting this value to 1 truns on the dimmer's Memory function. + + + + + +When you press S1 five times,the light is dimmed to the brightness set in Scene ID 3 . + +S1 Scene ID is set by this configuration. + +Note: The actual action of each SCENE ID are set by SCE-NE_ACTUATOR_CONF(0x26) command. + + + + +When you press S1 five times,the light is dimmed to the brightness set in Scene ID 5. + + +S2 Scene ID is set by this configuration. + +Note: The actual action of each SCENE ID are set by SCE-NE_ACTUATOR_CONF(0x26) command. + + + + This parameter allows to automatically switch off the device after specified time from switching on the light source. It may be useful when the Zerodim Z-Wave is installed in the stairway. + +Available settings: +0 - Function disabled. +1-32767 - time to turn off measured in seconds (1s-9.1h) + + + + + + + + + + + + + + + diff --git a/config/q-light/q-light_zerodim.xml b/config/q-light/q-light_zerodim.xml new file mode 100644 index 0000000000..747c175be8 --- /dev/null +++ b/config/q-light/q-light_zerodim.xml @@ -0,0 +1,120 @@ + + + + http://www.openzwave.com/device-database/0433:000D:0003 + images/q-light/q-light_zerodim.png + https://products.z-wavealliance.org/products/3775 + Zerodim + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3775/Instructions_ZerodimZwave_Norsk_A4.pdf + Zerodim Z-Wave by Q-light is a wireless smart home device. +Features: +- 0-99% dimming range +- 2-180W LED load +- Compatible with any Z-Wave or Z-Wave Plus Controller +- There is memorized function at power off +- OverLoad protection +- Soft start function +- SmartStart +- This device is a security enable Z-Wave Plus product that is able to use encrypted Z-Wave Plus messages to communicate to other security enable Z-Wave Plus products. + + +1. Place the Zerodim Z-Wave within the direct range of your Z-Wave controller. +2. Identify switch rotary knob (turns the light on). +3. Set the main controller in (security/non-security) add mode (see the controller’s manual). +4. Quickly, three times press switch rotary knob. +5. Wait for the removing process to end. +6. Successful removing will be confirmed by the Z-Wave controller’s message. + + CEPT (Europe) + Q-light Zerodim Z-Wave + Resetting the Zerodim Z-Wave: +1. Quickly, nine times press switch rotary knob. +2. Wait for the resetting process to end, the lamp will be set to maximum brightness. + +Device reset statues: Turn on the light at maximum brightness. + + +Classic Learn Mode: +1. Place the Zerodim Z-Wave within the direct range of your Z-Wave controller. +2. Identify switch rotary knob (turns the light on). +3. Set the main controller in (security/non-security) add mode (see the controller’s manual). +4. Quickly, three times press switch rotary knob. +5. Wait for the adding process to end. +6. Successful adding will be confirmed by the Z-Wave controller’s message. + +SmartStart Learn Mode: +1. Scanning the Z-Wave QR Code present on the product with a controller providing SmartStart inclusion. +2. No further action is required and the SmartStart product will be added automaticall within 10 minutes of being switched on in the network vicinity. +3. The QR Code and DSK are attached to the back of the product case, as shown below: + + + Initial release + fix associations + + + + + + +Set the desired value from 1 to 98% for the minimum dim level that the dimmer is restricted to, the dimmer will not go lower than the value set here. + + + + +Set the desired value from 2 to 99% for the maximum dim level that the dimmer is restricted to; the dimmer will not go higher than the value set here. + + + + +This parameter defines the percentage value of dimming step during the automatic control. + + + + +This parameter defines the time of single dimming step set in parameter 3 during the automatic control. + + + + +This parameter defines the percentage value of dimming step during the manual control. + + + + +This parameter defines the time of single dimming step setin parameter 5 during the manual control. + + + + Set the desired value from 0 to 1 to turn on/off the memory function.Setting this value to 0 turns off the dimmer's Memory fucntion.Setting this value to 1 truns on the dimmer's Memory function. + + + + + +Scene ID is set by this configuration. + +Note: The actual action of each SCENE ID are set by +SCENE_ACTUATOR_CONF(0x26) command. + + + + +This parameter allows to automatically switch off the device after specified time from switching on the light source. It may be useful when the Zerodim Z-Wave is installed in the stairway. + +Available settings: +0 - Function disabled. +1-32767 - time to turn off measured in seconds (1s-9.1h) + + + + + + + + + + + + + + diff --git a/config/q-light/q-light_zerodim_2pol.xml b/config/q-light/q-light_zerodim_2pol.xml new file mode 100644 index 0000000000..63f19ec028 --- /dev/null +++ b/config/q-light/q-light_zerodim_2pol.xml @@ -0,0 +1,120 @@ + + + + http://www.openzwave.com/device-database/0433:000E:0003 + images/q-light/q-light_zerodim_2pol.png + https://products.z-wavealliance.org/products/3881 + Zerodim + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3881/Instructions_ZerodimZwave_2pol_Norsk_A4.pdf + Zerodim Z-Wave by Q-light is a wireless smart home device. +Features: +- 0-99% dimming range +- 2-180W LED load +- Compatible with any Z-Wave or Z-Wave Plus Controller +- There is memorized function at power off +- OverLoad protection +- Soft start function +- SmartStart +- This device is a security enable Z-Wave Plus product that is able to use encrypted Z-Wave Plus messages to communicate to other security enable Z-Wave Plus products. + + +1. Place the Zerodim Z-Wave within the direct range of your Z-Wave controller. +2. Identify switch rotary knob (turns the light on). +3. Set the main controller in (security/non-security) add mode (see the controller’s manual). +4. Quickly, three times press switch rotary knob. +5. Wait for the removing process to end. +6. Successful removing will be confirmed by the Z-Wave controller’s message. + + CEPT (Europe) + Q-light Zerodim Z-Wave + Resetting the Zerodim Z-Wave: +1. Quickly, nine times press switch rotary knob. +2. Wait for the resetting process to end, the lamp will be set to maximum brightness. + +Device reset statues: Turn on the light at maximum brightness. + + +Classic Learn Mode: +1. Place the Zerodim Z-Wave within the direct range of your Z-Wave controller. +2. Identify switch rotary knob (turns the light on). +3. Set the main controller in (security/non-security) add mode (see the controller’s manual). +4. Quickly, three times press switch rotary knob. +5. Wait for the adding process to end. +6. Successful adding will be confirmed by the Z-Wave controller’s message. + +SmartStart Learn Mode: +1. Scanning the Z-Wave QR Code present on the product with a controller providing SmartStart inclusion. +2. No further action is required and the SmartStart product will be added automaticall within 10 minutes of being switched on in the network vicinity. +3. The QR Code and DSK are attached to the back of the product case, as shown below: + + + Initial release + fix associations + + + + + + +Set the desired value from 1 to 98% for the minimum dim level that the dimmer is restricted to, the dimmer will not go lower than the value set here. + + + + +Set the desired value from 2 to 99% for the maximum dim level that the dimmer is restricted to; the dimmer will not go higher than the value set here. + + + + +This parameter defines the percentage value of dimming step during the automatic control. + + + + +This parameter defines the time of single dimming step set in parameter 3 during the automatic control. + + + + +This parameter defines the percentage value of dimming step during the manual control. + + + + +This parameter defines the time of single dimming step setin parameter 5 during the manual control. + + + + Set the desired value from 0 to 1 to turn on/off the memory function.Setting this value to 0 turns off the dimmer's Memory fucntion.Setting this value to 1 truns on the dimmer's Memory function. + + + + + +Scene ID is set by this configuration. + +Note: The actual action of each SCENE ID are set by +SCENE_ACTUATOR_CONF(0x26) command. + + + + +This parameter allows to automatically switch off the device after specified time from switching on the light source. It may be useful when the Zerodim Z-Wave is installed in the stairway. + +Available settings: +0 - Function disabled. +1-32767 - time to turn off measured in seconds (1s-9.1h) + + + + + + + + + + + + + + diff --git a/config/qolsys/qz2140-840.xml b/config/qolsys/qz2140-840.xml new file mode 100644 index 0000000000..81822ff817 --- /dev/null +++ b/config/qolsys/qz2140-840.xml @@ -0,0 +1,57 @@ + + + QZ2140-840 Plug-In Dimmer + The IQ Dimmer is a Z-Wave Plus certified device with S2 security and SmartStart features. You can now add this device securely and with ease using QR code on the product with compatible gateways supporting S2 and SmartStart. The IQ Dimmer communicates with other Z-Wave certified devices and updates your home into a smart home. The IQ Dimmer can be used to turn any plug in lamps into a smart lamp with dimmable light bulbs, turning it On, Off, or control dimming wirelessly. Each Z-Wave device also serves as a node to repeat the signal in the network, thus, extending the overall Z-Wave mesh wireless network range. +Additional Features: +* Power 120 VAC, 60Hz, up to 300 watts +* Region US: 908.4, 916 MHz +* Works w/ most incandescent, dimmable CFL & LED lights +* Plugs into Standard AC outlet +* Remotely controls On, Off, or Dim levels +* Control lights via schedule +* LED backlit manual On/Off button +* Second wall AC outlet remains free +* Works with any certified gateway supporting Z-Wave + http://www.openzwave.com/device-database/012A:3032:4744 + images/qolsys/qz2140-840.png + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/2912/IQ Dimmer UG Online.pdf + 1. Place your network controller into inclusion mode by following the controller manufacturer's instructions. +2. When the controller is ready, single click the button on the front of the IQ Dimmer. The controller should indicate that the new device was added successfully. +3. Once the IQ Dimmer has been successfully added to your home network, you can move it to the preferred location in the home + 1. Place your network controller into exclusion mode by following the controller manufacturer's instructions. +2. When the controller is ready, single click the button on the front of the IQ Dimmer. The controller should indicate that the new device was removed successfully. +3. Once the IQ Dimmer has been successfully added to your home network, you can move it to the preferred location in the home + 1. Unplug the IQ Dimmer from the AC outlet and also unplug the power plugs of the lighting from the module (if plugged in) +2. Press and hold the button on the IQ Dimmer +3. Plug the IQ Dimmer back into the AC outlet with the button pressed. After 3 seconds, release the button. If you see the button blink, that means that IQ Dimmer has been reset successfully. + +Please use this procedure only when the network primary controller is missing or otherwise inoperable. + https://products.z-wavealliance.org/products/2912 + U.S. / Canada / Mexico + QZ2140-840 + + Import from https://products.z-wavealliance.org/products/2912/xml + + + + + + When value =0 the LED indicator will be OFF when the the connected light is ON, and the LED will be ON when the connected light is OFF. If value =1 the LED indicator will be ON when the connected light is ON, and the LED indicator will be OFF when the connected light is OFF. If value =2 the LED indicator will always be OFF regardless of the load status + + + + + + Valid Values: 1-99, indicates the number of dimming levels. + + + Valid Values: 1-255, indicates the time duration of each level. + + + + + + + + + diff --git a/config/qubino/ZMNHCDx.xml b/config/qubino/ZMNHCDx.xml index e3101023c4..2aa124569f 100644 --- a/config/qubino/ZMNHCDx.xml +++ b/config/qubino/ZMNHCDx.xml @@ -1,38 +1,42 @@ - + http://www.openzwave.com/device-database/0159:0052:0003 images/qubino/ZMNHCDx.png https://products.z-wavealliance.org/products/2505/ - • Connect module to power supply (with -temperature sensor connected - if purchased), -• auto-inclusion (works for about 5 seconds after connected to power supply) or -• press push button I1 three times within 3s (3 times change switch state within 3 seconds) or -• press service button S (only applicable for 24 V SELV supply voltage) for more than 2 second. + + • Connect module to power supply (with + temperature sensor connected - if purchased), + • auto-inclusion (works for about 5 seconds after connected to power supply) or + • press push button I1 three times within 3s (3 times change switch state within 3 seconds) or + • press service button S (only applicable for 24 V SELV supply voltage) for more than 2 second. -NOTE1: For auto-inclusion procedure, first set main controller into inclusion mode and then connect module to power supply. + NOTE1: For auto-inclusion procedure, first set main controller into inclusion mode and then connect module to power supply. -NOTE2: When connecting temperature sensor to module that has already been included, you have to exclude module first. Switch off power supply, connect the sensor and re-include the module. - - • Connect module to power supply -• bring module within maximum 1 meter (3 feet) of the main controller, -• enable add/remove mode on main controller, -• press push button I1 five times within 3s (5 times change switch state within 3 seconds) in the first 60 seconds after the module is connected to the power supply or -• press service button S (only applicable for 24 V SELV supply voltage) for more than 6 second. -By this function all parameters of the module are set to default values and own ID is deleted. + NOTE2: When connecting temperature sensor to module that has already been included, you have to exclude module first. Switch off power supply, connect the sensor and re-include the module. + + + • Connect module to power supply + • bring module within maximum 1 meter (3 feet) of the main controller, + • enable add/remove mode on main controller, + • press push button I1 five times within 3s (5 times change switch state within 3 seconds) in the first 60 seconds after the module is connected to the power supply or + • press service button S (only applicable for 24 V SELV supply voltage) for more than 6 second. + By this function all parameters of the module are set to default values and own ID is deleted. -If push button I1 is pressed three times within 3s (or service button S is pressed more than 2 and less than 6 seconds) module is excluded, but configuration parameters are not set to default values. + If push button I1 is pressed three times within 3s (or service button S is pressed more than 2 and less than 6 seconds) module is excluded, but configuration parameters are not set to default values. -NOTE: Please use this procedure only when the network primary controller is missing or otherwise inoperable. + NOTE: Please use this procedure only when the network primary controller is missing or otherwise inoperable. -NOTE: If the module is included with parameters 71 with value different to default and module reset is done, wait at least 30s before next inclusion - - • press push button I1 five times within 3s (5 times change switch state within 3 seconds) in the first 60 seconds after the module is connected to the power supply or -• press service button S (only applicable for 24 V SELV supply voltage) for more than 6 second. + NOTE: If the module is included with parameters 71 with + value different to default and + module reset is done, wait at least 30s before next inclusion + + + • press push button I1 five times within 3s (5 times change switch state within 3 seconds) in the first 60 seconds after the module is connected to the power supply or + • press service button S (only applicable for 24 V SELV supply voltage) for more than 6 second. -NOTE: Please use this procedure only when the network primary controller is missing or otherwise inoperable. - - This Z-Wave module is used to control the motor of blinds, rollers, shades, venetian blinds, etc … The module can be controlled either through a Z-Wave network or through the wall switch. Precise positioning is supported for motors equipped with mechanical or electronic end switches. The module is designed to be mounted inside a “flush mounting box”, hidden behind a traditional wall switch. Module measures power consumption of motor and support connection of digital temperature sensor. It is designed to act as repeater in order to improve range and stability of Z-Wave network. - + NOTE: Please use this procedure only when the network primary controller is missing or otherwise inoperable. + + This Z-Wave module is used to control the motor of blinds, rollers, shades, venetian blinds, etc … The module can be controlled either through a Z-Wave network or through the wall switch. Precise positioning is supported for motors equipped with mechanical or electronic end switches. The module is designed to be mounted inside a “flush mounting box”, hidden behind a traditional wall switch. Module measures power consumption of motor and support connection of digital temperature sensor. It is designed to act as repeater in order to improve range and stability of Z-Wave network. https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/2505/Qubino_Flush Shutter PLUS extended manual_eng_2.2.pdf ZMNHCD3 Flush Shutter @@ -41,26 +45,20 @@ NOTE: Please use this procedure only when the network primary controller is miss Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2376/xml 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) - - ZMNHCD1 868,4 MHz - ZMNHCD2 921,4 MHz - ZMNHCD3 908,4 MHz - ZMNHCD4 869,0 MHz - ZMNHCD5 916,0 MHz ---> - - + Flush 1 relay module responds to commands ALL ON / ALL OFF that may be sent by the main controller or by other controller belonging to the system. - - - - + + + + Set value from 0 - 100 (0% - 100%). 0 - Reporting Disabled. 1 - 100 = 1% - 100% Reporting enabled. Power report is send (push) only when actual power (in Watts) in real time changes for more than set percentage comparing to previous actual power in Watts, step is 1%. Default value 1 @@ -70,93 +68,105 @@ NOTE: Please use this procedure only when the network primary controller is miss This parameter defines selection between two available operating modes - - + + - This parameter defines the time necessary for slats to make full turn (180 degrees) - default value 150 = 1,5 seconds - 0 - Tilting time disabled - 1 - 32767 = 0,01seconds - 327,67 seconds - + This parameter defines the time necessary for slats to make full turn (180 degrees) + default value 150 = 1,5 seconds + 0 - Tilting time disabled + 1 - 32767 = 0,01seconds - 327,67 seconds + - This parameter defines slats position after up/down movement through Z-wave or push-buttons - Slats return to previously set position only in case of - - - + + This parameter defines slats position after up/down movement through Z-wave or push-buttons + Slats return to previously set position only in case of + + + - This parameter defines shutter motor moving time of complete opening or complete closing. - Default value 0 - 0 - moving time disabled (working with limit switches). - 1 - 65535 = 0,1seconds - 6553,5seconds - After that time motor is stopped (relay goes to off state) + + This parameter defines shutter motor moving time of complete opening or complete closing. + Default value 0 + 0 - moving time disabled (working with limit switches). + 1 - 65535 = 0,1seconds - 6553,5seconds + After that time motor is stopped (relay goes to off state) + - Power threshold to be interpreted when motor reach the limit switch. - default value 10 = 10W - 0 - 127 = 1-127 W. The value 0 means reaching a limit switch will not be detected. - + Power threshold to be interpreted when motor reach the limit switch. + default value 10 = 10W + 0 - 127 = 1-127 W. The value 0 means reaching a limit switch will not be detected. + By modifying the parameters setting from 0 to 1 a Shutter enters the calibration mode - - + + - This parameter defines the max time before motor power consumption is read after one of the relays is switched ON. - If there is no power consumption during this max time (motor not connected, damaged or requires higher time to start, motor in end position) the relay will switch OFF. - Time is defined by entering it manually. - default value 0 = time is set automatically - 3 - 50 = 0,3seconds - 5seconds (100ms resolution) - + This parameter defines the max time before motor power consumption is read after one of the relays is switched ON. + If there is no power consumption during this max time (motor not connected, damaged or requires higher time to start, motor in end position) the relay will switch OFF. + Time is defined by entering it manually. + default value 0 = time is set automatically + 3 - 50 = 0,3seconds - 5seconds (100ms resolution) + - This parameter defines the minimum time delay between next motor movement (minimum time between switching motor off and on again). - default value 5 = 500ms - 1 - 30 = 0,1seconds - 3seconds (100ms resolution) - + This parameter defines the minimum time delay between next motor movement (minimum time between switching motor off and on again). + default value 5 = 500ms + 1 - 30 = 0,1seconds - 3seconds (100ms resolution) + - Set value is added or subtracted to actual measured value by sensor. - default value 32536 - 32536 - offset is 0.0C - From 1 to 100 - value from 0.1 C to 10.0 C is added to actual measured temperature. - From 1001 to 1100 - value from -0.1 C to -10.0 C is subtracted to actual measured temperature. - + Set value is added or subtracted to actual measured value by sensor. + default value 32536 + 32536 - offset is 0.0C + From 1 to 100 - value from 0.1 C to 10.0 C is added to actual measured temperature. + From 1001 to 1100 - value from -0.1 C to -10.0 C is subtracted to actual measured temperature. + - If digital temperature sensor is connected, module reports measured temperature on temperature change defined by this parameter - default value 5 = 0,5C - 0 - Reporting disabled - 1-127 = 0,1C - 12,7C, step is 0,1C - + If digital temperature sensor is connected, module reports measured temperature on temperature change defined by this parameter + default value 5 = 0,5C + 0 - Reporting disabled + 1-127 = 0,1C - 12,7C, step is 0,1C + + + false + - - - - - - - - - + + + + + + + + + + + + + false + + - + diff --git a/config/qubino/ZMNHHDx.xml b/config/qubino/ZMNHHDx.xml index ee8522d00c..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. + @@ -63,10 +127,10 @@ 2 - 99 = 2% - 99%, step is 1%. Maximum dimming values is set by entered value. Default value 99 (Maximum dimming value is 99%). - - Set value means time of moving the Dimmer between min. and max. dimming values by short press of push button I1 or controlled through. - 1- 255 = 10mseconds - 2550mseconds (2,55s), step is 10mseconds. - Default value 100 (Dimming time between min. and max. dimming values is 1s). + + Set value means time of moving the Dimmer between min. and max. dimming values by short press of push button I1 or controlled through the controller. + 1 - 127 = 1 second - 127 seconds. + Default value 1 (Dimming time between min. and max. dimming values is 1s). 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/qubino/ZMNHQDx.xml b/config/qubino/ZMNHQDx.xml index c17c8d895b..2e2e95c1a4 100644 --- a/config/qubino/ZMNHQDx.xml +++ b/config/qubino/ZMNHQDx.xml @@ -1,98 +1,90 @@ - - - - LUXY Smart Light - The Qubino LUXY Smart Light is ideal for gentle illumination of any room and for visual and sound notifications. - http://www.openzwave.com/device-database/0159:0051:0008 - https://qubino.com - https://support.qubino.com/support/home - - - Manual inclusion is triggered by the following procedure: - Full white needs to be active (c-button 2). The user can select it by quickly pressing the c-button2 once. - When full white is enabled, press c-button3 and hold it for 5 seconds (while white is glowing, hold c-button3 for 5 seconds). - After 5 seconds, the device starts flashing, with the following pattern: green 1 second on, 0.5 second off. - Once the device receives a nodeId or after 10 seconds, it stops flashing and turns green. - - - - Exclusion is triggered by the following procedure: - Full white needs to be active (c-button 2). - When full white is enabled, press c-button3 and hold it for 5 seconds (while white is glowing hold c-button3 for 5 seconds). - After 5 seconds, the device starts flashing with the following pattern: red 1 second on, 0.5 second off. - Once the device loses its nodeId or after 10 seconds, it stops flashing and turns red. - - - - Reset is triggered after the following procedure: - Full white needs to be active (c-button 2). - When full white is enabled, press c-button5 and hold it for 10 seconds. - After 10 seconds, the device starts flashing with the following pattern: blue 1 second on, 0.5 second off. - After 10 seconds the device stops flashing and turns blue. - The procedure is available always. - - - - - - - - - - + + + LUXY Smart Light + The Qubino LUXY Smart Light is ideal for gentle illumination of any room and for visual and sound notifications. + http://www.openzwave.com/device-database/0159:0051:0008 + https://qubino.com + https://support.qubino.com/support/home + images/qubino/ZMNHQDx.png + + Manual inclusion is triggered by the following procedure: + Full white needs to be active (c-button 2). The user can select it by quickly pressing the c-button2 once. + When full white is enabled, press c-button3 and hold it for 5 seconds (while white is glowing, hold c-button3 for 5 seconds). + After 5 seconds, the device starts flashing, with the following pattern: green 1 second on, 0.5 second off. + Once the device receives a nodeId or after 10 seconds, it stops flashing and turns green. + + + Exclusion is triggered by the following procedure: + Full white needs to be active (c-button 2). + When full white is enabled, press c-button3 and hold it for 5 seconds (while white is glowing hold c-button3 for 5 seconds). + After 5 seconds, the device starts flashing with the following pattern: red 1 second on, 0.5 second off. + Once the device loses its nodeId or after 10 seconds, it stops flashing and turns red. + + + Reset is triggered after the following procedure: + Full white needs to be active (c-button 2). + When full white is enabled, press c-button5 and hold it for 10 seconds. + After 10 seconds, the device starts flashing with the following pattern: blue 1 second on, 0.5 second off. + After 10 seconds the device stops flashing and turns blue. + The procedure is available always. + + + Initial Import + Reformat and remove small typo + Fix Empty ChangeLog Entry + Add Product Pic + + + + + + - Defines the type of input device, connected to digital input. + Defines the type of input device, connected to digital input. - - + + - - + With this parameter, you can determine, how to turn off the alarm. - + - - + + Defines the time after which the output triggered by motion sensor is turned off. Default value = 10. - 0 – 32534 = 0-32534 seconds after which the LED will be turned off. - 32535 – never turns off. - + 0 to 32534 => 0-32534 seconds after which the LED will be turned off. + 32535 => never turns off. + - - + - Default value = 0. - 0 – disabled. - 1 – 32535 = 1 – 32535 seconds after which the device turns on. - + Default value = 0 + 0 => Disabled + 30 to 32767 => 30 - 32767 seconds after which the device turns on. + - - + - Default value = 0 - 0 – disabled - 1 – 32535 = 1 – 32535 seconds after which the device turns off - + Default value = 0 + 0 => Disabled + 30 to 32767 => 30 - 32767 seconds after which the device turns off. + - - + With this parameter, the user can select if the state of the device should be restored, after a power failure. - - + + - - + With this parameter, the user can select the operating mode of the beeper. - - + + - - - - + + @@ -101,5 +93,4 @@ - \ No newline at end of file diff --git a/config/qubino/ZMNHYDx.xml b/config/qubino/ZMNHYDx.xml index c19ced0070..64f9c62320 100644 --- a/config/qubino/ZMNHYDx.xml +++ b/config/qubino/ZMNHYDx.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0159:0054:0002 images/qubino/ZMNHYDx.png @@ -29,6 +29,7 @@ By resetting the device, all custom parameters previously set on the device will https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3146/Qubino_Smart Plug 16A PLUS extended manual_eng_2.5.pdf Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3146/xml + Update description for configuration parameter 52 and fix typo + + + + + Relay contact type. + + + + + + + + With this parameter, you can determine, how to turn off the alarm. + + 0 => only by z-wave command (basic set, switch multilevel set, switch multilevel start/stop level change, sound switch play tone, sound switch + configuration, switch color set, switch color start/stop level change, notification report idle) + + 1 => capacitive input (up, down, left, right) or z-wave command (basic set, switch multilevel set, switch multilevel start/stop level change, sound + switch play tone, sound switch configuration, switch color set, switch color start/stop level change, notification report idle) + + + + + + + + Default value = 0 + 0 => Disabled + 30 to 32535 => 30 - 32535 seconds after which the device turns on. + + + + + + Default value = 0 + 0 => Disabled + 30 to 32535 => 30 - 32535 seconds after which the device turns off. + + + + + + Default value = 0 + 0 => Disabled + 30 to 32535 => 30 - 32535 seconds after which the device turns on. + + + + + + Default value = 0 + 0 => Disabled + 30 to 32535 => 30 - 32535 seconds after which the device turns off. + + + + + + With this parameter, the user can select if the state of the device (color, brightness) should be restored, after a power failure. + + Default value = 1 + 1 – Enabled (the device will restore state on power failure) + 0 – Disabled (the device will not restore state on power failure and will remain off) + + + + + + + + With this parameter, the user can select if the state of the built-in relay should be restored, after a power failure. + + Default value = 1 + 1 – Enabled (the device will restore state on power failure) + 0 – Disabled (the device will not restore state on power failure and will remain off) + + + + + + + + Choose by how much the power consumption needs to increase or decrease to be reported. + Values correspond to percentages, so if 10 is set (by default), the device will report any power consumption changes of 10% or more compared to the last reading. + + Default value = 10 + 0 => Power consumption reporting disabled + 1 to 100 => 1% - 100% Power consumption reporting enabled. + + New value is reported only when Wattage in real time changes by more than the percentage value set in this parameter compared to the previous Wattage reading, starting at 1% (the lowest value possible). + NOTE: Power consumption needs to increase or decrease by at least 1 Watt to be reported, REGARDLESS of percentage set in this parameter. + + + + + + Set value refers to the time interval for power consumption reporting (Watts). + + Default value = 0 + 0 => Power consumption reporting disabled + 30 to 32535 => 30 - 32535 seconds. Power consumption reporting enabled. Report is sent according to time interval (value) set here. + + + + + + The function allows turning off the controlled device in case of exceeding the defined power for more than 5s. + The controlled device can be turned back on by input I1 or by sending an actuation command. + + Default value = 2300 + 0 => function not active + 1 to 2300 => 1 W – 2300W + + NOTE: This functionality is not an overload safety protection, please check the technical specifications chapter for more details in the official manual. + + In case of an overload event, the device will send the following message to the gateway/controller: + NOTIFICATION_REPORT_V8(type=0x08=POWER_MANAGEMENT, event=0x08=Overload detected) + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/remotec/zts-500.xml b/config/remotec/zts-500.xml index cda03abb1d..0911d9c666 100644 --- a/config/remotec/zts-500.xml +++ b/config/remotec/zts-500.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/5254:8170:0200 images/remotec/zts-500.png @@ -11,27 +11,31 @@ Press < to cancel and back to the previous screen. Use the RESET procedure ONLY when the primary Controller is missing or inoperable. U.S. / Canada / Mexico - ZTS-500 is a user-friendly Z-Wave programmable smart thermostat. The ZTS-500 is compatible with any Z-Wave certified controller or gateway and is designed to fit perfectly over most original thermostat installation marks without the need for a mounting board. The invisible 4-button back-illuminated interface combines a simple and intuitive interactive experience with a modern fashionable look. The flip-over terminal-board makes installation a breeze, The ZTS-500 allows utilization even in environments where a C wire is not available. With automatic power source detection (24Vac or Battery Power), it decide to maximizing battery life or acting as a range extender in the Z-Wave network, and all your connections will be safe and secure behind AES128 encryption. The ZTS-500’s available multi-color faceplates allow for seamless integration into a variety of interior designs. + ZTS-500 is a user-friendly Z-Wave programmable smart thermostat. The ZTS-500 is compatible with any Z-Wave certified controller or gateway and is designed to fit perfectly over most original thermostat installation marks without the need for a mounting board. The invisible 4-button back-illuminated interface combines a simple and intuitive interactive experience with a modern fashionable look. The flip-over terminal-board makes installation a breeze, The ZTS-500US allows utilization even in environments where a C wire is not available. With automatic power source detection (24Vac or Battery Power), it decide to maximizing battery life or acting as a range extender in the Z-Wave network, and all your connections will be safe and secure behind AES128 encryption. The ZTS-500’s available multi-color faceplates allow for seamless integration into a variety of interior designs. From the Standby screen, press > or < to navigate to the Z-Wave screen and the Z-Wave LED will continuously flash. -Tap + to include the ZTS-500US into the network. -- The “✔” symbol will be displayed on screen once the ZTS-500US is added into the network. +Tap + to include the ZTS-500 into the network. +- The “✔” symbol will be displayed on screen once the ZTS-500 is added into the network. The Z-Wave disconnect icon will also be removed from the standby screen. -- The “x” symbol will be displayed on screen if there is no action (time out) or unable to include the ZTS-500US into the network. +- The “x” symbol will be displayed on screen if there is no action (time out) or unable to include the ZTS-500 into the network. - ZTS-500US + ZTS-500 Press and keep holding > or < for 3 seconds to navigate to the System Main (SYS) screen. On the Z-Wave (Z-w) screen. -Tap + to exclude ZTS-500US from the network. +Tap + to exclude ZTS-500 from the network. Press < to cancel and back to the previous screen. https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/1767/F-BW8170US (ZTS-500US) User_Manual_V1.01_Z-Wave validation_20160510.pdf Z-WAVE SMART THERMOSTAT Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1767/xml + Update to include AU version, which is idential to the US version but with a different type + https://products.z-wavealliance.org/products/1767/xml + ZTS-500 + Australia / New Zealand - diff --git a/config/ring/PIR-SS.xml b/config/ring/PIR-SS.xml new file mode 100644 index 0000000000..504bfa236b --- /dev/null +++ b/config/ring/PIR-SS.xml @@ -0,0 +1,70 @@ + + + Ring PIR-SS Motion Sensor + Ring Motion sensor is a Z-Wave passive infrared (PIR) motion detector which will be used as a primary intrusion detection unit in the system. + http://www.openzwave.com/device-database/0346:0201:0301 + images/ring/PIR-SS.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2664/Ring%20Motion%20Sensor%20-%20Manual.pdf + Removing the top cover will put the sensor in tamper mode and will keep the sensor awake + Exclusion Instructions: +1. Initiate remove sensor flow in the Ring Alarm mobile application – Select the settings icon from device details page and choose “Remove Device” +2. Open motion sensor’s cover +3. Remove and replace battery quickly + + Inclusion instructions: +1. Install battery, or remove battery tab. Replace cover +2. Place Zwave device controller into inclusion mode. +3. Remove cover. Device LED should go on +4. Press down the tamper cover microswitch for one second then release. +5. Replace cover. + + Factory Default Instructions +1. Using a pointed end of a paperclip, press and hold the reset button via the reset pin hole found at the back of the sensor +2. Blue LED will start to blink rapidly +3. Wait for the blue LED to stop blinking + +Use this procedure only in the event that the network primary controller is missing or otherwise inoperable. + + https://products.z-wavealliance.org/products/2664/ + PIR-SS + U.S. / Canada / Mexico + + Initial Metadata Creation + + + + + + Interval which unsolicted reports are sent. + + + + + Time which sensor will hold onto a motion detected or cleared event. + + + + + Pet Immunity Setting + + + + + + + + Activate walk test for 15 minutes + + + + + + + + + + + + + + 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/schlage/BE468.xml b/config/schlage/BE468.xml index de43e570d2..cc9c364fe6 100644 --- a/config/schlage/BE468.xml +++ b/config/schlage/BE468.xml @@ -1,5 +1,5 @@ - + @@ -65,7 +65,7 @@ Lock Status is Changed, but instead send a Alarm Message - So we trigger a Refresh of the DoorLock Command Class when we recieve a Alarm Message Instead --> - + diff --git a/config/schlage/BE469.xml b/config/schlage/BE469.xml index da847ea6e4..2fb9763b54 100644 --- a/config/schlage/BE469.xml +++ b/config/schlage/BE469.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/003B:5044:6341 images/schlage/BE469.png @@ -9,6 +9,7 @@ U.S. / Canada / Mexico Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/748/xml + Fix TriggerRefreshValue index for Alarm Message @@ -152,7 +153,7 @@ Lock Status is Changed, but instead send a Alarm Message - So we trigger a Refresh of the DoorLock Command Class when we recieve a Alarm Message Instead --> - + diff --git a/config/schlage/BE469ZP.xml b/config/schlage/BE469ZP.xml index cf2c64a7f0..617988babf 100644 --- a/config/schlage/BE469ZP.xml +++ b/config/schlage/BE469ZP.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/003B:0469:0001 images/schlage/BE469ZP.png @@ -49,6 +49,7 @@ NOTE: Please use this procedure only when the network primary controller is miss Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3130/xml + Update TriggerRefreshValue index. @@ -195,7 +196,7 @@ NOTE: Please use this procedure only when the network primary controller is miss Lock Status is Changed, but instead send a Alarm Message - So we trigger a Refresh of the DoorLock Command Class when we recieve a Alarm Message Instead --> - + 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 new file mode 100644 index 0000000000..86cccecc7e --- /dev/null +++ b/config/shenzen_neo/ls03ch.xml @@ -0,0 +1,61 @@ + + + + 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 + + + + + + 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 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 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. + + + + + + + + + + + + + + + + diff --git a/config/shenzen_neo/nas-cs01z.xml b/config/shenzen_neo/nas-cs01z.xml new file mode 100644 index 0000000000..ce085e9ffb --- /dev/null +++ b/config/shenzen_neo/nas-cs01z.xml @@ -0,0 +1,48 @@ + + + + + https://www.szneo.com/en/products/show.php?id=234 + images/shenzen_neo/nas-cs01z.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 + Curtain Switch EU 868.42 MHz + + Initial Release + + + + + This parameter defines if the action for UP/DOWN touch bouton need to be exchange. Default value 1-'Enable' + + + + + This parameter defines if the direction for left/right motor rotation need to be exchange. Default value 0-'Disable' + + + + + 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 led anabled status whe curtain is moving. Default 1-'Enable' + + + + + Settings this configuration as 'Disable' will be disabled to controle the curtain motor by pressed any buttons. Default 1-'Enable' + + + + + + + + + + diff --git a/config/shenzen_neo/nas-pd02z.xml b/config/shenzen_neo/nas-pd02z.xml index 3a5aa9fc31..a0d9c814b9 100644 --- a/config/shenzen_neo/nas-pd02z.xml +++ b/config/shenzen_neo/nas-pd02z.xml @@ -1,5 +1,5 @@ - + + images/shenzen_neo/nas-pd02z.png Fix parameters for temperature model, based on user feedback https://github.com/OpenZWave/open-zwave/issues/1866 + Add Product Pic Entry diff --git a/config/shenzen_neo/nas-pd03z.xml b/config/shenzen_neo/nas-pd03z.xml new file mode 100644 index 0000000000..dc7ade1bfb --- /dev/null +++ b/config/shenzen_neo/nas-pd03z.xml @@ -0,0 +1,118 @@ + + + + + Neo (Coolcam) NAS-PD03Z Motion Sensor (PIR) Version 2 + https://www.szneo.com/en/products/show.php?id=197 + images/shenzen_neo/nas-pd02z.png + Press button in sensor once. If successfull, LED will blink one time. + Set gateway in inclusion mode. Press button in sensor three times. LED will flash red five times and then on and off alternately. + Set gateway in exclusion mode. Press button in sensor three times. LED will flash red five times and then on and off alternately. + Press and hold button the button in sensor for 10-15 seconds. LED will one time first and then five times on and off alternately. Release button. + + Initial version, based on PD02Z file + Changed value type list to byte for index 1, value of index 4 ws not present in list values + + + + + + + Adapt the sensitivity of the motion detection where 8 means highest sensibility and 255 lowest. + + + + This parameter can be determined how long the associated devices should stay ON status. + For instance, this parameter is set to 30(second), the PIR detector will send a BASIC_SET Command to an associated device with value basic set level if PIR detector is triggered and the associated device will be turned on 30(second) before it is turned off. + This Parameter value must be large than Parameter 6# - Retrigger interval. + Available Settings:5 to 600(second). + + + + + Basic Set Command will be sent, on the associated devices (group 2), where contains a value when PIR detector is triggered, the receiver will take it for consideration; for instance, if a lamp module is received the Basic Set Command of which value is decisive as to how bright of dim level of lamp module shall be. + This Parameter is used to some associated devices. + Available Settings: 0, 1 to 99 or 255. + + + + + + Enable the motion detection (PIR) function. + This parameter does not effect the luminance reporting. + + + + + + + + Define the illumination level value which determines when the 'Illumination switch ON function' is activated. + If the illumination level falls below this value and a person moves across or within the detected area, the motion sensor will switch on the associated device (group 2). + 0 to 1000(Lux). + + + + + + Period after motion detection in which the sensor is insensitive for new motion detection. + This value must be less than the 'Motion detection ON time'. + Available Settings: 1 to 8(s). + + + + + + Determine the time between illumination reports, even when value has not changed. + NOTE: This Value Must Be less than Wakeup Interval Time. + Available Settings: 60 ~ 36000(second). + + + + + + Enable the function to switch on a associated device (group 2) once motion has been detected and the illumination level will be less than the value specified in 'Illumination switch ON level'. + + + + + + + This parameter defines by how much Lux Level must change, in lux, to be reported to the main controller. + + + + This parameter is configured the value that differential between current measured and previous report value. If the differential value larger than the settings, device will report this measured temperature value to nodes associated in lifeline. + + + + This parameter can enabled or disable the PIR led blinking function. + + + + + + The motion detected event can be sent multiple times/only once until device report motion cleared event. + + + + + + This parameter defines the calibrated scale for ambient light intensity. + + + + + + + + + + + + + diff --git a/config/shenzen_neo/nas-sc03ze.xml b/config/shenzen_neo/nas-sc03ze.xml new file mode 100644 index 0000000000..7d8efd346b --- /dev/null +++ b/config/shenzen_neo/nas-sc03ze.xml @@ -0,0 +1,74 @@ + + + NEO Coolcam Roller Shutter + NEO Coolcam Roller Shutter - Curtain Switch - NAS-SC03ZE-2-T-V3 + http://www.openzwave.com/device-database/0258:102c:0200 + https://szneo.com/en/products/show.php?id=234 + https://szneo.com/en/service/index.php + images/shenzen_neo/nas-sc03ze.jpg + https://doc.eedomus.com/files/Curtain%20Switch%20NeoCoolcam.pdf + Power on the device + 1. Set Zwave controller intro inclusion mode +2. power on the device +3. touch the middle button 3 times within 1s +4. the device will be entered into inclusion mode automatically +(All Led lights will be bliked with 1s interval until inclusion successfull) + 1. Set Z-WaveControll into exclusion mode +2. Power on the device +3. Touch the middle button 3 times within 1s +4. the device will be entered into exclusion mode +(All led lights will de blinked 3 times with 0.5s interval.) + Power on the device + Keep touching the middle button for 10s until the led turns to red, then release + Unknown + CEPT (Europe) + NAS-SC03ZE + + Initial setup of metadata file + + + + + + + Up/Down Button Swap Enable + + + + + + + Motor Rotation Direction Swap Enable + + + + + + + Backlight Enable + + + + + + + Curtain Moving Indicate Enable + + + + + + + Button Switch + + + + + + + + + + + + diff --git a/config/shenzen_neo/nas-wr01z.xml b/config/shenzen_neo/nas-wr01z.xml index 2733c020b0..ee1a19361d 100644 --- a/config/shenzen_neo/nas-wr01z.xml +++ b/config/shenzen_neo/nas-wr01z.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0258:0087:0003 images/shenzen_neo/nas-wr01z.png @@ -35,6 +35,7 @@ Reset procedure will delete all information on the Z‐Wave network and Z‐Wave Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1670/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1783/xml + Correction to Value genre="config" index="2" instance="1" label="Meter Report Interval" max="65536" should be "65535" https://products.z-wavealliance.org/products/1783/ CEPT (Europe) @@ -51,7 +52,7 @@ Reset procedure will delete all information on the Z‐Wave network and Z‐Wave - + This parameter defines interval time (in seconds) that Meter report data to main controller. diff --git a/config/shenzen_neo/nas-wr01ze.xml b/config/shenzen_neo/nas-wr01ze.xml index bf8afd0c90..d9116330b5 100644 --- a/config/shenzen_neo/nas-wr01ze.xml +++ b/config/shenzen_neo/nas-wr01ze.xml @@ -1,8 +1,44 @@ - + + + http://www.openzwave.com/device-database/0258:1027:0200 + images/shenzen_neo/nas-wr01ze.png + Add the Device (Smart Plug) to Z‐Wave Network +1.Make sure the sensor is powered. +2.Set Z‐Wave controller or Z‐Wave gateway into inclusion mode (Refer to the controller or gateway operating manual) +3.Press the button three times within 1.5 second, the device will enter inclusion mode. And the LED will flash on and off with green alternately five times within 2 seconds. + this power plug is connected to power, not battery powered + This product can be included and operated in any Z‐Wave network with other Z‐Wave certified devices from other manufacturers and/or other applications. All non‐battery operated nodes within the network will act as repeaters regardless of vendor to increase reliability of the network. + +In the front casing, there is button that is used to carry out include, exclude or reset factory default settings on PCB Board. + +When power is first supplied, the LED will flash on and off with yellow alternately every 1 second intervals within 5 seconds if the detector has not been added a Z‐Wave network, otherwise the LED will flash on and off 5 times with cyan alternately every 300 millisecond. Please get familiar with the terms below before starting the operations. + +This Plug has function that remembers the relay states, the plug will turn on after power up next time if the plug is turn on before the power cut‐off. + Smart Power Plug + Delete the Device (Smart Plug) from Z‐Wave Network +1.Make sure the sensor is powered. +2.Set Z‐Wave controller or Z‐Wave gateway into exclusion mode (Refer to the controller or gateway operating manual) +3.Press the button three times within 1.5 second, the device will enter exclusion mode. And the LED will flash on and off with yellow alternately five times within 2 seconds. + Note: to use the reset procedure only when the primary controller is missing or inoperable. +Restore the Device (Smart Plug) to Factory Default Settings + +Reset procedure will delete all information on the Z‐Wave network and Z‐Wave controller or Z‐Wave Gateway, and restore the sensor to factory default settings. +1.Make sure the sensor is powered. + +2.Press and hold the button more than 10 seconds until the LED blink with red color. + +3.Release the button. + NAS-WR01ZE + NAS-WR01ZE + U.S. / Canada / Mexico + + Added metadata, and added US version (type 0100) that is branded "Power Plug" with no model number displayed. There is no matching Z-Wave Alliance database entry. + + diff --git a/config/shenzen_saykey/sk-3007-05.xml b/config/shenzen_saykey/sk-3007-05.xml new file mode 100644 index 0000000000..5b20caef1a --- /dev/null +++ b/config/shenzen_saykey/sk-3007-05.xml @@ -0,0 +1,60 @@ + + + + https://products.z-wavealliance.org/products/2662:0005:3007 + images/shenzen_saykey/SK-3007-05.png + https://products.z-wavealliance.org/products/2662/ + SK-3007-05 + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=Manuals/2662/SK-3007-05-Manual_en_20171112.pdf + Curtain Motor Control with external module + The SK-3007-05 curtain motor external module support connect specify motor to Z-Wave system reply. It support control motor open/close/stop and position, meanwhile it can feedback motor position as soon as it stopped. + 1. Connect power line to motor, plug power socket in 220VAC power supply, and Make sure +the device is located within direct range of the Z-Wave controller. +2. Set the controller into the exclusion/remove mode (refer to controllers operating manual). +3. Click the PB-button triple times in 1.5 second, located left side of the motor external box. +4. Curtain motor will be detected and excluded from the Z-Wave network. + China + 1. Connect power line to motor, plug power socket in 220VAC power supply. +2. Press and hold the PB-button excess 10 second. +3. Curtain motor will be reset to factory default and clear Z-Wave included network state. +Please use this procedure only when the network primary controller is missing or otherwise +inoperable. + 1. Connect power line to motor, plug power socket in 220VAC power supply, and Make sure +the device is located within direct range of the Z-Wave controller. +2. Set the controller into the inclusion/add mode (refer to controllers operating manual). +3. Click the PB-button triple times in 1.5 second, located left side of the motor external box. +4. Curtain motor will be detected and included in the Z-Wave network. +[Note] During inclusion, a LED will fast flash red light until inclusion done. If motor not +included in any controller, a LED will slow flash red light constantly. +[Note1] In order to working properly, user should operate curtain open and close once +manually after power up. If lead tail was changed or re-assembling motor, motor tail +reset should be done by configuration command parameter #7 manually. + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2662 + + + + + + + Support Set only. Toggle motor direction between reverse and default as send out set command with any value(0x00-0xFF). + + + + + Support Set only. Clear motor lead tail endpoint setting as send out set command with any value(0x00-0xFF). + + + + + Support Set only. Enable manual pull function as send out set command with any value(0x00-0xFF). + + + + + + + + + + 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/simon/10002080-13X.xml b/config/simon/10002080-13X.xml new file mode 100755 index 0000000000..80b112433a --- /dev/null +++ b/config/simon/10002080-13X.xml @@ -0,0 +1,96 @@ + + + + images/simon/10002080-13X.png + https://products.z-wavealliance.org/products/2669/ + https://products.z-wavealliance.org/ProductManual/File?filename=MarketCertificationFiles/2669/ROLLERBLIND_991025_990913.pdf + S100 Rocker iO for Roller Blind + + Added support for Simon S100 Rocker iO roller blind. + + + + + + + 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 roller blind UP 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 roller blind DOWN time in minutes. + Values from 1 to 127 - 1 minute to 127 minutes in 1 minute resolution. + + + + + 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). + + + + + 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 Load value (0x00 or 0xFF) + + + + + + Reports whether the roller blind needs calibration. + 0x00 Calibration is not required. + 0xFF It is necessary to calibrate the dimmer to work properly. + + + + + This parameter allows to choose the roller blind operating mode (window shutter or sundblinds). + + + + + + This parameter allows to choose the long press behaviour. + + + + + + + + + + + diff --git a/config/sunricher/srzv9001k12dimz4.xml b/config/sunricher/srzv9001k12dimz4.xml new file mode 100644 index 0000000000..9e5d8e909f --- /dev/null +++ b/config/sunricher/srzv9001k12dimz4.xml @@ -0,0 +1,67 @@ + + + + SR-ZV9001 4 Channel Dimmer Remote Control + The remote control is a Z-Wave device that can both control other Z-Wave + devices and activate scenes in Gateways. + + http://www.openzwave.com/device-database/0330:b302:0300 + + https://www.sunricher.com/single-color-z-wave-remote-secondary-controller-sr-zv9001k12-dim-z4.html + + images/sunricher/srzv9001k12dimz4.png + + https://www.sunricher.com/media/resources/manual/SR-ZV9001K12-DIM-Z4%20V2%20Instruction.pdf + + Short press any button to activate the remote control for 3s, and press + and hold down both buttons All On and All Off for over 1 second to activate the remote control for 7s. + + + Step 1. Make sure the remote control does not belong to any Z-Wave network, short press any button, if LED + indicator does not turn on, the remote control does not belong to any network, then continue step 2,if LED + indicator turns on, it means the remote control has already been included to a network, please first set the + remote control to exclusion mode (refer to the part "Exclusion" of this manual),then continue step 2. + Step 2. Set primary controller/gateway into inclusion mode (Please refer to your primary controllers manual + on how to turn your controller into inclusion). + Step 3. Press and hold down both buttons All On and All Off for over 3 seconds, LED indicator turns on, the + remote control will be set to inclusion mode, and waiting to be included, after 10s LED indicator blinks 6 + times quickly to indicate successful inclusion. The remote control is a sleepy device, after inclusion it + will not enter into sleepy mode immediately, and will continue activation status for 30s and wait data + interaction from the gateway, the LED indicator will stay solid on, please be patient to wait LED indicator + to turn off. + + + There are two exclusion methods: + Method 1: Exclusion from the primary controller/gateway as follows: + 1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual + on how to set your controller into exclusion). + 2. Press and hold down both buttons All On and All Off for over 3 seconds, LED indicator turns on, the + remote control will be set to exclusion mode, and waiting to be excluded, after 7s LED indicator blinks 4 + times quickly to indicate successful exclusion. + Method 2: Factory reset the remote control will force the remote control to be excluded from a network. + (please refer to the part “Factory Reset” of this manual) + + + Press and hold down both buttons All On and All Off for over 10 seconds, LED indicator turns on and then + blinks 4 times quickly to indicate successful factory reset. + + CEPT (Europe) + U.S. / Canada / Mexico + Australia / New Zealand + SR-ZV9001K12-DIM-Z4 + SR-ZV9001K12-DIM-Z4 + SR-ZV9001K12-DIM-Z4 + + Initial Configuration file + + + + + + + + + + + + \ No newline at end of file diff --git a/config/sunricher/srzv9001k12dimz5.xml b/config/sunricher/srzv9001k12dimz5.xml new file mode 100644 index 0000000000..36722f904f --- /dev/null +++ b/config/sunricher/srzv9001k12dimz5.xml @@ -0,0 +1,68 @@ + + + + SR-ZV9001 5 Channel Dimmer Remote Control + The remote control is a Z-Wave device that can both control other Z-Wave + devices and activate scenes in Gateways. + + http://www.openzwave.com/device-database/0330:b301:0300 + + https://www.sunricher.com/single-color-z-wave-remote-secondary-controller-sr-zv9001k12-dim-z5.html + + images/sunricher/srzv9001k12dimz5.png + + https://www.sunricher.com/media/resources/manual/SR-ZV9001K12-DIM-Z5%20V2%20Instruction.pdf + + Short press any button to activate the remote control for 3s, and press + and hold down both buttons All On and All Off for over 1 second to activate the remote control for 7s. + + + Step 1. Make sure the remote control does not belong to any Z-Wave network, short press any button, if LED + indicator does not turn on, the remote control does not belong to any network, then continue step 2,if LED + indicator turns on, it means the remote control has already been included to a network, please first set the + remote control to exclusion mode (refer to the part "Exclusion" of this manual),then continue step 2. + Step 2. Set primary controller/gateway into inclusion mode (Please refer to your primary controllers manual + on how to turn your controller into inclusion). + Step 3. Press and hold down both buttons All On and All Off for over 3 seconds, LED indicator turns on, the + remote control will be set to inclusion mode, and waiting to be included, after 10s LED indicator blinks 6 + times quickly to indicate successful inclusion. The remote control is a sleepy device, after inclusion it + will not enter into sleepy mode immediately, and will continue activation status for 30s and wait data + interaction from the gateway, the LED indicator will stay solid on, please be patient to wait LED indicator + to turn off. + + + There are two exclusion methods: + Method 1: Exclusion from the primary controller/gateway as follows: + 1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual + on how to set your controller into exclusion). + 2. Press and hold down both buttons All On and All Off for over 3 seconds, LED indicator turns on, the + remote control will be set to exclusion mode, and waiting to be excluded, after 7s LED indicator blinks 4 + times quickly to indicate successful exclusion. + Method 2: Factory reset the remote control will force the remote control to be excluded from a network. + (please refer to the part “Factory Reset” of this manual) + + + Press and hold down both buttons All On and All Off for over 10 seconds, LED indicator turns on and then + blinks 4 times quickly to indicate successful factory reset. + + CEPT (Europe) + U.S. / Canada / Mexico + Australia / New Zealand + SR-ZV9001K12-DIM-Z5 + SR-ZV9001K12-DIM-Z5 + SR-ZV9001K12-DIM-Z5 + + Initial Configuration file + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/sunricher/srzv9001k2dim.xml b/config/sunricher/srzv9001k2dim.xml new file mode 100644 index 0000000000..7be2f12a94 --- /dev/null +++ b/config/sunricher/srzv9001k2dim.xml @@ -0,0 +1,46 @@ + + + http://www.openzwave.com/device-database/0330:a30f:0300 + https://www.sunricher.com/single-color-wall-mounted-z-wave-push-button-secondary-controller-light-switch-sr-zv9001k2-dim.html + images/sunricher/srzv9001k2dim.png + https://products.z-wavealliance.org/products/3900 + https://www.sunricher.com/media/resources/manual/SR-ZV9001K2-DIM%20Instruction%20V1.pdf + The remote control is a Z-Wave device that can both control other Z-Wave devices and activate scenes in Gateways. + Wall Controller + CEPT (Europe) + SR-ZV9001K2-DIM + Step 1. Make sure the remote control does not belong to any Z-Wave network, short press any button, if LED +indicator does not turn on, the remote control does not belong to any network, then continue step 2,if LED +indicator turns on, it means the remote control has already been included to a network, please first set the +remote control to exclusion mode (refer to the part "Exclusion" of this manual),then continue step 2. +Step 2. Set primary controller/gateway into inclusion mode (Please refer to your primary controllers manual on +how to turn your controller into inclusion). +Step 3. Press and hold down both buttons and of Group 2 over 3 seconds, LED indicator turns on, the +remote control will be set to inclusion mode, and waiting to be included, after 10s LED indicator blinks 6 times +quickly to indicate successful inclusion. The remote control is a sleepy device, after inclusion it will not enter +into sleepy mode immediately, and will continue activation status for 30s and wait data interaction from the +gateway, the LED indicator will stay solid on, please be patient to wait LED indicator to turn off. + There are two exclusion methods: +Method 1: Exclusion from the primary controller/gateway as follows: +1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual on +how to set your controller into exclusion). +2. Press and hold down both buttons and of Group 2 over 3 seconds, LED indicator turns on, the remote +control will be set to exclusion mode, and waiting to be excluded, after 7s LED indicator blinks 4 times quickly to +indicate successful exclusion. +Method 2: Factory reset the remote control will force the remote control to be excluded from a network. (please +refer to the part “Factory Reset” of this manual) +Note: Factory reset is not recommended for exclusion, please use this procedure only if the primary +controller/gateway is missing or otherwise inoperable. + Press and hold down both I and O buttons together for over 10 seconds, LED indicator turns on and then blinks 4 times quickly to indicate successful factory reset. + + Initial Configuration file + + + + + + + + + + diff --git a/config/sunricher/srzv9001k4dim.xml b/config/sunricher/srzv9001k4dim.xml new file mode 100644 index 0000000000..6af709fe9b --- /dev/null +++ b/config/sunricher/srzv9001k4dim.xml @@ -0,0 +1,45 @@ + + + http://www.openzwave.com/device-database/0330:a310:0300 + https://www.sunricher.com/single-color-wall-mounted-push-button-z-wave-secondary-controller-dimmer-switch-sr-zv9001k4-dim.html + images/sunricher/srzv9001k4dim.png + https://www.sunricher.com/media/resources/manual/SR-ZV9001K4-DIM%20Instruction%20V1.pdf + The remote control is a Z-Wave device that can both control other Z-Wave devices and activate scenes in Gateways. + Wall Controller + CEPT (Europe) + SR-ZV9001K4-DIM + Step 1. Make sure the remote control does not belong to any Z-Wave network, short press any button, if LED +indicator does not turn on, the remote control does not belong to any network, then continue step 2,if LED +indicator turns on, it means the remote control has already been included to a network, please first set the +remote control to exclusion mode (refer to the part "Exclusion" of this manual),then continue step 2. +Step 2. Set primary controller/gateway into inclusion mode (Please refer to your primary controllers manual on +how to turn your controller into inclusion). +Step 3. Press and hold down both buttons and of Group 2 over 3 seconds, LED indicator turns on, the +remote control will be set to inclusion mode, and waiting to be included, after 10s LED indicator blinks 6 times +quickly to indicate successful inclusion. The remote control is a sleepy device, after inclusion it will not enter +into sleepy mode immediately, and will continue activation status for 30s and wait data interaction from the +gateway, the LED indicator will stay solid on, please be patient to wait LED indicator to turn off. + There are two exclusion methods: +Method 1: Exclusion from the primary controller/gateway as follows: +1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual on +how to set your controller into exclusion). +2. Press and hold down both buttons and of Group 2 over 3 seconds, LED indicator turns on, the remote +control will be set to exclusion mode, and waiting to be excluded, after 7s LED indicator blinks 4 times quickly to +indicate successful exclusion. +Method 2: Factory reset the remote control will force the remote control to be excluded from a network. (please +refer to the part “Factory Reset” of this manual) +Note: Factory reset is not recommended for exclusion, please use this procedure only if the primary +controller/gateway is missing or otherwise inoperable. + Press and hold down both buttons I and O of Group 2 for over 10 seconds, LED indicator turns on and then blinks 4 times quickly to indicate successful factory reset. + + Initial Configuration file + + + + + + + + + + diff --git a/config/sunricher/srzv9001k4dimg2.xml b/config/sunricher/srzv9001k4dimg2.xml new file mode 100644 index 0000000000..c95bad777f --- /dev/null +++ b/config/sunricher/srzv9001k4dimg2.xml @@ -0,0 +1,46 @@ + + + http://www.openzwave.com/device-database/0330:a306:0300 + images/sunricher/srzv9001k4dimg2.png + https://products.z-wavealliance.org/products/3783 + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3783/SR-ZV9001K4-DIM-G2%20Instruction.pdf + The remote control is a Z-Wave device that can both control other Z-Wave devices and activate scenes in Gateways. + Wall Controller + CEPT (Europe) + SR-ZV9001K4-DIM-G2 + Step 1. Make sure the remote control does not belong to any Z-Wave network, short press any button, if LED +indicator does not turn on, the remote control does not belong to any network, then continue step 2,if LED +indicator turns on, it means the remote control has already been included to a network, please first set the +remote control to exclusion mode (refer to the part "Exclusion" of this manual),then continue step 2. +Step 2. Set primary controller/gateway into inclusion mode (Please refer to your primary controllers manual on +how to turn your controller into inclusion). +Step 3. Press and hold down both buttons and of Group 2 over 3 seconds, LED indicator turns on, the +remote control will be set to inclusion mode, and waiting to be included, after 10s LED indicator blinks 6 times +quickly to indicate successful inclusion. The remote control is a sleepy device, after inclusion it will not enter +into sleepy mode immediately, and will continue activation status for 30s and wait data interaction from the +gateway, the LED indicator will stay solid on, please be patient to wait LED indicator to turn off. + There are two exclusion methods: +Method 1: Exclusion from the primary controller/gateway as follows: +1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual on +how to set your controller into exclusion). +2. Press and hold down both buttons and of Group 2 over 3 seconds, LED indicator turns on, the remote +control will be set to exclusion mode, and waiting to be excluded, after 7s LED indicator blinks 4 times quickly to +indicate successful exclusion. +Method 2: Factory reset the remote control will force the remote control to be excluded from a network. (please +refer to the part “Factory Reset” of this manual) +Note: Factory reset is not recommended for exclusion, please use this procedure only if the primary +controller/gateway is missing or otherwise inoperable. + Press and hold down both buttons I and O of Group 2 for over 10 seconds, LED indicator turns on and then blinks 4 times quickly to indicate successful factory reset. + + Initial Configuration file + + + + + + + + + + + diff --git a/config/sunricher/srzv9001tccteu.xml b/config/sunricher/srzv9001tccteu.xml new file mode 100644 index 0000000000..7b003a270d --- /dev/null +++ b/config/sunricher/srzv9001tccteu.xml @@ -0,0 +1,43 @@ + + + Z-Wave CCT Wall Controller + The Wall controller is a Security Enabled Z-Wave Plus device that can both control another Z-Wave device. + http://www.openzwave.com/device-database/0330:0300:a104 + https://www.sunricher.com/touch-panel-dual-color-z-wave-secondary-controller-sr-zv9001t-cct.html#product_tabs_description_tabbed + http://www.sunricher.com/ + images/sunricher/srzv9001tccteu.png + https://www.sunricher.com/media/resources/manual/SR-ZV9001T-CCT-EU%20Instruction.pdf + Short press the “inclusion/exclusion” button, 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, 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 for over 8 seconds, LED indicator blinks slowly to indicate successful factory reset, release “inclusion/exclusion” button,the wall controller will restart automatically. + + CEPT (Europe) + SR-ZV9001T-CCT-EU + + Initial entry based on manufacturer data and test device + + + + + + Choose working mode of the remote control. + + + + + + + + + false + + + + + + + + + + diff --git a/config/sunricher/srzv9100aa.xml b/config/sunricher/srzv9100aa.xml new file mode 100644 index 0000000000..1b24b206c8 --- /dev/null +++ b/config/sunricher/srzv9100aa.xml @@ -0,0 +1,80 @@ + + + http://www.openzwave.com/device-database/0330:d00f:0200 + images/sunricher/zv9100a.png + https://products.z-wavealliance.org/products/3333 + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3331/SR-ZV9100A-A%20In-Wall%20Smart%20Switch.pdf + The in-wall smart switch is a Z-Wave device designed to work with various types of light sources. + In-wall switch + CEPT (Europe) + SR-ZV9100A-A + Step 1. Set primary controller/gateway into inclusion mode (Please refer to your primary controllers manual on +how to turn your controller into inclusion). +Step 2. Power on the in-wall switch and set it into inclusion mode. There are two methods to set the in-wall switch into inclusion mode: +1)Repower on the switch, it will be set into inclusion mode automatically, and waiting to be included. +2)Triple press the action button on the switch, it will set the switch into inclusion mode. + There are two exclusion methods: +Method 1: Exclusion from the primary controller/gateway as follows: +1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual on +how to set your controller into exclusion). +2. Press and hold down both buttons and of Group 2 over 3 seconds, LED indicator turns on, the remote +control will be set to exclusion mode, and waiting to be excluded, after 7s LED indicator blinks 4 times quickly to +indicate successful exclusion. +Method 2: Factory reset the remote control will force the remote control to be excluded from a network. (please +refer to the part “Factory Reset” of this manual) +Note: Factory reset is not recommended for exclusion, please use this procedure only if the primary +controller/gateway is missing or otherwise inoperable. + Press and hold down the action button for over 10 seconds, the switch will be reset to factory defaults. + + Initial Configuration file + + + + + + + + + Saving state before power failure. + Default Not saved. + + + + + + + Enable/disable to send the basic report to the Lifeline when the load state changed. + When value set as 1, re-power on the switch, it will send Basic report automatically. + Default Enabled. + + + + + + Enable/disable external switch to be added to and removed from a network. + When enables this function, triple press the external switch within 1.5 seconds to be added to or removed from a net-work. + Default Enabled. + + + + + + + Choose external switch type. + Default push button switch. + + + + + + + + + + + + + diff --git a/config/sunricher/srzv9101sachpswitch.xml b/config/sunricher/srzv9101sachpswitch.xml new file mode 100644 index 0000000000..ac7ac54fde --- /dev/null +++ b/config/sunricher/srzv9101sachpswitch.xml @@ -0,0 +1,65 @@ + + + http://www.openzwave.com/device-database/0330:D006:0200 + https://www.sunricher.com/z-wave-ac-in-wall-switch-sr-zv9101sac-hp-switch.html + images/sunricher/srzv9101sachpswitch.png + Press and hold down the action button for over 10 seconds, the dimmer will be reset to factory defaults. + +Note: Factory reset is not recommended for exclusion, please use this procedure only if the primary controller/gateway is missing or otherwise inoperable. + The in-wall switch is a Z-Wave device that is used to switch ON/OFF the connected light and can be controlled +by other Z-Wave devices. The In-wall switch can be included and operated in any Z-Wave network with other ZWave certified devices from other manufacturers and/or other applications. All non-battery operated nodes +within the network will act as repeaters regardless of vendor to increase reliability of the network. + Z-Wave AC In Wall Switch + 1. Set primary controller/gateway into inclusion mode (Please refer to your primary controller’s manual on how to turn your controller into inclusion). +2. Power on the in-wall switch and set it into inclusion mode. There are two methods to set the in-wall switch into inclusion mode: +1)Repower on the switch, it will be set into inclusion mode automatically, and waiting to be included. +2)Triple press the action button on the switch, it will set the switch into inclusion mode. +The connected light will stay solid on for 3 seconds to indicate successful inclusion. + There are two exclusion methods: +Method 1: Exclusion from the primary controller/gateway as follows: +1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual on how to set your controller into exclusion). +2. Triple press the action button, the switch will be set to exclusion mode, and waiting to be excluded, then the switch will be excluded from the network. +Method 2: Factory reset the switch will force it to be excluded from a network. (please refer to the part “Factory Reset” of this manual) +Note: Factory reset is not recommended for exclusion, please use this procedure only if the primary controller/gateway is missing or otherwise inoperable. + https://www.sunricher.com/media/resources/manual/SR-ZV9101SAC-HP-Switch%20Instruction.pdf + SR-ZV9101SAC-HP-Switch + CEPT (Europe) + + Initial Configuration file + + + + + + + Saving state before power failure. + Default Not saved. + + + + + + + Enable/disable to send the basic report to the Lifeline when the load state changed. + When value set as 1, re-power on the switch, it will send Basic report automatically. + Default Enabled. + + + + + + Enable/disable external switch to be added to and removed from a network. + When enables this function, triple press the external switch within 1.5 seconds to be added to or removed from a net-work. + Default Enabled. + + + + + + + + + + + + diff --git a/config/sunricher/zv2835rac.xml b/config/sunricher/zv2835rac.xml new file mode 100644 index 0000000000..1fed035930 --- /dev/null +++ b/config/sunricher/zv2835rac.xml @@ -0,0 +1,161 @@ + + + http://www.openzwave.com/device-database/0330:D017:0200 + CEPT (Europe) + 1. Set primary controller/gateway into inclusion mode (Please refer to your primary controller’s manual on how to turn your controller into inclusion) + +2. Power on the knob dimmer and set it into inclusion mode. There are two methods to set the dimmer into inclusion mode: + +1) Repower on the dimmer, it will be set into inclusion mode automatically, and waiting to be included. +2) Triple press reset button on the dimmer, it will set the dimmer into inclusion mode + Knob Smart Dimmer + ZV2835RAC + Press and hold down the action button for over 10 seconds, the dimmer will be reset to factory defaults. + There are two exclusion methods: +Method 1: Exclusion from the primary controller/gateway as follows: +1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual on how to set your controller into exclusion). +2. Triple press reset button, the dimmer will be set to exclusion mode, and waiting to be excluded, then the dimmer will be excluded from the network. + +Method 2: Factory reset the dimmer will force it to be excluded from a network. (please refer to the part “Factory Reset” of this manual) + +Note: Factory reset is not recommended for exclusion, please use this procedure only if the primary controller/gateway is missing or otherwise inoperable. + The knob smart dimmer is a Z-Wave device designed to work with various types of light sources. It may be connected to two-wire or three-wire configuration so it can operate with or without neutral lead. The dimmer can switch or dim connected light source either through Z-Wave devices or through the rotary knob directly. The smart dimmer is equipped with an algorithm of smart light source detection which makes configuration easier and ensures high compatibility of the device. It may be used as a switch with non-dimmable light sources (in 3-wire connection). + images/sunricher/zv2835rac.png + + Inital support based on the products manual. + + + + + + + + Saving state before power failure. Default is saved. + + + + + + + Enable/disable to send the basic report to the Lifeline when the load state changed. + When value set as 1, re-power on the dimmer, it will send Basic report automatically. + Default Enabled. + + + + + + Fade time in seconds. 0 is instantly, default is 1. + + + Setting minimum brightness value. + Valid value: 0 - 50, the bigger the value is, the higher the loads minimum brightness is. + + + + Setting maximum brightness value. + Valid value: 0 - 100. + + + + Choose MOSFET driving type. Default trailing edge. + + + + + + Corresponding dimming stepping level for each rotation of the knob (a full dimming stepping level is 99),Valid value: 1-50. + + + + Added to and removed from a network through external switch (when enables this function, triple press the external switch within 1.5 seconds to be added to or removed from a network) + + + + + + + Enable/disable to detect load after re-power on (detect load type, minimum brightness, maximum brightness) + + Note: When the device does not belong to any network, load detection will be enabled every time after re-power on. When the device has already been added to a network, load detection will be disabled + + + + + + + Wiring type + + + + + + + + Load type + + + + + + + + + Enable/disable over current protection (over 3.2A for 20 seconds continuously). + + + + + + + + Power automatic report absolute threshold, unit is WWhen power changes above the absolute threshold, immediately report current power value + + + + + +Power automatic report percentage threshold, unit is %. When power changes above the percentage threshold, immediately report current power value. + + + + + Power metering automatic report time cycle, unit is second. Valid time cycle value: 5~2678400. Default is 600 (10 minutes). + + + + + Energy metering automatic report time cycle, unit is second. Valid time cycle value: 5~2678400. Default is 1800 (30 minutes). + + + + + Voltage metering automatic report time cycle, unit is second. Valid time cycle value: 5~2678400. Default is 3600 (60 minutes). + + + + + Current metering automatic report time cycle, unit is second. Valid time cycle value: 5~2678400. Default is 3600 (60 minutes). + + + + + Setting dimming curve. + + + + + + + Setting startup brightness of the loadValid value: 0~99Note: every time when turn on the load from OFF status, if the target brightness is lower than the startup brightness, the brightness will first go to the startup brightness value then fall down to the target brightness. + + + + + + + + + + + diff --git a/config/sunricher/zv9101fa.xml b/config/sunricher/zv9101fa.xml new file mode 100644 index 0000000000..3fba18c362 --- /dev/null +++ b/config/sunricher/zv9101fa.xml @@ -0,0 +1,96 @@ + + + http://www.openzwave.com/device-database/0330:D002:0200 + images/sunricher/srzv9101facct.png + CEPT (Europe) + U.S. / Canada / Mexico + Australia / New Zealand + Russia + 1. Set primary controller/gateway into inclusion mode (Please refer to your primary controllers manual on how to turn your controller into inclusion). +2. Power on the in-wall dimmer and set it into inclusion mode. There are two methods to set the in-wall dimmer into inclusion mode: +1)Repower on the dimmer, it will be set into inclusion mode automatically, and waiting to be included. +2)Triple press the action button on the dimmer, it will set the plug into inclusion mode. +The connected light will stay solid on for 3 seconds to indicate successful inclusion. + Dimmable LED controller + https://www.sunricher.com/media/resources/manual/SR-ZV9101FA-CCT%20Instruction%20V1.pdf + SR-ZV9101FA + Press and hold down the action button for over 10 seconds, the dimmer will be reset to factory defaults. + There are two exclusion methods: +Method 1: Exclusion from the primary controller/gateway as follows: +1. Set the primary controller/gateway into exclusion mode (Please refer to your primary controllers manual on how to set your controller into exclusion). +2. Triple press the action button, the dimmer will be set to exclusion mode, and waiting to be excluded, then the dimmer will be included to the network. +Method 2: Factory reset the dimmer will force the it to be excluded from a network. +(please refer to the part “Factory Reset” of this manual) +Note: Factory reset is not recommended for exclusion, please use this procedure only if the primary controller/gateway is missing or otherwise inoperable. + The LED dimmer is a Z-Wave device that is used to switch ON/OFF, adjust light intensity and optionally the color temperature and rgbw of the connected tunable LED light and can be controlled by other Z-Wave devices. + + Initial import, adapted from ZV9101 + + + + + + + + + Saving state before power failure. Default Not saved. + + + + + + + Enable/disable to send the basic report to the Lifeline when the load state changed. + When value set as 1, re-power on the dimmer, it will send Basic report automatically. + Default Enabled. + + + + + + Choose a cool light stage mode (when receiving Command Class Switch Color, it recovers to normal lighting mode.) + + + + + + + + + + + + + Speed of stage mode. 0 is the slowest, 255 is the fastest + + + + + Execution times of stage mode. + 0: unlimited times. + 1~255: execution times 1~255 + + + + + The hue of stage mode. The hue is only valid for fade in and fade out mode, flash mode + + + + + Enable/disable external switch to be added to and removed from a network (when enables this function, triple press the external switch within 1.5 seconds to be added to or removed from a network) + + + + + + + + + + + + diff --git a/config/technisat/03009496.xml b/config/technisat/03009496.xml new file mode 100644 index 0000000000..0051b6a0f0 --- /dev/null +++ b/config/technisat/03009496.xml @@ -0,0 +1,71 @@ + + + http://www.openzwave.com/device-database/0299:1A93:0005 + images/technisat/03009496.png + https://products.z-wavealliance.org/products/3778/ + TechniSat Shutter is powered with mains voltage so it is always awake. + Use this procedure only when the network primary controller is missing or otherwise inoperable. 1. When the roller shutter is in the lowermost position, press and hold T2 for more than 20 seconds. 2. The LED will alternately flash red and green for 5 seconds after a successful reset. + 0300/9496 + Shutter + 1. Install the TechniSat Shutter. + 2. After checking the correct installation, re-enable electrical power at the main fuse or circuit breaker. + 3. Start the Z-Wave device add mode on your Z-Wave gateway, according to the gateway‘s manual. + 4. Press T1 3x within 1 second. + 5. The red status LED is on while the device is added to the Z-Wave network. + 6. The green LED is on for 5 seconds after successfully adding the device. + + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3778/Manual_SMD01_Shutter.pdf + CEPT (Europe) + 1. Start the Z-Wave device remove mode on your Z-Wave gateway, according to the gateway‘s manual. + 2. When the roller shutter is in the uppermost position, press and hold T1 for more than 10 seconds. + 3. The red status LED is on while the device is removed from the Z-Wave network. + 4. The green LED is on for 5 seconds after successfully removing the device. + + Designed as a drop-in replacement for your shutter wall switch from leading brand manufacturers, TechniSat's Shutter-Switch integrates your wall switch into the Smart Home future. Featuring Z-Wave SmartStart and S2 security for easy installation and secure operation, your shutter switch can now be controlled from your Smart Home as well. + - Full manual operation + - can trigger central scenes via multiple button clicks + - Short circuit and overload protection monitoring + + + Initial file based on z-wavealliance.org + Value type for "Parameter 2" and "Parameter 3" changed to "short" as parameter size is 2 bytes. + + + + + + + Enable/disable central scene notifications for 2x-5x button presses. + + + + + + + 3 to 8640 - Interval of current wattage meter reports in 10 seconds increments. + 0 - Disable unsolicited meter reports of current wattage. + + + + + Interval of active energy meter reports in minutes. + - 10 to 30240 - Interval of active energy meter unsolicited reports in minutes (10 minutes - 3 weeks) + - 0 - Disable unsolicited meter reports of active energy. + + + + + Setting this parameter to 1 will start a manual shutter calibration. + + + + + + + + + + + + + diff --git a/config/technisat/03009497.xml b/config/technisat/03009497.xml new file mode 100644 index 0000000000..2d9c3ade5b --- /dev/null +++ b/config/technisat/03009497.xml @@ -0,0 +1,105 @@ + + + + images/technisat/03009497.png + https://products.z-wavealliance.org/products/3798/ + TechniSat Dimmer-Switch is powered with mains voltage so it is always awake. + Use this procedure only when the network primary controller is missing or otherwise inoperable. + 1. Press and hold position T2 for more than 20 seconds. + 2. The LED will alternately flash red and green for 5 seconds after a successful reset. + + 0300/9497 + Dimmer + 1. Install the TechniSat Dimmer. + 2. After checking the correct installation, re-enable electrical power at the main fuse or circuit breaker. + 3. Start the Z-Wave device add mode on your Z-Wave gateway, according to the gateway‘s manual. + 4. Press T1 3x within 1 second. + 5. The red status LED is on while the device is added to the Z-Wave network. + 6. The green LED is on for 5 seconds after successfully adding the device. + + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3798/Manual_SMD01_Dimmer.pdf + CEPT (Europe) + 1. Start the Z-Wave device remove mode on your Z-Wave gateway, according to the gateway‘s manual. + 2. Press and hold position T1 for more than 10 seconds. + 3. The red status LED is on while the device is removed from the Z-Wave network. + 4. The green LED is on for 5 seconds after successfully removing the device. + + Designed as a drop-in replacement for your single wall switch or dimmer from leading brand manufacturers, TechniSat's Dimmer integrates your wall switch into the Smart Home future. + Featuring Z-Wave SmartStart and S2 security for easy installation and secure operation, yourdimmer can now be controlled from your Smart Home as well. + ● Full manual operation + ● can trigger central scenes via multiple button clicks + ● Integrated 230 V auxiliary input for push button or toggle switch types, applicable in alternating switching and or intermediate switching circuits + ● Short circuit and overload protection monitoring + + + Initial file based on the work of Mathis Klooss for the Single-Switch and z-wavealliance.org information+local handbook + Value type for "Parameter 2" and "Parameter 3" changed to "short" as parameter size is 2 bytes. + + + + + + + Enable/disable central scene notifications for 2x-5x button presses. + + + + + + + 3 to 8640 - Interval of unsolicited reports in 10s increments, a value of 3 means 30 seconds (30 seconds - 1 day) + 0 - Disable unsolicited meter reports of current wattage. + + + + + Interval of active energy meter reports in minutes. + - 10 to 30240 - Interval of active energy meter unsolicited reports in minutes (10 minutes - 3 weeks) + - 0 - Disable unsolicited meter reports of active energy. + + + + + Operations mode for push buttons controlling the output. + - Normal Switch: In this mode the top button will turn the output on, while the bottom button will turn the output off. + - Toogle Switch: In this mode any button press will toggle the output - when on it will be turned off, when off it will be turned on. + + + + + + + Configuration of switch type connected to extension input S. + - External Normal Switch: Use this value if a toggle switch is connected to extension input S. + - External Push Button: Use this value if a push button switch is connected to extension input S. + + + + + + + Central Scene mapping of extension input S. + - Central Scene 1: Multiple button presses (2x-5x) on extension input S will trigger events of central scene 1. + - Central Scene 2: Multiple button presses (2x-5x) on extension input S will trigger events of central scene 2. + - Central Scene 3: Multiple button presses (2x-5x) on extension input S will trigger events of central scene 3 - an additional central scene exclusive to extension input S. + + + + + + + + Select the dimming curve that should be used. + + + + + + + + + + + + + diff --git a/config/technisat/03009499.xml b/config/technisat/03009499.xml new file mode 100644 index 0000000000..47732de18b --- /dev/null +++ b/config/technisat/03009499.xml @@ -0,0 +1,97 @@ + + + http://www.openzwave.com/device-database/0299:1A90:0002 + images/technisat/03009499.png + https://products.z-wavealliance.org/products/3677/ + TechniSat Single-Switch is powered with mains voltage so it is always awake. + Use this procedure only when the network primary controller is missing or otherwise inoperable. + 1. Press and hold position T2 for more than 20 seconds. + 2. The LED will alternately flash red and green for 5 seconds after a successful reset. + + 0300/9496 + Shutter + 1. Install the TechniSat Single-Switch. + 2. After checking the correct installation, re-enable electrical power at the main fuse or circuit breaker. + 3. Start the Z-Wave device add mode on your Z-Wave gateway, according to the gateway‘s manual. + 4. Press position T1 3x within 1 second. + 5. The red status LED is on while the device is added to the Z-Wave network. + 6. The green LED is on for 5 seconds after successfully adding the device. + + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3778/Manual_SMD01_Shutter.pdf + CEPT (Europe) + 1. Start the Z-Wave device remove mode on your Z-Wave gateway, according to the gateway‘s manual. + 2. Press and hold position T1 for more than 10 seconds. + 3. The red status LED is on while the device is removed from the Z-Wave network. + 4. The green LED is on for 5 seconds after successfully removing the device. + + Designed as a drop-in replacement for your single wall switch from leading brand manufacturers, TechniSat's Single-Switch integrates your wall switch into the Smart Home future. Featuring Z-Wave SmartStart and S2 security for easy installation and secure operation, your wall switch can now be controlled from your Smart Home as well. + - Full manual operation + - can trigger central scenes via multiple button clicks + - Integrated 230 V auxiliary input for push buttons or toggle switch types, applicable in alternating switching and or intermediate switching circuits + - Short circuit and overload protection monitoring + + + Initial file based on z-wavealliance.org + Value type for "Parameter 2" and "Parameter 3" changed to "short" as parameter size is 2 bytes. + + + + + + + Enable/disable central scene notifications for 2x-5x button presses. + + + + + + + 3 to 8640 - Interval of unsolicited reports in 10s increments (30 seconds - 1 day) + 0 - Disable unsolicited meter reports of current wattage. + + + + + Interval of active energy meter reports in minutes. + - 10 to 30240 - Interval of active energy meter unsolicited reports in minutes (10 minutes - 3 weeks) + - 0 - Disable unsolicited meter reports of active energy. + + + + + Operations mode for push buttons controlling the output. + - Normal Switch: In this mode the top button will turn the output on, while the bottom button will turn the output off. + - Toogle Switch: In this mode any button press will toggle the output - when on it will be turned off, when off it will be turned on. + + + + + + + Configuration of switch type connected to extension input S. + - Normal Switch: Use this value if a toggle switch is connected to extension input S. + - Toogle Switch: Use this value if a push button switch is connected to extension input S. + + + + + + + Central Scene mapping of extension input S. + - Central Scene 1: Multiple button presses (2x-5x) on extension input S will trigger events of central scene 1. + - Central Scene 2: Multiple button presses (2x-5x) on extension input S will trigger events of central scene 2. + - Central Scene 3: Multiple button presses (2x-5x) on extension input S will trigger events of central scene 3 - an additional central scene exclusive to extension input S. + + + + + + + + + + + + + + diff --git a/config/thermofloor/heatit-zdim.xml b/config/thermofloor/heatit-zdim.xml new file mode 100644 index 0000000000..f1b08e7a19 --- /dev/null +++ b/config/thermofloor/heatit-zdim.xml @@ -0,0 +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 + 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/heatit021.xml b/config/thermofloor/heatit021.xml index 8828667ada..ae598237d9 100644 --- a/config/thermofloor/heatit021.xml +++ b/config/thermofloor/heatit021.xml @@ -1,8 +1,9 @@ - + http://www.openzwave.com/device-database/019B:0001:0001 images/thermofloor/heatit021.png https://products.z-wavealliance.org/products/1234/ + https://products.z-wavealliance.org/products/1182/ 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. @@ -51,8 +52,10 @@ 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=Manuals/1234/Manual_Multireg Z-Wave_Ver2015-A.pdf CEPT (Europe) + CEPT (Europe) Heatit Z-Wave TF021 + 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. @@ -67,6 +70,7 @@ Leave programming mode by choosing ESC in menu. Your thermostat is ready for use Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1182/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1234/xml + Assigned this config to TF016 as well - https://products.z-wavealliance.org/products/1182/xml diff --git a/config/thermofloor/heatit058.xml b/config/thermofloor/heatit058.xml new file mode 100644 index 0000000000..a97cc9abe0 --- /dev/null +++ b/config/thermofloor/heatit058.xml @@ -0,0 +1,174 @@ + + + + http://www.openzwave.com/device-database/019B:0203:0003 + images/thermofloor/heatit058.png + https://products.z-wavealliance.org/products/3802/ + Adding the device: +To add 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 adding mode by pressing Center (confirm) button for approximately 2 seconds. The icon will appear in the display. Adding Mode is indicated in the display by some “circling” LED segments in the display until the timeout occurs after 20 seconds or the module has been added in the network. Confirmation will show Inc/EcL in the display. If adding fails, Err (error) will appear. + Z-TRM3 + Heatit Z-TRM3 is equipped with a single pole switch and it fits most System 55 frames (Elko RS16, Schneider Exxact, Gira, Jung etc.). The thermostat can withstand a load of max 13A /2900W at 230V. At higher loads the thermostat must control a contactor. The thermostat may be connected to two wired external sensors. +The thermostat has the capacity of up to 8 associations (relays, wall plugs etc.). +The thermostat is designed for electrical heating. +FEATURES +Floor sensor +External room sensor +Temperature limiter +Weekly program/setback via gateway or pilot wire +Multilevel sensor command class +Firmware updates (OTA) +Power metering +LED-diode +Can be used in connection with different NTC-sensors +Lock mode/child lock +Calibration +8 associations +Supports encryption mode: S0, S2 Authenticated Class, S2 Unauthenticated Class + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3802/Manual_Heatit_Z-TRM3_FW%204.0%20Ver2020-A_ENG.pdf + Removing the device: +To remove 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 remove device in your home automation software. Start removing mode by pressing Center (confirm) button for approximately 2 seconds. The icon will appear in the display. Removing Mode is indicated in the display by some “circling” LED segments in the display until the timeout occurs after 20 seconds or the module has been removed in the network. Confirmation will show Inc/EcL in the display. If removing fails, Err (error) will appear. + CEPT (Europe) + By pressing buttons Right and Center (down and confirm) for 20 seconds, the thermostat will perform a complete factory reset. +NB! Please use this procedure only when the primary controller/ gateway is missing or otherwise inoperable. + Heatit Z-TRM3 + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3802/xml + + + + + + + + + + + + + + + + + + + + + + + + + 0 + true + + + + + + Set operation mode + + + + + Set sensor mode + + + + + + + + Floor sensor type (10K NTC Default) + + + + + + + + + 3-30 (0.3C - 3.0C) Default is 5 (0.5C) + + + 50-400 (5.0C - 40.0C) Default is 50 (5.0C) + + + 50-400 (5.0C - 40.0C) Default is 400 (40.0C) + + + 50-400 (5.0C - 40.0C) Default is 50 (5.0C) + + + 50-400 (5.0C - 40.0C) Default is 400 (40.0C) + + + 50 - 400 (5.0C - 40.0C) Default is 210 (21.0C) + + + -60 - 60 (-6.0C - 6.0C) Default is 0 (0.0C) To set a negative value, use 255 and subtract the desired value. + + + -60 - 60 (-6.0C - 6.0C) Default is 0 (0.0C) To set a negative value, use 255 and subtract the desired value. + + + -60 - 60 (-6.0C - 6.0C) Default is 0 (0.0C) To set a negative value, use 255 and subtract the desired value. + + + Show setpoint or calculated temperature on display( + + + + + 0-100 (0 - 100%) + + + 0-100 (0 - 100%) + + + 0-100 (0 - 100%) + + + 0-100 (0 - 100%) + + + + 0 (Report disabled) + 30-32767 (30-32767 seconds) + + + + 0-100 (0.1C - 10.0C) Default is 10 (1.0C) + + + + 0 (Report disabled) + 30-32767 (30-32767 seconds) + + + + 0-255 A delta value of 0 - 25.5 kWh will result in a metering report. Default is 10 (1.0 kWh) + + + + + + + + + + + + + + + + + true + + + + + + true + + + diff --git a/config/thermofloor/heatit204.xml b/config/thermofloor/heatit204.xml new file mode 100644 index 0000000000..fa0dac5f69 --- /dev/null +++ b/config/thermofloor/heatit204.xml @@ -0,0 +1,103 @@ + + + + Heatit Z-Temp2 + Heatit Z-Temp2 is a battery-operated thermostat designed for use with water based heating systems. Used in combination with the Heatit Z-Water regulator you can control your heating system with a Z-Wave primary controller/gateway with the use of Heatit Z-Water in combination with one or several Heatit Z-Temp2. + http://www.openzwave.com/device-database/019B:0204:0004 + https://products.z-wavealliance.org/products/3860 + https://www.heatit.com/z-wave/heatit-z-temp-2-2/ + images/thermofloor/heatit0204.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3860/Manual_Heatit_Z-Temp2_FW%201.1_Ver2020-A_ENG.pdf + The thermostat is a FLIRS device. You are able to force a Node Information Frame using the same procedure as adding/removing procedure; "press the link button on the thermostat 3 times in a rapid sequence." + There are two ways to add your devices in a Z-Wave network. * Standard (manual). Please refer to your primary controller/gateway manual on how to enter add mode. The device can only be added to the network if the primary controller is in add mode. When the primary controller/gateway is set to add mode press the link button on the thermostat 3 times in a rapid sequence. * SmartStart (automatic) Please refer to your primary controller/gateway to see if SmartStart is supported by the controller. SmartStart enabled products can be added into a Z-Wave network by scanning the Z-Wave QR-Code present on the product with a controller providing SmartStart inclusion. No further action is required and the SmartStart product will be added automatically within 10 minutes of being switched on in the network vicinity. + Remove. Please refer to your primary controller/gateway manual on how to enter remove mode. The device can only be removed from the network if the primary controller is in remove mode. When the primary controller/gateway is set to remove modus press the link button on the thermostat 3 times in a rapid sequence. + By pressing and holding the link button for 20 seconds, the thermostat will perform a complete factory reset. rES will be displayed. NB! Please use this procedure only when the primary controller/gateway is missing or otherwise inoperable. + https://products.z-wavealliance.org/products/XXXX/ + CEPT (Europe) + Z-Temp2 + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3860/xml + + + + + + + + + + + + + + + + 0 + true + + + + + + + + + 0 + true + + + + + + + Used to adjust the time between report interval for Temperature and humidity reports. Min is 30, max is 32767 and default is 900 + + + Temperature delta value. Value 0 : Reporting temperature based on change is disabled. Real value : + 0.5 to + 5°C (Default 10 corresponding to 1.0°C) + + + Humidity delta value. Value 0 : Reporting Humidity based on change is disabled. Real value : + 0.5 to + 5°C (Default 10 corresponding to 1.0°C) + + + Calibrate the internal temperature sensor. NB! To set negative values; 65 535 – desired value + 1. Value: -100 to 100°C (Default 0, 0°C) + + + Calibrate the internal hunidity sensor. NB! To set negative values; 65 535 – desired value + 1. Value: -100 to 100°C (Default 0, 0°C) + + + value 2 to 270 seconds (Default 10, 10 seconds) + + + Disable or enable sensor. Value 0 disable, 1 enable + + + Adjust the backlight of LCD display. + + + Adjust the time from proximity sensor / display touched until display goes to sleep.Value 3 to 300 seconds (Default 3, 3 seconds) + + + Adjust the delta values for the thermostat to turn on off heating .Value 0.3 to 3°C (Default 5, 0,5°C) + + + Set the mimum temperature limit.Value 5 to 40°C (Default 50, 5°C) + + + Set the maximum temperature limit.5 to 40°C (Default 400, 40°C) + + + Set time on how often the devices sends Binary Switch Set and thermostat mode to gateway. Value 0 : Sends only when changed (Default). 1 to 240 minutes + When changed + + + Decides if the thermostat sends temperature when presence is detected.Value 0 : Do not report to gateway when presence is detected, only at interval.(Default) 1 : Send temperature report to gateway when presence is detected. + + + + + + + + + + + diff --git a/config/thermofloor/heatit20a.xml b/config/thermofloor/heatit20a.xml new file mode 100644 index 0000000000..8ccaaa045f --- /dev/null +++ b/config/thermofloor/heatit20a.xml @@ -0,0 +1,121 @@ + + + + + images/thermofloor/heatit20a.png + https://products.z-wavealliance.org/products/3102/ + Adding the device: +When the primary controller is set to add/remove modus press the ”INCLUSION” button once on the device + Z-Water + Heatit Z-Water is equipped with 10 relay outputs and 4 analog inputs, and a Z-Wave radio for interfacing to the wireless +Z-Wave network. +The regulator can be power supplied from a 230V AC mains connection, and is able to deliver an output supply of 24V DC. +Heatit Z-Water relay outputs are able to be freely controlled from the Z-Wave network, and can be used for several +purposes, e.g. on/off control of light, control of valve actuators for an underfloor heating system, or control of other home +automation systems. +Heatit Z-Water inputs are analog inputs for interfacing simple temperature sensors; NTC, PT1000, etc. +It is possible to configure the level and the indication of the status indicator LED in the front of the Heatit Z-Water +regulator. + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3102/Manual_Heatit_Z-Water_analog%20inputs_FW%202.1_Ver2019-A_ENG.pdf + Removing the device: When the primary controller is set to add/remove modus press the ”INCLUSION” button once on the device + CEPT (Europe) + By pressing buttons Right and Center (down and confirm) for 20 seconds, the thermostat will perform a complete factory reset. +NB! Please use this procedure only when the primary controller/ gateway is missing or otherwise inoperable. + Heatit Z-Water + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3102/xml + Added ProductPic + Fixed errors + + + + + Set LED mode + + + + + + + Set Brightnes + + + This parameter decides which kind of thermistor that is connected to the input. + + + + + This parameter decides which kind of thermistor that is connected to the input. + + + + + This parameter decides which kind of thermistor that is connected to the input. + + + + + This parameter decides which kind of thermistor that is connected to the input. + + + + + -40 - 40 (-4.0C - 4.0C) Default is 0 (0.0C) To set a negative value, use 255 and subtract the desired value. + + + -40 - 40 (-4.0C - 4.0C) Default is 0 (0.0C) To set a negative value, use 255 and subtract the desired value. + + + -40 - 40 (-4.0C - 4.0C) Default is 0 (0.0C) To set a negative value, use 255 and subtract the desired value. + + + -40 - 40 (-4.0C - 4.0C) Default is 0 (0.0C) To set a negative value, use 255 and subtract the desired value. + + + + 0 (Report disabled) + Multiply with 10 seconds, 10 seconds – 24 hours. Default is 6 (60 seconds). + + + + 0 (Report disabled) + Multiply with 10 seconds, 10 seconds – 24 hours. Default is 6 (60 seconds). + + + + 0 (Report disabled) + Multiply with 10 seconds, 10 seconds – 24 hours. Default is 6 (60 seconds). + + + + 0 (Report disabled) + Multiply with 10 seconds, 10 seconds – 24 hours. Default is 6 (60 seconds). + + + + + + + + + + + + + + + + + true + + + + + + true + + + diff --git a/config/thermofloor/heatitz4.xml b/config/thermofloor/heatitz4.xml new file mode 100644 index 0000000000..0d1ead3ae2 --- /dev/null +++ b/config/thermofloor/heatitz4.xml @@ -0,0 +1,41 @@ + + + + Heatit Z-Push Button 4 + 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/XXXX:XXXX:XXXX + 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.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 + press and hold down group 2 keys for more than 10 seconds use only if controller is unavailable + https://products.z-wavealliance.org/products/3595 + CEPT + 45 126 82 (white) 45 126 83 (black) + + add Heatit Z-Push Button 4 + Fixed Association Groups + + + + + + + + + Set to 21930 to factory reset the device. + + + + + + + + + + + + diff --git a/config/thermofloor/heatitz8.xml b/config/thermofloor/heatitz8.xml new file mode 100644 index 0000000000..72946c507f --- /dev/null +++ b/config/thermofloor/heatitz8.xml @@ -0,0 +1,43 @@ + + + + Heatit Z-Push Button 8 + 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/XXXX:XXXX:XXXX + 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.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 + press and hold down group 2 keys for more than 10 seconds use only if controller is unavailable + https://products.z-wavealliance.org/products/3595 + CEPT + 45 125 81 (white) 45 126 81 (black) + + Made config from manual and zwave alliance + Removed auto include controller to Association Groups + + + + + + + + + Set to 21930 to factory reset the device. + + + + + + + + + + + + + + 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/trane/TZEMT400BB32MAA.xml b/config/trane/TZEMT400BB32MAA.xml index dbc8f55298..d0711f73af 100644 --- a/config/trane/TZEMT400BB32MAA.xml +++ b/config/trane/TZEMT400BB32MAA.xml @@ -1,14 +1,15 @@ - + http://www.openzwave.com/device-database/008B:5433:5452 images/trane/TZEMT400BB32MAA.png https://products.z-wavealliance.org/products/107/ U.S. / Canada / Mexico - Trane T500A - Thermostat + Trane TZEMT400BB - Thermostat Z-Wave enabled programmable communicating thermostat. Trane T500A Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/107/xml + Remove (non-existent) config param id 161 to 199 @@ -302,133 +303,6 @@ Default: 10 - - - - - - - - - - - - - - - - - - - - - - - - - - - 0x2c after reset - 0xf4 after reset - - - - - 0x2c after reset - 0xf4 after reset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0xb8 after reset - 0xe4 after reset - - - - - 0xb8 after reset - 0xe4 after reset - - - - - When enabled (set to 1), the local thermostat's scheduler - function is enabled. - Default: 0 - - - - - - - - - - - - - - - - - 0xff after reset - - - - - - - - - - - 0xff after reset - - - - - - - - - - - 0xff after reset - - - - - diff --git a/config/vision/zp3102.xml b/config/vision/zp3102.xml index 984102427d..853166748a 100644 --- a/config/vision/zp3102.xml +++ b/config/vision/zp3102.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/0109:0201:2002 images/vision/zp3102.png @@ -17,6 +17,7 @@ Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/847/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1070/xml Updated Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/1702/xml + Add undocumented config 5 to set temperature report change ZP 3102 https://products.z-wavealliance.org/products/728/ @@ -58,6 +59,11 @@ -10 to -1, 0 to 10 (Signed decimal: 246 to 255, 0 to 10) + + Report temperature update when the temperature changes: (default: +/- 2 Degree) + + + 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/wenzhou/tz78.xml b/config/wenzhou/tz78.xml new file mode 100644 index 0000000000..a2e20e693a --- /dev/null +++ b/config/wenzhou/tz78.xml @@ -0,0 +1,51 @@ + + + + + images/wenzhou/tz78.png + In Wall Single Relay 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 + TZ78 + 1. This insert switch module is a transceiver which is a Z-Wave enabled device and is fully compatible with any Z-Wave enabled network. +2. Each switch is designed to act as a repeater. Repeaters will re-transmit the RF signal to ensure the signal to ensure that the signal is received by its intended destination. +3. You can use the button on the switch to include/exclude, manually on/off or act as a indicator. You can use it to turn on/off appliance remotely via smart home or computer. + 1. Press the socket on/off button three times within 1.5 seconds +2. then within 5 second to press and hold on for 1 second until the switch LED is off, reset to factory default successfully +3. Use this procedure only in the event that the network primary controller is missing or otherwise inoperable + + CEPT (Europe) / Brazil / China + + Created, based on TZ74 and TZ68 + Added description, include, exclude, reset info + + + + + + The LED on the TZ78 will by default, turn ON when the load attached is turned OFF. To make the LED turn ON when the load attached is turned ON instead, set parameter to a value of 0. + + + + + switch memory function + + + + + switch mode + + + + + + + + + + + + + diff --git a/config/wenzhou/tze96.xml b/config/wenzhou/tze96.xml new file mode 100644 index 0000000000..debcd8d08a --- /dev/null +++ b/config/wenzhou/tze96.xml @@ -0,0 +1,33 @@ + + + + Color Touch Weekly Programming Heating Thermostat + http://www.tkbhome.com/Z-WAVE-Color-Touch-Weekly-Programming-Heating-Thermostat_012_200.html + images/wenzhou/tze96.png + http://www.tkbhome.com/upimg/file/1124240362332.pdf + 1. Make sure the thermostat in the main interface is in OFF mode. +2. Have Z-Wave the controller enter inclusion mode. +3. Press Up button on thermostat 3 times in 1.5 seconds. The (Z) icon will twinkle at a certain interval. +4. After the twinkle stop the (Z) icon displaying means the product is in the Z-Wave network. + 1. Make sure the thermostat in the main interface is in OFF mode. +2. Have Z-Wave the controller enter exclusion mode. +3. Press Up button on thermostat 3 times in 1.5 seconds. The (Z) icon will twinkle at a certain interval. +4. After the twinkle stop the (Z) icon not displaying means the product is not the Z-Wave network. + Turning thermostat to OFF mode, press MENU for 3 seconds then go the last parameter setting page by pressing Next 3 times. Set the Restore parameter. + TZE96 + + http://www.tkbhome.com/Z-WAVE-Color-Touch-Weekly-Programming-Heating-Thermostat_012_200.html + fix image metadata element + + + + + + + + The Memory Function recovers the operating mode after a power failure. + + + + + diff --git a/config/widom/DRY.xml b/config/widom/DRY.xml index 9875ec345e..40bc092e54 100644 --- a/config/widom/DRY.xml +++ b/config/widom/DRY.xml @@ -1,6 +1,7 @@ - + https://www.widom.it/it/smart-dry-contact-switch/ + images/widom/DRY.png https://www.widom.it/wp-content/uploads/2019/03/Widom_Dry_Contact_EN.pdf DRY WiDOM Smart Dry Contact @@ -8,6 +9,7 @@ CEPT (Europe) Initial Metadata + Added product image diff --git a/config/widom/UMS2.xml b/config/widom/UMS2.xml new file mode 100644 index 0000000000..36c7f39a19 --- /dev/null +++ b/config/widom/UMS2.xml @@ -0,0 +1,128 @@ + + + https://www.widom.it/en/smart-roller-shutter/ + images/widom/UMS2.png + https://www.widom.it/wp-content/uploads/2019/03/Widom_Smart_Roller_Shutter_EN_0.pdf + UMS2 + WiDOM Smart Roller Shutter + WiDom Smart Roller Shutter is an "in wall device", for the multilevel control of roller shutter motors. + It can accurately control the opening and closing of blinds, curtains, shutters, venetian blinds as requested by the user through local commands or remotely + using computers, smartphones, tablets. + CEPT (Europe) + + Initial Metadata + Some fixes comparing with openHab exported file + Added product image + + + + + + + Define which sequences of click control the local load. (Default Value: 3) + + + + + + + + 50 to 100: 50-100% opening level (100% correspond to completely open) + (Default Value: 100) + + + + + 0 to 49: 0-49% opening level (0 correspond to completely closed) + (Default Value: 0) + + + + + Value used for devices belonging to Group 2 when UP button receive 1 Click + 1-99 : Dimming purpose + 0 : OFF + -1 : ON (Default Value) + + + + + Value used for devices belonging to Group 2 when DOWN button receive 1 Click + 1-99 : Dimming purpose + 0 : OFF (Default Value) + -1 : ON + + + + + Value used for devices belonging to Group 3 when UP button receive 2 Clicks + 1-99 : Dimming purpose + 0 : OFF + -1 : ON (Default Value) + + + + + Value used for devices belonging to Group 3 when DOWN button receive 2 Clicks + 1-99 : Dimming purpose + 0 : OFF (Default Value) + -1 : ON + + + + + Value used for devices belonging to Group 4 when UP button receive 3 Clicks + 1-99 : Dimming purpose + 0 : OFF + -1 : ON (Default Value) + + + + + Value used for devices belonging to Group 4 when DOWN button receive 3 Clicks + 1-99 : Dimming purpose + 0 : OFF (Default Value) + -1 : ON + + + + + Defines the status of the calibration procedure. By default, as soon as the device has been included, the + calibration starts in automatic mode. At the end of the calibration, this parameter is set to 1. + Afterwards the calibration can be done again by setting this parameter to 0 (AUTO) or 2 (MANUAL) and clicking + on any external button. If the calibration is set in AUTO mode, it will be completed automatically. + If the calibration is set in MANUAL mode, a click on any external button is necessary to carry on the next step. + During the calibration, the LED indicator blinks repeatedly in BLUE. + (Default Value: 0) + + + + + + + + Defines the level of power consumption under which the motor is considered steady (stationary) + 0 to 3000 : Expressed in hundredths of Watt (ex. 3000=30 Watt) + (Default Value: 1000) + + + + + The motor has reached the limit switch when its power consumption is lower than PLIMIT (the power defined in parameter No. 21) for an amount of time defined by this parameter. + 1 to 127 : Expressed in hundredths of Watt (ex. 3000=30 Watt) + 0 : Limit Switch ignored + (Default Value: 30) + + + + + + + + + + + + + + diff --git a/config/widom/WDS2.xml b/config/widom/WDS2.xml new file mode 100644 index 0000000000..81ff81d064 --- /dev/null +++ b/config/widom/WDS2.xml @@ -0,0 +1,189 @@ + + + https://www.widom.it/it/smart-double-switch/ + images/widom/WDS2.png + WDS2 + Widom Smart Double Switch is the new ON/OFF smallest control device in the world designed to independently control two separate loads + CEPT (Europe) + https://www.widom.it/wp-content/uploads/2019/03/Widom_Smart_Double_Switch_EN.pdf + WiDom Smart Double switch + + Initial Metadata + Some fixes comparing with openHab exported file + Added product image + + + + + + + Define which sequences of clicks control the load connected to both Channel 1 and Channel 2, if parameter No. 2 is set to its default value. + Otherwise parameter No.1 sets the clicks sequence only for Channel 1 and parameter No. 2 sets the clicks sequence for Channel 2. + 0 - Local Control disabled + 1 - 1 click controls the local load + 2 - 2 clicks control the local load + 4 - 3 clicks control the local load + 7 - The load connected to the Channel 1 can be controlled using 1 click, 2 clicks or 3 clicks + Default value: 7 + Other options: + To control the load with 1 click and 2 clicks -> Parameter value must be 1 + 2 =3 + To control the load with 1 click and 3 clicks -> Parameter value must be 1 + 4 =5 + To control the load with 2 clicks and 3 clicks -> Parameter value must be 2 + 4 =6 + + + + + Defines which sequences of click control the load connected to Channel 2 + 0 - Local Control disabled + 1 - 1 click controls the local load + 2 - 2 clicks control the local load + 4 - 3 clicks control the local load + 8 - The load connected to the Channel 2 will be controlled with the same number of clicks configured for Channel 1 load. + Default value: 8 + Other options: + To control the load with 1 click and 2 clicks -> Parameter value must be 1 + 2 =3 + To control the load with 1 click and 3 clicks -> Parameter value must be 1 + 4 =5 + To control the load with 2 clicks and 3 clicks -> Parameter value must be 2 + 4 =6 + To control the load with 1 click, 2 clicks and 3 clicks -> Parameter value must be 1 + 2 + 4 =7 + + + + + Value used for devices belonging to Group 2 when external switch I1 receives 1 Click + 1-99 : Dimming purpose + 0 : OFF + -1 : ON + 100 : (Default Value) The same value of Channel 1 load status + + + + + Value used for devices belonging to Group 5 when external switch I2 receives 1 Click + 1-99 : Dimming purpose + 0 : OFF + -1 : ON + 100 : (Default Value) The same value of Channel 2 load status + + + + + Value used for devices belonging to Group 3 when external switch I1 receives 2 Clicks + 1-99 : Dimming purpose + 0 : OFF + -1 : ON + 100 : (Default Value) The same value of Channel 1 load status + + + + Value used for devices belonging to Group 6 when external switch I2 receives 2 Clicks + 1-99 : Dimming purpose + 0 : OFF + -1 : ON + 100 : (Default Value) The same value of Channel 2 load status + + + + + Value used for devices belonging to Group 4 when external switch I1 receives 3 Clicks + 1-99 : Dimming purpose + 0 : OFF + -1 : ON + 100 : (Default Value) The same value of Channel 1 load status + + + + + Value used for devices belonging to Group 7 when external switch I2 receives 3 Clicks + 1-99 : Dimming purpose + 0 : OFF + -1 : ON + 100 : (Default Value) The same value of Channel 2 load status + + + + + Defines the time after which the Channel 1 load is switched OFF. + 0 (Default Value) Timer disabled. + From 1 to 32000 (seconds) After this time the relay of the Channel 1 is OFF. + + + + + Defines the time after which the Channel 2 load is switched OFF. + 0 (Default Value) Timer disabled. + From 1 to 32000 (seconds) After this time the relay of the Channel 2 is OFF. + + + + + Defines the time after which the Channel 1 load is switched ON. + 0 (Default Value) Timer disabled. + From 1 to 32000 (seconds) After this time the relay of the Channel 1 is ON. + + + + + Defines the time after which the Channel 2 load is switched ON. + 0 (Default Value) Timer disabled. + From 1 to 32000 (seconds) After this time the relay of the Channel 2 is ON. + + + + + Defines the behavior of the device Channels when the I1/I2 external switches receive a valid number of clicks (see Parameters No. 1 and No. 2). + Note: When to the parameter 40 is given a value different from zero, the associated devices will not be controlled. + + + + + + + Defines the status of the device following a restart (Default Value: 4). + + + + + + + + + Defines the type of external switch connected both to input 1 and input 2, if parameter No. 63 is set in its default value. + Otherwise parameter No. 62 defines only the external switch connected to the input 1 and parameter No. 63 the switch connected to the input 2. + (Default Value: 1) + + + + + + + + Defines the type of external switch connected both to input 1 and input 2, if parameter No. 63 is set in its default value. + Otherwise parameter No. 62 defines only the external switch connected to the input 1 and parameter No. 63 the switch connected to the input 2. + (Default Value: 1) + + + + + + + + + + + + + + + + + + + + + diff --git a/config/widom/WSP.xml b/config/widom/WSP.xml new file mode 100644 index 0000000000..1bfb684f47 --- /dev/null +++ b/config/widom/WSP.xml @@ -0,0 +1,118 @@ + + + https://www.widom.it/it/smart-plug/ + images/widom/WSP.png + https://www.widom.it/wp-content/uploads/2019/08/Widom-Smart-Plug_EN_20190404_0.pdf + WSP + WiDOM Smart Dry Contact + WiDom Smart Plug is able to detect overvoltage and/or overcurrent events and indicate them through a + multicolor LED. Furthermore, it protects appliances from eventual overload. A very innovative design, which + integrates a complex system that allows a precise energy consumption monitoring. The integration of these + features in its very small size product, make it unique on the market. + CEPT (Europe) + + Initial Metadata + Initial Metadata + Added product image + + + + + + + Defines which sequences of click control the local load + + + + + + + Defines how to control the devices associated to 1 click event + 1-99 : The associated devices (dimmer, roller shutters) are set to the indicated level + 0 : OFF + -1 : ON + 100 : (Default Value) If the relay is ON/OFF, the associated devices are ON/OFF + + + + + Defines how to control the devices associated to 2 clicks event + 1-99 : The associated devices (dimmer, roller shutters) are set to the indicated level + 0 : OFF + -1 : ON + 100 : (Default Value) If the relay is ON/OFF, the associated devices are ON/OFF + + + + + Defines the voltage level (in Volts) beyond which an overvoltage event is identified and the overvoltage timer is activated. + The timer is reset when the event ceases, i.e. when the voltage returns below the overvoltage level. + As soon as an overvoltage event occurs, the LED starts a BLUE blinking. + If the overvoltage event ceases before the overvoltage timer expires, the blue blinking is stopped, + otherwise the alarm is generated and the blinking reset is established by parameter 6. + (Default value: 253) + + + + + Define the time (seconds) in which the voltage must persist above the overvoltage level so that an alarm is generated. + 1 - 36000: Overvoltage time interval (in seconds) after witch an alarm is generated + (Default Value: 5) + + + + Define how to reset the overvoltage alarm and breaks off the blue blinking. + + + + + + Define how to control the devices associated to the overvoltage alarm + 1-99 : The associated devices (dimmer, roller shutters) are set to the indicated level + 0 : OFF (Default Value) + -1 : ON + + + + + Defines the current level (in Amps) beyond which an overcurrent event is identified and the overcurrent timer is activated. + The timer is reset when the event ceases, i.e. when the current returns below the overcurrent level. + As soon as an overcurrent event occurs, the LED starts a GREEN blinking. + If the overcurrent event ceases before the overcurrent timer expires, the GREEN + 1 - 12 : Defines the overcurrent level (in Amps) + (Default Value: 12 ) + + + + + Define the time (seconds) in which the current must persist above the overcurrent level so that an alarm is generated and the relay is opened. + 1 - 36000: Overcurrent time interval (in seconds) after witch an alarm is generated + (Default Value: 10) + + + + Define how to reset the over-current alarm and breaks off the red blinking. + + + + + + Define how to control the devices associated to the overcurrent alarm + 1-99 : The associated devices (dimmer, roller shutters) are set to the indicated level + 0 : OFF (Default Value) + -1 : ON + + + + + + + + + + + + + + + diff --git a/config/widom/WTED.xml b/config/widom/WTED.xml new file mode 100644 index 0000000000..f376f7539d --- /dev/null +++ b/config/widom/WTED.xml @@ -0,0 +1,86 @@ + + + https://www.widom.it/it/smart-dimmer/ + images/widom/WTED.png + https://www.widom.it/wp-content/uploads/2019/01/Widom_Smart_Dimmer_EN_1.pdf + WTED + WiDOM Smart TE Drimmer + WiDom Smart TE Dimmer is an "in-wall device" that controls the luminosity level and/or fan speed. + A universal device that controls the light intensity of all types of dimmable lights, including LED lamps and energy-saving lamps. + The Smart TE Dimmer includes the ON / OFF control option of non-dimmable loads + CEPT (Europe) + + Initial Metadata + Some fixes comparing with openHab exported file + Added product image + + + + + + + + Defines the status of the device, in term of light level, following a restart. + 0-99: 0-99% dimming level after device restart + -1: (Defaukt Value) At device’s restart it restores the same dimming level at the moment of power failure. + + + + + Defines the time spent to switch the load from complete OFF to complete ON. + 1 to 127 : Expresses in seconds the time spent to switch the load from complete OFF to complete ON + -1 to -126: Expresses in minutes the time spent to switch the load from complete OFF to complete ON + (Default Value: 1) + + + + + Defines the time spent to switch the load from complete ON to complete OFF. + 1 to 127 : Expresses in seconds the time spent to switch the load from complete ON to complete OFF. + -1 to -126: Expresses in minutes the time spent to switch the load from complete ON to complete OFF. + (Default Value: 1) + + + + + Defines the time spent to switch the controlled load when the external switch is hold down. + 0: Applies the timing spent to switch the controlled load to Fade On and Fade Off as defined in parameters 2 and 3. + 1-60: Expresses in seconds the time spent to switch the load. + (Default value: 5) + + + + + Defines the light level that will correspond to the 1% of dimming. + 1 to 98: Defines which light level will correspond to 1% in the range between 1 and 98% + (Default Value: 1) + + + + + Defines the light level that will correspond to the 99% of dimming. + 2 to 99: Defines which light level will correspond to 99% in the range between 2 and 99% + (Default Value: 99) + + + + Define how to reset the overvoltage alarm and breaks off the blue blinking. (Defaukt Value: 1) + + + + + Defines the type of external switch connected to the device (Default Value: 1 ) + + + + + + + + + + + + + diff --git a/config/wink/wnk-mot1.xml b/config/wink/wnk-mot1.xml new file mode 100644 index 0000000000..2fe6e04d38 --- /dev/null +++ b/config/wink/wnk-mot1.xml @@ -0,0 +1,84 @@ + + + + Motion Sensor + Battery powered Z-Wave Plus motion sensor + http://www.openzwave.com/device-database/017F:0001:0101 + https://www.wink.com/products/wink-motion-sensor/ + https://www.wink.com/help/products/ + images/wink/wnk-mot1.png + + + 1. Bring the sensor within range of your controller. + 2. If the devices is new, remove the pull tab. Otherwise remove, then replace the battery. + The LED will flash 5 times to indicate inclusion. + + 1. Remove the sensor cover by twisting counter clockwise. + 2. Press the connect button (next to the battery) 3 times. + The LED will flash 5 times to indicate exclustion. + + + 1. Remove the sensor cover by twisting counter clockwise. + 2. Hold the connect button (next to the battery) for 10 seconds until the LED blinks. + + https://products.z-wavealliance.org/products/2482 + U.S. / Canada / Mexico + WNK-MOT1 + + Initial information based on Z-Wave alliance database information + + + + + + + Motion sensor sensitivity Level. Valid values 8 to 255. + + + Valid values 5 to 600 seconds (10 mins). + + + 0: Turn Off + 1 to 99: Dim Level + 255: On + + + + On = Enable Motion Detection. + + + Ambient Light Threshold for the Group 2 Association trigger. Vaid values 5 to 1000 lux. + + + Prevent retriggering within the specified time period. Valid values 1 to 8 seconds. + + + Valid values 60 to 3600 seconds. + + + On = Enable the Ambient Light Threshold when using the Group 2 Association. + + + Valid values 0 to 255 lux. + + + On = Enable the LED Indicator. + + + + + + + false + + + + + + + + + + + + diff --git a/config/wink/wnk-sir1p.xml b/config/wink/wnk-sir1p.xml new file mode 100644 index 0000000000..b5b7e323e1 --- /dev/null +++ b/config/wink/wnk-sir1p.xml @@ -0,0 +1,89 @@ + + + + Siren + Battery-powered alarm, chime, and flash + http://www.openzwave.com/device-database/017f:0001:0200 + https://www.wink.com/products/wink-siren-and-chime/ + https://www.wink.com/help/products/ + images/wink/wnk-sir1p.png + + + 1. For proper inclusion, bring the Motion Detector within range of your Controller. + 2. Pull the tab on the side of the sensor to power on, or remove then re-install the batteries. + The LED indicator will flash five times indicating inclusion. + 1. Remove the sensor cover by twisting it counterclockwise and be sure it is powered on. + 2. Press the Connect Button on the bottom of the device next to the battery quickly 3 times in a row. + The LED Indicator will flash five times indicating exclusion/disconnection. + 1. Remove the sensor cover by twisting it counterclockwise and be sure it is powered on. + 2. Hold the Connect Button next to the battery for 10 seconds until the LED indicator blinks once, then release the button. + Only do this if the controller is disconnected or otherwise unreachable! + https://products.z-wavealliance.org/products/2484 + U.S. / Canada / Mexico + WNK-SIR1P + + Initial information based on Z-Wave alliance database information + + + + + + + Primary Notification Volume Level + + + + + + + Primary Notification Length + + + + + + + + -128 to -2 Chime Duration (in Minutes; -128=128 min, -2=254 min) + -1 Chime Will Not Play + 0 Does Not Stop + 1 to 127 Chime Duration (in Minutes) + + + + + Secondary Notification Volume Level + + + + + + + 1 to 10 Tone Index Number + + + + 1 to 10 Tone Index Number + + + + Short Help Description + + + + + + + + false + + + + + + + + + + + \ No newline at end of file diff --git a/config/zipato/ne-nas-ab02z.xml b/config/zipato/ne-nas-ab02z.xml new file mode 100644 index 0000000000..e94b3d9b9d --- /dev/null +++ b/config/zipato/ne-nas-ab02z.xml @@ -0,0 +1,84 @@ + + + Indoor Siren + The indoor siren is an intelligent device that can be controlled remotely by the Z-wave network. The indoor siren is battery powered, small and easily installed. When the siren is triggered, an LED light will flash, and there will be an alarm sound at the same time. The sound level is at least 115 dB. + http://www.openzwave.com/device-database/0131:1083:0004 + https://www.zipato.com/product/indoor-siren + images/zipato/ne-nas-ab01z.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3046/ne-nas-ab02z.eu%20-%20Zipato%20INDOOR%20SIREN-waveEU_UserManual_v1.3.pdf + Quickly triple click the code button, LED light will flash red for 5 times. + Quickly triple click the code button, LED light will flash red for 5 times. + Make sure the sensor is connected to power source, Press the code button for 10 seconds, LED will flash blue for 3 seconds + https://products.z-wavealliance.org/products/3046 + CEPT (Europe) + ne-nas-ab02z.eu + + Information obtained from manual, z-wavealliance, re-brand documentation (https://products.z-wavealliance.org/products/3069), and trial & error + + + + + + + + This parameter defines the default sound index, volume and the duration time for siren on + + + + + + This parameter defines the output volume when siren plays alarm. + + + + + + + This parameter defines the alarm sound index so siren can play different sound when an alarm occurs. + + + + This Parameter defines the alarm duration time when siren receives an alarm sensor notification report or an alarm command from controller. + + + + + + + + + This parameter defines the default led enable status when siren is on for alarm + + + + + + This parameter defines the output volume when siren plays doorbell music + + + + + + + This parameter defines the doorbell music index so siren can play different music when an alarm occurs. + + + + This parameter defines the doorbell music duration time when siren receives a door/window sensor notification report or an alarm command (BASIC_SET=0x02) from a controller + + + + This parameter defines the default led enable status when siren is on for doorbell + + + + + + + + + + + + + diff --git a/config/zooz/zen15.xml b/config/zooz/zen15.xml index 25a0d15a88..f4cf4277a4 100644 --- a/config/zooz/zen15.xml +++ b/config/zooz/zen15.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/027A:000D:0101 images/zooz/zen15.png @@ -67,6 +67,7 @@ Press and HOLD the Z-Wave button for at least 3 seconds 4. A new secure on / off device will be recognized by your Z-Wave controller Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/2517/xml + Fix param 152 size. + + + + + On Off Status After Power Failure. Default: all relays restore to previous state + + + + + + + + Switch Type for Relay 1 (Sw1). Choose the wall switch type you want to connect to the Sw1 terminal. Default: toggle switch (state changes whenever the switch is toggled) + + + + + + + Switch Type for Relay 2 (Sw2). Choose the wall switch type you want to connect to the Sw2 terminal. Default: toggle switch (state changes whenever the switch is toggled) + + + + + + + Switch Type for Relay 3 (Sw3). Choose the wall switch type you want to connect to the Sw3 terminal. Default: toggle switch (state changes whenever the switch is toggled) + + + + + + + LED Indicator Control. 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. Default: On when all relays are off + + + + + + + Auto Turn-Off Timer for Relay 1. Sets the time (in minutes) after which you want relay 1 to automatically turn off once it has been turned on. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-On Timer for Relay 1. Sets the time (in minutes) after which you want relay 1 to automatically turn on once it has been turned off. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-Off Timer for Relay 2. Sets the time (in minutes) after which you want relay 2 to automatically turn off once it has been turned on. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-On Timer for Relay 2. Sets the time (in minutes) after which you want relay 2 to automatically turn on once it has been turned off. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-Off Timer for Relay 3. Sets the time (in minutes) after which you want relay 3 to automatically turn off once it has been turned on. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-On Timer for Relay 3. Sets the time (in minutes) after which you want relay 3 to automatically turn on once it has been turned off. Range: 1-65535. Default: 0 (disabled) + + + Enable/Disable Manual Control for SW1. Default: enabled + + + + + + Enable/Disable Manual Control for SW2. Default: enabled + + + + + + Enable/Disable Manual Control for SW3. Default: enabled + + + + + + Choose between second, minutes, and hours as the unit for Auto Turn-Off time for Relay 1. Default: minutes + + + + + + Choose between second, minutes, and hours as the unit for Auto Turn-On time for Relay 1. Default: minutes + + + + + + Choose between second, minutes, and hours as the unit for Auto Turn-Off time for Relay 2. Default: minutes + + + + + + Choose between second, minutes, and hours as the unit for Auto Turn-On time for Relay 2. Default: minutes + + + + + + Choose between second, minutes, and hours as the unit for Auto Turn-Off time for Relay 3. Default: minutes + + + + + + Choose between second, minutes, and hours as the unit for Auto Turn-On time for Relay 3. Default: minutes + + + + + + 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/zen20v2.xml b/config/zooz/zen20v2.xml index 248dc86679..d8e5c066ce 100644 --- a/config/zooz/zen20v2.xml +++ b/config/zooz/zen20v2.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/027A:A004:A000 images/zooz/zen20v2.png @@ -37,6 +37,8 @@ NOTE: All previously recorded activity and custom settings EXCEPT for the kWh re 4. You will see 7 or 8 new on/off devices in your app: 5 channels or on/off control, 2 channels for on/off monitoring (USB ports reporting charging/ charged status, no control), and possibly one master node to access and adjust advanced settings in. Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3158/xml + Update parameters for firmware 2.0.3 + @@ -152,6 +154,47 @@ NOTE: All previously recorded activity and custom settings EXCEPT for the kWh re + + Disable or enable energy monitoring for the entire devie. None of the outlets will send any power or energy related reports back to the hub if energy monitoring is disabled. Use this optoin to minimize the amount or reports you want to receive from the Power Strip. (Firmware > 2.0.3) + + + + + Disable or enabled energy monitoring for CH1. (Firmware > 2.03) + + + + + Disable or enabled energy monitoring for CH2. (Firmware > 2.03) + + + + + Disable or enabled energy monitoring for CH3. (Firmware > 2.03) + + + + + Disable or enabled energy monitoring for CH4. (Firmware > 2.03) + + + + + Disable or enabled energy monitoring for CH5. (Firmware > 2.03) + + + + + Disable or enable on/off reports send from the USB ports when a connected device is charging (drawing power) or not charging (not drawing power). (Firmware > 2.03) + + + + + 0 = disabled; 30-2678400 = time in seconds to send current (A) report (Firmware > 2.03) + + + 0 = disabled; 30-2678400 = time in seconds to send voltage (v) report (Firmware > 2.03) + diff --git a/config/zooz/zen21v2.xml b/config/zooz/zen21v2.xml deleted file mode 100644 index ee5ecd388c..0000000000 --- a/config/zooz/zen21v2.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - Controls the on/off orientation of the rocker switch - - - - - - Control the LED indicator on switch - - - - - - - Use this parameter to enable or disable the auto turn-off timer function - - - - - Use this parameter to set the time after which you want the switch to automatically turn off once it has been turned on. The number entered as value corresponds to the number of minutes - - - Use this parameter to enable or disable the auto turn-off timer function - - - - - Use this parameter to set the time after which you want the switch to automatically turn on once it has been turned off. The number entered as value corresponds to the number of minutes - - - Set the on off status for switch after power failure - - - - - - - - - - - - - - - diff --git a/config/zooz/zen21v3.xml b/config/zooz/zen21v3.xml new file mode 100644 index 0000000000..ca3c9cd925 --- /dev/null +++ b/config/zooz/zen21v3.xml @@ -0,0 +1,157 @@ + + + + http://www.openzwave.com/device-database/027a:1e1c:b111 + images/zooz/zen21v3.png + https://products.z-wavealliance.org/products/3667?selectedFrequencyId=2 + 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. + 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 + 1. Initiate inclusion (pairing) in the app (or web interface) of your hub. +2. Tap the upper paddle on the switch 3 times quickly. + U.S. / Canada / Mexico + ZEN21 + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3667/zooz-z-wave-plus-on-off-switch-zen21-ver3.1-manual.pdf + Z-WAVE PLUS ON / OFF LIGHT SWITCH + FEATURES: +- Manual and remote on/off control for lights and small appliances +- Unique Direct 3-Way Solution: no add-on switch needed, extra savings! (Neutral wire required, use in 4-Way only if direct connection to load and line are in the same box) +- Scene control on selected hubs +- Reports on/off status to your controller instantly +- NEW VERSION: more advanced settings (timer, turn switch on/off with any paddle, choose state after power failure), improved manual and packaging +- White (no other color available) +- Restores on/off status after power failure +- Can be associated with other Z-Wave devices by scheduling scenes and customizing events +- Compatible with LED, CFL, and incandescent bulbs +- Screw terminal installation - requires Line (Hot), Load, Neutral, and Ground wires +- New and improved Z-Wave Plus 500 series chip for faster, stronger wireless connectivity +- Built-in repeater that strengthens your Z-Wave network +- Blue LED indicator to easily locate the switch in the dark and signal Z-Wave communication +- Use a standard-size wall plate for single gang installations (wall plate not included) +- UL-listed and Z-Wave Plus certified + +SPECIFICATIONS: +- Model Number: ZEN21 + +- Z-Wave Frequency: 908.42 MHz (US) +- Power: 120 VAC, 60 Hz +- Maximum Loads: 960W Incandescent, 150W LED and CFL bulbs, 1800W (15A) Resistive +- Z-Wave Range: Up to 100 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 + +https://www.support.getzooz.com/kb/article/316-zooz-on-off-switch-zen21-ver-3-04-advanced-settings/ +MANUAL CONTROL +Upper Paddle: +1 x tap: load on; Scene 1, attribute 00 (button 1) +2 x tap: Scene 1, attribute 03 (button 3) +3 x tap: enter inclusion (pairing) mode; Scene 1, attribute 04 (button 5) +4 x tap: Scene 1, attribute 05 (button 7) +6 x tap: change LED indicator mode (see parameter 2) +10 x tap: change physical / Z-Wave control mode (see parameter 11) +tap-tap-tap-and-hold: factory reset + +Lower Paddle: +1 x tap: load off; Scene 2, attribute 00 (button 2) +2 x tap: Scene 2, attribute 03 (button 4) +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 (button 6) +4 x tap: Scene 2, attribute 05 (button 8) +tap-tap-tap-and-hold: factory reset + + + Updated for firmware version 3.04 + Rename XML for correct hardware version + Update parameter 12 description + + + + + + 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. + + + + + + + + + + + + Time, in minutes, for auto-off timer delay. + + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + 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 (Available for select hubs only). + + + + + 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. + + + + + + + + + + + + + + diff --git a/config/zooz/zen22v2.xml b/config/zooz/zen22v2.xml index 70170f17ac..6b88e43a2f 100644 --- a/config/zooz/zen22v2.xml +++ b/config/zooz/zen22v2.xml @@ -1,34 +1,195 @@ - - - - - Controls the on/off orientation of the rocker switch - - - - - Choose if you want the LED indicator to turn on when switch is on or off - - - - - Enable or disable LED indicator so it stays off at all times - - - - - Choose how fast you want to turn the light on and off - - - - + + + http://www.openzwave.com/device-database/027a:1f1c:b112 + images/zooz/zen22.png + https://products.z-wavealliance.org/products/1946?selectedFrequencyId=2 + 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. + 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 + 1. Initiate inclusion (pairing) in the app (or web interface) of your hub. +2. Tap the upper paddle on the switch 3 times quickly. + U.S. / Canada / Mexico + ZEN22 + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1946/zooz-z-wave-plus-dimmer-switch-zen22-manual.pdf + Zooz Z-Wave Dimmer Light Switch + FEATURES: +- Manual and wireless control from your smart phone or computer (when synced with a Z-Wave gateway controller) +- Direct 3-Way Solution: connects to an existing light switch for 2-point control, no special companion switch needed! (Neutral wire required, on/off control only from slave switch, use in 4-Way only if direct connection to load and line are in the same box) +- NEW IN VER. 3.0: Double tap to full brightness, fully adjustable ramp rate, scene control on select hubs, and more! +- White (no other color available) +- Extended LED bulb compatibility - works with most popular dimmable LED's (including Cree, Ecosmart, Philips, GE, Sylvania, Sunco, and others. NOT COMPATIBLE WITH LUMINUS BULBS.) +- Quick status reports to your hub when operated manually +- Based on universal command classes - supported by all certified Z-Wave gateway controllers +- Capable of advanced automation and association with other Z-Wave devices — schedule custom scenes and events +- Upgraded Z-Wave Plus 500 series chip for stronger and faster wireless connectivity +- Built-in signal repeater for a more reliable Z-Wave network +- Blue LED indicator to help locate the switch in the dark (now configurable straight from the switch!) +- Fits a standard-size face plate for single and multi gang installations (face plate not included) +- UL-listed and Z-Wave Plus certified - - - - - - +SPECIFICATIONS: +- Model Number: ZEN22 + +- Z-Wave Signal Frequency: 908.42 MHz +- Power: 120 VAC, 60 Hz +- Maximum Load: 500W Single-gang, 400W Double-gang, 300W Triple-gang Incandescent, 150W CFL or LED +- Range: Up to 100 feet line of sight +- Operating Temperature: 32-104° F (0-40° C) +- Installation and Use: Indoor only + +https://www.support.getzooz.com/kb/article/319-zooz-dimmer-zen22-ver-3-07-advanced-settings/ +MANUAL CONTROL +Upper Paddle: +1 x tap: load on to last / custom brightness; Scene 1, attribute 00 (button 1) +2 x tap: on to full / max brightness; Scene 1, attribute 03 (button 3) +3 x tap: enter inclusion (pairing) mode; Scene 1, attribute 04 (button 5) +4 x tap: Scene 1, attribute 05 (button 7) +6 x tap: change LED indicator mode (see parameter 2) +10 x tap: change physical / Z-Wave control mode (see parameter 15) +press and hold: increase brightness level +tap-tap-tap-and-hold: factory reset + +Lower Paddle: +1 x tap: load off; Scene 2, attribute 00 (button 2) +2 x tap: Scene 2, attribute 03 (button 4) +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 (button 6) +4 x tap: Scene 2, attribute 05 (button 8) +press and hold: decrease brightness level +tap-tap-tap-and-hold: factory reset + + + Updated for firmware version 3.07 + + + + + + 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. + + + + + + + + + + + + Time, in minutes, for auto-off timer delay. + + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + 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. Default: 1 + + + 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 0, Parameter 11 is automatically disabled. Default: 99 + + + Double Tap action. When set to Full, turns light on to 100%. If set to Maximum Level, turns light on to % set in Parameter 11. + + + + + Enable or Disable scene control functionality for quick double tap triggers. + + + + + Enables/Disables the double-tap function and assign brightness to single tap. Last level: single tap returns to last brightness level. Full/Max level: single tap returns to full/max level + + + + + + 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. + + + + + + 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 + + + Choose if you want to set the Z-Wave ramp rate independently of the physical ramp rate (using an appropriate command in your hub) or if you want them to match. + + + + + 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 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. + + + + + + + Choose how you'd like the dimmer to report when paddles are tapped and held and physical / Z-Wave control is enabled or disabled. + + + + + 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/zen23v3.xml b/config/zooz/zen23v3.xml new file mode 100644 index 0000000000..5ab2bb29ae --- /dev/null +++ b/config/zooz/zen23v3.xml @@ -0,0 +1,138 @@ + + + ZEN23 Toggle Switch V3 + Product features: +- Manual or remote on/off control from your mobile device or computer (when included to a Z-Wave gateway controller) +- Z-Wave Plus with improved 500 chip for faster and safer wireless communication +- Works with LED, CFL, and incandescent bulbs (minimum 15Watts on load required) +- Based on simple and universal binary switch command class - supported by most Z-Wave controllers +- May be associated and grouped with other Z-Wave devices for advanced home automation +- Built-in Z-Wave signal repeater for a stronger and more reliable network + +Specifications: +- Z-Wave Signal Frequency: 908.42 MHz +- Power: 120 V, 60 Hz +- Maximum Load: 960W Incandescent, 150W LED and CFL bulbs, 1800W (15A) Resistive +- Range: Up to 100 feet line of sight +- Installation and Use: Indoor Only +- Operating Temperature: 32-104° F (0-40° C) +- Dimensions: 4 1/8" tall x 2 1/8" wide (with heat sink tabs,1 3/4" without the tabs) x 1 3/8" deep +- Weight: 10 oz + + +https://www.support.getzooz.com/kb/article/301-zen23-toggle-switch-change-log/ +https://www.support.getzooz.com/kb/article/317-zen23-on-off-toggle-switch-ver-3-05-advanced-settings/ +MANUAL CONTROL +Toggle Up: +1 x tap: load on; Scene 1, attribute 00 (button 1) +2 x tap: Scene 1, attribute 03 (button 3) +3 x tap: enter inclusion (pairing) mode; Scene 1, attribute 04 (button 5) +4 x tap: Scene 1, attribute 05 (button 7) +6 x tap: change LED indicator mode (see parameter 2) +10 x tap: change physical / Z-Wave control mode (see parameter 11) +tap-tap-tap-and-hold: factory reset + +Toggle Down: +1 x tap: load off; Scene 2, attribute 00 (button 2) +2 x tap: Scene 2, attribute 03 (button 4) +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 (button 6) +4 x tap: Scene 2, attribute 05 (button 8) +tap-tap-tap-and-hold: factory reset + http://www.openzwave.com/device-database/027a:251c:b111 + http://getzooz.com/zooz-zen23-24-toggle-switch.html + https://www.support.getzooz.com/kb/tag/3/ + images/zooz/zen23v3.png + https://cdn.shopify.com/s/files/1/0218/7704/files/zooz-z-wave-plus-toggle-switch-zen23-ver3-manual.pdf?26 + 1. Initiate inclusion at your hub. 2. Toggle up 3 times very quickly at the switch. + 1. Put the Z-Wave hub into exclusion mode. 2. Toggle the switch down 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, toggle-toggle-toggle’n’hold down for at least 10 seconds. + U.S. / Canada / Mexico + ZEN23v3 + + Initial configuration from Zooz product help pages + Correct typo of Parameter 19 to Parameter 12 + + + + + + + Normal mode: Toggle up turns the light on, toggle down turns the light off. Reverse mode: Toggle up turns the light off, toggle down turns the light on. Toggle mode: Either direction toggles the light. + + + + + + Use this parameter to enable or disable the auto turn-off timer function. + + + + + Time, in minutes, for auto-off timer delay. + + + Use this parameter to enable or disable the auto turn-on timer function. + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + Status after Power Failure + + + + + + Enable or disable scene control functionality for quick double tap triggers. + + + + + 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 reporting behavior for disabled physical control. + + + + + 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 new file mode 100644 index 0000000000..3fc6437a7e --- /dev/null +++ b/config/zooz/zen24v2.xml @@ -0,0 +1,182 @@ + + + ZEN24 Dimmer Switch V2 + Product features: +- Manual or remote on/off control and dimming from your mobile device or computer (when included to a Z-Wave gateway controller) +- Z-Wave Plus with improved 500 chip for faster and safer wireless communication +- Works with most high-quality DIMMABLE LED, CFL, and incandescent bulbs (20 Watts minimum required) +- Based on universal command classes - supported by most Z-Wave controllers +- May be associated and grouped with other Z-Wave devices for advanced home automation +- Air-gap switch to power the dimmer off when changing light bulbs +- Built-in Z-Wave signal repeater for a stronger and more reliable network + +Specifications: +- Z-Wave Signal Frequency: 908.42 MHz +- Power: 120 V, 60 Hz +- Maximum Load: 500W Single-gang, 400W Double-gang, 300W Triple-gang Incandescent, 150W CFL or LED +- Range: Up to 100 feet line of sight +- Installation and Use: Indoor Only +- Operating Temperature: 32-104° F (0-40° C) +- Dimensions: 4 1/8" tall x 2 1/8" wide (with heat sink tabs,1 3/4" without the tabs) x 1 3/8" deep +- Weight: 10 oz + +https://www.support.getzooz.com/kb/article/298-zen24-toggle-dimmer-change-log/ +https://www.support.getzooz.com/kb/article/318-zen24-toggle-dimmer-ver-3-08-advanced-settings/ +MANUAL CONTROL +Toggle Up: +1 x tap: load on to last / custom brightness; Scene 1, attribute 00 (button 1) +2 x tap: on to full / max brightness; Scene 1, attribute 03 (button 3) +3 x tap: enter inclusion (pairing) mode; Scene 1, attribute 04 (button 5) +4 x tap: Scene 1, attribute 05 (button 7) +6 x tap: change LED indicator mode (see parameter 2) +10 x tap: change physical / Z-Wave control mode (see parameter 15) +press and hold: increase brightness level +tap-tap-tap-and-hold: factory reset + +Toggle Down: +1 x tap: load off; Scene 2, attribute 00 (button 2) +2 x tap: Scene 2, attribute 03 (button 4) +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 (button 6) +4 x tap: Scene 2, attribute 05 (button 8) +press and hold: decrease brightness level +tap-tap-tap-and-hold: factory reset + http://www.openzwave.com/device-database/027a:261c:b112 + http://getzooz.com/zooz-zen23-24-toggle-switch.html + https://www.support.getzooz.com/kb/tag/4/ + images/zooz/zen24v2.png + https://cdn.shopify.com/s/files/1/0218/7704/files/zooz-z-wave-plus-toggle-dimmer-zen24-ver3-manual_889b0743-e025-445a-ac13-0f7742ba0675.pdf?100 + 1. Initiate inclusion at your hub. 2. Toggle up 3 times very quickly at the switch. + 1. Put the Z-Wave hub into exclusion mode. 2. Toggle the switch down 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, toggle-toggle-toggle’n’hold down for at least 10 seconds. + U.S. / Canada / Mexico + ZEN24v2 + + Initial configuration from Zooz product help pages + Fix minimum value for parameter 9 + Fix maximum value for parameter 15 + + + + + + + Normal mode: Toggle up turns the light on, toggle down turns the light off. Reverse mode: Toggle up turns the light off, toggle down turns the light on. Toggle mode: Either direction toggles the light. + + + + + + Use this parameter to enable or disable the auto turn-off timer function. + + + + + Time, in minutes, for auto-off timer delay. + + + Use this parameter to enable or disable the auto turn-on timer function. + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + Status after Power Failure + + + + + + 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. Default: 1 + + + 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 0, Parameter 11 is automatically disabled. Default: 99 + + + Choose if you want the dimmer to turn on to full brightness or custom brightness level after you toggle the switch up twice quickly. + + + + + Enable or disable scene control functionality for quick double tap triggers. + + + + + Enable or disable the double tap function and assign brightness level to single tap. + + + + + + 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. + + + Choose if you want to set the Z-Wave ramp rate independently of the physical ramp rate (using an appropriate command in your hub) or if you want them to match. + + + + + Set the custom brightness level (instead of the last set brightness level) you want the dimmer to come on to when you toggle the switch up once. Default: 0 - last brightness level + + + 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. + + + + + + + Choose how you'd like the dimmer to report when the toggle is held and physical / Z-Wave control is enabled or disabled. + + + + + 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/zen26.xml b/config/zooz/zen26.xml index 5d1162b8c2..891766d1fc 100644 --- a/config/zooz/zen26.xml +++ b/config/zooz/zen26.xml @@ -1,24 +1,24 @@ - - - http://www.openzwave.com/device-database/027A:A001:A000 - images/zooz/zen26.png - https://products.z-wavealliance.org/products/3147/ - 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. +--> + + http://www.openzwave.com/device-database/027A:A001:A000 + images/zooz/zen26.png + https://products.z-wavealliance.org/products/3147/ + 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. - 1. Bring your Z-Wave gateway (hub) close to the switch if possible + 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 - 1. Initiate inclusion (pairing) in the app (or web interface) of your hub. + 1. Initiate inclusion (pairing) in the app (or web interface) of your hub. 2. Tap the upper paddle on the switch 3 times quickly. - U.S. / Canada / Mexico - ZEN26 - https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3147/zooz-z-wave-plus-s2-on-off-switch-zen26-manual.pdf - S2 On Off Switch - FEATURES: + U.S. / Canada / Mexico + ZEN26 + https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/3147/zooz-z-wave-plus-s2-on-off-switch-zen26-manual.pdf + S2 On Off Switch + FEATURES: - Manual or Z-Wave on/off control with instant status updates - Simple Direct 3-Way: connect with existing on/off switches in 3-way, 4-way, and 5-way set-ups, no add-on needed (neutral wire required) - Remembers and restores on/off status after power failure @@ -35,65 +35,110 @@ SPECIFICATIONS: - Maximum Load: 8 A, 150 W LED/CFL, 600 W incandescent, 1200 W resistive - Range: Up to 100 feet line of sight - Operating Temperature: 32-104° F (0-40° C) -- Installation and Use: Indoor only - - Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3147/xml - Updated for firmware version 2.0 - - - - - - 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. - - - - - - - - - - - - Time, in minutes, for auto-off timer delay. - - - - - - - - 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 (Available for select hubs only). - - - - - 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. - - - - - - - - - - - +- Installation and Use: Indoor only + +https://www.support.getzooz.com/kb/article/315-zooz-s2-on-off-switch-zen26-ver-2-03-advanced-settings/ +MANUAL CONTROL +Upper Paddle: +1 x tap: load on; Scene 1, attribute 00 (button 1) +2 x tap: Scene 1, attribute 03 (button 3) +3 x tap: enter inclusion (pairing) mode; Scene 1, attribute 04 (button 5) +4 x tap: Scene 1, attribute 05 (button 7) +6 x tap: change LED indicator mode (see parameter 2) +10 x tap: change physical / Z-Wave control mode (see parameter 11) +tap-tap-tap-and-hold: factory reset + +Lower Paddle: +1 x tap: load off; Scene 2, attribute 00 (button 2) +2 x tap: Scene 2, attribute 03 (button 4) +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 (button 6) +4 x tap: Scene 2, attribute 05 (button 8) +tap-tap-tap-and-hold: factory reset + + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3147/xml + Updated for firmware version 2.0 + Updated for firmware version 2.03 + + + + + + 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. + + + + + + + + + + + + Time, in minutes, for auto-off timer delay. + + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + 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 (Available for select hubs only). + + + + + 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. + + + + + + Set reporting behavior for disabled physical control. + + + + + + + + + + + diff --git a/config/zooz/zen27.xml b/config/zooz/zen27.xml index b81b58814a..ebdbe66c45 100644 --- a/config/zooz/zen27.xml +++ b/config/zooz/zen27.xml @@ -1,10 +1,21 @@ - - - http://www.openzwave.com/device-database/027a:a002:a000 - images/zooz/zen27.png - https://products.z-wavealliance.org/products/3148 - Product features: + + + http://www.openzwave.com/device-database/027a:a002:a000 + images/zooz/zen27.png + https://products.z-wavealliance.org/products/3148 + 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. + 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 + 1. Initiate inclusion (pairing) in the app (or web interface) of your hub. 2. Tap the upper paddle on the switch 3 times quickly. + U.S. / Canada / Mexico + ZEN27 + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3148/zooz-z-wave-plus-s2-dimmer-switch-zen27-manual.pdf + S2 Dimmer + Product features: - Manual or Z-Wave on/off and brightness control - Simple Direct 3-Way: connect with existing on/off switches in 3-way, 4-way, and 5-way set-ups, no add-on needed (neutral wire required) - Fully adjustable ramp rate for just the right on/off speed @@ -25,101 +36,154 @@ both sides of heat sink tabs off) - Range: Up to 100 feet line of sight - Operating Temperature: 32-104° F (0-40° C) - Installation and Use: Indoor only - - https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3148/zooz-z-wave-plus-s2-dimmer-switch-zen27-manual.pdf - U.S. / Canada / Mexico - S2 Dimmer - 1. Initiate inclusion (pairing) in the app (or web interface) of your hub. 2. Tap the upper paddle on the switch 3 times quickly. - - ZEN27 - 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. - - 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 - - Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3148/xml - this requires v2.0 (or newer) firmware - - - +https://www.support.getzooz.com/kb/article/314-zooz-s2-dimmer-zen27-ver-2-08-advanced-settings/ +MANUAL CONTROL +Upper Paddle: +1 x tap: load on to last / custom brightness; Scene 1, attribute 00 (button 1) +2 x tap: on to full / max brightness; Scene 1, attribute 03 (button 3) +3 x tap: enter inclusion (pairing) mode; Scene 1, attribute 04 (button 5) +4 x tap: Scene 1, attribute 05 (button 7) +6 x tap: change LED indicator mode (see parameter 2) +10 x tap: change physical / Z-Wave control mode (see parameter 15) +press and hold: increase brightness level +tap-tap-tap-and-hold: factory reset + +Lower Paddle: +1 x tap: load off; Scene 2, attribute 00 (button 2) +2 x tap: Scene 2, attribute 03 (button 4) +3 x tap: enter exclusion (unpairing) mode; Scene 2, attribute 04 (button 6) +4 x tap: Scene 2, attribute 05 (button 8) +press and hold: decrease brightness level +tap-tap-tap-and-hold: factory reset + + + Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3148/xml - this requires v2.0 (or newer) firmware + Updated for firmware version 2.08 + Updated for param 9 min value + + + + - - - - 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. - - - - - - - - - - - - Time, in minutes, for auto-off timer delay. - - - - - - - - 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 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. - - - 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. - - - Double Tap action. When set to Full, turns light on to 100%. If set to Maximum Level, turns light on to % set in Parameter 11. - - - - - Enable or Disable scene control functionality for quick double tap triggers. - - - - - Enables/Disables the double-tap fucntion and assign brightness to single tap. Last level: single tap returns to last brightness level. Full/Max level: single tap returns to full/max level - - - - - - 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. - - - - + + + + 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. + + + + + + + + + + + + Time, in minutes, for auto-off timer delay. + + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + 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. + + + Double Tap action. When set to Full, turns light on to 100%. If set to Maximum Level, turns light on to % set in Parameter 11. + + + + + Enable or Disable scene control functionality for quick double tap triggers. + + + + + Enables/Disables the double-tap function and assign brightness to single tap. Last level: single tap returns to last brightness level. Full/Max level: single tap returns to full/max level + + + + + + 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. + + + + + + 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 + + + Choose if you want to set the Z-Wave ramp rate independently of the physical ramp rate (using an appropriate command in your hub) or if you want them to match. + + + + + 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. + + + + + 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/zen30.xml b/config/zooz/zen30.xml new file mode 100644 index 0000000000..ff3add27e3 --- /dev/null +++ b/config/zooz/zen30.xml @@ -0,0 +1,183 @@ + + + Double Switch + PRODUCT FEATURES: +- Manual or Z-Wave control of 2 separate loads (dimmer + relay) +- Perfect replacement for a fan / light combo (neutral wire required) +- Scene control for multi-tap scenarios on select hubs +- Quick and easy pigtail wire installation (single pole only) +- 4-color LED indicator and air-gap switch for added safety +- Fully customizable dimming features including ramp rate, on +brightness level, and double tap to full brightness +- Remembers and restores on/off status after power failure +- Built-in Z-Wave Plus signal repeater to extend network range +- S2 security protocol and 500 Z-Wave chip + +SPECIFICATIONS: +- Model Number: ZEN30 +- Z-Wave Signal Frequency: 908.42 MHz +- Power: 120 VAC, 60 Hz +- Dimmer Max Load: 75 W LED, 250 W incandescent; DON’T use with tube lights, DC powered fixtures, or chandeliers +- Relay Max Load: 15 A (1/2 HP) +- Operating Temperature: 32-104° F (0-40° C) +- Installation and Use: Indoor only + + http://www.openzwave.com/device-database/027a:a008:a000 + http://www.getzooz.com/ + http://www.support.getzooz.com/kb/section/134 + images/zooz/zen30.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3791/zooz-s2-double-switch-zen30-ver1-manual-online.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 +4. Your hub will confirm exclusion and the device will disappear from your controller's device list + If your primary controller is missing or inoperable, you may need to reset the device to factory settings. To complete the reset process manually, press and hold the lower paddle on the dimmer for at least 15 seconds until the LED indicators start flashing, then release. Then immediately press and hold the upper paddle on the dimmer for at least 15 seconds. The LED indicators will flash again to confirm successful reset. + https://products.z-wavealliance.org/products/3791 + U.S. / Canada / Mexico + ZEN30 + + Initial Metadata Import + Updated for firmware version 1.04 + + + + + + + LED Indicator Mode for Dimmer. Normal has the dimmer (top) LED indication on when the switch is off, off when the switch is on. Default: Normal + + + + + + + LED Indicator Mode for Relay. Normal has the relay (bottom) LED indication on when the switch is off, off when the switch is on. Default: Normal + + + + + + + LED Indicater color for Dimmer. White, Blue, Green or Red. Default: White + + + + + + + LED Indicater color for Relay. White, Blue, Green or Red. Default: White + + + + + + + LED Indicater Brightness for Dimmer. Bright (100%), Medium (60%) or Low (30%). Default: Medium + + + + + + LED Indicater Brightness for Relay. Bright (100%), Medium (60%) or Low (30%). Default: Medium + + + + + + LED Indicator Mode for Scene Control. Enable/Disable LED indicators next to the dimmer lighting up when a scene is selected. Default: disabled + + + + + Auto Turn-Off Timer for Dimmer. Sets the time (in minutes) after which you want the dimmer to automatically turn off once it has been turned on. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-On Timer for Dimmer. Sets the time (in minutes) after which you want the dimmer to automatically turn on once it has been turned off. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-Off Timer for Relay. Sets the time (in minutes) after which you want the relay to automatically turn off once it has been turned on. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-On Timer for Relay. Sets the time (in minutes) after which you want the relay to automatically turn on once it has been turned off. Range: 1-65535. Default: 0 (disabled) + + + On Off Status After Power Failure. Default: Restore both to prior state + + + + + + + + + + + + Ramp Rate Control for Dimmer. Adjust the 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. Note that 0 is instant. Default: 1 + + + Minimum Brightness. Set the minimum brightness level (in %) for your dimmer. You won't be able to dim the light below the set value. Default: 1 + + + Maximum Brightness. Set the maximum brightness level (in %) for your dimmer. You won't be able to add brightness to the light beyond the set value. Default: 99 + + + Double Tap Function for Dimmer. When set to full, turns light on to 100%. If set to maximum level, turns light on to % set in Parameter 15. Default: full + + + + + Enable/Disable Double-tap for Dimmer. Enables/Disables the double-tap fucntion and assign brightness to single tap. enabled: single tap turns on to maximum brightness level. disabled (last level): single tap returns to last brightness level. disabled (full/max level): single tap returns to full brightmess. Default: enabled + + + + + + Enable/Disable Load Control for Dimmer (Smart Bulb Setting). Enable or disable direct manual and Z-Wave control of the connected light (works great for smart bulb control). If disabled, the dimmer will no longer control the connected bulb directly but will still send on/off and brightness reports to the hub so you cn use them to create automations for your smart bulbs or other switches. Scenes and other functionality will still be available through the paddles. Default: manual disabled + + + + + + Enable/Disable Load Control for Relay (Smart Bulb Setting). Enable or disable direct manual and Z-Wave control of the connected light (works great for smart bulb control). If disabled, the relay will no longer control the connected bulb directly but will still send on/off and brightness reports to the hub so you cn use them to create automations for your smart bulbs or other switches. Scenes and other functionality will still be available through the paddles. Default: manual disabled + + + + + + Choose how many seconds it takes for the dimmer to go from 0% to 100% brightness when pressing and holding the paddle. Default: 4. + + + Default Brightness Level On for Dimmer. Set custom brightness level (in %) for the dimmer to come on to at single tap. Choose 0 for last brightness level. Default: 0. + + + Sets behavior of the dimmer when physical control is disabled + + + + + Sets behavior of the relay when physical control is disabled + + + + + Set the brightness level the dimmer will turn on to when off and when lower paddle is held DOWN for a second. Default: 20 + + + 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. + + + + + + + + + + + + + + + diff --git a/config/zooz/zen31.xml b/config/zooz/zen31.xml new file mode 100644 index 0000000000..99d417662d --- /dev/null +++ b/config/zooz/zen31.xml @@ -0,0 +1,206 @@ + + + RGBW Dimmer + FEATURES: +- Manual or Z-Wave on/off, brightness, and RGBW color control +- Perfect for programming your existing RGBW LED strip +- Energy monitoring in live mode and over time +- Double tap to full brightness feature + optional scene control +- Remembers and restores on/off status after power failure +- Built-in Z-Wave Plus signal repeater to extend network range +- S2 security protocol and AES-128 bank-grade encryption + +SPECIFICATIONS: +- Model Number: ZEN31 +- Z-Wave Signal Frequency: 908.42 MHz +- Power: 12 / 24 V DC (Do NOT connect to 120 V AC high-voltage power!) +- Maximum Load: 10 A total between all channels (6 A per channel max); 120 W total when powered by 12 V DC / 240 W total when powered by 24 V DC +- Range: Up to 100 feet line of sight +- Operating Temperature: 32-104° F (0-40° C) +- Installation and Use: Indoor only +- Dimensions: 1.67” x 1.5” x 0.69” + http://www.openzwave.com/device-database/027a:2000:0902 + http://www.getzooz.com/ + http://www.support.getzooz.com/kb/section/135 + images/zooz/zen31.png + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=product_documents/3720/zooz-s2-rgbw-dimmer-zen31-manual-online.pdf + 1. Initiate inclusion (pairing) in the app (or web interface) of your hub. If you're using an S2 hub, it may ask you to enter the DSK key printed on the back cover sticker or scan the QR code next to it to complete secure inclusion. +2. Activate the dimmer. Make sure the RGBW Dimmer is powered up. Click the Z-Wave button 3 times quickly to include the device. The LED will blink yellow to indicate communication with the hub. It will blink green (for non-secure, S0, or S2 unauthenticated inclusion) or magenta (for S2 authenticated) once the device is successfully included to your network. It will blink red if inclusion is not successful. + 1. Bring your Z-Wave gateway (hub) close to the RGBW dimmer if possible. +2. Put the Z-Wave hub into exclusion mode (not sure how to do that? ask@getzooz.com) +3. Click the Z-Wave button on the device 3 times quickly +4. Your hub will confirm exclusion, the LED indicator on the RGBW Dimmer will light up in red, and the device will disappear from your controller's device list. + If your primary controller is missing or inoperable, you may need to reset the device to factory settings. To complete the reset process manually, press and hold the Z-Wave button to enter reset mode. Release the button when the LED indicator glows yellow. Then quickly click the Z-Wave button again to confirm factory reset. Wait a few seconds until the device resets and restarts - the LED indicator will light up in red when it's ready. + https://products.z-wavealliance.org/products/3720 + U.S. / Canada / Mexico + ZEN-31 + + Initial Metadata Import + + + + + + + + + On Off Status After Power Failure. Default: forced to OFF + + + + + + Switch / Input Type for IN1. Choose the input/switch type you want to connect to the IN1 terminal. Default: momentary switch + + + + + + + + Switch / Input Type for IN2. Choose the input/switch type you want to connect to the IN2 terminal. Default: momentary switch + + + + + + + + Switch / Input Type for IN3. Choose the input/switch type you want to connect to the IN3 terminal. Default: momentary switch + + + + + + + + Switch / Input Type for IN4. Choose the input/switch type you want to connect to the IN4 terminal. Default: momentary switch + + + + + + + + Assign scene activation trigger for IN1 terminal. Default: Everything + + + Click/toggle the connected switch 1 time to trigger a scene. + + + + Click/toggle the connected switch 2 times to trigger a scene. + + + + Click/toggle the connected switch 3 times to trigger a scene. + + + + Click/toggle the connected switch 4 times to trigger a scene. + + + + Assign scene activation trigger for IN2 terminal. Default: Everything + + + Click/toggle the connected switch 1 time to trigger a scene. + + + + Click/toggle the connected switch 2 times to trigger a scene. + + + + Click/toggle the connected switch 3 times to trigger a scene. + + + + Click/toggle the connected switch 4 times to trigger a scene. + + + + Assign scene activation trigger for IN3 terminal. Default: Everything + + + Click/toggle the connected switch 1 time to trigger a scene. + + + + Click/toggle the connected switch 2 times to trigger a scene. + + + + Click/toggle the connected switch 3 times to trigger a scene. + + + + Click/toggle the connected switch 4 times to trigger a scene. + + + + Assign scene activation trigger for IN4 terminal. Default: Everything + + + Click/toggle the connected switch 1 time to trigger a scene. + + + + Click/toggle the connected switch 2 times to trigger a scene. + + + + Click/toggle the connected switch 3 times to trigger a scene. + + + + Click/toggle the connected switch 4 times to trigger a scene. + + + + Power Report Frequency. Choose how often you want your RGBW Dimmer to report power consumption (W) to your controller. NOTE: must be 0, or an increment of 30. Default: 3600 + + + Energy Report Threshold. Choose how you want your RGBW Dimmer to report energy use (kWh) to your hub. The number entered as value corresponds to decimal values in energy useage change. So if 10 is entered by default, the RGBW Dimmer will report any change in energy use over 0.1 kWh. Energy reports are sent in t least 30-second intervals. + + + Energy Report Frequency. Choose how often you want your RGBW Dimmer to report energy (kWh) to your controller. NOTE: must be 0, or an increment of 30. Default: 3600 + + + RGBW/HSB Wall Switch Mode. Choose how switches connected to the input terminals control your LED strip. In the default RGBW mode, each switch connected to each input terminal controls the RGBW chnnels separately (so IN1 for red, IN2 for green, etc.) with a single click for ON/OFF, double click to full brightness, and press-and-hold to dim (momentary switches only). In the HSB, IN1 controls hue, IN2 - saturation, IN3 - brightness, IN4 - white with single click for last set value or value 0, double click to max value, and press-and-hold to set custom value. Default: RGBW mode + + + + + Ramp Rate (switch). Adjust the ramp rate for your RGBW dimmer (fade-in/fade-out effect for on/off operation). Values correspond to the number of seconds it takes for the dimmer to reach full brightness or turn off when operated from the connected wall switch. Note that 0 is instant on/off. Default : 3 seconds + + + Ramp Rate (Z-Wave). Adjust the ramp rate for your RGBW dimmer (fade-in/fade-out effect for on/off operation). Values correspond to the number of seconds it takes for the dimmer to reach full brightness or turn off when operated remotely from the Z-Wave hub Note that 0 is instant on/off. Default : 3 seconds + + + Enable one of the preset animated color programs to set the mood with a click. Default: preset programs disabled + + + + + + + + + + + + + + + + + + + + + + + + + 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 new file mode 100644 index 0000000000..2a0e655e9d --- /dev/null +++ b/config/zooz/zen34.xml @@ -0,0 +1,86 @@ + + + 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 +- Scene Control (select hubs only): trigger up to 8 scenes or control up to 8 devices with multi-tap control.* +- Smart bulb control: use scene control or direct association (for Z-Wave bulbs only) to turn your smart bulbs on and off through wireless signal instead of cutting power to them +- New 700 Z-Wave chip: more range and faster speed than ever +- Adjustable LED indicator: choose from 4 colors and 3 brightness levels +- S2 security protocol and AES-128 bank-grade encryption + +SPECIFICATIONS: +- Model Number: ZEN34 +- Z-Wave Signal Frequency: 908.42 MHz +- Power: 2 x CR2032 batteries +- Range: Up to 250 feet line of sight +- Operating Temperature: 32-104° F (0-40° C) +- Installation and Use: Indoor only + http://www.openzwave.com/device-database/027a:F001:0004 + http://www.getzooz.com/ + http://www.support.getzooz.com/kb/section/185 + images/zooz/zen34.png + 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 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 + + 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 + + + + + + + + + + Choose the LED indicator mode for your Remote Switch + + + + + + + Choose the LED indicator color for the UPPER paddle remote control triggers + + + + + + + + + + Choose the LED indicator color for the LOWER paddle remote control triggers + + + + + + + + + + + + + + + + + + + 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/config/zooz/zse29.xml b/config/zooz/zse29.xml index 532413e484..b6a439e906 100644 --- a/config/zooz/zse29.xml +++ b/config/zooz/zse29.xml @@ -1,4 +1,4 @@ - + http://www.openzwave.com/device-database/027A:0005:0001 images/zooz/zse29.png @@ -46,9 +46,45 @@ NOTE: All previously recorded activity and custom settings will be erased from t ZSE29 Initial Metadata Import from Z-Wave Alliance Database - https://products.z-wavealliance.org/products/3081/xml + Updated for firmware version 2.0 - + + + + + Set the value of basic set report sent to the light associated with the sensor in Group 2 (so the light turns on to the selected brightness level). 99 is the equivalent of full brightness in Z-Wave terms. + default: 99 + + + + Enable or disable motion reports completely. If motion sensor is disabled, the device will not report motion at all to your hub. + + + + + Adjust motion sensitivity where 10 is the most sensative setting. + default: 10 + + + + Set lux level trigger with 10 being the lowest reported value. The sensor will report motion to the hub and associated devices only if lux level is below the set value. + 0 - set manually by lux knob; (default) + 1 - ignore lux and always report motion; + + + + Set motion re-trigger time for the delay before the sensor reports no motion to the hub and associated devices after detecting the last motion activity. + 0 - set manually by timer knob; (default) + 5-720 (seconds) - set customer re-trigger time; + + + + Set lux reporting frequency to decide how often the snesor will measure and send brightness level data to the hub and associated devices. + default: 30 (minutes) + + + diff --git a/config/zwave.me/ZME_WALLC-S.xml b/config/zwave.me/ZME_WALLC-S.xml index 6103809157..b8ccb2c03c 100644 --- a/config/zwave.me/ZME_WALLC-S.xml +++ b/config/zwave.me/ZME_WALLC-S.xml @@ -1,8 +1,29 @@ - + + + http://www.openzwave.com/device-database/0115:0101:0100 + images/zwave.me/zme_wallc_s.png + https://products.z-wavealliance.org/products/1086/ + CEPT (Europe) + Use this procedure only if the primary controller is missing or otherwise inoperable. +(1) Turn the device into Management Mode by keeping all four buttons pushed for 5 seconds, (2) click on Button 3, (3) keep button 4 pushed for 4 seconds. + Re-Inclusion and Exclusion are performed by pushing button 1 in management mode. Pushing all four buttons for 5 sec. turns the device into management mode (indicated by blinking green LED). + ZME_WALLC-S + https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1086/ZME_WALLC-S-Manual.pdf + (1) Turn the device into Management Mode by keeping all four buttons pushed for 5 seconds, (2) click on Button 2. + Place your primary controller in inclusion mode by following the manufacturer's instructions, then activate inclusion on the wall controller by pressing any one of the four buttons for one second. Inclusion mode is indicated by the red/green blinking of the LEDs until the timeout occurs after 10 seconds. + The Z-Wave.Me Wall Controller is a Z-Wave device that can both control other Z-Wave devices and activate scenes. Although it is controlling other devices, the Wall Controller cannot act as Z-Wave network controller (primary or secondary) and will always need a Z-Wave network controller to be included into a Z-Wave network. The device can be used in different modes that are selected by configuration parameters: +Control of groups of other Z-Wave devices using 'ON', 'OFF' and Dim commands. +Activation of predefined scenes in Gateways or other Z-Wave devices. +This device support secure communication when included by a controller that also supports secure communication. + ZME_WALLC-S Secure Wall Controller + + Initial Metadata + + @@ -94,4 +115,3 @@ - diff --git a/config/zwave.me/razberry.xml b/config/zwave.me/razberry.xml new file mode 100644 index 0000000000..0d9b4048f1 --- /dev/null +++ b/config/zwave.me/razberry.xml @@ -0,0 +1,8 @@ + + + images/zwave.me/razberry.png + + Initial metadata to add pic + + + diff --git a/cpp/build/Makefile b/cpp/build/Makefile index 6eed2929f1..27ffa33819 100644 --- a/cpp/build/Makefile +++ b/cpp/build/Makefile @@ -155,7 +155,7 @@ clean: @rm -rf $(DEPDIR) $(OBJDIR) $(LIBDIR)/libopenzwave.so* $(LIBDIR)/libopenzwave*.dylib $(LIBDIR)/libopenzwave.a $(top_builddir)/libopenzwave.pc $(top_builddir)/docs/api $(top_builddir)/Doxyfile $(top_srcdir)/cpp/src/vers.cpp printversion: - @echo "Building OpenZWave Version $(GITVERSION)" + @echo "Building OpenZWave Version $(GITVERSION) - $(VERSION).$(VERSION_REV)" -include $(patsubst %.cpp,$(DEPDIR)/%.d,$(tinyxml)) diff --git a/cpp/build/support.mk b/cpp/build/support.mk index babb23b4da..1c93f8336e 100644 --- a/cpp/build/support.mk +++ b/cpp/build/support.mk @@ -40,20 +40,31 @@ TMP := /tmp PKGCONFIG := $(shell which pkg-config) #git binary for doing a make dist export GIT := $(shell which git) -# if git is not installed, then set the revision to 0 -ifeq ($(GIT),) -$(warning git executable not found, setting VERSION_REV to 0) -VERSION_REV ?= 0 +#check if this is a Git Checkout, or a Distribution File +GITDIR := $(wildcard $(top_srcdir)/.git/) +ifneq ($(GITDIR),) +ifneq ($(GIT),0) +GITCO := 1 +else +GITCO := 0 +endif else +GITCO := 0 +endif + +ifeq ($(GITCO), 1) + _ := $(shell $(GIT) -C $(top_srcdir) update-index --assume-unchanged dist/openzwave.spec 2>&1) ifneq ($(_),) $(warning git update-index returned: $(_)) endif + GITVERSION := $(shell $(GIT) -C $(top_srcdir) describe --long --tags --dirty 2>/dev/null | sed s/^v//) _ := $(shell $(GIT) -C $(top_srcdir) update-index --no-assume-unchanged dist/openzwave.spec 2>&1) ifneq ($(_),) $(warning git update-index returned: $(_)) endif + ifeq ($(GITVERSION),) $(warning git describe returned an empty result, setting GITVERSION to VERSION_MAJ.VERSION_MIN.-1 and VERSION_REV to 0) GITVERSION := $(VERSION_MAJ).$(VERSION_MIN).-1 @@ -61,13 +72,25 @@ VERSION_REV := 0 else VERSION_REV ?= $(shell echo $(GITVERSION) | awk '{split($$0,a,"-"); print a[2]}') endif + +else +ifeq ($(VERSION_REV),) +VERFILE := $(wildcard $(top_srcdir)/cpp/src/vers.cpp) +ifneq ($(VERFILE),) +VERSION_REV := $(shell sed -n 's/uint16_t ozw_vers_revision = \(.*\);$$/\1/p' $(VERFILE)) +else +$(warning Missing Either Git Binary, Not a Source Checkout or doesn't have a vers.cpp) +endif endif +endif + ifeq ($(VERSION_REV),) VERSION_REV ?= 0 endif # version number to use on the shared library VERSION := $(VERSION_MAJ).$(VERSION_MIN) + # using seting from bitbake ifeq ($(BITBAKE_ENV),1) CC := $(CC) diff --git a/cpp/build/testconfig.pl b/cpp/build/testconfig.pl index 53c25ae915..3cf2817939 100755 --- a/cpp/build/testconfig.pl +++ b/cpp/build/testconfig.pl @@ -68,13 +68,13 @@ sub CheckConfig { foreach my $rev ($data) { #print $_[0]."-".Dumper($rev->{Revision}); + my $fr = int $rev->{Revision}; my $md5 = digest_file_hex($_[0], "SHA-512"); if (defined($CFG::versiondb{$_[0]})) { if ($CFG::versiondb{$_[0]}{md5} ne $md5) { my $dbr = int $CFG::versiondb{$_[0]}->{Revision}; - my $fr = int $rev->{Revision}; if ($dbr >= $fr ) { print $_[0]." - md5 does not match Database - Database Revision:"; @@ -84,7 +84,7 @@ sub CheckConfig { } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $rev->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{$_[0]} = \%versions; print($_[0]." - Updating Database\n"); } @@ -92,7 +92,7 @@ sub CheckConfig { } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $rev->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{$_[0]} = \%versions; print($_[0]." - Adding new file to Database\n"); } @@ -134,12 +134,16 @@ sub CheckConfig { if ($data->{Revision} == $changelog->{'revision'}) { $gotrev = 1; } + if (!length($changelog->{'content'})) { + LogError($_[0], 9, "No Text in Entry for ChangeLog Revision $changelog->{revision}"); + } } if ($gotrev == 0) { LogError($_[0], 9, "No Change Log Entry for this revision"); } #now make sure required attributes have type/id entries my %params = map { $_ => 1 } @metadatatypeneeded; + my $gotpic = 0; foreach my $mdi (@{$metadataitem->{MetaDataItem}}) { if (exists $params{$mdi->{name}}) { if (!defined($mdi->{type})) { @@ -149,8 +153,21 @@ sub CheckConfig { LogError($_[0], 11, "ID Identifier Required for $mdi->{name}"); } } + if ($mdi->{name} eq 'ProductPic') { + $gotpic = 1; + if (defined($mdi->{content})) { + if (!-e "config/$mdi->{content}" ) { + LogError($_[0], 12, "Image File Missing - config/$mdi->{content}"); + } + } else { + LogError($_[0], 13, "Empty ProductPic Entry"); + } + + } + } + if ($gotpic == 0) { + LogError($_[0], 13, "No ProductPic Entry in MetaData"); } - } } $data = $xml->XMLin($_[0], ForceArray => [ 'Value', 'MetaDataItem' ], KeyAttr => { CommandClass=>"id"}); @@ -250,22 +267,22 @@ sub CheckFileExists { my $data = $xml->XMLin("config/manufacturer_specific.xml", KeyAttr => "", ForceArray => [ 'Product' ] ); # do a check of MFS Revision etc my $md5 = digest_file_hex("config/manufacturer_specific.xml", "SHA-512"); +my $fr = int $data->{Revision}; if (defined($CFG::versiondb{"config/manufacturer_specific.xml"})) { if ($CFG::versiondb{"config/manufacturer_specific.xml"}{md5} != $md5) { my $dbr = $CFG::versiondb{"config/manufacturer_specific.xml"}->{Revision}; - my $fr = $data->{Revision}; if ($dbr ge $fr ) { print "config/manufacturer_specific.xml"." - md5 does not match Database - Database Revision:"; - print $CFG::versiondb{"config/manufacturer_specific.xml"}->{Revision}." File Revision:".int $data->{Revision}; + print $CFG::versiondb{"config/manufacturer_specific.xml"}->{Revision}." File Revision:".$fr; print "\n"; LogError("config/manufacturer_specific.xml", 8, "Revision Number Was Not Bumped"); } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $data->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{"config/manufacturer_specific.xml"} = \%versions; print("config/manufacturer_specific.xml"." - Updating Database\n"); } @@ -273,7 +290,7 @@ sub CheckFileExists { } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $data->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{"config/manufacturer_specific.xml"} = \%versions; print("config/manufacturer_specific.xml"." - Adding new file to Database\n"); } @@ -314,22 +331,22 @@ sub CheckLocalization { my $data = $xml->XMLin("config/Localization.xml", KeyAttr => "", ForceArray => [ 'Localization' ] ); # do a check of MFS Revision etc my $md5 = digest_file_hex("config/Localization.xml", "SHA-512"); +my $fr = int $data->{Revision}; if (defined($CFG::versiondb{"config/Localization.xml"})) { if ($CFG::versiondb{"config/Localization.xml"}{md5} != $md5) { my $dbr = $CFG::versiondb{"config/Localization.xml"}->{Revision}; - my $fr = $data->{Revision}; if ($dbr ge $fr ) { print "config/Localization.xml"." - md5 does not match Database - Database Revision:"; - print $CFG::versiondb{"config/Localization.xml"}->{Revision}." File Revision:".int $data->{Revision}; + print $CFG::versiondb{"config/Localization.xml"}->{Revision}." File Revision:".$fr; print "\n"; LogError("config/Localization.xml", 8, "Revision Number Was Not Bumped"); } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $data->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{"config/Localization.xml"} = \%versions; print("config/Localization.xml"." - Updating Database\n"); } @@ -337,7 +354,7 @@ sub CheckLocalization { } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $data->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{"config/Localization.xml"} = \%versions; print("config/Localization.xml"." - Adding new file to Database\n"); } @@ -350,6 +367,7 @@ sub CheckNotificationCCTypes { my $data = $xml->XMLin("config/NotificationCCTypes.xml", KeyAttr => "", ForceArray => [ 'NotificationTypes' ] ); # do a check of MFS Revision etc my $md5 = digest_file_hex("config/NotificationCCTypes.xml", "SHA-512"); +my $fr = int $data->{Revision}; if (defined($CFG::versiondb{"config/NotificationCCTypes.xml"})) { if ($CFG::versiondb{"config/NotificationCCTypes.xml"}{md5} != $md5) @@ -359,13 +377,13 @@ sub CheckNotificationCCTypes { if ($dbr ge $fr ) { print "config/NotificationCCTypes.xml"." - md5 does not match Database - Database Revision:"; - print $CFG::versiondb{"config/NotificationCCTypes.xml"}->{Revision}." File Revision:".int $data->{Revision}; + print $CFG::versiondb{"config/NotificationCCTypes.xml"}->{Revision}." File Revision:".$fr; print "\n"; LogError("config/NotificationCCTypes.xml", 8, "Revision Number Was Not Bumped"); } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $data->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{"config/NotificationCCTypes.xml"} = \%versions; print("config/NotificationCCTypes.xml"." - Updating Database\n"); } @@ -373,7 +391,7 @@ sub CheckNotificationCCTypes { } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $data->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{"config/NotificationCCTypes.xml"} = \%versions; print("config/NotificationCCTypes.xml"." - Adding new file to Database\n"); } @@ -386,6 +404,7 @@ sub CheckSensorMultiLevelCCTypes { my $data = $xml->XMLin("config/SensorMultiLevelCCTypes.xml", KeyAttr => "", ForceArray => [ 'SensorTypes' ] ); # do a check of MFS Revision etc my $md5 = digest_file_hex("config/SensorMultiLevelCCTypes.xml", "SHA-512"); + my $fr = int $data->{Revision}; if (defined($CFG::versiondb{"config/SensorMultiLevelCCTypes.xml"})) { if ($CFG::versiondb{"config/SensorMultiLevelCCTypes.xml"}{md5} != $md5) @@ -395,13 +414,13 @@ sub CheckSensorMultiLevelCCTypes { if ($dbr ge $fr ) { print "config/SensorMultiLevelCCTypes.xml"." - md5 does not match Database - Database Revision:"; - print $CFG::versiondb{"config/SensorMultiLevelCCTypes.xml"}->{Revision}." File Revision:".int $data->{Revision}; + print $CFG::versiondb{"config/SensorMultiLevelCCTypes.xml"}->{Revision}." File Revision:".$fr; print "\n"; LogError("config/SensorMultiLevelCCTypes.xml", 8, "Revision Number Was Not Bumped"); } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $data->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{"config/SensorMultiLevelCCTypes.xml"} = \%versions; print("config/SensorMultiLevelCCTypes.xml"." - Updating Database\n"); } @@ -409,7 +428,7 @@ sub CheckSensorMultiLevelCCTypes { } else { my %versions; $versions{md5} = $md5; - $versions{Revision} = $data->{Revision}; + $versions{Revision} = $fr; $CFG::versiondb{"config/SensorMultiLevelCCTypes.xml"} = \%versions; print("config/SensorMultiLevelCCTypes.xml"." - Adding new file to Database\n"); } @@ -635,4 +654,6 @@ sub CheckSuppression open my $FH, '>', 'cpp/build/testconfigversions.cfg'; print $FH Data::Dumper->Dump([\%CFG::versiondb], ['*versiondb']); close $FH; +} else { + exit 1; } diff --git a/cpp/build/testconfigversions.cfg b/cpp/build/testconfigversions.cfg index 4a7226f296..d52e77c7a8 100644 --- a/cpp/build/testconfigversions.cfg +++ b/cpp/build/testconfigversions.cfg @@ -1,58 +1,62 @@ %versiondb = ( 'config/2gig/ct100.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '4fe343964064e151aac9e1b2ce76574da4b2d1ba9e9cb86b7986a27e611ab5d88a7df0005f4d04b43c39aa64e08c299ac077f9f6c85cfe5af5b46c4f3c622e77' }, 'config/2gig/ct101.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'b2c96148fd6c97c1e7a0d07126d2a7a497b49b56105e00d311dcf885d204f44bbd0673a15b0041c894098cca56b8ccfdcb072946557bbd64877552beeb0e21c0' }, + 'config/2gig/ct200.xml' => { + 'Revision' => 1, + 'md5' => '7822e83cf1aa215d3ccad4d0103cc72a7a81c9a4501a068572bc65d3e7dd3631c3801dc3d554a4677d6b8b57758e42946b9cd2a5c614318c085f4ef6ade6d947' + }, 'config/2gig/ct30.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '783218e85cb8eadbb47fd3dfd1d9dc60ccd7f1bf63fd585d8fd1701cab9f3460b78afd48c30ff88bd1e6754e0f215a1f607e6a8d838b92b25fe8dad5c106ea9f' }, 'config/2gig/ct32.xml' => { - 'Revision' => 5, - 'md5' => '3212843be3b66c1e1fee24ad77115918c2aa71a03a72bed86911fb545e84eb8c13e5d72e2019fb632a4f8f4de040faa4a3b516649735b90fc585438339ae1065' + 'Revision' => 6, + 'md5' => '3fc0dc93e116998e2d5d3e33d26dc182611a8c0c0ca031503b66fa45e88d39a6be0d53bdc0d7efcb6f371338ae70c393d5378f1e06dc58ec8b1ebf3fe17d44e2' }, 'config/2gig/ct50e.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '9c53edcf0c9718202fb57582c4f292dbd8d754b90c3bb06680aa4a03f7d981be96636035134c680f33d99ab5b3341698a05f8f70652e2489715606287f8ca221' }, 'config/2gig/ct80.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '8d38a290a107a1777a2b4d319ae9a393ed0e2b44ec2720e9ff778088a1bc9a417d3a128ef557b9ad568246754bcdd41c19c90c3cb6775a48e16544f787ed54b7' }, 'config/BeNext/1poleswitch.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '3b76f4656bc5d544507eec34e0fff51472a363b55d07b10ec06208d46be9bb8ced3f4baed01cd4ed97fd5f9187048eef62963c95c03134b2104f158b09592cdb' }, 'config/BeNext/2poleswitch.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '85a950d189684ef3797d9b043572e82f9661a29af90dff49a62a6e8e0672952442b13f113e6b9dfe69ac19141addd097e6664e8f02006f553960cc9a3add3860' }, 'config/BeNext/AlarmSound.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '8aa7047af5db54a1a47792a5a5cc63148f83a6b7dbe9e592a8a99bf5ebac4313528ec089346aea61438ff7ecb420273838f11ecd7fed7b97092b5f5eef97463b' }, 'config/BeNext/BuiltinDimmer.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '748984dd23e65d0e9ba5e3a392cc3d85ad892d2ba1d19cfa7dcf73097dcf03aa0cc64b5a424619d0a04c6533a448698d81e3c6b0ace5fe1ced9e0deb08542da2' }, 'config/BeNext/DoorSensor.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '8ebfe57d88e12b732d66a18dd5c1bdfe31eda56ba4a174f09a7ccfae12eae2e378c74c4050d3b59b3a3323e312c7286fa80ef25406c721d0bace170c30c6ee9d' }, 'config/BeNext/EnergySwitch.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '5f21579b7171abadad0c495552ac171378e4530f0d54ec0c1440e1b019288234e6ebde6c210a132f355435959c3082ead05a559c8277b1dd7e01513c60b0c970' }, 'config/BeNext/HeatingControl.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'd1f4f2efc1544b406b40cd4a8d7d45ab2f15cacbb1f35b484a4b3dffd2d18beae46abf14970993d246799fb2df26109893b6f824304fede8ac38d2fb2c51fc16' }, 'config/BeNext/Molite.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '45ba6a2c4525a2609e843cf21e186762f30f9d4c0e1d3ce57da5685c55127df5a66987ea00c44364a543be57a30025c3d125e091bb03ea06e1528adf54325611' }, 'config/BeNext/P1dongle.xml' => { @@ -60,1931 +64,2335 @@ 'md5' => '8c0e0f218bb6fcece9001601875ec97de1db64456c1c1126c539499dbf73539afdb8fe7549ebfbc186158f4c246a30e523a9905962eb195cc2ad7a7605acf095' }, 'config/BeNext/PanicButton.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'a28d1e807284459bc308026d21eb66b83b5f010ad8d155d1c729a1c1106389ee9f591ba7b633097f495d33bed8559e79aa8db822ac0ccb7f09ee4fd9705716a2' }, 'config/BeNext/PanicWatch.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'ac6e5f893d44d59a9d583ac9cdd8d3ea8a96a9f27b3ad288cc87a9634c00e68339bfeac1e855cba5a94b2b6e0f1b39fe38240d0911e78d9d8374f2368b260ee5' }, 'config/BeNext/PluginDimmer.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '3f2f85b719e0ca2f87f0e95eb3bf1968de6416a369fb3eded5ee92f97ad8935ba4a76585b163c41778707ae1af73e6919230c93614c4e7d049e388d864773157' }, 'config/BeNext/SceneController.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f8a6cd6c2b4a7dcca25543b18a26301f0fb717671a779e937988428da8d40bb957af81c8e3011adef397ed3416a89c8d910f6c374b9ecc0e1968e88a3f0a3723' }, 'config/BeNext/TagReader.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '86e9af8a741a2a97cef4a2fbe8b46b558fd9903fa845cc6a09f3002b6e8d8593fbf1d89b9bd899a4cf5749411af35141ebb1fe7ddaad965eb4b8dbe49172bf42' }, 'config/BeNext/TagReader500.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'e67743d1ac01fe4c07366f15806a7209a2ad458411b7a4c3dbfe0dc2e350c87b39dd72bcd7d676656d85b4fc13771aba34cf7690fc8eec0bbde116e19ca90a0e' }, 'config/BeNext/mydisplay.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '5930fbe8cce26fd6dd82e44ab57aec2db4cc1d0e2d2715af28cad9f35ca3b022fd94c5e3d2c1ab14b127a75886da4f295fb16ff4cfe5f5f5b985a02eefc4f009' }, 'config/BeNext/mygate.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'eb39290e2085eb7493a88fba0f53782a588539d81810442fd1575d5065263e24b23e4711a2fd5df0bf7cae7ff380c605d785399e87aa658cac3f155a1d2ae667' }, 'config/Localization.xml' => { - 'Revision' => '8', - 'md5' => 'cb17fb84342208b79eaa2cf41563f96e50e07362708d04eb468598c1c0567fe8d3954d15b3120a79478f9639202df168a2b11fd8424aeaa170aa9a39a923b631' + 'Revision' => 12, + 'md5' => '3947ce48694ec51a18c15b5ffe9b02906df9929c44fd5ba2c4d3a860ea1f125e3255b7cf85f8a1be7334a5335b8f3615429a1a0a3fdef78157c00935eaa98a5b' }, 'config/NotificationCCTypes.xml' => { - 'Revision' => '9', - 'md5' => 'fe343cf0b94ab320774f1a8c161bc4ec5c0b3193f83067c8810cfdac36148c4c68ecad20a940514562158afdae22543fbb54f710406b070114f53606cfba4e94' + 'Revision' => 11, + 'md5' => '219e944370bea857e14dc25789bca29dde4a65f72b9d9b39a9ab187437cf80c70a876b399a45fd89f90b4da27f2ce3359f61f90d5605c4d53a14effb3ca28343' }, 'config/SensorMultiLevelCCTypes.xml' => { - 'Revision' => '3', - 'md5' => '0feafdbf1cc9dcd47c31ec4d2b380e57c6c84d8bf5819a6cc60da8cf88a80ece35a392f40cd1564e32c253be6df2e16b140cab51d1a2bf551663a01110e640f1' + 'Revision' => 4, + 'md5' => '36aee27cf7888627f6d7a35604f782976d043aceda82cf1c90a830e19e297fae5ad7ac36de480a4c36af71c5ad94a5c7db52b2817cfc84cb760fcbb83bcba6f8' }, + 'config/abus/SHRM10000.xml' => { + 'Revision' => 1, + 'md5' => '65df614d199c1b62a17a141801d6723803af54ecb5fd0fd591a731ef8a80695f61532a484469dad55c100373d188816bb1642cb48f5dda8e1e9e81c40edfa66f' + }, 'config/act/lfm20.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f4c1366e3f7ee171137d2688de970a6e4ae2d4939c22267eda205405ce5e397c731cda516bd76225bab830e0c4cb998a4da44e249d468e88593a0151c41157eb' }, 'config/act/zdm230.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '32b87c4f243f83783ca721429e0722ec0b8e502996dd8cba17afccab11a6d73c4b5b4b4e6fbf11146e6998d1ed714565a6ec3461ad6b0a9ca05e28e65645cb06' }, 'config/act/zdp100.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '326fce3252167b44133df2be23528b4aca1586c30fc4c028abda4eb8725d0a1f8705f5a17369ad3303de4684b713c638b1b7e50b0aa2d4e8867d6d0c8027068a' }, 'config/act/zdw103.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'd62d1c261b6d4b002cf4897f486c11959c877c46b7f8e40b5d3d36161e394eb9a88a45ca04b6726fae366adef1a30cd508dd2c9c58da282caf48e29762798591' }, 'config/act/zdw232.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '11bce1049e1a2d8e6404d7bed073cb7621ed522d24f4cb5418399ed2f33b614d928cab6eb856722de1cc4a251d7ec0fe78b3a3cf3076c4b074dc344dee8a3da7' }, 'config/act/zir010.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'baa9da225651ef1a50f889aed86ac6f136b1fc54bbed8c43326559eaf65521b4b098e51c4f870c41c2da057b482a86969095daac30aad0667225b10b5498721d' }, 'config/act/zrm230.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '91e81981210fcc70fb877270b991ca31fce51b9c7b6b572b7db02b28ad033f30173803e9aead08998dd5adbe90a94af6fae55bad09b50850d71f133615223c69' }, 'config/act/zrp100.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '9ea2450a9c6bb7f1b871d020a04abf8c8c1907884b93bb2c8433226d5ee3fc5915022b9229c040c65e9ec34387f1ceb6590f6299d08d5ca76e6a4f6b94d0508e' }, 'config/act/zrp110.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '53777acb25cebd3379f8d7a06057d6fe0b52354e71679e105e2a4ff66aa046a8b4a9cd853c3ea7249a87d3dfec36d015cf18a75a0a416a5c60e1dc14ef81464d' }, 'config/act/zrw103.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '56be44ee933cb0e4fcd59758fb49af06aadf0536c7a372ba665037092b628c5888783b45411aa4c1cd92ac99ba450b0130955598f8846b534598864f333d1db7' }, 'config/act/zrw230.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '8396a52fa0dda4e5d29b7a8a218f2fc07c8fdf734c43d916e9db558216450d435660aa7a3f0a432801108541095634dfb193720ac2fe005d895e602734dc121a' }, 'config/aeotec/dsa03202.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '0979e94319ead0dac6c7a9cdd7907b40202785de948535b5bb73ae2cd46c4d29ad97fd5d363dca65a6b080c0a9ede2390d015db935faaffeec84987f9e4eedfa' }, 'config/aeotec/dsa22.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '3ddb4ae3f695f1952b10592611eb98cc4c261ef4224cd681344d462283bb4732bc46bf103048708cbc43cd5fd5d9668148aa60d242dc35664973b555f14520d3' }, 'config/aeotec/dsa38.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'f174aec88220486aa47af5d8fead4efbdf26c1ccdd8f5a6d6bc18609350d859589fdced0cfb1a07a949c3a227fbc2807ccd6328e74ee2d3368cf6d7e87ceed8d' }, 'config/aeotec/dsb04100.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '20fd36afaf508a5224785de53c4a5fbd252cd07b37ebc12fea5393c90fb3a3191bc60f2ef712d2e32a3236e2b435b5e2e38c10ed4172eb2970fa88f9da96caeb' }, 'config/aeotec/dsb05.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '7937693b67248dd6edfb79483fb99d1bc6dfedac63c4b143ecbb775435ef2bdf4676c885a5f4796e0ff0a7af8124b21c6bdf4015d2fdb9db9ab7699d4b7023be' }, 'config/aeotec/dsb09104.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'fb7263fd5cfd5c64567cd8740930ae30a0f2529f24c851c2f98c851ab8f1e643f187a3ed345567300ce4dcc7f6137f9c6894ee07aa58959c0aed5401771451c6' }, 'config/aeotec/dsb28-zweu.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '378e85fb9fd12363865dc1fea1be23ea2d3699896e178c4a9ed32a0346c5aacec4ea25eda557365bd93373734bd389dc9278bbcfdceed4b1fdc0c518998c446a' }, 'config/aeotec/dsb28.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'cf1a42993bccbece425f82a4c38b2ea9afc25c815c20e9d6910616007135e15df7e542dc3ec025d040273f2c0056709d20819d6171ea72dab452b38ff94c4837' }, 'config/aeotec/dsb29.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '8cf1f981a5cf9607e560d3b3f3b23ee9145a16361fb97dbad6d32fb3428167bf73d76562942092eaab26f6970d6ec943e2779d434ed188d8a3d7531a445e089b' }, 'config/aeotec/dsb45.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '16f6b34bcf084cd4febdae147093a2456f65bb5a999c98eb19006664a1e2d30dbb6c76f785d340da40bb1abace3161243f53669e109102b80c30b92f311839b6' }, 'config/aeotec/dsb54.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f7be82de3668551d30335226875e9f899b80c2f9ace847f8391586b77856828f1737992b711fea1dfcdf198acc32468c695ef00a7e37f1a308ef6fb6950e57ac' }, 'config/aeotec/dsc06106.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '052dee67375c3d6a155197019da3dee753ccd485d419e85e4071ee5bd43cde8f79e397df4c3b951a19c5f13059a2ff3091f8ae82dfe82b406a6ab88f3d0fa5c8' }, 'config/aeotec/dsc08101.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '09e3b194689ed0e6299999897f6abf295ec66ec3c63bc58cc04745ef0c0bb64c378cbcd828609741241aa3fb822baec07435a3dcd5efb7575e390be780e010c9' }, 'config/aeotec/dsc10.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'a408eb0f1de9aefebd3b47fbb18ac37d6cdecb279379d33a009f8625eb398eeb15dcaa70135ea32e6097ec08e796b5e47a40552ccba49b73fac9948fc3caca5b' }, 'config/aeotec/dsc11.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '442bf8b1c4eb469d23faf31cf4f7615b97bc3f809f96e888ffbe2a058cede252fa47703493ea1628f21d12df606528cb3e4b2f28562c9b1960b29c35fcfc66cf' }, 'config/aeotec/dsc12104.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'b87f4a6edcaacab02edf19bfd695ef33639634b5bdaed27e6627ac2125999825ee722e7b621aa25da10523676f958cf2665c66970656bc3a41449ffe5f242614' }, 'config/aeotec/dsc13104.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'ef5dd72ffeeff633a1c3e4f800b030d15d08aee39f8d986b38b1b62dec3be5b86239d86c9bd68900b415181b3f80dcd39359719229d31e4def3025a21c61a9a4' }, 'config/aeotec/dsc14104.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '17a2282e85a8c55c9594ebcabf655e639e05c6ff9c5fc34d735212d107cd5bb2f02de79a9d9208116a8233ee93283e5e06e56a582e225162be1745560e2ebdfd' }, 'config/aeotec/dsc18103.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '32d7bfcef911dbd9809a4acd2edc9ee0d024467b2f976f43e7c48ced7fbe00091ce325cbd31a09229e210e0ecc0723120e9781ec4ca8f29cebe80c1cb1b41d5f' }, 'config/aeotec/dsc19103.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '7515c93b6868543dffcae100ead92a9e6d9f9627a6673bb69c57099ceece2f3e8c8c93afa5031e8b7fb1b3f29c33cb4d6573913ee59efa2336fad2f86420a100' }, 'config/aeotec/dsc24.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '341394bce4e1c61175b6acf0fd8f9b299661db2c40f93d4138e897084b3afc3ad04798cd074d8bfa910e35a2b7629acff05479577c9c3cf7f764833233f4fcf5' }, 'config/aeotec/dsc26103.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '9adb08a2bc7b6d2b24d9e120c78e77a6d686bd6191dfb41b80fdd2da2a2d151a48c3b63c9f43cb09ce25b2acd9853b89d980570fbed3b5f2d8663773388cf3d4' }, 'config/aeotec/dsc27103.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '7dbc08625869c04da00c72444804e053bae36ee28f3207413fcc40591929001a69e59dfeed59eb80482c5fa5ef55d490efcf945dfd339fcf911700ec5f2a1f92' }, 'config/aeotec/dsc35103.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f5d464374a3466fc7bbf7a53858afc26224007de129cdc115171ddbf609a12282bae1fcac01f33554d9029918ba37a63b89d84f935160214e5d84b178b4715af' }, 'config/aeotec/dsd37.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '85d86525fac9158fc4fa41da95217e52dbb19eafe45a5fc02ae36f63e6ab0b7e1d7967441de798ab36f223b41f672395d6012e53ddecf25f06b7a6ff9225c256' }, 'config/aeotec/zw056.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'd84b9d33348e972fbc0e9d7afcccf8a9baf3ab216600a93461ba27276a16d93f2749b909640942ab4e9b9c5e6aca977df9d73a84851d25055c08973560b3b70c' }, 'config/aeotec/zw062.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => '216ceb7f2224557a2c6cfd8b7e35a14c42777eaf9aa14e266c3ccdf3791c2020c3038bd4d9198bbf56d309f537004c6a9380511de115474efc371652c55193af' }, 'config/aeotec/zw074.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'cc2f4eaea28d3c4eca92e8d354890f4dabc5f2b6bc93f92e82237a7ea243bba0e0bdfe1aa154f6b0775f846a14c0e8fe86ec9e634c1e8339c357eea80b150a60' }, 'config/aeotec/zw075.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '437c6d307461be670fce0b2f16f0e1634890cdbf4f5ccd43f34ff237bd68410b1bf6cf8e6a6eb029e2deb3af565a6d5c61dea6543920b20845a84dc9b8229de6' }, 'config/aeotec/zw078.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '09020a57df80e03f421bf3df6603ec5fa6e0fd50242faa53e2e8f9b3ac8e966e5735eeebad82106b458ed21a3bf8e40263cf8e6469d3c452f62a55e0a6e021f0' }, 'config/aeotec/zw080.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '78618600d24ec5b5079f23575d0559b863626162259177a93e31ff1f78540764f54ff9d4e38e84195de1709798d4a44f3efcd5c4e6cae7aff564e1c26255dfd0' }, 'config/aeotec/zw088.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '76a90cace1499ce28ec2cb7334fe3a4e1baf890732f2b272c60b5b0627c15c89ec72bf3e86ba1394aab8e0ebe6eb39e86677540af28579016430c85baeb3d311' }, 'config/aeotec/zw089.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'e7839e6376516c3a932c2f8d32ad64d60df5a890cd5e669cacb10fb75ae0621947e3d9cb00e00de7b4bb026f8c7e4be1cc25b59336568fa1d23dd1885126b1e5' }, 'config/aeotec/zw090.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'eda5882a0b1e3f78c95e51496307d1867a1b3dc756a0b24f705155a3a1996659e67b6af65e60bd4b800548b4b1b6bb57ff591140f2062027545612efbf2a3cfa' }, 'config/aeotec/zw095.xml' => { - 'Revision' => '5', - 'md5' => '64029aa66434ff853d0f5b54dbab6c5ab5039f9307474a6a28bd2405fe318c98f4d3fda8a718fdbc9d8765f8ce7625f6b0f9d245491f90b3559144dc9535fe0b' + 'Revision' => 6, + 'md5' => '2e61f67c818ce40e29881dfc21ac53d6fc51b650d8394a615c02221664d47d53882a967581943faf9fd1b67f9c64ead25d0dee1d50ffc4893876c328ef449f35' }, 'config/aeotec/zw096.xml' => { - 'Revision' => '8', + 'Revision' => 8, 'md5' => '6d1e18b9e7a418ff6eefd323b2928fc1320f034cbf93d5c10be66a2794f99f57941c67364ee5e7d0b8a15491fe5bcbc856e859be16735ec6781899f1fc1d22d7' }, 'config/aeotec/zw097.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'f9cdfc4713dd0352b3e5069a21cf8a6a6d36014611b3ba482fe059195016111c6ec43d9ed99d1874381424970e5939e0fff6796bf8412e8c06bf9c16add43919' }, 'config/aeotec/zw098.xml' => { - 'Revision' => '10', + 'Revision' => 10, 'md5' => 'adf310294cf46f0d5e1a833017eea6039c841b500479bc57176648e13dc27e4525591d226b60ad2ff6461483b7168229fea7885bf0d84e8c3a5169e17668dd7c' }, 'config/aeotec/zw099.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'c4775cc1e44d3580cf6cadede3c1dca34dc94d9cb573888775ded7da5f224035853690d715ce8c7de0031d1e5df637d0da1ff7c1c86957755f09b65bcd4677f5' }, 'config/aeotec/zw100.xml' => { - 'Revision' => '24', - 'md5' => 'd7844707b29f8fe526d94aca4b1a47a26a3639e8d4a681199bb2775024d2f273c7be634cba65062d1ba2000803491af6aa654bcf33969e7ab870ffc80ce6f673' + 'Revision' => 25, + 'md5' => '3260a03fd6b6656d02ce4d70755e72cd7af35b0e1ed1c95efed230c8ee7d5bc13443092e031977d114efad81e43b35af53ba965b9c12b6a8e5c30b1e4fc59b02' }, 'config/aeotec/zw111.xml' => { - 'Revision' => '6', - 'md5' => '8b12f9898911caa9368f6086a5c113b787bd6d14bf3101af07d187f8f1be8acd7b9f060e5de6355e0b1eb5d1582ca8f1fd2643a9bb3f530a04aa25077ba0d6b3' + 'Revision' => 8, + 'md5' => 'bdada4079cb3fe4bcc7bca5d831abc450e27f9ee4e38e36709df5e5b7adbb814846b7e660686fefd81f0b5524c382e1efb1ff43f0df77ca1374bbedacd1207c9' }, 'config/aeotec/zw112.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '5e832838a7292144bee049fa0cff287a4de781c55c1afa5a5471d98a00a22c6a796eef7b80bcb6ad6ca15b0e72a78e90ac6d82943aeeccdd8fc78befc3b2358d' }, 'config/aeotec/zw116.xml' => { - 'Revision' => '6', - 'md5' => 'aa24312b86df1e10ddedd71c0aa874f1e44fb49192b0481e4b973eca5a86d0e12071733ca51ad42f50d3ff09d2955952d3e0c11b2512770046795aa6ec9d7c88' + 'Revision' => 8, + 'md5' => 'acddde85a083a0bdba9a27da88fae9c7605d35cc8ef1109a1a4c8d91abaafd81c8510144cd6ae239a52290403bf73dfe46357e8ba3656ccbb761e7f3f56228d2' }, 'config/aeotec/zw117.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'f06c4a37004d923c5131b5d81da83a3b035f8c4869cf7460e00d709cdf132ca98cda8b6d6c8efe3e123b1abae40ba2b21edb6c43e4d355c8ab0c9a893488d073' }, 'config/aeotec/zw120.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'dc9b411f14b53925f973925c79fe180d7627f605cee4f45dd53c09030b3a4e234d83b2402bf4ed348b522f69b60a02bbc318031013a489853cc2569fbc55c245' }, 'config/aeotec/zw121.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '32a745da8b1a4ad35c19526739550747d4c243b93360ee64045435ad04e45e2e4148e12ed2c4f08c11efd076d39e4831395eda05651efe160fee24457b957bd5' }, 'config/aeotec/zw122.xml' => { - 'Revision' => '10', + 'Revision' => 10, 'md5' => '4c874a1d73359dd30743161b0665edfd3c7b9b16d5e4781ab13a84b5554ba2d03f9fb9480345f5192637abdde80867c4862388a10b2527c8207041999a4b4626' }, 'config/aeotec/zw129.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '372fa89d8aacf685983efe977fdafeb25715d5397d44922ae8075b5fd2fa69e74fb4afe45ca365fd0c464aea1bd0651a93e5f0518c25a6bab98d86edf21f3861' }, 'config/aeotec/zw130.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => '9e98b12590da0c343fc75ebc18b1343e4df9120f292d46700666ba53e41ee99e6a6b196a2cf4e3b5a567a844499264e015381638c418d1d9adeda9e7117e599b' }, 'config/aeotec/zw132.xml' => { - 'Revision' => '5', - 'md5' => 'c3a5e7f00a8b3514fb9de7b12ecfba5f2c4f85529ef5266290adcc4c01be9e5009602fa3dee17d5787715aaf57a04434b8d6f6f49d49e9279ad5b21becf549b2' + 'Revision' => 7, + 'md5' => 'db49147ea64a88bc8106c1e88975523edf85c2e7e0b5ccccafb53ab438466f6a9cb6af75c4c17b7f5bf5cf10e6155cfa6f662d9b0b23726549d38f6d7c8e51a3' }, 'config/aeotec/zw139.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '971cf4eb4f6323c3f983c171b744af227d2f59a13665303b1cd3b76f62111cf5cb179bb196b0fdc33d90d608716490106cc9d75946a715c35140400f628f64b6' }, 'config/aeotec/zw140.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'b64f170b079ae1340bd4a74ef3a88f0cdf66281fa28d656b46f408b183d04c8e6a67f584f90dd6f8b2aa1fc2b2039e32b936f6f947394d28002b3d3a2a47cadb' }, 'config/aeotec/zw141.xml' => { - 'Revision' => '5', - 'md5' => '53578d60043ed4ec1135724de795e1db8069d3a478e7caa4585ae82db0bf910f444b36cd3f10735fcc1c93e4fa307f9ed4b71a2d6ddcf6eb617b637b16adb0fc' + 'Revision' => 8, + 'md5' => '06b71d604f18c6a9a1dc5f7dd9ed31e561ad406814d96e2b2cf5d7242db12fc19ca5cea9d15901f8d22050fbdf9eb33c21099feacf53f692418d3f517fb27961' }, 'config/aeotec/zw162.xml' => { - 'Revision' => '6', - 'md5' => '0498367a6227644ecf6dff8143c11f411f5cbaa9fa6018e234d4dbe75e5e3fdefb888d5e5032ebd1c4aec52c1842a110ea013f083d931de602dfd205b094917d' + 'Revision' => 8, + 'md5' => 'e64095e89500ff3b42d49c0cd92dae23d278091eb4eaf536d593d0cf1d887eb28f39c90963775341a7a72599de22b20ed96da31a29b328bb1328f13f69c425fe' }, 'config/aeotec/zw164.xml' => { - 'Revision' => '1', - 'md5' => '37a2261b83bfc532e64b2aafe3b14be371f2ed9987406bc84588063bc8c0fae1b695325ad5d59bc6618db116504c4a68c74c31b231cca193a9da828ba9445c00' + 'Revision' => 2, + 'md5' => 'ccfd9832b957c32bcdfeee2ad8802dc577e621df4d71ebfcdc3f166d67a5af5da9b789ffc53163fa2f62183ac463b29a8845fb7a8c3e7845d264bb8f7f6c2828' }, 'config/aeotec/zw175.xml' => { - 'Revision' => '2', - 'md5' => '0c55631d8012d5c723cac19568a743397fa6dcfcdba9b30e9bd062eceec9c5eafd21690fc0fbca9b15f04c570add037f0f67c4053355fd6db994f631fbb0a04c' + 'Revision' => 3, + 'md5' => '1ea7de2ad02c49d24bb0c5d86ddf91cb09d37e3d9b3f64d9802f33f6d5626cd8cf33a18c1d0775f5622f075979415c461a846630ad40212d41998e8a4a970b8d' }, 'config/aeotec/zw187.xml' => { - 'Revision' => '1', - 'md5' => '146f79310f6da41585d36c8447e28fefc9686a7ad39e908f3f7dde56c22cfa00f199b647b910a1835010af94dbfafb54ad1eebc2f2789f31f64d1ed466714e68' + 'Revision' => 2, + 'md5' => '154d350bd8009ee6af5e6a28515bf9e2255e9f91a61c2c69108af544307d2291164ee819e333ea7f1064ae21507037c99a0550dbc2540c1106e973c204367ce0' }, 'config/aeotec/zw189.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '9fce017a9280d9419cdb71e47867fb849ae88873930e5edd6eedeadd317e6cd71953c3db3e1944c90ecd298ae1c19164e688412e7a163611375848b8625d664f' }, 'config/aeotec/zwa001.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e63fd65924332e173ce34701ba86502affcfe1e5088cac0aeaa5755a0c1e73e335727b5bdc4730784c407f8022766fc0c220e8f07e36df8e6a44ca636abf67a8' }, 'config/aeotec/zwa002.xml' => { - 'Revision' => '3', - 'md5' => 'f8ae29516711f6eca7237df4095354a8ad6b69812f8032b157d875d6ec6a09cebdc03feb81e3933ddb6f7d41454b34f79b2f9b876601665c4c761f52d33da8dc' + 'Revision' => 4, + 'md5' => 'c32dbf9c909ee50b3d38f14594f163cb2e5b49873cf1cd551c3d1a0fdbfb7223466c2e70d14d1b95de5467797f6fc2141b0e8859fe6c3e2fe3231abd0aae1dce' }, 'config/aeotec/zwa003.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'a02624ebe5092fa4bb9514c85ceb1b0e43dbc91203ab48c0608d13f3276bd48f331fed785d8b5ef2cae1a2af2ce40fb3d258b9c1aa9d36eb808b584e2383ecb2' }, 'config/aeotec/zwa004.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '0626cc10287e159e0a8b597dc07e7f092d1ae9af4c1b8ce796ddc12370981ba4c71589d04b4549936c58f690ee8b614619208bf3268f915f32602d1e2d6aaf9b' }, 'config/aeotec/zwa005.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '3c3441f59134243043aaefc4f01d1e8478580e03ac82a6a532f721c4d8320e5f8bf5404c93c25bcb853198b590353fb53deb364c39444fe9ca7fe36b64c218fc' }, 'config/aeotec/zwa006.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '08a55ab00eea7eb0fae63af644359667467bf0e31b22720bd21abb770c3b45cf0c3320039a67c8c6a33b740b8455beb1a67c9d4fa2f440cdc5056fee50f07a01' }, 'config/aeotec/zwa008.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '12234e354ac9b5378c93c1f5c32d642d29ff45ed6ae907c13d2a51c385f4340a1196a59b3419dd7901b48c592cb1693956e9d6e687b173d9d7a492221bec4a82' }, + 'config/aeotec/zwa009.xml' => { + 'Revision' => 1, + 'md5' => 'dea1ef33d8f6ee2abbe83a0aabd9c9e22e4a9d86e0715f1ee90c8851ed135ff27521ddd6cc308cd09648e2aca4a498903054fd5ee66f3338098f9ce81fcef2f3' + }, + 'config/aeotec/zwa011.xml' => { + 'Revision' => 1, + 'md5' => 'a67f8c997e6813f1772b4e980ad1580327d4f993fe007442580b9a37163bf732ddecd431fdd944e8d1f5841f9a55ad8cd43e4a5b5471709748b5974e7171e55e' + }, + 'config/aeotec/zwa012.xml' => { + 'Revision' => 1, + 'md5' => 'bcfcf5d1a552ab8a8ac6ab7586f3de4cd7189d72a11e60bbad6b0038eb33f1d4acba164b625e7d8343b712aa27752fbe9f17f5ee9294ce82599e7abdf6c675f9' + }, + 'config/aeotec/zwa019.xml' => { + 'Revision' => 1, + 'md5' => '5238b4e34afaa58b71c9b6c6e857b5b1a63e4645322cf0324cdc3556202dfc5d08979f5cdecc7989b851eb7db9aae6c2308bf7c3e7f56adb264c1f395d05e4cf' + }, + 'config/aeotec/zwa021.xml' => { + 'Revision' => 2, + 'md5' => '1337565d4bb52206d7c29f16a04957d09e9f800da716907a5190841f6b69901f5fde754d7e9713d0ac97f2ef6ab7b563edb3f3fda6981e58757e5f2202ab50e0' + }, + 'config/aeotec/zwa023.xml' => { + 'Revision' => 2, + 'md5' => '55f789365f3b8a4f1c84a44dc93cac26f2afff40963a4ea6dee8a69f9ca5b40d71d0ca73e5b9f6dd6a420d9f38c75bec5bd2b7800256d9d1169035b88e114315' + }, 'config/airlinemechanical/zds-ud10.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '028c79db0efa85f50283cb57a22462dac7d2e7024851b5d715ddb7f715d0012b8f993829ad542639294ab266b3017fb31a62ed8fec929dde8f401dd276dde67f' }, 'config/alfred/DB2.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '3277bc3318fabba8c77c47592c791a2679fb4e96a0f1e9b21c38561d2fb624452d9397b89ce9a51c3eb6d39d20444a3cc8af06cf46cbca218a52c2c7d82dc8da' }, 'config/assa_abloy/ConexisL1.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '87fb792063b7985b730a185e5be07e8f98d3662069b8055cd4cdd1a5f7623edd9d18f25ef5ca9c45c5489d48a91f97da914026b845ba9ed57bdd99752d985ff9' }, 'config/assa_abloy/KeyfreeConnected-plus.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '800ecddc35ebfbd336d3bcf8880b769d4c1bf5e333085d24a38ed64fe372bd128c2bac8ad3fe6cc7929e2531c8a0d0672b2c02276e57b547c70599810ca73ef9' }, 'config/assa_abloy/KeyfreeConnected.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '4252c298eacb7e31a79c7c8fcee5e2d40b56d9bf865c8eeed53e3a29e8695508d38ffb83f558a41871e13af346c65cbdbc8a7de6caf7c5a1a67af59b5fb384b3' }, + 'config/assa_abloy/ProSLKey-FreeDeadbolt.xml' => { + 'Revision' => 2, + 'md5' => '7a6771adb77b2bbcb11fa6e74733ff064b87311b1530dbfb048bb167d03e5a1b3880ad2d5fa59977080cc3c3b37f3624f457095ebc5770d97d4cf258d68cf0fd' + }, 'config/assa_abloy/PushButtonDeadbolt.xml' => { - 'Revision' => '6', - 'md5' => 'eab93127aa1423d943e6e4bc2650b76a4a8d029d9c138011c5a713e919b4fd3e27981a73a87f35ddd2089775b925e6fb5d85976e318ccca676208bf5502570d1' + 'Revision' => 7, + 'md5' => 'a39dc67ada1bb3ea32c5be977f635cb4e5758e5006d54b84ef8cb9c8bb91a830718e94758b5701d07af4c17ec3c83a68af34069aaded0e9096f70311e15ae2c5' }, 'config/assa_abloy/PushButtonLever.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '20533ba6551380cfb41ec7ef2e1dcec8c1b2d5e23b5ffcd87285c5a0945556989200c7bf25031cf8bdd3b39ae2c6a514565698acb3443c6bd6a3ed7ba583dbf6' }, 'config/assa_abloy/TouchDeadbolt.xml' => { - 'Revision' => '12', - 'md5' => '5549c51c360f1f4c27305d6c1bda951e1a48d1072b1b1c6b3ddcbc1be8ab922fde48c3c633d58d44b64d42297da9c8093e0f475be98282745dc6d0f611d5b936' + 'Revision' => 13, + 'md5' => 'c29a547f859db492054de260d6d575cedfcaecd00aa612974e848e317cfe498eea5e95723e0e01f90ac8ddd8179144b83fe744b248cf54d2e19fc97a52cbfc68' }, 'config/assa_abloy/TouchLever.xml' => { - 'Revision' => '2', - 'md5' => '922bb2b622dcc7c728da2fdca4d8e9bac4f3db7af115b259dcdf616addedd5a6b67dbecd5400d0a11335d8bc86b4444c25bfa755e84854988c7476c34ef986fd' + 'Revision' => 3, + 'md5' => 'f8ce232d1d46aadcc867c736a54218bd1cd15b54d2f2f819d190315cde7302e887ce23f0d111c4478bed6c3b0af9df91eabd9973313e9399e0516ca3cb66dbe9' }, 'config/assa_abloy/nexTouch.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '56cacadad65e06642795966771dc7ab7058c34207ca34acd340e593156db7c10de265fbadb75c0f31574b696ebc74e4329d661f98e8e246ab16c91a55ab38e0e' }, + 'config/assa_abloy/yrd1x0.xml' => { + 'Revision' => 14, + 'md5' => '72b0c1a02e59692b581f0f242a36b9c0c96f97d94217e7f391d219130f73df398abdc8370dcdffd74462d41b9aa1bf69498d0d04c3c147ed89a093970d25fef7' + }, + 'config/assa_abloy/yrm276.xml' => { + 'Revision' => 1, + 'md5' => '85f0bb84ad6fc350a6e916a4931d91adc77427366f8394bf07de3c9ca1394bf5a5dce576d6a4dd107097017454e4397f800ac597bec7fee8047a69a1709b2d12' + }, 'config/august/asl-03.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'c20731a4c1ed5261983c163c619c36085cab448344caa87203a45f89938678cd755708bf67bb0bc997bc61120051ae0355e4465f7e50a83420f4fc12e9752ac0' }, 'config/buffalo/hw-100v15a-zw.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '700da33bf896ed7250ae6e75b8f06885935c0398a3b60fcb96c28f0e8b61aec82bb83811a458893679da00db0864dea000f831b9128ff17a911e020bc93bf3ac' }, + 'config/building36/b36-t10.xml' => { + 'Revision' => 2, + 'md5' => 'af740c48ea2d7fbd46bbcb97ae6605dcf3f16bfcb8c8f785339a9baf3c4c41206310d309d85c9df803fee06bf1d958110cbb3a90d7088d945de39d46d430c852' + }, 'config/comfort/ucm.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '343e23824152ce111beb412a9b5ce0b40f90e12cad4fdc3b9e91267143e7dfa48f3b5901513401eb1b55bd986188c36d121c2fdd058f6ff91fcbb2c19f6fbfaf' }, + 'config/connecthome/ch-201.xml' => { + 'Revision' => 2, + 'md5' => 'a0ca60110b50b83dd53ed869fbe3cfafef1bbb1aa22c5cf96a85208370c55554d7af20b5a24eab3f2c81e333b9dea81a1134596def6254d9067a6f7de45d2e99' + }, 'config/cooper/RF9501.xml' => { - 'Revision' => '2', - 'md5' => '0d6d2fd4e186dce9e6883597e539ee7f7836eca827e561afd80952ba6d4da16a074670fa8e1415470d1a258de2ef006130002d320cc01da83b0508defd10f2b1' + 'Revision' => 3, + 'md5' => '3607a09ae6cfb895c99875d96250165cc78a6072c12bc381ffa206792599f0a646e835ef535084c128e528453e4a23430d2ac0a6797aab7e6f1c56b0103ae28b' }, 'config/cooper/RF9505-T.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'e66799ca1eb28d18fdde9ece6bdab8a00b583fed2f921e652dd6ac4e2f27f80c71ce1ba14316057314ae79a2bc6b4e31ff4e012242d996e905134f1c59123598' }, 'config/cooper/RF9517.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '79e0f21a4292d455896bdb3b87401bfd6f405a6a2a795c8b77a4a01513aefeb17b72ed4595f3f84c2463f17b386bd1ecea67ebbe547e5f39472abeb3d831b805' }, 'config/cooper/RF9540-N.xml' => { - 'Revision' => '3', - 'md5' => 'fdd961e3e81614537798f94194860876637b8ecc4274f9725bbbe1fa6827b1fc60e4dad7ba4f5178dade79fa9950cae8ad91a9f0599d922c140c59711a9612a7' + 'Revision' => 5, + 'md5' => 'ee02b6f5fdaac0c1eabb44e093fa59d4962443a5d0c1f151ee4f00e9bc219d4224dc93e423f7fb6ff7a1342717644f71a689b301cbf29aec4eef49879f5a51c1' }, 'config/cooper/RF9542-Z.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '9b2bcec41e4a46a2a2558960b03f5a3e66db60d40832542bffa053f49c0f08c70e64151d2619f1328df23089028a83ed70dc17af9125b2299443e237957ebbee' }, + 'config/cooper/RF9601.xml' => { + 'Revision' => 1, + 'md5' => '086da7deb18b8df7738a637822279549d2fe9618ebe7965c1d190fc83e0120e8050e1a2f9ec082b0b36bd5ee5589ce2d93e54d04c768238c5be40d88dd3dbd5e' + }, 'config/cooper/RFWC5.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '5e94896a472f7be22fe176de80f784d333bbf9a1afdcbed80094ecc1ae89c0b5cfcf47dc57731aa5312a87120b4d04934060ac3bf78aa39133118c6f1dc6d3a7' }, 'config/cooper/rf9534.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '3a127a530e1704602f95b10301cad6ec6fb7aa5eebeabae85610b3435d97242bc011435d8e0e603e3a4856f7b91ea29a6365593bb789fcf880efdffced4b1a28' }, 'config/danfoss/living.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e896b83443f6776d1a9e9ad52ccbd4294c0905d2c61f1f1029c0d51316e33278efa0586fabde67562e2ed1db7dd5f98b12580b43575d8ba167041b9b80dfb605' }, 'config/danfoss/rsroom.xml' => { - 'Revision' => '9', + 'Revision' => 9, 'md5' => '8670ab88a1a580c94bd5cba9bdfe217ba8cf980ceb15ec2fe28f8def9e6bb53131e019b4029b4cf193622775a68cbe63e147c83ccd39d1da981e550870448ad3' }, 'config/danfoss/z.xml' => { - 'Revision' => '10', + 'Revision' => 10, 'md5' => '67829f0390c36d3ce36ab30b108b1c470a3e233c81bc982758f8707c0872e27cc926ed27c2587fd65656c22b551a3c0421dbe4dacca16be6bc4f8079f176572b' }, 'config/devolo/connectz.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '61e265fb8396c5b7ca94019ec7c9912fb26d975f30a8bdc286f2d2b7eb63d75be28a9f2266d06d2a7d1fc222430b74e25a330246614141ddac617145ba08af00' }, 'config/devolo/mt02648.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '90a9dd3e7ad3fba28b73ac65425ca48640ffa0962c7bcb87e3a6b56661dd5fda87a89ca9e0c3fdf09bfc96f8319b8793e9cb8089932b0c8dc65c26e7131a8c99' }, 'config/devolo/mt02755.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '8b039195599ad62f4f511f07643743f7bde06359acadbc29790328483fab0ab0d5601156735849e1542e1b2f08fa5c90a241d1a7c366d773ec86f7c9756bd711' }, 'config/devolo/mt02758.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '14ff0b2c38401d34c8ee73b3070264d9dc5f7a8e2e0433df136b84e9590a718840b2aa4b18726eec7e40598b8f1bddb7a9f125ca17ffe1ed8f5eb3cc20661257' }, 'config/devolo/mt02792.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'd61db8b2dd5102245fb5e73208c40af5431512b7e60e6d3cff8b98b35b4a1d1744542f5beda0eb8a4b15606e4004f111454504e6fe4dec070ac4a8ccfe07d113' }, 'config/devolo/mt2646.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'f8715a93ad04fc6fca58e8f98d7d6d4608f62692cd825a61fbdc0bcf238e78845818fa848f33788f8d5ad3c031d969e403f96c49fa134921ed695cef73685940' }, 'config/devolo/mt2647.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'c8591779bcb81c1861d4b1009450cd600b7c21dc11ba0660efb16ef725686dbccf2f5dda3a78abf66c0d84ed834280e99d29b0cbfd229b3741e1a5ce4f585ca2' }, 'config/devolo/mt2651.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'bf1c18dbad944110d0b9cd6d4d796c77c7baaca3e51b7650f11ba84e981dc6e8de2d8a4be54e148592aeef2cb66b6751b39db4f11db5c31009de4804b51e6d05' }, 'config/devolo/mt2652.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'a8f15a647bc553fe25af1f6dd85a43915880514e90991e3ca1dad164801b86aa2ec738f78de7e20967eac39851d34decb3e437ba083a22ca102da399bc8b6e3e' }, 'config/devolo/mt2653.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '54999716088a16dfb9e197b14af98c726c1f2e709cb4fb15aa29dbaf6bfd9247e236fb0e389398c25d4e74c87a488c2dbe29c0f19a8fadcf3998a7e890e9d053' }, 'config/devolo/mt2756.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '2907005d8044e82669ec68cedefc5b7bfa93e688221a55c8b1d3b41e387579aaf90126c60ee2fe2253a8b0ee014a8e0fb4ebe325653dce4f2a3759079570337b' }, + 'config/devolo/mt2759.xml' => { + 'Revision' => 1, + 'md5' => '5c8c1066314553f11e30aaa335e19d366c1d222def7a6cd6487a0e634dbac718d0e2d86de21906a0c24dd077a6e847295a55243683e45f1a5f2dacdf22cb71ee' + }, + 'config/devolo/mt2760.xml' => { + 'Revision' => 1, + 'md5' => '1dbd17cf896b8241471c094ec0d450792a36af2e0f23d92cb82d2875253beb05e5bd909a43ee29c6c386b5b60a0e604c830e38a5d6828045224064138369e7d0' + }, + 'config/devolo/mt2761.xml' => { + 'Revision' => 1, + 'md5' => 'f5ec076e52b23e4ac0c0c9132f92d3315f20c752c024e60de4a05d1fc6caed280fa285b4f8f332f3d17c90124e1e84f3d42f50808419e0c2ebb8d38a7e356351' + }, 'config/devolo/rs014G0159.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '5a998e36359d0db43cf66cfbd59ef3b41281d12f535cb7aa57d704abd77e4e771cea236e82c8eead4ba9fb74962b536cd4431c7f6b5482f8900ba58496cfb9d9' }, 'config/diehlcontrols/766366.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '19811a36d8b2b054f026486178497b34b6c6e7819533aea8e865a57fea7bea01a39731cae1c407a7d983199ea8dae2eae7cd5ead407662ac79d35e25977c57e1' }, 'config/dlink/dch-z110.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '573c19c68df079fae58fcb4a318be9e269dfa618c38357a65ff80365a47840b9fb0f703370bd3c6d5a7409d1155472564291720169824c6e3bacfecadce05294' }, 'config/dlink/dch-z120.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '057ea9034b5751fe492a27bf4deef6c5b73fd53406649552f8817fee341be6001bb776cb5012ae6f7d8f319ada161faa29243d32c8efef9d508b18ed80cf41f8' }, + 'config/dlink/dch-z210.xml' => { + 'Revision' => 2, + 'md5' => '738b1bfcaa5f34d23eece8c2d95284c113abb0807197638d881f33afc49fe169036e68a702989bba4d64c49bdb038f6a764ff76e241884c25c339d251c4201c0' + }, 'config/dlink/dch-z510.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '0168efb962c2470418b5fb8ff1f274b5619054523605eb79341ac32e8e1e09ca817cee00c4a30fd0df2e0caa74de7740469cc32514ed0f2e3266e0dbc499789c' }, 'config/dome/0002.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '67ed823369ab3c2446449ecd98206ac0f1c427ac66ac86b471866e3a879460f373ef33d7629a7a9bb045793894140b585c1b3079b6e8661f85ce55865151edc2' }, 'config/dome/0083.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'df800a068d84b8f3615b232fafe6190ef9bea776c5c41f801ed127d1d76ee2decd5254b98966a2ea2b0b560a489d6279a61eafe1bfe7cc87b3e6335206fea102' }, 'config/dome/0085.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f02b0adcd4abb200640525a406f1eba3e246a5e8db82bdfd3f9f80531fa2cdec0e42d0a6ce140c3876a8e038d56f3a1e51ef9d1f5b4ae4cbec0160c958e5eaec' }, 'config/dome/0086.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '0f86f2e63e4c1695f4cd159ada100514fcd979a5d06f3e6c9b0095ba5716a2de68d5f4dcf20bc82383d9da30050e3254251a3005fb7b14c8c1e324b329a5fb6c' }, 'config/dome/0087.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '8cbb65b02e93448094240c732e1807d0a701372d94690a90fa410f75b0b9f8eec748d7e1f190f3250d271d972de4353eb507f30221678b597141caf4134326c7' }, 'config/dome/0088.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'cd876175a0f5f4fad952b2bc97abdb39e82ef1b606f9f7f7303124295ee375dab7957e73535a750f9e6551479e4f48a8d55845b79a889dbed8d28e0218acd705' }, 'config/dome/0101.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '5ccce24dbb0b56cc6e5e5bbebc24e05da07750a24f64dd66a6a5cd5aec7d79a0ae59f854af5f4b40cc60806706f54cc007bb1c844346db0f91ac10c8e3b49a7e' }, + 'config/dome/0104.xml' => { + 'Revision' => 3, + 'md5' => 'e4121145912464763ef4ece86fb7f2ff8edc0c547329b1dc7d36e81717202be5b0b84ed5214bcaa31d8a2f5882b9f762d0892402dfb421f3bd80b8f81b4577e6' + }, 'config/dome/0201.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'fee61cf3301b50c77758714649fa35f6d3bc3f1614124608577e3b47b897fc546fefb1a31520307f853c28726c5758cc3656d3ebe290b6ad858b43d4e99d7a64' }, + 'config/dome/dmex1.xml' => { + 'Revision' => 1, + 'md5' => '70b90962ec3fc43b50b827f6ac2fd8b9d112b8c979e6e42588dd5fa19eaa909fb4a9f66da21f3f9200358f4343785c41d6d561f6d1933a0a6587403421380627' + }, 'config/domitech/zb22uk.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '90c85ebfbaf16201c99bd09c957a408b944034a3626a5a5c2eced093e27e6e0a8afca3d8516d7f6ace2e3889b57e5fbe585219c74ecf7c8a127d3b860970c425' }, 'config/domitech/ze27eu.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'b198727272486c632dbaf5b9c4df7dac0fb4c8c743d63f223980b764c75b747078d2754959d2a15281de83972275b0062cf6fad1ab2b83dc1a7788b2d74e0e74' }, 'config/domux/DX1CA-Z.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '7bc16a7dbe5ba0591fd65015e168075a191131d6ed80882d4e986dac2f0db163988f8b7dea228dd9b1cbbec994ae78eb60f7ee302f716ab3647d3e304357656c' }, 'config/domux/DX1CG-Z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '431f30aa51b7c02581e67d94ff80f901e03436759cca0d1ebd4312445fbebc4904f3003298994d3b31fb7271edb78b0de5eab1c612898925549b702a150cbaf7' }, 'config/domux/DX1DS-Z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'a23fbfbb8197142d739590d81e1efc2e6540d6a3b0d061d7aeb33e2186e2fc544f6f9e8287b56fc9e33fee74b542fbc7cdb2c859c869d8043ba5ad8da45e3173' }, 'config/domux/DX1HT-Z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '8a2954363a09e06ff6dbe2688482a16987af0794aff080fe25229786387efe805ad42e46dd8a5b2a59c205f4e9b9eef2dbe5e30f015dffc348b22f73f08d28d4' }, 'config/domux/DX1MS-Z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'afd42f05719619ee61728d7707cfb7f5ae0a26317c3c2b91a06d6c8f6d9ca66709e21f5dfe05825ed24e1adbb3597f9785d4395ea1419ab1a1ec25780bf7f5e2' }, 'config/domux/DX1SA-Z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '4c57c0102cfae7a0a3d99c4a876c010ea600ff68267d8f3af9d6d93c4b23eba3eb6022edd26f0c3ed901ee69e83938c0dfc913ceb2e2e50f1d55ac015243b6bf' }, 'config/domux/DX1WL-Z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '5e533a29c1e3da4b6c739cb95c4e8ecbbfb269280c45c3c826a5429c8ed0ed0b50d142914354a1e9c660d825b144e2d595621126b34f4d29acf885bd1ced5204' }, 'config/domux/DX2SK-Z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'db469a75eb48481db6cc3ffcfb6590a58e531b1090cb215b3db12b8492bedd270d6068d1d716b5eec26a0fcb201694d269c106bd22095dc4190e50c8f30f016c' }, 'config/dragontech/wd-100.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '4d7a77c213b0dea753512dcd30e3f6723f7d751d13801af9a0584a04f4182043275e3e47f268299ab44f91958356119c571a34d1022b70bf8bafc08fd717c67e' }, + 'config/duco/DucoBox.xml' => { + 'Revision' => 2, + 'md5' => '7911f42a45b59bf2081ccf0dde356696d7586388f69e660e80ef72ef17516888ef9d74bff4deea0f03d721e27e43c2ac31ccea40bcdbe178a2a8163ce5bdbc3b' + }, + 'config/duco/Ducotronic_CO-RH_sensor.xml' => { + 'Revision' => 2, + 'md5' => '506b64e578667ead9c2ad64c896c0e44fe30efb228e6daa0144995f7ddaee1f0b7692e1447ddccb16d55bd9a2589a57afdfe164ca04873e7faf8db9cc598fcb7' + }, 'config/duwi/05458.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'aae2fb7ecd70a8670daf1f9a74a78e4a337da5e4477480607909a727385572371e7708e4cfcba1962c31231f23960db30dc182a74143f291366ddf9317b51e22' }, 'config/duwi/ZWES1000.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'a2068646341b2563717c6a9ed279b56010de4ad2b8420105d2318020fd4ab35f97975ffbdfa69fb7167855287ad2f54cb402705ea30437ba86b6f3598ce25b52' }, 'config/duwi/ZWESJ300.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '180a94924d5a26af131b684cd2a55a9b529563a852d22be1b1d4e67fbf89b9052113789ced43d8d1ec2980fb6c03a135e6ae384c66dcc49128cd0d494ea9cfd0' }, 'config/duwi/zw-edan-300.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '558abcae454f44ba9d0de9f04903672e77492bb1f2a67b9d399755c93ef71a6326ff261fbbf42f887ea2db0336d578220de8bf36028b3337f970d6d3313b1bf6' }, 'config/duwi/zw-zdan-300.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '4a87e60d6056dc202812887a8c896b089bd439e259924b724abc2ceb4cd9afbd2c72226320ef4130a55bc79c6d1c5946fc6feca04e0a71b52f4bc50a698d0a7d' }, 'config/duwi/zwfb.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'aba223dd3409990a731e8773259e6a68a893b862adcd3a99e008214c57771416120d42845bbbc5a99d4044819aac3121fc81c6610f0e48053676ff2c9888d91e' }, 'config/duwi/zwws.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '29a2b8e9eadf09ee7af8441cdf46d97ab8df6271d2f1cc981acc73a9f4bd7dbf1f53449c6f71d052fa130fed9c1347a5b611b81adc46f305d704943472f54b87' }, + 'config/ecodim/0.7.xml' => { + 'Revision' => 2, + 'md5' => 'e334fccc67d01e2b271314e4749dfbfef299dee1dac04af6bfbc253b9fd676e43c0711322226c936ef6fdc026cca4c291ecf943fa7a6419fec816d5533e0abbe' + }, 'config/ecolink/doorwindow.xml' => { - 'Revision' => '6', - 'md5' => '8e9343a7dfd2aa2e38539833b88c9240607d168c9345686946c0d509584550130b40a40ffdeef5e8c86ea1561a138106345459ac034e7f98dcc67ea418a0a859' + 'Revision' => 8, + 'md5' => 'f328fc950eaa4b3055fff82625da805bcdc8708115a79f926b623432ac30d3482fd933e0e8a252086a61b3f48fd27cdd850aaa828f74f5a774e7e6b2ee272bfe' }, 'config/ecolink/firefighter.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'bb3c0c3231ab9eb0a0a015140702edde90edd4f0a16794efbc10a9feb286d9573642c5411ebbf5cf917ef2ecc7eda16725b95e9106032bf2ddc885e4c478ac4e' }, 'config/ecolink/floodfreeze.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'affa47443b792317e413a8bc124477f533173a259ef9bb9e820ee9977db7cc75ec58d21332f912d65f015b46b4ed5ca0df8ea157ca03f91b483f07b6d0d4649d' }, 'config/ecolink/motion.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'abde9dec922634817550f559909091b5806e1f0d42f7aa400292ed8c9e6cf6ca0aaed1bb6bab30327053643ec7883333010783b2c3e7263e45421da8dbbe31bf' }, 'config/ecolink/sensor.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'd1897bb925a8c3c1f94ee31c3ad8cb8532be3690331fcc477444035e16c9a4b6496be1fd621f1c6c7be7575d72e55229c77234eedd956c9cb9817139ef317c51' }, 'config/ecolink/tiltsensor.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '59094a94ac42598b888a8a6edc2d87f08b0d47b174246fd4d22f46a71ebc1951edde9ae30a094d5502916e8381bfecb1d67d86fb9d54c9bbf91968585cf6ff3d' }, + 'config/econet/ezw1204.xml' => { + 'Revision' => 1, + 'md5' => 'fcbf2492b919363361339a98d7a9bdfd67618b9655cbf1795d8688924abf331ccb31ccc9169d05d5a541baf40e73e753f5d9a5e30a8cfd7f7149d69484038aee' + }, 'config/electronicsolutions/dbmz.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'a73eed69c4692edfa8c192c3ff82849c84585689ff73f07d7497d1abbb5c8dc77a249c4e090f366d0ec8cbb8da63a4727758685e3c0012821f0918fe78b8ac5a' }, 'config/enblink/ss201-us-w_1308.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '461fae3791a15189acc997f64255566573dcd51612028cb8d0bb9d189a249182d86336f977b62e434bfc26e0c89f15ef839ea0786ceda7d6cb32d8b452a05071' }, 'config/enerwave/zw15rmplus.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '0089cbf9a8c7f27a9ed4b7af8e84e594d6be66a70e1c92f0b0d85fd222355f8b8c7a03b5c584f22e99ee7c65776122a92dc74a50bd156be616327774602ae805' }, 'config/enerwave/zw15s.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '1300de4b8f914d8b1d2098cfb6cde5c5ba4f8ddfbb60d3a303b4301d7971001b7f088ee05aed4dd31b7138374fc14f07f322ea8b9b18889bf692e5891e944cf3' }, 'config/enerwave/zw20r.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '649faf0c076c9d76140c6d8e029addea7b2a82a0570b45780925d6ef435ff6478d0b86bad01078e1acb4761c71bae0ef85fbff28a8e1e1f18a587069ff7111bb' }, 'config/enerwave/zw20rm.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'd1d8e3db4d73e61674548aaaad10ff1543cd19339b5888fe2a9885e932d3a2f09a88f9d93ff62f0ba036e8a5cc191102683af39ea665f10de43ab1f31e56f2f3' }, 'config/enerwave/zw500d.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '7d6d24d8557afcfed2d1fb8620772546730f5ec5d6dac0115f5461d3565d6890403783455e5e7d8010e326098b5cb7eb03b816df9d6557f46b6447e893c075a1' }, 'config/enerwave/zwn-bpc.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '39b03cf30d1e29f45854d2328f661abf76754e635e4b1f6279d90ace3b4b5c57fb8d883384520617a70e499b79390bbbb3bac3d53260da19eefda686baf0bab5' }, 'config/enerwave/zwn-sc7.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '96404c642f3741b36f865b0486bf7ca0dbebdea208da28cace87d10181be77c14d69b455aa0cecdd2a3864d9b0b741c999da786f1b5daf75e2c906da568084b8' }, 'config/enerwave/zwnrsm1plus.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '6725ee78062fb147fca3f41f1868bb520abf637684dee1a2cf39c2257fde1d98d90eaa6a2a35f54f768e013557889552b2458e72f37b81079e39b84053b39182' }, 'config/enerwave/zwnrsm2plus.xml' => { - 'Revision' => '1', - 'md5' => '88a742755d7eb4a455adf6378c70430bb73ef68deeb3099cc280087eb015eac40e426c7f8667cf073009a3c9abc92e695ed4933142726c28c7a24324f25f54ce' + 'Revision' => 2, + 'md5' => 'f89f47cf55c773b388c2694738955d138ae819b3962a6a2fab1c1a41039bdce7d474a7fac4503a42f4ca3b35040ae0c7795cb790379ba963b188272a4d2225e1' }, + 'config/eurotronic/eur_airquality.xml' => { + 'Revision' => 2, + 'md5' => 'b5f0d3da21fb410fa81dd9f6863746cdb62037fdb750b0a8e0e6f1f73637581ad6ad330ceb6f7a4d4f774a5fd1602f55e410df66242e1e87245ee029b84ee5a3' + }, 'config/eurotronic/eur_cometz.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'fecc7214a3cb7334806e38686fa9e4635caefff7a7bac8cf98af1b1a6dedefaa33a7a943f6435d5ae8d2286d39a69c08b3fab173ed29fd367de5fba6b321886b' }, 'config/eurotronic/eur_spiritz.xml' => { - 'Revision' => '5', - 'md5' => '0aa11f27796457c03ca1de6842ffb31d7727edb6ceebc689fe7c03a71b29445807e331a6cac4f2140ae1e0cde9355bfed6a52312afe84c25c1f2b61004021776' + 'Revision' => 6, + 'md5' => '0dd6650679d4f3fb99fd10c0d3e125fd2c3320edf88c3a808a6fdc0c5e3301034335c9469c2b278e1858dbef381c885a442e816b3a2d40aae119ac1bcadfebcc' }, 'config/eurotronic/eur_stellaz.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'c0756aa51169958ecfd63418b44423f557f31c1399f8cc5933dd487012272b8c9c92a8fb5a27fe87d78675b8a115c2ad00ad76dbbdd362c8f1da39050b4a4ed0' }, + 'config/eurotronic/eur_temphumin.xml' => { + 'Revision' => 2, + 'md5' => '53ac26d6eec78e7886ac95a6481bbd1d14f7fed6ad060a1aa2c5a6977a374ab2c395b592bef9ae4eac3fbe7e4af934dc31c45ba45fe39a19e94816f06e3db9a7' + }, 'config/everspring/ad146.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'aadcf1eadebff5fa7d508e5970dbdb043632d9b9f1c106ae4d872b11127e8bbd67755114c016f52aa4961ca92069eafcb42c099ad8f919578b334015bcedb6d6' }, 'config/everspring/ad147.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'c48e9fa3f0a31c8f082ed9fb16a08787251621b3902f15a13c78c7e319ff254c8001b4883f3721ee44bd0b5584679e2a98a68d7ec005562b08623ad5c7f1630e' }, 'config/everspring/an145.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '30235407eb3b18cf27ff7e105c0d87341dec592d5c05e217b6d4deec470066afc37e95f773c021ab9f6f85874da9b349bcada1f9be56f9377923b9767753fe62' }, 'config/everspring/an157.xml' => { - 'Revision' => '8', + 'Revision' => 8, 'md5' => 'f7afa8e9d7fbf522812deba0c11a1b5b15479e2896f7bb55df1099f83a4c1aabc64e08cb84b40849b0cb673c239501af20eff0672e63216794baf6eb3ad22740' }, 'config/everspring/an158.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'beffd93d68274c31d2583838aa4fc014fdc1bf980bce07f98b8bf7fa6d8fef44bae85d1a06f24c5362f26e67a82022d842f545346d2e8c9fc3d7885d26d1dfc6' }, 'config/everspring/an163.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '36f97e69383ccb3b6428b9d0935d5feee86598483267e35bd1b0b9a54ecf4f112a92f35ef01cf5be79abdd81b0a401fecbe09ea2f639adbaf0e1a78d7afdc0d3' }, 'config/everspring/an179.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'e39532bf66154389eb31e6f1f6da5915c40cd8dbb682152eaaf60931dd8ea4992be1a11a1b9ac58fadf40f965e3ea7de03e9deb34b7b1ba63bad9485dab53877' }, 'config/everspring/an180.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'c1118724c848e37cb666af3cc4338314075f9013e1fb47caa2f8eef00420e80fe808c0335828154bda037891e0dc7b9769236c28dbea8e73240fd6d2daf9139e' }, 'config/everspring/an181.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '29ccf218506eefa4204ff5293d190a32026e9cd57e083a85131b29d575f1ff89a8991b4dd7eb79136abd58d42107fab32093f9b610f2b158b2e0a1aee3be92b0' }, 'config/everspring/hac01.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '83858d1a26350a75ee01bc46c2ba6bd0cd6ff281d549a22fdd9784f88a7bc8e60467e235e638fec024222252414ca151f0a5a3c0a0d1efa05f02a851cef5025d' }, 'config/everspring/han01.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '41d5fcf2548e675012a7d5510c5edd0489accd9429f7c4710dcec46678e95bd3ecae692242bb9da11618baf2fbbf1fb5e3373fc2ee5ca065be954a9ced07060d' }, 'config/everspring/han02-1.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '3ac5a3938d6536d9b99a260cc4c1fe9587290ea6e6aa38e93158df05c22d17d9a41ab3f5db639a653e1b57e6c701c234784ba366f79ec1d81ea1f9bb42280184' }, 'config/everspring/hsp02.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => '6579098c7dbeb3ba683016cfe27ef08805ee7dee2d9cc5e3b94e4df010d8672e0811d61fa70533061c822d766a849daf3fb66b1f18e87e90ad02862ed76ef8a0' }, 'config/everspring/lptdm1u.xml' => { - 'Revision' => '9', + 'Revision' => 9, 'md5' => '8cbffa88913207a3a149123dadfb6f9db9686886795862237723dd73cf75ca28f0e85eb57aa66ceffc21974ca40fe06f0a877605096cd5aa65e351a797af9d23' }, 'config/everspring/se812.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'ddbdd0af88bc20428667e30ba0e423e963d0d53c5fb741a5d9f0e2a962c7e833586ec3f19bbfb6571ce9475b26041c865a7818ec45fdbb25fb1b5021a6e5b7c1' }, 'config/everspring/sf812.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'ae3e1c1ea273b60314aaf34a828efd3d7cc4e1c1c9c2144353f1d7340af646a12651d18689a48e96a3e3045dd5eb3591e053df56ead016077d50b284e305bab3' }, 'config/everspring/sm103.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'b4db68039d5c8b96246750b126efd8f526bc8ed1a502fee3b0f5bc299076165cc26a727ffad606c3c5913900196e8a4119903b56052e8ffd9f98f64338519eb2' }, 'config/everspring/sp103.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'b7005e1785178e4def11ba6d4148b7c3ecdf82cf3205f6c7752d8ca5e5ba46e2efe1dac837cd99f21963837e95a396bf2698640eb71f086745c3655348940355' }, 'config/everspring/sp814.xml' => { - 'Revision' => '8', + 'Revision' => 8, 'md5' => '1eb7a9708bd399b1d76a9b91b48e82367b141fdba05c99200038ecc3a425bc459c320bdce5ebbe8ac9496e1eddb5d9faac0119ff5cbe4046ae4553ac8ef397aa' }, 'config/everspring/sp815.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e8ca9d3c02c9b238f2a8198eb349389cc8b83fe9c95639abd361672a27b32fd901690c03ebdfffa6baf3f9dbbe76d8090fc7ff6baeb955d5775211f0e84a27da' }, 'config/everspring/sp816.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '2a6bb41379abd9b55599ad5bdc59c756c24ec41136f5fb797f8c69f35d32b04f81c1e79acae22567d58e2eb5cfd79678b13185b9762217733e41b04ba453bb09' }, 'config/everspring/st812.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '1c44712463c9a810bf6bf9dc55eb4427d76fd0370148bca22798bcc19a10939ab6e4ad04204a300a800d40c9e72a4df1dd5326497a78517324e22b7a5b8c7201' }, 'config/everspring/st814.xml' => { - 'Revision' => '8', + 'Revision' => 8, 'md5' => '92bdd7c1bfd0febe8e67fc4f0e156456ed98fd12a3e118346416527536faa79a77ce207bfdd056e809e76218a65483f6b227ed2b3748a7090605fdcd1ed30036' }, 'config/everspring/st815.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '1dd35980d8278ca67d8d81d9501d299dee9c3362797f4cd0614b9570ca39264e7d6ab20ab0823ad130449d361249b57c31e0c99d6e9ad6dc1a8f57f8df4f74ed' }, 'config/everspring/tse03.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'ffe2ea7bb8e42515f36eae34c2911ce3a7130c07065088559a1766895eb95bf3e324a3cea09f3009c490d5a6b09a960581244700a662b37942d7a0389162bb06' }, 'config/everspringct/hsm02.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'e131dbb42620861a8f91b6a2146b83ab32d0f721f733529bf11bf4d4961251c7d11fd2df79e288145cd2a5ba92dc761fe9b98c6c9b76e0f8beac4bfc7053fc68' }, 'config/evolve/lfm-20.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'e0e7192e0013c6280d2dc866cc5db6e4f4746fcc2457e13cf2f0fdc7d454e3924c790b5e832876015a11ca3fca6bf25dc979bd49d99e68575f9c17f442c498c3' }, 'config/evolve/lrm-as.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '648bb59f6ccc9fe8d61207f67a46898eb22315463b138c410ab5e20bf3a23c48154e50039d23cdc106bb1226ada35875072988e84227c767d1c475dda329d35c' }, 'config/evolve/lsm-15.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '375c317a73b812f1766db89385ea6810cef5eb5374ae5e68c01a00dd5f9ed6954b33150a55dd1950ee2c547d95cf0cb3eeeb5f1400c08cbfe399cdf58adb0dde' }, 'config/evolve/ltm-5.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'c0dc3a85b7da4e3bd36a877f968ebe8f4315376349793d6d0f7e0d9b8bbbe1a888473c0261ba67dbbf6ada1f65459ef273e29e48643a30696a4ed0e2c0a674f8' }, + 'config/evolve/t-100.xml' => { + 'Revision' => 1, + 'md5' => '7f807187a53ec217bab2de7a8401670593d02226802cc5ef897fc7f7e5db58925deaa2c3ce12353305c8029b67aca240c0f03c55673f0c39265359b7f2f8e3ed' + }, 'config/fakro/arz.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '5983b72ce936031edbf95af40b9a1141b1a4b902d85387d1c93878a227cb850eba1616606f4acf2bb71d77d6d53943b43312ef960dd98586f6fa54c6765ecb0e' }, + 'config/fakro/arzsolar.xml' => { + 'Revision' => 1, + 'md5' => '45ea7e674b111811160d58f2677a643e67e1c0e95baceb3f05b6256f4621f5efdf22740644e347689fddfbdefe9c024bc1fae47ce4411c194af79598e8ea2688' + }, + 'config/fakro/zrh12.xml' => { + 'Revision' => 1, + 'md5' => '27769984df864ecddd0076acd107085bf13267952adb28bd00c1b33b3a00556f935eb740adaedbcc2d74a20bb34af26e68390788e29012befc9485c08744c5f0' + }, 'config/fakro/zwp10.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'c841afafac7b5636e538cf14bcc2c6ae28e30ee68aa865887559cc46a94a628d091fdeab1af02fe2b6068baddfc64c9689c70948a604985515d96efaca5c7d71' }, 'config/fakro/zwrs.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '08b86b5d4ec15f2f1eb34441beea264589f7503a88213db36e02619cac3b191ce77dab68ea21c683fd6a6caae25cd5886c49b1b85452663c6dd2bc2c757a1843' }, 'config/fakro/zws12.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '2244930ec5075941e48029016e4d03f4003ed2c4f354dbe14422b067fcb09d2d083716e1ed583b5bec8851758cdd2f7c634c926280dcf4c97521a3983f19469b' }, 'config/fakro/zws230.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '38d4216b7e3fef3900f637ee4e173c241ccc734de5e1ae85fd5eed95e4ff8d2aef08ec5229aaeb3712905e81ce5fd725b45ddd8a8b959bea21d756cf72b9b5f0' }, 'config/fibaro/fgbs001.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'addfa55daf406a745a852792ea34a1a6e83995d7ed3755789a7f29081833e1c12b5599b537dbf3cd36dd2d0d41d145f6174fda43fcc22b02361fd6dda7e1d425' }, 'config/fibaro/fgbs222.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '9e7a4798a3f538dd041de9528ae8d948b6852131b8f73f7b9db0443a3eea9eba5b3fa16ad3282b23a4d817f44c470258938282c402f2c079a0853d2a18052231' }, 'config/fibaro/fgcd001.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '94e7567c5a4c746afb36a90bd8f5879df6d8f95f6e2241d3fd50accd32b3c363aa2cc6454e51facfa5b17469385e9774622f7605566577692c02f40ec3eca2d5' }, 'config/fibaro/fgd211.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e579604d1d754bab281b4f701ca02b7f08a4b89692f4122defcd1bed87acabd1d73aa00d1f76986c6d4bd01ad2646a1369f305e793ddbcbc9e212cbe920de42a' }, 'config/fibaro/fgd212.xml' => { - 'Revision' => '14', + 'Revision' => 14, 'md5' => '21d87779df4aaf0c9619b9d3260b2e1500cda54534f89ebf272f154afdfb1fe2163107968376d9de8f43203e4a9ca45f0ffd1f5226d4690c443ca87edee630bb' }, 'config/fibaro/fgdw2.xml' => { - 'Revision' => '4', - 'md5' => '722542ab5ea6086a921290c5d01d7554e05fe93bc5bb467e562913ae6e1b989c807bb2eb6b172db4875e30fb8b68980395995c16626f7fb0a4f3af715fd5f687' + 'Revision' => 5, + 'md5' => 'bf766ffd85bf105faf0aa1e391d5d747d9fae52479fd52a3bb43dea64e5634113c730066ba200bd03e28922b7a1e04933edd53dc9c84d7f17164cbc378694597' }, 'config/fibaro/fgfs101.xml' => { - 'Revision' => '3', - 'md5' => '12015e24fc0e3ed9a40a9a36e372629d7a858917668b531852d52206ef0c52f438b70ae0c91310304ce004fbad8e0115fd875da1eb9ffef5c9323416f9d71cd3' + 'Revision' => 4, + 'md5' => 'e5e06eb03490aeeb0e25703fe67cb02cfca4046b8ac618012f3019c5b3468c74aab0daec6017b0265eb75ed637d229d9d1849aae8fa4b95b1b5f9c6c7b9b6f43' }, 'config/fibaro/fgfs101zw5.xml' => { - 'Revision' => '8', + 'Revision' => 8, 'md5' => '28385ab08db45cb56171e3f9130f275fa3e68fae413150a8fe274e45988092e4316e8a727e208a9a75523719d66a187ba8387c1567ccd5e19fe7fe72a5ee7882' }, 'config/fibaro/fggc001.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '050a8006717af518041d68f2055eb5adcc759c077a0ff55ec66218b7f049151189d0e7896b66e1bd72ce6e6bd42eb7a071f300096e02a3e92feda34a7ac588d4' }, 'config/fibaro/fgk001.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '675408571e8f8fc679fa60b304c79a103c12b4dd4880d896e45829387998ceed01379216c916bddea2eb7d9d5d1d4fa4cc0315e979a8275e6fce25b179535c26' }, 'config/fibaro/fgk10x.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '15b64a691b43a5c3a24753849d6721aa3241ccbcb6a6d8e5d43d2222ada1dc1fa0b08f5bdded9efc5de56391825be228435aacd6f7859b419ebfb4f317f0cf56' }, 'config/fibaro/fgkf601.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'b477def6a8d30e0399f8b4917b6c8317fcb2658b24f702bf8c1591b54b8a3d0ff4bbeb9e9790227d1edf2341efa9e123669644e9ee39cda91e869d42f5f14642' }, 'config/fibaro/fgms.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '76242fb913189103b1a368f5a5e4329cd443136b0b38e67286867e4170cc75527549130b1683015b93fbce90a7c9f7a95b3a22d3913c322e4730f44078b1e1f9' }, 'config/fibaro/fgmszw5.xml' => { - 'Revision' => '10', - 'md5' => '47c434a0d05848c52c3ec693f491e978086eb90d926a00ffacd7056dd645bb1bc382ee348097e26613665b08429031aa94fe5d600810815431f530791dca9214' + 'Revision' => 11, + 'md5' => '0adefffe86619a91a05a0904132abd3e24c6d367986f082cd08ef0738d340814d209b631c32d1eab4752263f86086c2e0d4110020d1d1be456f12f4abe887ca8' }, 'config/fibaro/fgpb101.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '4a688fdca007e02f3ae2e13e11745ab591c4dd4e58dcc9f9034c2de91e694a506cdcc99c4059d94b1f154dde6fbef84d6f800c6189a0e11e75429a3e413c9923' }, 'config/fibaro/fgr221.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'b1ac55805cb99bfd01a6f7a553fe9893e83f4bc1a4f299c0dac1a29e931c41c119a0a81522351e8639881c92225e05170134dab379836e40c36c7f3724377622' }, 'config/fibaro/fgr223.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '10d3acdcfb6738324afa2f6c4c0547f29bf04634fbe774bedeb5c160c547168d5ffa1dbfc8740aa4c12c5b928ff2e9d8ca1ca99c5f7f2a366b6e037371a32e69' }, + 'config/fibaro/fgrgbw442.xml' => { + 'Revision' => 1, + 'md5' => '7e75383774d35228492d543a94cbcd4a9652e8cb6b934bab92dc6b1d5b634d518b70370c61cabe52c1ddcc55b741600e90dbdc0bc7982232b5ab641f2b914093' + }, 'config/fibaro/fgrgbwm441.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '302c58370d2f92b94036178c3c7e09e2506c3cb31ad92b6989a3599de87f80b51d0f33ebabff3a9ce2ae81512be294287265a21c48d0176e5db80eaafd541fd2' }, 'config/fibaro/fgrm222.xml' => { - 'Revision' => '5', - 'md5' => '9afa4db8e041a54de279744aa81394c8e00cc17b675ce8212dbe06c3908b2af3065ae4c4f26183abadf9060abe8e04c209d69eb727bd3ad576051553218baf13' + 'Revision' => 6, + 'md5' => 'ce4f42d47c38e5743e77a783d0c1fe86ea66b97e5165b922cbb14d4cb66c5b77b6b28289a5bdbc49e1e4ea4fd1634d9afc57d0be660ac1e0d03e6abce02c049e' }, 'config/fibaro/fgs211.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '801ee579a73bf981bd3c4b5000642dfdceef3fb0f4bc1f659dadad7dd2f42f3b234ead1d681bf2d0ab18339dbb6ea683ce65d91aedde49f04f836257e3f13fd2' }, 'config/fibaro/fgs212.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '6b9c4b6b47544b2acdb0820ae6e914b6f25b322e88b99e48392e6968d0e57203a051870bb87c3345132385e48d18597f829c4790d21e2b270babe9b92d9faea4' }, 'config/fibaro/fgs213.xml' => { - 'Revision' => '11', + 'Revision' => 11, 'md5' => 'e41844de98b9d3c13bdce42661f3126dd742e92e834255ba4926a69a305a9d6e0f629ff16ad7018b1b299e03294b21a7b2250e68278c3f2e2f8134c46ffa3119' }, + 'config/fibaro/fgs214.xml' => { + 'Revision' => 1, + 'md5' => '6c14728668387d7e7a905dc8c360966afe1155006a187fdaf27b639980d223d1e351f87a13cc1e1a8b00be318a73b74d4467b695aa40ef5f14b6ddec0e99f3f4' + }, 'config/fibaro/fgs221.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'e0260bbc99a7eab473a1f80f9398602f6316c00f3f2177ea76bbaf240dbb831cfe7f2ce9caddec53a05655ac6e73b5c36db55f1218f8a0d2c2bd0a4c062c8f4b' }, 'config/fibaro/fgs222.xml' => { - 'Revision' => '5', - 'md5' => '4adea0927515ef9146d48192bf09fceb0132df7a8b770ebd89d5473b92a32c12fe500e47ba31acdfc28cfb520e4d43eba5b1fbe3fa49ef5331d8a433ca83de62' + 'Revision' => 6, + 'md5' => '1d4895013a2282e732c1bcb84c75157043064d95298f1469c54c133f504668ca818f1aa4ae2abada77a0712b7a62abed883f53d9ac81617f2c8e6cc7b6b07067' }, 'config/fibaro/fgs223.xml' => { - 'Revision' => '14', + 'Revision' => 14, 'md5' => 'a20bca0d2a4fbc249391a9e21197c4481e7d650d90cf6f52a9c10f6783b576b083a7979178ecff6e64e17a6266e197f155105a8b57c5346e404e99db3de395ed' }, + 'config/fibaro/fgs224.xml' => { + 'Revision' => 2, + 'md5' => '5b877ff52fef4c7db0dc43daf33b157d2a9c17caf310b9631465371d80f81bf73434aa5de944e3ce45349f52b4a4edab88461551ca39c6502f03e9255d0fe416' + }, 'config/fibaro/fgsd002.xml' => { - 'Revision' => '6', - 'md5' => '1ecd3c58332deff5907969650e409a744494f69abe53cafc61c33421ec8686d6443161dfada159048f47f903df5b260ba4b1afe978c252a664d87cc13df48c1a' + 'Revision' => 7, + 'md5' => 'caf23b9d5714c41757a472148801faff4face27a0b9963b74363bd2fc78827d2073f47f9e0f89745713d19234b48ea80ecdfe3e1c100a156962468403f7dfd6c' }, 'config/fibaro/fgss101.xml' => { - 'Revision' => '4', + 'Revision' => 4, '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', + 'Revision' => 2, 'md5' => 'bf6d95da83aad31068f0f62fb3abf1d03481f63dcaa347f8fe6a38cc8d4a2bd9a3031722f9a4e73cd6823dc151fdf30772c4c3b5d4f06bdc6df3120389091057' }, 'config/fibaro/fgwds221.xml' => { - 'Revision' => '2', - 'md5' => 'cf74c8f1c18eb10c407b306c1b8d6faa536f8d9c1a7f21e1bb90c28e1502054b52a0970f820b118be2e235c34b57aeb66050b653255b48ea4aa1f811b4a20c7f' + 'Revision' => 4, + 'md5' => '9641565fe4eca688bb3f0b73acf0a425b1f301f68c67e5ec8af0255457e9ded311aa311c15152700e3fdf51363ea8c04ce397e79426b2c01d75ab8193d2aae16' }, + 'config/fibaro/fgwds221ss.xml' => { + 'Revision' => 1, + 'md5' => '044ec0227f23e478e9d8315100cd9a4bb6886f94e5b7dd8077133159ce99a042abb6075ccdd6a03639e2e4681f5a21cf0bc3a6005d143195de829c5b799bff78' + }, 'config/fibaro/fgwoe.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '117d888dee07fa6b24bf1a69a144e631921c7f06ebdb0e90632560ecf45872eabdc82e2821d734f260585c660dfd47737c5948a44c9ed21674e13b8e1533824f' }, + 'config/fibaro/fgwpb121.xml' => { + 'Revision' => 1, + 'md5' => 'efc9063c630e257e314ab3676517cac800807248d605b92be342b98fcf4562c9cb7a872c71970fa4953950466a29c5b6dfefbc11077a7dd4fb209a99a4d267c6' + }, 'config/fibaro/fgwpe.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'f099c34442fb3d67723c59cbec6b31d2d383686b583ac013607848e3d8dce2a9628dd96a10751a027cf8d18c4714b0272dab073dda20302b1dc5820f18273643' }, 'config/fibaro/fgwpfzw5.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '61fc9df991d5a091c0a05a92ea37c4f76d18e52d9cc9252418b5525a32f48cc8cb9815a42b05de2fa8cff62665db88094eb4b99114d5c157671337e12a8230af' }, 'config/fibaro/fgwpg111.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'ff622cfe98037421901a2087f85d5d7272f3fc0e1c77c5b357708588cee4f4f47e61141c833c9b7af4734f2ae109dcf2e1e3d44bc6f6d4a39450ec5de8de5ab1' }, 'config/fibaro/fgwr111.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '14e1efc7dd30097da9adb3b5c69ea5c114ea63806004f553c701cf7833aeea730b4fc1cc30913b1cedcf1e2e88aa2f7785cef3384663df68a879a0a3a5b184e7' }, + 'config/firstalert/zcombo-g.xml' => { + 'Revision' => 1, + 'md5' => '3aafd7c7283dde9c093a55c0c6e0cc0c8f221e9b06f647cc151b97a4bd4296c2715e89d9c62886d275f213376e2e3052a23ce05ed027a181f054459fdef0e3cb' + }, 'config/firstalert/zcombo.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '6550cacd482668a1c7561434bf094255cabe30b5beda26c406e2f9f5a772fb19176f2c0b28824f9015ee64b0d4f737f5f9b35ad2c133852f7286160ee337844d' }, + 'config/firstalert/zsmoke.xml' => { + 'Revision' => 1, + 'md5' => '419d50ff831000b5b2ad8dccc3841dd89cd1145186c7180d98d3b5071b02dd4b94ce8c12c1471ba7cfa4243a3e46c63779f5e31d1559e95f571f471dcf32c2d2' + }, 'config/followgood/swz-1002.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '3142c3cc8cd97d218a3f3a31d841d308ab0a51291fa2a57a3c13c3cc45cad79350d958463bd1667d596a99206c5759877a7423692e714437e922f9aba5bee6ee' }, 'config/forest/fs2z5232000002.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '5d023a7e60f4becae275c45eca40de4772fa5650f13158727dede39a8011ba03000e5ad3941542279978f6348d3f85bfd45ad6b02a0185e612b1662f6a4bb25d' }, 'config/fortrezz/fmi.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '8f7ad8fcf6fdf93c1228bde5f5ad12cdd4f6681ea96e2fba2e59da2b84b9a9ce5fbd288a1f3a859ccc640ad77c362191b3ded331a15c0cd15ba1007c4ca8d4c6' }, + 'config/fortrezz/fts05p.xml' => { + 'Revision' => 1, + 'md5' => 'bd74c940439b0e3c77c83b9bd2a0d4af6744833f3e4dc4ac2726f0b319bec7b12b9ecd19373bf0b0cb8c094f039604e429826e46038043a11cc81023fe78c1fb' + }, 'config/fortrezz/gdc1_fortrezz_1501.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '48bfe2a8c75fd3c17a87bb4405908dc9c835c131d7e8625760b93a8c8d4f3d6895cc8fd8483913bfad697d12811f42c82b9ee41168baf068ef2616d4bec65800' }, 'config/fortrezz/mimo2plus.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '6016f3d62b2d67fc6c21749852db2bf0f158534a6aedeb5414e2e23b073ec505b86653725ee4ca69b61b0d2577b6c2cbbc09a390e00babc6d813052cd7c6ff84' }, 'config/fortrezz/mimolite.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'f8643c66c280f96588067d67f33ae3aee81243fe1ea5677ca8f8b3e0f21282cc968b98af61fe5a1772a6ac02f00ad44d9c130caf15552e49d40879419cb703fe' }, 'config/fortrezz/ssa2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '8b5fb147acc63d0dd5fbbb34acf4efbc4a2fafa63d1ee8970da52a216c912d75b35fee0c624eb97d64e8c8e4fa08998aa193a7b9f2beec6a354a2902309f72d1' }, 'config/fortrezz/ssa3.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '96196cd391eaf93e6b87da39636f574a4613c0581987f2a680f592b8d4493f967068995df52eb54b33930052392725b563b1c9de2c4acbdfa26895cad24c8f16' }, 'config/fortrezz/wv01.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'e7ef958f3c88e40d69704871967293baa75c03b1118b80cc046c4ac3710b1cd1503a465bd1c9f475caede7a926062c2b72d811f4e26864e45b479983631fb59c' }, 'config/fortrezz/wwa-01aa.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '822a106d8f7d792f2c1f52252ffc941d2c27a17ea182c403b2fb212ab42d18e7083e079f2b250f45f587509c95b6fbce43ddfe1c02f66734084ba5d07a495c1b' }, 'config/fortrezz/wwa02.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '4bab32e79691a880d38d91c7501f0cf98b6e2e60b7a2004ad332602bbd0f33bd8fc4861e4048953e2e9c469d765a6f9e6b65c3c212a0e3f6e9f5e1f4126655cc' }, 'config/frostdale/fdn2311.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '79f468d1f50721b8cbc723c77fc9902c727376cfed82099e821901ffb81e402d6e1213486fe9f0c2c6f8e39b3954327c1a87ad21a705036dea8927e84746526c' }, 'config/frostdale/fdn2nxx.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '2cfaf444e663bf9f6bcd25d8c08ef14163ea9c938c106556ecb6bba22641bb47b066c323bba6c7db49f4f731ee12eda16648ab9bd8e0b3f1bf949bce8fd9cfeb' }, 'config/ge/12719-plugin-switch.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '17ebbde5eba4998fad0e35f252461259606ca8e88d0eaca3437cb3ccabd36797b28671660bb7955349eaff19cf617d86f20318693d0766f7c56a14998d2c43a8' }, + 'config/ge/12720.xml' => { + 'Revision' => 1, + 'md5' => 'dad8cc08440a1f5abde69cb6649d45eff1059ed7a8e58ca297192f20e89941f8fd09d2ab491781ae0ea2fe840123f782a0881a2ae75e3d79f7e0de6f63ab9710' + }, 'config/ge/12724-dimmer.xml' => { - 'Revision' => 9, - 'md5' => 'cdb1e185894f7a80aa5bc4e24aa8b0bef64519c19421b27836fc93d8df2107d981fa947801fc84ec312d0bda4048afb12772b478345805a425a101525d8d6a29' + 'Revision' => 11, + 'md5' => '6568fb1fe307b61db6b8a4f9f068124bf6dd7a9fae99a2fbdc008bd25a4a2a629e53b379f0ef1e589bda4c871ffbef5d8e48fc9ee4c8fa35a855d4a3fa6493c5' }, 'config/ge/12727.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '2f1fc4587bf2caf5d982f45535996a36bdb93adb7de8f089e9ca8bc042d91e45677bc2f5997d125b3eb1e93f533c00637ef6d7106a9c456878aa8523ac52dc07' }, + 'config/ge/14280-plugin-dimmer.xml' => { + 'Revision' => 0, + 'md5' => '62c479d852b5e22ba57306c3877ca58eb247528829d02022d8796c725a7b4964c5acc4f829ea807fff291182777ae271a29676145933fe78fe80f7873d597e2b' + }, 'config/ge/14282-plugin-switch.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '72ec968ba6c64f65c48fc8ef9fa33f623717bda452d0685547735dea6240ef4efde6a1da95f683cd5fe1efdfaeea834a13412482a305c05423c21186c7edaa97' }, 'config/ge/14284.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'cd3edde334dc3c489b23b3148590077b6e4f3d2a50fd3530fac2e140a956ae6cc41ed1d435ea47388456d955d7fcccf0a399225d76d1e58796c36e406d42491c' }, + 'config/ge/14285.xml' => { + 'Revision' => 1, + 'md5' => 'f3a27a970ed353ce1eeb8c70a30b9cea0ec86e06fdc2a603291b92139b4ff200ba60af992b156660e7c8237e59b0bc2337ae517e22f821088c3ab1d80e3ee71a' + }, 'config/ge/14288-outlet.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'd9fb1de64ede9d3da8730b73e67149d87f383aa45d878cb1fc54fe59cfc4b636577f35c58823484f3d5d830b0080aa69b4c86a934225c521e11a7f81ca07fb93' }, 'config/ge/14291-switch.xml' => { - 'Revision' => '5', - 'md5' => '341219ad5f6d3fb200034d60733383e2d2499c3486b2389b11984895a8ca577b817c9b986ebf875973424771aca68d1b1800df5d710e3dd4121963ab530c2140' + 'Revision' => 6, + 'md5' => '26fbb25b684f516c6ea4b2ec40af67ddd8d2d6870a65f18f4db0fd38b38eb508f8512da9dc96a4e0ffab200ae02be8cab9178a4617ea17fabd0ac63ee5bb2188' }, 'config/ge/14292-toggle-switch.xml' => { - 'Revision' => '4', - 'md5' => '499251768ad6b8c824d1a20f49270d9ecb1bf8681067654ffe6a795aa3a5b8ac314e3a75047fade9bfaa31dd57879b16556fe5c4e04ea82db570f99c0171e177' + 'Revision' => 5, + 'md5' => 'a0fa7333db77747a5a5cbc70860b04900739c52c015d8b4d6a45b36a275469285672f70719b7be61de3ee06a1845f9d876b89557aba862c8f3776cd9d67c18be' }, 'config/ge/14294-dimmer.xml' => { - 'Revision' => '5', - 'md5' => '1328e3b4a3457a0d0627f9842b6a1c47439c98995ab05cd86b1a3bb0228f8051b5839a4e69275635715de08e7c816dd32968c3b6db310b139318e71871a7a24f' + 'Revision' => 8, + 'md5' => '0acd274b8f1f60d0c2a8b1a704977f27854a8f4346c97304fa89b90eb71aa1c4bbaf1c96d64d1b3b5b9b4d707c521555a173859d31ac733e9cd9b7fda28c270a' }, 'config/ge/14295-dimmer-toggle.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '936f319de3f6658b448d9c27ee2b6c639a5702fa2669a750ac841e13e2dc5fbfd1c686ae6805cc231b94607c36781d2bd7214ea81fdbdf10f11efd4a7f9c9848' }, + 'config/ge/14298.xml' => { + 'Revision' => 1, + 'md5' => '24da4dcaab326eb2aec592f74c6db3e51d05108773b6613a6f415760a93fdd98be579834488335ed3efd2f987c20f316284b39b1a8c659f67e83895f50021044' + }, + 'config/ge/14322-dimmer-toggle.xml' => { + 'Revision' => 1, + 'md5' => '56f3d865b46562564dcf28bafb2449704e0b5df1ed57025d0cc54e0c865d4a7f8b926c03e0c60be4b47f1be0bac25a5e3ff5ab4a8706d0c910b8b710f9ca12a2' + }, 'config/ge/26931-motion-switch.xml' => { - 'Revision' => '2', - 'md5' => '80cb83a0ed9a932b0fc85f6046fefd92065741aa6d9d764417a0718edf1d528680638842f199888b8c0c2986b7cf3b7930744ca309986668d1d605ce68b59d29' + 'Revision' => 3, + 'md5' => 'd29b700b0b98e93829596b71cc1888534dcd18dc13d057a25a6b5daf8792e156f1d1cd39d168cdf5a419ca6c890ce7bdb22fd341e06618a2e1f2456c4fc5426c' + }, + 'config/ge/26932-motion-dimmer.xml' => { + 'Revision' => 3, + 'md5' => '536b5e0151fd2c4c31478e8da98ee7cd7e3e75233f45f2563f37e5463884d636521b67da7a2af87abab15590c877c2752192147b776cf85114aa4ffe8c0da23d' }, 'config/ge/26933-motion-dimmer.xml' => { 'Revision' => 4, 'md5' => '0394fce7c7e8b1b3a5181ca36230cf10ccd13c4a34ebaa67f39df0af12316d58ba9bfdace934a02d6bcb4f8d12d86cba5bc113d0660b06fc833c0794c47e9d24' }, 'config/ge/28167-plugin-dimmer.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '3ee59078343932afcb5732ec56eb15c259f360f3a4adcaee1f632350f057581372ba65a0c33ed51f6b239096db43231fa64a439a9307c3b9c4c9e23da0ca6995' }, 'config/ge/28169-plugin-switch.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '58980d447abb1f8c82167ba043aec5546a8ace8e6ea9f4129c521b363ae3aa3d7c723c64901af5c6bec6695d7f0aa85e4975ca318da9016deeb83cbe6aaf5e59' }, 'config/ge/45604.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '1a651b322ebaf4de9f8b5a03c9604cf55e6140cd1a64f45814e6e8818d83dc4e0988f7f8ffcd318ca3d9424f24e78250b742fa87025f682e22560e1774d18df8' }, 'config/ge/46201-switch.xml' => { - 'Revision' => '1', - 'md5' => '3ae4ec70a396a21c7b8e72f979c343f715f133b2a53d827b31f88ed45e17fd457dfef597c64b13bf36b688d21caf42c1e488971c2128a3baa8a5d9d4b887da13' + 'Revision' => 2, + 'md5' => '1ecb7e32a13de469936cf4bcb1fe12da5808a7a431caafe2687632755a8c7b031c6a14a8848ac11115fc2589c45ed408f7cb7bb0779133b028c5f66e201fd835' + }, + 'config/ge/46202-switch.xml' => { + 'Revision' => 1, + 'md5' => '0b52e54d014cf6ca5f94d2f0ac130236625b2ba575d8edb955a0a682b358a1c30b481f23b598c31349068aaa95a5a02ba76d074f7c0ac1ace38dc3134b584a3e' }, 'config/ge/46203-dimmer.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'e66fa46f950b4533040b0bf24df89bde1fd624c7cd4ce92cd88721e31445e8cd41676f4dd0bc4587dbacd37a462bf9967651cc0bda71f1d7a6c089893c50fd92' }, + 'config/ge/46204-dimmer-toggle.xml' => { + 'Revision' => 1, + 'md5' => '3fc29dc416cf95fa427f0dadb5c5676bc42cdcf148072b0d4a7d37c1034180410c60ba767bfe27fb262a36c276de262e2ebdfd70ab0301fdcf2dd38e655250f0' + }, 'config/ge/dimmer.xml' => { - 'Revision' => '15', + 'Revision' => 15, 'md5' => '69d688ae37c8887da28d801b24305f9bd81ee1f9b1cea214c492340ded4144263955f4325a229b33c22d5ac0a7f327b358cd0bf2100e4d096e9772822a0960a1' }, 'config/ge/dimmer_module.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'f917273cfc180539f9dde977978e68e7ec54f30d2ef2378a2795f7c4519f93d52d9af4b860c190ef059363a562bd105899e3d5464b84b07e52af6ae417216112' }, 'config/ge/hinge-pin.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '195127b7310facea584641c8c4b0de9f80c787db87f65ac10a0b0f876fd061014828d7cd32e72d2f9f2eb146deb09e3278ec5cfac299ad1a5586325611a3f52e' }, 'config/ge/receptacle.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => '3d226b9b6330953a94b786a712451067c0df84cd688feee5d156ae43ef847d490890db44629aff06771a4edad590ec0e12983de15ecdcf64400c499c8b956c8e' }, 'config/ge/relay.xml' => { - 'Revision' => '10', + 'Revision' => 10, 'md5' => '2796184b6ac7fe9f8aceb1a09221cc6a1c8c3844a039a484057dfa71f704ddca8c05b038cb6352f1df9d10972b328dcac6277749d8dc2b0197b4548760db213d' }, 'config/ge/ze26i.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '48668adae273d804358eb6ed626833f2576e08b25484914c8b3b5704fe2918392ff77467390677596b541f558779e9cc07b56dd1907f866ac4c1f858800b6f4e' }, 'config/ge/zw4001-switch.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '56d8b8c8c7c1450298ce238cd73f0e5782812a48a6794e2fb82a65fc32150862c5283294cd90cf9874b0085ca52dbd620710322dd50bf3e38da3d74d70ef0856' }, 'config/ge/zw6302.xml' => { - 'Revision' => '3', - 'md5' => '914ca5923b09d0ada05f866efdb91b060b4ac305b5a709facd1133e986c4c5399a242527e2caa0b84cc08c0cfb467e19756a5937dd8d990104c099371b0bcfd8' + 'Revision' => 4, + 'md5' => '6b668bf119e7f0e6aea6c066294bed1be1e7843e67b1223ad2819691cc5c7aac2bf36807eefb29c996eaa4a83ce05abc93abe50873f835b018e563ddc8dc8748' }, 'config/gocontrol/GC-TBZ48L.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '15d627a3d9de686ec39e3cf2cda1adcb335cb6b38ae807106007a69416c45622ccbc9fa06f2b7ea4a9fed73646497f8600cf54e27e879ef90d71fda6fa19d452' }, + 'config/goodway/td14010.xml' => { + 'Revision' => 3, + 'md5' => 'eb19987dcaa0c672fda5d4e7b340481176b132332a21b745628fd735597b6f88f6c6e2c8e662ac3380c0195dc42ebb4e29741f3b43801e3b0dcccadbefbf79e9' + }, 'config/gr/gr-302n.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'a151aeaebddc3e1b697ea96f455aff329e374662ebb64849067dd74f50caf3a96d32750aeff1005f7df557fdb6a3f75aaf94190ace1566bae5bb25019719b0fd' }, 'config/gr/gr105.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '54bfe047e99c0701d98c2220492a0da6c98d80abb22690916c6de4baad6a0fb473a2ec6f5ec3369e7ea31bcce54828300e43fb752ff5efc867d8e99c2f7be6dd' }, 'config/gr/gr105n.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'ed10e4f95c410c9a6e9b539bcba6298f052c35867326105777ddd9e19d6d7677ee5ca9d2bf862a837b420fabd8b74e25483b637c7a71e35c6974dfe30e09dcc5' }, 'config/gr/grb3.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'a03b12da4dc4cd30c564f72efa4ca00dcdac5c7a7dff878dad7ada0a87675fdc271a1408a5187a5f3349eb4809886b1064b2df6f0b4697b068308a57b337e97e' }, 'config/graber/brz1.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '20de3c410b7f5e4230670cc72a74a5c0aa055c452538072f17146558addcb823ac1eabe84ed5e3c5b99520a1263f3e2425a53869d1dc5ea714cf323488e88f08' }, 'config/graber/csz1.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '536a0b35500ee8ab596c1093763c408e4b7ec61bb808f73495f0c89e25e038522fd4f35d9869fe5dcf54c51109260d35a53bc525c446040110f771a0c4cda308' }, + 'config/graber/mcz1.xml' => { + 'Revision' => 1, + 'md5' => '3aaf4b40388aa6f23f2b0221f1707c02690cb63ae173fd990604c9456999b75fdaf82f4dacac5f98d2f02e6f21d85c76bc8582a3c728b19465c8d73b7a26a5a6' + }, 'config/graber/rsz1.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '598bdd923d527543430b89d86d2f0260c26a59017a3f44d7eeba00ce809bf01f9a0161041d1b9745a339dbab0f7f0d8f984504a74dad89921921454273e666e9' }, 'config/graber/vcz1.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '3b1ed59b630c3e890e80900dac25d798c48661a01e7cab554777f51f7bd3acb1e11d5adb0170011576b302f52611ea2489a082481bcacb00cebaf5eccb24f262' }, 'config/greenwave/gs1110-1-gr-1.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '9dd0a66c0191769535bcda4fc90ed9fcd3aa1858016cce795e92c517641a7e72d210946435f88baac53f37178d9283fafbcc94491394f8de6279077963b243d9' }, 'config/greenwave/powernode1.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'c96db0c34ebba8459e59ccbaf488c3876b9201235936bbe2410dd2b8777bf3ef674777e7f2dad9e80067d4e2e93b435fd11573a2a3d4938d7144e99df9cee828' }, 'config/greenwave/powernode6.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '1e575738b3a559c2de13dfc9632fceb800dc03c8ac5691ecb0d0629a57b607d1046316d8ddc3a87db9e4fe1dcae57fab20998845f1b6d699953d555af71d179a' }, 'config/guardtec/gkw2000d.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '280feec2b7433f743ebbacfe437dd6b1423b38777141a11f22433e29177b9280db33d2f15a26da0a9b0940c93c47d29dd874e7ae7b12565de709dd73ab669a9a' }, + 'config/hab/iblindsV2.xml' => { + 'Revision' => 2, + 'md5' => '1d8c628927d098803b55085eafd213c946af427b6246eefdcdaf74ea576b17cc72c2d76f0ee6c1a238b509eb0b2dbdcd95fd0924997e760503f115ad65a3b6b7' + }, + 'config/hab/iblindsV3.xml' => { + 'Revision' => 1, + 'md5' => 'ff25e0ca31e6e7b3a7ef6739e2175eb31b925b1fe663b1697df37710d07a8b7cf5056536b695f4a6c2a874ac2ede66318724d8f3592b8674ddbd2ecd7c0a0878' + }, 'config/hank/hkzw-dws01.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'b11d36a38e54d9c4f36fde7224db3847a5e0bb09e5828ff9ef8802ef1c67000846513ad3e91b2cedcf19e91b95734b4d2864a4d44a32c32bab7b16e4a5adf46e' }, 'config/hank/hkzw-fld01.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '02bd96bd02e95491700f0c6efd92fcd89e1c306bacd5d58d7f2f364d0df24bfd034ddd150215419537c7af5edbcf18da75eab1e77a5aff3a8140526fe527a58e' }, 'config/hank/hkzw-ms01.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '8a04fdaaa929db3866654b4b01329d13e3e32c449f711b6e23d78ab244106238ab73695e9a7002a80e203934bd1db1871dd6e5541dd944ac44ceb72b6c946d2a' }, 'config/hank/hkzw-ms02-200.xml' => { - 'Revision' => '2', - 'md5' => '412110b25652a63fd8fa53a0e8c465f8d73a1f1a8ee3af7c2e989e7446e6ff70c577af28cc953059312bac9dcfadd5801e61f2669d723c0991534084eac07344' + 'Revision' => 3, + 'md5' => '5b89e6e05015240d4ffc671f8b880a0c37dcd4e015ba415cb1e73f593bce38af3cf03c629ba543ec797de41a12af504c06f112db7e85716a07605ddf61950d14' }, 'config/hank/hkzw-ms02-300.xml' => { - 'Revision' => '2', - 'md5' => '7e4f9dcbe624e04301dd0b7363747633902930c2a1f59d832bdaade1b0c76b5f0b22287275db2d2bcd301c69993a2800f4db0c92ce52ad7cb4fa40a680687c97' + 'Revision' => 3, + 'md5' => 'fc42fa3347826206318fe37b5283d667abc1257b4cf36084d41b876e90155b342b2773af6bd836954bbbbe14002e1346e5b42f39e412a1a347169dc5c947a782' }, 'config/hank/hkzw-rgb01.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '35476c9eb132e78674d3e0fea1f757dc4508e0c390362b42fac1670fc6398078983b5253de0cafe95c081daacef41896bc760a3c50dd89905f7bf070bb991e01' }, 'config/hank/hkzw-so01-smartplug.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '9c1ab32ee4af6cf8b1d7d3437a9d031861d48952c015fa6fbe2e8c54940c45a718fc669975691a32eb53c78f1acef8dd231faaaca643fd1b22158c5655269f8a' }, 'config/hank/hkzw-so03.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '3340deb59e1570b2c07fec06e4b13cf1159a9274f6b87fec2c846388ef9f47ca9a3bf3af2d306202d84e0b24adb226969f9ab6f7f0e7c3a5c916252b1583fea7' }, 'config/hank/hkzw-so05-smartplug.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '6dc4cc5e720bb5c534f25510f20c134baffb3d4b1f68704d397bab9775b6b14397471dee6469f230ecb81afd79363837589a531be926a7d3e789e82b4c1c5a83' }, + 'config/hank/hkzw-so08-smartplug.xml' => { + 'Revision' => 3, + 'md5' => '825fa7c75df29cad9ad3d2556e2b3c3eed5636ee0a4b2ca3af5eeb0542908373eac082b2db0839ec362d18332842add4fc09aca713629fed8c092e9dcf576fde' + }, 'config/hank/scenecontroller1.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e748ff7ae3bb3358e80b863cdea2103275dbf536edbd538963502c7629aaa623c49b562d092cfbf4db17f7fa2f4b191223ad1e9513c86b58b937eb6504145f7c' }, 'config/hank/scenecontroller4.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '25e5e4f19385dc44c8d33dd0372837fd2befb1d12b5bab7dc74027a3bc12875e56afdff854c363cb0bdf186aee0f5717af03b6c62f77409bf365176c9e953aed' }, 'config/heiman/HS1CA-Z.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '7a20a77d2c2c7633b0a116d68c59325cf1da6cc57f83845d9927212b5864804f0e485775c317ca4728cf901764622507abed325542816aa4ec62b36cdd0db10b' }, 'config/heiman/HS1CG-Z.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'dfadb2f28046d15b412034c106537d03bff4b224c0f4c4808d4af54f5fe045995cc31b1f289c215c34288ea10a82df5a7d9b26a3a20db67859d346a405a55136' }, 'config/heiman/HS1DS-Z.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '210a2d51e707e26c6619428919e5e44694c06e15bb2b111a1ef5f499a3f2ad2c4c99fd07482b824ba3dd7d95ab9e2b5219ac1805c1566a52f3ea1a88b6b7fcc2' }, 'config/heiman/HS1HT-Z.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '1331770135d4050f99c83dee86a0e55f0dc59bf51430f083f2b7ceaad3ea32851b9a915f821fda1fd4b618041bf82c5afbe9cd7f74c0e5b73d0f5d47450008e8' }, 'config/heiman/HS1MS-Z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '0dac77cd6892ddce000c77485c595ee219aef2f83b3e7cfa641981b37e1476bea55855120e19ca80c302e566c58c328e94148ea03e734f8f4d40f862c6e6d6f4' }, 'config/heiman/HS1SA-Z.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '217ed29fff544fc5a36fc5d1b26334b84725ad6ff6181e7080731f7dd5c37ebc8d079e37e70e5cd50ac87a014066b84978ac3b0d7b080dee55d12fdaeb8db019' }, 'config/heiman/HS1WL-Z.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '6821d6247218a026a8832f72df5c2b3f76abd2b3b95b18302201c5bf7e0fe1fbc22659078056f5188a42981304d635088e2018c5bea98565c19a45712524cbd5' }, 'config/heiman/HS2SK-Z.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '2717377bdd18d9b510f85c815d842930080a10ee319f64a43241b2cebcb8b7a2a81628ae9b4aafa95719c3d0530eb17e75acac1a444446a14bb829148d7d2bef' }, 'config/heiman/HS2WD-Z.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'c2ce7171aec99ffae507edc6bf9aab24ccd539a25e162c93c410cb83404899bc33956bc3b50aadea0adbc75acbc0e1a655f92b4496d0d2b725b784880e7038c5' }, + 'config/heltun/he-ft01.xml' => { + 'Revision' => 1, + 'md5' => '3cc642f60cce237779dc4e824780c1d4ed36ef5ac691e3cf338f7821338f939723210c56fe7ee97719697ea903162d11d79ea95400c374281b9ddbf2421b16d7' + }, + 'config/heltun/he-ht01.xml' => { + 'Revision' => 1, + 'md5' => 'b21edd812c1fb609541f0a740e6d80595aa28b17d8ea09b2ae8337c19bab8d8c1377eb435afbe80b6145bb1923b51f700ce77b354baa050075b8091b2847c1f3' + }, 'config/heltun/he-zw-sw-5a-1.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'a4f75b095ae18579fda4a9a5d857466ed83fb0d8a3679945aff2ad419c72c5b96960db4aa84168911ff0cfae551151b38e95a4156782854a9ea3a0db5576257d' }, 'config/heltun/he-zw-therm-fc1.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'c819a5f9e0f64ab5bbde2ad1754b7e9825564f6a7b2b1e63f209c711b43dc5445021c59f36f0a06d4970ee315ad8df1899c74a7934f94a373448aa2a3cbf5bc0' }, 'config/heltun/he-zw-therm-fl2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '1eeee37ed56959421b124f96f69dbed1fe93ed0b230c2b6e0a133bcbb1bc34b4da975ee6f5193e793f46da217a1c0ef81d132f7ec0b8571289e284e98e42c186' }, 'config/homeseer/ezmotionplus.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '8d4ea274a67cfc24dd3c20205bd4e2fc8133233ed99fbb2596d7162298c0ad4ed07ab327356fb5a07e1424d6634de27227bc03b70c7a9f06754f82360d854537' }, 'config/homeseer/hs-ds100plus.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'bf724e9e2f52776c8837b1a46d465d2b20bdab25733b1775d8665e00329c82f1b9a194a5e6c2539df754abc90e3c83b6044388e1e7019b2820f9ea3c63e64aeb' }, 'config/homeseer/hs-fc200plus.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '2c8076f31efdef00d014a58a4acc35db4e256175c57e2e93c3db183c66f52fe7a47feea880c2cd8723883fa860a540b81bb52cfd17c04072b7b9a5a6e06126c8' }, 'config/homeseer/hs-fls100plus.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'cdd48d1045234e40dc257caa0df6eff883426833bb19d55587da53b78e9362eae2699f3cddf4b25f6aefbab24d06c0fe34ded0c7bd12b03853a2c965193a754b' }, 'config/homeseer/hs-fs100plus.xml' => { - 'Revision' => '1', - 'md5' => 'f22c8e1b51b207c4dedf156b3bfc76e5577dfdd650eaaf96ee51952d5e42a555ab1b827f449be147bfc17fd3979f84356fd19d3ec4ed66c5dc3e639ee99afe34' + 'Revision' => 2, + 'md5' => 'a749528efc1e275c53dd5d2dcfac7f005798172775756a54676b25c732cd22db548d4c3ff45118904d08c3d34f6c4195a5528fefe74a98b13395d87f93336bdc' }, 'config/homeseer/hs-ls100plus.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '05e3aaee1cb368211d1e4867149f1e914bdd7d5da5e558bccfc9bbd60180d212ad0c76b1b95095bebd074e2ad64b52e15e893ef65c73e765873f0e73219d8a25' }, 'config/homeseer/hs-ms100plus.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '528e313dab27daf86c92e7ecfbf311077842bdff72f662c308d0554a308691b9a9c5830bc08dab5a4860991053c6a73b05d5c21f1cf115a8c70c873adeb27a5d' }, 'config/homeseer/hs-wd100plus.xml' => { - 'Revision' => '7', - 'md5' => '58dc37e456d17f71693c819806d931e2e71fa36811e384bb225e9fac00539a80aa0df1093c5b48a0b8c58de2bfd6d1e0bf3f20ff9e8aca331d6530962fad0240' + 'Revision' => 8, + 'md5' => 'dd1aeca42ff3c3465442a45a0da960632ea52301b5514cceec9e4d58b47a8fc18e7ddbfb1fe06b191ba10f32cb91d6671e125bde7ce8e99e5603703124b29f0b' }, 'config/homeseer/hs-wd200plus.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '25187da0fac3b2752ece5aa716e0a883577782ece97e6bfb604faee0c2155690ffd837ac0ed19afc00cffcdf2145b260797b3446620e12f4ddf3dcbc7d34d818' }, 'config/homeseer/hs-ws100plus.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '8dc36ef5c448b933464a3541eb156b4f9bf8c99b87f1e117ac1b881056b2cf03ddd53a7a6535a7f88210956a15c51ebce71dd5bf89daa9daac3ef2e27880e727' }, 'config/homeseer/hs-ws200plus.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'a34e0e874f7b7cf55801068535eea231f80ffcb6564c1a6e3ef4fe41c7da677c00340d456f4b79a413e657bce7b8847b6d7f5b293c7a8a0309713f1cd3872214' }, 'config/homeseer/hsm100.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'd3078946530995d9f5cf1fc432617617466d8d100a3a368f619bf4762c62ba852d20a4c0b9c19321805995f4f3b15d4bdf98efe3e4c1fa7addad3aa6cfbcbdb2' }, 'config/homeseer/hsm200.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '05846519da65becb8e4d36ef93040bb190fc7e599e11dd1a82619a7abde98fc3393d80f08160d74911b0090925c4fe04d419628cb278feab92c586262bcd7be0' }, 'config/homeseer/ztroller.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '46f0c29d16537254242bd4458489767cd57709b2d0c5faf5ea6ba92778d35362c72e998352a92964c67c81b9b819d66cdac55131154028d5928f0842c96f920e' }, + 'config/honeywell/2681-plugin-dimmer.xml' => { + 'Revision' => 1, + 'md5' => '45efb5ee352873cfb38af888b7cf532cd87108438131ed6b0645c2950a87429b560ae6794d48a58ced064ab46a9a32e5cade299a09bc49c30991df77b19e2f3d' + }, + 'config/honeywell/3830-zw3107.xml' => { + 'Revision' => 1, + 'md5' => '198e8c84e3e9a1689bc73ba0f35ab36fff0960580f9e78adb75b89af347c834abe53237dce5817a328eb7b7afcb5f4e4ebbf44415e05c2d78749779c04b3d486' + }, + 'config/honeywell/39348-ZW4005.xml' => { + 'Revision' => 2, + 'md5' => '4d97e53273d973cc3207b3b9e19900a17cb13363ad8e82cfd055ad990604ee19a08128e933ab41be50016a933f83f1b8e4568d562b84d6fd523d76fa8b477861' + }, + 'config/honeywell/39348-zw4008.xml' => { + 'Revision' => 2, + 'md5' => '9770a4da93a9a3f137296f4d82f7267a3e759c65f02c57c2d7f8a77311ba07f50ca738b94dcdb942183ca924b4629e4e6581971329911113df979fc69552d94f' + }, + 'config/honeywell/39349-ZW1002.xml' => { + 'Revision' => 1, + 'md5' => 'a2fe0efafeb8f38685cff7e6fe32cbd5e9085c21b3c4901c568e085b56177b555478dc39a5db6668060d4da7bde6c6cfa678f55fa2fdd81e0a1a488d01be662c' + }, 'config/honeywell/39351-ZW3005.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '9bcbbda3dbd837836905a4d6601aff515eae4bd452f5cde4676c490e04d92eabb04abcde02f5157a3f41fcdc3279ac87ca87b7d73c2b422e5e3432a51f140cf4' }, + 'config/honeywell/39351-ZW3010.xml' => { + 'Revision' => 1, + 'md5' => '630d49e09812d18cc61f9def5003fca12afef551ae845c537482305c4da9c47990d8c8b15a98d235b9c66e857f2aeb849ed1581c3e8884eb8afd34b1a0903e7c' + }, + 'config/honeywell/39357-ZW3004.xml' => { + 'Revision' => 1, + 'md5' => '8fbcbc2963a36423b42e7dc2938168c5ae752eee37b35f0205ed4d2162f372e58d646bc8fa794e19221da9d3a0c39659cd4951cb5a30310f9ef7969af1fca9a6' + }, + 'config/honeywell/39358-ZW4002.xml' => { + 'Revision' => 2, + 'md5' => 'f5b66553b75341237286f46e2c1d7665785f41ceb276a0caf152012ae06957310ae50b52c6caf955c188bceb18ec1ef4b1dda8a440f25624d4c3a668153aed5c' + }, + 'config/honeywell/39449-ZW4106.xml' => { + 'Revision' => 2, + 'md5' => '63bb116001f13ab496d811c8835018afde8421fd5b4856069d1dc00461d0b6b5e5bd254cc6721dffe5c51023829f64bbb1d41d2e1b2047729a508e1a44b37c94' + }, 'config/honeywell/lynx-touch-l5100.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '530fd1b4c43248f55ab6bcc788e80bda83eeeafa515f8b812e07b1f507399f163145ab3337d8f26d6bd7313de6028ad13502c7ae2d07f9b4ea8b4ca730cab0c0' }, 'config/honeywell/th6320zw2003.xml' => { - 'Revision' => '3', - 'md5' => '8a0acbe77f563e0aae7ff5ad345c82d385af65bfa46d4b846209cfc03c49bf6c2895163092c1be788cdd17013cc7cf0dc74d8bb3c8e750546ffe9da63120e2ca' + 'Revision' => 4, + 'md5' => 'dfa3a4d3afb7baf806b7c97070e9c654e8a0f022cda21ad9c5755c1d6dc1f36700eb3137a4f77e61ba61a8323cae7c9779ff7a7dde49a84da0d27cb306d76f5b' }, 'config/honeywell/th8320zw1000.xml' => { - 'Revision' => '3', - 'md5' => 'c834e9fe6e66d30d708b4c1861d2f63fab2a8d43680c9ac9a626be1a87dbccb2c30767fbcd72d0aac4d621df6a0c41e3c7c668e95c95c848a538f6943548cafe' + 'Revision' => 4, + 'md5' => '423c31e6fa2354ee987cbe7fa2d8f406ae04162bdeb1852eb8ed4c9f88790cb292fa4429488cc395368ebfa139512e6c4f1d24ad2467ed3adca0313fca5590e9' }, 'config/horstmann/asrzw.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '4972230ffc90010107288b9772b20daaa43d45ed5a3d8bd76fa6c29feeae2922e12a428a4069d0c6de3fde2faf09bcddada6240b545f438f5023ef2cb1489292' }, 'config/horstmann/hrt4zw.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'd9f875c619feaf1136bc76eada1cd63a3c7396d6fb8d4b50c2515264eca723c0420d7afb58290a8a0e2c4f7b780c154ffddefc411e64cafeeda941494b3702f2' }, 'config/horstmann/scsc17.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '689b01ced1d29a5cb443a11c222de099c2ea19ab4d355d3274c5610f0c8356940bb3d97df684bbde76186483ffc7e25af3b5c3df173ce9bebd207a9c3509fe1c' }, 'config/horstmann/ses301.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '36f2fdaff9dbb847944983cdd4d542db17602846822d67541265a3bf5d913cbb82b05c7e9c964948a5298e145223820ba029936d990eaf66fe3c2a124ee854eb' }, 'config/horstmann/ses302.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '7b929c04ea087fee4dd1c2ec08385d8587f3c5bc7371c684f1f8cdb5bc42c9140a0fa496cd2742a611301f7231e39780f9f3aa2848d52da5f730eb778926769e' }, 'config/horstmann/ses303.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'e8ba07277647d361613657702f2c181c3092499e561aafb2c612ad106151609487a39763f477a996952daaf8e5ffb3db810280dac73eb77d2f1cc239d7af6bce' }, 'config/horstmann/sir321.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'a3f4c5fe213ca7ceafee96eae84b01c8146f72e3e5715e8a0d9added2bfb6640a868f91c7e743172df177ac6c61d237112c82768419a8ceaee2305efad80776c' }, 'config/horstmann/srt321.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '322c5d1195a2aa4de8a792befc4103f048280c914a6bc0d237a7dbec8d14a4ec26cdea4274082011a041d88ec22fc288b0f856719cf59fe343b9b7094861c386' }, 'config/horstmann/srt323.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '8585cef3b015848b99920976e699e68bd519bca47fcbd11c6059d04a3629ca99428119965cb060848f1b2eaec49052bd8a4c7a537c083769dd30c132baffdcc4' }, 'config/horstmann/ssr302.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'b244edf548e853864c9698958e440fa7e4436c63806296e39b2f70ddebeb1dc591e7f13456edd002911ccc5f945a8fd14b2ef9f18f4663816371a17a424b5027' }, 'config/horstmann/ssr303.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '9375b06248963dddbb3bc64fbff19537cc4ef6e4c4e7fe946ebc8a40280ea32217104d2ce4eacc12449e9ea3f943aa9e38447d18215bf2dd1cfd40c242dc73af' }, 'config/icare/zw-66.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'c35e93e83039a1eb91d700668764769e8117761b626b894f4fe18435db4c12e95934af23cc5983282c49f1cfd55edb397b84ee5ec05fbdbae7805e0df4b42ffb' }, 'config/idlock/idlock101.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f9fbf4ae903cdd0ee79fd4e11621453ea66777e729e85d437bbe76892984eea29514b93574f11dde87c478c05122c4f125639e44753dca567cc597b0c79d38e0' }, 'config/idlock/idlock150.xml' => { - 'Revision' => 3, - 'md5' => 'fb0f3c54e2ebb95fa12f98ab7390151b803b89f239dba61fe2cf64a14c8c97de916127408348298e85d5868e981da2919864d6a8d06be23463187d808814ff75' + 'Revision' => 4, + 'md5' => '4e8b8082701c3a3137ced8f7636c82058dd9b9942f28125b6dd1d3c3147b7c01ff8c15c982f0781e1fcd4089db341506e318dbf1066d7e780caa2b7a0b3fdf40' }, 'config/ingersoll/dwzwave1.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '7fe244aa57c478f25638817f015d2d5d9f83a6f971014de80242a25fd94a35c1e98d3bcc0ad26b69a0677df64993614ee58ae7fe60e6c8af1afe713d4a152f71' }, 'config/inovelli/lzw30-sn.xml' => { - 'Revision' => '6', - 'md5' => '7c5190dbe0d7f2b8afe3830b1d58d0ff9a784b877e2927fd1e6716a6faf092895fcf3b77c1c4942f53e62f815391cd967d9b1d772951ad1c0f5d77a224382715' + 'Revision' => 10, + 'md5' => '8b68e4082fda4419b715a2c8f7cf7daf97c9b71303ca5cd30ebe42f856e7d40d076eda2525c0c628e4b07797ad3165e87cbf996a73f29a53e9c53a76862d933e' }, 'config/inovelli/lzw30.xml' => { - 'Revision' => '5', - 'md5' => '8208176e7ccc83f4d3844e46f9779deee793a2be79c9b4d67e0106eed0a92c6034165bd008f6df4b6a5c8a0dc2d06e751b2de2904bf603ba70ba6ec7b928de0b' + 'Revision' => 8, + 'md5' => '0287fced6b4962a11846d14f3dae6005ea4e7a530b61bfcda8769cb81878ea2603a9d1207efb8103771ca10f539d3f1daa103f8ebbe8178d9f138b9937202424' + }, + 'config/inovelli/lzw31-sn.xml' => { + 'Revision' => 5, + 'md5' => 'cd2c997d830c5e66cb1f23856e6e60399b811a8489f1ec94a9d3a5edf6f65047d9105d8cf59709db0890c0140562cee4e88f19ba8b6afdf4e2587cf87e5863c4' + }, + 'config/inovelli/lzw31.xml' => { + 'Revision' => 4, + 'md5' => '7fa5513084ea2e9c7231c1df9d2e912a6ba0d472115922a1db29f6faae6027b6a4b1ef4aa82eab3f52fc1aa1d49fdb549eb8a2bdfcb40564a9b6ecc6c5798921' + }, + 'config/inovelli/lzw36.xml' => { + 'Revision' => 9, + 'md5' => 'fc8d2062384870d955f1711fff7c3a3e4207f444da331210e57bac51147af9177bb7f03c2bc89a4c1f4aaa24fb17611fac637bab760a542b9ffd743e68ffe192' + }, + 'config/inovelli/lzw40.xml' => { + 'Revision' => 1, + 'md5' => 'ed5fb8ad83529a9bf8ec71eab474c84c1816b671ee40b3abf7e8d8438b909e808207d888b6401e28fb1e52a08aa244d5c37dbce11fba6b7cbbd3671261b879f6' + }, + 'config/inovelli/lzw41.xml' => { + 'Revision' => 2, + 'md5' => 'b21fa3dee3a882e4ff7e95b446fd95f286857da87d83a273cccb03a536fa7df321f37e2f21c51a477b8a900f9e6b7e61a6b1d313315eefe5d8122654b9b315b9' + }, + 'config/inovelli/lzw42.xml' => { + 'Revision' => 2, + 'md5' => '8a255b9f1762edab6edf809ac54964910f02427f3c215bb1def2741e8737b5479eb7ae3673be4f222558f3d70af66e3394ba16958dd9cb1dfd3e3b0c57122aa1' + }, + 'config/inovelli/lzw45.xml' => { + 'Revision' => 7, + 'md5' => '06c8a460ef78d26a073341a0561641b98f7bb3b1cdd95e56b1f4ad7a28ab34ca3930a232ba023307090017e1fe85d5d83c8d3a0b0fb93dd4050a81c1f48e972c' + }, + 'config/inovelli/lzw60.xml' => { + 'Revision' => 1, + 'md5' => 'd279c5b9dee85d2886f21b484af5ebd146c8189e480b6b676da38a0a3545c08194fab6a6c0b6c4de8f3cf145f2906d774af4bc703cb2dab9815f8d53f05c8b01' }, 'config/inovelli/nzw1201.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'f5789891f9adf7716e6dec82b5764c2869b48fc626b54b9d7bc8eb894368b980c6831073858d82a6155297b4349fb415d39fe4e8a9680cf163802d78fa9e6eaa' }, 'config/inovelli/nzw30.xml' => { - 'Revision' => '3', - 'md5' => '77be34d9bd689e34ca3922e6b3bbbd05412afcd2a7d72d8d6d0966920213c754a9a5491692a76bdec0ffdaf5bb044fb8b178c942aa5c2cf0ca86c9d0373ba95c' + 'Revision' => 4, + 'md5' => '8f9ed256dc1f56fa42124713e38259ad5ec3a332d51ecc51c99013af7e036cc3b217033a2f9344737282dbddee796fe08975dd15e8e680e619ba21205b1d0f27' }, 'config/inovelli/nzw31.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '0b7cb44c57753cdb1714aa7c46208531ff22bdca23f6610e2e662f513254936e447ca0e3887be691c31b8f372022a3b76898672267ae1d902131f4b1501611a3' }, 'config/inovelli/nzw36.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '4e2139c9e4c8625789aa15d8238e35804afa8673d2f8e48397660967b30779a60607ef77a5c76bb72b28be1ee6360bb6e34e5fe8f6a3a391a6379bd49f0f7209' }, 'config/inovelli/nzw37.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '7c78fc3bf2e50059c24b670adaf755477793fad06821c57b69e6ef554b12bec45940976f6d5a7b4c41d34abacdfd99e5dc2df62154f80f2491ce1935886125b9' }, 'config/inovelli/nzw39.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '4e2139c9e4c8625789aa15d8238e35804afa8673d2f8e48397660967b30779a60607ef77a5c76bb72b28be1ee6360bb6e34e5fe8f6a3a391a6379bd49f0f7209' }, 'config/inovelli/nzw96.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '668e2faf59ea80cfa66fab415a51bdc25116458cd9666c3a1b9cbe4931f0e6a4fc22fe48d0009f7d152e194567718f3577f39e78b9593e54fa7cc74400029dd2' }, 'config/inovelli/nzw97.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'c175f8a9765bd1411d594988c61846d9f77fbd54518f714f94db99ad9214dd4478003dde586a139b59e54011a60a0313967efa0a7bf0736eb5d2dae565a71264' }, 'config/inovelli/simple_module.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => '2fb8a975ffe9bacac544ef535b9842f50aee91b1228bd18826b864e6f9d585bf7032c2990714b392d20b3013a04c470edb7922e5f4bedea1756603be824b3650' }, 'config/intermatic/ca8900.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'b2c96148fd6c97c1e7a0d07126d2a7a497b49b56105e00d311dcf885d204f44bbd0673a15b0041c894098cca56b8ccfdcb072946557bbd64877552beeb0e21c0' }, 'config/iris/rangeextender.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '771dd895b5d6868c5a2369b1d77f5a567afba312662421b8e9b6430774f7573962fa3a89b2395b48acc6fe9512fd2da3957698af39ffe9196870802b10fa1aeb' }, 'config/iwatsu/ne-4ct-2p.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '76e62021a25d51d9fb8963ff4a6bb5bbdf2409e858c95944320cf3a8d0b2100ee4960a1cd404c75617c7f75805c0b27901c43b36b4358173ece6695cd0df6d7f' }, 'config/iwatsu/ne-4ct.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '81f5f32ba61a8f41ba1770f8859e774d36ffb27d3508989e2ce7db5fd3335c202293881459e87d9fd9e48957bb0c1035045937e33489ca9a1ec9e9cc664ef04b' }, 'config/jasco/45601.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '1f93ef3a4b052f0280b54d95d2f91b8845be7e683d32cb5410cd6cf8c9928642c66450fd0f1d10a42523b21a2e114f8be667775c52418108d717b369adce0d08' }, 'config/kaipule/im20.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'a9b5df85ca3414019c366a874650c0dfc9c1f70f85d5ee75be43b07e6d13204239a0be9872be4cefb12cae00b3a209bbe4361cfaa47355f48be4405c1756014d' }, 'config/kaipule/ix32.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '6c73035dfad876c339cd6433337ec8b822da99ec5e4cee641f7c0bea712b18118e58243764df11200aa7745e1ef4fbe38b77f3df17b8a81ec7bc1350d379d57b' }, + 'config/kwikset/888.xml' => { + 'Revision' => 2, + 'md5' => '8e5c2437c10c94ecf8fb026f9e028a0cbc4b3709ce15d7df37abf9e777478436c2fb1feee5a935d8a41e98f1e9adc52530a2f702d08a8caaa80e33b5bc486f5b' + }, + 'config/kwikset/910.xml' => { + 'Revision' => 1, + 'md5' => 'fc4d9468508bb971bd24eb0e6b658e08760e04b60e23fbda089a1087e3fd167c92e994ee8c344e8317a5485d81821ed0716f3c2d9dfa21e74ae79785a6eb337b' + }, + 'config/kwikset/914c.xml' => { + 'Revision' => 2, + 'md5' => '5724dcb1df68c2809fa3136f2fae556df59be5c75af1fe8283b3aec92239a422f36180f55aafe0589333e759e89b5d1d22b02f10fa0caa27d44b8f1b0f5edf18' + }, + 'config/kwikset/916.xml' => { + 'Revision' => 1, + 'md5' => '4f011b843c8e07c72cd0af17a0b4ec1fa8764fcf8ea9e9106a283cd3afc7aa99d8c890ec0429bdae05fef29af0a4f9ba0172c8cce9faf203e774837d6d4758a4' + }, 'config/kwikset/smartcode.xml' => { - 'Revision' => '14', - 'md5' => 'ebdc34b0bbc28dfe0fba9a646885a4f1311664b85e267dddf02cdcd3f7012ce915f2c4ee8a88fe460e804c8faadfb6e03bbd691fe767547de0be4ce8fc8126a7' + 'Revision' => 15, + 'md5' => '25b10ac756242e227b2772b31101c9dd64a27dc5250b9923e8eaa3a56880911455af70bfdf8254d3d349ee9ff5b1f0d4e0339ce3dc143b66f602b0f43f568d0f' }, 'config/leviton/dz15s.xml' => { - 'Revision' => '4', - 'md5' => '732a89135dc8ae080edff82c4662d60b69b1e94980c01e6a3201dd91ace0ffc58fd61bf621317410476325f304be2d78688a020a0f89a1d0736893232a6679e7' + 'Revision' => 5, + 'md5' => 'b7a57c24f9a19bc37086084b95a1bc541b8425f1877883e69e19008b41ee08ea0e9dbe854c9a2bb4e72d42f5972eb74eb768513d62a41d5f903e431cdef4bcb8' }, 'config/leviton/dz6hd.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '48977e685e55b815ff14870d049d84b7046fb76e55afff21055e6374a612971eb43f9ce51aee02f763b17cb77893b33d37abfe838af55b518d045ac2635ff2f0' }, + 'config/leviton/dzpa1.xml' => { + 'Revision' => 1, + 'md5' => '44eab79bb9fe2c858b333d7e162c4f62258890cfa3ac7751ea5c7256bf2008421faa0bac4651fe03f33cf467fa7f872e3b38c2b5fa97a8dd902451977c793769' + }, 'config/leviton/dzpd3.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '56d3f1600de0802f82cc66f25306024d84aab6539f74cc12062304bb9975d5b5d605ce6c88e3b4112a68f2673c76a5a525e91f83a8ae0d6ecc487b7bd16f86c3' }, 'config/leviton/rzi10.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '2e49f23a2cb4569ac6c8d82cd0d1c1fdd9384c94a9929b4479ed8f2db6fd8c956e96a7d36bf0a32da77957afca5b319b55d5129e973345195b610b21f18a3249' }, 'config/leviton/vrcpg.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '2e49f23a2cb4569ac6c8d82cd0d1c1fdd9384c94a9929b4479ed8f2db6fd8c956e96a7d36bf0a32da77957afca5b319b55d5129e973345195b610b21f18a3249' }, 'config/leviton/vrcs2.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '6163822e432a74e1bbf1114ca11e810e550c4d90ce454b7b3a924af3db6621d047def018dd3f48ff11a91bdaf0e9586c8de34485c884ba6c7f19db7ea64c5752' }, 'config/leviton/vrcz4.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '496680a38f17174dfd6926dc45208c47f76433505227eb1952aef4d52af714a0b3401ab43a5bd9d57acaee399c4db2209229ef78bb8b5884c9cd15e009c8d8b2' }, 'config/leviton/vre06.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '2e49f23a2cb4569ac6c8d82cd0d1c1fdd9384c94a9929b4479ed8f2db6fd8c956e96a7d36bf0a32da77957afca5b319b55d5129e973345195b610b21f18a3249' }, 'config/leviton/vrf01.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '3a0cab86c66acc518d174cd9d09e4dccc6a7475622fad1b1eb7774840ec4b7e10e3e134c8047a37eab8b2eaaf325f759f18b0f28863a340ed0e3eca82a6f7313' }, 'config/leviton/vri06.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '2e49f23a2cb4569ac6c8d82cd0d1c1fdd9384c94a9929b4479ed8f2db6fd8c956e96a7d36bf0a32da77957afca5b319b55d5129e973345195b610b21f18a3249' }, 'config/leviton/vri10.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '9fa98d67f20fb67b25548993f0d004319d0c2978465226c1ff359a2dbf6a75919484eeaf45ba1a78c7b8ac72191538e5e3ea36e4f8cfa392eb0e2b8bf8a0e0d5' }, + 'config/leviton/vrpa1.xml' => { + 'Revision' => 1, + 'md5' => '4444a13410fde75516d45b600d68209dcbbb9fcb9f2506a135deac78a9183882768a4511e599282b3a85a0fdb51278053fe1d022332f4d1c84034ba3e8241810' + }, + 'config/leviton/vrpd3.xml' => { + 'Revision' => 1, + 'md5' => '366fe2489351c4de06bacb6c212861d56959e4b2d9cb455cce9ce3b2efedf7aa1f52c4c6ef22f29f70cc76558ed6e7b92bd349a19dca045f79ce294ca93728d8' + }, 'config/leviton/vrs15.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'd89c5ecc71d6fabce275e8cda97edc9d42ba989269c1d4046ea530280ce5ca5d941956538b1f224030a6f34fb007b25d680c2c7570d6c088dd0e763e04f379f1' }, + 'config/leviton/zw15r.xml' => { + 'Revision' => 1, + 'md5' => 'd0ba74846bbb01a3c552944cc6e5fd2122479779f26a6e94472c1fdf866342d44cb57ea3fca7134979dbd82fdccfb8a27837dd91fa185f7e7ff804a9d4d1cbea' + }, + 'config/leviton/zw4sf.xml' => { + 'Revision' => 1, + 'md5' => '4cf229a4bab0b12de915d005488ecf28d388a875266615b94a690442458b98c09967cb8558762065abfb2dd9558e0da294ccb5152b213f7b3958c4593d80ebff' + }, 'config/linear/GC-TBZ48.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'bae62218e942cd6e768c236ca9d90864f53afba4f142fb30d2d399dbc5ac864a6b2ec94f371d4a845774db0463d00d45d6faea7c272b593bd04c706ff578a69a' }, 'config/linear/LB60Z-1.xml' => { - 'Revision' => '5', - 'md5' => '7af77dcbc2dfec7eda52a38d8cd7042444141b0ad8f48cf29ad69903e4b0f609e6ccdcf042e14651c7485211aea9c07898a09ec9601f68df64f1ebf91fdd9d95' + 'Revision' => 6, + 'md5' => '8696980f7aa7f96a1c5b2be399c0093b306309e668d3be229d64891d2fb19dc3c95dc2f084ca6ed45a2c2d9837c2d77dc1a26211bd25249c55b56fc06a163301' }, 'config/linear/PD300Z-2.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'f1b17e79d26ab0ee49b7928b2bf22c2378ec4fad3b8d4ddf3bca7dd7d52ee640a6f40779be218b2dbbe0c1741fe044e1698644eecfe99c421f35cbeec4119eac' }, 'config/linear/WA00Z-1.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '3b1d6292b3f7b5a00d0c4f238094abb83e91dc71f0b3c73dcd2e90261598a5aee1912cbb9ec1bc842327278bde870d24c019e0a8a9cbe40ce75ffe7aab22c7c0' }, 'config/linear/WA105DBZ-1.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'fbfc462f83df75cc451fccaaba4e4dd4c3166a6c0cccab7dfda73036bc6a64cdacb48da0964f2e61b1d104685a20b3fd517eee2f35b58661f295ed980a1beb08' }, 'config/linear/WADWAZ-1.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '9c79c9f63bd033188724d48990a39e6a972b7549a4b3fb9a9a7e0eb592d00e405e72ecd81562d08ee21bb50a74072b6fe971991e5eb1e348d5175a9e19621499' }, 'config/linear/WAPIRZ-1.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'dc77298b11a62ae28185db44db822bedfe7b23b9c3f59992003f75dcd816df1970140b905ad6f2ca7bca28feb61f9fc7e2ee6f0bff7f6bc86750c6a58f041107' }, 'config/linear/WD500Z-1.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'd2af4d164e011dd302616cdc29244b66d17d94fc75b2c582af63d39dcbf73cb3e288e8e01e87e09eb67c385ae12e3b90ad0e153effa957a9ce3f774e3b2e87d1' }, 'config/linear/WD500Z5-1.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'e11f2016a1ea920b46f0f727b6c3a4205a0b752db14cbfe27f15abfc4a10ba84762dea5d1aa8b1905afd2ae7f71eae7d74ea06bd989f7c778099e2f0cd090333' }, 'config/linear/WS15Z-1.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e3a8734089a4cd8a592ce7ac844198abe8503f803219ba6c0af1a94fad0fae4264c1bd5114d8d1c7ac5c194ac3e69205d29cf22d2d305dbe7a3b6bd01cd6a6a6' }, 'config/linear/WT00Z-1.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '4431cdf404d513158d1f7b9f62644ef45818a5cbce27b27a18ab0bfc631c11884996556a41b82c6242dd5c574f005a80e68b8bafe144659d10bde6304aea0a5c' }, + 'config/linear/WT00Z5-1.xml' => { + 'Revision' => 1, + 'md5' => '378756bb646f7f84f3161a324289670142281a97fb074e7dd0123c7182a0b61963ee01f0f0feed71a0f9fcd11d4f2f458ad671710433187eead121085cb242d7' + }, 'config/linear/gd00z-7.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '48a5f7d3b0d0cafd025fc035680a298e8afce80831940ff003b46cfbd3a8056e781474e5a6d247bcbbd6cd74ce9d4c04475b7445dee870401ee912c3e6056c9e' }, 'config/linear/ngd00z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '88bf6abcbe1a82e590f415571cb96d9304ef77fedc43eea98b372142c84f79b94d001b87398f5610290d3c19ba79e59d856874f0b3fd3c65d2ffaea750d7e971' }, + 'config/logicsoft/ZDB5100.xml' => { + 'Revision' => 5, + 'md5' => '3145ca4b1a0d82f196c79590e28841826165c6c0c6a018260d7506c743bb16b424265e3ac56e36da8755385442f27222fc9983c5a4ce5974fe5d215927f623cb' + }, 'config/logicsoft/ZHC5002.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'cbd53fd7d938a6086861d26e8214c1c56916b0fa2337366c59b4ea5bb35af9727b1fa1d3b447a733ca269c708f5f5385f7ed3661821e9ec29929828459d35a77' }, 'config/logicsoft/ZHC5010.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '4d34aeaaea917c229bedbb737e4de1550b2d7db5f9e61566a1c0a39966b6442d381d01f93714e12aae1404797d36854274cc4063dd7424b00d27da238b17a36a' }, 'config/manufacturer_specific.xml' => { - 'Revision' => '61', - 'md5' => 'fbd64285fe3072411e297ce6ff58dccd3c9bb82e8d410283d6c3ee4210e0dbae04be90b4b904c0b7656addd5da9b01951eef2de479576c33b7e8ff61fede0256' + 'Revision' => 172, + 'md5' => '9109b76dd1cc60709e13492d0261bbfe15603474a03ed681591e696f8bc036c9346d7cc01571cc70fc455c8c32d9ca9c121c9510257fc1952eaec3017066b3b2' }, 'config/mcohome/a8-9.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'd1809616fec114edc52eab80314654c8644550fecaec881193460099bface47dc976da727f2d2b0ed6b06fdea1560a942ba2bf230752722ec64c210ed8ce95db' }, + 'config/mcohome/mh10pm25wd.xml' => { + 'Revision' => 0, + 'md5' => 'ebef8141b4a35af56a90ca212206de80c39e15825c9f1a1101c24e6432d47644609b5d2d95dc19b7dd656fd3dc103fb487910f56f4bc032870290aba77ad4189' + }, 'config/mcohome/mh7h.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '03ca338b59a9e520891497741c0c25dd562734b3f6367a4eac65aaa739351a409004c95faab888ae84c523ce1721d9b5842a9f365554dedf6faf6ed9fb6c7cb9' }, 'config/mcohome/mh8fceu.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'adeca64ab2864dedb92249a76413d32feaf0712385a53289c2c8c7778ea4e0b74403a191dc10c6de4aa3bac2a9d5f0b940d214efba597080483d3045ddf2be71' }, + 'config/mcohome/mh8fceu0803.xml' => { + 'Revision' => 1, + 'md5' => '5e41a956638d5e67045b75513486c36b2e439ad3a37e8970125c14009efbb65cc194e5c0e49d78c81b55bd601a8d0739d31d16a8a2a49c26679186485bc3a0e8' + }, 'config/mcohome/mh9co2.xml' => { - 'Revision' => '1', - 'md5' => '560591b0be64d37f0f2c8cc50ad516880c773b2bfd4b913d3e7cf9b15e7ac8aa262415914b7331288e22b34dbb03a998b50fe3bcfde862c869fa4934d2219731' + 'Revision' => 2, + 'md5' => '663b2cbf6cbf61244da0704e8882d0d39a5c95be197d7b29f1d9a494f139e4c3cd50a7f6571fbd3815cae78378716652dec606a69a40300e286e4df45995dd5c' }, + 'config/mcohome/mhdt411.xml' => { + 'Revision' => 3, + 'md5' => '5358c4702375567b723991acc1f6b126d1264a09712f6828be6294183d799dfee7d0b66a02bb1b200c2a4f9097c64568a6d6fc0ce04dbf8c4f42f255c10d6fcf' + }, 'config/mcohome/mhp210.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'ef4a59bae64c999292ce1f3307af32bec1203cd74c1bf69a990d036e670c9e02fe75b441e4e58cc52a7f563a6c5aa854c36479c06da46db4a6962d1f8c8648c6' }, 'config/mcohome/mhp220.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'cdd157b8cf327dfa5f4b86e94708b2b4fbc6f749906c4b50908155b7ed54e0f1276e82aedf256772ddfe6c4f0d976ada08e4bd0f60e330ce4d089075132983e6' }, 'config/mcohome/mhp511.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '3cb80a2f92e58623f3c390ceb6dac6a4195a12bfce6726ea417ac28d2c80b337da8b79047436b1a34bee629b34e5cec6df3193e8acaab4c0866dd0e3ba5471dd' }, + 'config/mcohome/mhs220.xml' => { + 'Revision' => 1, + 'md5' => 'c44d7297cce33fe821e92f35dd4e27a164db8a2f8ed3be6dba7bafc5e98629f836d92c2c32509de7cad48d4e56c2b4f095a7626e244e523e5f557317c21cb49c' + }, 'config/mcohome/mhs311.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '4ce93d5bcf48f3a80f31d8293f4b2501f5541c2d74f1d09b35f1a6db7fee94bb14a375c3b443ab0582c325bddc0e0ad343eda1dce9948e16d356a51688980ba0' }, 'config/mcohome/mhs312.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e208b5d84f389663806f848bce581d5e20329e5a16efa32ae683ffd99c65078518cee716201f4ede6f3b9034f27f14ae5f6e235efce02f4b6a98fe32eeb39da3' }, 'config/mcohome/mhs314.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '31033492060277778c0d0272cea5d2dbe3fd507d526d855f8d39f8f1e2cad6b3e43c3e6358229487e6ee7c9ad14e836438ddbd26ff85eb9cbd68bb273e8c62a0' }, 'config/mcohome/mhs411.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '161506bc23625d36fcb5e4156e180885065c042a141177e118b8d4577b660ccbd64bd3c49e783742a0ba4f299b153f0e4e73c76b54cb832e1149e374c39e6843' }, 'config/mcohome/mhs412.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '0f893961cd58ae4f3f58e1efadfac230430412427a7fc49d7137cb9fb8d708ed5ad46d74f022db2f651e3490662516366c24666d61545c68e14dd94429ed4bb7' }, 'config/mcohome/mhs513.xml' => { - 'Revision' => '3', - 'md5' => '23c319ccfdd895d705187b39750010325021be243c639a024a6ade944aacb6820cb3e4c433cf0e4b61fc2da444c3931e5ccfef355f8ec07c61a0a9a0f463971a' + 'Revision' => 4, + 'md5' => '05db47a894784963b58626ccbe4f09ca637e2819b26a0bffa0e7255ab058406eb4563e8aa88f45c09a46b9c15963a01b2c87bbe619463341a8fee64a590ccfb9' }, 'config/merten/5044xx.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '0210019559c453668d5fd09bda0c3fff573e205820700826e0f7cc2e0326764855958ea1c7883d6fac73a4970777c5e73bc9a68116cc11b4d0a67ee93c701c3e' }, 'config/merten/5046xx.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '3526849695799ba35286d08503ac441603c0b662ec2311d867aa3759c60497a436a3d5333ec11f55591158c3ef2e9294b98d7e76a335b19eec99b5ee990a06d3' }, 'config/merten/506004.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '59f056e18cb14239c023886f9d7dd8f06a2de6cea986822f36fed7c3527cc0c73318cae6da71529202770e3ce8a53b88a9d1f7b94ee1af75dbefc0059d68b155' }, 'config/merten/507801.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '529137173a0a9ce8d2a75e8a19ea81d0367192947ec1fb181777bd7f61c93017d90d6c09841fec15716245ff63ae6545f5c17b477fbbbf469df27fe8f40efad6' }, 'config/merten/508244.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'f2f028a1f81f4d1c3287c230489e9532d82b0013102b57794e19c6b57d2fa210d5ff9cb9aff00e9e3c0b54410d8d10b846e3da4a42d1938097440c7eeab6ee77' }, 'config/merten/50x5xx.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'e4cff66ac2ed17fd5be4359b90046e6959ce38bf84af0366dfab8e7c4fac65086036f6558c5ae816d502d981cd3d1c256a80576acdb1989c019ccd2d68016813' }, 'config/miyakawaelectric/me-d101.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '702416a0165005b37d576d5fb029a5cf057406bcac8cd0e26092aebdb728a4ffb98da456fae6e06794275b0421444ec20415292300f988d0c19a808f29b41bcc' }, + 'config/namron/1402756.xml' => { + 'Revision' => 2, + 'md5' => '97ae44eefb3bf39b5ba125efa3124c040934209a3c61f6815212c41b7ff3fca862454dfd2cc3eba0c6c29dc12d3ede6a97d499dc466863ec74c94c64fa32cd4b' + }, + 'config/namron/4512710.xml' => { + 'Revision' => 1, + 'md5' => '6bdd47c7a0ba829e89cf2735e720bf2b62020f228a4e80df237c1b454707ea7aa7898e916bcad430ac313d38206e9862b5a51748ec3138368c2b5fb643d93d15' + }, + 'config/namron/4512712.xml' => { + 'Revision' => 2, + 'md5' => 'a82b5f87b0be78f05917547ca8ca358d6d2ff484a3aab865597fc8fa8d59dac81498693d0768f4aa8aa7fdf45ce115edf96a6ad17cee09d9ef37941f803a2ade' + }, + 'config/namron/4512714.xml' => { + 'Revision' => 1, + 'md5' => '223ddb325b70ed7abe9898aa74521b6ad263a45e6a4be4f6842af04d0093d300451ca1d9b07e392c129195e425f431b8faf5fadcb7c32ecc74096699419a8446' + }, + 'config/namron/4512715.xml' => { + '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', + 'Revision' => 2, 'md5' => 'a85e3b5dd39faff1bd76dc1f73f3b3527eacea0e1e1c70aa6d6e879533219b9e8034fc872b2553a12c7144152781389f3d055927a62565814695db853b87bf8e' }, + 'config/nexia/th100nx.xml' => { + 'Revision' => 1, + 'md5' => 'fc72b207417e4c992ceadb75f0b87a6480a6becde57f7ff9e3e625ad066a5fe75bb0f2ba2b8b9e24f12843b04d66f37a599f84a3551956a723ab4eaeb6934fb2' + }, 'config/nodon/asp3100SmartPlug.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '7c24be4705939a05a678db1c9d8a569abd97f9d074abff0cac479f92fd7235bc95439f0371d0767e72220ca1281cb1beb526eb4e0f68184d7ca29fc3fe620259' }, 'config/nodon/crc3100OctanRemote.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '4c2e1bf3aa0abdda59164b964887b9662a637a852d859baf197f480d9b3959cc796b38fcad3208a63e8592ac533b588cc82943707c1f81acdbf73d8cf08f8cfa' }, 'config/nodon/crc360xSofremote.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'c9224c55596b27daf81dc38f5f8f99797a2002bfa7c513161a94c818fdd1d411ec2beeb48209f531c87eb1c8fbb5ed7d71f14d03076cc403c63adea718e720f9' }, 'config/nodon/cws3101wallswitch.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '3488db5887b2336d0a1bf35b8c81692fb6f899d620598b09de648a3c192780d343ba6edd5444fadd750aa426391037cf1074b503387e8d32c7a6749ec3d2b1e1' }, 'config/nodon/msp31xxMicroSmartPlug.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '12f715e8f79d0351ded0d6fba4094bd58d0fcbd3ece3eb325ff7ea7e7bf0e47c322e42cb8af4dc89bfc16b657a799768ed21184f2371c2f121cc0febd5fdefaf' }, 'config/northq/nq9021.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '865152ea0ebb5adce8ee09f65760f4f43c4010e6059596f346f4b16ca4121cd1cbf810123668009dd4329bb6c93c6c8a39d8d5893454cc03e6c06e555b857fbb' }, 'config/northq/nq9121.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '414c7fcf570c29c0ee472a80ac17399b47678028fb5b6c52ee13c7dedb570751708152d20a549cdcc0c9b5b7e5068d9119057641a7659c6ecf91ba8e7c46721e' }, 'config/northq/nq92021.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'c1145f7d6cd67f960109fdf04b12952fe4b6255bf703f3826e62512c54c8f4e4f58ef33554f5cb03eedb1b2fd969e5ebe48b03e296dde88b89b9218fc3a6a2e9' }, 'config/oomi/ft100.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '8398a78120575f099e915e4544755bb035a8f9d8dea8caa536d9341baf8140ae82bae017b0556a22f8617dbe5d567422a29c2b8667d6b8a7807fb097ab86dfc6' }, 'config/oomi/ft111.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '1495bc054f8821256e12b70cc4aadd76e55b1d5a15ce26912e2df6a9b7246bab73968e723ae994c7e0ef923a293b46f8f72760e8c3ebb8fb32ffed7fa73e8caf' }, + 'config/oomi/ft112.xml' => { + 'Revision' => 2, + 'md5' => '3a44eec10683cc26fcd878e9f02c715173f91b7dd37954803f81f1b93460212f6ad0b113261b4afa1150d39df39691a6f27bd74d8fe11a0c8fb459a1acdad2cf' + }, + 'config/oomi/ft118.xml' => { + 'Revision' => 2, + 'md5' => '3e98d700b6909d74f4e753880a4cae27929a324993943c9b3d6d9070805bc18360631450f2c6ac36e4081fdf5147b717c5163b4c29238e7973c037f50ab38782' + }, 'config/permundo/psc132zw.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'fdfb1fdc33cbe4dcb02dee460b52941dbf751641a35d80814e50df85a4235f182323a55203948213c7d99d083beb95174ba6acc860f38b41bea65608f227decd' }, 'config/permundo/psc234zw.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '32cf262b674384dea494dd38e5cde1393f2f0996c1ea42715ec82597af90f59898bbd75e6d37ff4a1d0b491e914a5f28c9b2946713e432f5b598907dcb052cfc' }, 'config/philio/pad02.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '8e1fe2169622ea923aff37663ee762a922dd90d2600fecf6f95808917cd414187d2dcbae6d33a97508b09d5cbfbf91413d3ef0284d875905f2e611e34069e393' }, 'config/philio/pan03.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '69ac125e867e1523ba7cd4e7ed1e7e8a4fbce0d48dca53080db404a833c1bd6446ae1014871a60f4756f5fd789dc0f314a2c23ea3467464665e61766778124ff' }, 'config/philio/pan04.xml' => { - 'Revision' => '7', - 'md5' => 'c9a658764da83f06371d5ddbc57f0ffaf025d6f5f566ce0edea4b0cc003e930d98b7ebcd5b5fe061b2e0db481e96d6c37300c1ce7a264109d04aea72dd750a69' + 'Revision' => 8, + 'md5' => '921f304351c137d6d652cd81d9ec757ff689e4ebec2aa65e31538ff069858619b67f33e663c5ef68901ec47d442ae4a8ed81f84fbd218cb76d6d0f956431c58d' }, 'config/philio/pan05.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'e57f208a8b5d5037bf9a1d1a8991a8936e3302944b6572dab297f15f086654e4a24b059171ca9bbc1f7cf835afadd568000cc6b8cc20a0c7e8de452118817193' }, 'config/philio/pan06.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'de37b536016da639ee85bf9e1f782e3b1d7458d2f1cbf71c31d851f62cd0617dcab0e481ff787139f8b5bb7d8f8a3aebec61281950c172665616c9fd32e3a767' }, 'config/philio/pan07.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'd38c538a03cd694dc2c5b55488d947b7e3541c99fb852ca3fd0c2f422aed746626ce34d8387244aaeb353bcbcdfda5087815b8d823839756cfee45c324d7abc0' }, 'config/philio/pan08.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => '6f40cd915cbf21b17d229218e374e06931c17679066d5a9b66a3be20fb7f1f126034828484ea0b34493a6bd2f690e0ce79886b563dfe73b7d2d92477cdb96f56' }, 'config/philio/pan11-1.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'aa358cc989d2e2d476bc0229750ad7f963fc07edc0ad9acd9b14f0e08fba41a1ed858d5db360195dd77b34799a610a774c2a5210eff0ae29c5de570ce3e560ae' }, 'config/philio/pan11.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'bcb431b0960b2c0731437a8c6f88a43a32586c45dea68c43245bd51f1895d5a8b7ee875d77ee07f2ab510a88487f4f910c38aada574cb27396b70617ff1f8757' }, 'config/philio/pan16.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'a7fefd71f6bc5ede497d62d300ecfb3e5700c0cce1c55068349881fd6ad31ce08c19a0760a935033d42ec6407853b65d1d39f49d5047eeb69a6a0d05cd57094a' }, 'config/philio/phpab01.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'ee5564aa200257d255d4a630e4a329e33fbc0a202f0e0ed64f3e8933f760f8fdb5d248a94bf21ebcf20affd30fa5fadaa652cb01b1470496cd1b18a1d196740e' }, 'config/philio/phpat02.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => '2934c2c8f14d96e31c6b978a4f0d6514eb40fcbf6bf4cf88b0298661f7aa58a3f552d8d7071bc096f61d2f2d81d7af8e4e3e2a281306c12bfe1957ef210173c0' }, 'config/philio/phpsg01.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '2fc5c66f6abdfec254f00814927a5de34ac80a32d433781cdcce2f3756726bbd22c5c52e38af2128c0c5d478ae767256c3e257010170d39fae8cf6e8f17a692b' }, 'config/philio/pse02.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '2660f6fafc0f5d1929d6fc4896fe7da6da4d1bc420d8f98d1ced1ce5c492819239c1296d18965314b6119e840cadb226677add587e1cc6eab01d7fa4ec312578' }, 'config/philio/psm02.xml' => { - 'Revision' => '8', + 'Revision' => 8, 'md5' => '61de4f16428eb7b039dc52080318783485c5ef1281f6e8b9b966ba668fa9a34c5155fc94e1a32def1cca869f832c750232608be17c007305386e491177411aaf' }, 'config/philio/psp05.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'c11ff9ff5577b4b78cf5c9501053be6b23c53ccdcdde42b06b5e042001cbb5f898e855e3d8769bb5af6f5aeff7738f2d955d638d3609caa988b28c8beefcec1e' }, 'config/philio/psr03-1b.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '47648ede1096a03001221a87b148e05f226dfdc160ab84731c299694b64f5a982503a25c1c5cf2905f0654df08024d05c44010133648ebf5ab4358cbe7e34736' }, 'config/philio/psr04.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '02d630345e20cc163797e73a0299c2f1f678854e1bbec6475c694167ba95e38b9dae3933e151a56a0457d7548757bd7ac45b3f4acadde7b671f396f04079f454' }, 'config/philio/pst02-1c.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '464c0b4b141a2574032381b026c8e1a188c7f39f196449a3470de246591c0b75b842f1db09261e7ea8fe78d13718d38614ef2c04b311dfafb4f896772833eb5f' }, 'config/philio/pst02-b.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '4231162c58f286ebb12b0a6fd65fcfe1cee8d5a41f1a7565648dac2f50f03b327c88bf7932369c76ff17b7b2cabbc3f87e082e2978ee0012b47ba60c0361443a' }, 'config/philio/pst02.xml' => { - 'Revision' => '11', + 'Revision' => 11, 'md5' => '03450ce5dd6f64055d0ade348357cfae39a7bfde49c15fb94298489f56e303faf669dfc19bf51dd4da2e95d72dc7bbe1fe691848074c339d20377f1de337532b' }, 'config/polycontrol/doorlock.xml' => { - 'Revision' => '9', + 'Revision' => 9, 'md5' => '41699e435d7d757d17c930c7b6a255218ce13c9c0ffd7c813eb8d1ad9872fd5e10e08497833a96b1d5c8d6d5e6ac7cb4983e62f179930c2fd4963014748ae50c' }, 'config/polycontrol/doorlockv3.xml' => { - 'Revision' => '15', + 'Revision' => 15, 'md5' => '470dffd2518ef1de4af71fdd29ead1afef79913651964dd328c2068e8e8d3539e61b5ed5c5ef3bbacd47590a6a800e182a0115f1dff6fb29be6b6bf47e302eeb' }, 'config/polycontrol/keypad.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '355727d3cae60c0ee5bce2415bfc6f781d3b7ee00caf4b0693d51daac80efae1e5d535f2da189787445a091759d25e01072603476c3645f9e6b78b178d9c9fb4' }, 'config/polycontrol/polylock.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'd568bb68a43925c93fa91ae1e90be02a7bd122a96e45976024451d554e30bbbcd4b1c379eb7b929ca09086d6e2a2c3a50235193627b115358f104bb3f78a5861' }, 'config/popp/004407.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '9aef97d5a39d568f37918b440777fd2cd95cb0f094dc1463fc846d3ccfd6a9834b0890409e6ee7c3baf18a058ba90540c03eb04e86b54f30d8ad3183db88daa5' }, 'config/popp/009105.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'f342fff90c90bb58c7b2982fc2ac1c1dbc81a62de8ba5e955714efbacfa2a90950df81bbd5a255771bb43820a5b3e65fa6abf83863ef19787590cb540dba0a99' }, 'config/popp/009303.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'a5d8cc2a490a870b0c4e8bcdaae57d2efc4e2c3cf632da50950a7e16a23cdea02389fe078aab9441eaf29d9312f808d00d6173c78aacaca000693cb88d1a3f28' }, 'config/popp/009402.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '76fb11bdec34c53312c01e694e798cfd05516215f82a6756628b47628a832f9f29852adb0d33f6783e3706bc35b132c44b9be7631049d91077a434ae148d5f41' }, 'config/popp/009501.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '749c31c6f0a959da709f13b331f01abe31bdd5c9f93a584cdff75ba40ede6051b777056d01bd42fb4e34e4728ec2f5454fcd8d634ded05209afc66450412e013' }, 'config/popp/012501.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '44af7415b92881839701d05860bbd9b1a4f3d1e1a249c2bd0dbceaa4f1e4f704009adf51b33242e8b81ab41a7766c2a0fe3c2b27e71a592c21a659d0c74d24ed' }, 'config/popp/123580.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'e6f1179ca889975925b64d57dabe01c7c9a6ed85c2d904765d3e3b076d9271fe88a8e20512a40119d113ff12660361194668773712af6c57de0d9c6e7b26abb4' }, 'config/popp/123601.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'a62805b4ce498ea1010c49d9379f78bad95599a7acc465f2e829b6d6aacc5c72a5eadf12f357ca86ffbbe86bc241d0d787a0cd2b7d90b24c481ca774dd6944ae' }, 'config/popp/123658.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '7a156ae6ee0a11a5a22edd0b0be003173c37f8abfa4e93558c0d78c0c15a48be962a83a797423bd75e2fccf1b6133020ec5886da5cf81721a726fdb525ddd11f' }, 'config/popp/700045.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '9f5b536c1f6716e9171b9cb6f6778f0f609ef33321bb8b3ecbd890a66d428048fe05d7cc39b4fcce7a1c2e16273ec76fda322af74e87cb7bb02ec951f342b6be' }, 'config/popp/700168.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '1edd75ada9a0c8be1e77b48629a4e07f724a5755f32fa80b0471709043dbdac923a028f3698eeadee2ee948b039560c0e99dc500165e26f1bbb67bf5a4788729' }, + 'config/popp/700342.xml' => { + 'Revision' => 1, + 'md5' => '8134576c997489d04fd02f62dc94815f2e9ab24ab0110e0632102d24f7e1e2015180abdb8365346bc1607aa27d5e8216e02a151c3501c7b7bd3fa8b33c961817' + }, 'config/popp/700397.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '89784ba95b9219c52c8f63826514c480fbbd9fe84910789b0e3c5bd5a10038621fc68c392a8b759ad89a2c43aa34e823af029ff354651b86f65fcc71c098a848' }, 'config/popp/700793.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'caceab22bf95c5e0e3e030befb73d612d94620cb3f11011509a7ac8d85a0b7771d24521385275918054334d7046ab98902f576d8c9d5ea98009e735d0413a331' }, + 'config/popp/701202.xml' => { + 'Revision' => 1, + 'md5' => '737e201dcc7710e70727ad12ec7e93d77cd3b1a53c4f690a1c18aa343f39f791f56ab7543d18bfe77e10773c8899e7115aeb59e03875657b678d72508d7d1af8' + }, 'config/popp/dwt.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '68638128d2fefdf799548463d04769bf7d911ad2b2d6240ddd4d7a6df7e03875808773e819839c84deb29a5a2fc3474c326e13a9335653f389a5ab211f57f644' }, 'config/popp/smoke-detector.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '5a0047adbd73b8bac7bb78d1a01c4e04a8674b2c6afff325d14b2e83710fa1e9008af3c6650368dd7e9c2694dd601b885cc8a64c1127fd1019ad401d12b35996' }, 'config/popp/solar-siren.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '010d56d45a25cf13b51b1953554f0ae4dddbf52f18dc03a3c1f85a264ebac8d065d7f226c12e2cffcca5b42d0fbda10208ee3156df78c7930b7c8ba023722be8' }, 'config/popp/zweather.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '89c31bb70e56b887ec4559b2d4bc450bdf40490fb9b496f37e337265539e638c0bcdcc128f6914c3940f2d58cf51655deb1ea7876c38d74ccc2e89af7e1240df' }, 'config/prowell/zw-702.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '0f18166b3561a3bc65c5f53f8a26fd2776b6adb2d01367a7be5ef11800cf3bb1877ec2e8ba6db6170c6faa9ce4654ece1259e4d9095354da2595b8ff4b100aa0' }, + 'config/q-light/q-light_puck.xml' => { + 'Revision' => 2, + 'md5' => '0e726ac3a95dade8cef628abc82fe71f6a9b22b6331d6844d548e14106e7c70b8100cbc2e6a9e8b99c70614269da30f15f56d0db8d410e092113a3c7bb284453' + }, + 'config/q-light/q-light_zerodim.xml' => { + 'Revision' => 2, + 'md5' => '4d7ea7bb60f06aa3a79a1e7327530e5e5ea5cb99213684f09626d8f7204ac5aa03069ec4728b5c8eff44faf7d65dc6a0ce2383e72f386fa0417af1f359141ed3' + }, + 'config/q-light/q-light_zerodim_2pol.xml' => { + 'Revision' => 2, + 'md5' => '09b34de566e3854dea8839bab6b7c3d45e4732a3c27fc7ed839fb596dc1dc80331019e83822faab3cb46a8abae18b080ef29c328e77f55dc3796455d48fbbcc2' + }, 'config/qees/reto-dimmer-plus.xml' => { - 'Revision' => '8', + 'Revision' => 8, 'md5' => '944ab5c363ba7722f0f870782bf9d20bc75040fa21820db080040b538794f8574140ff0960ca218273810e596df193f76a7ee2fb4412f8ba2b2cce7fa18fb431' }, 'config/qees/reto-plugin-switch.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'd1f4c2dd9454ae4b1edc810c6d732bf042447334700deb17d9fb82d7330544e376d055c7e96a75a88bd2911cced8337c3d76041946ebb6e011b4b68d3d780dcf' }, + 'config/qolsys/qz2140-840.xml' => { + 'Revision' => 1, + 'md5' => 'cda505a60a5855fa591303809c3d6e7bb1d471a274522a014fb42571e7e81c551374f5227b8c4e544553f981b8a44d2176786aab59f872ef62791401ed39a902' + }, 'config/qubino/ZMNHAA2.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '080174f8dbebe8e5e80bb84601cd153946b7a014450bd04eb52cac0351dcf326b6b5c139385a42c055e1f01a09a41e1baf19586b66fe20e975ab6e7ab5b87e8d' }, 'config/qubino/ZMNHADx.xml' => { - 'Revision' => '9', + 'Revision' => 9, 'md5' => '510f98884bd31bfb09f356abcdefcdcb4456fb1edb54c6d20e673878983744d98a06a0b643880e842678bbe76d9272ddae4469606dfa57ab7546f26531f5d64b' }, 'config/qubino/ZMNHBA2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '35bde84eae9bf56aae8a8ec8710cd96c066d9caf087ec1356c3fda124e82bed5406af2e72b627a45bc45e1e6c91f8f0d9af9368e80fcf5973d9be2ffb5e191cd' }, 'config/qubino/ZMNHBDx.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'e7997e9c51a66d078d37e5501191a2a36bd7faa8b98dc8967043b68e9e97621c5dc5f797640ee4c50a3ae4389d38ed87e6e3a94540911549298f366aa8ac5cd9' }, 'config/qubino/ZMNHCA2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '94f11e408312da4a3104d120112bb697bf53a9c5877f3eb73128e480f23e217aa72bac2bc0752f2595a68d26dceb22573beb7f4a98938149e73facd854e21114' }, 'config/qubino/ZMNHCDx.xml' => { - 'Revision' => '7', - 'md5' => '7133bddad00285e714e0469b6ebb11bdf1bae84de2393fc512520ffcbb93c1d204646327ed6b2e50da1c23fd423361a4550af9ecde4aa587890d8261f09dbf9e' + 'Revision' => 8, + 'md5' => '70c37e94bb435fb029af0b55829db7e244ec7beead5939bc19c25fe525ebebe677a974d1d920699ac74b1a4b62643f5818b317a07b78f00d8ae792cb4da73e11' }, 'config/qubino/ZMNHDA2.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '7883b97dc7151ac7c550f56adbafb086a548613a14617da51232bb1e199a97144f89205622555efdac851e2fde437e2e00e65066c591ac1f1d622e7b57a1c59b' }, 'config/qubino/ZMNHDDx.xml' => { @@ -1992,739 +2400,963 @@ 'md5' => 'de18029a1539e10dd15fc85ede084182e1cfcbc78325602ca6e5b428884f6db6ce1bebdbea331a8ca0f4ba133828c09f13ce6c1f8486871a5ca9c17258358ba1' }, 'config/qubino/ZMNHHDx.xml' => { - 'Revision' => '1', - 'md5' => 'd47f8f39a5bdd5d5f5881708761769ccd517dae796e7580f77f8441715a957ed29de74221bff41746b306b461f243dbeaa6ec9d09451b8ba0d97eb2696b465a5' + 'Revision' => 3, + 'md5' => '1670fc7355688ae031018b28e6b3c184b3efa84a964b6d7b435175842e43a1ff445c5cdc7a336f71203fbd4d53ad9169a61968fac2b760db7339d9d5b58538b0' }, 'config/qubino/ZMNHIA2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f8dde99fe36b78571b75faf9ee7cb3c2d0112d86a0cfd33a6037ae96811dff066649df14fdf88a76a7b77d3005291ef72704a49f23a7a40e24dc7665d5c185d4' }, 'config/qubino/ZMNHIDxS1.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '061416a33033dc5cd68fceb1b06a690fa02c5f6c7804453a8d28173d3869b54b7067f87e30eca380330514ad1c078931c338563cf7af6f3da98916134d97d3af' }, 'config/qubino/ZMNHIDxS2.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '39e39c091d03726768865e889d20390d30af0cf5da390e49adff1928cc79030a2d59d9c1436942140c2ddceab49c70505f2963e2f54397e3cdb751a174cc3122' }, 'config/qubino/ZMNHJA2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '3545c580bbaf7b12b70e0386d13ff196320ce959767de031e2363858ce20d3cc0ade40928d17dc8f1d2be5177a73da2f51efd65c26c85c9a2735bbd23b4c3377' }, 'config/qubino/ZMNHJD1.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '32b118f0bbf83efcb068a27bdefe63777fe8672e69df478aaa066910ebb5af23cdae79bc9c31eced97abec78ffe0616ba3dd76eeaca86babe2984e6e7c18d523' }, 'config/qubino/ZMNHKDx.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '9c131e49681ec7db225248b21304ae83faa24bc4b811dad961195757cb70c01127482c12ce480e9778dadfc40357f1c9abe346254edde8848ec9803df9378221' }, 'config/qubino/ZMNHLAx.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f30b0c98515367bcdb9b5827838268789b8e4167bc0bbfdd3c9b7cf1838e4e8d54c9c1a88c942409175ed9291216a6f3a0d0c19807235283e9ecc8df4829647a' }, 'config/qubino/ZMNHLDx.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '5024808b8551691103b25c05fe37ae3b49499a38fe0491bcd492accab0eb346b7e810c3132cd67e1920ed0d971f07dd9303a3b774276aab38ac04610fe5dbd50' }, + 'config/qubino/ZMNHMDx.xml' => { + 'Revision' => 1, + 'md5' => '10bb3f3f11e86e4ec0e164e74e69f990864cd9fd76a4b407b1c26c54f5bcd5f16c3dc08482988b4f557f244da5cbb61b6555d5b1496d5ce3d7086868cd4ba3bc' + }, 'config/qubino/ZMNHNDx.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'a10317520ca58616369d1d7782640ffeb84fb778c781f3bb39e7d6a0f22cfdad7aedb65b781f632e36c2c9837188019d00bb8b6509bc022719a64a77ea2c6277' }, 'config/qubino/ZMNHODx.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '9e267442a84763403fc4c9ba6088fa59a067e1a5a362300efdcae287697426a53b5b705fde59ae5c106091923fbe51b2856e9c9bdc7bbe9f9601d7dde7878e8c' }, 'config/qubino/ZMNHQDx.xml' => { - 'Revision' => '1', - 'md5' => '0b359cc2fad436b06e51bbe02e625e12a1bb81854732b062d664634e8059d2e162c6ba3c870723ab32d6f0bb395afc0edd1b0e9459ae302a080d3cd55d9f70dd' + 'Revision' => 4, + 'md5' => 'ecf378103c01da6f196ffc99fdfe30ab93dd71d1b08e89577cc123664dcfa331a9116f2a6dac65b1d75bf76df45b5f44f4f09c041b0d410d1497d00a39d8f4f2' }, 'config/qubino/ZMNHSDx.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'a65c7430dcd17dbe5f1932ffece29cec38b684636c2db1931222c7c042e3e6808a049b149db78b9e3a3b12145da078416b8331d72052cfd0a149b8499242d10c' }, 'config/qubino/ZMNHTDx.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '75568a1a5e7119daf2d493b4ea6e7ceb59e065fa9325f933cd61db7334dfc792343946e0dae62b6bc84f8f598d55890aa9e2392419dce0cfd4eb58b6d23e7801' }, 'config/qubino/ZMNHTDxS3.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'df04a24a50282278c6deb7e885702d97ec98a2b4ac2998212caa7c16ddf961b590168214bee1c4ca76512a4386cf9b3199fe129757e4af5a725cc1a2a3d79090' }, 'config/qubino/ZMNHUD1.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e1b8ae48d7388aefa2464f7e0e51eb23a68f65e8d7d4b35a4c3af29524fb2d53d40e1d861f1d4d798282bd1c916e854f55da894e27dd6ef43ec40c13b3a56610' }, 'config/qubino/ZMNHVDx.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '84d8b8e248e7494d1b5ef403cc55c84a9c7e32c484b878c7d1103b89ba58fcff3a7dde495bbeb9d85c41dd2a029cd56da45502a4297f5c7897a9b9b2f5ca2af1' }, 'config/qubino/ZMNHWD1.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'f5833225b7eacbb94d422c08baf8b5b490425a09b15efedcbb08a92700c9918f926b1ecc1b68fdbc0cf1cd460a26f57806f9ed5a625f3147dd2859091ccf99ed' }, 'config/qubino/ZMNHXDx.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '318e982feee6e6df7c03da246678861e51eedf93463e134476af6fe5a0905624db9807b0b961147baf98982fdb4942a7ddf987dfeabb27241a39cf0e61d5d6ab' }, 'config/qubino/ZMNHYDx.xml' => { - 'Revision' => '2', - 'md5' => '1b5e30e6eddc0ffd67764eb7fcb8a22f86d6d124cfe822b1b7d98c372e268dae78c5b6332ab7fab85bbf8fbbf71c3b98532c8f02dfb95a065992df2dc4e10f60' + 'Revision' => 3, + 'md5' => '16a3c8fd7a16b89e67fd98751b34f133de7058e410eef2ee6ec76f19ca8ab6bfda4e52fd691b453bd64bb9f13768375e438a753c8ff54ef433a9989f1cf58595' }, 'config/qubino/ZMNHZDx.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'ca3b0bf60934b0454f40989634f116d0d4c486ff21db65d3cd2e0bedbf68aa1bfb8578337c8dfa250da807b2588b8331cfda2464a9c54fc8b9717d801d866538' }, + 'config/qubino/ZMNKADx.xml' => { + 'Revision' => 2, + 'md5' => 'ab2ef82408481add2f186cdff6d5316994da84f7d1f25727ec6538909d3b54503c44e90a0ec69f69fd9fa44a6e12fd7cdfa290b52d6b2af30ac5fbb99ca0bde7' + }, 'config/qubino/ZMNKIDx.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '437e4f7ed4ef2acb48885ad26bb2cdd374994d01e3d6d7f4ebb0003cb61ae6457ce96e4e9b44c96f4e464e9cdce74f0281f5929992054d62de2cf6bf4344d01b' }, 'config/quby/qb2.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '4104820b132cd14a69370bb2fbd53e4efb449066a5af14e34e26aa58e24622b55ae0f9a60227fb41b3f34fd473d07e265072649cd84e580890b081a96b8c92d8' }, 'config/rcs/em52-zw.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '665997cc9ad56208b97ad149daafb416f34794ab75ec470f419acbe7b15c20ca7510f4676f880a1effe8aa5642ebe3e31c84c618ccf3dbcd2c524e8f51dbe9a9' }, 'config/rcs/pm12-zw.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '49da27e755cdc5b06ce24bdda26c67bdfb968cb4b3562298b1394129768326bed2b8f9f0d972397c4c1b6bb98e101391f57b51aa47ebcd29e4a119504e98e13a' }, 'config/rcs/therm0005.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '9ce6aac1e07d1ea8b13f9c654fb9081152b3cb67dfe94a37afb681c1262cbb465e1801b0e2687b724e9cc888cfd35d71b390e4a04cadadabfa2bb3a602a5109c' }, 'config/rcs/therm0007.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '7c3ab99f982cbca19f26b3600abc65272950e253ed60777f32a501293e5643810b8ba7e172466e675455281c2a35bdea390a589d8d88fa5eac02703d4a6da504' }, 'config/rcs/therm0009.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '235f10fcbef7aa54b4bf933a67bcd8009fcdfc9cf66d2b6608f5027901311baa53678ac75506e88493f6027714ea8e9b8fbd42ffa040056428c49bd35a4ed7f4' }, 'config/remotec/bw8120eu.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'ed31f96f6d1f3b33a38d3ba6030aca32065ffb9a12c3447082a252698fb12753a425f96ee7c7039270cb7783be2686f02dd8e356695eb0d6db27d10385c6b8ac' }, 'config/remotec/zfm-80.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e3b6afb43fa679b8575f94b04caa71d8942ee15ddaf3fc70b15ae194af4d1b38ee710b3f7a0aa2ca9df19f2eebf4611a8927018a98639d3113399614c0704fec' }, 'config/remotec/zrc-100eu.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '5b840b10226c7f8e158623b9939ed2c8eee3aa1516de6a78c3f19ffd89fac6fade7acdd6da5a7aedd6394c019ead43902a586351f233740dfaca13f0e2a291cc' }, 'config/remotec/zrc-90.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '98ec165810b4b80a4d1e22957432046b7d61dcd6f4ceed69059d81ef1924124ac0f146a17192564b82011a37943aab7852ca97a512ef2dc8bbd1ce8a06f831dc' }, 'config/remotec/zts-110.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'fbac42632e85ac10571db822206b25d8c793e3a1c5e16783f822b094c68411f3742eea8d7b3657a2937f6c406e8184f624b80967acf3c1e31b8bc881dedc359c' }, 'config/remotec/zts-500.xml' => { - 'Revision' => '4', - 'md5' => '9897b20e553a4979e362a639021215c4377d8212c46de5f6929b37ec4ee810f82c9e4ed6958f3d4ceedee249966e623a21ef84059803e8fb5a68fe73c2df7348' + 'Revision' => 5, + 'md5' => 'baf19a0efb011787fe52ba1d4947a9a7affee275b48752084d343bddfcdce9c1e95c1457ba18d56652256d2ec93a9ddcf81c025ec760a3d20e351248b02dfc91' }, 'config/remotec/zurc.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '3ffabe2c9da2cd2f4f625682584003c5cdb4302e09a074783c718526b796eb394ed7dd020594167751f46a18894dd54b39d9c4e3b06c5cf64fcca738b4aaad4b' }, 'config/remotec/zxt-120.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => 'e7545d88ab5223f20078134b437c5e4f5c4e85a8201d92537cb159cc829b8b3fa17b84856cbe68a90e10793c155c4c711cf1675136ef82cc524240c44b4711c6' }, 'config/remotec/zxt-310.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '5de09bb88d9c21d33dca3ba693a7ae886e9a4476e50966861b581d22902636df68981a069debbec830380576f14a6676d7fd302f165553c9ba558a3803b8c991' }, 'config/remotec/zxt-600.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '55a6ccde16e43ecdeb440406354d761ae34cc7743d6cae4946e928e82826f8d4aafbfedfa5428cbde8a5eaa216c24b6c4417bb04edc28d118763b3c7defb8c1e' }, + 'config/ring/PIR-SS.xml' => { + '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' => '1', - 'md5' => 'b5394f171f4ac0441a01efa1b79945eb4d6a04aff4a7b91a5b25f6214c0d9615a5a88b30e13b523d5cfd252e4b8dd45fa30478cc1fbf78138a1b6ada34594aa2' + 'Revision' => 2, + 'md5' => '4b373a2ecad0691860087e425fea93ca9914330abef2b1b90ee39b4f8b6fd7298a832578640873ba6662383801e04601a8335062f20f4f787eff432c233ac31c' }, 'config/schlage/BE468ZP.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'cf44b4f428c8013422e2acc14b08bff8c2920e01bcaaef16ab7f655f14d38b6aa678d041bcf0910a44a90aea88b700634d6715df434e3870d70cc8226d0d4fa4' }, 'config/schlage/BE469.xml' => { - 'Revision' => '4', - 'md5' => 'f073cb3e764245fc7678d3b28426fc87008746c7a8e0ec85fdaaf735fa60d32109ca83883fdae89deef484729734faed302ef9ac6b6b506b62822581088f937e' + 'Revision' => 5, + 'md5' => 'aef83d8b45e8e4e4e66a4cac2c15f42bda6b1502dea3eca462854b387720571b11f6bc43b8c2684aa31886ab3c1e29d5e167308907080ecc6cf1e273b020bbf0' }, 'config/schlage/BE469ZP.xml' => { - 'Revision' => '2', - 'md5' => '3cef5311c3333e70360024e65d3d654051062df8493670fc10f81f0a30c5bea705a455ef87c8e606c6e6734bc024b672de22f96ee726472794e194d3263bf509' + 'Revision' => 3, + 'md5' => 'b0d05fedf2a1624f715fa0bb19927c29dc57cd3e17dea0697f410c562aece8405f968536f64f6de2a0b4d373ec39aeb13d2de77adcfdfbb7667e5e52b5137d8f' }, 'config/schlage/fe599.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '43f87fe9fd2b68691706d1cd0e7287c0a0340664071a14d0af6be62594b83ce4f8b0c335faed4201ff06a97745a3609c7df2412cca8394b70b2790346247e18b' }, 'config/schlagelink/41.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '48cb8a0b222d88bbdae8fe708670cf50f65a2eb412aca5ac01e21b330809a65e917963a63f7a969e5dd0250b2705363a2173f0641b21de44ce3d78f751c01156' }, 'config/schlagelink/itemp.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '4f3be313a7ae86c458518f7269cc51cc1df19d5900ae319c160c060dda74d57439c1d7f4b1ac881caaad1b726c3349a9c03a6c9d88103d864c31512c434908ab' }, 'config/schlagelink/minikeypad.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '8d4411fdc3a3e9b9f943be980cead9e614c02953c82b6066466db7838da7079c5ffbf000fef4a28d8a52a6286bf9811a9c2dab8c79f3670feeda80cc398df4e7' }, 'config/sensative/strips.xml' => { - 'Revision' => '15', + 'Revision' => 15, 'md5' => 'b9d3afd0be617a7a5d87ca36b07dc07ab3fd8dd2e31ffa99a519d4b94ea3ffd87b83e900c97e46a1fdb0dbfbd7b19a388354c1b8734fab5f96b64bad2e222fca' }, 'config/sensative/stripscomfort.xml' => { - 'Revision' => '14', + 'Revision' => 14, 'md5' => 'e76c9730441ff8cd2eba5b52bdbee17109157076813bc628b873abfedc23a62d2a44b27e5f2b3919f82cabe4df44f75f1abfd30494edf2198ffb88a23bb55b63' }, 'config/sercomm/sw-clp01-eu.xml' => { - 'Revision' => '1', + 'Revision' => 1, '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' => 2, + 'md5' => 'a0777d5e97620acc8b2b93df1adf51c848a45c379bd4e900ac3c9d9b8b61446273e2afb917faa71248c5ac467513b75050e0f6fbc5c3dc43f3aeadbd0eb85ca3' }, 'config/shenzen_neo/nas-ab01z.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '11df6cacff870c04677b5fc3a3828281d6e59506d09c1696ded074a4a607b87f8f96a42277dd409f64d3f8a91ced972f4ada74a32bfd304e07c19a1bef427a2c' }, + 'config/shenzen_neo/nas-cs01z.xml' => { + 'Revision' => 1, + 'md5' => 'ee9fd5fec7a2c813577ec684901961f3544684b85ad911002798cab563ee5dbab42014cf4ee41f240ae1a2e0095951cc31509a29e9aea602dfaeca8ee323d46d' + }, 'config/shenzen_neo/nas-ds01z.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'dfd1992f3edf1e2b0c8e4f4afb6d99575ccfe2ea7c0042668fedccf540993fa39743f9bf969a5038d57dca3e1ab0749d28e1cb0be35272c71248b82625f99c09' }, 'config/shenzen_neo/nas-pd01z.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'cbfd1220724bf3a460a69f6f278903ed790a8bf2dfd704e7a3d1e4c6467d1898a636ecd08bff6f8c1b855706268073648e8fb96f015bec3eec2b035c243089ed' }, 'config/shenzen_neo/nas-pd02z.xml' => { - 'Revision' => '2', - 'md5' => '506ecedfdee089d52ff07117b0208dfaa2aca5a72d71d07ee4ce417a7760a1c8bde3139a5cb82c950b240de0528a3382eb59ec30ed3a4e530f71a7b69f765ba1' + 'Revision' => 3, + 'md5' => '2e766627891bbf6bc2a188f6542acbea522b6bb0515c9179fb329a095fcdc9e381efcaa2ec712adfa60bc41f61d7c493ef90f3533760c8cfc0e6cef8bf5bd0bc' + }, + 'config/shenzen_neo/nas-pd03z.xml' => { + 'Revision' => 2, + 'md5' => '8ffca12a6fe2f5e1d524c36dc327023c29ab75b9f0291e706d449b78b3391d6d05456b330fdf21d0630acc102e8962f58aa615450ee53bcf7c6fdde8e8c3fc6c' }, 'config/shenzen_neo/nas-rc01z.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'd11ecf14ca8722b1e59f5cb5b20303be9bf66786e9a1d18038f2f0c760f8aeca673b31b993bda0369ed662cc96dfd3b314e8aff94e6fd8b1f2e981f51d90dbef' }, + 'config/shenzen_neo/nas-sc03ze.xml' => { + 'Revision' => 1, + 'md5' => '4c3dae5db0aa2bc3141fa3a5a41e94fc8c77988e269dbdc20b9017802e48809fbc0d572418035a913781eb5272d88365ba2bd316bec056a1e1b0459cb0b1e7b6' + }, 'config/shenzen_neo/nas-wr01z.xml' => { - 'Revision' => '5', - 'md5' => 'b98d36d9c20d3d44f588519b788ee9b58a51361b8185561810bd2e62691955316c46467c1d27ea75b458ea91491bd4c789f05ae4e2cbdf8a24bd03359bf04f11' + 'Revision' => 6, + 'md5' => 'ff8d4fa4f5296969721ed7f4a70fb471eca86a227194456a9efb4390b97a365840d171e89d683916e2afd722256e34063dd186f530770d26e110e0c8c3d6de0e' }, 'config/shenzen_neo/nas-wr01ze.xml' => { - 'Revision' => '1', - 'md5' => 'c17eb0cfba1f1b8f72da898a978fb0dcc0f2293f36c5d06e0967211f8f8d938707a94b1381bbfa9e6b5d6db9ca24240854d0a75e94994ca3a9708ff89643a524' + 'Revision' => 2, + 'md5' => '09b5e4644764a9d6fc5482d100ea24d81ec17adc3a436fc7ad0a11259a9b7a770cb7a29b01b6027df1a984ea13a9dde264a49acdb425597260c0699920ecb33d' }, 'config/shenzen_neo/nas-ws02z.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '7eccf1cbebc601996e0d6a552217c0b1dc8883cc78fdddb088303888d15832f7734d08f43c0991e8c9535a9dccc1e4b6f509802ed972477b4e45d499f45bbd5c' }, + 'config/shenzen_saykey/sk-3007-05.xml' => { + 'Revision' => 1, + 'md5' => '8f7ab98b4ab3f08f2d56bf834a8dc001973d58b06672ad049426a332b32bfb8072817ff714e22e89f57bcfda113651eb809c8d0e9010f035176feb5050af4bef' + }, + 'config/simon/10002020-13X.xml' => { + 'Revision' => 1, + 'md5' => 'd2164162991f71803dffa110f7a4c65fc181cb8563b63097f07362a1cac2e2ac4a88ec775dad27c875b82b28ac3197822c1a69e08ac0e21c7bf2aefe04107e22' + }, 'config/simon/10002034-13X.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '8bb9641949c548b619a32d4169dd3f3b14367fd98bcc0168ffb6402fab467d0821f1a011e5be2987eab93ccad87692aaea9a63ee568722dc05e69c4a22359485' }, 'config/simon/10002041-13X.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '0235c61b4520955df553e5ff62cefbb1a9afd866c63152503893d7bdcd98e9cf7d3a5f6dba69d3b307508ff5eca5cd33acaaf5e1716b89fdad748a9658af7445' }, + 'config/simon/10002080-13X.xml' => { + 'Revision' => 1, + 'md5' => '1a3e7b1f9a01b6f74c66c28754902b29aaee0da9ef780f720f5c3a41eab26d41b5998eb96fd94420c291b72331e2f4982cb092277d90d209fb0501ece3c613d7' + }, 'config/smartthings/pgc401m.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'a4e6e5c467601d118de320aaba5443876d46288e5eac6a0eda63bda9df4398efeee59385724c9ea007d0e3c91b8f7f6025157257a8995c79193a24938e8b1c7b' }, 'config/smartthings/sth-eth200.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '96f42e76742addc39b55aedb2c9341e15c3c9b90c6a5640209c5c47e47f93e3be3a2c588f20f7030b0cd83002dae36e207b0361ad320fd91b656638979ec519d' }, 'config/somfy/1811265_ZRTSI.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '7def694a6414e50226cf75191573d1fbe6a277cefa3170461e7f35301b968e28494cbd9217871ea6808206b9b417c696facf068f7a40892cb790d8b47d916fd8' }, 'config/steinel/is140-2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f5538ee6fa326e3f433ba8ad930b38dd8468db94991e8697555ff64c5546f47bd8fd086347e4c80e7f921206bc11b35238a4c78e73d6ea1e751b2f4c4849a884' }, 'config/steinel/l810-led-ihf.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '87ec6dd62e0f09a1c81645fdf0d54272791232633a2824f7571e2c44817cd418c4a5cd34b32141f36b8faee28eb93c63b22f514eb9d073d6d6055e24b99fa7c4' }, 'config/steinel/rs-led-d2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '9f3767724904d6ce85e7880dfdfec9c1f851638e0e35045790cc35589d0c9cd653fa176c48a7b818b5b8218c861e2903eb8adeb313a6d4e8bb9a33a61dc90976' }, 'config/steinel/xled-home-2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'abc03eeac10da39b8eb39afb7709ad9b44c819e6e0d43364599702a2d03f31bda2cfa395d72dbb5c4ece0e456370a1d39be41c5f99edc6fe3951fe512fe4162b' }, 'config/stelpro/stzw402.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'd50042a91f9b2fa3e64d618b8caa2f64ea8ec9c74e7fa82840556dc4d5a8ce1b8d8de840c008ff36619d0cb31393f066dd8a7c286af328ae66ffe0d6b5816221' }, + 'config/sunricher/srzv9001k12dimz4.xml' => { + 'Revision' => 1, + 'md5' => '6b8efae2405b4520f0825ea4959244b607cb52fc20b9b0d288e57626057484089968806e94d85e0bb45b35ddfa24622fbf3a5e9a5653cbae419bf94be56a5572' + }, + 'config/sunricher/srzv9001k12dimz5.xml' => { + 'Revision' => 1, + 'md5' => 'd14a319efd47406428b3cd0ad80956677c101dc153047aa431883ab88ba949bcdca9bb34a3d8bccaf093e80e4e49938380483f9cec54419138bab69fd9b586c4' + }, + 'config/sunricher/srzv9001k2dim.xml' => { + 'Revision' => 1, + 'md5' => '41d10f53ad831e0c2fc8f41fbac2c190f16b367c62b26477a2eb14e168e39af1adac020c25a1852544e142baba6e0f459429fb5f9fd05942e368039b08e28a4a' + }, + 'config/sunricher/srzv9001k4dim.xml' => { + 'Revision' => 1, + 'md5' => 'bf389f5cf7a510d2a12729585ea31ffead4f8a38ff7a4fa75c9aeb9ad7f6b1c748b5846b3e4270e381c266f091294c98431c7e7ffff582b4d8a3f2c73e54f460' + }, + 'config/sunricher/srzv9001k4dimg2.xml' => { + 'Revision' => 1, + 'md5' => '1885a9182c782e2dc890aba1e3ad0b6b1f7f409aec258809f21dae57e2c52d6e299eb1afc85c7ab86b642d59378fa50a445195b41432239c03c780885a67df25' + }, 'config/sunricher/srzv9001k8.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '3bac22970afda1d7629827057b92df49076f16258e76ee02674f0aaf0046a847642edb2c794740f2b8b1e9f38d0c2ec3932259b2803ff416f461757214bd0686' }, 'config/sunricher/srzv9001t4dimeu.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '211998372694c7f418d774c3dab739339f07167bb37faa972ce076e4de2391dcfe369ea1ea335d35a9db66f9dce34ea0ac3dad054f2f734c864e1462cb0f5d1d' }, + 'config/sunricher/srzv9001tccteu.xml' => { + 'Revision' => 1, + 'md5' => '9d5e9dcce650ab14636ee926ff6fbb2aad0ee2db3d661192c1d438184656b942dd1a68a14eb6c98337bb2fc021ad36e9755c1e9661b631cd83606e708d20212e' + }, 'config/sunricher/srzv9003t4rgbweu.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'a8754c4d9762da7d89d509475ce8f495f3e6d8a857c0dd38b10c0afbef1838ef96e417426edafb67403a011bc388c0dc80454fd64de935d9de38f642dc7bb9f6' }, + 'config/sunricher/srzv9100aa.xml' => { + 'Revision' => 1, + 'md5' => 'ce5b3d47d946173fbb99e491614fae353e440732c22bb7208655c44a7e5374ff49ed2ca8f6e39844e43eae88fde38a0aaa057b9770ad90cc8703355cb61c9706' + }, 'config/sunricher/srzv9101sachpeu.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'cfa47e28a8463496354a30d2998b5b11dab834b2ffa1b8e91a687d2ec4e9e41ef73d38d058dd60911aa69cb1164808da94b88d627744250e5abd576ea5f8d1fa' }, + 'config/sunricher/srzv9101sachpswitch.xml' => { + 'Revision' => 1, + 'md5' => '3851b6d24fdb58fe341d96c8faa16ed3f584e6a76b741ff8623b692082004602199196458bf1c123c5b1a54f1031369d6ab12db18925d240e277b27a1e307fdb' + }, + 'config/sunricher/zv2835rac.xml' => { + 'Revision' => 1, + 'md5' => 'ab598e4f8d3d9b654023428799d1a381f5fcd8d1cf1c97bde4512b8f310be7f026294f7798eb17cdcd07072058be5c8514fec23f5ef713dfbd3d4a5efaf4129d' + }, 'config/sunricher/zv9101.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'adb7779262cbea1eb2832f78e67b253cade102bcf7fd24aa14db965dbde11a8ff073ee654c7bf1af0c2c4f44507b97feffdf142ed8261ff163ada4d766b0d906' }, + 'config/sunricher/zv9101fa.xml' => { + 'Revision' => 1, + 'md5' => '1831cf691c954aa9546e99e5f8218b2d05d2aec3c850ee0bbf543947fbde7bfcf20b8e47fb232b4e43d2c6245aa15c94602b1efe48b1553b5daf75a6adeaa9cc' + }, 'config/swiid/swiidinter.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '66525f843d8663f34af93e65b6979059e294139474aa3f63974f1ddb5e29c431e87ae0deb220a40169028a5e9e7c8553d2b24587afb905703ff14ffb0e6252ab' }, 'config/swiid/swiidplug.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '1de9d7c988ff7753ddf936270a4a2abe3e1de1d5e7e546da3f7c02619dec1f875029af669c9607f398f2634833d0b1f40a34e72cf3c8b2898a644e46f980930c' }, + 'config/technisat/03009496.xml' => { + 'Revision' => 2, + 'md5' => '0bd0aad3afe3672049f401e80f8a37579716823e07c924ac161f865a453c2ed1a0013ebf018d841afe915cb95fa582dd74ebe12efae9bf7707d87205d9cc2df7' + }, + 'config/technisat/03009497.xml' => { + 'Revision' => 2, + 'md5' => '34c5e7919ba864bac4fa474f24c6d345cefb5bab88e0d1799a6001f6bec1d5aa928377ade84b8440aff857a1e1748939bd3c7a81eb3d0f541c98a83e54e48231' + }, + 'config/technisat/03009499.xml' => { + 'Revision' => 2, + 'md5' => '19371e5b7799c19a07ba4a16bf4d5c546e5fdc8ad9dd728276f415a930cae3c66f0249f310e8e331b4f0a6f9a7551f344cf8c11d699fc6f639c5f6450e356159' + }, 'config/telldus/tzdw100.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '00dafcf5a0bb13180d8cae532067dbd8833c65374d800fe02134732413c02ea4361a2597bfe4bb0466d0bdde93216cdea5474b8aecc3a9d644212f989401bbdd' }, 'config/telldus/tzwp100.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '632f66e9679859f3709bb56fd682d027b4076069e0ffde81fd5c90b01e5d1de5eaa4626a9dcba71257aae8abdc4454b50f4540802a273f4a1fdcd7fb53834d77' }, 'config/telldus/tzwp102.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f68f1a70eccd43240a3f87b647237abb39a5e66e33be3ad413dab356be16c6a4b6391cdfe3cd62d0bf02a0b4c10ea53d8724981040d7911d29fe3db560418cf7' }, 'config/there/800z.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'b065d0460c3da5e6bab88657b36d0c840db877c3c0c89c26313d7fd4bd12f7f57af2045cf89bcd689449989f0902f3ae3c6487fa9842dc45ca4538931e4a134e' }, + 'config/thermofloor/heatit-zdim.xml' => { + 'Revision' => 2, + 'md5' => '627f5761aa76f8e6046e8f0e82d4d6b50a1395f76afb05936ffc2b42f95fcc15d490b4f33d0083e2300d8de65a9b05e66ceea516776ca911c2473e8f46bdbd10' + }, + 'config/thermofloor/heatit021-v1.92.xml' => { + 'Revision' => 1, + 'md5' => '9839f51c4a1fd1c63a2d12843f73c341c329222b6032895805026752671aa2d58d7513c3d07cd7a9090e6dc7866faa19f7d7efb20f3e37253de0ad6ac1604dea' + }, 'config/thermofloor/heatit021.xml' => { - 'Revision' => '8', - 'md5' => 'f95dd11de5275bd29d3ba1f459bb463ab3d1280d82a23a428486abdd6be9244bb79ee66e2c0c1218512402f7acc8aebca81d9acf2ae674173e20b100002c276e' + 'Revision' => 9, + 'md5' => 'ccb695b1d42cabdee7c16337e69ddc495f7b7ce6bdb208be7f2158c273c566957299a0406037539830b47cdcc853f20f015a3c91976dbf9a76db672fbfd30faf' }, 'config/thermofloor/heatit056.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'd248ea9d79f6da656599bd9237cedde63af5d5789075d9dce1e355980053d8c25d7439a9de79778280f6086588b595f1bb91313e2ca0e42b9bf850c84c78a925' }, + 'config/thermofloor/heatit058.xml' => { + 'Revision' => 1, + 'md5' => '99b5766881cd43d7ca0bd73e3492c11fbbdbdbfc74a7783ba78e44aa6ec97b84d85ac675bf04ed33403abe4e2a9e741a25264d8a7699261038e7b9f143624336' + }, + 'config/thermofloor/heatit204.xml' => { + 'Revision' => 1, + 'md5' => '874663630d7aa76d3b5a0c4161cd8ead079ad2fe2dcbc8e9fbf8e6f6cc9acc21083e3441e3b36f6427459ce208cfc209304f3dca22b364e88adec579c79c4174' + }, + 'config/thermofloor/heatit20a.xml' => { + 'Revision' => 3, + 'md5' => 'c230bb573e64439be9d40720f4c5a72e901018078ab9d778aaac156666e248686706fe9d81f7b19a9ada774d9284a8a05c4ef1ef2aed9fb5a762c5c05ad1547e' + }, + 'config/thermofloor/heatitz4.xml' => { + 'Revision' => 2, + 'md5' => '2be6250742eb2ed930e0aef28513fb85da3dd37f00824a45c0a7af60797954ec46ccb32df5e4ec15a18e48e8cfe199639f77405d76749455d7850d0869be816b' + }, + 'config/thermofloor/heatitz8.xml' => { + 'Revision' => 2, + 'md5' => '1fd512de745b166c79f9d16742f87c10b86ef0c259b504f3d2cb9ac081c22ed96c292a68394a5a7be110aafffa67ee82cb54d2f28e6d1c48cf51ff26fc32428f' + }, + 'config/thermofloor/heatitzm.xml' => { + 'Revision' => 2, + 'md5' => 'f824351dae1ad1ff2401004f06b391c690f5c93a746b5ffec10bbe7e9ae27621144937d27e599d28335b050ed91780d930ac66d45d70b52fa1d4c1bcbc892d52' + }, 'config/trane/TZEMT400AB32MAA.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '84e5b345ec16db7d5f5c042815674ccc0ed3eba634ff2be99fbbd6b429fb27828a9a2353281bc2979ae43fbe0a86eebab4030b571d1cb03021ffeb678b7a2f04' }, 'config/trane/TZEMT400BB32MAA.xml' => { - 'Revision' => '3', - 'md5' => 'daac367b1c11b52d9dad3cf8432b9485d818618526b7062b3a6d72b699d473927338a7dffec29dcbaaff5cc90ba9261e361b3240eddaa4b72e7c00529ae69193' + 'Revision' => 4, + 'md5' => '79a3d5ac283db2152c07a4ea52077b69ea83ea0b82e01265367130a649bba9c506777ca0d226ce8d8f43d4b296d1315ff4fac3030b90f3b3f9b1419b186c3fc7' }, 'config/trane/TZEMT524AA21MA.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '46e5a829940d1de88207f121808a62c7526871d0740875ef2976f43eebaad9e629651c266bb458c8843da0b0e880532b59d707f93b3e57f2eec4dfbfd04b5853' }, 'config/vera/vera2.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'c50512474aef869c8f849d9ea2d42bd28dd89de9198c3bb6bc95eff66e67ac50567580ac5a3cc9bdfbdb49e9c1fe036d4e6e9a4987a1135dc5d2b3d0d537dbe7' }, 'config/vision/1701.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '2e37f21db47a1c100f6631e34105942ae05691ac224e955e9e46352ef8560e6890a59028573d202d8283684d5851b82be04e7b7d6baa2160489f2068c44b43c8' }, 'config/vision/brg1-433.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '7f9cdf21fd4ffcc3b7827c024564774932878b74faf99090321c4c9ee4f33c3326a66fc07a233e35ca058198af676a588f6f41e31506bbd1fdf14c59c2459a22' }, 'config/vision/zd2102.xml' => { - 'Revision' => '11', + 'Revision' => 11, 'md5' => 'd7308c12bd68905b955e4c729d96e0b3279e35a6fde798c6650f077a61391fcac0514c2ee54933c30c5bb1c73cdb85b00ae79c93fe7be775702070d2c84eefac' }, 'config/vision/zd2105us5.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'f520919cd7c02a48643a747d677ae891a96960ba84a4eaf90402a7d8a71f801fc924115f82190901eb658e49ad22d84ce5e7d407240b69be011b19373d10ab1d' }, 'config/vision/zd2201.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '3186992dc8f959af67ab8dceeedfd6831649dbddd1d15350a854467d6f0219bb4b6187a7a7995a21133f6d58abc6d77129dfd2a34301d17e8a7ef57b04ac1429' }, 'config/vision/zd2301.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '5dbdf01ac0aff9cfc9de47fd4bff6d26642b39a0f5b9a98f9590250f637510370ee3e00963cb04b3d1303bcb74228f3b7d2f307105f69cf6233c4fd9cfd4809e' }, 'config/vision/zf5201.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'ae0d16547c69a3cd390ef6604cf68d2b1645e5448e8bbaabbd47c0aa5b90403b21317aef9b2a72f59a48e99169aa2a5c644b3b075c7a067a9a4c199c9bb184b0' }, 'config/vision/zg8101.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '04753ab29b0e8827df53af191b9ea264a510c8b50265ffc75d4574d4d299d70fd790a1ae104c22f579ad56fffbf546cc2efbbf71e1c6ee3b6bd3eebdd3e788d2' }, 'config/vision/zl7101us.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '9ad8dfe8ea6f9c603a9a960103592fdd5988175b4cba7cc14b7b3728f5aee1d431d097f7728535078ea1da1866924490409fb016ce12ab17c52ee2a3d2ba14d7' }, 'config/vision/zl7201us.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '3aa000512b5312b89d6f7e940e632f39fecdedc5c6f1e11b1f87ba64aba6cddb4c6d96f0e27d8600f35840132110be105badbfaf6ee0c021f11c19b96d4627fb' }, 'config/vision/zl7261.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '6765ebbdad546c3073673446a63a7b2bda080ec606ea6fccfedd4a49d76d54c1e48fc3c030eb2e44060751012dfde67b564d6c68d9faf40673d846e45b914e47' }, 'config/vision/zl7431.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'd8437300f7533463a987685da39e0412fb06ab2615532125d51530c0aedff578164ec5cba8593b3bacdb7f15623ed11981f5a87169cf6d6068dfaac45810382e' }, 'config/vision/zl7432us.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'b4f4a7ffb44d5d9f74a9c3003b7cacaf1f28162555ac8134b187804369cdd23923e20e67f0a58141a79ac920a52294bc1ab560dd498530c3944507e144777054' }, 'config/vision/zm1601eu.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '607da3bf3b0504dcefd2d6fb9312b6c3d21c1cabe6d1acd77b595aa112b0545fc3ebbfece0089796e9ab0c0b41f254ff28ba2e9f63d4f94615c8251064305dc0' }, 'config/vision/zm1601eu5.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '0f55aead2c32ce164f7b85ce9a7ea7d718d152fd8840ed48446d662f32144f6f706e17411f6fb5048577bc98c4e6fbb3f4974f6924ed0370f08f8cd44681cfba' }, 'config/vision/zm1602eu.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '298b94cc8f598b57409cf5db86304998053639cd0d74a44dae05f5eb69ac4c91ce7e034a1295242fb2784b52271c2d885675b72e8693650b79cd19c437387113' }, 'config/vision/zm1602eu5.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '3e86f5e2fd0bd4a9e2ce3c433e017909efbf006ef6c542328907584531bda2f060264e2fa8c30a9b9d9ae644b772d67bff969a7067f8ca5669c789d360ed75a0' }, 'config/vision/zp3102.xml' => { - 'Revision' => '10', - 'md5' => '5ab5e86cad871f1ec4153281ad321e3f387f7e49c41f684c1c9503fe29644ae7b91493bc13a4be07c8325bca365aeb05eef22322d9acdf9dae5c84888b4a0833' + 'Revision' => 11, + 'md5' => 'df1f51d8eede5ca5f9fccd106a2b194692280eb96f383ebdfab4035632bccb3b6a8e0c1a0d44f3abbd7b18e9fcb3a91befae4cd35d7659937eff93116ae4526b' }, 'config/vision/zp3111.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => '54c3b06afbd284c83a935d5c18ccf21340d81e82188e5d88d1d52ffb655e0e5713aaadb28d9fbea214898dec7e2213816f3ef26dbae8aeafd923029b0ad8c46d' }, 'config/vision/zr1202us.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '30d2db0054dc86300fc2fb0cee751cd14d017781764f7894c9e5b1873bf1489ff6da0b5f99a29dc6ba5905a6e98b73544d4be7d79824c43c6e8ac9b261f42aea' }, 'config/vision/zs5101eu.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '0de921fc8bc657273b35f1b25aede7c0581ee93c0ea21ec57d4b1e61e405a88ed8a433f1ae465d2d0fc67f2e121ca274869eba7095e56f2e9a7b27c95f59be0d' }, 'config/vision/zs610eu.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '372e2a37557c006447508e63779aa958c8929369eb36c42c6207e048b28bf0c3322ed21f4a0ef8f58a5f0273e0799fd0b7f3d09fc2e0bcc944fb775888470e92' }, 'config/vision/zu1401jp.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '6c3a3747736a8dbc94d55649dfac4757ed1e7f178e17dcb88b0515ec105b97fd51322047d36540fddf38a8a8663f4c95bc2518dc022e4c6eb4a1aac940206b04' }, 'config/vitrum/vitrumI-Dimmer.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '238254ee2cc5feb7effc709529fd6b4811416284cc61215fda1384b72ccba66314b152af7684712044f1008a6b7c063ebcce7bed8872c1e657b6d1f8c048c18c' }, 'config/vitrum/vitrumI-Switch.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'd417c83e11e28dfed63f1b1d685ed8c662c1d9733ec7d1bd1a3d42d648ed70361ee4312f1408cdeedeb5ce8d984e3e7b38f4a11f194dc35eacf359f6121c6040' }, 'config/vitrum/vitrumII-Dimmer.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '94048824ccffd27bf338bec81a6ac3f4d1b8c0d1c7af307ad1059986f99daac77522976762d51c13fc51e4710c2f6ddde1194d0502364600afc396c3f22d4104' }, 'config/vitrum/vitrumII-RollerBlind.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'd75c8a6739a61a0aa1c1ff6c18a95c06688322ccd131aace8610270d31fa676c4c29d48107643a7ac735d39e1d5a77ad8465c31c47dbb2a7886eba551e8a7c9b' }, 'config/vitrum/vitrumII-Switch.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '1809b19960cae19a6a0216b9b63c30fac4fe14ec6f0a5a8f7b6346dff0461f6102d6ecb5e2ff069163e2b58b15b9b1ed9980623905a735273ca59b18f1915ed7' }, 'config/vitrum/vitrumIII-Dimmer.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '76f9677eade9e7eef265a6f907b4caf36fac9b6cd076a4ec92622f154416d224cd3e7747925edd95401d95cf1871a20d3d227a8f46fd7c6e090e757d1bbab080' }, 'config/vitrum/vitrumIII-Switch.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '76f9677eade9e7eef265a6f907b4caf36fac9b6cd076a4ec92622f154416d224cd3e7747925edd95401d95cf1871a20d3d227a8f46fd7c6e090e757d1bbab080' }, 'config/vitrum/vitrumIV-Switch.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '76f9677eade9e7eef265a6f907b4caf36fac9b6cd076a4ec92622f154416d224cd3e7747925edd95401d95cf1871a20d3d227a8f46fd7c6e090e757d1bbab080' }, 'config/vitrum/vitrumVI-Switch.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '76f9677eade9e7eef265a6f907b4caf36fac9b6cd076a4ec92622f154416d224cd3e7747925edd95401d95cf1871a20d3d227a8f46fd7c6e090e757d1bbab080' }, 'config/waynedalton/WDTC-20.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '8fe2947f5d31a45af7828268702bf711c46263cde3347ce3d6922558f17c98edc1e2aba13f17a4881f45d0dd0ac04977d61b3d417251d491b35e2f708fcb02cd' }, 'config/wenzhou/sm103.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '0544e08b5f873a7db0fa70d8771a7d6ab7e0ecaabccf7159fa56e5d4f65a6585e098763beed0cf8fb019c5ca10738194a18f73f66a5c29bd570cccd4f736e77b' }, 'config/wenzhou/tsp01.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'c724909421d7301bb7597c4360b536965ab40649a7db2a054fb19cfd2c29efa18ccd104217510de5814c1e75b387873a042ce6e0650a8a6f23219656ce29cc69' }, 'config/wenzhou/tz55.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'e0e3de23861dc7ff105f07dbaf1d24524364357fceaa2bf4b55f531b28e25f34ccb3f2af802cb1befe5bf41a6c0182f0865bb165c1d16482a68e6c046349b9fd' }, 'config/wenzhou/tz56.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '731e37f2f19957d94f40921c7eaf52c9a304676ea91684e3e59c09289b560f17c0ad9079fd9b1dff5054f40382d28cbfed1666bfb7f98b8d958928018c91a016' }, 'config/wenzhou/tz56s.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'd59911b92fff93130529f8c226086cdf87f13bb80e32c52adabc91d1bab6030015ccc6ed67c9dc1abdd549c239464b1729921f17ca9e4c45fea55ed135d52f00' }, 'config/wenzhou/tz57.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'f5010718afca7611e7c7318942c0d01211706a79c746ba0c7e2f3df5102d79b9edf2181e071f8134bc1f56b44020f87815b4e0a7b01dcd6b0f8af11ec92aac2c' }, 'config/wenzhou/tz65d.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'c142e5b7ca34ce4a6f4cbe242ea63587711cbcc454dae6ed28c923a894e11c97f06442523ffac17120c14376674d8eef286115960aac716383ae96afa0b15e4a' }, 'config/wenzhou/tz66d.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '33cdf081b881ef7aa341f5372fba065de24dafed60e3aafacabbd25d6092314d97bb56d89fbcfbd2e120531f99f94c68cd66892f12e26371689c6a07efe1b513' }, 'config/wenzhou/tz67.xml' => { - 'Revision' => '6', + 'Revision' => 6, 'md5' => 'b62b4bf4d4b4634460529385eb1427e7f396dfa29cf510a34e1cdb614cfff959ccf8bb5c5604b20bc012955581884efb8808e4c9d0d777976974ffa4f2bdbde2' }, 'config/wenzhou/tz68.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => '1692f252e441eaddb2efb274f9b6e9b43a60496f074c8e911c0b088699db1833164278bcffc2de8cdd2a0377f63ecd2c8ffb46655042350cd0db86731619a9ae' }, 'config/wenzhou/tz69.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => '6cab1b3be95dd92fca2e77e4c6320cb6783519302b711502fb5ba9012d8bd0c958c4759b7e3bfd613714f08d0b96c634aed3485a1217bb9277d4e2024666c05c' }, 'config/wenzhou/tz74.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'c468eb5e6431d0b66ff94aa18bbdfd225ef03a95dead2458078dca813074e34b206c949bb685c05a9767f24b508a22e6a1f1a702f1bd591256d1f236acfa2e92' }, + 'config/wenzhou/tz77.xml' => { + 'Revision' => 2, + 'md5' => 'df47b99135b0b10975717373c17b9feb15cfbba1a4c21542f939950495c5bab2f3fa285237bec363192728b8db58d4f9b00fe3d8d6f1ec9edf93517ae01a9025' + }, + 'config/wenzhou/tz78.xml' => { + 'Revision' => 2, + 'md5' => 'c796f0198124f0fe0f76e7e0f97956464f6360648ec188c09d54593cc41041b0a7b45ccc8416bb22aca8cd644b22976ab87ff7f121714a42f72d3414a5300d06' + }, 'config/wenzhou/tz79.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '2bf67e52c7ea08ed1669c002b5d80ca5101bf88c0c0565c1798d177f7b70a21981770fe89a36d07588c2e562a7728b543ae7e64167ad431a6028a6897dff0f3c' }, 'config/wenzhou/tz88.xml' => { - 'Revision' => '7', + 'Revision' => 7, 'md5' => '571fe7897815e47fd1b640f2bdd741b9daee276510e8348bd6e9002e018a8e16c67b00c94ca6f3d0ce15c847c61ae2eaa0146772b7a8c330aab89f31935ed3b3' }, + 'config/wenzhou/tze96.xml' => { + 'Revision' => 2, + 'md5' => 'f98162d3e7d76b60d0ca68d0ad1e4f5f66259b63715e54df16f19fd10b2c572660fbd60bda464e6e2940b1b66bedb442ce95fd75dd6ec48e4b200027d390887a' + }, 'config/widom/DRY.xml' => { - 'Revision' => '1', - 'md5' => '8f3fb96319999fadb2a0ec7f3f80266588c465a022ef2e51b51a8d2bdd431fdaafd705e412a087e71eca17b9bf8282dee4b66975832fc95619280e1f31708179' + 'Revision' => 2, + 'md5' => 'dbc331ba0466621612841ab0934432f3c8a7f8e1ba8747047c171690458ba373fc426d217749327f972de6e933d02270abd135a659f096b80968f55fe3d49848' }, 'config/widom/UBS104.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '6843a6c3d929b4e54a1751853942e8cea1651c35f39722138cd21ef47746103881cf18242518f9c459087950fdf29f051ec90b56f844b1290a47db87d8a2c47b' }, 'config/widom/UME304C_S.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'cedd8b8d8c43c00c9213bb2aec31fca162f048abe3543a7da214bf4ae65eab07429ad6ed9f4c973aa0da220d9243e348b8b4351367fc856b759cd275fb2fb1b7' }, + 'config/widom/UMS2.xml' => { + 'Revision' => 4, + 'md5' => 'd883982d6a5c8c9051c7b91f6085e305eec436c156acd84a29ec4828a2d59c09dd40713761b1af9715a255f54bb9e9f43ed62afb9d7a632a7b68262c08c7bfc0' + }, 'config/widom/WDS.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'd990ef6c9e1876d3980827d7e4c084eaab69193252d3bfe118a87b5307e0583eee1f5454ba2e46e89b805802274f857fecf3e9bd5797b3d59745292729f1d6d8' }, + 'config/widom/WDS2.xml' => { + 'Revision' => 3, + 'md5' => '65c40370ac24ad380200889852a6e11bac19b9602f55dbcbf9b60fbce1836402cae2bbfebc9c5fc70bae76696fc602e0e4f405ae6f7b6b8dc280a287dad5d63a' + }, + 'config/widom/WSP.xml' => { + 'Revision' => 3, + 'md5' => '51173e77f7aba3abd136dab21471d3331dd5a10b6e91bcf8b7196fc3406b2047cfaf4e29fc01e6d021e994ee94654e69568aea3054bbe74f31d0af2bd416a230' + }, + 'config/widom/WTED.xml' => { + 'Revision' => 4, + 'md5' => '810972a874be37eb108bad40e4ddcd4b55ed3a0deeead8e011cbfeb051df44015a6af4e298d4f206f4ee08fb83dcb7a29bf01c56d069c9748821235b4a6c36a3' + }, + 'config/wink/wnk-mot1.xml' => { + 'Revision' => 1, + 'md5' => 'ae12eda098b6ce28ea5dc3614d24217dad04f2ab61bf3c2da40dd23ad8d5ffe4cd65b7544f29b8ecc23e514f90df168152d133ac12c873657c0b09e44a77fbaf' + }, + 'config/wink/wnk-sir1p.xml' => { + 'Revision' => 1, + 'md5' => '352c501c9d64d726cc42a4fa095b659d22f83e57bea8062b247e35c0c30358a1e321c82a511eb45fd633fc0d3205f38e9a7353e8ecf5f00d572b2ec3c0776059' + }, 'config/zipato/MiniKeypad.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '1137446900ed79f792ef14c677ae4e99aeca62b977ef3acfcacf114784f6ea82f09471d7c498c977cdc92228cd3e2903afc445f0782186766c7ae21f2dfdf5cd' }, 'config/zipato/RGBBulb.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'f0e8b19dbd8492ebd4751bba9855b96592b66bfe06e6a8788831e35e89a46f14f5376651995f26c0f966e742ca880cfabb26af0696d632195711f554949cde7c' }, 'config/zipato/RGBBulb2.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '3ab581bd5b844da008afc3e601f8486bfd9b4e89f627d018b815955a4cee2a537eaa0ef2714ad4ec2e1b9ce69064e4942a29f1f8703f19181333e13b9ebc4c58' }, + 'config/zipato/ne-nas-ab02z.xml' => { + 'Revision' => 1, + 'md5' => 'ed86cd99980acd98951775be9759aaf72bd9641b1e773bb52ac4a9b4d5a0469cf04fe4ee3f722b5645c8e00268add952b41dc461c816b8ecde9d65f30f1d01bf' + }, 'config/zipato/pan04.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '73a6ceb8dfa58662bf133853184b7786947c388d9764cb4cc7a0d1ff9f02c1f6faff90ba930d6a96da589abb4c779003e1eeccedf9a663c3aa76408cd3e65d8d' }, 'config/zipato/vszd2102.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '3a083cdd5300ea8233f80836cf92de77f94789d3621a23911c103d8789ee0fbe46ee50f233e2f6109e0407e9b304072008cfb1efe7a7108194921cfd4e905511' }, 'config/zipato/zp3102.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '9b6e2104c590a66f620ce51e77f1318cb413f690600c932ded4d650e2cf822a085eb2ebb4f3293f6a48cb3c408d15b56e8496923143a5500921fc37b76bbe18d' }, 'config/zooz/zen06.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '3272685c18a9649d5b938ec972f5d4fc8732fe16a5f2d5e44c42a8023f2051e1844316320a0bb11bf5521dd0a854c8899384ca629725ddcbfec89432382d8ea1' }, 'config/zooz/zen07.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'c96f925786747bb098e22f5ecb671dc52d51736dd1e8c9a83ab84a77bcb9abe6bae0da1f86af32970da18b2f2f3e987bd2ce4bd1cfa5444f702b5ea32e2dca72' }, 'config/zooz/zen15.xml' => { - 'Revision' => '2', - 'md5' => 'fc33bd7bbe32980ecf49082d92401742b4c19a8906a736a99feb4ad5208cecda504f443aa3fcdb21fcea2de6702db39d876215fb3a2e827dfa7c05ce15568ddd' + 'Revision' => 3, + 'md5' => 'bee21869106becfe025892a4f334af530450727b855ffe9418a110bfec9534a4855eca768f82f2c2ad3a8c0e78caf0cba704f1570850bcb28dcb506a1eddb2bc' + }, + 'config/zooz/zen16.xml' => { + 'Revision' => 4, + 'md5' => 'eab1371f2c81d3dac4edeb677afee22eb684fa157dff73bc89e95c93e0421abd949c382b4f2d2203bf6d4d981e913ed31a3080e649694ffdba1ece3fdc46295a' + }, + 'config/zooz/zen17.xml' => { + 'Revision' => 2, + 'md5' => 'c2cf58e4c44fba886e7470fdcc8559ed3f574c3e6f34c02a87094d82df463db20996182e56df000eb211022259fcc7aa2a7cad0089783ed511422bccc287bff5' }, 'config/zooz/zen20.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'ac2c564441a145b501c401ca5fbb62806ae9d69a354bf2abebce04f50e6017c10d3f5d3465975ac771cb047b31d4bca8e1fde9f5c910a36d0bb958c3c1b57826' }, 'config/zooz/zen20v2.xml' => { - 'Revision' => '2', - 'md5' => 'fe4cd67071d47c622e7cb9ac99b34c43865d8387df219347649fc2ff2b73b11c8763450abee39fbf884be7297ca5b286276dd3b69b5bc93f38b068ef12911821' + 'Revision' => 3, + 'md5' => '24682aa795ae957a903d0b7f75dffa0262dcf814c5373eeb3fd09f6ef434713de998a70f928a0eb6d0c511d6f6011ae07dcbc2ea84b603b73820516daf4396b6' }, 'config/zooz/zen21.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '047323e2ed1a3e5340c052d40737fbdb2d2790e225e002f7d58fa3ad32f592da3e2a8cc0f3dd6cc6f06f7b6b505378482be7125db0a335e56abfd478c1cb398b' }, - 'config/zooz/zen21v2.xml' => { - 'Revision' => '1', - 'md5' => '3891b1d08aac36a6c37ac96fc3015947bd5119305c066600a3a16231f7c171dbc3893dbb1cf654d9fec1f2c01fd62e3d6cc635f2afd186e21f87ac8fe1529293' + 'config/zooz/zen21v3.xml' => { + 'Revision' => 4, + 'md5' => '4ae74d9c845b8404d9b87e42f30283452762f82842dac619e7f3ffa05b91dc191351c950caba575c2e05b60e9a47cd66d2ea8c6f361a8c15bc9efe939f81e434' }, 'config/zooz/zen22.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '5516b28dbfb21fa8057cf83e04100d7e27a74d6bffa5c8203924fbd139ffee8536552307cab4c29dc92f4d762c99e357eb5f86641bae733fb226d67fab9b09a5' }, 'config/zooz/zen22v2.xml' => { - 'Revision' => '2', - 'md5' => 'd10939f4a17ad1f5de7bf463da453c29320ad97c8abcb8cf8caaf8e6ea424600013db19a559853d7f526bb8eeeda21ea5dda8cebef538ac7a499375da56c91f4' + 'Revision' => 3, + 'md5' => 'ea4ce1d9800d69e6e04c4ea5317a891575ee49f751f66754f0371bf9894b19504b90b3c8e80c509a8f458d4e989111b21facc9d0cd6740dcddca1e01dc678039' }, 'config/zooz/zen23.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'b5609b50b35f91a81c21293680581f6a5bfd69cadfdc7987d41f1a41380553d7250fc4ac75d00b2057cf7ec54f5a8479bbe793682e2fcfe207aaa301889fce6f' }, + 'config/zooz/zen23v3.xml' => { + 'Revision' => 2, + 'md5' => '1760d6685c1bdba5b9dc8310c443d8b9badfe505c3b0800ece20d8951d6f35833036d883e4777635449754d0a97618e43d80af9b801d80512bf78b298a18d606' + }, 'config/zooz/zen24.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '818d5a9b417d8e06cb5864ec4859d82d30d5d2e6e91bbd4672ac3fd84b20585b8c8529c327e0ac49359276674bf7e3cd15f0ac4f812896bf334c24963f6abd18' }, + 'config/zooz/zen24v2.xml' => { + 'Revision' => 3, + 'md5' => '7e5357ea8bfd73d38525c27b3cacf13c157a5a036cc54b0f2cc01d04d39f0ac2c916e6ff28bdc3fd47a1fa2b2fdbf4c17ac89dc9adff4e36a245251ad896ad51' + }, 'config/zooz/zen25.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'a1518c737c0eb0b63610dca95ebece7df7be426b8b435fb309314f110c77ddb90146d0b03888d2ac03959b2bfd6d181edb7b71cc59c798aeb7f5fa341c4f0d4d' }, 'config/zooz/zen26.xml' => { - 'Revision' => 3, - 'md5' => 'a29881e72eda6f6f3e7f649efa58c8ee1ac1728985c37885a7fd987d9685bcb7d50306a6a72b42f3fad06935fa56f4cc3a50bbd13852d5d56ded7468897f2584' + 'Revision' => 4, + 'md5' => 'c416e8c6296c859c66c9b5817d2a0f4e2d805830019c215e95b4cc160bc95d040f974ee074c96a2c1318c790a91b152665372d2bdb1dcdeef86eef935f741c17' }, 'config/zooz/zen27.xml' => { + 'Revision' => 4, + 'md5' => '8ab077ab311e67b716860e7d96baea98c08409fdfd12c94e96c814c72e54581d4a418adc97ca25515f6fe9ff36b29abcbfd40a3c00e1220030d0db570d427a9a' + }, + 'config/zooz/zen30.xml' => { + 'Revision' => 3, + 'md5' => '97c43b277e9ebdad3e538426470242ddf856e571495ffefe0b64cf6d89c1d654412bfa59a12a89ec0970637ea8cc473d6693802bda28f2190176a007cb9b0f10' + }, + 'config/zooz/zen31.xml' => { 'Revision' => 2, - 'md5' => '5ab98630896730c87473681c02bb78e6774818f447d47abbc4da4b2c2560ed23b5e2b1ace378c942eb65ad8cb9794ebe038fc2bb68e62c3f6e1ece9df2fb05ef' + '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' => '26355b030745a5bac773e0aceaf8813c34f1137ba67e95e843455521a0035cbbe68d37aabfdfbeac0570d150c6a4756b6a93667f45e73339f612fb0aeb247843' }, 'config/zooz/zse08.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '78ecc6bdf19ce151d87a328949b4ce16e59bf6fd20212d4a7fd23da700e177259b8903bba5150f87c71f7d6ec4b140855c5337b5053cc358b0e2e8c5c41885dc' }, 'config/zooz/zse09.xml' => { - 'Revision' => '5', + 'Revision' => 5, 'md5' => 'b50183e6c2dc5b4b9678ad3cdd96198e14eaabecf9fcb02783b5027d6cfcc34761eb1ffcf7667e5775b989e624138bfedda4dd5f43caf95d33c5a3d85653fe63' }, 'config/zooz/zse18.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '463b089a041215ad5c2f2576648a86d2720477f4d1be2e9f3c8914a9c97e8bd31f1b9cd7300019ffc99224d8da0b9fcac78f2f134fbd6f1b68f3027f2392b753' }, 'config/zooz/zse19.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'b7115353998366bdeebc3f5bd1182429f1c20e0e229ca5e22eb7c6d5fb0e617f5af16faac078ed29c17db01c6e1338628a34d3434e8adfcd1cc08b8a59dcdd2c' }, 'config/zooz/zse29.xml' => { - 'Revision' => '2', - 'md5' => '8bbe07b8c1158ae2673a0f30be191749dd5b3f40a2043d056615c28fc4d7b9b3e69545ab0925da167080b52279a032d93e8112d3db132fb3a0fd5199c9037832' + 'Revision' => 3, + 'md5' => '0729a5e7b22ffb12c69f1ac58471a9098cceee7f88adb2f86955238a243c92178960e6d7e24c255d7e35ca09570dd60f1174a98ffbd01ccf2c1de92c8e28c675' }, 'config/zooz/zse30.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '16731dc5b294943714a42063058ccbbcaa230b5fc3afd675b9ce340dbfd6466f22ffea32b6d055d8ef5bac341bd86123b490e62509c71f97e0cd3a35a8e23203' }, 'config/zooz/zse33.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '0484e37ea12b75ce8b33c7501a01c8fd45c2176e0c696ceedc3699a94f71e8bc08ffd425336f58e202c8adba41799a4af0c39d6ca109ba501b5f2fdcffb301a4' }, 'config/zooz/zse40.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '1e0ed06e4dd0df87cd985a28f0f1d89c32da3f4568334aae4ed0cf8c525910d43b63a8f4a426d5ee1c71328dc75f58fe0d900d24594f19c7b6ef337a77452d4e' }, 'config/zwave.me/004001.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => '2c21b7cc32d607fcd6d52cd111dd083607ec2ee55317aa272a373b94aa7c7b78b21b84a98d9a658d89c2233e087413b9e20c7354baacef8a90db5662045d74a8' }, 'config/zwave.me/ZME_05431.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'f6cd0740204353d2dec8fd5e67077f5b7ec5733aff9e4e503c03915c8788f1c03b0efbb8ed70564d238f7e26efefb1cd1deb0c0bb8da210cb791268a4799f222' }, 'config/zwave.me/ZME_05461.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '4e05c806c751e12377a794db656f71237b85ba40d033061476b23b1d01578dde05a64a88aca5e5aa807df7d75387d6c961d6dd0f1b5efe40df8d05706d171ffa' }, 'config/zwave.me/ZME_06433.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'a287cd866ea81ee15fc83c90dc6bb3eb535d20f2e125697a97a468b73133aa4195674a0b72e118afc0618b11b7201dcce48e7ab91225df704fcd74fef19f4504' }, 'config/zwave.me/ZME_06436.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => 'ec35ca48a16152672c4aa51e07df7d31ef6e38b00fca9868bd5983a3e1a6d293247c90715e6e9e337b4eb0fcdb2a93a74fcf152038d65f5942d0e546dcc84c9f' }, 'config/zwave.me/ZME_064381.xml' => { - 'Revision' => '1', + 'Revision' => 1, 'md5' => 'e148ecf81796136f400a5753cd6f9ffebe3ce7c13bdfbeeecc91637eee63af3dbecaf6ba3f781080011c3151994d25c128810b80253bfda858e75dee7f313c0c' }, 'config/zwave.me/ZME_064435.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '1625ec4dcadb0ae4d8b949997385f4abe0f185cc3b615abd38164a2cf4b5761eaac9bdd6dba2e713c7cd4a9e866ad0b2f0ed41216c7591a3ed46057930627be8' }, 'config/zwave.me/ZME_KFOB-S.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '84e5940a1b022d8da95bfe9b067e17e66767fec7da22c1a1eb350fb3cf18eb175532fd062566f3c62b7a77e211f539ad17467c762b476c237cd1322fd52f74bb' }, 'config/zwave.me/ZME_RC2.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'bfa124a8d90e7fc44894600c87a61831533dd38a39af56190580464bbaf15665b677a7386266d050f607d138d672b0852c57fe4a1dc0ac188bfd26c2cfb437c7' }, 'config/zwave.me/ZME_WALLC-S.xml' => { - 'Revision' => '2', - 'md5' => '1eb2739365ccfacb4720a2c9698e8980a1afa9391486294870d577174bd4a3cdfaf8f235ae26215c9498990c81d7657df263c64a94261b0725f3fc3649f3dc36' + 'Revision' => 3, + 'md5' => '621f081bad2efff30abef88abeebf5e28f06c9bdd01d1dec4231839666d836e08e50a83a3b839322e8916135ba362175dd2727c05f1338dd4f4204e4608ffa24' }, 'config/zwave.me/ZME_WCD2.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => '90b00f6c25ecfabd71029590bb0d5a20bd2265297d01ba15ab11e4f9f2dd60d63bdb0cc1988bd03c1b1e3420622848bdc80c7b039a7b31c2a50627dd3c8d1e39' }, 'config/zwave.me/ZUno.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '74246cca8439213f22c8000f53c8f7599bbed8ce05fb24f8a28ed5179e1625d66584e5c0511a9ce2d464173816aad3dc9563f72042960ca2f129b36d4e48f6ef' }, 'config/zwave.me/iTemp.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'c5e295ffeab7af317db7d2a4a7b619d26dcf253e2a442c626564902bc0a99f40f009a309e1b25c87edd00296e080cb7c737a0abb7eb67e50f9544b0a5f8d2403' }, 'config/zwave.me/kfob.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'c071ad553d96f6e79fa728e477dd6a12c9ddb0a029f69657ee65a2438bf9fdf9c9ee3d57084e6ddfb35a346a54bb51a8c4708642b40968041df0a336a2cba0c4' }, 'config/zwave.me/popp_kfob-c.xml' => { - 'Revision' => '4', + 'Revision' => 4, 'md5' => '91374eeabd5950ae498de528ee67309d78f87bc3f2d18b1cb73e06f4d16f660eb0099e583397e7003a0a5796d7261f5f5ec029ba67ef683319d35c20da4cd3a3' }, + 'config/zwave.me/razberry.xml' => { + 'Revision' => 1, + 'md5' => '5cf581246a71ff451015e9286788a0398788494bdb014ea7a77efd3d4b36e6c7b5ebc9ce2e05471b35a59539ebb5927c75575d56bcb34d99a2e3507f492eb3c6' + }, 'config/zwave.me/zme_raz5.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'cdfd903cab9349c17a53d25ff8210d42a5f9197ebbe8fd3e654dc5caedc12c40e96bcb3fadfdf72ce3e05d59c99de58fd21858be5ca8c2c820c8d315e3415149' }, 'config/zwave.me/zweather.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => 'f40e1e4cc7ff539af041862b90ccf3dc74b602fab35a6e74a406694ee29283077d3b1cd418b52fcdee30269e75e9b07155024cb5f62cb1bebc5fef8012492ba6' }, 'config/zwp/PA-100.xml' => { - 'Revision' => '2', + 'Revision' => 2, 'md5' => '93335c6b61d2f82b5bdc62d2c48cb3e10bf2bad3ea39c9e0e7a82d191e3b74b23937f6c12f473fd5243983382337b23b652dc64f663c74fcd3f1a99be4e58ec4' }, 'config/zwp/WD-100.xml' => { - 'Revision' => '3', + 'Revision' => 3, 'md5' => 'a5bceb54540c63bdc1f03a6f26ff79f1bba74af878895b8f70cdfe67fdd6165c366b1cea29f44a5773549655012aafd4c8cd35fa78180ad30cd1b39de36357e6' } ); 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 15613e1a6d..07b494f866 100644 --- a/cpp/examples/MinOZW/Main.cpp +++ b/cpp/examples/MinOZW/Main.cpp @@ -100,7 +100,7 @@ void OnNotification // Must do this inside a critical section to avoid conflicts with the main thread pthread_mutex_lock( &g_criticalSection ); - std::cout << "Notification: " << _notification << std::endl; +// std::cout << "Notification: " << _notification << std::endl; switch( _notification->GetType() ) { @@ -235,6 +235,7 @@ void OnNotification } case Notification::Type_AwakeNodesQueried: + break; case Notification::Type_AllNodesQueried: case Notification::Type_AllNodesQueriedSomeDead: { diff --git a/cpp/src/CompatOptionManager.cpp b/cpp/src/CompatOptionManager.cpp index 569663017d..ef4271a5b2 100644 --- a/cpp/src/CompatOptionManager.cpp +++ b/cpp/src/CompatOptionManager.cpp @@ -59,6 +59,7 @@ 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 } }; uint16_t availableCompatFlagsCount = sizeof(availableCompatFlags) / sizeof(availableCompatFlags[0]); diff --git a/cpp/src/CompatOptionManager.h b/cpp/src/CompatOptionManager.h index e54ef00e73..237e11b204 100644 --- a/cpp/src/CompatOptionManager.h +++ b/cpp/src/CompatOptionManager.h @@ -68,6 +68,7 @@ namespace OpenZWave COMPAT_FLAG_VERIFYCHANGED, COMPAT_FLAG_NOT_ENABLECLEAR, COMPAT_FLAG_NOT_V1ALARMTYPES_ENABLED, + COMPAT_FLAG_NO_REFRESH_AFTER_SET, STATE_FLAG_CCVERSION, STATE_FLAG_STATIC_REQUESTS, STATE_FLAG_AFTERMARK, diff --git a/cpp/src/Driver.cpp b/cpp/src/Driver.cpp index 5ff486d20e..84124da920 100644 --- a/cpp/src/Driver.cpp +++ b/cpp/src/Driver.cpp @@ -89,7 +89,8 @@ using namespace OpenZWave; // 02: 01-12-2011 - Command class m_afterMark sense corrected, and attribute named to match. // 03: 08-04-2011 - Changed command class instance handling for non-sequential MultiChannel endpoints. // 04: 12-07-2019 - Changed Interview Order -uint32 const c_configVersion = 4; +// 05: 10-07-2020 - Duration ValueID's changed from Byte to Int. Invalidate Any previous caches. +uint32 const c_configVersion = 5; static char const* c_libraryTypeNames[] = { "Unknown", // library type 0 @@ -178,7 +179,6 @@ Driver::~Driver() // append final driver stats output to the log file LogDriverStatistics(); - // Save the driver config before deleting anything else bool save; if (Options::Get()->GetOptionAsBool("SaveConfiguration", &save)) @@ -202,14 +202,12 @@ Driver::~Driver() m_dnsThread->Stop(); m_dnsThread->Release(); - delete m_dns; m_driverThread->Stop(); m_driverThread->Release(); m_timerThread->Stop(); m_timerThread->Release(); - delete m_timer; m_sendMutex->Release(); @@ -296,6 +294,10 @@ Driver::~Driver() delete this->AuthKey; delete this->EncryptKey; delete this->m_httpClient; + delete this->m_timer; + delete this->m_dns; + + } //----------------------------------------------------------------------------- @@ -396,7 +398,7 @@ void Driver::DriverThreadProc(Internal::Platform::Event* _exitEvent) case -1: { // Wait has timed out - time to resend - if (m_currentMsg != NULL) + if (m_currentMsg != NULL && !m_currentMsg->isResendDuetoCANorNAK()) { Notification* notification = new Notification(Notification::Type_Notification); notification->SetHomeAndNodeIds(m_homeId, m_currentMsg->GetTargetNodeId()); @@ -412,6 +414,9 @@ void Driver::DriverThreadProc(Internal::Platform::Event* _exitEvent) case 0: { // Exit has been signalled + m_initMutex->Lock(); + m_exit = true; + m_initMutex->Unlock(); return; } case 1: @@ -468,6 +473,9 @@ void Driver::DriverThreadProc(Internal::Platform::Event* _exitEvent) if (Internal::Platform::Wait::Single(_exitEvent, 5000) == 0) { // Exit signalled. + m_initMutex->Lock(); + m_exit = true; + m_initMutex->Unlock(); return; } } @@ -477,6 +485,9 @@ void Driver::DriverThreadProc(Internal::Platform::Event* _exitEvent) if (Internal::Platform::Wait::Single(_exitEvent, 30000) == 0) { // Exit signalled. + m_initMutex->Lock(); + m_exit = true; + m_initMutex->Unlock(); return; } } @@ -513,10 +524,15 @@ bool Driver::Init(uint32 _attempts) // Controller opened successfully, so we need to start all the worker threads m_pollThread->Start(Driver::PollThreadEntryPoint, this); + // Send a NAK to the ZWave device uint8 nak = NAK; m_controller->Write(&nak, 1); + // Purge any Messages in the Serial Buffer + m_controller->Purge(); + + /* this kicks of the Init Sequence to get the Controller in shape. */ SendMsg(new Internal::Msg("FUNC_ID_ZW_GET_VERSION", 0xff, REQUEST, FUNC_ID_ZW_GET_VERSION, false), Driver::MsgQueue_Command); @@ -605,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; @@ -750,6 +767,11 @@ void Driver::WriteCache() Log::Write(LogLevel_Warning, "WARNING: Tried to write driver config with no home ID set"); return; } + if (m_exit) { + Log::Write(LogLevel_Info, "Skipping Cache Save as we are shutting down"); + return; + } + Log::Write(LogLevel_Info, "Saving Cache"); // Create a new XML document to contain the driver configuration TiXmlDocument doc; @@ -1432,6 +1454,8 @@ bool Driver::MoveMessagesToWakeUpQueue(uint8 const _targetNodeId, bool const _mo m_sendMutex->Unlock(); + CheckCompletedNodeQueries(); + // Move completed successfully return true; } @@ -1639,7 +1663,7 @@ bool Driver::ReadMsg() m_readAborts++; break; } - + /* this is the size of the packet */ m_controller->Read(&buffer[1], 1); m_controller->SetSignalThreshold(buffer[1]); if (Internal::Platform::Wait::Single(m_controller, 500) < 0) @@ -1715,21 +1739,25 @@ bool Driver::ReadMsg() if (m_currentMsg != NULL) { m_currentMsg->SetMaxSendAttempts(m_currentMsg->GetMaxSendAttempts() + 1); + m_currentMsg->setResendDuetoCANorNAK(); } else { Log::Write(LogLevel_Warning, "m_currentMsg was NULL when trying to set MaxSendAttempts"); Log::QueueDump(); } - WriteMsg("CAN"); + // Don't do WriteMsg("CAN"); here, the controller has data waiting to be handled by OZW. + // Instead, let the main loop handle incoming message first to flush the buffer(s) break; } case NAK: { Log::Write(LogLevel_Warning, GetNodeNumber(m_currentMsg), "WARNING: NAK received...triggering resend"); + m_currentMsg->SetMaxSendAttempts(m_currentMsg->GetMaxSendAttempts() + 1); + m_currentMsg->setResendDuetoCANorNAK(); m_NAKCnt++; - WriteMsg("NAK"); + //WriteMsg("NAK"); break; } @@ -4065,6 +4093,7 @@ bool Driver::EnablePoll(ValueID const &_valueId, uint8 const _intensity) notification->SetValueId(_valueId); QueueNotification(notification); Log::Write(LogLevel_Info, nodeId, "EnablePoll for HomeID 0x%.8x, value(cc=0x%02x,in=0x%02x,id=0x%02x)--poll list has %d items", _valueId.GetHomeId(), _valueId.GetCommandClassId(), _valueId.GetIndex(), _valueId.GetInstance(), m_pollList.size()); + WriteCache(); return true; } @@ -4120,6 +4149,7 @@ bool Driver::DisablePoll(ValueID const &_valueId) notification->SetValueId(_valueId); QueueNotification(notification); Log::Write(LogLevel_Info, nodeId, "DisablePoll for HomeID 0x%.8x, value(cc=0x%02x,in=0x%02x,id=0x%02x)--poll list has %d items", _valueId.GetHomeId(), _valueId.GetCommandClassId(), _valueId.GetIndex(), _valueId.GetInstance(), m_pollList.size()); + WriteCache(); return true; } } @@ -4227,6 +4257,7 @@ void Driver::SetPollIntensity(ValueID const &_valueId, uint8 const _intensity) value->Release(); m_pollMutex->Unlock(); + WriteCache(); } //----------------------------------------------------------------------------- @@ -4930,6 +4961,7 @@ void Driver::SetNodeManufacturerName(uint8 const _nodeId, string const& _manufac { node->SetManufacturerName(_manufacturerName); } + WriteCache(); } //----------------------------------------------------------------------------- @@ -4943,6 +4975,7 @@ void Driver::SetNodeProductName(uint8 const _nodeId, string const& _productName) { node->SetProductName(_productName); } + WriteCache(); } //----------------------------------------------------------------------------- @@ -4956,6 +4989,7 @@ void Driver::SetNodeName(uint8 const _nodeId, string const& _nodeName) { node->SetNodeName(_nodeName); } + WriteCache(); } //----------------------------------------------------------------------------- @@ -4969,6 +5003,7 @@ void Driver::SetNodeLocation(uint8 const _nodeId, string const& _location) { node->SetLocation(_location); } + WriteCache(); } //----------------------------------------------------------------------------- @@ -5888,7 +5923,6 @@ void Driver::NotifyWatchers() default: break; } - Log::Write(LogLevel_Detail, notification->GetNodeId(), "Notification: %s", notification->GetAsString().c_str()); Manager::Get()->NotifyWatchers(notification); @@ -6973,6 +7007,17 @@ bool Driver::startMFSDownload(string configfile) return m_httpClient->StartDownload(download); } +bool Driver::startDownload(string target, string file) +{ + Internal::HttpDownload *download = new Internal::HttpDownload(); + download->url = "http://download.db.openzwave.com/" + file; + download->filename = target; + download->operation = Internal::HttpDownload::Image; + Log::Write(LogLevel_Info, "Queuing download for %s (Node %d)", download->url.c_str(), download->node); + return m_httpClient->StartDownload(download); +} + + bool Driver::refreshNodeConfig(uint8 _nodeId) { Internal::LockGuard LG(m_nodeMutex); @@ -7045,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()); @@ -7090,6 +7136,10 @@ void Driver::processDownload(Internal::HttpDownload *download) else if (download->operation == Internal::HttpDownload::MFSConfig) { m_mfs->mfsConfigDownloaded(this, download->filename); + } + else if (download->operation == Internal::HttpDownload::Image) + { + m_mfs->fileDownloaded(this, download->filename); } } else @@ -7103,6 +7153,10 @@ void Driver::processDownload(Internal::HttpDownload *download) { m_mfs->mfsConfigDownloaded(this, download->filename, false); } + else if (download->operation == Internal::HttpDownload::Image) + { + m_mfs->fileDownloaded(this, download->filename, false); + } Notification* notification = new Notification(Notification::Type_UserAlerts); notification->SetUserAlertNotification(Notification::Alert_ConfigFileDownloadFailed); QueueNotification(notification); diff --git a/cpp/src/Driver.h b/cpp/src/Driver.h index a41fb20baa..cdca6b00a1 100644 --- a/cpp/src/Driver.h +++ b/cpp/src/Driver.h @@ -990,6 +990,7 @@ namespace OpenZWave bool setHttpClient(Internal::i_HttpClient *client); private: bool startConfigDownload(uint16 _manufacturerId, uint16 _productType, uint16 _productId, string configfile, uint8 node = 0); + bool startDownload(string target, string file); bool startMFSDownload(string configfile); bool refreshNodeConfig(uint8 node); void processDownload(Internal::HttpDownload *); diff --git a/cpp/src/Http.cpp b/cpp/src/Http.cpp index b2c2e37532..d37af82369 100644 --- a/cpp/src/Http.cpp +++ b/cpp/src/Http.cpp @@ -88,6 +88,7 @@ namespace OpenZWave case HttpDownload::File: case HttpDownload::Config: case HttpDownload::MFSConfig: + case HttpDownload::Image: /* make sure it has everything */ if ((transfer->url.size() <= 0) || (transfer->filename.size() <= 0)) { diff --git a/cpp/src/Http.h b/cpp/src/Http.h index 6f3128e7b7..21e082a82a 100644 --- a/cpp/src/Http.h +++ b/cpp/src/Http.h @@ -57,7 +57,8 @@ namespace OpenZWave None, File, Config, - MFSConfig + MFSConfig, + Image }; DownloadType operation; enum Status diff --git a/cpp/src/Localization.cpp b/cpp/src/Localization.cpp index aa65f6832d..96bf9f10ca 100755 --- a/cpp/src/Localization.cpp +++ b/cpp/src/Localization.cpp @@ -36,6 +36,7 @@ #include "command_classes/ThermostatSetpoint.h" #include "command_classes/SoundSwitch.h" #include "command_classes/Meter.h" +#include "command_classes/CentralScene.h" namespace OpenZWave { @@ -238,7 +239,7 @@ namespace OpenZWave { } - void Localization::ReadXML() + bool Localization::ReadXML() { // Parse the Z-Wave manufacturer and product XML file. string configPath; @@ -250,7 +251,7 @@ namespace OpenZWave { Log::Write(LogLevel_Warning, "Unable to load Localization file %s: %s", path.c_str(), pDoc->ErrorDesc()); delete pDoc; - return; + return false; } pDoc->SetUserData((void*) path.c_str()); Log::Write(LogLevel_Info, "Loading Localization File %s", path.c_str()); @@ -265,7 +266,7 @@ namespace OpenZWave { Log::Write(LogLevel_Info, "Error in Product Config file at line %d - missing Revision attribute", root->Row()); delete pDoc; - return; + return false; } m_revision = atol(str); } @@ -319,6 +320,7 @@ namespace OpenZWave } Log::Write(LogLevel_Info, "Loaded %s With Revision %d", pDoc->GetUserData(), m_revision); delete pDoc; + return true; } void Localization::ReadGlobalXMLLabel(const TiXmlElement *labelElement) @@ -551,6 +553,11 @@ namespace OpenZWave { return ((uint64) _node << 56 | (uint64) _commandClass << 48) | ((uint64) _index << 32) | ((uint64) _pos); } + /* indexes below 256 are the Scene Labels - Unique per device */ + if (_commandClass == Internal::CC::CentralScene::StaticGetCommandClassId() && (_index < 256)) + { + return ((uint64) _node << 56 | (uint64) _commandClass << 48 | (uint64) _index << 32 | (uint64) _pos); + } return ((uint64) _commandClass << 48) | ((uint64) _index << 32) | ((uint64) _pos); } @@ -642,6 +649,10 @@ namespace OpenZWave { unique = true; } + if ((ccID == Internal::CC::CentralScene::StaticGetCommandClassId()) && (indexId < 256)) + { + unique = true; + } uint64 key = GetValueKey(node, ccID, indexId, pos, unique); if (m_valueLocalizationMap.find(key) == m_valueLocalizationMap.end()) { @@ -658,6 +669,10 @@ namespace OpenZWave { unique = true; } + if ((ccID == Internal::CC::CentralScene::StaticGetCommandClassId()) && (indexId < 256)) + { + unique = true; + } uint64 key = GetValueKey(node, ccID, indexId, pos, unique); if (m_valueLocalizationMap.find(key) == m_valueLocalizationMap.end()) @@ -679,6 +694,10 @@ namespace OpenZWave { unique = true; } + if ((ccID == Internal::CC::CentralScene::StaticGetCommandClassId()) && (indexId < 256)) + { + unique = true; + } uint64 key = GetValueKey(node, ccID, indexId, pos, unique); if (m_valueLocalizationMap.find(key) == m_valueLocalizationMap.end()) @@ -696,6 +715,10 @@ namespace OpenZWave { unique = true; } + if ((ccID == Internal::CC::CentralScene::StaticGetCommandClassId()) && (indexId < 256)) + { + unique = true; + } uint64 key = GetValueKey(node, ccID, indexId, pos, unique); if (m_valueLocalizationMap.find(key) == m_valueLocalizationMap.end()) @@ -767,7 +790,9 @@ namespace OpenZWave return m_instance; } m_instance = new Localization(); - ReadXML(); + if (!ReadXML()) { + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot Create Localization Class! - Missing/Invalid Config File?"); + } Options::Get()->GetOptionAsString("Language", &m_selectedLang); return m_instance; } diff --git a/cpp/src/Localization.h b/cpp/src/Localization.h index 279f22ae03..06d184caa1 100755 --- a/cpp/src/Localization.h +++ b/cpp/src/Localization.h @@ -104,7 +104,7 @@ namespace OpenZWave Localization(); ~Localization(); - static void ReadXML(); + static bool ReadXML(); static void ReadCCXMLLabel(uint8 ccID, const TiXmlElement *labelElement); static void ReadXMLValue(uint8 node, uint8 ccID, const TiXmlElement *valueElement); static void ReadXMLVIDItemLabel(uint8 node, uint8 ccID, uint16 indexId, uint32 pos, const TiXmlElement *labelElement); diff --git a/cpp/src/Manager.cpp b/cpp/src/Manager.cpp index f6966b24c0..60c2a84cd6 100644 --- a/cpp/src/Manager.cpp +++ b/cpp/src/Manager.cpp @@ -195,8 +195,13 @@ Manager::Manager() : // when "make" was run. A Makefile gets this info from git describe --long --tags --dirty Log::Write(LogLevel_Always, "OpenZwave Version %s Starting Up", getVersionLongAsString().c_str()); Log::Write(LogLevel_Always, "Using Language Localization %s", Internal::Localization::Get()->GetSelectedLang().c_str()); - Internal::NotificationCCTypes::Create(); - Internal::SensorMultiLevelCCTypes::Create(); + if (!Internal::NotificationCCTypes::Create()) { + Log::Write(LogLevel_Error, "mgr, Cannot Create NotificationCCTypes!"); + } + if (!Internal::SensorMultiLevelCCTypes::Create()) { + Log::Write(LogLevel_Error, "mgr, Cannot Create SensorMultiLevelCCTypes!"); + } + } //----------------------------------------------------------------------------- @@ -3089,7 +3094,7 @@ bool Manager::SetValue(ValueID const& _id, string const& _value) case ValueID::ValueType_Schedule: case ValueID::ValueType_Button: { - OZW_ERROR(OZWException::OZWEXCEPTION_CANNOT_CONVERT_VALUEID, "ValueID passed to GetValueFloatPrecision is not a Decimal Value"); + OZW_ERROR(OZWException::OZWEXCEPTION_INVALID_VALUEID, "ValueID passed to SetValue cannot be set on Schedule or Button"); break; } } diff --git a/cpp/src/ManufacturerSpecificDB.cpp b/cpp/src/ManufacturerSpecificDB.cpp index 2b0afc9e86..77d670cf3c 100644 --- a/cpp/src/ManufacturerSpecificDB.cpp +++ b/cpp/src/ManufacturerSpecificDB.cpp @@ -69,8 +69,11 @@ namespace OpenZWave // Ensure the singleton instance is set s_instance = this; - if (!s_bXmlLoaded) - LoadProductXML(); + if (!s_bXmlLoaded) { + if (!LoadProductXML()) { + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot Load/Read ManufacturerSpecificDB! - Missing/Invalid Config File?"); + } + } } @@ -297,8 +300,11 @@ namespace OpenZWave void ManufacturerSpecificDB::checkConfigFiles(Driver *driver) { LockGuard LG(m_MfsMutex); - if (!s_bXmlLoaded) - LoadProductXML(); + if (!s_bXmlLoaded) { + if (!LoadProductXML()) { + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot Load/Read ManufacturerSpecificDB! - Missing/Invalid Config File?"); + } + } string configPath; Options::Get()->GetOptionAsString("ConfigPath", &configPath); @@ -310,29 +316,34 @@ namespace OpenZWave if (c->GetConfigPath().size() > 0) { string path = configPath + c->GetConfigPath(); - - /* check if we are downloading already */ - std::list::iterator iter = std::find(m_downloading.begin(), m_downloading.end(), path); - /* check if the file exists */ - if (iter == m_downloading.end() && !Internal::Platform::FileOps::Create()->FileExists(path)) - { - Log::Write(LogLevel_Warning, "Config File for %s does not exist - %s", c->GetProductName().c_str(), path.c_str()); - /* try to download it */ - if (driver->startConfigDownload(c->GetManufacturerId(), c->GetProductType(), c->GetProductId(), path)) + if (!Internal::Platform::FileOps::Create()->FileExists(path)) { + /* check if we are downloading already */ + std::list::iterator iter = std::find(m_downloading.begin(), m_downloading.end(), path); + /* check if the file exists */ + if (iter == m_downloading.end()) { - m_downloading.push_back(path); + Log::Write(LogLevel_Warning, "Config File for %s does not exist - %s", c->GetProductName().c_str(), path.c_str()); + /* try to download it */ + if (driver->startConfigDownload(c->GetManufacturerId(), c->GetProductType(), c->GetProductId(), path)) + { + m_downloading.push_back(path); + } + else + { + Log::Write(LogLevel_Warning, "Can't download file %s", path.c_str()); + Notification* notification = new Notification(Notification::Type_UserAlerts); + notification->SetUserAlertNotification(Notification::Alert_ConfigFileDownloadFailed); + driver->QueueNotification(notification); + } } - else + else if (iter != m_downloading.end()) { - Log::Write(LogLevel_Warning, "Can't download file %s", path.c_str()); - Notification* notification = new Notification(Notification::Type_UserAlerts); - notification->SetUserAlertNotification(Notification::Alert_ConfigFileDownloadFailed); - driver->QueueNotification(notification); + Log::Write(LogLevel_Debug, "Config file for %s already queued", c->GetProductName().c_str()); } } - else if (iter != m_downloading.end()) + else { - Log::Write(LogLevel_Debug, "Config file for %s already queued", c->GetProductName().c_str()); + checkConfigFileContents(driver, path); } } } @@ -362,6 +373,64 @@ namespace OpenZWave } } + void ManufacturerSpecificDB::checkConfigFileContents(Driver *driver, string file) + { + string configPath; + Options::Get()->GetOptionAsString("ConfigPath", &configPath); + TiXmlDocument* pDoc = new TiXmlDocument(); + if (!pDoc->LoadFile(file.c_str(), TIXML_ENCODING_UTF8)) + { + delete pDoc; + Log::Write(LogLevel_Info, "Unable to load %s", file.c_str()); + return; + } + pDoc->SetUserData((void *) file.c_str()); + TiXmlElement const* root = pDoc->RootElement(); + + TiXmlElement const* metaDataElement = root->FirstChildElement("MetaData"); + if (metaDataElement) { + TiXmlElement const* metaDataItem = metaDataElement->FirstChildElement("MetaDataItem"); + while (metaDataItem) { + char const *str = metaDataItem->Attribute("name"); + if (str && !strcmp(str, "ProductPic")) + { + str = metaDataItem->GetText(); + if (str) + { + string imagefile = configPath + str; + if (!Internal::Platform::FileOps::Create()->FileExists(imagefile)) + { + /* check if we are downloading already */ + std::list::iterator iter = std::find(m_downloading.begin(), m_downloading.end(), imagefile); + /* check if the file exists */ + if (iter == m_downloading.end()) + { + if (driver->startDownload(imagefile, metaDataItem->GetText())) { + Log::Write(LogLevel_Info, "Missing Picture %s - Starting Download", imagefile.c_str()); + m_downloading.push_back(imagefile); + } + } + } + } + } + metaDataItem = metaDataItem->NextSiblingElement("MetaDataItem"); + } + } + } + + void ManufacturerSpecificDB::fileDownloaded(Driver *, string file, bool success) + { + /* check if we are downloading already */ + std::list::iterator iter = std::find(m_downloading.begin(), m_downloading.end(), file); + if (iter != m_downloading.end()) + { + m_downloading.erase(iter); + } + checkInitialized(); + } + + + void ManufacturerSpecificDB::mfsConfigDownloaded(Driver *driver, string file, bool success) { /* check if we are downloading already */ @@ -372,7 +441,9 @@ namespace OpenZWave if (success) { UnloadProductXML(); - LoadProductXML(); + if (!LoadProductXML()) { + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot Load/Read ManufacturerSpecificDB! - Missing/Invalid Config File?"); + } checkConfigFiles(driver); } } @@ -405,8 +476,11 @@ namespace OpenZWave std::shared_ptr ManufacturerSpecificDB::getProduct(uint16 _manufacturerId, uint16 _productType, uint16 _productId) { - if (!s_bXmlLoaded) - LoadProductXML(); + if (!s_bXmlLoaded) { + if (!LoadProductXML()) { + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot Load/Read ManufacturerSpecificDB! - Missing/Invalid Config File?"); + } + } // Try to get the real manufacturer and product names map::iterator mit = s_manufacturerMap.find(_manufacturerId); diff --git a/cpp/src/ManufacturerSpecificDB.h b/cpp/src/ManufacturerSpecificDB.h index 3d05e24bcc..04cecee3cb 100644 --- a/cpp/src/ManufacturerSpecificDB.h +++ b/cpp/src/ManufacturerSpecificDB.h @@ -142,6 +142,7 @@ namespace OpenZWave void checkConfigFiles(Driver *); void configDownloaded(Driver *, string file, uint8 node, bool success = true); void mfsConfigDownloaded(Driver *, string file, bool success = true); + void fileDownloaded(Driver *, string file, bool success = true); bool isReady(); bool updateConfigFile(Driver *, Node *); bool updateMFSConfigFile(Driver *); @@ -151,6 +152,7 @@ namespace OpenZWave void LoadConfigFileRevision(ProductDescriptor *product); ManufacturerSpecificDB(); ~ManufacturerSpecificDB(); + void checkConfigFileContents(Driver *driver, string file); Internal::Platform::Mutex* m_MfsMutex; /**< Mutex to ensure its accessed by a single thread at a time */ diff --git a/cpp/src/Msg.cpp b/cpp/src/Msg.cpp index 80357e93cb..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,9 +51,9 @@ 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_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) { if (_bReplyRequired) { @@ -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 97f2a5ac2f..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,14 @@ namespace OpenZWave { m_homeId = homeId; } - ; + void setResendDuetoCANorNAK() + { + m_resendDuetoCANorNAK = true; + } + bool isResendDuetoCANorNAK() + { + return m_resendDuetoCANorNAK; + } /** Returns a pointer to the driver (interface with a Z-Wave controller) * associated with this node. @@ -224,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; @@ -242,12 +252,15 @@ 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; uint8 m_nonce[8]; uint32 m_homeId; static uint8 s_nextCallbackId; // counter to get a unique callback id + /* we are resending this message due to CAN or NAK messages */ + bool m_resendDuetoCANorNAK; }; } // namespace Internal } // namespace OpenZWave diff --git a/cpp/src/Node.cpp b/cpp/src/Node.cpp index 283e4c569a..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" @@ -92,7 +93,7 @@ map Node::s_deviceTypeClasses; map Node::s_nodeTypes; static char const* c_queryStageNames[] = -{ "None", "ProtocolInfo", "Probe", "WakeUp", "ManufacturerSpecific1", "NodeInfo", "NodePlusInfo", "SecurityReport", "ManufacturerSpecific2", "Versions", "Instances", "Static", "CacheLoad", "Associations", "Neighbors", "Session", "Dynamic", "Configuration", "Complete" }; +{ "None", "ProtocolInfo", "Probe", "WakeUp", "NodeInfo", "NodePlusInfo", "SecurityReport", "Versions", "ManufacturerSpecific1", "Instances", "ManufacturerSpecific2", "Static", "CacheLoad", "Associations", "Neighbors", "Session", "Dynamic", "Configuration", "Complete" }; //----------------------------------------------------------------------------- // @@ -112,10 +113,8 @@ Node::Node(uint32 const _homeId, uint8 const _nodeId) : memset(m_rssi_3, 0, sizeof(m_rssi_3)); memset(m_rssi_4, 0, sizeof(m_rssi_4)); memset(m_rssi_5, 0, sizeof(m_rssi_5)); - /* Add NoOp Class */ - AddCommandClass(Internal::CC::NoOperation::StaticGetCommandClassId()); - /* Add ManufacturerSpecific Class */ + AddCommandClass(Internal::CC::NoOperation::StaticGetCommandClassId()); AddCommandClass(Internal::CC::ManufacturerSpecific::StaticGetCommandClassId()); } @@ -206,6 +205,7 @@ void Node::AdvanceQueries() if (!ProtocolInfoReceived()) { Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_ProtocolInfo"); + Internal::Msg* msg = new Internal::Msg("Get Node Protocol Info", m_nodeId, REQUEST, FUNC_ID_ZW_GET_NODE_PROTOCOL_INFO, false); msg->Append(m_nodeId); GetDriver()->SendMsg(msg, Driver::MsgQueue_Query); @@ -223,6 +223,7 @@ void Node::AdvanceQueries() case QueryStage_Probe: { Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_Probe"); + // // Send a NoOperation message to see if the node is awake // and alive. Based on the response or lack of response @@ -264,58 +265,15 @@ void Node::AdvanceQueries() else { // this is not a sleeping device, so move to the ManufacturerSpecific1 stage - m_queryStage = QueryStage_ManufacturerSpecific1; - m_queryRetries = 0; - } - break; - } - case QueryStage_ManufacturerSpecific1: - { - // Obtain manufacturer, product type and product ID code from the node device - // Manufacturer Specific data is requested before the other command class data so - // that we can modify the supported command classes list through the product XML files. - Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_ManufacturerSpecific1"); - - /* if its the Controller, then we can just load up the XML straight away */ - if (GetDriver()->GetControllerNodeId() == m_nodeId) - { - Log::Write(LogLevel_Detail, m_nodeId, "Load Controller Manufacturer Specific Config"); - Internal::CC::ManufacturerSpecific* cc = static_cast(GetCommandClass(Internal::CC::ManufacturerSpecific::StaticGetCommandClassId())); - if (cc) - { - cc->SetInstance(1); - cc->SetProductDetails(GetDriver()->GetManufacturerId(), GetDriver()->GetProductType(), GetDriver()->GetProductId()); - cc->LoadConfigXML(); - } m_queryStage = QueryStage_NodeInfo; m_queryRetries = 0; } - else - { - Log::Write(LogLevel_Detail, m_nodeId, "Checking for ManufacturerSpecific CC and Requesting values if present on this node"); - /* if the ManufacturerSpecific CC was not specified in the ProtocolInfo packet for the Generic/Specific Device type (as part a Mandatory Command Class) - * then this will fail, but we will retry in ManufacturerSpecific2 - * - * XXX TODO: This could probably be reworked a bit to make this a Mandatory CC for all devices regardless - * of Generic/Specific Type. Then we can drop the Second ManufacturerSpecific QueryStage later. - */ - Internal::CC::ManufacturerSpecific* cc = static_cast(GetCommandClass(Internal::CC::ManufacturerSpecific::StaticGetCommandClassId())); - if (cc) - { - cc->SetInstance(1); - m_queryPending = cc->RequestState(Internal::CC::CommandClass::RequestFlag_Static, 1, Driver::MsgQueue_Query); - addQSC = m_queryPending; - } - if (!m_queryPending) - { - m_queryStage = QueryStage_NodeInfo; - m_queryRetries = 0; - } - } break; } case QueryStage_NodeInfo: { + + Log::Write(LogLevel_Info, GetNodeId(), "NodeInfo Stage - NodeInfoRecieved %d - NotInfoSupported %d", NodeInfoReceived(), m_nodeInfoSupported); if (!NodeInfoReceived() && m_nodeInfoSupported && (GetDriver()->GetControllerNodeId() != m_nodeId)) { // obtain from the node a list of command classes that it 1) supports and 2) controls (separated by a mark in the buffer) @@ -356,6 +314,7 @@ void Node::AdvanceQueries() break; } + case QueryStage_SecurityReport: { /* For Devices that Support the Security Class, we have to request a list of @@ -378,80 +337,92 @@ void Node::AdvanceQueries() else { // this is not a Security Device, so move onto the next querystage - m_queryStage = QueryStage_ManufacturerSpecific2; + m_queryStage = QueryStage_Versions; m_queryRetries = 0; } break; } - case QueryStage_ManufacturerSpecific2: + + case QueryStage_Versions: { - if (!m_manufacturerSpecificClassReceived) + // Get the version information of CommandClasses that have not had their Version Retrieved So far. (most Likely ManufacturerSpecific) + Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_Versions"); + if (GetDriver()->GetControllerNodeId() == m_nodeId) { - // Obtain manufacturer, product type and product ID code from the node device - // Manufacturer Specific data is requested before the other command class data so - // that we can modify the supported command classes list through the product XML files. - Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_ManufacturerSpecific2"); - Internal::CC::ManufacturerSpecific* cc = static_cast(GetCommandClass(Internal::CC::ManufacturerSpecific::StaticGetCommandClassId())); - /* don't do this if its the Controller Node */ - if (cc && (GetDriver()->GetControllerNodeId() != m_nodeId)) + m_queryStage = QueryStage_ManufacturerSpecific1; + m_queryRetries = 0; + break; + } + Internal::CC::Version* vcc = static_cast(GetCommandClass(Internal::CC::Version::StaticGetCommandClassId())); + if (!vcc) + { + vcc = static_cast(AddCommandClass(Internal::CC::Version::StaticGetCommandClassId())); + } + Log::Write(LogLevel_Info, m_nodeId, "Requesting Versions"); + for (map::const_iterator it = m_commandClassMap.begin(); it != m_commandClassMap.end(); ++it) + { + Internal::CC::CommandClass* cc = it->second; + Log::Write(LogLevel_Info, m_nodeId, "Requesting Versions for %s - Max: %d - Current %d", cc->GetCommandClassName().c_str(), cc->GetMaxVersion(), cc->GetVersion()); + + if (cc->GetMaxVersion() > 1 && cc->GetVersion() == 0) { - cc->SetInstance(1); - m_queryPending = cc->RequestState(Internal::CC::CommandClass::RequestFlag_Static, 1, Driver::MsgQueue_Query); - addQSC = m_queryPending; + // Get the version for each supported command class that + // we have implemented at greater than version one. + m_queryPending |= vcc->RequestCommandClassVersion(it->second); } - if (!m_queryPending) + else if (cc->GetVersion() == 0) { - m_queryStage = QueryStage_Versions; - m_queryRetries = 0; + // set the Version to 1 + cc->SetVersion(1); } } - else + addQSC = m_queryPending; + // advance to Instances stage when finished + if (!m_queryPending) { - Internal::CC::ManufacturerSpecific* cc = static_cast(GetCommandClass(Internal::CC::ManufacturerSpecific::StaticGetCommandClassId())); - if (cc) - { - cc->SetInstance(1); - cc->ReLoadConfigXML(); - } - m_queryStage = QueryStage_Versions; + m_queryStage = QueryStage_ManufacturerSpecific1; m_queryRetries = 0; } break; } - case QueryStage_Versions: + case QueryStage_ManufacturerSpecific1: { - // Get the version information (if the device supports COMMAND_CLASS_VERSION - Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_Versions"); - Internal::CC::Version* vcc = static_cast(GetCommandClass(Internal::CC::Version::StaticGetCommandClassId())); - if (vcc) + // Obtain manufacturer, product type and product ID code from the node device + // Manufacturer Specific data is requested before the other command class data so + // that we can modify the supported command classes list through the product XML files. + Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_ManufacturerSpecific1"); + + /* if its the Controller, then we can just load up the XML straight away */ + if (GetDriver()->GetControllerNodeId() == m_nodeId) { - Log::Write(LogLevel_Info, m_nodeId, "Requesting Versions"); - for (map::const_iterator it = m_commandClassMap.begin(); it != m_commandClassMap.end(); ++it) + Log::Write(LogLevel_Detail, m_nodeId, "Load Controller Manufacturer Specific Config"); + Internal::CC::ManufacturerSpecific* cc = static_cast(GetCommandClass(Internal::CC::ManufacturerSpecific::StaticGetCommandClassId())); + if (cc) { - Internal::CC::CommandClass* cc = it->second; - Log::Write(LogLevel_Info, m_nodeId, "Requesting Versions for %s", cc->GetCommandClassName().c_str()); - - if (cc->GetMaxVersion() > 1) - { - // Get the version for each supported command class that - // we have implemented at greater than version one. - m_queryPending |= vcc->RequestCommandClassVersion(it->second); - } - else - { - // set the Version to 1 - cc->SetVersion(1); - } + cc->SetInstance(1); + cc->SetProductDetails(GetDriver()->GetManufacturerId(), GetDriver()->GetProductType(), GetDriver()->GetProductId()); + cc->LoadConfigXML(); } - addQSC = m_queryPending; - } - // advance to Instances stage when finished - if (!m_queryPending) - { m_queryStage = QueryStage_Instances; m_queryRetries = 0; } + else + { + Log::Write(LogLevel_Detail, m_nodeId, "Checking for ManufacturerSpecific CC and Requesting values if present on this node"); + Internal::CC::ManufacturerSpecific* cc = static_cast(GetCommandClass(Internal::CC::ManufacturerSpecific::StaticGetCommandClassId())); + if (cc) + { + cc->SetInstance(1); + m_queryPending = cc->Init(); + addQSC = m_queryPending; + } + if (!m_queryPending) + { + m_queryStage = QueryStage_Instances; + m_queryRetries = 0; + } + } break; } case QueryStage_Instances: @@ -475,7 +446,7 @@ void Node::AdvanceQueries() // when done, advance to the Static stage if (!m_queryPending) { - m_queryStage = QueryStage_Static; + m_queryStage = QueryStage_ManufacturerSpecific2; m_queryRetries = 0; Log::Write(LogLevel_Info, m_nodeId, "Essential node queries are complete"); @@ -485,16 +456,47 @@ void Node::AdvanceQueries() } break; } + case QueryStage_ManufacturerSpecific2: + { + if (!m_manufacturerSpecificClassReceived) + { + // Obtain manufacturer, product type and product ID code from the node device + // Manufacturer Specific data is requested before the other command class data so + // that we can modify the supported command classes list through the product XML files. + Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_ManufacturerSpecific2"); + Internal::CC::ManufacturerSpecific* cc = static_cast(GetCommandClass(Internal::CC::ManufacturerSpecific::StaticGetCommandClassId())); + /* don't do this if its the Controller Node */ + if (cc && (GetDriver()->GetControllerNodeId() != m_nodeId)) + { + cc->SetInstance(1); + m_queryPending = cc->RequestState(Internal::CC::CommandClass::RequestFlag_Static, 1, Driver::MsgQueue_Query); + addQSC = m_queryPending; + } + if (!m_queryPending) + { + m_queryStage = QueryStage_Static; + m_queryRetries = 0; + } + } + else + { + m_queryStage = QueryStage_Static; + m_queryRetries = 0; + } + break; + } case QueryStage_Static: { // Request any other static values associated with each command class supported by this node // examples are supported thermostat operating modes, setpoints and fan modes Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_Static"); - /* Dont' do this for Controller Nodes */ - if (GetDriver()->GetControllerNodeId() != m_nodeId) + for (map::const_iterator it = m_commandClassMap.begin(); it != m_commandClassMap.end(); ++it) { - for (map::const_iterator it = m_commandClassMap.begin(); it != m_commandClassMap.end(); ++it) + it->second->CreateVars(); + /* Dont' do this for Controller Nodes */ + if (GetDriver()->GetControllerNodeId() != m_nodeId) { + if (!it->second->IsAfterMark()) { m_queryPending |= it->second->RequestStateForAllInstances(Internal::CC::CommandClass::RequestFlag_Static, Driver::MsgQueue_Query); @@ -526,15 +528,16 @@ void Node::AdvanceQueries() Log::Write(LogLevel_Detail, m_nodeId, "QueryStage_CacheLoad"); Log::Write(LogLevel_Info, GetNodeId(), "Loading Cache for node %d: Manufacturer=%s, Product=%s", GetNodeId(), GetManufacturerName().c_str(), GetProductName().c_str()); Log::Write(LogLevel_Info, GetNodeId(), "Node Identity Codes: %.4x:%.4x:%.4x", GetManufacturerId(), GetProductType(), GetProductId()); - // - // Send a NoOperation message to see if the node is awake - // and alive. Based on the response or lack of response - // will determine next step. Called here when configuration exists. - // - Internal::CC::NoOperation* noop = static_cast(GetCommandClass(Internal::CC::NoOperation::StaticGetCommandClassId())); /* Don't do this if its to the Controller */ if (GetDriver()->GetControllerNodeId() != m_nodeId) { + // + // Send a NoOperation message to see if the node is awake + // and alive. Based on the response or lack of response + // will determine next step. Called here when configuration exists. + // + Internal::CC::NoOperation* noop = static_cast(GetCommandClass(Internal::CC::NoOperation::StaticGetCommandClassId())); + noop->Set(true); m_queryPending = true; addQSC = true; @@ -860,7 +863,7 @@ void Node::ReadXML(TiXmlElement const* _node) m_nodeInfoReceived = true; } - if (m_queryStage > QueryStage_Instances) + if (m_queryStage > QueryStage_Static) { Notification* notification = new Notification(Notification::Type_EssentialNodeQueriesComplete); notification->SetHomeAndNodeIds(m_homeId, m_nodeId); @@ -1062,7 +1065,6 @@ void Node::ReadXML(TiXmlElement const* _node) } Internal::CC::ManufacturerSpecific* cc = static_cast(GetCommandClass(Internal::CC::ManufacturerSpecific::StaticGetCommandClassId())); - /* don't do this if its the Controller Node */ if (cc) { cc->SetProductDetails(manufacturerId, productType, productId); @@ -1201,7 +1203,6 @@ void Node::ReadCommandClassesXML(TiXmlElement const* _ccsElement) ccElement = ccElement->NextSiblingElement(); continue; } - // Command class support does not exist yet, so we create it cc = AddCommandClass(id); } @@ -1493,23 +1494,19 @@ void Node::UpdateProtocolInfo(uint8 const* _data) #endif m_basicprotocolInfoReceived = true; } - else + /* we have to setup the Wakeup CC if needed here, because + * it wouldn't have been created in the SetProtocolInfo function, as we didn't + * have the Device Flags then + */ + if (!m_listening && !IsFrequentListeningDevice()) { - /* we have to setup the Wakeup CC if needed here, because - * it wouldn't have been created in the SetProtocolInfo function, as we didn't - * have the Device Flags then - */ - if (!m_listening && !IsFrequentListeningDevice()) + // Device does not always listen, so we need the WakeUp handler. We can't + // wait for the command class list because the request for the command + // classes may need to go in the wakeup queue itself! + if (Internal::CC::CommandClass* pCommandClass = AddCommandClass(Internal::CC::WakeUp::StaticGetCommandClassId())) { - // Device does not always listen, so we need the WakeUp handler. We can't - // wait for the command class list because the request for the command - // classes may need to go in the wakeup queue itself! - if (Internal::CC::CommandClass* pCommandClass = AddCommandClass(Internal::CC::WakeUp::StaticGetCommandClassId())) - { - pCommandClass->SetInstance(1); - } + pCommandClass->SetInstance(1); } - } m_protocolInfoReceived = true; } @@ -1597,6 +1594,9 @@ bool Node::IsSecured() void Node::SetInstanceLabel(uint8 const _instance, char *label) { m_globalInstanceLabel[_instance] = string(label); + Driver *driver = GetDriver(); + if (driver) + driver->WriteCache(); } string Node::GetInstanceLabel(uint8 const _ccid, uint8 const _instance) @@ -1819,26 +1819,6 @@ void Node::SetSecuredClasses(uint8 const* _data, uint8 const _length, uint32 con pCommandClass->SetInstance(_instance); else pCommandClass->SetInstance(1); - - /* set our Static Request Flags */ - uint8 request = 0; - - if (GetCommandClass(Internal::CC::MultiInstance::StaticGetCommandClassId())) - { - // Request instances - request |= (uint8) Internal::CC::CommandClass::StaticRequest_Instances; - } - - if (GetCommandClass(Internal::CC::Version::StaticGetCommandClassId())) - { - // Request versions - request |= (uint8) Internal::CC::CommandClass::StaticRequest_Version; - } - - if (request) - { - pCommandClass->SetStaticRequest(request); - } } } else @@ -1853,6 +1833,7 @@ void Node::SetSecuredClasses(uint8 const* _data, uint8 const _length, uint32 con Log::Write(LogLevel_Info, m_nodeId, " %s (Unsecured) - %s", it->second->GetCommandClassName().c_str(), it->second->IsInNIF() ? "InNIF" : "NotInNIF"); } + SetStaticRequests(); } //----------------------------------------------------------------------------- // @@ -2179,6 +2160,27 @@ Internal::CC::CommandClass* Node::AddCommandClass(uint8 const _commandClassId) if (Internal::CC::CommandClass* pCommandClass = Internal::CC::CommandClasses::CreateCommandClass(_commandClassId, m_homeId, m_nodeId)) { m_commandClassMap[_commandClassId] = pCommandClass; + + + /* Only Request the CC Version if we are equal or after QueryStage_SecurityReport */ + if (GetCurrentQueryStage() >= QueryStage_SecurityReport) { + Internal::CC::Version* vcc = static_cast(GetCommandClass(Internal::CC::Version::StaticGetCommandClassId())); + if (vcc) + { + if (pCommandClass->GetMaxVersion() > 1 && pCommandClass->GetVersion() == 0) + { + Log::Write(LogLevel_Info, m_nodeId, "\t\tRequesting Versions for %s", pCommandClass->GetCommandClassName().c_str()); + // Get the version for each supported command class that + // we have implemented at greater than version one. + vcc->RequestCommandClassVersion(pCommandClass); + } + else + { + // set the Version to 1 + pCommandClass->SetVersion(1); + } + } + } return pCommandClass; } else @@ -2758,7 +2760,22 @@ void Node::ReadValueFromXML(uint8 const _commandClassId, TiXmlElement const* _va Internal::VC::Value* Node::GetValue(ValueID const& _id) { // This increments the value's reference count - return GetValueStore()->GetValue(_id.GetValueStoreKey()); + Internal::VC::Value *value = GetValueStore()->GetValue(_id.GetValueStoreKey()); + + if (!value) { + Log::Write(LogLevel_Warning, m_nodeId, "Node::GetValue - Couldn't find ValueID in Store: %s", _id.GetAsString().c_str()); + return nullptr; + } + + if (value->GetID().GetId() != _id.GetId()) + { + Log::Write(LogLevel_Error, m_nodeId, "Node::GetValue called with: %s but GetValueStore returned: %s", + _id.GetAsString().c_str(), value->GetID().GetAsString().c_str()); + + value->Release(); + return nullptr; + } + return value; } //----------------------------------------------------------------------------- @@ -3336,7 +3353,7 @@ bool Node::AddMandatoryCommandClasses(uint8 const* _commandClasses) // // Read the static device class data from the device_classes.xml file //----------------------------------------------------------------------------- -void Node::ReadDeviceClasses() +bool Node::ReadDeviceClasses() { // Load the XML document that contains the device class information string configPath; @@ -3347,9 +3364,11 @@ void Node::ReadDeviceClasses() TiXmlDocument doc; if (!doc.LoadFile(filename.c_str(), TIXML_ENCODING_UTF8)) { - Log::Write(LogLevel_Info, "Failed to load device_classes.xml"); - Log::Write(LogLevel_Info, "Check that the config path provided when creating the Manager points to the correct location."); - return; + Log::Write(LogLevel_Warning, "Failed to load device_classes.xml"); + Log::Write(LogLevel_Warning, "Check that the config path provided when creating the Manager points to the correct location."); + Log::Write(LogLevel_Warning, "tinyXML Reported %s", doc.ErrorDesc()); + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot read device_classes.xml! - Missing/Invalid Config File?"); + return false; } doc.SetUserData((void *) filename.c_str()); TiXmlElement const* deviceClassesElement = doc.RootElement(); @@ -3419,6 +3438,7 @@ void Node::ReadDeviceClasses() } s_deviceClassesLoaded = true; + return true; } //----------------------------------------------------------------------------- @@ -4030,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 374b7bc49b..bae66efb07 100644 --- a/cpp/src/Node.h +++ b/cpp/src/Node.h @@ -128,13 +128,13 @@ namespace OpenZWave QueryStage_ProtocolInfo, /**< Retrieve protocol information */ QueryStage_Probe, /**< Ping device to see if alive */ QueryStage_WakeUp, /**< Start wake up process if a sleeping node */ - QueryStage_ManufacturerSpecific1, /**< Retrieve manufacturer name and product ids if ProtocolInfo lets us */ QueryStage_NodeInfo, /**< Retrieve info about supported, controlled command classes */ QueryStage_NodePlusInfo, /**< Retrieve ZWave+ info and update device classes */ QueryStage_SecurityReport, /**< Retrieve a list of Command Classes that require Security */ - QueryStage_ManufacturerSpecific2, /**< Retrieve manufacturer name and product ids */ QueryStage_Versions, /**< Retrieve version information */ + QueryStage_ManufacturerSpecific1, /**< Retrieve manufacturer name and product ids if ProtocolInfo lets us */ QueryStage_Instances, /**< Retrieve information about multiple command class instances */ + QueryStage_ManufacturerSpecific2, /**< Retrieve manufacturer name and product ids */ QueryStage_Static, /**< Retrieve static information (doesn't change) */ QueryStage_CacheLoad, /**< Ping a device upon restarting with cached config for the device */ QueryStage_Probe1 = QueryStage_CacheLoad, /** < Depreciated name. /todo Remove in 2.0 timeframe */ @@ -762,7 +762,7 @@ namespace OpenZWave bool SetDeviceClasses(uint8 const _basic, uint8 const _generic, uint8 const _specific); // Set the device class data for the node bool SetPlusDeviceClasses(uint8 const _role, uint8 const _nodeType, uint16 const _deviceType); // Set the device class data for the node based on the Zwave+ info report bool AddMandatoryCommandClasses(uint8 const* _commandClasses); // Add mandatory command classes as specified in the device_classes.xml to the node. - void ReadDeviceClasses(); // Read the static device class data from the device_classes.xml file + bool ReadDeviceClasses(); // Read the static device class data from the device_classes.xml file static bool s_deviceClassesLoaded; // True if the xml file has already been loaded static map s_basicDeviceClasses; // Map of basic device classes. @@ -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 cc07e29919..675b6585eb 100644 --- a/cpp/src/Notification.cpp +++ b/cpp/src/Notification.cpp @@ -28,6 +28,7 @@ #include "Defs.h" #include "Notification.h" #include "Driver.h" +#include "command_classes/CommandClasses.h" using namespace OpenZWave; @@ -42,18 +43,34 @@ string Notification::GetAsString() const string command; switch (m_type) { - case Type_ValueAdded: - str = "ValueAdded"; - break; - case Type_ValueRemoved: - str = "ValueRemoved"; - break; - case Type_ValueChanged: - str = "ValueChanged"; - break; - case Type_ValueRefreshed: - str = "ValueRefreshed"; - break; + case Type_ValueAdded: { + str = "ValueAdded "; + std::stringstream ss; + ss << "CC: " << Internal::CC::CommandClasses::GetName(GetValueID().GetCommandClassId()) << " Instance: " << (int)GetValueID().GetInstance() << " Index: " << std::dec << GetValueID().GetIndex(); + str += ss.str(); + break; + } + case Type_ValueRemoved: { + str = "ValueRemoved "; + std::stringstream ss; + ss << "CC: " << Internal::CC::CommandClasses::GetName(GetValueID().GetCommandClassId()) << " Instance: " << (int)GetValueID().GetInstance() << " Index: " << std::dec << GetValueID().GetIndex(); + str += ss.str(); + break; + } + case Type_ValueChanged: { + str = "ValueChanged "; + std::stringstream ss; + ss << "CC: " << Internal::CC::CommandClasses::GetName(GetValueID().GetCommandClassId()) << " Instance: " << (int)GetValueID().GetInstance() << " Index: " << std::dec << GetValueID().GetIndex(); + str += ss.str(); + break; + } + case Type_ValueRefreshed: { + str = "ValueRefreshed "; + std::stringstream ss; + ss << "CC: " << Internal::CC::CommandClasses::GetName(GetValueID().GetCommandClassId()) << " Instance: " << (int)GetValueID().GetInstance() << " Index: " << std::dec << GetValueID().GetIndex(); + str += ss.str(); + break; + } case Type_Group: str = "Group"; break; diff --git a/cpp/src/NotificationCCTypes.cpp b/cpp/src/NotificationCCTypes.cpp index 94c9807bef..2aef57bf00 100755 --- a/cpp/src/NotificationCCTypes.cpp +++ b/cpp/src/NotificationCCTypes.cpp @@ -46,7 +46,7 @@ namespace OpenZWave { } - void NotificationCCTypes::ReadXML() + bool NotificationCCTypes::ReadXML() { // Parse the Z-Wave manufacturer and product XML file. string configPath; @@ -58,7 +58,7 @@ namespace OpenZWave { delete pDoc; Log::Write(LogLevel_Warning, "Unable to load NotificationCCTypes file %s", path.c_str()); - return; + return false; } pDoc->SetUserData((void*) path.c_str()); Log::Write(LogLevel_Info, "Loading NotificationCCTypes File %s", path.c_str()); @@ -73,7 +73,7 @@ namespace OpenZWave { Log::Write(LogLevel_Info, "Error in Product Config file at line %d - missing Revision attribute", root->Row()); delete pDoc; - return; + return false; } m_revision = atol(str); } @@ -283,6 +283,7 @@ namespace OpenZWave exit(0); #endif delete pDoc; + return true; } std::string NotificationCCTypes::GetEventParamNames(NotificationEventParamTypes type) @@ -376,8 +377,11 @@ namespace OpenZWave { return true; } - m_instance = new NotificationCCTypes(); - ReadXML(); + m_instance = new NotificationCCTypes(); + if (!ReadXML()) { + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot Create NotificationCCTypes Class! - Missing/Invalid Config File?"); + return false; + } return true; } @@ -388,7 +392,10 @@ namespace OpenZWave return m_instance; } m_instance = new NotificationCCTypes(); - ReadXML(); + if (!ReadXML()) { + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot Get NotificationCCTypes Class! - Missing/Invalid Config File?"); + return m_instance; + } return m_instance; } } // namespace Internal diff --git a/cpp/src/NotificationCCTypes.h b/cpp/src/NotificationCCTypes.h index 5df7874c24..e450d52cfb 100755 --- a/cpp/src/NotificationCCTypes.h +++ b/cpp/src/NotificationCCTypes.h @@ -82,7 +82,7 @@ namespace OpenZWave private: NotificationCCTypes(); ~NotificationCCTypes(); - static void ReadXML(); + static bool ReadXML(); public: static NotificationCCTypes* Get(); static bool Create(); diff --git a/cpp/src/Scene.cpp b/cpp/src/Scene.cpp index 96197a5775..d0e8bd460e 100644 --- a/cpp/src/Scene.cpp +++ b/cpp/src/Scene.cpp @@ -325,14 +325,15 @@ namespace OpenZWave //----------------------------------------------------------------------------- void Scene::RemoveValues(uint32 const _homeId) { - again: for (vector::iterator it = m_values.begin(); it != m_values.end(); ++it) + for (auto it = m_values.begin(); it != m_values.end();) { if ((*it)->m_id.GetHomeId() == _homeId) { delete *it; - m_values.erase(it); - goto again; + it = m_values.erase(it); } + else + it++; } // If the scene is now empty, delete it. if (m_values.empty()) @@ -352,14 +353,15 @@ namespace OpenZWave Scene *scene = Scene::Get(i); if (scene != NULL) { - again: for (vector::iterator it = scene->m_values.begin(); it != scene->m_values.end(); ++it) + for (auto it = scene->m_values.begin(); it != scene->m_values.end();) { if ((*it)->m_id.GetHomeId() == _homeId && (*it)->m_id.GetNodeId() == _nodeId) { delete *it; - scene->m_values.erase(it); - goto again; + it = scene->m_values.erase(it); } + else + it++; } // If the scene is now empty, delete it. if (scene->m_values.empty()) diff --git a/cpp/src/SensorMultiLevelCCTypes.cpp b/cpp/src/SensorMultiLevelCCTypes.cpp index b533ca60cc..5564d288ba 100755 --- a/cpp/src/SensorMultiLevelCCTypes.cpp +++ b/cpp/src/SensorMultiLevelCCTypes.cpp @@ -46,7 +46,7 @@ namespace OpenZWave { } - void SensorMultiLevelCCTypes::ReadXML() + bool SensorMultiLevelCCTypes::ReadXML() { // Parse the Z-Wave manufacturer and product XML file. string configPath; @@ -58,7 +58,7 @@ namespace OpenZWave { delete pDoc; Log::Write(LogLevel_Warning, "Unable to load SensorMultiLevelCCTypes file %s", path.c_str()); - return; + return false; } pDoc->SetUserData((void*) path.c_str()); Log::Write(LogLevel_Info, "Loading SensorMultiLevelCCTypes File %s", path.c_str()); @@ -71,9 +71,9 @@ namespace OpenZWave str = root->Attribute("Revision"); if (!str) { - Log::Write(LogLevel_Info, "Error in SensorMultiLevel Config file at line %d - missing Revision attribute", root->Row()); + Log::Write(LogLevel_Warning, "Error in SensorMultiLevel Config file at line %d - missing Revision attribute", root->Row()); delete pDoc; - return; + return false; } m_revision = atol(str); } @@ -174,6 +174,7 @@ namespace OpenZWave exit(0); #endif delete pDoc; + return true; } std::string SensorMultiLevelCCTypes::GetSensorName(uint32 type) @@ -239,7 +240,10 @@ namespace OpenZWave return true; } m_instance = new SensorMultiLevelCCTypes(); - ReadXML(); + if (!ReadXML()) { + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot Create SensorMultiLevelCCTypes Class! - Missing/Invalid Config File?"); + return false; + } return true; } @@ -250,7 +254,9 @@ namespace OpenZWave return m_instance; } m_instance = new SensorMultiLevelCCTypes(); - ReadXML(); + if (!ReadXML()) { + OZW_ERROR(OZWException::OZWEXCEPTION_CONFIG, "Cannot Get SensorMultiLevelCCTypes Class! - Missing/Invalid Config File?"); + } return m_instance; } } // namespace Internal diff --git a/cpp/src/SensorMultiLevelCCTypes.h b/cpp/src/SensorMultiLevelCCTypes.h index 3e4bafe938..c28f436ec1 100755 --- a/cpp/src/SensorMultiLevelCCTypes.h +++ b/cpp/src/SensorMultiLevelCCTypes.h @@ -65,7 +65,7 @@ namespace OpenZWave private: SensorMultiLevelCCTypes(); ~SensorMultiLevelCCTypes(); - static void ReadXML(); + static bool ReadXML(); public: static SensorMultiLevelCCTypes* Get(); static bool Create(); diff --git a/cpp/src/ValueIDIndexesDefines.def b/cpp/src/ValueIDIndexesDefines.def index dc099f05fd..a23583297c 100644 --- a/cpp/src/ValueIDIndexesDefines.def +++ b/cpp/src/ValueIDIndexesDefines.def @@ -1597,7 +1597,9 @@ ENUM(ValueID_Index_BarrierOperator, Visual = 4 ); ENUM(ValueID_Index_Basic, - Set = 0 + Set = 0, + Target = 1, + Duration = 2 ); ENUM(ValueID_Index_BasicWindowCovering, Open = 0, @@ -1885,7 +1887,8 @@ ENUM(ValueID_Index_Color, Color = 0, Index = 1, Channels_Capabilities = 2, - Duration = 4 + Duration = 4, + Target = 5 ); ENUM(ValueID_Index_Configuration, Parameter_1 = 1, @@ -2170,7 +2173,119 @@ ENUM(ValueID_Index_EnergyProduction, Time = 3 ); ENUM(ValueID_Index_Indicator, - Indicator = 0 + Indicator = 0, + Armed = 1, + Not_Armed, + Ready, + Fault, + Busy, + Enter_ID, + Enter_PIN, + Code_Accepted, + Code_Not_Accepted, + Armed_Stay, + Armed_Away, + Alarming, + Alarming_Burglar, + Alarming_Smoke_Fire, + Alarming_Carbon_Monoxide, + Bypass_Challenge, + Entry_Delay, + Exit_Delay, + Alarming_Medical, + Alarming_Freeze_Warning, + Alarming_Water_Leak, + Alarming_Panic, + Zone_1_Armed = 0x20, + Zone_2_Armed, + Zone_3_Armed, + Zone_4_Armed, + Zone_5_Armed, + Zone_6_Armed, + Zone_7_Armed, + Zone_8_Armed, + LCD_Backlight = 0x30, + Button_Backlight_Letters = 0x40, + Button_Backlight_Digits, + Button_Backlight_Command, + Button_1_Indication, + Button_2_Indication, + Button_3_Indication, + Button_4_Indication, + Button_5_Indication, + Button_6_Indication, + Button_7_Indication, + Button_8_Indication, + Button_9_Indication, + Button_10_Indication, + Button_11_Indication, + Button_12_Indication, + Node_Identify = 0x50, + Generic_Event_Sound_Notification_1 = 0x60, + Generic_Event_Sound_Notification_2, + Generic_Event_Sound_Notification_3, + Generic_Event_Sound_Notification_4, + Generic_Event_Sound_Notification_5, + Generic_Event_Sound_Notification_6, + Generic_Event_Sound_Notification_7, + Generic_Event_Sound_Notification_8, + Generic_Event_Sound_Notification_9, + Generic_Event_Sound_Notification_10, + Generic_Event_Sound_Notification_11, + Generic_Event_Sound_Notification_12, + Generic_Event_Sound_Notification_13, + Generic_Event_Sound_Notification_14, + Generic_Event_Sound_Notification_15, + Generic_Event_Sound_Notification_16, + Generic_Event_Sound_Notification_17, + Generic_Event_Sound_Notification_18, + Generic_Event_Sound_Notification_19, + Generic_Event_Sound_Notification_20, + Generic_Event_Sound_Notification_21, + Generic_Event_Sound_Notification_22, + Generic_Event_Sound_Notification_23, + Generic_Event_Sound_Notification_24, + Generic_Event_Sound_Notification_25, + Generic_Event_Sound_Notification_26, + Generic_Event_Sound_Notification_27, + Generic_Event_Sound_Notification_28, + Generic_Event_Sound_Notification_29, + Generic_Event_Sound_Notification_30, + Generic_Event_Sound_Notification_31, + Generic_Event_Sound_Notification_32, + Manufacturer_Defined_Indicator_1 = 0x80, + Manufacturer_Defined_Indicator_2, + Manufacturer_Defined_Indicator_3, + Manufacturer_Defined_Indicator_4, + Manufacturer_Defined_Indicator_5, + Manufacturer_Defined_Indicator_6, + Manufacturer_Defined_Indicator_7, + Manufacturer_Defined_Indicator_8, + Manufacturer_Defined_Indicator_9, + Manufacturer_Defined_Indicator_10, + Manufacturer_Defined_Indicator_11, + Manufacturer_Defined_Indicator_12, + Manufacturer_Defined_Indicator_13, + Manufacturer_Defined_Indicator_14, + Manufacturer_Defined_Indicator_15, + Manufacturer_Defined_Indicator_16, + Manufacturer_Defined_Indicator_17, + Manufacturer_Defined_Indicator_18, + Manufacturer_Defined_Indicator_19, + Manufacturer_Defined_Indicator_20, + Manufacturer_Defined_Indicator_21, + Manufacturer_Defined_Indicator_22, + Manufacturer_Defined_Indicator_23, + Manufacturer_Defined_Indicator_24, + Manufacturer_Defined_Indicator_25, + Manufacturer_Defined_Indicator_26, + Manufacturer_Defined_Indicator_27, + Manufacturer_Defined_Indicator_28, + Manufacturer_Defined_Indicator_29, + Manufacturer_Defined_Indicator_30, + Manufacturer_Defined_Indicator_31, + Manufacturer_Defined_Indicator_32, + Buzzer = 0xF0 ); ENUM(ValueID_Index_Language, Language = 0, diff --git a/cpp/src/ValueIDIndexesDefines.h b/cpp/src/ValueIDIndexesDefines.h index 48053dcc20..035343efb1 100644 --- a/cpp/src/ValueIDIndexesDefines.h +++ b/cpp/src/ValueIDIndexesDefines.h @@ -21,7 +21,9 @@ struct ValueID_Index_BarrierOperator { enum _enumerated { Command = 0, Label = 1 -struct ValueID_Index_Basic { enum _enumerated { Set = 0 }; _enumerated _value; ValueID_Index_Basic(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Set = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Set = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_Basic { enum _enumerated { Set = 0, Target = 1, Duration = 2 }; _enumerated _value; ValueID_Index_Basic(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 3; static const int* _values() { static const int values[] = { (ignore_assign)Set = 0, (ignore_assign)Target = 1, (ignore_assign)Duration = 2, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Set = 0", "Target = 1", "Duration = 2", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + + struct ValueID_Index_BasicWindowCovering { enum _enumerated { Open = 0, Close = 1 }; _enumerated _value; ValueID_Index_BasicWindowCovering(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 2; static const int* _values() { static const int values[] = { (ignore_assign)Open = 0, (ignore_assign)Close = 1, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Open = 0", "Close = 1", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; @@ -38,7 +40,8 @@ struct ValueID_Index_Clock { enum _enumerated { Day = 0, Hour = 1, Minute = 2 }; -struct ValueID_Index_Color { enum _enumerated { Color = 0, Index = 1, Channels_Capabilities = 2, Duration = 4 }; _enumerated _value; ValueID_Index_Color(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 4; static const int* _values() { static const int values[] = { (ignore_assign)Color = 0, (ignore_assign)Index = 1, (ignore_assign)Channels_Capabilities = 2, (ignore_assign)Duration = 4, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Color = 0", "Index = 1", "Channels_Capabilities = 2", "Duration = 4", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; +struct ValueID_Index_Color { enum _enumerated { Color = 0, Index = 1, Channels_Capabilities = 2, Duration = 4, Target = 5 }; _enumerated _value; ValueID_Index_Color(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 5; static const int* _values() { static const int values[] = { (ignore_assign)Color = 0, (ignore_assign)Index = 1, (ignore_assign)Channels_Capabilities = 2, (ignore_assign)Duration = 4, (ignore_assign)Target = 5, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Color = 0", "Index = 1", "Channels_Capabilities = 2", "Duration = 4", "Target = 5", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; + @@ -62,9 +65,7 @@ struct ValueID_Index_EnergyProduction { enum _enumerated { Instant = 0, Total = -struct ValueID_Index_Indicator { enum _enumerated { Indicator = 0 }; _enumerated _value; ValueID_Index_Indicator(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 1; static const int* _values() { static const int values[] = { (ignore_assign)Indicator = 0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Indicator = 0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; - - +struct ValueID_Index_Indicator { enum _enumerated { Indicator = 0, Armed = 1, Not_Armed, Ready, Fault, Busy, Enter_ID, Enter_PIN, Code_Accepted, Code_Not_Accepted, Armed_Stay, Armed_Away, Alarming, Alarming_Burglar, Alarming_Smoke_Fire, Alarming_Carbon_Monoxide, Bypass_Challenge, Entry_Delay, Exit_Delay, Alarming_Medical, Alarming_Freeze_Warning, Alarming_Water_Leak, Alarming_Panic, Zone_1_Armed = 0x20, Zone_2_Armed, Zone_3_Armed, Zone_4_Armed, Zone_5_Armed, Zone_6_Armed, Zone_7_Armed, Zone_8_Armed, LCD_Backlight = 0x30, Button_Backlight_Letters = 0x40, Button_Backlight_Digits, Button_Backlight_Command, Button_1_Indication, Button_2_Indication, Button_3_Indication, Button_4_Indication, Button_5_Indication, Button_6_Indication, Button_7_Indication, Button_8_Indication, Button_9_Indication, Button_10_Indication, Button_11_Indication, Button_12_Indication, Node_Identify = 0x50, Generic_Event_Sound_Notification_1 = 0x60, Generic_Event_Sound_Notification_2, Generic_Event_Sound_Notification_3, Generic_Event_Sound_Notification_4, Generic_Event_Sound_Notification_5, Generic_Event_Sound_Notification_6, Generic_Event_Sound_Notification_7, Generic_Event_Sound_Notification_8, Generic_Event_Sound_Notification_9, Generic_Event_Sound_Notification_10, Generic_Event_Sound_Notification_11, Generic_Event_Sound_Notification_12, Generic_Event_Sound_Notification_13, Generic_Event_Sound_Notification_14, Generic_Event_Sound_Notification_15, Generic_Event_Sound_Notification_16, Generic_Event_Sound_Notification_17, Generic_Event_Sound_Notification_18, Generic_Event_Sound_Notification_19, Generic_Event_Sound_Notification_20, Generic_Event_Sound_Notification_21, Generic_Event_Sound_Notification_22, Generic_Event_Sound_Notification_23, Generic_Event_Sound_Notification_24, Generic_Event_Sound_Notification_25, Generic_Event_Sound_Notification_26, Generic_Event_Sound_Notification_27, Generic_Event_Sound_Notification_28, Generic_Event_Sound_Notification_29, Generic_Event_Sound_Notification_30, Generic_Event_Sound_Notification_31, Generic_Event_Sound_Notification_32, Manufacturer_Defined_Indicator_1 = 0x80, Manufacturer_Defined_Indicator_2, Manufacturer_Defined_Indicator_3, Manufacturer_Defined_Indicator_4, Manufacturer_Defined_Indicator_5, Manufacturer_Defined_Indicator_6, Manufacturer_Defined_Indicator_7, Manufacturer_Defined_Indicator_8, Manufacturer_Defined_Indicator_9, Manufacturer_Defined_Indicator_10, Manufacturer_Defined_Indicator_11, Manufacturer_Defined_Indicator_12, Manufacturer_Defined_Indicator_13, Manufacturer_Defined_Indicator_14, Manufacturer_Defined_Indicator_15, Manufacturer_Defined_Indicator_16, Manufacturer_Defined_Indicator_17, Manufacturer_Defined_Indicator_18, Manufacturer_Defined_Indicator_19, Manufacturer_Defined_Indicator_20, Manufacturer_Defined_Indicator_21, Manufacturer_Defined_Indicator_22, Manufacturer_Defined_Indicator_23, Manufacturer_Defined_Indicator_24, Manufacturer_Defined_Indicator_25, Manufacturer_Defined_Indicator_26, Manufacturer_Defined_Indicator_27, Manufacturer_Defined_Indicator_28, Manufacturer_Defined_Indicator_29, Manufacturer_Defined_Indicator_30, Manufacturer_Defined_Indicator_31, Manufacturer_Defined_Indicator_32, Buzzer = 0xF0 }; _enumerated _value; ValueID_Index_Indicator(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 113; static const int* _values() { static const int values[] = { (ignore_assign)Indicator = 0, (ignore_assign)Armed = 1, (ignore_assign)Not_Armed, (ignore_assign)Ready, (ignore_assign)Fault, (ignore_assign)Busy, (ignore_assign)Enter_ID, (ignore_assign)Enter_PIN, (ignore_assign)Code_Accepted, (ignore_assign)Code_Not_Accepted, (ignore_assign)Armed_Stay, (ignore_assign)Armed_Away, (ignore_assign)Alarming, (ignore_assign)Alarming_Burglar, (ignore_assign)Alarming_Smoke_Fire, (ignore_assign)Alarming_Carbon_Monoxide, (ignore_assign)Bypass_Challenge, (ignore_assign)Entry_Delay, (ignore_assign)Exit_Delay, (ignore_assign)Alarming_Medical, (ignore_assign)Alarming_Freeze_Warning, (ignore_assign)Alarming_Water_Leak, (ignore_assign)Alarming_Panic, (ignore_assign)Zone_1_Armed = 0x20, (ignore_assign)Zone_2_Armed, (ignore_assign)Zone_3_Armed, (ignore_assign)Zone_4_Armed, (ignore_assign)Zone_5_Armed, (ignore_assign)Zone_6_Armed, (ignore_assign)Zone_7_Armed, (ignore_assign)Zone_8_Armed, (ignore_assign)LCD_Backlight = 0x30, (ignore_assign)Button_Backlight_Letters = 0x40, (ignore_assign)Button_Backlight_Digits, (ignore_assign)Button_Backlight_Command, (ignore_assign)Button_1_Indication, (ignore_assign)Button_2_Indication, (ignore_assign)Button_3_Indication, (ignore_assign)Button_4_Indication, (ignore_assign)Button_5_Indication, (ignore_assign)Button_6_Indication, (ignore_assign)Button_7_Indication, (ignore_assign)Button_8_Indication, (ignore_assign)Button_9_Indication, (ignore_assign)Button_10_Indication, (ignore_assign)Button_11_Indication, (ignore_assign)Button_12_Indication, (ignore_assign)Node_Identify = 0x50, (ignore_assign)Generic_Event_Sound_Notification_1 = 0x60, (ignore_assign)Generic_Event_Sound_Notification_2, (ignore_assign)Generic_Event_Sound_Notification_3, (ignore_assign)Generic_Event_Sound_Notification_4, (ignore_assign)Generic_Event_Sound_Notification_5, (ignore_assign)Generic_Event_Sound_Notification_6, (ignore_assign)Generic_Event_Sound_Notification_7, (ignore_assign)Generic_Event_Sound_Notification_8, (ignore_assign)Generic_Event_Sound_Notification_9, (ignore_assign)Generic_Event_Sound_Notification_10, (ignore_assign)Generic_Event_Sound_Notification_11, (ignore_assign)Generic_Event_Sound_Notification_12, (ignore_assign)Generic_Event_Sound_Notification_13, (ignore_assign)Generic_Event_Sound_Notification_14, (ignore_assign)Generic_Event_Sound_Notification_15, (ignore_assign)Generic_Event_Sound_Notification_16, (ignore_assign)Generic_Event_Sound_Notification_17, (ignore_assign)Generic_Event_Sound_Notification_18, (ignore_assign)Generic_Event_Sound_Notification_19, (ignore_assign)Generic_Event_Sound_Notification_20, (ignore_assign)Generic_Event_Sound_Notification_21, (ignore_assign)Generic_Event_Sound_Notification_22, (ignore_assign)Generic_Event_Sound_Notification_23, (ignore_assign)Generic_Event_Sound_Notification_24, (ignore_assign)Generic_Event_Sound_Notification_25, (ignore_assign)Generic_Event_Sound_Notification_26, (ignore_assign)Generic_Event_Sound_Notification_27, (ignore_assign)Generic_Event_Sound_Notification_28, (ignore_assign)Generic_Event_Sound_Notification_29, (ignore_assign)Generic_Event_Sound_Notification_30, (ignore_assign)Generic_Event_Sound_Notification_31, (ignore_assign)Generic_Event_Sound_Notification_32, (ignore_assign)Manufacturer_Defined_Indicator_1 = 0x80, (ignore_assign)Manufacturer_Defined_Indicator_2, (ignore_assign)Manufacturer_Defined_Indicator_3, (ignore_assign)Manufacturer_Defined_Indicator_4, (ignore_assign)Manufacturer_Defined_Indicator_5, (ignore_assign)Manufacturer_Defined_Indicator_6, (ignore_assign)Manufacturer_Defined_Indicator_7, (ignore_assign)Manufacturer_Defined_Indicator_8, (ignore_assign)Manufacturer_Defined_Indicator_9, (ignore_assign)Manufacturer_Defined_Indicator_10, (ignore_assign)Manufacturer_Defined_Indicator_11, (ignore_assign)Manufacturer_Defined_Indicator_12, (ignore_assign)Manufacturer_Defined_Indicator_13, (ignore_assign)Manufacturer_Defined_Indicator_14, (ignore_assign)Manufacturer_Defined_Indicator_15, (ignore_assign)Manufacturer_Defined_Indicator_16, (ignore_assign)Manufacturer_Defined_Indicator_17, (ignore_assign)Manufacturer_Defined_Indicator_18, (ignore_assign)Manufacturer_Defined_Indicator_19, (ignore_assign)Manufacturer_Defined_Indicator_20, (ignore_assign)Manufacturer_Defined_Indicator_21, (ignore_assign)Manufacturer_Defined_Indicator_22, (ignore_assign)Manufacturer_Defined_Indicator_23, (ignore_assign)Manufacturer_Defined_Indicator_24, (ignore_assign)Manufacturer_Defined_Indicator_25, (ignore_assign)Manufacturer_Defined_Indicator_26, (ignore_assign)Manufacturer_Defined_Indicator_27, (ignore_assign)Manufacturer_Defined_Indicator_28, (ignore_assign)Manufacturer_Defined_Indicator_29, (ignore_assign)Manufacturer_Defined_Indicator_30, (ignore_assign)Manufacturer_Defined_Indicator_31, (ignore_assign)Manufacturer_Defined_Indicator_32, (ignore_assign)Buzzer = 0xF0, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Indicator = 0", "Armed = 1", "Not_Armed", "Ready", "Fault", "Busy", "Enter_ID", "Enter_PIN", "Code_Accepted", "Code_Not_Accepted", "Armed_Stay", "Armed_Away", "Alarming", "Alarming_Burglar", "Alarming_Smoke_Fire", "Alarming_Carbon_Monoxide", "Bypass_Challenge", "Entry_Delay", "Exit_Delay", "Alarming_Medical", "Alarming_Freeze_Warning", "Alarming_Water_Leak", "Alarming_Panic", "Zone_1_Armed = 0x20", "Zone_2_Armed", "Zone_3_Armed", "Zone_4_Armed", "Zone_5_Armed", "Zone_6_Armed", "Zone_7_Armed", "Zone_8_Armed", "LCD_Backlight = 0x30", "Button_Backlight_Letters = 0x40", "Button_Backlight_Digits", "Button_Backlight_Command", "Button_1_Indication", "Button_2_Indication", "Button_3_Indication", "Button_4_Indication", "Button_5_Indication", "Button_6_Indication", "Button_7_Indication", "Button_8_Indication", "Button_9_Indication", "Button_10_Indication", "Button_11_Indication", "Button_12_Indication", "Node_Identify = 0x50", "Generic_Event_Sound_Notification_1 = 0x60", "Generic_Event_Sound_Notification_2", "Generic_Event_Sound_Notification_3", "Generic_Event_Sound_Notification_4", "Generic_Event_Sound_Notification_5", "Generic_Event_Sound_Notification_6", "Generic_Event_Sound_Notification_7", "Generic_Event_Sound_Notification_8", "Generic_Event_Sound_Notification_9", "Generic_Event_Sound_Notification_10", "Generic_Event_Sound_Notification_11", "Generic_Event_Sound_Notification_12", "Generic_Event_Sound_Notification_13", "Generic_Event_Sound_Notification_14", "Generic_Event_Sound_Notification_15", "Generic_Event_Sound_Notification_16", "Generic_Event_Sound_Notification_17", "Generic_Event_Sound_Notification_18", "Generic_Event_Sound_Notification_19", "Generic_Event_Sound_Notification_20", "Generic_Event_Sound_Notification_21", "Generic_Event_Sound_Notification_22", "Generic_Event_Sound_Notification_23", "Generic_Event_Sound_Notification_24", "Generic_Event_Sound_Notification_25", "Generic_Event_Sound_Notification_26", "Generic_Event_Sound_Notification_27", "Generic_Event_Sound_Notification_28", "Generic_Event_Sound_Notification_29", "Generic_Event_Sound_Notification_30", "Generic_Event_Sound_Notification_31", "Generic_Event_Sound_Notification_32", "Manufacturer_Defined_Indicator_1 = 0x80", "Manufacturer_Defined_Indicator_2", "Manufacturer_Defined_Indicator_3", "Manufacturer_Defined_Indicator_4", "Manufacturer_Defined_Indicator_5", "Manufacturer_Defined_Indicator_6", "Manufacturer_Defined_Indicator_7", "Manufacturer_Defined_Indicator_8", "Manufacturer_Defined_Indicator_9", "Manufacturer_Defined_Indicator_10", "Manufacturer_Defined_Indicator_11", "Manufacturer_Defined_Indicator_12", "Manufacturer_Defined_Indicator_13", "Manufacturer_Defined_Indicator_14", "Manufacturer_Defined_Indicator_15", "Manufacturer_Defined_Indicator_16", "Manufacturer_Defined_Indicator_17", "Manufacturer_Defined_Indicator_18", "Manufacturer_Defined_Indicator_19", "Manufacturer_Defined_Indicator_20", "Manufacturer_Defined_Indicator_21", "Manufacturer_Defined_Indicator_22", "Manufacturer_Defined_Indicator_23", "Manufacturer_Defined_Indicator_24", "Manufacturer_Defined_Indicator_25", "Manufacturer_Defined_Indicator_26", "Manufacturer_Defined_Indicator_27", "Manufacturer_Defined_Indicator_28", "Manufacturer_Defined_Indicator_29", "Manufacturer_Defined_Indicator_30", "Manufacturer_Defined_Indicator_31", "Manufacturer_Defined_Indicator_32", "Buzzer = 0xF0", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; struct ValueID_Index_Language { enum _enumerated { Language = 0, Country = 1 }; _enumerated _value; ValueID_Index_Language(_enumerated value) : _value(value) { } operator _enumerated() const { return _value; } const char* _to_string() const { for (size_t index = 0; index < _count; ++index) { if (_values()[index] == _value) return _names()[index]; } return NULL; } static const size_t _count = 2; static const int* _values() { static const int values[] = { (ignore_assign)Language = 0, (ignore_assign)Country = 1, }; return values; } static const char* const* _names() { static const char* const raw_names[] = { "Language = 0", "Country = 1", }; static char* processed_names[_count]; static bool initialized = false; if (!initialized) { for (size_t index = 0; index < _count; ++index) { size_t length = std::strcspn(raw_names[index], " =\t\n\r"); processed_names[index] = new char[length + 1]; strncpy( processed_names[index], raw_names[index], length); processed_names[index][length] = '\0'; } } return processed_names; } };; diff --git a/cpp/src/command_classes/Alarm.cpp b/cpp/src/command_classes/Alarm.cpp index cee454edac..f5027eb40e 100644 --- a/cpp/src/command_classes/Alarm.cpp +++ b/cpp/src/command_classes/Alarm.cpp @@ -194,6 +194,7 @@ namespace OpenZWave { if (AlarmCmd_Report == (AlarmCmd) _data[0]) { + Log::Write(LogLevel_Info, GetNodeId(), "Got a AlarmCmd_Report Message.... "); // We have received a report from the Z-Wave device if (GetVersion() == 1) { @@ -239,7 +240,7 @@ namespace OpenZWave uint8 NotificationType = _data[5]; uint8 NotificationEvent = _data[6]; - bool NotificationSequencePresent = ((_data[7] & 0x80) == 1); + bool NotificationSequencePresent = (_data[7] & 0x80); uint8 EventParamLength = (_data[7] & 0x1F); uint8 NotificationSequence = 0; if (NotificationSequencePresent) @@ -444,6 +445,10 @@ namespace OpenZWave } } + else + { + Log::Write(LogLevel_Warning, GetNodeId(), "Got a AlarmCmd_Report Message - Greater than Version 2, but size was less than 7?"); + } return true; } diff --git a/cpp/src/command_classes/Association.h b/cpp/src/command_classes/Association.h index b9f7ac9956..221752b3ad 100644 --- a/cpp/src/command_classes/Association.h +++ b/cpp/src/command_classes/Association.h @@ -81,6 +81,9 @@ namespace OpenZWave void Set(uint8 const _group, uint8 const _nodeId); void Remove(uint8 const _group, uint8 const _nodeId); + bool supportsMultiInstance() override { + return false; + } private: Association(uint32 const _homeId, uint8 const _nodeId); void QueryGroup(uint8 _groupIdx, uint32 const _requestFlags); diff --git a/cpp/src/command_classes/AssociationCommandConfiguration.cpp b/cpp/src/command_classes/AssociationCommandConfiguration.cpp index 576441250b..073edea8eb 100644 --- a/cpp/src/command_classes/AssociationCommandConfiguration.cpp +++ b/cpp/src/command_classes/AssociationCommandConfiguration.cpp @@ -183,7 +183,7 @@ namespace OpenZWave if (Node* node = GetNodeUnsafe()) { Group* group = node->GetGroup(groupIdx); - if ( NULL == group) + if ( NULL != group) { if (firstReports) { diff --git a/cpp/src/command_classes/AssociationCommandConfiguration.h b/cpp/src/command_classes/AssociationCommandConfiguration.h index 900aff03b0..247fb10a92 100644 --- a/cpp/src/command_classes/AssociationCommandConfiguration.h +++ b/cpp/src/command_classes/AssociationCommandConfiguration.h @@ -79,6 +79,9 @@ namespace OpenZWave } virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; + bool supportsMultiInstance() override { + return false; + } protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/Basic.cpp b/cpp/src/command_classes/Basic.cpp index 188ed6dc6f..38899304bf 100644 --- a/cpp/src/command_classes/Basic.cpp +++ b/cpp/src/command_classes/Basic.cpp @@ -36,6 +36,7 @@ #include "platform/Log.h" #include "value_classes/ValueByte.h" +#include "value_classes/ValueInt.h" #include "command_classes/NoOperation.h" #include "tinyxml.h" @@ -73,7 +74,9 @@ namespace OpenZWave void Basic::ReadXML(TiXmlElement const* _ccElement) { CommandClass::ReadXML(_ccElement); - SetMapping(m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING), false); + SetMapping(m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING)); + if (m_com.GetFlagBool(COMPAT_FLAG_BASIC_SETASREPORT)) + SetAfterMark(); } //----------------------------------------------------------------------------- @@ -84,7 +87,7 @@ namespace OpenZWave { if (IsAfterMark()) { - Log::Write(LogLevel_Info, GetNodeId(), "Controlled Class"); + Log::Write(LogLevel_Info, GetNodeId(), "%s is a Controlling Class", GetCommandClassName().c_str()); return false; } if (_requestFlags & RequestFlag_Dynamic) @@ -102,6 +105,9 @@ namespace OpenZWave bool Basic::RequestValue(uint32 const _requestFlags, uint16 const _dummy1, // = 0 (not used) uint8 const _instance, Driver::MsgQueue const _queue) { + if (IsAfterMark()) + return false; + if (m_com.GetFlagBool(COMPAT_FLAG_GETSUPPORTED)) { Msg* msg = new Msg("BasicCmd_Get", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); @@ -141,16 +147,39 @@ namespace OpenZWave Log::Write(LogLevel_Info, GetNodeId(), "Received Basic report from node %d: level=%d", GetNodeId(), _data[1]); if (!m_com.GetFlagBool(COMPAT_FLAG_BASIC_IGNOREREMAPPING) && m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING) != 0) { - UpdateMappedClass(_instance, m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING), _data[1]); - } - else if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_Basic::Set))) - { - value->OnValueRefreshed(_data[1]); - value->Release(); + /* update our Mapped Class with the Target Values */ + if (GetVersion() >= 2 && _length >= 4) + UpdateMappedClass(_instance, m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING), _data[2]); + else + UpdateMappedClass(_instance, m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING), _data[1]); } - else - { - Log::Write(LogLevel_Warning, GetNodeId(), "No Valid Mapping for Basic Command Class and No ValueID Exported. Error?"); + else + { + if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_Basic::Set))) + { + /* Set the Target Value, if it is present */ + if (_length >= 4) + value->SetTargetValue(_data[2], _data[3]); + value->OnValueRefreshed(_data[1]); + value->Release(); + } + else + { + Log::Write(LogLevel_Warning, GetNodeId(), "No Valid Mapping for Basic Command Class and No ValueID Exported. Error?"); + } + if (_length >= 4) + { + if (Internal::VC::ValueByte* target = static_cast(GetValue(_instance, ValueID_Index_Basic::Target))) + { + target->OnValueRefreshed(_data[2]); + target->Release(); + } + if (Internal::VC::ValueInt* duration = static_cast(GetValue(_instance, ValueID_Index_Basic::Duration))) + { + duration->OnValueRefreshed(decodeDuration(_data[3])); + duration->Release(); + } + } } return true; } @@ -162,12 +191,37 @@ namespace OpenZWave Log::Write(LogLevel_Info, GetNodeId(), "Received Basic set from node %d: level=%d. Treating it as a Basic report.", GetNodeId(), _data[1]); if (!m_com.GetFlagBool(COMPAT_FLAG_BASIC_IGNOREREMAPPING) && m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING) != 0) { - UpdateMappedClass(_instance, m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING), _data[1]); + /* update our Mapped Class with the Target Values */ + if (GetVersion() >= 2 && _length >= 4) + UpdateMappedClass(_instance, m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING), _data[2]); + else + UpdateMappedClass(_instance, m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING), _data[1]); } - else if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_Basic::Set))) + else { - value->OnValueRefreshed(_data[1]); - value->Release(); + if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_Basic::Set))) + { + value->OnValueRefreshed(_data[1]); + value->Release(); + } + else + { + Log::Write(LogLevel_Warning, GetNodeId(), "No Valid Mapping for Basic Command Class and No ValueID Exported. Error?"); + } + + if (_length >= 4) + { + if (Internal::VC::ValueByte* target = static_cast(GetValue(_instance, ValueID_Index_Basic::Target))) + { + target->OnValueRefreshed(_data[2]); + target->Release(); + } + if (Internal::VC::ValueInt* duration = static_cast(GetValue(_instance, ValueID_Index_Basic::Duration))) + { + duration->OnValueRefreshed(decodeDuration(_data[3])); + duration->Release(); + } + } } } else @@ -192,7 +246,7 @@ namespace OpenZWave //----------------------------------------------------------------------------- bool Basic::SetValue(Internal::VC::Value const& _value) { - if (ValueID::ValueType_Byte == _value.GetID().GetType()) + if (ValueID_Index_Basic::Set == _value.GetID().GetIndex()) { Internal::VC::ValueByte const* value = static_cast(&_value); @@ -218,7 +272,20 @@ namespace OpenZWave //----------------------------------------------------------------------------- void Basic::CreateVars(uint8 const _instance) { - m_instances.push_back(_instance); + if (m_com.GetFlagBool(COMPAT_FLAG_BASIC_IGNOREREMAPPING) || (m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING) == 0)) + { + Log::Write(LogLevel_Info, GetNodeId(), "COMMAND_CLASS_BASIC is not mapped to another CC. Exposing ValueID"); + if (Node* node = GetNodeUnsafe()) + { + node->CreateValueByte(ValueID::ValueGenre_Basic, GetCommandClassId(), _instance, ValueID_Index_Basic::Set, "Basic", "", IsAfterMark(), false, 0, 0); + if ((GetVersion() >= 2) || (IsAfterMark())) + { + node->CreateValueByte(ValueID::ValueGenre_Basic, GetCommandClassId(), _instance, ValueID_Index_Basic::Target, "Basic Target", "", true, false, 0, 0); + node->CreateValueInt(ValueID::ValueGenre_Basic, GetCommandClassId(), _instance, ValueID_Index_Basic::Duration, "Basic Duration", "", true, false, 0, 0); + } + } + } + } //----------------------------------------------------------------------------- @@ -240,54 +307,36 @@ namespace OpenZWave // // Map COMMAND_CLASS_BASIC messages to another command class //----------------------------------------------------------------------------- - bool Basic::SetMapping(uint8 const _commandClassId, bool const _doLog) + bool Basic::SetMapping(uint8 const _commandClassId) { bool res = false; if (_commandClassId != NoOperation::StaticGetCommandClassId()) { - if (_doLog) + char str[16]; + snprintf(str, sizeof(str), "0x%02x", _commandClassId); + string ccstr = str; + if (Node const* node = GetNodeUnsafe()) { - char str[16]; - snprintf(str, sizeof(str), "0x%02x", _commandClassId); - string ccstr = str; - if (Node const* node = GetNodeUnsafe()) - { - if (CommandClass* cc = node->GetCommandClass(_commandClassId)) - { - ccstr = cc->GetCommandClassName(); - } - } - if (m_com.GetFlagBool(COMPAT_FLAG_BASIC_IGNOREREMAPPING)) - { - Log::Write(LogLevel_Info, GetNodeId(), " COMMAND_CLASS_BASIC will not be mapped to %s (ignored)", ccstr.c_str()); - } - else + if (CommandClass* cc = node->GetCommandClass(_commandClassId)) { - Log::Write(LogLevel_Info, GetNodeId(), " COMMAND_CLASS_BASIC will be mapped to %s", ccstr.c_str()); + ccstr = cc->GetCommandClassName(); } } - m_com.SetFlagByte(COMPAT_FLAG_BASIC_MAPPING, _commandClassId); - RemoveValue(1, ValueID_Index_Basic::Set); - res = true; - } - - if (m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING) == 0) - { - if (_doLog) - Log::Write(LogLevel_Info, GetNodeId(), " COMMAND_CLASS_BASIC is not mapped"); - if (Node* node = GetNodeUnsafe()) + if (m_com.GetFlagBool(COMPAT_FLAG_BASIC_IGNOREREMAPPING)) { - if (m_instances.size() > 0) - { - for (unsigned int i = 0; i < m_instances.size(); i++) - node->CreateValueByte(ValueID::ValueGenre_Basic, GetCommandClassId(), m_instances[i], ValueID_Index_Basic::Set, "Basic", "", false, false, 0, 0); - } - else - { - node->CreateValueByte(ValueID::ValueGenre_Basic, GetCommandClassId(), 0, ValueID_Index_Basic::Set, "Basic", "", false, false, 0, 0); - } + Log::Write(LogLevel_Info, GetNodeId(), " COMMAND_CLASS_BASIC will not be mapped to %s (ignored)", ccstr.c_str()); + m_com.SetFlagByte(COMPAT_FLAG_BASIC_MAPPING, 0); } + else + { + Log::Write(LogLevel_Info, GetNodeId(), " COMMAND_CLASS_BASIC will be mapped to %s", ccstr.c_str()); + m_com.SetFlagByte(COMPAT_FLAG_BASIC_MAPPING, _commandClassId); + RemoveValue(1, ValueID_Index_Basic::Set); + RemoveValue(1, ValueID_Index_Basic::Target); + RemoveValue(1, ValueID_Index_Basic::Duration); + } + res = true; } return res; } diff --git a/cpp/src/command_classes/Basic.h b/cpp/src/command_classes/Basic.h index 874a5a0208..6e8b13f2d6 100644 --- a/cpp/src/command_classes/Basic.h +++ b/cpp/src/command_classes/Basic.h @@ -59,7 +59,7 @@ namespace OpenZWave return "COMMAND_CLASS_BASIC"; } - bool SetMapping(uint8 const _commandClassId, bool const _doLog = true); // Map COMMAND_CLASS_BASIC messages to another command class + bool SetMapping(uint8 const _commandClassId); // Map COMMAND_CLASS_BASIC messages to another command class uint8_t GetMapping() { return m_com.GetFlagByte(COMPAT_FLAG_BASIC_MAPPING); @@ -83,6 +83,12 @@ namespace OpenZWave void Set(uint8 const _level); + virtual uint8 GetMaxVersion() override + { + return 2; + } + + protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/Battery.h b/cpp/src/command_classes/Battery.h index af11bb6cff..e78272b0ea 100644 --- a/cpp/src/command_classes/Battery.h +++ b/cpp/src/command_classes/Battery.h @@ -71,7 +71,10 @@ namespace OpenZWave return StaticGetCommandClassName(); } virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; - + + bool supportsMultiInstance() override { + return false; + } protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/CRC16Encap.h b/cpp/src/command_classes/CRC16Encap.h index d574385748..66c1090a27 100644 --- a/cpp/src/command_classes/CRC16Encap.h +++ b/cpp/src/command_classes/CRC16Encap.h @@ -70,6 +70,9 @@ namespace OpenZWave } virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; + bool supportsMultiInstance() override { + return false; + } private: CRC16Encap(uint32 const _homeId, uint8 const _nodeId) : CommandClass(_homeId, _nodeId) diff --git a/cpp/src/command_classes/CentralScene.cpp b/cpp/src/command_classes/CentralScene.cpp index 330ff71ad7..d088894547 100644 --- a/cpp/src/command_classes/CentralScene.cpp +++ b/cpp/src/command_classes/CentralScene.cpp @@ -209,7 +209,7 @@ namespace OpenZWave identical = _data[2] & 0x01; Log::Write(LogLevel_Detail, GetNodeId(), "CentralScene: all scenes identical? %i", identical); if (GetVersion() >= 3) - m_slowrefresh = (_data[2] & 0x80) == 1 ? true : false; + m_slowrefresh = (_data[2] & 0x80) ? true : false; } if (Internal::VC::ValueInt* value = static_cast(GetValue(_instance, ValueID_Index_CentralScene::SceneCount))) @@ -221,7 +221,7 @@ namespace OpenZWave { Log::Write(LogLevel_Warning, GetNodeId(), "Can't find ValueID for SceneCount"); } - + Log::Write(LogLevel_Info, GetNodeId(), "Central Scene Contains %d Scenes that are%sidentical", m_dom.GetFlagByte(STATE_FLAG_CS_SCENECOUNT), identical ? " " : " not "); for (int sceneID = 1; sceneID <= m_dom.GetFlagByte(STATE_FLAG_CS_SCENECOUNT); sceneID++) { if (GetVersion() == 1) @@ -240,6 +240,7 @@ namespace OpenZWave char lbl[64]; snprintf(lbl, 64, "Scene %d", sceneID); node->CreateValueList(ValueID::ValueGenre_User, GetCommandClassId(), _instance, sceneID, lbl, "", true, false, 3, items, 0, 0); + Log::Write(LogLevel_Info, GetNodeId(), "Created Scene %d (Version 1)", sceneID); } } if (GetVersion() >= 2) @@ -254,8 +255,10 @@ namespace OpenZWave int keyAttributes = _data[2 + sceneID]; createSupportedKeyAttributesValues(keyAttributes, sceneID, _instance); } + Log::Write(LogLevel_Info, GetNodeId(), "Created Scene %d", sceneID); } } + return true; } return false; diff --git a/cpp/src/command_classes/Color.cpp b/cpp/src/command_classes/Color.cpp index 98e42cb050..fe97a028d6 100644 --- a/cpp/src/command_classes/Color.cpp +++ b/cpp/src/command_classes/Color.cpp @@ -116,6 +116,7 @@ namespace OpenZWave if (m_dom.GetFlagShort(STATE_FLAG_COLOR_CHANNELS) == 0) { Msg* msg = new Msg("ColorCmd_CapabilityGet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + msg->SetInstance(this, _instance); msg->Append(GetNodeId()); msg->Append(2); msg->Append(GetCommandClassId()); @@ -304,7 +305,9 @@ namespace OpenZWave } if (GetVersion() > 1) - node->CreateValueByte(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_Color::Duration, "Duration", "Sec", false, false, 255, 0); + node->CreateValueInt(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_Color::Duration, "Duration", "Sec", false, false, -1, 0); + if (GetVersion() > 2) + node->CreateValueString(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_Color::Target, "Target Color", helpstr, true, false, "#000000", 0); } return true; @@ -338,6 +341,8 @@ namespace OpenZWave } } m_colorvalues[coloridx] = _data[2]; + if (GetVersion() >= 3) + m_colorTargetValues[coloridx] = _data[3]; /* test if there are any more valid coloridx */ for (uint8 idx = coloridx + 1; idx < 9; idx++) @@ -351,287 +356,272 @@ namespace OpenZWave m_refreshinprogress = false; /* if we get here, then we can update our ValueID */ + + string colorStr = decodeColor(m_colorvalues); + if (Internal::VC::ValueString* color = static_cast(GetValue(_instance, ValueID_Index_Color::Color))) { - /* create a RGB[W] String */ - std::stringstream ss; - std::stringstream ssbuf; - bool usingbuf = false; - uint16_t f_capabilities = m_dom.GetFlagShort(STATE_FLAG_COLOR_CHANNELS); - 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]; - 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]; - 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]; - else - ss << "00"; - - /* if both whites are present.... */ - 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]; - } - 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]; - } - 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]; - } - else - { - /* we put 0000 into our buffer to represent both Warm and Cold white */ - ssbuf << "0000"; - usingbuf = true; - } - if ((f_capabilities) & (1 << (COLORIDX_AMBER))) - { - /* if AMBER is present, append our buffer if needed */ - if (usingbuf) - { - ss << ssbuf.str(); - ssbuf.str(""); - ssbuf.clear(); - usingbuf = false; - } - /* and then our Color */ - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_AMBER]; - } - else - { - /* put 00 into our buffer */ - ssbuf << "00"; - usingbuf = true; - } - if ((f_capabilities) & (1 << (COLORIDX_CYAN))) + Log::Write(LogLevel_Info, GetNodeId(), "Received a updated Color from Device: %s", colorStr.c_str()); + if (GetVersion() >= 3) + color->SetTargetValue(decodeColor(m_colorTargetValues), _data[4]); + 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))) { - /* if CYAN is present, append our buffer if needed */ - if (usingbuf) - { - ss << ssbuf.str(); - ssbuf.str(""); - ssbuf.clear(); - usingbuf = false; - } - /* and then our Color */ - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_CYAN]; - } + coloridx->OnValueRefreshed(m_colorvalues[COLORIDX_INDEXCOLOR]); + } else { - /* put 00 into our buffer */ - ssbuf << "00"; - usingbuf = true; + coloridx->OnValueRefreshed(decodeColorList(colorStr)); } - if ((f_capabilities) & (1 << (COLORIDX_PURPLE))) + coloridx->Release(); + } + if (GetVersion() >= 3) + { + string colorTargetStr = decodeColor(m_colorTargetValues); + + if (Internal::VC::ValueString* color = static_cast(GetValue(_instance, ValueID_Index_Color::Target))) { - /* if PURPLE is present, append our buffer if needed */ - if (usingbuf) - { - ss << ssbuf.str(); - ssbuf.str(""); - ssbuf.clear(); - usingbuf = false; - } - /* and then our Color */ - ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_PURPLE]; + Log::Write(LogLevel_Info, GetNodeId(), "Received a updated Color Target from Device: %s", colorStr.c_str()); + color->OnValueRefreshed(colorStr); + color->Release(); } - /* 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 - */ + } - Log::Write(LogLevel_Info, GetNodeId(), "Received a updated Color from Device: %s", ss.str().c_str()); - color->OnValueRefreshed(string(ss.str())); - color->Release(); + return true; + } + return false; + } - /* if we don't support the Color Index then fake it */ - if (!(f_capabilities & (1 << (COLORIDX_INDEXCOLOR)))) - { - if (Internal::VC::ValueList* coloridx = static_cast(GetValue(_instance, ValueID_Index_Color::Index))) - { - /* it supports the AMBER/CYAN/PURPLE Channels */ - if (f_capabilities > 31) - { - /* Custom */ - coloridx->OnValueRefreshed(17); - coloridx->Release(); - return true; - } - if ((f_capabilities) & (1 << (COLORIDX_WARMWHITE))) - { - if (ss.str().substr(0, 9) == "#000000FF") - { - /* Warm White */ - coloridx->OnValueRefreshed(2); - coloridx->Release(); - return true; - } - } - if ((f_capabilities) & (1 << (COLORIDX_COLDWHITE))) - { - if (ss.str().substr(0, 11) == "#00000000FF") - { - /* Cool White */ - coloridx->OnValueRefreshed(1); - coloridx->Release(); - return true; - } - } - if (ss.str().substr(0, 7) == "#000000") - { - /* off */ - coloridx->OnValueRefreshed(0); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#FFFFFF") - { - /* White */ - coloridx->OnValueRefreshed(1); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#FF9329") - { - /* warm white */ - coloridx->OnValueRefreshed(2); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#FF0000") - { - /* red */ - coloridx->OnValueRefreshed(3); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#00FF00") - { - /* lime */ - coloridx->OnValueRefreshed(4); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#0000FF") - { - /* blue */ - coloridx->OnValueRefreshed(5); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#FFFF00") - { - /* yellow */ - coloridx->OnValueRefreshed(6); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#00FFFF") - { - /* Cyan */ - coloridx->OnValueRefreshed(7); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#FF00FF") - { - /* Magenta */ - coloridx->OnValueRefreshed(8); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#C0C0C0") - { - /* Silver */ - coloridx->OnValueRefreshed(9); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#808080") - { - /* gray */ - coloridx->OnValueRefreshed(10); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#800000") - { - /* maroon */ - coloridx->OnValueRefreshed(11); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#808000") - { - /* Olive */ - coloridx->OnValueRefreshed(12); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#008000") - { - /* green */ - coloridx->OnValueRefreshed(13); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#800080") - { - /* purple */ - coloridx->OnValueRefreshed(14); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#008080") - { - /* teal */ - coloridx->OnValueRefreshed(15); - coloridx->Release(); - return true; - } - else if (ss.str().substr(0, 7) == "#000080") - { - /* navy */ - coloridx->OnValueRefreshed(16); - coloridx->Release(); - return true; - } - else - { - /* custom */ - coloridx->OnValueRefreshed(17); - coloridx->Release(); - return true; - } + uint8 Color::decodeColorList(string colorStr) + { + uint16_t f_capabilities = m_dom.GetFlagShort(STATE_FLAG_COLOR_CHANNELS); - } + /* if we don't support the Color Index then fake it */ + if (!(f_capabilities & (1 << (COLORIDX_INDEXCOLOR)))) + { + /* it supports the AMBER/CYAN/PURPLE Channels */ + if (f_capabilities > 31) + { + /* Custom */ + return 17; + } + if ((f_capabilities) & (1 << (COLORIDX_WARMWHITE))) + { + if (colorStr.substr(0, 9) == "#000000FF") + { + /* Warm White */ + return 2; } } - /* if we got a updated Color Index Value - Update our ValueID */ - if ((m_dom.GetFlagShort(STATE_FLAG_COLOR_CHANNELS)) & (1 << (COLORIDX_INDEXCOLOR))) + if ((f_capabilities) & (1 << (COLORIDX_COLDWHITE))) { - if (Internal::VC::ValueList* coloridx = static_cast(GetValue(_instance, ValueID_Index_Color::Index))) + if (colorStr.substr(0, 11) == "#00000000FF") { - coloridx->OnValueRefreshed(m_colorvalues[COLORIDX_INDEXCOLOR]); - coloridx->Release(); + /* Cool White */ + return 1; } } - return true; + if (colorStr.substr(0, 7) == "#000000") + { + /* off */ + return 0; + } + else if (colorStr.substr(0, 7) == "#FFFFFF") + { + /* White */ + return 1; + } + else if (colorStr.substr(0, 7) == "#FF9329") + { + /* warm white */ + return 2; + } + else if (colorStr.substr(0, 7) == "#FF0000") + { + /* red */ + return 3; + } + else if (colorStr.substr(0, 7) == "#00FF00") + { + /* lime */ + return 4; + } + else if (colorStr.substr(0, 7) == "#0000FF") + { + /* blue */ + return 5; + } + else if (colorStr.substr(0, 7) == "#FFFF00") + { + /* yellow */ + return 6; + } + else if (colorStr.substr(0, 7) == "#00FFFF") + { + /* Cyan */ + return 7; + } + else if (colorStr.substr(0, 7) == "#FF00FF") + { + /* Magenta */ + return 8; + } + else if (colorStr.substr(0, 7) == "#C0C0C0") + { + /* Silver */ + return 9; + } + else if (colorStr.substr(0, 7) == "#808080") + { + /* gray */ + return 10; + } + else if (colorStr.substr(0, 7) == "#800000") + { + /* maroon */ + return 11; + } + else if (colorStr.substr(0, 7) == "#808000") + { + /* Olive */ + return 12; + } + else if (colorStr.substr(0, 7) == "#008000") + { + /* green */ + return 13; + } + else if (colorStr.substr(0, 7) == "#800080") + { + /* purple */ + return 14; + } + else if (colorStr.substr(0, 7) == "#008080") + { + /* teal */ + return 15; + } + else if (colorStr.substr(0, 7) == "#000080") + { + /* navy */ + return 16; + } + else + { + /* custom */ + return 17; + } } - return false; + return 17; + } + + string Color::decodeColor(uint8 valueArray[9]) + { + /* create a RGB[W] String */ + std::stringstream ss; + std::stringstream ssbuf; + bool usingbuf = false; + uint16_t f_capabilities = m_dom.GetFlagShort(STATE_FLAG_COLOR_CHANNELS); + 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]; + 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]; + 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]; + else + ss << "00"; + + /* if both whites are present.... */ + 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]; + } + 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]; + } + 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]; + } + else + { + /* we put 0000 into our buffer to represent both Warm and Cold white */ + ssbuf << "0000"; + usingbuf = true; + } + if ((f_capabilities) & (1 << (COLORIDX_AMBER))) + { + /* if AMBER is present, append our buffer if needed */ + if (usingbuf) + { + ss << ssbuf.str(); + ssbuf.str(""); + ssbuf.clear(); + usingbuf = false; + } + /* and then our Color */ + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_AMBER]; + } + else + { + /* put 00 into our buffer */ + ssbuf << "00"; + usingbuf = true; + } + if ((f_capabilities) & (1 << (COLORIDX_CYAN))) + { + /* if CYAN is present, append our buffer if needed */ + if (usingbuf) + { + ss << ssbuf.str(); + ssbuf.str(""); + ssbuf.clear(); + usingbuf = false; + } + /* and then our Color */ + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[COLORIDX_CYAN]; + } + else + { + /* put 00 into our buffer */ + ssbuf << "00"; + usingbuf = true; + } + if ((f_capabilities) & (1 << (COLORIDX_PURPLE))) + { + /* if PURPLE is present, append our buffer if needed */ + if (usingbuf) + { + ss << ssbuf.str(); + ssbuf.str(""); + ssbuf.clear(); + usingbuf = false; + } + /* and then our Color */ + ss << std::setw(2) << std::uppercase << std::hex << std::setfill('0') << (int) m_colorvalues[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 + */ + return ss.str(); } //----------------------------------------------------------------------------- @@ -728,7 +718,7 @@ namespace OpenZWave msg->Append(colvals[COLORIDX_GREEN]); msg->Append(COLORIDX_BLUE); msg->Append(colvals[COLORIDX_BLUE]); - if (colvalset[COLORIDX_WARMWHITE] & !colvalset[COLORIDX_COLDWHITE]) + if (colvalset[COLORIDX_WARMWHITE] && !colvalset[COLORIDX_COLDWHITE]) { msg->Append(COLORIDX_WARMWHITE); msg->Append(colvals[COLORIDX_WARMWHITE]); @@ -757,12 +747,12 @@ namespace OpenZWave } if (GetVersion() > 1) { - uint8 duration = 0; - if (Internal::VC::ValueByte *valduration = static_cast(GetValue(_value.GetID().GetInstance(), ValueID_Index_Color::Duration))) + uint32 duration = 15300; + if (Internal::VC::ValueInt *valduration = static_cast(GetValue(_value.GetID().GetInstance(), ValueID_Index_Color::Duration))) { duration = valduration->GetValue(); } - msg->Append(duration); + msg->Append(encodeDuration(duration)); } msg->Append(GetDriver()->GetTransmitOptions()); GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); @@ -796,12 +786,12 @@ namespace OpenZWave msg->Append(index); if (GetVersion() > 1) { - uint8 duration = 0; - if (Internal::VC::ValueByte *valduration = static_cast(GetValue(_value.GetID().GetInstance(), ValueID_Index_Color::Duration))) + uint32 duration = 15300; + if (Internal::VC::ValueInt *valduration = static_cast(GetValue(_value.GetID().GetInstance(), ValueID_Index_Color::Duration))) { duration = valduration->GetValue(); } - msg->Append(duration); + msg->Append(encodeDuration(duration)); } msg->Append(GetDriver()->GetTransmitOptions()); GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); @@ -1069,12 +1059,12 @@ namespace OpenZWave } if (GetVersion() > 1) { - uint8 duration = 0; - if (Internal::VC::ValueByte *valduration = static_cast(GetValue(_value.GetID().GetInstance(), ValueID_Index_Color::Duration))) + uint32 duration = 0; + if (Internal::VC::ValueInt *valduration = static_cast(GetValue(_value.GetID().GetInstance(), ValueID_Index_Color::Duration))) { duration = valduration->GetValue(); } - msg->Append(duration); + msg->Append(encodeDuration(duration)); } msg->Append(GetDriver()->GetTransmitOptions()); GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); @@ -1084,9 +1074,9 @@ namespace OpenZWave else if (ValueID_Index_Color::Duration == _value.GetID().GetIndex()) { Log::Write(LogLevel_Info, GetNodeId(), "Color::SetValue - Setting Color Fade Duration"); - Internal::VC::ValueByte const* value = static_cast(&_value); - uint8 _duration = value->GetValue(); - if (Internal::VC::ValueByte * m_value = static_cast(GetValue(_value.GetID().GetInstance(), ValueID_Index_Color::Duration))) + Internal::VC::ValueInt const* value = static_cast(&_value); + int32 _duration = value->GetValue(); + if (Internal::VC::ValueInt * m_value = static_cast(GetValue(_value.GetID().GetInstance(), ValueID_Index_Color::Duration))) { m_value->OnValueRefreshed(_duration); m_value->Release(); diff --git a/cpp/src/command_classes/Color.h b/cpp/src/command_classes/Color.h index 96c54ab603..104ace81f8 100644 --- a/cpp/src/command_classes/Color.h +++ b/cpp/src/command_classes/Color.h @@ -82,12 +82,15 @@ namespace OpenZWave protected: virtual void CreateVars(uint8 const _instance) override; + string decodeColor(uint8 valueArray[9]); + uint8 decodeColorList(string color); private: Color(uint32 const _homeId, uint8 const _nodeId); bool m_refreshinprogress; uint8 m_coloridxcount; uint8 m_colorvalues[9]; + uint8 m_colorTargetValues[9]; }; } // namespace CC } // namespace Internal diff --git a/cpp/src/command_classes/CommandClass.cpp b/cpp/src/command_classes/CommandClass.cpp index b6f25f1429..e222d69d61 100644 --- a/cpp/src/command_classes/CommandClass.cpp +++ b/cpp/src/command_classes/CommandClass.cpp @@ -68,7 +68,8 @@ namespace OpenZWave m_com.EnableFlag(COMPAT_FLAG_CREATEVARS, true); m_com.EnableFlag(COMPAT_FLAG_REFRESHONWAKEUP, false); m_com.EnableFlag(COMPAT_FLAG_VERIFYCHANGED, false); - m_dom.EnableFlag(STATE_FLAG_CCVERSION, 1); + m_com.EnableFlag(COMPAT_FLAG_NO_REFRESH_AFTER_SET, false); + m_dom.EnableFlag(STATE_FLAG_CCVERSION, 0); m_dom.EnableFlag(STATE_FLAG_STATIC_REQUESTS, 0); m_dom.EnableFlag(STATE_FLAG_AFTERMARK, false); m_dom.EnableFlag(STATE_FLAG_ENCRYPTED, false); @@ -89,20 +90,10 @@ namespace OpenZWave } while (!m_RefreshClassValues.empty()) { - for (unsigned int i = 0; i < m_RefreshClassValues.size(); i++) + multimap::iterator it; + for (it = m_RefreshClassValues.begin(); it != m_RefreshClassValues.end(); it++) { - RefreshValue *rcc = m_RefreshClassValues.at(i); - while (!rcc->RefreshClasses.empty()) - { - delete rcc->RefreshClasses.back(); - rcc->RefreshClasses.pop_back(); - } - // for (unsigned int j = 0; j < rcc->RefreshClasses.size(); i++) - // { - // delete rcc->RefreshClasses[j]; - // } - rcc->RefreshClasses.clear(); - delete rcc; + delete it->second; } m_RefreshClassValues.clear(); } @@ -179,10 +170,6 @@ namespace OpenZWave if (!m_instances.IsSet(_endPoint)) { m_instances.Set(_endPoint); - if (m_com.GetFlagBool(COMPAT_FLAG_CREATEVARS)) - { - CreateVars(_endPoint); - } } } @@ -294,21 +281,25 @@ namespace OpenZWave { char const* str; - bool ok = false; - const char *genre; - RefreshValue *rcc = new RefreshValue(); - rcc->cc = GetCommandClassId(); - genre = _ccElement->Attribute("Genre"); - rcc->genre = Internal::VC::Value::GetGenreEnumFromName(genre); + uint16 sourceIdx; + bool ok = true; int temp; - _ccElement->QueryIntAttribute("Instance", &temp); - rcc->instance = (uint8) temp; _ccElement->QueryIntAttribute("Index", &temp); - rcc->index = (uint8) temp; - Log::Write(LogLevel_Info, GetNodeId(), "Value Refresh triggered by CommandClass: %s, Genre: %d, Instance: %d, Index: %d for:", GetCommandClassName().c_str(), rcc->genre, rcc->instance, rcc->index); + sourceIdx = (uint16) temp; + + /* check if we have a entry already */ + if (m_RefreshClassValues.find(sourceIdx) != m_RefreshClassValues.end()) + { + Log::Write(LogLevel_Warning, GetNodeId(), "TriggerRefreshValue - A Entry already exists for CC %s Index %d", GetCommandClassName().c_str(), sourceIdx); + return; + } + + + Log::Write(LogLevel_Info, GetNodeId(), "Value Refresh triggered by CommandClass: %s, Index: %d for:", GetCommandClassName().c_str(), sourceIdx); TiXmlElement const* child = _ccElement->FirstChildElement(); while (child) { + ok = true; str = child->Value(); if (str) { @@ -317,35 +308,44 @@ namespace OpenZWave RefreshValue *arcc = new RefreshValue(); if (child->QueryIntAttribute("CommandClass", &temp) != TIXML_SUCCESS) { - Log::Write(LogLevel_Warning, GetNodeId(), " Invalid XML - CommandClass Attribute is wrong type or missing"); + Log::Write(LogLevel_Warning, GetNodeId(), "\tInvalid XML - CommandClass Attribute is wrong type or missing"); child = child->NextSiblingElement(); continue; } arcc->cc = (uint8) temp; if (child->QueryIntAttribute("RequestFlags", &temp) != TIXML_SUCCESS) { - Log::Write(LogLevel_Warning, GetNodeId(), " Invalid XML - RequestFlags Attribute is wrong type or missing"); + Log::Write(LogLevel_Warning, GetNodeId(), "\tInvalid XML - RequestFlags Attribute is wrong type or missing"); child = child->NextSiblingElement(); continue; } - arcc->genre = (uint8) temp; - if (child->QueryIntAttribute("Instance", &temp) != TIXML_SUCCESS) + arcc->requestflags = (uint8) temp; + if (child->QueryIntAttribute("Index", &temp) != TIXML_SUCCESS) { - Log::Write(LogLevel_Warning, GetNodeId(), " Invalid XML - Instance Attribute is wrong type or missing"); + Log::Write(LogLevel_Warning, GetNodeId(), "\tInvalid XML - Index Attribute is wrong type or missing"); child = child->NextSiblingElement(); continue; } - arcc->instance = (uint8) temp; - if (child->QueryIntAttribute("Index", &temp) != TIXML_SUCCESS) + arcc->index = (uint16) temp; + /* check for Duplicates */ + multimap::iterator it; + for (it = m_RefreshClassValues.begin(); it != m_RefreshClassValues.end(); it++) { - Log::Write(LogLevel_Warning, GetNodeId(), " Invalid XML - Index Attribute is wrong type or missing"); - child = child->NextSiblingElement(); - continue; + uint16 idx = it->first; + RefreshValue *rv = it->second; + if ((idx == sourceIdx) && (rv->cc == arcc->cc) && (rv->requestflags == arcc->requestflags) && (rv->index == arcc->index)) + { + Log::Write(LogLevel_Warning, GetNodeId(), "\tTarget Exists: CC %s Index %d", CommandClasses::GetName(arcc->cc).c_str(), arcc->index); + delete arcc; + ok = false; + break; + } + } + if (ok) + { + Log::Write(LogLevel_Info, GetNodeId(), "\tCommandClass: %s, RequestFlags: %d, Index: %d", CommandClasses::GetName(arcc->cc).c_str(), arcc->requestflags, arcc->index); + m_RefreshClassValues.insert(std::make_pair(sourceIdx, arcc)); } - arcc->index = (uint8) temp; - Log::Write(LogLevel_Info, GetNodeId(), " CommandClass: %s, RequestFlags: %d, Instance: %d, Index: %d", CommandClasses::GetName(arcc->cc).c_str(), arcc->genre, arcc->instance, arcc->index); - rcc->RefreshClasses.push_back(arcc); - ok = true; } else { @@ -354,15 +354,6 @@ namespace OpenZWave } child = child->NextSiblingElement(); } - if (ok == true) - { - m_RefreshClassValues.push_back(rcc); - } - else - { - Log::Write(LogLevel_Warning, GetNodeId(), "Failed to add a RefreshClassValue from XML"); - delete rcc; - } } //----------------------------------------------------------------------------- @@ -373,30 +364,24 @@ namespace OpenZWave bool CommandClass::CheckForRefreshValues(Internal::VC::Value const* _value) { - if (m_RefreshClassValues.empty()) - { - //Log::Write(LogLevel_Debug, GetNodeId(), "Bailing out of CheckForRefreshValues"); + /* if there are no values here... */ + if (m_RefreshClassValues.find(_value->GetID().GetIndex()) == m_RefreshClassValues.end()) return false; - } + Node* node = GetNodeUnsafe(); if (node != NULL) { - for (uint32 i = 0; i < m_RefreshClassValues.size(); i++) + multimap::iterator it; + for (it = m_RefreshClassValues.find(_value->GetID().GetIndex()); it != m_RefreshClassValues.end(); it++) { - RefreshValue *rcc = m_RefreshClassValues.at(i); - //Log::Write(LogLevel_Debug, GetNodeId(), "Checking Value Against RefreshClassList: CommandClass %s = %s, Genre %d = %d, Instance %d = %d, Index %d = %d", CommandClasses::GetName(rcc->cc).c_str(), CommandClasses::GetName(_value->GetID().GetCommandClassId()).c_str(), rcc->genre, _value->GetID().GetGenre(), rcc->instance, _value->GetID().GetInstance(), rcc->index, _value->GetID().GetIndex()); - if ((rcc->genre == _value->GetID().GetGenre()) && (rcc->instance == _value->GetID().GetInstance()) && (rcc->index == _value->GetID().GetIndex())) + RefreshValue *rcc = it->second; + /* just to be sure we have the right index */ + if (it->first != _value->GetID().GetIndex()) + return false; + Log::Write(LogLevel_Debug, GetNodeId(), "Requesting Refresh of Value: CommandClass: %s Instance %d, Index %d", CommandClasses::GetName(rcc->cc).c_str(), _value->GetID().GetInstance(), rcc->index); + if (CommandClass* cc = node->GetCommandClass(rcc->cc)) { - /* we got a match..... */ - for (uint32 j = 0; j < rcc->RefreshClasses.size(); j++) - { - RefreshValue *arcc = rcc->RefreshClasses.at(j); - Log::Write(LogLevel_Debug, GetNodeId(), "Requesting Refresh of Value: CommandClass: %s Genre %d, Instance %d, Index %d", CommandClasses::GetName(arcc->cc).c_str(), arcc->genre, arcc->instance, arcc->index); - if (CommandClass* cc = node->GetCommandClass(arcc->cc)) - { - cc->RequestValue(arcc->genre, arcc->index, arcc->instance, Driver::MsgQueue_Send); - } - } + cc->RequestValue(rcc->requestflags, rcc->index, _value->GetID().GetInstance(), Driver::MsgQueue_Send); } } } @@ -454,23 +439,29 @@ namespace OpenZWave } } // Write out the TriggerRefreshValue if it exists - for (uint32 i = 0; i < m_RefreshClassValues.size(); i++) - { - RefreshValue *rcc = m_RefreshClassValues.at(i); - TiXmlElement* RefreshElement = new TiXmlElement("TriggerRefreshValue"); - _ccElement->LinkEndChild(RefreshElement); - RefreshElement->SetAttribute("Genre", Internal::VC::Value::GetGenreNameFromEnum((ValueID::ValueGenre) rcc->genre)); - RefreshElement->SetAttribute("Instance", rcc->instance); - RefreshElement->SetAttribute("Index", rcc->index); - for (uint32 j = 0; j < rcc->RefreshClasses.size(); j++) - { - RefreshValue *arcc = rcc->RefreshClasses.at(j); + multimap::iterator it; + uint16 sourceidx = 0; + TiXmlElement* RefreshElement = nullptr; + + for (it = m_RefreshClassValues.begin(); it != m_RefreshClassValues.end(); it++) + { + RefreshValue *rcc = it->second; + if (sourceidx != it->first) { + RefreshElement = new TiXmlElement("TriggerRefreshValue"); + _ccElement->LinkEndChild(RefreshElement); + RefreshElement->SetAttribute("Index", it->first); + sourceidx = it->first; + } + if (RefreshElement) { TiXmlElement *ClassElement = new TiXmlElement("RefreshClassValue"); RefreshElement->LinkEndChild(ClassElement); - ClassElement->SetAttribute("CommandClass", arcc->cc); - ClassElement->SetAttribute("RequestFlags", arcc->genre); - ClassElement->SetAttribute("Instance", arcc->instance); - ClassElement->SetAttribute("Index", arcc->index); + ClassElement->SetAttribute("CommandClass", rcc->cc); + ClassElement->SetAttribute("RequestFlags", rcc->requestflags); + ClassElement->SetAttribute("Index", rcc->index); + } + else + { + Log::Write(LogLevel_Warning, GetNodeId(), "CommandClass::WriteXML: - RefreshElement was empty for index %d", it->first); } } } @@ -571,6 +562,37 @@ namespace OpenZWave return res; } +//----------------------------------------------------------------------------- +// +// Decode the Duration Field to Seconds - CC:0000.00.00.11.016 +//----------------------------------------------------------------------------- + + uint32 CommandClass::decodeDuration(uint8 data) const + { + if (data <= 0x7f) + return data; + if ((data > 0x7f) && (data <= 0xFD)) + return ((data - 0x7F)*60); + /* a 0xFE means Unknown Duration + * and 0xFF is Reserved - So lets return -1 (to wrap our Int) + */ + return -1; + } + + uint8 CommandClass::encodeDuration(uint32 seconds) const + { + if (seconds <= 0x7f) + return (seconds & 0xFF); + /* 7620 seconds is the max that can fit into our scale, so anything above that, use it as the Default Duration + * its 7620 as we only can go upto 127 minutes - See https://github.com/OpenZWave/open-zwave/issues/1321#issuecomment-656532282 */ + if (seconds > 7620) + return 0xFF; + /* if we get here, seconds is always going to be at least 2 minutes - 0x7F(127) is > 2 minutes */ + return (uint8)0x79 + ((seconds/60) & 0xFF); + } + + + //----------------------------------------------------------------------------- // // Add a value to a message as a sequence of bytes @@ -803,11 +825,40 @@ namespace OpenZWave } } +//----------------------------------------------------------------------------- +// +// Handles Messages for Controlling CC's (Not Controlled, which is the default) +//----------------------------------------------------------------------------- bool CommandClass::HandleIncomingMsg(uint8 const* _data, uint32 const _length, uint32 const _instance) { Log::Write(LogLevel_Warning, GetNodeId(), "Routing HandleIncomingMsg to HandleMsg - Please Report: %s ", GetCommandClassName().c_str()); return HandleMsg(_data, _length, _instance); } +//----------------------------------------------------------------------------- +// +// Calls CreateVars on the CC for each instance registered with this CC +//----------------------------------------------------------------------------- + void CommandClass::CreateVars() + { + if (m_com.GetFlagBool(COMPAT_FLAG_CREATEVARS)) + { + for (Bitfield::Iterator it = m_instances.Begin(); it != m_instances.End(); ++it) + { + Log::Write(LogLevel_Info, GetNodeId(), "Creating ValueIDs for Instance %d on %s", (uint8)*it, GetCommandClassLabel().c_str()); + CreateVars((uint8) *it); + } + } + } + +//----------------------------------------------------------------------------- +// +// Create ValueID's for Specific Instances. CC's should override this. +//----------------------------------------------------------------------------- + void CommandClass::CreateVars(uint8 const _instance) + { + } + + } // namespace CC } // namespace Internal } // namespace OpenZWave diff --git a/cpp/src/command_classes/CommandClass.h b/cpp/src/command_classes/CommandClass.h index 1b76a5d11d..4dc194a8c9 100644 --- a/cpp/src/command_classes/CommandClass.h +++ b/cpp/src/command_classes/CommandClass.h @@ -146,6 +146,17 @@ namespace OpenZWave return 0; } + 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); /* overridden in the MultiInstance CC to set the Global Label for each Instance */ @@ -199,7 +210,8 @@ namespace OpenZWave // Helper methods string ExtractValue(uint8 const* _data, uint8* _scale, uint8* _precision, uint8 _valueOffset = 1) const; - + uint32 decodeDuration(uint8 data) const; + uint8 encodeDuration(uint32 seconds) const; /** * Append a floating-point value to a message. * \param _msg The message to which the value should be appended. @@ -216,24 +228,18 @@ namespace OpenZWave typedef struct RefreshValue { uint8 cc; - uint8 genre; - uint8 instance; + uint8 requestflags; uint16 index; - std::vector RefreshClasses; } RefreshValue; protected: - virtual void CreateVars(uint8 const _instance) - { - } + virtual void CreateVars(uint8 const _instance); void ReadValueRefreshXML(TiXmlElement const* _ccElement); CompatOptionManager m_com; CompatOptionManager m_dom; public: - virtual void CreateVars(uint8 const _instance, uint8 const _index) - { - } + void CreateVars(); private: uint32 m_homeId; @@ -242,7 +248,7 @@ namespace OpenZWave map m_endPointMap; map m_instanceLabel; bool m_SecureSupport; // Does this commandclass support secure encryption (eg, the Security CC doesn't encrypt itself, so it doesn't support encryption) - std::vector m_RefreshClassValues; // what Command Class Values should we refresh ? + multimap m_RefreshClassValues; // what Command Class Values should we refresh ? string m_commandClassLabel; //----------------------------------------------------------------------------- // Record which items of static data have been read from the device 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 5759727c74..3e60385853 100644 --- a/cpp/src/command_classes/Configuration.cpp +++ b/cpp/src/command_classes/Configuration.cpp @@ -123,7 +123,7 @@ namespace OpenZWave else { char label[16]; - snprintf(label, 16, "Parameter #%d", parameter); + snprintf(label, 16, "Parameter #%hhu", parameter); // Create a new value if (Node* node = GetNodeUnsafe()) diff --git a/cpp/src/command_classes/ControllerReplication.h b/cpp/src/command_classes/ControllerReplication.h index 733514028c..93f0125131 100644 --- a/cpp/src/command_classes/ControllerReplication.h +++ b/cpp/src/command_classes/ControllerReplication.h @@ -74,6 +74,9 @@ namespace OpenZWave void SendNextData(); + bool supportsMultiInstance() override { + return false; + } protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/DeviceResetLocally.h b/cpp/src/command_classes/DeviceResetLocally.h index de3ca3aeea..c009dd50c6 100644 --- a/cpp/src/command_classes/DeviceResetLocally.h +++ b/cpp/src/command_classes/DeviceResetLocally.h @@ -74,7 +74,9 @@ namespace OpenZWave { return m_deviceReset; } - ; + bool supportsMultiInstance() override { + return false; + } private: DeviceResetLocally(uint32 const _homeId, uint8 const _nodeId) : CommandClass(_homeId, _nodeId), m_deviceReset(false) diff --git a/cpp/src/command_classes/DoorLock.cpp b/cpp/src/command_classes/DoorLock.cpp index 877b30e2e8..90c44b8e00 100644 --- a/cpp/src/command_classes/DoorLock.cpp +++ b/cpp/src/command_classes/DoorLock.cpp @@ -463,7 +463,7 @@ namespace OpenZWave for (uint8 i = 0; i < 8; ++i) { item.m_label = c_LockStateNames[i]; - item.m_value = (i < 6) ? i : 0xFF; + item.m_value = (i <= 6) ? i : 0xFF; items.push_back(item); } node->CreateValueList(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_DoorLock::Lock_Mode, "Locked (Advanced)", "", false, false, 1, items, 0, 0); diff --git a/cpp/src/command_classes/Indicator.cpp b/cpp/src/command_classes/Indicator.cpp index 32b646ab5a..ee2f45b7ad 100644 --- a/cpp/src/command_classes/Indicator.cpp +++ b/cpp/src/command_classes/Indicator.cpp @@ -34,6 +34,7 @@ #include "platform/Log.h" #include "value_classes/ValueByte.h" +#include "value_classes/ValueBool.h" namespace OpenZWave { @@ -46,8 +47,171 @@ namespace OpenZWave { IndicatorCmd_Set = 0x01, IndicatorCmd_Get = 0x02, - IndicatorCmd_Report = 0x03 + IndicatorCmd_Report = 0x03, + IndicatorCmd_Supported_Get = 0x04, + IndicatorCmd_Supported_Report = 0x05, + IndicatorCmd_Description_Get = 0x06, + IndicatorCmd_Description_Report = 0x07 }; + std::map IndicatorTypes = { + {ValueID_Index_Indicator::Indicator, "Indicator"}, + {ValueID_Index_Indicator::Armed, "Indicator: Armed"}, + {ValueID_Index_Indicator::Not_Armed, "Indicator: Not Armed"}, + {ValueID_Index_Indicator::Ready, "Indicator: Ready"}, + {ValueID_Index_Indicator::Fault, "Indicator: Fault"}, + {ValueID_Index_Indicator::Busy, "Indicator: Busy"}, + {ValueID_Index_Indicator::Enter_ID, "Indicator: Enter ID"}, + {ValueID_Index_Indicator::Enter_PIN, "Indicator: Enter PIN"}, + {ValueID_Index_Indicator::Code_Accepted, "Indicator: Code Accepted"}, + {ValueID_Index_Indicator::Code_Not_Accepted, "Indicator: Code Not Accepted"}, + {ValueID_Index_Indicator::Armed_Stay, "Indicator: Armed Stay"}, + {ValueID_Index_Indicator::Armed_Away, "Indicator: Armed Away"}, + {ValueID_Index_Indicator::Alarming, "Indicator: Alarming"}, + {ValueID_Index_Indicator::Alarming_Burglar, "Indicator: Alarming: Burglar"}, + {ValueID_Index_Indicator::Alarming_Smoke_Fire, "Indicator: Alarming: Smoke/Fire"}, + {ValueID_Index_Indicator::Alarming_Carbon_Monoxide, "Indicator: Alarming: Carbon Monoxide"}, + {ValueID_Index_Indicator::Bypass_Challenge, "Indicator: Bypass Challenge"}, + {ValueID_Index_Indicator::Entry_Delay, "Indicator: Entry Delay"}, + {ValueID_Index_Indicator::Exit_Delay, "Indicator: Exit Delay"}, + {ValueID_Index_Indicator::Alarming_Medical, "Indicator: Alarming: Medical"}, + {ValueID_Index_Indicator::Alarming_Freeze_Warning, "Indicator: Alarming: Freeze Warning"}, + {ValueID_Index_Indicator::Alarming_Water_Leak, "Indicator: Alarming: Water Leak"}, + {ValueID_Index_Indicator::Alarming_Panic, "Indicator: Alarming: Panic"}, + {ValueID_Index_Indicator::Zone_1_Armed, "Indicator: Zone 1 Armed"}, + {ValueID_Index_Indicator::Zone_2_Armed, "Indicator: Zone 2 Armed"}, + {ValueID_Index_Indicator::Zone_3_Armed, "Indicator: Zone 3 Armed"}, + {ValueID_Index_Indicator::Zone_4_Armed, "Indicator: Zone 4 Armed"}, + {ValueID_Index_Indicator::Zone_5_Armed, "Indicator: Zone 5 Armed"}, + {ValueID_Index_Indicator::Zone_6_Armed, "Indicator: Zone 6 Armed"}, + {ValueID_Index_Indicator::Zone_7_Armed, "Indicator: Zone 7 Armed"}, + {ValueID_Index_Indicator::Zone_8_Armed, "Indicator: Zone 8 Armed"}, + {ValueID_Index_Indicator::LCD_Backlight, "Indicator: LCD Backlight"}, + {ValueID_Index_Indicator::Button_Backlight_Letters, "Indicator: Button: Backlight Letters"}, + {ValueID_Index_Indicator::Button_Backlight_Digits, "Indicator: Button: Backlight Digits"}, + {ValueID_Index_Indicator::Button_Backlight_Command, "Indicator: Button: Backlight Command"}, + {ValueID_Index_Indicator::Button_1_Indication, "Indicator: Button 1"}, + {ValueID_Index_Indicator::Button_2_Indication, "Indicator: Button 2"}, + {ValueID_Index_Indicator::Button_3_Indication, "Indicator: Button 3"}, + {ValueID_Index_Indicator::Button_4_Indication, "Indicator: Button 4"}, + {ValueID_Index_Indicator::Button_5_Indication, "Indicator: Button 5"}, + {ValueID_Index_Indicator::Button_6_Indication, "Indicator: Button 6"}, + {ValueID_Index_Indicator::Button_7_Indication, "Indicator: Button 7"}, + {ValueID_Index_Indicator::Button_8_Indication, "Indicator: Button 8"}, + {ValueID_Index_Indicator::Button_9_Indication, "Indicator: Button 9"}, + {ValueID_Index_Indicator::Button_10_Indication, "Indicator: Button 10"}, + {ValueID_Index_Indicator::Button_11_Indication, "Indicator: Button 11"}, + {ValueID_Index_Indicator::Button_12_Indication, "Indicator: Button 12"}, + {ValueID_Index_Indicator::Node_Identify, "Indicator: Node Identify"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_1, "Indicator: Generic Event Sound Notification 1"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_2, "Indicator: Generic Event Sound Notification 2"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_3, "Indicator: Generic Event Sound Notification 3"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_4, "Indicator: Generic Event Sound Notification 4"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_5, "Indicator: Generic Event Sound Notification 5"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_6, "Indicator: Generic Event Sound Notification 6"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_7, "Indicator: Generic Event Sound Notification 7"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_8, "Indicator: Generic Event Sound Notification 8"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_9, "Indicator: Generic Event Sound Notification 9"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_10, "Indicator: Generic Event Sound Notification 10"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_11, "Indicator: Generic Event Sound Notification 11"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_12, "Indicator: Generic Event Sound Notification 12"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_13, "Indicator: Generic Event Sound Notification 13"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_14, "Indicator: Generic Event Sound Notification 14"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_15, "Indicator: Generic Event Sound Notification 15"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_16, "Indicator: Generic Event Sound Notification 16"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_17, "Indicator: Generic Event Sound Notification 17"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_18, "Indicator: Generic Event Sound Notification 18"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_19, "Indicator: Generic Event Sound Notification 19"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_20, "Indicator: Generic Event Sound Notification 20"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_21, "Indicator: Generic Event Sound Notification 21"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_22, "Indicator: Generic Event Sound Notification 22"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_23, "Indicator: Generic Event Sound Notification 23"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_24, "Indicator: Generic Event Sound Notification 24"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_25, "Indicator: Generic Event Sound Notification 25"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_26, "Indicator: Generic Event Sound Notification 26"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_27, "Indicator: Generic Event Sound Notification 27"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_28, "Indicator: Generic Event Sound Notification 28"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_29, "Indicator: Generic Event Sound Notification 29"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_30, "Indicator: Generic Event Sound Notification 30"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_31, "Indicator: Generic Event Sound Notification 31"}, + {ValueID_Index_Indicator::Generic_Event_Sound_Notification_32, "Indicator: Generic Event Sound Notification 32"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_1, "Indicator: Manufacturer Defined Indicator 1"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_2, "Indicator: Manufacturer Defined Indicator 2"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_3, "Indicator: Manufacturer Defined Indicator 3"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_4, "Indicator: Manufacturer Defined Indicator 4"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_5, "Indicator: Manufacturer Defined Indicator 5"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_6, "Indicator: Manufacturer Defined Indicator 6"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_7, "Indicator: Manufacturer Defined Indicator 7"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_8, "Indicator: Manufacturer Defined Indicator 8"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_9, "Indicator: Manufacturer Defined Indicator 9"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_10, "Indicator: Manufacturer Defined Indicator 10"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_11, "Indicator: Manufacturer Defined Indicator 11"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_12, "Indicator: Manufacturer Defined Indicator 12"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_13, "Indicator: Manufacturer Defined Indicator 13"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_14, "Indicator: Manufacturer Defined Indicator 14"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_15, "Indicator: Manufacturer Defined Indicator 15"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_16, "Indicator: Manufacturer Defined Indicator 16"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_17, "Indicator: Manufacturer Defined Indicator 17"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_18, "Indicator: Manufacturer Defined Indicator 18"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_19, "Indicator: Manufacturer Defined Indicator 19"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_20, "Indicator: Manufacturer Defined Indicator 20"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_21, "Indicator: Manufacturer Defined Indicator 21"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_22, "Indicator: Manufacturer Defined Indicator 22"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_23, "Indicator: Manufacturer Defined Indicator 23"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_24, "Indicator: Manufacturer Defined Indicator 24"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_25, "Indicator: Manufacturer Defined Indicator 25"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_26, "Indicator: Manufacturer Defined Indicator 26"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_27, "Indicator: Manufacturer Defined Indicator 27"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_28, "Indicator: Manufacturer Defined Indicator 28"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_29, "Indicator: Manufacturer Defined Indicator 29"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_30, "Indicator: Manufacturer Defined Indicator 30"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_31, "Indicator: Manufacturer Defined Indicator 31"}, + {ValueID_Index_Indicator::Manufacturer_Defined_Indicator_32, "Indicator: Manufacturer Defined Indicator 32"}, + {ValueID_Index_Indicator::Buzzer, "Indicator: Buzzer"} + }; +enum Indicator_Property_Bit { + MultiLevel_Bit = 0x02, + Binary_Bit = 0x04, + OnOffPeriod_Bit = 0x08, + OnOffCycle_Bit = 0x10, + OnTimeWithPeriod_Bit = 0x20, + Timeout_Min_Bit = 0x40, + Timeout_Sec_Bit = 0x80, + Timeout_MS_Bit = 0x100, + SoundLevel_Bit = 0x200, + LowPower_Bit = 0x400 +}; + +enum Indicator_Property_Group { + MultiLevel_Grp = 0x01, + Binary_Grp = 0x02, + Toogle_Grp = 0x03, + Timeout_Grp = 0x04, + Sound_Grp = 0x05, + Advertised_Grp = 0x06 +}; +enum Indicator_Property_offset { + Multilevel_Prop = 0x01, + Binary_Prop = 0x02, + OnOffPeriod_Prop = 0x03, + OnOffCycle_Prop = 0x04, + OnTimeWithPeriod_Prop = 0x05, + Timeout_Min_Prop = 0x06, + Timeout_Sec_Prop = 0x07, + Timeout_Ms_Prop = 0x08, + Sound_Prop = 0x09, + Adv_Low_Power_Prop = 0x10 +}; + + +//----------------------------------------------------------------------------- +// +// Constructor +//----------------------------------------------------------------------------- + Indicator::Indicator(uint32 const _homeId, uint8 const _nodeId) : + CommandClass(_homeId, _nodeId) + { + Timer::SetDriver(GetDriver()); + } //----------------------------------------------------------------------------- // @@ -55,32 +219,74 @@ namespace OpenZWave //----------------------------------------------------------------------------- bool Indicator::RequestState(uint32 const _requestFlags, uint8 const _instance, Driver::MsgQueue const _queue) { + bool ret = false; if (_requestFlags & RequestFlag_Dynamic) { - return RequestValue(_requestFlags, 0, _instance, _queue); - } - return false; + if (GetVersion() == 1) + return RequestValue(_requestFlags, 0, _instance, _queue); + for (int i = 1; i <= ValueID_Index_Indicator::Buzzer; i++) { + if (Internal::VC::Value *value = GetValue(_instance, i)) + { + ret |= RequestValue(_requestFlags, i, _instance, _queue); + value->Release(); + } + } + } + if (GetVersion() > 1) + { + if (_requestFlags & RequestFlag_Static) + { + Msg* msg = new Msg("IndicatorCmd_Supported_Get", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + msg->SetInstance(this, _instance); + msg->Append(GetNodeId()); + msg->Append(3); + msg->Append(GetCommandClassId()); + msg->Append(IndicatorCmd_Supported_Get); + /* get the first Supported Indicator */ + msg->Append(0); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, _queue); + ret = true; + } + } + return ret; } //----------------------------------------------------------------------------- // // Request current value from the device //----------------------------------------------------------------------------- - bool Indicator::RequestValue(uint32 const _requestFlags, uint16 const _dummy1, // = 0 (not used) + bool Indicator::RequestValue(uint32 const _requestFlags, uint16 const index, // = 0 (not used) uint8 const _instance, Driver::MsgQueue const _queue) { if (m_com.GetFlagBool(COMPAT_FLAG_GETSUPPORTED)) { - Msg* msg = new Msg("IndicatorCmd_Get", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); - msg->SetInstance(this, _instance); - msg->Append(GetNodeId()); - msg->Append(2); - msg->Append(GetCommandClassId()); - msg->Append(IndicatorCmd_Get); - msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, _queue); - return true; + if (index == ValueID_Index_Indicator::Indicator) + { + Msg* msg = new Msg("IndicatorCmd_Get", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + msg->SetInstance(this, _instance); + msg->Append(GetNodeId()); + msg->Append(2); + msg->Append(GetCommandClassId()); + msg->Append(IndicatorCmd_Get); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, _queue); + return true; + } + else if (index > ValueID_Index_Indicator::Indicator && index <= ValueID_Index_Indicator::Buzzer) + { + Msg* msg = new Msg("IndicatorCmd_Get_v2", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + msg->SetInstance(this, _instance); + msg->Append(GetNodeId()); + msg->Append(3); + msg->Append(GetCommandClassId()); + msg->Append(IndicatorCmd_Get); + msg->Append(index); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, _queue); + return true; + } } else { @@ -96,18 +302,148 @@ namespace OpenZWave bool Indicator::HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance // = 1 ) { - if (IndicatorCmd_Report == (IndicatorCmd) _data[0]) + if (IndicatorCmd_Supported_Report == (IndicatorCmd) _data[0]) { - Log::Write(LogLevel_Info, GetNodeId(), "Received an Indicator report: Indicator=%d", _data[1]); + uint8 id = _data[1]; + uint8 nextid = _data[2]; + uint8 propertiessupportedlength = (_data[3] & 0x1F); + uint32 propertiessupported = 0; + for (int i = 0; i < propertiessupportedlength; i++) + { + propertiessupported = _data[4+i] << (8*i); + } + Log::Write(LogLevel_Info, GetNodeId(), "Indicator Supported Report for %d - Support %d - Next Indicator %d", id, propertiessupported, nextid); + std::shared_ptr idprops = std::make_shared(); + idprops->id = id; + idprops->instance = _instance; + idprops->properties = propertiessupported; + this->m_indicatorLists.insert(std::pair >(id, idprops)); - if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_Indicator::Indicator))) + if ((GetVersion() >= 4) && (id >= 0x80) && (id <= 0x9f)) { - value->OnValueRefreshed(_data[1]); - value->Release(); + Msg* msg = new Msg("IndicatorCmd_Description_Get", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + msg->SetInstance(this, _instance); + msg->Append(GetNodeId()); + msg->Append(3); + msg->Append(GetCommandClassId()); + msg->Append(IndicatorCmd_Description_Get); + msg->Append(id); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + } + else + { + this->createIndicatorConfigValues(id); + } + + /* Get the Next Indicator */ + if (nextid > 0) + { + Msg* msg = new Msg("IndicatorCmd_Supported_Get", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + msg->SetInstance(this, _instance); + msg->Append(GetNodeId()); + msg->Append(3); + msg->Append(GetCommandClassId()); + msg->Append(IndicatorCmd_Supported_Get); + msg->Append(nextid); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Query); + return true; } return true; } + if (IndicatorCmd_Report == (IndicatorCmd) _data[0]) + { + if (GetVersion() == 1) { + Log::Write(LogLevel_Info, GetNodeId(), "Received an Indicator report: Indicator=%d", _data[1]); + if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_Indicator::Indicator))) + { + value->OnValueRefreshed(_data[1]); + value->Release(); + } + return true; + } else { + uint8 size = (_data[2] & 0x1F); + uint8 setid = 0; + uint8 setparam = 0; + for (int i = 0; i < size; i++) + { + uint8 id = _data[3 + (i*3)]; + uint8 property = _data[4 + (i*3)]; + uint8 value = _data[5 + (i*3)]; + Log::Write(LogLevel_Info, GetNodeId(), "Indicator Report for %d - Property %d - Value %d", id, property, value); + this->setIndicatorValue(id, _instance, property, value); + /* 4.24.5 - ID Field: + * All indicator objects MUST carry the same Indicator ID. + */ + if (setid == 0) + setid = id; + if (value > 0) + setparam = property; + } + if (Internal::VC::ValueList* value = static_cast(GetValue(_instance, setid))) + { + bool setTimer = true; + if (setparam == Indicator_Property_offset::Multilevel_Prop) + { + value->OnValueRefreshed(Indicator_Property_Group::MultiLevel_Grp); + setTimer = false; + } + else if (setparam == Indicator_Property_offset::Binary_Prop) + { + value->OnValueRefreshed(Indicator_Property_Group::Binary_Grp); + setTimer = false; + } + else if (setparam >= Indicator_Property_offset::OnOffPeriod_Prop && setparam <= Indicator_Property_offset::OnTimeWithPeriod_Prop) + value->OnValueRefreshed(Indicator_Property_Group::Toogle_Grp); + else if (setparam >= Indicator_Property_offset::Timeout_Min_Prop && setparam <= Indicator_Property_offset::Timeout_Ms_Prop) + value->OnValueRefreshed(Indicator_Property_Group::Timeout_Grp); + else if (setparam == Indicator_Property_offset::Sound_Prop) + value->OnValueRefreshed(Indicator_Property_Group::Sound_Grp); + else + { + value->OnValueRefreshed(0); + setTimer = false; + } + value->Release(); + if (setTimer) + { + int32 id = setid + (_instance << 16); + TimerThread::TimerCallback callback = bind(&Indicator::refreshIndicator, this, id); + TimerSetEvent(1000, callback, id); + } + } + else + { + Log::Write(LogLevel_Warning, GetNodeId(), "Can't Find ValueID for Indicator %d", setid); + } + } + return true; + } + if (IndicatorCmd_Description_Report == (IndicatorCmd) _data[0]) + { + uint8 id = _data[1]; + uint8 length = _data[2]; + string label("Unknown Indicator"); + if (m_indicatorLists.find(id) != m_indicatorLists.end()) + { + if (length == 0) + { + /* use the default label */ + if (IndicatorTypes.find(id) != IndicatorTypes.end()) { + m_indicatorLists[id]->label = IndicatorTypes.at(id); + } + } + else + { + string description((const char *) &_data[3], length); + if (!description.empty()) + m_indicatorLists[id]->label = description; + } + this->createIndicatorConfigValues(id); + } + } return false; } @@ -117,7 +453,8 @@ namespace OpenZWave //----------------------------------------------------------------------------- bool Indicator::SetValue(Internal::VC::Value const& _value) { - if (ValueID::ValueType_Byte == _value.GetID().GetType()) + + if (ValueID_Index_Indicator::Indicator == _value.GetID().GetIndex()) { Internal::VC::ValueByte const* value = static_cast(&_value); @@ -133,7 +470,159 @@ namespace OpenZWave GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); return true; } + if (_value.GetID().GetIndex() > 1 && _value.GetID().GetIndex() <= ValueID_Index_Indicator::Buzzer) { + Internal::VC::ValueList const* value = static_cast(&_value); + uint32 selected = value->GetItem()->m_value; + uint16 index = _value.GetID().GetIndex(); + /* depending upon what is selected, we can get a Property Config ValueID's */ + uint32 property = 1 << selected; + uint32 propertyindex = (256 + (32 * index)); + Log::Write(LogLevel_Info, GetNodeId(), "Setting Index: %d Selected %d Property %d PropertyIndex %d", index, selected, property, propertyindex); + vector payload; + switch (selected) { + case 0: + { + /* turn off any indicator */ + Msg* msg = new Msg("IndicatorCmd_Set_v2", 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(IndicatorCmd_Set); + msg->Append(0); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + return true; + break; + } + case Indicator_Property_Group::Binary_Grp: + { + if (Internal::VC::ValueBool* propertyValue = static_cast(GetValue(_value.GetID().GetInstance(), propertyindex + Indicator_Property_offset::Binary_Prop))) + { + payload.push_back(1); + payload.push_back(index); + payload.push_back(Indicator_Property_offset::Binary_Prop); + payload.push_back(propertyValue->GetValue() == true ? 1 : 0); + } + break; + } + case Indicator_Property_Group::MultiLevel_Grp: + { + if (Internal::VC::ValueByte* propertyValue = static_cast(GetValue(_value.GetID().GetInstance(), propertyindex + Indicator_Property_offset::Multilevel_Prop))) + { + payload.push_back(1); + payload.push_back(index); + payload.push_back(Indicator_Property_offset::Multilevel_Prop); + payload.push_back(propertyValue->GetValue()); + } + break; + } + case Indicator_Property_Group::Toogle_Grp: + { + int params = 0; + if (Internal::VC::ValueByte* propertyValue = static_cast(GetValue(_value.GetID().GetInstance(), propertyindex + Indicator_Property_offset::OnOffPeriod_Prop))) + { + params++; + payload.push_back(index); + payload.push_back(Indicator_Property_offset::OnOffPeriod_Prop); + payload.push_back(propertyValue->GetValue()); + } + if (Internal::VC::ValueByte* propertyValue = static_cast(GetValue(_value.GetID().GetInstance(), propertyindex + Indicator_Property_offset::OnOffCycle_Prop))) + { + params++; + payload.push_back(index); + payload.push_back(Indicator_Property_offset::OnOffCycle_Prop); + payload.push_back(propertyValue->GetValue()); + } + if (Internal::VC::ValueByte* propertyValue = static_cast(GetValue(_value.GetID().GetInstance(), propertyindex + Indicator_Property_offset::OnTimeWithPeriod_Prop))) + { + params++; + payload.push_back(index); + payload.push_back(Indicator_Property_offset::OnTimeWithPeriod_Prop); + payload.push_back(propertyValue->GetValue()); + } + payload.insert(payload.begin(), params); + break; + } + case Indicator_Property_Group::Timeout_Grp: + { + int params = 0; + if (Internal::VC::ValueByte* propertyValue = static_cast(GetValue(_value.GetID().GetInstance(), propertyindex + Indicator_Property_offset::Timeout_Min_Prop))) + { + params++; + payload.push_back(index); + payload.push_back(Indicator_Property_offset::Timeout_Min_Prop); + payload.push_back(propertyValue->GetValue()); + } + if (Internal::VC::ValueByte* propertyValue = static_cast(GetValue(_value.GetID().GetInstance(), propertyindex + Indicator_Property_offset::Timeout_Sec_Prop))) + { + params++; + payload.push_back(index); + payload.push_back(Indicator_Property_offset::Timeout_Sec_Prop); + payload.push_back(propertyValue->GetValue()); + } + if (Internal::VC::ValueByte* propertyValue = static_cast(GetValue(_value.GetID().GetInstance(), propertyindex + Indicator_Property_offset::Timeout_Ms_Prop))) + { + params++; + payload.push_back(index); + payload.push_back(Indicator_Property_offset::Timeout_Ms_Prop); + payload.push_back(propertyValue->GetValue()); + } + payload.insert(payload.begin(), params); + break; + } + case Indicator_Property_Group::Sound_Grp: + { + if (Internal::VC::ValueByte* propertyValue = static_cast(GetValue(_value.GetID().GetInstance(), propertyindex + Indicator_Property_offset::Sound_Prop))) + { + payload.push_back(1); + payload.push_back(index); + payload.push_back(Indicator_Property_offset::Sound_Prop); + payload.push_back(propertyValue->GetValue()); + } + break; + } + case Indicator_Property_Group::Advertised_Grp: + { + /* shouldn't ever be present */ + break; + } + } + Msg* msg = new Msg("IndicatorCmd_Set_v2", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); + msg->SetInstance(this, _value.GetID().GetInstance()); + msg->Append(GetNodeId()); + msg->Append(3 + payload.size()); + msg->Append(GetCommandClassId()); + msg->Append(IndicatorCmd_Set); + msg->Append(0); + for (unsigned int i = 0; i < payload.size(); i++) { + msg->Append(payload.at(i)); + } + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + return true; + } + if (_value.GetID().GetIndex() > ValueID_Index_Indicator::Buzzer) + { + if (_value.GetID().GetType() == ValueID::ValueType_Byte) + { + if (Internal::VC::ValueByte * valueByte = static_cast(GetValue(_value.GetID().GetInstance(), _value.GetID().GetIndex()))) + { + valueByte->OnValueRefreshed(static_cast(&_value)->GetValue()); + valueByte->Release(); + } + } + if (_value.GetID().GetType() == ValueID::ValueType_Bool) + { + if (Internal::VC::ValueBool * valueBool = static_cast(GetValue(_value.GetID().GetInstance(), _value.GetID().GetIndex()))) + { + valueBool->OnValueRefreshed(static_cast(&_value)->GetValue()); + valueBool->Release(); + } + } + return true; + } return false; } @@ -143,11 +632,241 @@ namespace OpenZWave //----------------------------------------------------------------------------- void Indicator::CreateVars(uint8 const _instance) { + if (GetVersion() == 1) { + if (Node* node = GetNodeUnsafe()) + { + node->CreateValueByte(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_Indicator::Indicator, "Indicator", "", false, false, false, 0); + } + } + } +//----------------------------------------------------------------------------- +// +// Create the Config Values for each Indicator ID +//----------------------------------------------------------------------------- + + void Indicator::createIndicatorConfigValues(uint8 id) { + /* Value Indexes are as follows: + * Assume that we can have 32 Properties per Index + * 0 - 256 - Actual Indicator ValueID + * 257 - 288 - Indicator 1 Properties + * 289 - 320 - Indicator 2 Properties + * 321 - 352 - Indicator 3 Properties + * and so on. */ + if (m_indicatorLists.find(id) == m_indicatorLists.end()) + { + Log::Write(LogLevel_Warning, GetNodeId(), "Cant find Indicator %d in List", id); + return; + } + Log::Write(LogLevel_Info, GetNodeId(), "Indicator Support:"); if (Node* node = GetNodeUnsafe()) { - node->CreateValueByte(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_Indicator::Indicator, "Indicator", "", false, false, false, 0); + string label("Unknown Indicator"); + if (m_indicatorLists[id]->label.empty()) + { + if (IndicatorTypes.find(id) != IndicatorTypes.end()) { + label = IndicatorTypes.at(id); + } + } + else + { + label = m_indicatorLists[id]->label; + } + + uint32 propertiesSet = 0; + + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::MultiLevel_Bit) { + /* MultiLevel Property */ + Log::Write(LogLevel_Info, GetNodeId(), "\tMultiLevel Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::Multilevel_Prop)); + node->CreateValueByte(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::Multilevel_Prop), label + ": Brightness/Level", "", false, false, 0, 0); + propertiesSet |= (1 << Indicator_Property_Group::MultiLevel_Grp); + } + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::Binary_Bit) + { + /* Binary Property */ + Log::Write(LogLevel_Info, GetNodeId(), "\tBinary Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::Binary_Prop)); + node->CreateValueBool(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::Binary_Prop), label + ": On/Off", "", false, false, false, 0); + propertiesSet |= (1 << Indicator_Property_Group::Binary_Grp); + } + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::OnOffPeriod_Bit) + { + /* On/Off Period Property */ + Log::Write(LogLevel_Info, GetNodeId(), "\tOn/Off Period Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::OnOffPeriod_Prop)); + node->CreateValueByte(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::OnOffPeriod_Prop), label + ": On/Off Period", "Seconds", false, false, 0, 0); + propertiesSet |= (1 << Indicator_Property_Group::Toogle_Grp); + } + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::OnOffCycle_Bit) + { + /* On/Off Cycles */ + Log::Write(LogLevel_Info, GetNodeId(), "\tOn/Off Cycles Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::OnOffCycle_Prop)); + node->CreateValueByte(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::OnOffCycle_Prop), label + ": On/Off Cycles", "", false, false, 0, 0); + propertiesSet |= (1 << Indicator_Property_Group::Toogle_Grp); + } + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::OnTimeWithPeriod_Bit) + { + /* On Time with On/Off Period combination */ + Log::Write(LogLevel_Info, GetNodeId(), "\tOn Time with On/Off Period Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::OnTimeWithPeriod_Prop)); + node->CreateValueByte(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::OnTimeWithPeriod_Prop), label + ": On time within an On/Off period", "Seconds", false, false, 0, 0); + propertiesSet |= (1 << Indicator_Property_Group::Toogle_Grp); + } + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::Timeout_Min_Bit) + { + /* Timeout (Minutes) */ + Log::Write(LogLevel_Info, GetNodeId(), "\tTimeout (Minutes) Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::Timeout_Min_Prop)); + node->CreateValueByte(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::Timeout_Min_Prop), label + ": Timeout (Minutes)", "Minutes", false, false, 0, 0); + propertiesSet |= (1 << Indicator_Property_Group::Timeout_Grp); + } + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::Timeout_Sec_Bit) + { + /* Timeout (Seconds) */ + Log::Write(LogLevel_Info, GetNodeId(), "\tTimeout (Seconds) Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::Timeout_Sec_Prop)); + node->CreateValueByte(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::Timeout_Sec_Prop), label + ": Timeout (Seconds)", "Seconds", false, false, 0, 0); + propertiesSet |= (1 << Indicator_Property_Group::Timeout_Grp); + } + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::Timeout_MS_Bit) + { + /* Timeout (1/100 of seconds) */ + Log::Write(LogLevel_Info, GetNodeId(), "\tTimeout (1/100 of seconds) Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::Timeout_Ms_Prop)); + node->CreateValueByte(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::Timeout_Ms_Prop), label + ": Timeout (1/100 of seconds)", "Miliseconds", false, false, 0, 0); + propertiesSet |= (1 << Indicator_Property_Group::Timeout_Grp); + } + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::SoundLevel_Bit) + { + /* Multilevel Sound level */ + Log::Write(LogLevel_Info, GetNodeId(), "\tMultilevel Sound Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::Sound_Prop)); + node->CreateValueByte(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::Sound_Prop), label + ": Multilevel Sound level", "", false, false, 0, 0); + propertiesSet |= Indicator_Property_Group::Sound_Grp; + } + if (m_indicatorLists[id]->properties & Indicator_Property_Bit::LowPower_Bit) + { + /* ADVERTISE: Low power */ + Log::Write(LogLevel_Info, GetNodeId(), "\tADVERTISE: Low power Property - Index %d", (256 + (32 * id) + Indicator_Property_offset::Adv_Low_Power_Prop)); + node->CreateValueBool(ValueID::ValueGenre_Config, GetCommandClassId(), m_indicatorLists[id]->instance, (256 + (32 * id) + Indicator_Property_offset::Adv_Low_Power_Prop), label + ": Low Power Capable", "", true, false, false, 0); + propertiesSet |= Indicator_Property_Group::Advertised_Grp; + } + /* Create the Actual Indicator */ + vector items; + Internal::VC::ValueList::Item item; + item.m_label = "Off"; + item.m_value = 0x00; + items.push_back(item); + if (propertiesSet & (1 << Indicator_Property_Group::Binary_Grp)) + { + Internal::VC::ValueList::Item item; + item.m_label = "On"; + item.m_value = Indicator_Property_Group::Binary_Grp; + items.push_back(item); + } + if (propertiesSet & (1 << Indicator_Property_Group::MultiLevel_Grp)) + { + Internal::VC::ValueList::Item item; + item.m_label = "Level"; + item.m_value = Indicator_Property_Group::MultiLevel_Grp; + items.push_back(item); + } + if (propertiesSet & (1 << Indicator_Property_Group::Toogle_Grp)) + { + Internal::VC::ValueList::Item item; + item.m_label = "Toogle"; + item.m_value = Indicator_Property_Group::Toogle_Grp; + items.push_back(item); + } + if (propertiesSet & (1 << Indicator_Property_Group::Timeout_Grp)) + { + Internal::VC::ValueList::Item item; + item.m_label = "Timeout"; + item.m_value = Indicator_Property_Group::Timeout_Grp; + items.push_back(item); + } + if (propertiesSet & (1 << Indicator_Property_Group::Sound_Grp)) + { + Internal::VC::ValueList::Item item; + item.m_label = "Sound Level"; + item.m_value = Indicator_Property_Group::Sound_Grp; + items.push_back(item); + } + node->CreateValueList(ValueID::ValueGenre_User, GetCommandClassId(), m_indicatorLists[id]->instance, id, label, "", false, false, 0, items, 0, 0); } } + +//----------------------------------------------------------------------------- +// +// Sets the Properties Values for each Indicator ID +//----------------------------------------------------------------------------- + + void Indicator::setIndicatorValue(uint8 id, uint8 _instance, uint8 property, uint8 value) + { + uint16 index = (256 + (32 * id) + property); + Internal::VC::Value* propertyValue = GetValue(_instance, index); + if (!propertyValue) { + Log::Write(LogLevel_Warning, GetNodeId(), "Got Indicator Property for a Unregistered Property - Id: %d Property: %d Index: %d", id, property, index); + return; + } + switch (propertyValue->GetID().GetType()) { + case ValueID::ValueType_Bool: + { + if (Internal::VC::ValueBool *propertyBool = static_cast(propertyValue)) + { + propertyBool->OnValueRefreshed(value > 0 ? true : false); + } + propertyValue->Release(); + break; + } + case ValueID::ValueType_Byte: + { + if (Internal::VC::ValueByte *propertyByte = static_cast(propertyValue)) + { + propertyByte->OnValueRefreshed(value); + } + propertyValue->Release(); + break; + } + default: + { + /* Not Handled */ + Log::Write(LogLevel_Warning, GetNodeId(), "Got Indicator Property for a Unhandled Property Type %d", propertyValue->GetID().GetType()); + break; + } + } + } + +//----------------------------------------------------------------------------- +// +// Refresh The Indicator ID's Values. this is called from the timer when a indicator is active. +//----------------------------------------------------------------------------- + void Indicator::refreshIndicator(uint32 id) + { + uint16 index = (id & 0xFFFF); + uint8 instance = (id & 0xF0000) >> 16; + RequestValue(0, index, instance, Driver::MsgQueue_Query); + } + +//----------------------------------------------------------------------------- +// +// Update class values based in BASIC mapping +//----------------------------------------------------------------------------- + void Indicator::SetValueBasic(uint8 const _instance, uint8 const _value) + { + // Send a request for new value to synchronize it with the BASIC set/report. + // In case the device is sleeping, we set the value anyway so the BASIC set/report + // stays in sync with it. We must be careful mapping the uint8 BASIC value + // into a class specific value. + // When the device wakes up, the real requested value will be retrieved. + if (GetVersion() == 1) + { + RequestValue(0, 0, _instance, Driver::MsgQueue_Query); + return; + } + for (int i = 1; i <= ValueID_Index_Indicator::Buzzer; i++) { + if (Internal::VC::Value *value = GetValue(_instance, i)) + { + RequestValue(0, i, _instance, Driver::MsgQueue_Query); + value->Release(); + } + } + return; + } + + } // namespace CC } // namespace Internal } // namespace OpenZWave diff --git a/cpp/src/command_classes/Indicator.h b/cpp/src/command_classes/Indicator.h index 1dcb1d4ba0..81dff6fcf7 100644 --- a/cpp/src/command_classes/Indicator.h +++ b/cpp/src/command_classes/Indicator.h @@ -29,6 +29,8 @@ #define _Indicator_H #include "command_classes/CommandClass.h" +#include "TimerThread.h" + namespace OpenZWave { @@ -40,7 +42,7 @@ namespace OpenZWave /** \brief Implements COMMAND_CLASS_INDICATOR (0x87), a Z-Wave device command class. * \ingroup CommandClass */ - class Indicator: public CommandClass + class Indicator: public CommandClass, private Timer { public: static CommandClass* Create(uint32 const _homeId, uint8 const _nodeId) @@ -73,15 +75,26 @@ namespace OpenZWave } virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; virtual bool SetValue(Internal::VC::Value const& _value) override; - + virtual uint8 GetMaxVersion() override + { + return 4; + } + virtual void SetValueBasic(uint8 const _instance, uint8 const _value) override; protected: virtual void CreateVars(uint8 const _instance) override; private: - Indicator(uint32 const _homeId, uint8 const _nodeId) : - CommandClass(_homeId, _nodeId) - { - } + struct Properties { + uint8 id; + uint8 instance; + uint8 properties; + string label; + }; + void createIndicatorConfigValues(uint8 id); + void setIndicatorValue(uint8 id, uint8 _instance, uint8 property, uint8 value); + void refreshIndicator(uint32 id); + Indicator(uint32 const _homeId, uint8 const _nodeId); + std::map > m_indicatorLists; }; } // namespace CC } // namespace Internal diff --git a/cpp/src/command_classes/Language.h b/cpp/src/command_classes/Language.h index 75f09afa8e..41db7b7151 100644 --- a/cpp/src/command_classes/Language.h +++ b/cpp/src/command_classes/Language.h @@ -73,6 +73,9 @@ namespace OpenZWave } virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; + bool supportsMultiInstance() override { + return false; + } protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/ManufacturerSpecific.cpp b/cpp/src/command_classes/ManufacturerSpecific.cpp index 8f5d4a5a12..5be7b93332 100644 --- a/cpp/src/command_classes/ManufacturerSpecific.cpp +++ b/cpp/src/command_classes/ManufacturerSpecific.cpp @@ -93,7 +93,7 @@ namespace OpenZWave if (_requestFlags & RequestFlag_Static) { { - Msg* msg = new Msg("ManufacturerSpecificCmd_DeviceGet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + Msg* msg = new Msg("ManufacturerSpecificCmd_DeviceGet_DeviceIDType", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); msg->SetInstance(this, _instance); msg->Append(GetNodeId()); msg->Append(3); @@ -103,42 +103,14 @@ namespace OpenZWave msg->Append(GetDriver()->GetTransmitOptions()); GetDriver()->SendMsg(msg, _queue); } - { - Msg* msg = new Msg("ManufacturerSpecificCmd_DeviceGet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); - msg->SetInstance(this, _instance); - msg->Append(GetNodeId()); - msg->Append(3); - msg->Append(GetCommandClassId()); - msg->Append(ManufacturerSpecificCmd_DeviceGet); - msg->Append(DeviceSpecificGet_DeviceIDType_SerialNumber); - msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, _queue); - } - res = true; } } - if ((_requestFlags & RequestFlag_Static) && HasStaticRequest(StaticRequest_Values)) - { - res |= RequestValue(_requestFlags, 0, _instance, _queue); - } - return res; } -//----------------------------------------------------------------------------- -// -// Request current value from the device -//----------------------------------------------------------------------------- - bool ManufacturerSpecific::RequestValue(uint32 const _requestFlags, uint16 const _dummy1, // = 0 (not used) - uint8 const _instance, Driver::MsgQueue const _queue) - { - if (_instance != 1) - { - // This command class doesn't work with multiple instances - return false; - } + bool ManufacturerSpecific::Init() { if (m_com.GetFlagBool(COMPAT_FLAG_GETSUPPORTED)) { Msg* msg = new Msg("ManufacturerSpecificCmd_Get", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); @@ -147,12 +119,13 @@ namespace OpenZWave msg->Append(GetCommandClassId()); msg->Append(ManufacturerSpecificCmd_Get); msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, _queue); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Query); return true; } else { Log::Write(LogLevel_Info, GetNodeId(), "ManufacturerSpecificCmd_Get Not Supported on this node"); + return true; } return false; } @@ -254,15 +227,30 @@ namespace OpenZWave } if (deviceIDType == DeviceSpecificGet_DeviceIDType_FactoryDefault) { + if (!GetValue(_instance, ValueID_Index_ManufacturerSpecific::DeviceID)) { + if (Node* node = GetNodeUnsafe()) + { + node->CreateValueString(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_ManufacturerSpecific::DeviceID, "Device ID", "", true, false, "", 0); + } + } Internal::VC::ValueString *default_value = static_cast(GetValue(_instance, ValueID_Index_ManufacturerSpecific::DeviceID)); default_value->OnValueRefreshed(deviceID); default_value->Release(); + Log::Write(LogLevel_Info, GetNodeId(), "Got ManufacturerSpecific FactoryDefault: %s", deviceID.c_str()); } else if (deviceIDType == DeviceSpecificGet_DeviceIDType_SerialNumber) { + if (!GetValue(_instance, ValueID_Index_ManufacturerSpecific::SerialNumber)) { + if (Node* node = GetNodeUnsafe()) + { + node->CreateValueString(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_ManufacturerSpecific::SerialNumber, "Serial Number", "", true, false, "", 0); + } + } Internal::VC::ValueString *serial_value = static_cast(GetValue(_instance, ValueID_Index_ManufacturerSpecific::SerialNumber)); serial_value->OnValueRefreshed(deviceID); serial_value->Release(); + Log::Write(LogLevel_Info, GetNodeId(), "Got ManufacturerSpecific SerialNumber: %s", deviceID.c_str()); + } return true; } @@ -343,8 +331,6 @@ namespace OpenZWave node->CreateValueInt(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_ManufacturerSpecific::LoadedConfig, "Loaded Config Revision", "", true, false, m_loadedConfigRevision, 0); node->CreateValueInt(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_ManufacturerSpecific::LocalConfig, "Config File Revision", "", true, false, m_fileConfigRevision, 0); node->CreateValueInt(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_ManufacturerSpecific::LatestConfig, "Latest Available Config File Revision", "", true, false, m_latestConfigRevision, 0); - node->CreateValueString(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_ManufacturerSpecific::DeviceID, "Device ID", "", true, false, "", 0); - node->CreateValueString(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_ManufacturerSpecific::SerialNumber, "Serial Number", "", true, false, "", 0); } } } @@ -390,7 +376,7 @@ namespace OpenZWave void ManufacturerSpecific::setLoadedConfigRevision(uint32 rev) { - m_latestConfigRevision = rev; + m_loadedConfigRevision = rev; if (Internal::VC::ValueInt* value = static_cast(GetValue(1, ValueID_Index_ManufacturerSpecific::LoadedConfig))) { diff --git a/cpp/src/command_classes/ManufacturerSpecific.h b/cpp/src/command_classes/ManufacturerSpecific.h index 1c22c6ec56..d389a77c26 100644 --- a/cpp/src/command_classes/ManufacturerSpecific.h +++ b/cpp/src/command_classes/ManufacturerSpecific.h @@ -63,7 +63,7 @@ namespace OpenZWave // From CommandClass virtual bool RequestState(uint32 const _requestFlags, uint8 const _instance, Driver::MsgQueue const _queue) override; - virtual bool RequestValue(uint32 const _requestFlags, uint16 const _index, uint8 const _instance, Driver::MsgQueue const _queue) override; + //virtual bool RequestValue(uint32 const _requestFlags, uint16 const _index, uint8 const _instance, Driver::MsgQueue const _queue) override; virtual uint8 const GetCommandClassId() const override { return StaticGetCommandClassId(); @@ -87,6 +87,12 @@ namespace OpenZWave void setFileConfigRevision(uint32 rev); void setLoadedConfigRevision(uint32 rev); + bool Init(); + + bool supportsMultiInstance() override { + return false; + } + protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/Meter.cpp b/cpp/src/command_classes/Meter.cpp index 3eadc25fe1..708d85fb7f 100644 --- a/cpp/src/command_classes/Meter.cpp +++ b/cpp/src/command_classes/Meter.cpp @@ -257,7 +257,6 @@ namespace OpenZWave res |= true; } } -// exit(-1); return res; } diff --git a/cpp/src/command_classes/MeterPulse.cpp b/cpp/src/command_classes/MeterPulse.cpp index cf6cd18d22..a132320099 100644 --- a/cpp/src/command_classes/MeterPulse.cpp +++ b/cpp/src/command_classes/MeterPulse.cpp @@ -56,7 +56,7 @@ namespace OpenZWave { if (_requestFlags & RequestFlag_Dynamic) { - return RequestValue(_requestFlags, 0, _instance, _queue); + return RequestValue(_requestFlags, ValueID_Index_MeterPulse::Count, _instance, _queue); } return false; diff --git a/cpp/src/command_classes/MultiChannelAssociation.h b/cpp/src/command_classes/MultiChannelAssociation.h index f5d4f94f4c..3f2980e5d8 100644 --- a/cpp/src/command_classes/MultiChannelAssociation.h +++ b/cpp/src/command_classes/MultiChannelAssociation.h @@ -83,6 +83,9 @@ namespace OpenZWave void Set(uint8 const _group, uint8 const _nodeId, uint8 const _endPoint); void Remove(uint8 const _group, uint8 const _nodeId, uint8 const _endPoint); + bool supportsMultiInstance() override { + return false; + } private: MultiChannelAssociation(uint32 const _homeId, uint8 const _nodeId); void QueryGroup(uint8 _groupIdx, uint32 const _requestFlags); diff --git a/cpp/src/command_classes/MultiInstance.cpp b/cpp/src/command_classes/MultiInstance.cpp index a60f93cd42..ad8221ea17 100644 --- a/cpp/src/command_classes/MultiInstance.cpp +++ b/cpp/src/command_classes/MultiInstance.cpp @@ -347,8 +347,6 @@ namespace OpenZWave continue; } - m_endPointCommandClasses.insert(commandClassId); - // Ensure the node supports this command class CommandClass* cc = node->GetCommandClass(commandClassId); @@ -356,6 +354,9 @@ namespace OpenZWave { cc = node->AddCommandClass(commandClassId); } + + + if (cc && afterMark) { cc->SetAfterMark(); @@ -365,7 +366,9 @@ namespace OpenZWave { Log::Write(LogLevel_Info, GetNodeId(), " %s", cc->GetCommandClassName().c_str()); } - /* The AddCommandClass will bitch about unsupported CC's so we don't need to duplicate that output */ + /* The AddCommandClass above will bitch about unsupported CC's so we don't need to duplicate that output */ + + m_endPointCommandClasses.insert(commandClassId); } // Create internal library instances for each command class in the list @@ -396,6 +399,11 @@ namespace OpenZWave CommandClass* cc = node->GetCommandClass(commandClassId); if (cc) { + if (cc->supportsMultiInstance() == false) { + Log::Write(LogLevel_Info, GetNodeId(), "%s doesn't support MultiInstance - Not adding Instance", cc->GetCommandClassName().c_str()); + continue; + } + cc->SetInstance(i); if (m_com.GetFlagBool(COMPAT_FLAG_MI_MAPROOTTOENDPOINT) != false || i != 1) { @@ -447,6 +455,11 @@ namespace OpenZWave CommandClass* cc = node->GetCommandClass(commandClassId); if (cc) { + if (cc->supportsMultiInstance() == false) { + Log::Write(LogLevel_Info, GetNodeId(), "%s doesn't support MultiInstance. Not adding Instances", cc->GetCommandClassName().c_str()); + continue; + } + // get instance gets an instance for an endpoint // but i'm only interested if there is a related instance for an endpoint and not in the actual result // soo if the result is != 0, the endpoint is already handled @@ -606,10 +619,20 @@ namespace OpenZWave 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()); - if (!pCommandClass->IsAfterMark()) - pCommandClass->HandleMsg(&_data[4], _length - 4, instance); + if (!pCommandClass->IsAfterMark()) + { + if (!pCommandClass->HandleMsg(&_data[4], _length - 4, instance)) + { + Log::Write(LogLevel_Warning, GetNodeId(), "MultiChannel Encap CommandClass %s HandleMsg returned false", pCommandClass->GetCommandClassName().c_str()); + } + } else - pCommandClass->HandleIncomingMsg(&_data[4], _length - 4, instance); + { + if (!pCommandClass->HandleIncomingMsg(&_data[4], _length - 4, instance)) + { + Log::Write(LogLevel_Warning, GetNodeId(), "MultiChannel Encap CommandClass %s HandleIncomingMsg returned false", pCommandClass->GetCommandClassName().c_str()); + } + } } else { diff --git a/cpp/src/command_classes/MultiInstance.h b/cpp/src/command_classes/MultiInstance.h index c34c0a4e33..d1c63882c3 100644 --- a/cpp/src/command_classes/MultiInstance.h +++ b/cpp/src/command_classes/MultiInstance.h @@ -99,6 +99,9 @@ namespace OpenZWave uint8 GetGenericInstanceDeviceType(uint8); uint8 GetSpecificInstanceDeviceType(uint8); + bool supportsMultiInstance() override { + return false; + } private: MultiInstance(uint32 const _homeId, uint8 const _nodeId); diff --git a/cpp/src/command_classes/NodeNaming.h b/cpp/src/command_classes/NodeNaming.h index 85e1cca42a..35087b33d0 100644 --- a/cpp/src/command_classes/NodeNaming.h +++ b/cpp/src/command_classes/NodeNaming.h @@ -89,6 +89,9 @@ namespace OpenZWave void SetName(string const& _name); void SetLocation(string const& _location); + bool supportsMultiInstance() override { + return false; + } private: NodeNaming(uint32 const _homeId, uint8 const _nodeId) : CommandClass(_homeId, _nodeId) diff --git a/cpp/src/command_classes/Powerlevel.cpp b/cpp/src/command_classes/Powerlevel.cpp index e71499ce30..32cd92416e 100644 --- a/cpp/src/command_classes/Powerlevel.cpp +++ b/cpp/src/command_classes/Powerlevel.cpp @@ -70,7 +70,7 @@ namespace OpenZWave { if (_requestFlags & RequestFlag_Session) { - return RequestValue(_requestFlags, 0, _instance, _queue); + return RequestValue(_requestFlags, ValueID_Index_PowerLevel::Powerlevel, _instance, _queue); } return false; diff --git a/cpp/src/command_classes/Protection.cpp b/cpp/src/command_classes/Protection.cpp index 2eaca9ff6a..5d752eeca7 100644 --- a/cpp/src/command_classes/Protection.cpp +++ b/cpp/src/command_classes/Protection.cpp @@ -62,7 +62,7 @@ namespace OpenZWave { if (_requestFlags & RequestFlag_Session) { - return RequestValue(_requestFlags, 0, _instance, _queue); + return RequestValue(_requestFlags, ValueID_Index_Protection::Protection, _instance, _queue); } return false; diff --git a/cpp/src/command_classes/Security.cpp b/cpp/src/command_classes/Security.cpp index f4b176a03c..10e484c01b 100644 --- a/cpp/src/command_classes/Security.cpp +++ b/cpp/src/command_classes/Security.cpp @@ -46,7 +46,7 @@ namespace OpenZWave { Security::Security(uint32 const _homeId, uint8 const _nodeId) : - CommandClass(_homeId, _nodeId), m_schemeagreed(false), m_secured(false) + CommandClass(_homeId, _nodeId), m_schemeagreed(false) { /* We don't want the Driver to route "Security" messages back to us for Encryption, @@ -55,7 +55,8 @@ namespace OpenZWave * in the SecurityCmd_SupportedReport from the device - Which some devices do) */ ClearSecureSupport(); - + for (int i = 0; i < 255; i++) + m_secured[i] = false; } Security::~Security() @@ -154,10 +155,10 @@ namespace OpenZWave * Command Classes created after the Discovery Phase is completed! */ Log::Write(LogLevel_Info, GetNodeId(), "Received SecurityCmd_SupportedReport from node %d (instance %d)", GetNodeId(), _instance); - m_secured = true; + m_secured[_instance] = true; if (Internal::VC::ValueBool* value = static_cast(GetValue(_instance, ValueID_Index_Security::Secured))) { - value->OnValueRefreshed(m_secured); + value->OnValueRefreshed(m_secured[_instance]); value->Release(); } HandleSupportedReport(&_data[2], _length - 3, _instance); @@ -261,6 +262,12 @@ namespace OpenZWave if (Node* node = GetNodeUnsafe()) { node->CreateValueBool(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_Security::Secured, "Secured", "", true, false, false, 0); + if (Internal::VC::ValueBool* value = static_cast(GetValue(_instance, ValueID_Index_Security::Secured))) + { + value->OnValueRefreshed(m_secured[_instance]); + value->Release(); + } + } } } // namespace CC diff --git a/cpp/src/command_classes/Security.h b/cpp/src/command_classes/Security.h index 3b67ac444d..9238f62fa2 100644 --- a/cpp/src/command_classes/Security.h +++ b/cpp/src/command_classes/Security.h @@ -104,7 +104,7 @@ namespace OpenZWave bool HandleSupportedReport(uint8 const* _data, uint32 const _length, uint32 const _instance = 1); bool m_schemeagreed; - bool m_secured; + bool m_secured[255]; }; } // namespace CC diff --git a/cpp/src/command_classes/SensorBinary.cpp b/cpp/src/command_classes/SensorBinary.cpp index c72305f1e4..570de1694b 100644 --- a/cpp/src/command_classes/SensorBinary.cpp +++ b/cpp/src/command_classes/SensorBinary.cpp @@ -111,7 +111,7 @@ namespace OpenZWave { if (_requestFlags & RequestFlag_Dynamic) { - return RequestValue(_requestFlags, 0, _instance, _queue); + return RequestValue(_requestFlags, ValueID_Index_SensorBinary::Sensor_1, _instance, _queue); } return false; @@ -199,7 +199,7 @@ namespace OpenZWave { if (WakeUp* wakeUp = static_cast(node->GetCommandClass(WakeUp::StaticGetCommandClassId()))) { - if (!wakeUp->IsAwake()) + if (!wakeUp->IsAwake() || !m_com.GetFlagBool(COMPAT_FLAG_GETSUPPORTED)) { if (Internal::VC::ValueBool* value = static_cast(GetValue(_instance, 0))) { diff --git a/cpp/src/command_classes/SensorMultilevel.cpp b/cpp/src/command_classes/SensorMultilevel.cpp index 98a187601f..634c3edfa0 100644 --- a/cpp/src/command_classes/SensorMultilevel.cpp +++ b/cpp/src/command_classes/SensorMultilevel.cpp @@ -149,7 +149,7 @@ namespace OpenZWave if (requestedScale) { const Internal::VC::ValueList::Item *item = requestedScale->GetItem(); if (item) - scale = item->m_value; + scale = ((item->m_value & 0x03) << 3); requestedScale->Release(); } value->Release(); @@ -177,7 +177,7 @@ namespace OpenZWave if (requestedScale) { const Internal::VC::ValueList::Item *item = requestedScale->GetItem(); if (item) - scale = item->m_value; + scale = ((item->m_value & 0x03) << 3); requestedScale->Release(); } value->Release(); @@ -295,14 +295,6 @@ namespace OpenZWave return false; } -//----------------------------------------------------------------------------- -// -// Create the values managed by this command class -//----------------------------------------------------------------------------- - void SensorMultilevel::CreateVars(uint8 const _instance) - { - // Don't create anything here. We do it in the report. - } } // namespace CC } // namespace Internal } // namespace OpenZWave diff --git a/cpp/src/command_classes/SensorMultilevel.h b/cpp/src/command_classes/SensorMultilevel.h index 56cab16fdf..5398e56522 100644 --- a/cpp/src/command_classes/SensorMultilevel.h +++ b/cpp/src/command_classes/SensorMultilevel.h @@ -78,9 +78,6 @@ namespace OpenZWave return 11; } - protected: - virtual void CreateVars(uint8 const _instance) override; - private: SensorMultilevel(uint32 const _homeId, uint8 const _nodeId) : CommandClass(_homeId, _nodeId) diff --git a/cpp/src/command_classes/SoundSwitch.cpp b/cpp/src/command_classes/SoundSwitch.cpp index db40f8eb07..c7e7037e83 100644 --- a/cpp/src/command_classes/SoundSwitch.cpp +++ b/cpp/src/command_classes/SoundSwitch.cpp @@ -77,6 +77,10 @@ namespace OpenZWave { requests |= RequestValue(_requestFlags, ValueID_Index_SoundSwitch::Tone_Count, _instance, _queue); } + if (_requestFlags & RequestFlag_Dynamic) + { + requests |= RequestValue(_requestFlags, ValueID_Index_SoundSwitch::Volume, _instance, _queue); + } return requests; } @@ -106,6 +110,16 @@ namespace OpenZWave { Log::Write(LogLevel_Info, GetNodeId(), "SoundSwitchCmd_Tones_Number_Get Not Supported on this node"); } + } else if (_index == ValueID_Index_SoundSwitch::Volume || _index == ValueID_Index_SoundSwitch::Default_Tone) { + Msg* msg = new Msg("SoundSwitchCmd_Tones_Config_Get", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + msg->SetInstance(this, _instance); + msg->Append(GetNodeId()); + msg->Append(2); + msg->Append(GetCommandClassId()); + msg->Append(SoundSwitchCmd_Tones_Config_Get); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + return true; } return false; } @@ -250,15 +264,31 @@ namespace OpenZWave } ret = true; } - if (index == ValueID_Index_SoundSwitch::Volume || index == ValueID_Index_SoundSwitch::Default_Tone) + if (index == ValueID_Index_SoundSwitch::Volume) { uint8 volume = 0xff; - uint8 defaulttone = 0x01; - if (Internal::VC::ValueByte const* value = static_cast(GetValue(instance, ValueID_Index_SoundSwitch::Volume))) + if (Internal::VC::ValueByte const* value = static_cast(&_value)) { volume = value->GetValue(); + if (volume > 100) { + volume = 0xFF; + } } - if (Internal::VC::ValueList const* value = static_cast(GetValue(instance, ValueID_Index_SoundSwitch::Default_Tone))) + Msg* msg = new Msg("SoundSwitchCmd_Tones_Config_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); + msg->SetInstance(this, instance); + msg->Append(GetNodeId()); + msg->Append(4); + msg->Append(GetCommandClassId()); + msg->Append(SoundSwitchCmd_Tones_Config_Set); + msg->Append(volume); + msg->Append(0); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + ret = true; + } + if (index == ValueID_Index_SoundSwitch::Default_Tone) { + uint8 defaulttone = 0x00; + if (Internal::VC::ValueList const* value = static_cast(&_value)) { Internal::VC::ValueList::Item const *item = value->GetItem(); if (item == NULL) @@ -268,19 +298,18 @@ namespace OpenZWave if (defaulttone == 0xFF) defaulttone = 1; } - Msg* msg = new Msg("SoundSwitchCmd_Tones_Config_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + Msg* msg = new Msg("SoundSwitchCmd_Tones_Config_Set", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); msg->SetInstance(this, instance); msg->Append(GetNodeId()); msg->Append(4); msg->Append(GetCommandClassId()); msg->Append(SoundSwitchCmd_Tones_Config_Set); - msg->Append(volume); + msg->Append(0xFF); msg->Append(defaulttone); msg->Append(GetDriver()->GetTransmitOptions()); GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); ret = true; } - return ret; } 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/SwitchAll.cpp b/cpp/src/command_classes/SwitchAll.cpp index f11536e00f..66565f0482 100644 --- a/cpp/src/command_classes/SwitchAll.cpp +++ b/cpp/src/command_classes/SwitchAll.cpp @@ -62,7 +62,7 @@ namespace OpenZWave { if (_requestFlags & RequestFlag_Session) { - return RequestValue(_requestFlags, 0, _instance, _queue); + return RequestValue(_requestFlags, ValueID_Index_SwitchAll::SwitchAll, _instance, _queue); } return false; diff --git a/cpp/src/command_classes/SwitchBinary.cpp b/cpp/src/command_classes/SwitchBinary.cpp index 1333b8439c..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" @@ -37,7 +38,7 @@ #include "platform/Log.h" #include "value_classes/ValueBool.h" -#include "value_classes/ValueByte.h" +#include "value_classes/ValueInt.h" namespace OpenZWave { @@ -61,7 +62,7 @@ namespace OpenZWave { if (_requestFlags & RequestFlag_Dynamic) { - return RequestValue(_requestFlags, 0, _instance, _queue); + return RequestValue(_requestFlags, ValueID_Index_SwitchBinary::Level, _instance, _queue); } return false; @@ -107,6 +108,8 @@ namespace OpenZWave // data[1] => Switch state if (Internal::VC::ValueBool* value = static_cast(GetValue(_instance, ValueID_Index_SwitchBinary::Level))) { + if (GetVersion() >= 2 && _length >= 4) + value->SetTargetValue(_data[2] != 0, _data[3]); value->OnValueRefreshed(_data[1] != 0); value->Release(); } @@ -124,9 +127,9 @@ namespace OpenZWave // data[3] might be duration if (_length > 3) { - if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_SwitchBinary::Duration))) + if (Internal::VC::ValueInt* value = static_cast(GetValue(_instance, ValueID_Index_SwitchBinary::Duration))) { - value->OnValueRefreshed(_data[3]); + value->OnValueRefreshed(decodeDuration(_data[3])); value->Release(); } } @@ -137,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); + } + } + } //----------------------------------------------------------------------------- // @@ -160,9 +186,9 @@ namespace OpenZWave } case ValueID_Index_SwitchBinary::Duration: { - if (Internal::VC::ValueByte* value = static_cast(GetValue(instance, ValueID_Index_SwitchBinary::Duration))) + if (Internal::VC::ValueInt* value = static_cast(GetValue(instance, ValueID_Index_SwitchBinary::Duration))) { - value->OnValueRefreshed((static_cast(&_value))->GetValue()); + value->OnValueRefreshed((static_cast(&_value))->GetValue()); value->Release(); } res = true; @@ -210,47 +236,54 @@ namespace OpenZWave { uint8 const nodeId = GetNodeId(); uint8 const targetValue = _state ? 0xff : 0; - - 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); - - if (GetVersion() >= 2) + + if (Node* node = GetNodeUnsafe()) { - Internal::VC::ValueByte* durationValue = static_cast(GetValue(_instance, ValueID_Index_SwitchBinary::Duration)); - uint8 duration = durationValue->GetValue(); - durationValue->Release(); - if (duration == 0xff) + //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_Info, GetNodeId(), " Duration: Default"); + Log::Write(LogLevel_Debug, GetNodeId(), "Supervision not supported, fall back to setpoint set/get"); } - else if (duration >= 0x80) + + 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) { - Log::Write(LogLevel_Info, GetNodeId(), " Duration: %d minutes", duration - 0x7f); + 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 { - Log::Write(LogLevel_Info, GetNodeId(), " Duration: %d seconds", duration); + 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(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; } //----------------------------------------------------------------------------- @@ -263,7 +296,7 @@ namespace OpenZWave { if (GetVersion() >= 2) { - node->CreateValueByte(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_SwitchBinary::Duration, "Transition Duration", "", false, false, 0xff, 0); + node->CreateValueInt(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_SwitchBinary::Duration, "Transition Duration", "Sec", false, false, -1, 0); node->CreateValueBool(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_SwitchBinary::TargetState, "Target State", "", true, false, true, 0); } node->CreateValueBool(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_SwitchBinary::Level, "Switch", "", false, false, false, 0); 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 8cee7be7e3..a20339e26c 100644 --- a/cpp/src/command_classes/SwitchMultilevel.cpp +++ b/cpp/src/command_classes/SwitchMultilevel.cpp @@ -28,6 +28,7 @@ #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" @@ -37,6 +38,7 @@ #include "value_classes/ValueBool.h" #include "value_classes/ValueButton.h" #include "value_classes/ValueByte.h" +#include "value_classes/ValueInt.h" namespace OpenZWave { @@ -74,9 +76,23 @@ namespace OpenZWave //----------------------------------------------------------------------------- bool SwitchMultilevel::RequestState(uint32 const _requestFlags, uint8 const _instance, Driver::MsgQueue const _queue) { + if (_requestFlags & RequestFlag_Static) { + if (GetVersion() >= 3) + { + // Request the supported switch types + Msg* msg = new Msg("SwitchMultilevelCmd_SupportedGet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); + msg->Append(GetNodeId()); + msg->Append(2); + msg->Append(GetCommandClassId()); + msg->Append(SwitchMultilevelCmd_SupportedGet); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + } + return true; + } if (_requestFlags & RequestFlag_Dynamic) { - return RequestValue(_requestFlags, 0, _instance, _queue); + return RequestValue(_requestFlags, ValueID_Index_SwitchMultiLevel::Level, _instance, _queue); } return false; @@ -100,6 +116,7 @@ namespace OpenZWave msg->Append(SwitchMultilevelCmd_Get); msg->Append(GetDriver()->GetTransmitOptions()); GetDriver()->SendMsg(msg, _queue); + return true; } else @@ -110,28 +127,6 @@ namespace OpenZWave return false; } - bool SwitchMultilevel::HandleIncomingMsg(uint8 const* _data, uint32 const _length, uint32 const _instance // = 1 - ) - { - if (SwitchMultilevelCmd_Set == (SwitchMultilevelCmd) _data[0]) - { - Log::Write(LogLevel_Info, GetNodeId(), "Received SwitchMultiLevel Set: level=%d", _data[1]); - return true; - } - else if (SwitchMultilevelCmd_StartLevelChange == (SwitchMultilevelCmd) _data[0]) - { - Log::Write(LogLevel_Info, GetNodeId(), "Received SwitchMultiLevel StartLevelChange: level=%d", _data[1]); - - } - else if (SwitchMultilevelCmd_StopLevelChange == (SwitchMultilevelCmd) _data[0]) - { - Log::Write(LogLevel_Info, GetNodeId(), "Received SwitchMultiLevel StopLevelChange: level=%d", _data[1]); - - } - - return true; - } - //----------------------------------------------------------------------------- // // Handle a message from the Z-Wave network @@ -145,6 +140,9 @@ namespace OpenZWave if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_SwitchMultiLevel::Level))) { + /* Target Value - 0 to 100 is valid values, 0xFF is also valid */ + if ((GetVersion() >= 4) && ((_data[2] <= 100) || (_data[2] == 0xFF))) + value->SetTargetValue(_data[2], _data[3]); value->OnValueRefreshed(_data[1]); value->Release(); } @@ -162,9 +160,9 @@ namespace OpenZWave // data[3] might be duration if (_length > 3) { - if (Internal::VC::ValueByte* value = static_cast(GetValue(_instance, ValueID_Index_SwitchMultiLevel::Duration))) + if (Internal::VC::ValueInt* value = static_cast(GetValue(_instance, ValueID_Index_SwitchMultiLevel::Duration))) { - value->OnValueRefreshed(_data[3]); + value->OnValueRefreshed(decodeDuration(_data[3])); value->Release(); } } @@ -225,32 +223,30 @@ namespace OpenZWave } return true; } - + Log::Write(LogLevel_Warning, GetNodeId(), "Recieved a Unhandled SwitchMultiLevel Command: %d", _data[0]); return false; } -//----------------------------------------------------------------------------- -// -// Set the command class version -//----------------------------------------------------------------------------- - void SwitchMultilevel::SetVersion(uint8 const _version) + void SwitchMultilevel::SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance) { - CommandClass::SetVersion(_version); - - if (_version >= 3) + if (Node* node = GetNodeUnsafe()) { - // Request the supported switch types - Msg* msg = new Msg("SwitchMultilevelCmd_SupportedGet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); - msg->Append(GetNodeId()); - msg->Append(2); - msg->Append(GetCommandClassId()); - msg->Append(SwitchMultilevelCmd_SupportedGet); - msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + 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(); - // Set the request flag again - it will be cleared when we get a - // response to the SwitchMultilevelCmd_SupportedGet message. - SetStaticRequest(StaticRequest_Version); + 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); + } } } @@ -331,9 +327,9 @@ namespace OpenZWave } case ValueID_Index_SwitchMultiLevel::Duration: { - if (Internal::VC::ValueByte* value = static_cast(GetValue(instance, ValueID_Index_SwitchMultiLevel::Duration))) + if (Internal::VC::ValueInt* value = static_cast(GetValue(instance, ValueID_Index_SwitchMultiLevel::Duration))) { - value->OnValueRefreshed((static_cast(&_value))->GetValue()); + value->OnValueRefreshed((static_cast(&_value))->GetValue()); value->Release(); } res = true; @@ -422,46 +418,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) + if (Node* node = GetNodeUnsafe()) { - Internal::VC::ValueByte* durationValue = static_cast(GetValue(_instance, ValueID_Index_SwitchMultiLevel::Duration)); - uint8 duration = durationValue->GetValue(); - durationValue->Release(); - if (duration == 0xff) + //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_Info, GetNodeId(), " Duration: Default"); + Log::Write(LogLevel_Debug, GetNodeId(), "Supervision not supported, fall back to setpoint set/get"); } - else if (duration >= 0x80) + + 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) { - Log::Write(LogLevel_Info, GetNodeId(), " Duration: %d minutes", duration - 0x7f); + 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 { - Log::Write(LogLevel_Info, GetNodeId(), " Duration: %d seconds", duration); + msg->Append(3); + msg->Append(GetCommandClassId()); + msg->Append(SwitchMultilevelCmd_Set); + msg->Append(_level); } - msg->Append(4); - msg->Append(GetCommandClassId()); - msg->Append(SwitchMultilevelCmd_Set); - msg->Append(_level); - msg->Append(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; } - - msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); - return true; + return false; } //----------------------------------------------------------------------------- @@ -500,8 +504,8 @@ namespace OpenZWave } Log::Write(LogLevel_Info, GetNodeId(), " Start Level: %d", startLevel); - uint8 duration = 0; - if (Internal::VC::ValueByte* durationValue = static_cast(GetValue(_instance, ValueID_Index_SwitchMultiLevel::Duration))) + uint32 duration = -1; + if (Internal::VC::ValueInt* durationValue = static_cast(GetValue(_instance, ValueID_Index_SwitchMultiLevel::Duration))) { length = 5; duration = durationValue->GetValue(); @@ -542,7 +546,7 @@ namespace OpenZWave if (length >= 5) { - msg->Append(duration); + msg->Append(encodeDuration(duration)); } if (length == 6) @@ -598,7 +602,7 @@ namespace OpenZWave } if (GetVersion() >= 2) { - node->CreateValueByte(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_SwitchMultiLevel::Duration, "Dimming Duration", "", false, false, 0xff, 0); + node->CreateValueInt(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_SwitchMultiLevel::Duration, "Dimming Duration", "", false, false, -1, 0); } node->CreateValueByte(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_SwitchMultiLevel::Level, "Level", "", false, false, 0, 0); node->CreateValueButton(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_SwitchMultiLevel::Bright, "Bright", 0); diff --git a/cpp/src/command_classes/SwitchMultilevel.h b/cpp/src/command_classes/SwitchMultilevel.h index 9c784fcb39..6c3aa7561a 100644 --- a/cpp/src/command_classes/SwitchMultilevel.h +++ b/cpp/src/command_classes/SwitchMultilevel.h @@ -72,15 +72,14 @@ namespace OpenZWave return StaticGetCommandClassName(); } virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; - virtual bool HandleIncomingMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; virtual bool SetValue(Internal::VC::Value const& _value) override; virtual void SetValueBasic(uint8 const _instance, uint8 const _value) override; - virtual void SetVersion(uint8 const _version) override; virtual uint8 GetMaxVersion() override { 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 834879beb6..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" @@ -93,6 +94,14 @@ 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), + m_currentMode(0) + { + SetStaticRequest(StaticRequest_Values); + } + //----------------------------------------------------------------------------- // // Read the supported modes @@ -136,8 +145,6 @@ namespace OpenZWave if (!supportedModes.empty()) { m_supportedModes = supportedModes; - ClearStaticRequest(StaticRequest_Values); - CreateVars(1); } } } @@ -185,13 +192,13 @@ namespace OpenZWave if ((_requestFlags & RequestFlag_Static) && HasStaticRequest(StaticRequest_Values)) { // request supported mode list - requests |= RequestValue(_requestFlags, ThermostatModeCmd_SupportedGet, _instance, _queue); + requests |= RequestValue(_requestFlags, 0, _instance, _queue); } if (_requestFlags & RequestFlag_Dynamic) { // Request the current mode - requests |= RequestValue(_requestFlags, 0, _instance, _queue); + requests |= RequestValue(_requestFlags, ValueID_Index_ThermostatMode::Mode, _instance, _queue); } return requests; @@ -203,7 +210,7 @@ namespace OpenZWave //----------------------------------------------------------------------------- bool ThermostatMode::RequestValue(uint32 const _requestFlags, uint16 const _getTypeEnum, uint8 const _instance, Driver::MsgQueue const _queue) { - if (_getTypeEnum == ThermostatModeCmd_SupportedGet) + if ((_requestFlags & RequestFlag_Static) && HasStaticRequest(StaticRequest_Values)) { // Request the supported modes Msg* msg = new Msg("ThermostatModeCmd_SupportedGet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); @@ -215,9 +222,8 @@ namespace OpenZWave msg->Append(GetDriver()->GetTransmitOptions()); GetDriver()->SendMsg(msg, _queue); return true; - } - - if (_getTypeEnum == 0) // get current mode + } + else if (_getTypeEnum == ValueID_Index_ThermostatMode::Mode) // get current mode { if (m_com.GetFlagBool(COMPAT_FLAG_GETSUPPORTED)) { @@ -271,17 +277,18 @@ namespace OpenZWave if (valueList->GetItem()) Log::Write(LogLevel_Info, GetNodeId(), "Received thermostat mode: %s", valueList->GetItem()->m_label.c_str()); else - Log::Write(LogLevel_Info, GetNodeId(), "Received thermostat mode: %d", mode); + Log::Write(LogLevel_Warning, GetNodeId(), "Received thermostat mode: %d (No Item)", mode); valueList->Release(); } else { - Log::Write(LogLevel_Info, GetNodeId(), "Received thermostat mode: index %d", mode); + Log::Write(LogLevel_Info, GetNodeId(), "Received thermostat mode: index %d (No ValueID)", mode); } + m_currentMode = mode; } else { - Log::Write(LogLevel_Info, GetNodeId(), "Received unknown thermostat mode: index %d", mode); + Log::Write(LogLevel_Warning, GetNodeId(), "Received unknown thermostat mode: index %d", mode); } return true; } @@ -317,37 +324,89 @@ namespace OpenZWave } } } - ClearStaticRequest(StaticRequest_Values); - CreateVars(_instance); + + /* 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... + */ + if (!m_supportedModes.empty()) { + m_currentMode = m_supportedModes[0].m_value; + } else { + m_currentMode = 0; + } + if (Node* node = GetNodeUnsafe()) + { + node->CreateValueList(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_ThermostatMode::Mode, "Mode", "", false, false, 1, m_supportedModes, m_currentMode, 0); + } return true; } 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; @@ -359,47 +418,6 @@ namespace OpenZWave //----------------------------------------------------------------------------- void ThermostatMode::CreateVars(uint8 const _instance) { - // There are number of ways to get here...each needs to be handled differently: - // QueryStage_ProtocolInfo: - // Don't know what's supported yet, so do nothing - // QueryStage_NodeInfo: - // Need to create the instance so the values can be read from the xml file - // QueryStage_Static: - // Need to create the instance (processing SupportedReport) if it doesn't exist - // If it does, populate with the appropriate values - // other - // Only create the instance if there are supportedModes - - if (Node* node = GetNodeUnsafe()) - { - Node::QueryStage qs = node->GetCurrentQueryStage(); - if (qs == Node::QueryStage_ProtocolInfo || m_supportedModes.empty()) - { - // this call is from QueryStage_ProtocolInfo, - // so just return (don't know which modes are supported yet) - return; - } - - // identify the lowest supported mode as the "default" (or default to 0 if no supported modes identified yet) - int32 defaultValue = 0; - if (!m_supportedModes.empty()) - { - defaultValue = m_supportedModes[0].m_value; - } - - if (qs == Node::QueryStage_Static) - { - // This instance might already have been created (in NodeInfo, in preparation for loading the values - // from zwcfg xml file). So, if the instance already exists, we delete its value and add a new one below - if (Internal::VC::ValueList* valueList = static_cast(GetValue(_instance, 0))) - { - node->RemoveValueList(valueList); - valueList->Release(); - } - } - - node->CreateValueList(ValueID::ValueGenre_User, GetCommandClassId(), _instance, ValueID_Index_ThermostatMode::Mode, "Mode", "", false, false, 1, m_supportedModes, defaultValue, 0); - } } } // namespace CC } // namespace Internal diff --git a/cpp/src/command_classes/ThermostatMode.h b/cpp/src/command_classes/ThermostatMode.h index 2401b2dd19..efa6fae742 100644 --- a/cpp/src/command_classes/ThermostatMode.h +++ b/cpp/src/command_classes/ThermostatMode.h @@ -82,18 +82,16 @@ namespace OpenZWave { return 3; } + virtual void SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance); protected: virtual void CreateVars(uint8 const _instance) override; private: - ThermostatMode(uint32 const _homeId, uint8 const _nodeId) : - CommandClass(_homeId, _nodeId) - { - SetStaticRequest(StaticRequest_Values); - } + ThermostatMode(uint32 const _homeId, uint8 const _nodeId); vector m_supportedModes; + uint32 m_currentMode; }; } // namespace CC } // namespace Internal diff --git a/cpp/src/command_classes/ThermostatSetpoint.cpp b/cpp/src/command_classes/ThermostatSetpoint.cpp index 3f9887fc71..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; @@ -291,12 +328,16 @@ namespace OpenZWave // // Create the values managed by this command class //----------------------------------------------------------------------------- - void ThermostatSetpoint::CreateVars(uint8 const _instance, uint8 const _index) + void ThermostatSetpoint::CreateVars(uint8 const _instance) { +#if 0 +/* I don't think this was ever orignally called when we had a index param, so lets not create this strange SetPoint */ +#issue #1981 if (Node* node = GetNodeUnsafe()) { node->CreateValueDecimal(ValueID::ValueGenre_User, GetCommandClassId(), _instance, _index, "Setpoint", "C", false, false, "0.0", 0); } +#endif } } // namespace CC } // namespace Internal diff --git a/cpp/src/command_classes/ThermostatSetpoint.h b/cpp/src/command_classes/ThermostatSetpoint.h index 6b7db36417..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,9 +80,10 @@ namespace OpenZWave { return 3; } + virtual void SupervisionSessionSuccess(uint8 _session_id, uint32 const _instance); protected: - virtual void CreateVars(uint8 const _instance, uint8 const _index) override; + virtual void CreateVars(uint8 const _instance) override; private: ThermostatSetpoint(uint32 const _homeId, uint8 const _nodeId); diff --git a/cpp/src/command_classes/Version.cpp b/cpp/src/command_classes/Version.cpp index 331a3ccc36..3aaef112f4 100644 --- a/cpp/src/command_classes/Version.cpp +++ b/cpp/src/command_classes/Version.cpp @@ -27,6 +27,7 @@ #include "command_classes/CommandClasses.h" #include "command_classes/Version.h" +#include "command_classes/Basic.h" #include "Defs.h" #include "Msg.h" #include "Driver.h" @@ -155,17 +156,20 @@ namespace OpenZWave Log::Write(LogLevel_Info, GetNodeId(), "Received CommandClass Version report from node %d: CommandClass=%s, Version=%d", GetNodeId(), pCommandClass->GetCommandClassName().c_str(), _data[2]); pCommandClass->ClearStaticRequest(StaticRequest_Version); /* some devices advertise CommandClasses, but return version as 0. In General this means - * that the device doesn't actually support the CommandClass. So lets Remove it + * that the device doesn't actually support the CommandClass. So lets Remove it. */ if (_data[2] > 0) { pCommandClass->SetVersion(_data[2]); } + /* More often than not our Basic CC is needed. */ + else if (_data[1] == Basic::StaticGetCommandClassId()) + pCommandClass->SetVersion(pCommandClass->GetMaxVersion()); else { Log::Write(LogLevel_Warning, GetNodeId(), "CommandClass Version is 0, Removing CommandClass %s", pCommandClass->GetCommandClassName().c_str()); - GetNodeUnsafe()->RemoveCommandClass(_data[2]); + GetNodeUnsafe()->RemoveCommandClass(_data[1]); } } @@ -184,7 +188,8 @@ namespace OpenZWave { if (m_com.GetFlagBool(COMPAT_FLAG_VERSION_GETCLASSVERSION)) { - if (_commandClass->HasStaticRequest(StaticRequest_Version)) + /* if its not a "Controlling" command Class */ + if ((!_commandClass->IsAfterMark()) && (_commandClass->HasStaticRequest(StaticRequest_Version))) { Msg* msg = new Msg("VersionCmd_CommandClassGet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); msg->Append(GetNodeId()); @@ -193,7 +198,7 @@ namespace OpenZWave msg->Append(VersionCmd_CommandClassGet); msg->Append(_commandClass->GetCommandClassId()); msg->Append(GetDriver()->GetTransmitOptions()); - GetDriver()->SendMsg(msg, Driver::MsgQueue_Send); + GetDriver()->SendMsg(msg, Driver::MsgQueue_Query); return true; } } diff --git a/cpp/src/command_classes/Version.h b/cpp/src/command_classes/Version.h index 52d8b8036d..c603fc7180 100644 --- a/cpp/src/command_classes/Version.h +++ b/cpp/src/command_classes/Version.h @@ -74,7 +74,10 @@ namespace OpenZWave return StaticGetCommandClassName(); } virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; - + + bool supportsMultiInstance() override { + return false; + } protected: virtual void CreateVars(uint8 const _instance) override; diff --git a/cpp/src/command_classes/WakeUp.cpp b/cpp/src/command_classes/WakeUp.cpp index ace54201c4..74af783194 100644 --- a/cpp/src/command_classes/WakeUp.cpp +++ b/cpp/src/command_classes/WakeUp.cpp @@ -64,11 +64,11 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- WakeUp::WakeUp(uint32 const _homeId, uint8 const _nodeId) : - CommandClass(_homeId, _nodeId), m_mutex(new Internal::Platform::Mutex()), m_awake(true), m_pollRequired(false) + CommandClass(_homeId, _nodeId), m_mutex(new Internal::Platform::Mutex()), m_awake(true), m_pollRequired(false), m_interval(0) { Timer::SetDriver(GetDriver()); Options::Get()->GetOptionAsBool("AssumeAwake", &m_awake); - m_com.EnableFlag(COMPAT_FLAG_WAKEUP_DELAYNMI, 0); + m_com.EnableFlag(COMPAT_FLAG_WAKEUP_DELAYNMI, 1000); SetStaticRequest(StaticRequest_Values); } @@ -106,7 +106,7 @@ namespace OpenZWave // that the controller will receive the wake-up notifications from // the device. Once this is done, we can request the rest of the node // state. - RequestState(CommandClass::RequestFlag_Session, 1, Driver::MsgQueue_WakeUp); + RequestValue(0, ValueID_Index_WakeUp::Interval, 1, Driver::MsgQueue_WakeUp); } //----------------------------------------------------------------------------- @@ -120,18 +120,12 @@ namespace OpenZWave { if (GetVersion() > 1) { - requests |= RequestValue(_requestFlags, WakeUpCmd_IntervalCapabilitiesGet, _instance, _queue); + requests |= RequestValue(_requestFlags, ValueID_Index_WakeUp::Min_Interval, _instance, _queue); } + if (m_interval == 0) + requests |= RequestValue(_requestFlags, ValueID_Index_WakeUp::Interval, _instance, _queue); + ClearStaticRequest(RequestFlag_Static); } - if (_requestFlags & RequestFlag_Session) - { - Node* node = GetNodeUnsafe(); - if (node != NULL && !node->IsController()) - { - requests |= RequestValue(_requestFlags, 0, _instance, _queue); - } - } - return requests; } @@ -147,7 +141,9 @@ namespace OpenZWave return false; } - if (_getTypeEnum == WakeUpCmd_IntervalCapabilitiesGet) + if (_getTypeEnum == ValueID_Index_WakeUp::Min_Interval + || _getTypeEnum == ValueID_Index_WakeUp::Max_Interval + || _getTypeEnum == ValueID_Index_WakeUp::Interval_Step) { Msg* msg = new Msg("WakeUpCmd_IntervalCapabilityGet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); msg->Append(GetNodeId()); @@ -158,7 +154,7 @@ namespace OpenZWave GetDriver()->SendMsg(msg, _queue); } - if (_getTypeEnum == 0) + if (_getTypeEnum == ValueID_Index_WakeUp::Interval) { // We won't get a response until the device next wakes up Msg* msg = new Msg("WakeUpCmd_IntervalGet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true, true, FUNC_ID_APPLICATION_COMMAND_HANDLER, GetCommandClassId()); @@ -183,37 +179,52 @@ namespace OpenZWave { if (WakeUpCmd_IntervalReport == (WakeUpCmd) _data[0]) { - if (Internal::VC::ValueInt* value = static_cast(GetValue(_instance, ValueID_Index_WakeUp::Interval))) + // some interval reports received are validly formatted (proper checksum, etc.) but only have length + // of 3 (0x84 (classid), 0x06 (IntervalReport), 0x00). Not sure what this means + if (_length < 6) { - // some interval reports received are validly formatted (proper checksum, etc.) but only have length - // of 3 (0x84 (classid), 0x06 (IntervalReport), 0x00). Not sure what this means - if (_length < 6) - { - Log::Write(LogLevel_Warning, ""); - Log::Write(LogLevel_Warning, GetNodeId(), "Unusual response: WakeUpCmd_IntervalReport with len = %d. Ignored.", _length); - value->Release(); - return false; - } + Log::Write(LogLevel_Warning, ""); + Log::Write(LogLevel_Warning, GetNodeId(), "Unusual response: WakeUpCmd_IntervalReport with len = %d. Ignored.", _length); + return false; + } - uint32 interval = ((uint32) _data[1]) << 16; - interval |= (((uint32) _data[2]) << 8); - interval |= (uint32) _data[3]; + m_interval = ((uint32) _data[1]) << 16; + m_interval |= (((uint32) _data[2]) << 8); + m_interval |= (uint32) _data[3]; - uint8 targetNodeId = _data[4]; + uint8 targetNodeId = _data[4]; - Log::Write(LogLevel_Info, GetNodeId(), "Received Wakeup Interval report from node %d: Interval=%d, Target Node=%d", GetNodeId(), interval, targetNodeId); + Log::Write(LogLevel_Info, GetNodeId(), "Received Wakeup Interval report from node %d: Interval=%d, Target Node=%d", GetNodeId(), m_interval, targetNodeId); - value->OnValueRefreshed((int32) interval); + if (Internal::VC::ValueInt* value = static_cast(GetValue(_instance, ValueID_Index_WakeUp::Interval))) + { + value->OnValueRefreshed((int32) m_interval); + Node *node = GetNodeUnsafe(); + if ((GetDriver()->GetControllerNodeId() != targetNodeId) && node) + { + SetValue(*value); + } + value->Release(); + } else { // Ensure that the target node for wake-up notifications is the controller // but only if node is not a listening device. Hybrid devices that can be // powered by other then batteries shouldn't do this. Node *node = GetNodeUnsafe(); - if (GetDriver()->GetControllerNodeId() != targetNodeId && ((node) && (!node->IsListeningDevice()))) + if ((GetDriver()->GetControllerNodeId() != targetNodeId) && node) { - SetValue(*value); + Msg* msg = new Msg("WakeUpCmd_IntervalSet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); + msg->Append(GetNodeId()); + msg->Append(6); // length of command bytes following + msg->Append(GetCommandClassId()); + msg->Append(WakeUpCmd_IntervalSet); + msg->Append((uint8) ((m_interval >> 16) & 0xff)); + msg->Append((uint8) ((m_interval >> 8) & 0xff)); + msg->Append((uint8) (m_interval & 0xff)); + msg->Append(GetDriver()->GetControllerNodeId()); + msg->Append(GetDriver()->GetTransmitOptions()); + GetDriver()->SendMsg(msg, Driver::MsgQueue_WakeUp); } - value->Release(); } return true; } @@ -264,13 +275,14 @@ namespace OpenZWave //----------------------------------------------------------------------------- bool WakeUp::SetValue(Internal::VC::Value const& _value) { - if (ValueID::ValueType_Int == _value.GetID().GetType()) + if (ValueID_Index_WakeUp::Interval == _value.GetID().GetIndex()) { Internal::VC::ValueInt const* value = static_cast(&_value); Msg* msg = new Msg("WakeUpCmd_IntervalSet", GetNodeId(), REQUEST, FUNC_ID_ZW_SEND_DATA, true); msg->Append(GetNodeId()); +#if 0 if (GetNodeUnsafe()->GetCommandClass(MultiCmd::StaticGetCommandClassId())) { msg->Append(10); @@ -278,15 +290,15 @@ namespace OpenZWave msg->Append(MultiCmd::MultiCmdCmd_Encap); msg->Append(1); } - - int32 interval = value->GetValue(); +#endif + m_interval = value->GetValue(); msg->Append(6); // length of command bytes following msg->Append(GetCommandClassId()); msg->Append(WakeUpCmd_IntervalSet); - msg->Append((uint8) ((interval >> 16) & 0xff)); - msg->Append((uint8) ((interval >> 8) & 0xff)); - msg->Append((uint8) (interval & 0xff)); + msg->Append((uint8) ((m_interval >> 16) & 0xff)); + msg->Append((uint8) ((m_interval >> 8) & 0xff)); + msg->Append((uint8) (m_interval & 0xff)); msg->Append(GetDriver()->GetControllerNodeId()); msg->Append(GetDriver()->GetTransmitOptions()); GetDriver()->SendMsg(msg, Driver::MsgQueue_WakeUp); @@ -296,15 +308,6 @@ namespace OpenZWave return false; } -//----------------------------------------------------------------------------- -// -// Set the command class version -//----------------------------------------------------------------------------- - void WakeUp::SetVersion(uint8 const _version) - { - CommandClass::SetVersion(_version); - CreateVars(1); - } //----------------------------------------------------------------------------- // @@ -379,7 +382,7 @@ namespace OpenZWave { delete item.m_cci; } - m_pendingQueue.erase(it++); + it = m_pendingQueue.erase(it); } else { @@ -470,6 +473,7 @@ namespace OpenZWave msg->Append(WakeUpCmd_NoMoreInformation); msg->Append(GetDriver()->GetTransmitOptions()); GetDriver()->SendMsg(msg, Driver::MsgQueue_WakeUp); + GetDriver()->WriteCache(); } //----------------------------------------------------------------------------- @@ -490,6 +494,11 @@ namespace OpenZWave node->CreateValueInt(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_WakeUp::Interval_Step, "Wake-up Interval Step", "Seconds", true, false, 0, 0); } node->CreateValueInt(ValueID::ValueGenre_System, GetCommandClassId(), _instance, ValueID_Index_WakeUp::Interval, "Wake-up Interval", "Seconds", false, false, 3600, 0); + if (Internal::VC::ValueInt* value = static_cast(GetValue(_instance, ValueID_Index_WakeUp::Interval))) + { + value->OnValueRefreshed((int32) m_interval); + value->Release(); + } } } } diff --git a/cpp/src/command_classes/WakeUp.h b/cpp/src/command_classes/WakeUp.h index 534ef0ab55..fae8bd9d71 100644 --- a/cpp/src/command_classes/WakeUp.h +++ b/cpp/src/command_classes/WakeUp.h @@ -98,13 +98,15 @@ namespace OpenZWave } virtual bool HandleMsg(uint8 const* _data, uint32 const _length, uint32 const _instance = 1) override; virtual bool SetValue(Internal::VC::Value const& _value) override; - virtual void SetVersion(uint8 const _version) override; virtual uint8 GetMaxVersion() override { return 2; } + bool supportsMultiInstance() override { + return false; + } protected: virtual void CreateVars(uint8 const _instance) override; @@ -115,6 +117,8 @@ namespace OpenZWave list m_pendingQueue; // Messages waiting to be sent when the device wakes up bool m_awake; bool m_pollRequired; + uint32 m_interval; + }; } // namespace CC } // namespace Internal diff --git a/cpp/src/command_classes/ZWavePlusInfo.cpp b/cpp/src/command_classes/ZWavePlusInfo.cpp index feda29fe1c..1c7a02481b 100644 --- a/cpp/src/command_classes/ZWavePlusInfo.cpp +++ b/cpp/src/command_classes/ZWavePlusInfo.cpp @@ -115,6 +115,8 @@ namespace OpenZWave uint16 installerIcon = (_data[4] << 8) | _data[5]; uint16 deviceType = (_data[6] << 8) | _data[7]; + Log::Write(LogLevel_Info, GetNodeId(), "ZW+ Info - Version %d, Role %d, NodeType %d, InstallerIcon %d, deviceType %d", version, role, nodeType, installerIcon, deviceType); + /* Only set the role, NodeType and DeviceType on Instance 1 Reports. The other instances * Just have unique Icons for each endpoint */ if (_instance == 1) diff --git a/cpp/src/platform/HttpClient.cpp b/cpp/src/platform/HttpClient.cpp index 2fc3fff698..db03be7f8b 100644 --- a/cpp/src/platform/HttpClient.cpp +++ b/cpp/src/platform/HttpClient.cpp @@ -1368,7 +1368,7 @@ namespace OpenZWave { traceprint("Delete socket\n"); delete sock; - _store.erase(it++); + it = _store.erase(it); } else ++it; diff --git a/cpp/src/platform/unix/EventImpl.cpp b/cpp/src/platform/unix/EventImpl.cpp index 86952ca874..323d873e6a 100644 --- a/cpp/src/platform/unix/EventImpl.cpp +++ b/cpp/src/platform/unix/EventImpl.cpp @@ -30,7 +30,9 @@ #include #include - +#ifdef __ANDROID__ +#include "android.h" +#endif namespace OpenZWave { namespace Internal diff --git a/cpp/src/platform/unix/SerialControllerImpl.cpp b/cpp/src/platform/unix/SerialControllerImpl.cpp index 82ce2e624c..53cbb75607 100644 --- a/cpp/src/platform/unix/SerialControllerImpl.cpp +++ b/cpp/src/platform/unix/SerialControllerImpl.cpp @@ -34,6 +34,10 @@ #include "SerialControllerImpl.h" #include "platform/Log.h" +#ifdef __ANDROID__ +#include "android.h" +#endif + #ifdef __sun // SunOS doesn't have the cfsetspeed convenience function. int diff --git a/cpp/src/platform/unix/ThreadImpl.cpp b/cpp/src/platform/unix/ThreadImpl.cpp index 82b44beb72..7533db4211 100644 --- a/cpp/src/platform/unix/ThreadImpl.cpp +++ b/cpp/src/platform/unix/ThreadImpl.cpp @@ -31,6 +31,10 @@ #include "platform/Thread.h" #include "ThreadImpl.h" +#ifdef __ANDROID__ +#include "android.h" +#endif + #ifdef DARWIN #define pthread_yield pthread_yield_np #endif diff --git a/cpp/src/platform/unix/android.h b/cpp/src/platform/unix/android.h new file mode 100644 index 0000000000..fede44c6d0 --- /dev/null +++ b/cpp/src/platform/unix/android.h @@ -0,0 +1,7 @@ +#ifndef _android_H +#define _android_H + +#define pthread_setcancelstate(state, oldstate) ((void)0); *oldstate = 0 +#define pthread_cancel(thread) ((void)0) + +#endif \ No newline at end of file diff --git a/cpp/src/value_classes/Value.cpp b/cpp/src/value_classes/Value.cpp index 6182c3274f..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" @@ -57,9 +58,13 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- Value::Value(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, ValueID::ValueType const _type, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, bool const _isSet, uint8 const _pollIntensity) : - m_min(0), m_max(0), m_refreshTime(0), m_verifyChanges(false), m_id(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, _type), m_units(_units), m_readOnly(_readOnly), m_writeOnly(_writeOnly), m_isSet(_isSet), m_affectsLength(0), m_affects(), m_affectsAll(false), m_checkChange(false), m_pollIntensity(_pollIntensity) + m_min(0), m_max(0), m_refreshTime(0), m_verifyChanges(false), m_refreshAfterSet(true), m_id(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, _type), m_targetValueSet(false), m_duration(0), m_units(_units), m_readOnly(_readOnly), m_writeOnly(_writeOnly), m_isSet(_isSet), m_affectsLength(0), m_affects(), m_affectsAll(false), m_checkChange(false), m_pollIntensity(_pollIntensity) { SetLabel(_label); + if (Driver* driver = Manager::Get()->GetDriver(m_id.GetHomeId())) + { + Timer::SetDriver(driver); + } } //----------------------------------------------------------------------------- @@ -67,7 +72,7 @@ namespace OpenZWave // Constructor (from XML) //----------------------------------------------------------------------------- Value::Value() : - m_min(0), m_max(0), m_refreshTime(0), m_verifyChanges(false), m_readOnly(false), m_writeOnly(false), m_isSet(false), m_affectsLength(0), m_affects(), m_affectsAll(false), m_checkChange(false), m_pollIntensity(0) + m_min(0), m_max(0), m_refreshTime(0), m_verifyChanges(false), m_refreshAfterSet(true), m_targetValueSet(false), m_duration(0), m_readOnly(false), m_writeOnly(false), m_isSet(false), m_affectsLength(0), m_affects(), m_affectsAll(false), m_checkChange(false), m_pollIntensity(0) { } @@ -103,12 +108,21 @@ namespace OpenZWave uint16 index = 0; if (TIXML_SUCCESS == _valueElement->QueryIntAttribute("index", &intVal)) { - /* index is only 10 bytes in the ValueID class */ - index = (uint16) (intVal & 0x3FF); + /* index is only 16 bytes in the ValueID class */ + index = (uint16) (intVal & 0xFFFF); } m_id = ValueID(_homeId, _nodeId, genre, _commandClassId, instance, index, type); + /* For Values Loaded from a XML File - We Need to load the Timer Driver here, as the default + * constructor doens't have a m_id set, hence we can't get the HomeID + */ + + if (Driver* driver = Manager::Get()->GetDriver(m_id.GetHomeId())) + { + Timer::SetDriver(driver); + } + char const* label = _valueElement->Attribute("label"); if (label) { @@ -229,7 +243,7 @@ namespace OpenZWave snprintf(str, sizeof(str), "%d", m_id.GetInstance()); _valueElement->SetAttribute("instance", str); - snprintf(str, sizeof(str), "%d", (m_id.GetIndex() & 0x3FF)); + snprintf(str, sizeof(str), "%d", (m_id.GetIndex() & 0xFFFF)); _valueElement->SetAttribute("index", str); _valueElement->SetAttribute("label", GetLabel().c_str()); @@ -299,8 +313,14 @@ namespace OpenZWave { if (!IsWriteOnly()) { - // queue a "RequestValue" message to update the value - 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 { @@ -467,9 +487,16 @@ namespace OpenZWave // // Check a refreshed value //----------------------------------------------------------------------------- - int Value::VerifyRefreshedValue(void* _originalValue, void* _checkValue, void* _newValue, ValueID::ValueType _type, int _originalValueLength, // = 0, + int Value::VerifyRefreshedValue( + void* _originalValue, + void* _checkValue, + void* _newValue, + void* _targetValue, + ValueID::ValueType _type, + int _originalValueLength, // = 0, int _checkValueLength, // = 0, - int _newValueLength // = 0 + int _newValueLength, // = 0, + int _targetValueLength // = 0, ) { // TODO: this is pretty rough code, but it's reused by each value type. It would be @@ -492,59 +519,76 @@ namespace OpenZWave case ValueID::ValueType_Button: // Button is stored as a bool case ValueID::ValueType_Bool: // bool { - Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Refreshed Value: old value=%s, new value=%s, type=%s", *((bool*) _originalValue) ? "true" : "false", *((uint8*) _newValue) ? "true" : "false", GetTypeNameFromEnum(_type)); + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Value Updated: old value=%s, new value=%s, type=%s", *((bool*) _originalValue) ? "true" : "false", *((uint8*) _newValue) ? "true" : "false", GetTypeNameFromEnum(_type)); + if (m_targetValueSet) + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "\tTarget Value is Set to %s", *((bool*) _targetValue) ? "true" : "false" ); break; } case ValueID::ValueType_Byte: // byte { - Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Refreshed Value: old value=%d, new value=%d, type=%s", *((uint8*) _originalValue), *((uint8*) _newValue), GetTypeNameFromEnum(_type)); + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Value Updated: old value=%d, new value=%d, type=%s", *((uint8*) _originalValue), *((uint8*) _newValue), GetTypeNameFromEnum(_type)); + if (m_targetValueSet) + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "\tTarget Value is Set to %d", *((uint8*) _targetValue)); break; } case ValueID::ValueType_Decimal: // decimal is stored as a string, so treat it as a string here case ValueID::ValueType_String: // string { - Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Refreshed Value: old value=%s, new value=%s, type=%s", ((string*) _originalValue)->c_str(), ((string*) _newValue)->c_str(), GetTypeNameFromEnum(_type)); + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Value Updated: old value=%s, new value=%s, type=%s", ((string*) _originalValue)->c_str(), ((string*) _newValue)->c_str(), GetTypeNameFromEnum(_type)); + if (m_targetValueSet) + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "\tTarget Value is Set to %d", *((string*) _targetValue)->c_str()); break; } case ValueID::ValueType_Short: // short { - Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Refreshed Value: old value=%d, new value=%d, type=%s", *((short*) _originalValue), *((short*) _newValue), GetTypeNameFromEnum(_type)); + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Value Updated: old value=%d, new value=%d, type=%s", *((short*) _originalValue), *((short*) _newValue), GetTypeNameFromEnum(_type)); + if (m_targetValueSet) + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "\tTarget Value is Set to %d", *((short*) _targetValue)); break; } case ValueID::ValueType_List: // List Type is treated as a int32 case ValueID::ValueType_Int: // int32 case ValueID::ValueType_BitSet: // BitSet { - Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Refreshed Value: old value=%d, new value=%d, type=%s", *((int32*) _originalValue), *((int32*) _newValue), GetTypeNameFromEnum(_type)); + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Value Updated: old value=%d, new value=%d, type=%s", *((int32*) _originalValue), *((int32*) _newValue), GetTypeNameFromEnum(_type)); + if (m_targetValueSet) + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "\tTarget Value is Set to %d", *((int32*) _targetValue)); break; } case ValueID::ValueType_Raw: // raw { - Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Refreshed Value: old value=%x, new value=%x, type=%s", _originalValue, _newValue, GetTypeNameFromEnum(_type)); + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Value Updated: old value=%x, new value=%x, type=%s", _originalValue, _newValue, GetTypeNameFromEnum(_type)); + if (m_targetValueSet) + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "\tTarget Value is Set to %x", _targetValue); break; } case ValueID::ValueType_Schedule: // Schedule Type { - Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Refreshed Value: old value=%s, new value=%s, type=%s", _originalValue, _newValue, GetTypeNameFromEnum(_type)); + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Value Updated: old value=%s, new value=%s, type=%s", _originalValue, _newValue, GetTypeNameFromEnum(_type)); + if (m_targetValueSet) + Log::Write(LogLevel_Detail, m_id.GetNodeId(), "\tTarget Value is Set to %x", _targetValue); /* we cant support verifyChanges yet... so always unset this */ m_verifyChanges = false; break; } } + } m_refreshTime = time( NULL); // update value refresh time + /* if this is a Value that has a Target Value Set, then lets compare the reported value against the Target Value + * and Trigger a Refresh (based on the Duration, if necessary) + */ + if (m_targetValueSet) + { + return CheckTargetValue(_newValue, _targetValue, _type, _newValueLength, _targetValueLength); + } + + // check whether changes in this value should be verified (since some devices will report values that always // change, where confirming changes is difficult or impossible) Log::Write(LogLevel_Detail, m_id.GetNodeId(), "Changes to this value are %sverified", m_verifyChanges ? "" : "not "); - if (!m_verifyChanges) - { - // since we're not checking changes in this value, notify ValueChanged (to be on the safe side) - Value::OnValueChanged(); - return 2; // confirmed change of value - } - // see if the value has changed (result is used whether checking change or not) bool bOriginalEqual = false; switch (_type) @@ -568,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 */ @@ -580,6 +624,16 @@ namespace OpenZWave break; } + if (!m_verifyChanges) + { + if (bOriginalEqual) + Value::OnValueRefreshed(); + else + Value::OnValueChanged(); + return 2; // confirmed change of value + } + + // if this is the first refresh of the value, test to see if the value has changed if (!IsCheckingChange()) { @@ -593,7 +647,8 @@ namespace OpenZWave // values are different, so flag this as a verification refresh and queue it Log::Write(LogLevel_Info, m_id.GetNodeId(), "Changed value (possible)--rechecking"); SetCheckingChange(true); - Manager::Get()->RefreshValue(GetID()); + TimerThread::TimerCallback callback = bind(&Value::sendValueRefresh, this, 1); + TimerSetEvent(250, callback, 1); return 1; // value has changed (to be confirmed) } else // IsCheckingChange is true if this is the second read of a potentially changed value @@ -659,7 +714,9 @@ namespace OpenZWave SetCheckingChange(true); // save a temporary copy of value and re-read value from device - Manager::Get()->RefreshValue(GetID()); + //Manager::Get()->RefreshValue(GetID()); + TimerThread::TimerCallback callback = bind(&Value::sendValueRefresh, this, 1); + TimerSetEvent(250, callback, 1); return 1; } } @@ -681,6 +738,106 @@ namespace OpenZWave { Localization::Get()->SetValueLabel(m_id.GetNodeId(), m_id.GetCommandClassId(), m_id.GetIndex(), -1, _label, lang); } + +//----------------------------------------------------------------------------- +// +// Check the reported value against the Target Value +//----------------------------------------------------------------------------- + int Value::CheckTargetValue(void* _newValue, void* _targetValue, ValueID::ValueType _type, int _newValueLength, int _targetValueLength) + { + // see if the value has changed (result is used whether checking change or not) + bool bOriginalEqual = false; + switch (_type) + { + case ValueID::ValueType_Decimal: // Decimal is stored as a string + case ValueID::ValueType_String: // string + bOriginalEqual = (strcmp(((string*) _targetValue)->c_str(), ((string*) _newValue)->c_str()) == 0); + break; + case ValueID::ValueType_Short: // short + bOriginalEqual = (*((short*) _targetValue) == *((short*) _newValue)); + break; + case ValueID::ValueType_List: // List Type is treated as a int32 + case ValueID::ValueType_Int: // int + bOriginalEqual = (*((int32*) _targetValue) == *((int32*) _newValue)); + break; + case ValueID::ValueType_Byte: // uint8 + bOriginalEqual = (*((uint8*) _targetValue) == *((uint8*) _newValue)); + break; + case ValueID::ValueType_Button: // Button is stored as a bool + case ValueID::ValueType_Bool: // bool + bOriginalEqual = (*((bool*) _targetValue) == *((bool*) _newValue)); + break; + case ValueID::ValueType_Raw: // raw + bOriginalEqual = (_targetValueLength == _newValueLength); // first check length of arrays + if (bOriginalEqual) + bOriginalEqual = (memcmp(_targetValue, _newValue, _newValueLength) == 0); // if length is the same, then check content + break; + case ValueID::ValueType_Schedule: // Schedule + /* Should not get here */ + break; + case ValueID::ValueType_BitSet: // BitSet + bOriginalEqual = (((Bitfield *) _targetValue)->GetValue() == ((Bitfield *) _newValue)->GetValue()); + break; + } + if (bOriginalEqual) + { + /* reset the Bool around TargetValueSet so we + * can handle situations where Target Value is not supplied in the future + */ + m_targetValueSet = false; + + Value::OnValueChanged(); + return 2; // confirmed change of value + } + /* They are not equal - So we need to issue a Get, But lets pace the timing of the Get based on Duration + * - Caveat here is that if the outgoing queue is large, then this will be additionally delayed + */ + int32 timeout; + if (m_duration <= 2) + { + timeout = 250; + } + else if (m_duration <= 5) + { + /* for Durations less than 5 seconds, lets refresh every 1/2 seconds + */ + timeout = 500; + } + else + { + /* Everything else is 1 second + */ + timeout = 1000; + } + + TimerThread::TimerCallback callback = bind(&Value::sendValueRefresh, this, 1); + TimerSetEvent(timeout, callback, 1); + /* signal that the value hasn't changed */ + return 0; + } + +//----------------------------------------------------------------------------- +// +// Callback from the Timer to send a Get value to refresh a value from the +// CheckTargetValue function +//----------------------------------------------------------------------------- + void Value::sendValueRefresh(uint32 _unused) + { + Log::Write(LogLevel_Info, m_id.GetNodeId(), "Sending Get to Refresh Value after Target Check"); + if (Driver* driver = Manager::Get()->GetDriver(m_id.GetHomeId())) + { + Node* node = driver->GetNodeUnsafe(m_id.GetNodeId()); + if (node != NULL) + { + if (Internal::CC::CommandClass* cc = node->GetCommandClass(m_id.GetCommandClassId())) + { + cc->RequestValue( 0, m_id.GetIndex(), m_id.GetInstance(), Driver::MsgQueue_Send ); + } + } + } + } + + } // namespace VC } // namespace Internal } // namespace OpenZWave diff --git a/cpp/src/value_classes/Value.h b/cpp/src/value_classes/Value.h index 4bd3d0a1ba..f8336c186d 100644 --- a/cpp/src/value_classes/Value.h +++ b/cpp/src/value_classes/Value.h @@ -33,6 +33,7 @@ #include #endif #include "Defs.h" +#include "TimerThread.h" #include "platform/Ref.h" #include "value_classes/ValueID.h" #include "platform/Log.h" @@ -50,7 +51,7 @@ namespace OpenZWave /** \brief Base class for values associated with a node. * \ingroup ValueID */ - class Value: public Internal::Platform::Ref + class Value: public Internal::Platform::Ref, private Timer { friend class OpenZWave::Driver; friend class ValueStore; @@ -125,6 +126,15 @@ namespace OpenZWave return m_verifyChanges; } + void SetRefreshAfterSet(bool _refreshAfterSet) + { + m_refreshAfterSet = _refreshAfterSet; + } + bool GetRefreshAfterSet() + { + return m_refreshAfterSet; + } + virtual string const GetAsString() const { return ""; @@ -153,6 +163,8 @@ namespace OpenZWave return Ref::Release(); } #endif + void sendValueRefresh(uint32 _unused); + protected: virtual ~Value(); @@ -164,16 +176,25 @@ namespace OpenZWave { m_checkChange = _check; } + bool IsTargetValueSet() const + { + return m_targetValueSet; + } + void OnValueRefreshed(); // A value in a device has been refreshed void OnValueChanged(); // The refreshed value actually changed - int VerifyRefreshedValue(void* _originalValue, void* _checkValue, void* _newValue, ValueID::ValueType _type, int _originalValueLength = 0, int _checkValueLength = 0, int _newValueLength = 0); + int VerifyRefreshedValue(void* _originalValue, void* _checkValue, void* _newValue, void* _targetValue, ValueID::ValueType _type, int _originalValueLength = 0, int _checkValueLength = 0, int _newValueLength = 0, int _targetValueLength = 0); + int CheckTargetValue(void* _newValue, void* _targetValue, ValueID::ValueType _type, int _newValueLength, int _targetValueLength); int32 m_min; int32 m_max; time_t m_refreshTime; // time_t identifying when this value was last refreshed bool m_verifyChanges; // if true, apparent changes are verified; otherwise, they're not + bool m_refreshAfterSet; // if true, all value sets are followed by a get to refresh the value manually ValueID m_id; + bool m_targetValueSet; // If the Target Value is Set + uint32 m_duration; // The Duration, if the CC supports it private: string m_units; diff --git a/cpp/src/value_classes/ValueBitSet.cpp b/cpp/src/value_classes/ValueBitSet.cpp index e94df2592c..df482c8d36 100644 --- a/cpp/src/value_classes/ValueBitSet.cpp +++ b/cpp/src/value_classes/ValueBitSet.cpp @@ -46,7 +46,7 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- ValueBitSet::ValueBitSet(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, uint32 const _value, uint8 const _pollIntensity) : - Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_BitSet, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(false), m_newValue(false), m_BitMask(0xFFFFFFFF), m_size(0) + Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_BitSet, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(false), m_newValue(false), m_BitMask(0xFFFFFFFF), m_size(0), m_targetValue(0) { } @@ -297,8 +297,7 @@ namespace OpenZWave { if (isValidBit(_idx)) { - Localization::Get()->SetValueItemHelp(m_id.GetNodeId(), m_id.GetCommandClassId(), m_id.GetIndex(), -1, _idx, Localization::Get()->GetSelectedLang()); - return true; + return Localization::Get()->SetValueItemHelp(m_id.GetNodeId(), m_id.GetCommandClassId(), m_id.GetIndex(), -1, _idx, help, Localization::Get()->GetSelectedLang()); } Log::Write(LogLevel_Warning, m_id.GetNodeId(), "SetBitHelp: Bit %d is not valid with BitMask %d", _idx, m_BitMask); return false; @@ -342,13 +341,24 @@ namespace OpenZWave m_size = size; } +//----------------------------------------------------------------------------- +// +// Set the Value Target (Used for Automatic Refresh) +//----------------------------------------------------------------------------- + void ValueBitSet::SetTargetValue(uint32 const _target, uint32 _duration) + { + m_targetValueSet = true; + m_targetValue = _target; + m_duration = _duration; + } + //----------------------------------------------------------------------------- // // A value in a device has been refreshed //----------------------------------------------------------------------------- void ValueBitSet::OnValueRefreshed(uint32 const _value) { - switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, ValueID::ValueType_BitSet)) + switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, (void*) &m_targetValue, ValueID::ValueType_BitSet)) { case 0: // value hasn't changed, nothing to do break; diff --git a/cpp/src/value_classes/ValueBitSet.h b/cpp/src/value_classes/ValueBitSet.h index f4a9766d41..bf2aec96d7 100644 --- a/cpp/src/value_classes/ValueBitSet.h +++ b/cpp/src/value_classes/ValueBitSet.h @@ -60,6 +60,8 @@ namespace OpenZWave bool Set(uint32 const _value); uint32 GetValue() const; + void SetTargetValue(uint32 const _target, uint32 _duration = 0); + bool SetBit(uint8 const _idx); bool ClearBit(uint8 const _idx); bool GetBit(uint8 _idx) const; @@ -92,6 +94,7 @@ namespace OpenZWave uint32 m_BitMask; // Valid Bits uint8 m_size; // Number of bytes in size vector m_bits; + uint32 m_targetValue; // Target Value, if Supported; }; } // namespace VC } // namespace Internal diff --git a/cpp/src/value_classes/ValueBool.cpp b/cpp/src/value_classes/ValueBool.cpp index d7683d93fd..eea68b2b8e 100644 --- a/cpp/src/value_classes/ValueBool.cpp +++ b/cpp/src/value_classes/ValueBool.cpp @@ -45,7 +45,7 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- ValueBool::ValueBool(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, bool const _value, uint8 const _pollIntensity) : - Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Bool, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(false) + Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Bool, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(false), m_targetValue(false) { } @@ -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(); @@ -110,13 +113,24 @@ namespace OpenZWave return ret; } +//----------------------------------------------------------------------------- +// +// Set the Value Target (Used for Automatic Refresh) +//----------------------------------------------------------------------------- + void ValueBool::SetTargetValue(bool const _target, uint32 _duration) + { + m_targetValueSet = true; + m_targetValue = _target; + m_duration = _duration; + } + //----------------------------------------------------------------------------- // // A value in a device has been refreshed //----------------------------------------------------------------------------- void ValueBool::OnValueRefreshed(bool const _value) { - switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, ValueID::ValueType_Bool)) + switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, (void *) &m_targetValue, ValueID::ValueType_Bool)) { case 0: // value hasn't changed, nothing to do break; diff --git a/cpp/src/value_classes/ValueBool.h b/cpp/src/value_classes/ValueBool.h index 7caf62eea4..41fb23d8e7 100644 --- a/cpp/src/value_classes/ValueBool.h +++ b/cpp/src/value_classes/ValueBool.h @@ -57,6 +57,12 @@ 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); + // From Value virtual string const GetAsString() const @@ -75,6 +81,8 @@ namespace OpenZWave private: 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 68e30d7211..a36b06425e 100644 --- a/cpp/src/value_classes/ValueByte.cpp +++ b/cpp/src/value_classes/ValueByte.cpp @@ -45,7 +45,7 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- ValueByte::ValueByte(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, uint8 const _value, uint8 const _pollIntensity) : - Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Byte, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(false) + Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Byte, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(false), m_targetValue(0) { m_min = 0; m_max = 255; @@ -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(); @@ -129,13 +132,24 @@ namespace OpenZWave return ret; } +//----------------------------------------------------------------------------- +// +// Set the Value Target (Used for Automatic Refresh) +//----------------------------------------------------------------------------- + void ValueByte::SetTargetValue(uint8 const _target, uint32 _duration) + { + m_targetValueSet = true; + m_targetValue = _target; + m_duration = _duration; + } + //----------------------------------------------------------------------------- // // A value in a device has been refreshed //----------------------------------------------------------------------------- void ValueByte::OnValueRefreshed(uint8 const _value) { - switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, ValueID::ValueType_Byte)) + switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, (void*) &m_targetValue, ValueID::ValueType_Byte)) { case 0: // value hasn't changed, nothing to do break; diff --git a/cpp/src/value_classes/ValueByte.h b/cpp/src/value_classes/ValueByte.h index 517b04a28b..bc65807087 100644 --- a/cpp/src/value_classes/ValueByte.h +++ b/cpp/src/value_classes/ValueByte.h @@ -55,6 +55,11 @@ 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 virtual string const GetAsString() const; @@ -70,6 +75,8 @@ namespace OpenZWave private: 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 9acef6ce61..34920cc4d6 100644 --- a/cpp/src/value_classes/ValueDecimal.cpp +++ b/cpp/src/value_classes/ValueDecimal.cpp @@ -44,7 +44,7 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- ValueDecimal::ValueDecimal(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, string const& _value, uint8 const _pollIntensity) : - Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Decimal, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(""), m_newValue(""), m_precision(0) + Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Decimal, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(""), m_newValue(""), m_precision(0), m_targetValue("") { } @@ -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(); @@ -96,13 +99,25 @@ namespace OpenZWave return ret; } +//----------------------------------------------------------------------------- +// +// Set the Value Target (Used for Automatic Refresh) +//----------------------------------------------------------------------------- + void ValueDecimal::SetTargetValue(string const _target, uint32 _duration) + { + m_targetValueSet = true; + m_targetValue = _target; + m_duration = _duration; + } + + //----------------------------------------------------------------------------- // // A value in a device has been refreshed //----------------------------------------------------------------------------- void ValueDecimal::OnValueRefreshed(string const& _value) { - switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, ValueID::ValueType_Decimal)) + switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, (void *) &m_targetValue, ValueID::ValueType_Decimal)) { case 0: // value hasn't changed, nothing to do break; diff --git a/cpp/src/value_classes/ValueDecimal.h b/cpp/src/value_classes/ValueDecimal.h index 8684932209..5b2d402b0b 100644 --- a/cpp/src/value_classes/ValueDecimal.h +++ b/cpp/src/value_classes/ValueDecimal.h @@ -59,6 +59,11 @@ 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 virtual string const GetAsString() const @@ -91,6 +96,7 @@ namespace OpenZWave string m_valueCheck; // the previous value (used for double-checking spurious value reads) string m_newValue; // a new value to be set on the appropriate device uint8 m_precision; + string m_targetValue; // Target Value if supported. }; } // namespace VC } // namespace Internal diff --git a/cpp/src/value_classes/ValueID.cpp b/cpp/src/value_classes/ValueID.cpp index 3154dbc3ff..b7b177c559 100644 --- a/cpp/src/value_classes/ValueID.cpp +++ b/cpp/src/value_classes/ValueID.cpp @@ -27,6 +27,9 @@ #include "ValueID.h" #include "Value.h" +#include +#include + namespace OpenZWave { @@ -48,4 +51,22 @@ namespace OpenZWave return Internal::VC::Value::GetTypeNameFromEnum(GetType()); } + string const ValueID::GetAsString() const + { + // Match constructor order + // ValueID(uint32 const _homeId, uint8 const _nodeId, ValueGenre const _genre, uint8 const _commandClassId, + // uint8 const _instance, uint16 const _valueIndex, ValueType const _type) + std::ostringstream s; + + s + << "HomeID: 0x" << hex << setfill('0') << setw(8) << GetHomeId() + << ", ValueID: (Id 0x" << setw(16) << GetId() << dec << setfill(' ') + << ", NodeID " << static_cast(GetNodeId()) + << ", Genre " << GetGenreAsString() + << ", CC 0x" << hex << setfill('0') << setw(2) << static_cast(GetCommandClassId()) << dec << setfill(' ') + << ", Instance " << static_cast(GetInstance()) + << ", Index " << static_cast(GetIndex()) + << ", Type " << GetTypeAsString() << ')'; + return s.str(); + } }// namespace OpenZWave diff --git a/cpp/src/value_classes/ValueID.h b/cpp/src/value_classes/ValueID.h index 937e7673f6..e24ce57d74 100644 --- a/cpp/src/value_classes/ValueID.h +++ b/cpp/src/value_classes/ValueID.h @@ -215,6 +215,11 @@ namespace OpenZWave { return (uint64) (((uint64) m_id1 << 32) | m_id); } + /** + * GetAsString returns a string representing the ValueID in human readable form + * \return a std::string + */ + string const GetAsString() const; // Comparison Operators bool operator ==(ValueID const& _other) const diff --git a/cpp/src/value_classes/ValueInt.cpp b/cpp/src/value_classes/ValueInt.cpp index 59e94e560a..237404b7e5 100644 --- a/cpp/src/value_classes/ValueInt.cpp +++ b/cpp/src/value_classes/ValueInt.cpp @@ -46,7 +46,7 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- ValueInt::ValueInt(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, int32 const _value, uint8 const _pollIntensity) : - Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Int, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(0) + Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Int, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(0), m_targetValue(0) { m_min = INT_MIN; m_max = INT_MAX; @@ -128,13 +128,24 @@ namespace OpenZWave return ret; } +//----------------------------------------------------------------------------- +// +// Set the Value Target (Used for Automatic Refresh) +//----------------------------------------------------------------------------- + void ValueInt::SetTargetValue(int32 const _target, uint32 _duration) + { + m_targetValueSet = true; + m_targetValue = _target; + m_duration = _duration; + } + //----------------------------------------------------------------------------- // // A value in a device has been refreshed //----------------------------------------------------------------------------- void ValueInt::OnValueRefreshed(int32 const _value) { - switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, ValueID::ValueType_Int)) + switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, (void *) &m_targetValue, ValueID::ValueType_Int)) { case 0: // value hasn't changed, nothing to do break; diff --git a/cpp/src/value_classes/ValueInt.h b/cpp/src/value_classes/ValueInt.h index 34f8c0f9aa..e272b93df6 100644 --- a/cpp/src/value_classes/ValueInt.h +++ b/cpp/src/value_classes/ValueInt.h @@ -55,6 +55,8 @@ namespace OpenZWave bool Set(int32 const _value); void OnValueRefreshed(int32 const _value); + void SetTargetValue(int32 const _target, uint32 _duration = 0); + // From Value virtual string const GetAsString() const; @@ -70,6 +72,7 @@ namespace OpenZWave private: int32 m_value; // the current value int32 m_valueCheck; // the previous value (used for double-checking spurious value reads) + int32 m_targetValue; // Target Value }; } // namespace VC } // namespace Internal diff --git a/cpp/src/value_classes/ValueList.cpp b/cpp/src/value_classes/ValueList.cpp index 5433ba2de8..a89629d163 100644 --- a/cpp/src/value_classes/ValueList.cpp +++ b/cpp/src/value_classes/ValueList.cpp @@ -46,7 +46,7 @@ namespace OpenZWave //----------------------------------------------------------------------------- ValueList::ValueList(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, vector const& _items, int32 const _valueIdx, uint8 const _pollIntensity, uint8 const _size // = 4 ) : - Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_List, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_items(_items), m_valueIdx(_valueIdx), m_valueIdxCheck(0), m_size(_size) + Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_List, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_items(_items), m_valueIdx(_valueIdx), m_valueIdxCheck(0), m_size(_size), m_targetValue(0) { for (vector::iterator it = m_items.begin(); it != m_items.end(); ++it) { @@ -85,12 +85,12 @@ namespace OpenZWave } else { - Log::Write(LogLevel_Warning, "Value size is invalid (%d). Only 1, 2 & 4 supported for node %d, class 0x%02x, instance %d, index %d", intSize, _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex()); + Log::Write(LogLevel_Warning, "Value size is invalid (%d). Only 1, 2 & 4 supported for node %d, class 0x%02x, instance %d, index %d - %s", intSize, _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex(), GetID().GetAsString().c_str()); } } else { - Log::Write(LogLevel_Warning, "Value list size is not set, assuming 4 bytes for node %d, class 0x%02x, instance %d, index %d", _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex()); + Log::Write(LogLevel_Warning, "Value list size is not set, assuming 4 bytes for node %d, class 0x%02x, instance %d, index %d - %s", _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex(), GetID().GetAsString().c_str()); } TiXmlElement const* itemElement = _valueElement->FirstChildElement(); @@ -125,12 +125,11 @@ namespace OpenZWave int value = 0; if (itemElement->QueryIntAttribute("value", &value) != TIXML_SUCCESS) { - Log::Write(LogLevel_Warning, "Item value %s is wrong type or does not exist in xml configuration for node %d, class 0x%02x, instance %d, index %d", labelStr, _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex()); - continue; + Log::Write(LogLevel_Warning, "Item value %s is wrong type or does not exist in xml configuration for node %d, class 0x%02x, instance %d, index %d - %s", labelStr, _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex(), GetID().GetAsString().c_str()); } - if ((m_size == 1 && value > 255) || (m_size == 2 && value > 65535)) + else if ((m_size == 1 && value > 255) || (m_size == 2 && value > 65535)) { - Log::Write(LogLevel_Warning, "Item value %s is incorrect size in xml configuration for node %d, class 0x%02x, instance %d, index %d", labelStr, _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex()); + Log::Write(LogLevel_Warning, "Item value %s is incorrect size in xml configuration for node %d, class 0x%02x, instance %d, index %d - %s", labelStr, _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex(), GetID().GetAsString().c_str()); } else { @@ -167,7 +166,7 @@ namespace OpenZWave } else { - Log::Write(LogLevel_Warning, "Value is not found in xml configuration for node %d, class 0x%02x, instance %d, index %d", _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex()); + Log::Write(LogLevel_Warning, "Value is not found in xml configuration for node %d, class 0x%02x, instance %d, index %d - %s", _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex(), GetID().GetAsString().c_str()); } } @@ -183,12 +182,12 @@ namespace OpenZWave } else { - Log::Write(LogLevel_Warning, "Vindex is out of range for index in xml configuration for node %d, class 0x%02x, instance %d, index %d", _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex()); + Log::Write(LogLevel_Warning, "Vindex is out of range for index in xml configuration for node %d, class 0x%02x, instance %d, index %d - %s", _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex(), GetID().GetAsString().c_str()); } } if (!valSet && !indSet) { - Log::Write(LogLevel_Warning, "Missing default list value or vindex from xml configuration: node %d, class 0x%02x, instance %d, index %d", _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex()); + Log::Write(LogLevel_Warning, "Missing default list value or vindex from xml configuration: node %d, class 0x%02x, instance %d, index %d - %s", _nodeId, _commandClassId, GetID().GetInstance(), GetID().GetIndex(), GetID().GetAsString().c_str()); } } @@ -230,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(); @@ -250,12 +252,24 @@ namespace OpenZWave if (index < 0) { // Item not found + Log::Write(LogLevel_Warning, "Attempt to Set a Invalid Label %s for ValueList in OnValueRefreshed %s", _label.c_str(), GetID().GetAsString().c_str()); return false; } return SetByValue(index); } +//----------------------------------------------------------------------------- +// +// Set the Value Target (Used for Automatic Refresh) +//----------------------------------------------------------------------------- + void ValueList::SetTargetValue(int32 const _target, uint32 _duration) + { + m_targetValueSet = true; + m_targetValue = _target; + m_duration = _duration; + } + //----------------------------------------------------------------------------- // // A value in a device has been refreshed @@ -267,10 +281,11 @@ namespace OpenZWave if (index < 0) { // Item not found + Log::Write(LogLevel_Warning, "Attempt to Set a Invalid Index %d for ValueList in OnValueRefreshed %s", _value, GetID().GetAsString().c_str()); return; } - switch (VerifyRefreshedValue((void*) &m_valueIdx, (void*) &m_valueIdxCheck, (void*) &index, ValueID::ValueType_List)) + switch (VerifyRefreshedValue((void*) &m_valueIdx, (void*) &m_valueIdxCheck, (void*) &index, (void*) &m_targetValue, ValueID::ValueType_List)) { case 0: // value hasn't changed, nothing to do break; @@ -298,7 +313,7 @@ namespace OpenZWave return i; } } - + Log::Write(LogLevel_Warning, "Attempt to get a Invalid Label %s from ValueList %s", _label.c_str(), GetID().GetAsString().c_str()); return -1; } @@ -315,7 +330,7 @@ namespace OpenZWave return i; } } - + Log::Write(LogLevel_Warning, "Attempt to get a Invalid Index %d on ValueList %s", _value, GetID().GetAsString().c_str()); return -1; } @@ -334,7 +349,7 @@ namespace OpenZWave return true; } - + Log::Write(LogLevel_Error, "o_items passed to ValueList::GetItemLabels is null: %s", GetID().GetAsString().c_str()); return false; } @@ -353,7 +368,7 @@ namespace OpenZWave return true; } - + Log::Write(LogLevel_Error, "o_values passed to ValueList::GetItemLabels is null: %s", GetID().GetAsString().c_str()); return false; } @@ -365,11 +380,17 @@ namespace OpenZWave { try { + /* very strange - We throw a exception if its out of range, but its not caught? */ + if (m_items.size() < (uint32)m_valueIdx) + { + Log::Write(LogLevel_Warning, "Invalid Index Set on ValueList %s: %d", GetID().GetAsString().c_str(), m_valueIdx); + return NULL; + } return &m_items.at(m_valueIdx); } - catch (const std::out_of_range& oor) + catch (std::out_of_range const& oor) { - Log::Write(LogLevel_Warning, "Invalid Index Set on ValueList: %s", oor.what()); + Log::Write(LogLevel_Warning, "Invalid Index Set on ValueList %s: %s", GetID().GetAsString().c_str(), oor.what()); return NULL; } } diff --git a/cpp/src/value_classes/ValueList.h b/cpp/src/value_classes/ValueList.h index 614bf77d43..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 @@ -76,6 +80,8 @@ namespace OpenZWave { return SetByLabel(_value); } + void SetTargetValue(int32 const _target, uint32 _duration = 0); + virtual void ReadXML(uint32 const _homeId, uint8 const _nodeId, uint8 const _commandClassId, TiXmlElement const* _valueElement); virtual void WriteXML(TiXmlElement* _valueElement); @@ -96,7 +102,10 @@ 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 + }; } // namespace VC } // namespace Internal diff --git a/cpp/src/value_classes/ValueRaw.cpp b/cpp/src/value_classes/ValueRaw.cpp index 8c562a3220..535b6c91e8 100644 --- a/cpp/src/value_classes/ValueRaw.cpp +++ b/cpp/src/value_classes/ValueRaw.cpp @@ -44,7 +44,7 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- ValueRaw::ValueRaw(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, uint8 const* _value, uint8 const _length, uint8 const _pollIntensity) : - Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Raw, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value( NULL), m_valueLength(_length), m_valueCheck( NULL), m_valueCheckLength(0) + Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Raw, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value( NULL), m_valueLength(_length), m_valueCheck( NULL), m_valueCheckLength(0), m_targetValue(NULL), m_targetValueLength(0) { m_value = new uint8[_length]; memcpy(m_value, _value, _length); @@ -211,13 +211,25 @@ namespace OpenZWave return ret; } +//----------------------------------------------------------------------------- +// +// Set the Value Target (Used for Automatic Refresh) +//----------------------------------------------------------------------------- + void ValueRaw::SetTargetValue(uint8 const* _target, uint8 const _length, int32 _duration) + { + m_targetValueSet = true; + memcpy(m_targetValue, _target, _length); + m_targetValueLength = _length; + m_duration = _duration; + } + //----------------------------------------------------------------------------- // // A value in a device has been refreshed //----------------------------------------------------------------------------- void ValueRaw::OnValueRefreshed(uint8 const* _value, uint8 const _length) { - switch (VerifyRefreshedValue((void*) m_value, (void*) m_valueCheck, (void*) _value, ValueID::ValueType_Raw, m_valueLength, m_valueCheckLength, _length)) + switch (VerifyRefreshedValue((void*) m_value, (void*) m_valueCheck, (void*) _value, (void*) m_targetValue, ValueID::ValueType_Raw, m_valueLength, m_valueCheckLength, _length, m_targetValueLength)) { case 0: // value hasn't changed, nothing to do break; diff --git a/cpp/src/value_classes/ValueRaw.h b/cpp/src/value_classes/ValueRaw.h index 38e3da445b..180dc432f2 100644 --- a/cpp/src/value_classes/ValueRaw.h +++ b/cpp/src/value_classes/ValueRaw.h @@ -53,6 +53,7 @@ namespace OpenZWave bool Set(uint8 const* _value, uint8 const _length); void OnValueRefreshed(uint8 const* _value, uint8 const _length); + void SetTargetValue(uint8 const* _target, uint8 const _length, int32 _duration = 0); // From Value virtual string const GetAsString() const; @@ -74,6 +75,8 @@ namespace OpenZWave uint8 m_valueLength; // fixed length for this instance uint8* m_valueCheck; // the previous value (used for double-checking spurious value reads) uint8 m_valueCheckLength; // m_valueCheck array length + uint8* m_targetValue; // Target Value + uint8 m_targetValueLength; // Target Value Array Length }; } // namespace VC } // namespace Internal diff --git a/cpp/src/value_classes/ValueSchedule.cpp b/cpp/src/value_classes/ValueSchedule.cpp index fb5ed9a0ac..7624dfc5f0 100644 --- a/cpp/src/value_classes/ValueSchedule.cpp +++ b/cpp/src/value_classes/ValueSchedule.cpp @@ -155,7 +155,7 @@ namespace OpenZWave { /* Value::VerifyRefreshedValue doesn't handle Schedule Properly yet, but still do this so we can do it eventually */ - switch (VerifyRefreshedValue((void*) "Schedule", (void*) "Schedule", (void*) "Schedule", ValueID::ValueType_Schedule)) + switch (VerifyRefreshedValue((void*) "Schedule", (void*) "Schedule", (void*) "Schedule", (void *) "Schedule", ValueID::ValueType_Schedule)) { case 0: // value hasn't changed, nothing to do break; diff --git a/cpp/src/value_classes/ValueShort.cpp b/cpp/src/value_classes/ValueShort.cpp index b0e0bd867a..75815dfa30 100644 --- a/cpp/src/value_classes/ValueShort.cpp +++ b/cpp/src/value_classes/ValueShort.cpp @@ -46,7 +46,7 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- ValueShort::ValueShort(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, int16 const _value, uint8 const _pollIntensity) : - Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Short, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(0) + Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_Short, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(0), m_targetValue(0) { m_min = SHRT_MIN; m_max = SHRT_MAX; @@ -131,13 +131,24 @@ namespace OpenZWave return ret; } +//----------------------------------------------------------------------------- +// +// Set the Value Target (Used for Automatic Refresh) +//----------------------------------------------------------------------------- + void ValueShort::SetTargetValue(int16 const _target, uint32 _duration) + { + m_targetValueSet = true; + m_targetValue = _target; + m_duration = _duration; + } + //----------------------------------------------------------------------------- // // A value in a device has been refreshed //----------------------------------------------------------------------------- void ValueShort::OnValueRefreshed(int16 const _value) { - switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, ValueID::ValueType_Short)) + switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, (void *) &m_targetValue, ValueID::ValueType_Short)) { case 0: // value hasn't changed, nothing to do break; diff --git a/cpp/src/value_classes/ValueShort.h b/cpp/src/value_classes/ValueShort.h index db5c13340f..abfd66454b 100644 --- a/cpp/src/value_classes/ValueShort.h +++ b/cpp/src/value_classes/ValueShort.h @@ -55,6 +55,7 @@ namespace OpenZWave bool Set(int16 const _value); void OnValueRefreshed(int16 const _value); + void SetTargetValue(int16 const _target, uint32 _duration = 0); // From Value virtual string const GetAsString() const; @@ -70,6 +71,7 @@ namespace OpenZWave private: int16 m_value; // the current value int16 m_valueCheck; // the previous value (used for double-checking spurious value reads) + int16 m_targetValue; // Target Value }; } // namespace VC } // namespace Internal diff --git a/cpp/src/value_classes/ValueStore.cpp b/cpp/src/value_classes/ValueStore.cpp index 3c99389b1f..0851eefcf2 100644 --- a/cpp/src/value_classes/ValueStore.cpp +++ b/cpp/src/value_classes/ValueStore.cpp @@ -87,6 +87,10 @@ namespace OpenZWave Log::Write(LogLevel_Info, _value->GetID().GetNodeId(), "Setting VerifiedChanged Flag on Value %d for CC %s", _value->GetID().GetIndex(), cc->GetCommandClassName().c_str()); _value->SetChangeVerified(true); } + if (cc->m_com.GetFlagBool(COMPAT_FLAG_NO_REFRESH_AFTER_SET, _value->GetID().GetIndex())) { + Log::Write(LogLevel_Info, _value->GetID().GetNodeId(), "Setting NoRefreshAfterSet Flag on Value %d for CC %s", _value->GetID().GetIndex(), cc->GetCommandClassName().c_str()); + _value->SetRefreshAfterSet(false); + } } } Notification* notification = new Notification(Notification::Type_ValueAdded); @@ -166,7 +170,7 @@ namespace OpenZWave // Now release and remove the value from the store value->Release(); - m_values.erase(it++); + it = m_values.erase(it); } else { diff --git a/cpp/src/value_classes/ValueString.cpp b/cpp/src/value_classes/ValueString.cpp index fad42a8873..6e7a0f81a0 100644 --- a/cpp/src/value_classes/ValueString.cpp +++ b/cpp/src/value_classes/ValueString.cpp @@ -43,7 +43,7 @@ namespace OpenZWave // Constructor //----------------------------------------------------------------------------- ValueString::ValueString(uint32 const _homeId, uint8 const _nodeId, ValueID::ValueGenre const _genre, uint8 const _commandClassId, uint8 const _instance, uint16 const _index, string const& _label, string const& _units, bool const _readOnly, bool const _writeOnly, string const& _value, uint8 const _pollIntensity) : - Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_String, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(""), m_newValue("") + Value(_homeId, _nodeId, _genre, _commandClassId, _instance, _index, ValueID::ValueType_String, _label, _units, _readOnly, _writeOnly, false, _pollIntensity), m_value(_value), m_valueCheck(""), m_newValue(""), m_targetValue("") { } @@ -95,13 +95,24 @@ namespace OpenZWave return ret; } +//----------------------------------------------------------------------------- +// +// Set the Value Target (Used for Automatic Refresh) +//----------------------------------------------------------------------------- + void ValueString::SetTargetValue(string const _target, uint32 _duration) + { + m_targetValueSet = true; + m_targetValue = _target; + m_duration = _duration; + } + //----------------------------------------------------------------------------- // // A value in a device has been refreshed //----------------------------------------------------------------------------- void ValueString::OnValueRefreshed(string const& _value) { - switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, ValueID::ValueType_String)) + switch (VerifyRefreshedValue((void*) &m_value, (void*) &m_valueCheck, (void*) &_value, (void *) &m_targetValue, ValueID::ValueType_String)) { case 0: // value hasn't changed, nothing to do break; diff --git a/cpp/src/value_classes/ValueString.h b/cpp/src/value_classes/ValueString.h index 0b3e7714fb..ad1bae4b78 100644 --- a/cpp/src/value_classes/ValueString.h +++ b/cpp/src/value_classes/ValueString.h @@ -57,6 +57,7 @@ namespace OpenZWave bool Set(string const& _value); void OnValueRefreshed(string const& _value); + void SetTargetValue(string const _target, uint32 _duration = 0); // From Value virtual string const GetAsString() const @@ -79,6 +80,7 @@ namespace OpenZWave string m_value; // the current value string m_valueCheck; // the previous value (used for double-checking spurious value reads) string m_newValue; // a new value to be set on the appropriate device + string m_targetValue; // Target Value }; } // namespace VC } // namespace Internal diff --git a/cpp/test/ValueID_test.cpp b/cpp/test/ValueID_test.cpp index a9e5320952..cc0508bf5b 100644 --- a/cpp/test/ValueID_test.cpp +++ b/cpp/test/ValueID_test.cpp @@ -45,7 +45,7 @@ TEST(OpenZWave, Version) // "Expected: (ozw_vers_revision) >= (900), actual: 0 vs 900 [ FAILED ] OpenZWave.Version (0 ms)"" if (ozw_vers_revision != 0) { - EXPECT_GE(ozw_vers_revision, 900); + EXPECT_GE(ozw_vers_revision, 992); } } TEST(ValueID, Constructor) @@ -120,5 +120,17 @@ TEST(ValueID, GetStoreKey) delete vid5; delete vid6; } +TEST(ValueID, GetAsString) +{ + EXPECT_EQ( + ValueID(0xFFFF, static_cast(0x400000133002A)).GetAsString(), + "HomeID: 0x0000ffff, ValueID: (Id 0x000400000133002a, NodeID 1, Genre basic, CC 0xcc, Instance 2, Index 4, Type bitset)"); + EXPECT_EQ( + ValueID(static_cast(0x1), 0x02, ValueID::ValueGenre_System, 0x04, 5, 6, ValueID::ValueType_String).GetAsString(), + "HomeID: 0x00000001, ValueID: (Id 0x0006000002c10057, NodeID 2, Genre system, CC 0x04, Instance 5, Index 6, Type string)"); + EXPECT_EQ( + ValueID(static_cast(0xABCDEF01), static_cast(0x0123456789ABCDEF)).GetAsString(), + "HomeID: 0xabcdef01, ValueID: (Id 0x0123456789abcdef, NodeID 137, Genre config, CC 0xaf, Instance 222, Index 291, Type invalid type)"); +} } // namespace Testing } // namespace OpenZWave \ No newline at end of file diff --git a/dist/openzwave.spec b/dist/openzwave.spec index 6f40127750..8057cedefc 100644 --- a/dist/openzwave.spec +++ b/dist/openzwave.spec @@ -3,7 +3,7 @@ %endif Name: openzwave -Version: 1.6.987 +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.987 +* 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 f88e3eb753..a804229a22 100644 --- a/distfiles.mk +++ b/distfiles.mk @@ -1,8 +1,7 @@ # This File is automatically generated by make dist-update # Any Edits on this file will be lost next time dist-update is run -DISTFILES = .github/workflows/PRTest.yml \ - .gitignore \ +DISTFILES = .gitignore \ BSDmakefile \ INSTALL \ LICENSE \ @@ -10,6 +9,7 @@ DISTFILES = .github/workflows/PRTest.yml \ README.md \ config/2gig/ct100.xml \ config/2gig/ct101.xml \ + config/2gig/ct200.xml \ config/2gig/ct30.xml \ config/2gig/ct32.xml \ config/2gig/ct50e.xml \ @@ -37,6 +37,7 @@ DISTFILES = .github/workflows/PRTest.yml \ config/NotificationCCTypes.xsd \ config/SensorMultiLevelCCTypes.xml \ config/SensorMultiLevelCCTypes.xsd \ + config/abus/SHRM10000.xml \ config/act/lfm20.xml \ config/act/zdm230.xml \ config/act/zdp100.xml \ @@ -113,26 +114,38 @@ DISTFILES = .github/workflows/PRTest.yml \ config/aeotec/zwa005.xml \ 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 \ config/comfort/ucm.xml \ config/config-template.xml \ + config/connecthome/ch-201.xml \ config/cooper/RF9501.xml \ config/cooper/RF9505-T.xml \ config/cooper/RF9505-T.xml.zip \ 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 \ @@ -152,10 +165,14 @@ DISTFILES = .github/workflows/PRTest.yml \ config/devolo/mt2652.xml \ config/devolo/mt2653.xml \ config/devolo/mt2756.xml \ + config/devolo/mt2759.xml \ + config/devolo/mt2760.xml \ + config/devolo/mt2761.xml \ config/devolo/rs014G0159.xml \ config/diehlcontrols/766366.xml \ config/dlink/dch-z110.xml \ config/dlink/dch-z120.xml \ + config/dlink/dch-z210.xml \ config/dlink/dch-z510.xml \ config/dome/0002.xml \ config/dome/0083.xml \ @@ -164,7 +181,9 @@ DISTFILES = .github/workflows/PRTest.yml \ 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 \ config/domitech/ze27eu.xml \ config/domux/DX1CA-Z.xml \ @@ -176,6 +195,8 @@ DISTFILES = .github/workflows/PRTest.yml \ config/domux/DX1WL-Z.xml \ config/domux/DX2SK-Z.xml \ config/dragontech/wd-100.xml \ + config/duco/DucoBox.xml \ + config/duco/Ducotronic_CO-RH_sensor.xml \ config/duwi/05458.xml \ config/duwi/ZWES1000.xml \ config/duwi/ZWESJ300.xml \ @@ -183,12 +204,14 @@ DISTFILES = .github/workflows/PRTest.yml \ config/duwi/zw-zdan-300.xml \ config/duwi/zwfb.xml \ config/duwi/zwws.xml \ + config/ecodim/0.7.xml \ config/ecolink/doorwindow.xml \ config/ecolink/firefighter.xml \ config/ecolink/floodfreeze.xml \ config/ecolink/motion.xml \ config/ecolink/sensor.xml \ config/ecolink/tiltsensor.xml \ + config/econet/ezw1204.xml \ config/electronicsolutions/dbmz.xml \ config/enblink/ss201-us-w_1308.xml \ config/enerwave/zw15rmplus.xml \ @@ -200,9 +223,11 @@ DISTFILES = .github/workflows/PRTest.yml \ config/enerwave/zwn-sc7.xml \ config/enerwave/zwnrsm1plus.xml \ config/enerwave/zwnrsm2plus.xml \ + config/eurotronic/eur_airquality.xml \ config/eurotronic/eur_cometz.xml \ config/eurotronic/eur_spiritz.xml \ config/eurotronic/eur_stellaz.xml \ + config/eurotronic/eur_temphumin.xml \ config/everspring/ad146.xml \ config/everspring/ad147.xml \ config/everspring/an145.xml \ @@ -233,7 +258,10 @@ DISTFILES = .github/workflows/PRTest.yml \ config/evolve/lrm-as.xml \ config/evolve/lsm-15.xml \ config/evolve/ltm-5.xml \ + config/evolve/t-100.xml \ config/fakro/arz.xml \ + config/fakro/arzsolar.xml \ + config/fakro/zrh12.xml \ config/fakro/zwp10.xml \ config/fakro/zwrs.xml \ config/fakro/zws12.xml \ @@ -255,28 +283,37 @@ DISTFILES = .github/workflows/PRTest.yml \ config/fibaro/fgpb101.xml \ config/fibaro/fgr221.xml \ config/fibaro/fgr223.xml \ + config/fibaro/fgrgbw442.xml \ config/fibaro/fgrgbwm441.xml \ config/fibaro/fgrm222.xml \ 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 \ + config/fibaro/fgs224.xml \ 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 \ config/fibaro/fgwpfzw5.xml \ config/fibaro/fgwpg111.xml \ config/fibaro/fgwr111.xml \ + config/firstalert/zcombo-g.xml \ config/firstalert/zcombo.xml \ + config/firstalert/zsmoke.xml \ config/followgood/swz-1002.xml \ config/forest/fs2z5232000002.xml \ config/fortrezz/fmi.xml \ + config/fortrezz/fts05p.xml \ config/fortrezz/gdc1_fortrezz_1501.xml \ config/fortrezz/mimo2plus.xml \ config/fortrezz/mimolite.xml \ @@ -288,22 +325,30 @@ DISTFILES = .github/workflows/PRTest.yml \ config/frostdale/fdn2311.xml \ config/frostdale/fdn2nxx.xml \ config/ge/12719-plugin-switch.xml \ + config/ge/12720.xml \ config/ge/12724-dimmer.xml \ config/ge/12727.xml \ + config/ge/14280-plugin-dimmer.xml \ config/ge/14282-plugin-switch.xml \ config/ge/14284.xml \ + config/ge/14285.xml \ config/ge/14288-outlet.xml \ config/ge/14291-switch.xml \ config/ge/14292-toggle-switch.xml \ 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 \ config/ge/28167-plugin-dimmer.xml \ config/ge/28169-plugin-switch.xml \ config/ge/45604.xml \ config/ge/46201-switch.xml \ + config/ge/46202-switch.xml \ config/ge/46203-dimmer.xml \ + config/ge/46204-dimmer-toggle.xml \ config/ge/dimmer.xml \ config/ge/dimmer_module.xml \ config/ge/hinge-pin.xml \ @@ -313,18 +358,22 @@ DISTFILES = .github/workflows/PRTest.yml \ config/ge/zw4001-switch.xml \ config/ge/zw6302.xml \ config/gocontrol/GC-TBZ48L.xml \ + config/goodway/td14010.xml \ config/gr/gr-302n.xml \ config/gr/gr105.xml \ config/gr/gr105n.xml \ config/gr/grb3.xml \ config/graber/brz1.xml \ config/graber/csz1.xml \ + config/graber/mcz1.xml \ config/graber/rsz1.xml \ config/graber/vcz1.xml \ config/greenwave/gs1110-1-gr-1.xml \ config/greenwave/powernode1.xml \ config/greenwave/powernode6.xml \ config/guardtec/gkw2000d.xml \ + config/hab/iblindsV2.xml \ + config/hab/iblindsV3.xml \ config/hank/hkzw-dws01.xml \ config/hank/hkzw-fld01.xml \ config/hank/hkzw-ms01.xml \ @@ -334,6 +383,7 @@ DISTFILES = .github/workflows/PRTest.yml \ 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 \ @@ -345,6 +395,8 @@ DISTFILES = .github/workflows/PRTest.yml \ config/heiman/HS1WL-Z.xml \ config/heiman/HS2SK-Z.xml \ config/heiman/HS2WD-Z.xml \ + config/heltun/he-ft01.xml \ + config/heltun/he-ht01.xml \ config/heltun/he-zw-sw-5a-1.xml \ config/heltun/he-zw-therm-fc1.xml \ config/heltun/he-zw-therm-fl2.xml \ @@ -362,7 +414,16 @@ DISTFILES = .github/workflows/PRTest.yml \ config/homeseer/hsm100.xml \ config/homeseer/hsm200.xml \ config/homeseer/ztroller.xml \ + config/honeywell/2681-plugin-dimmer.xml \ + config/honeywell/3830-zw3107.xml \ + config/honeywell/39348-ZW4005.xml \ + config/honeywell/39348-zw4008.xml \ + config/honeywell/39349-ZW1002.xml \ config/honeywell/39351-ZW3005.xml \ + config/honeywell/39351-ZW3010.xml \ + config/honeywell/39357-ZW3004.xml \ + config/honeywell/39358-ZW4002.xml \ + config/honeywell/39449-ZW4106.xml \ config/honeywell/lynx-touch-l5100.xml \ config/honeywell/th6320zw2003.xml \ config/honeywell/th8320zw1000.xml \ @@ -381,14 +442,18 @@ DISTFILES = .github/workflows/PRTest.yml \ config/idlock/idlock101.xml \ config/idlock/idlock150.xml \ config/images/2gig/ct100.png \ + config/images/2gig/ct200.png \ config/images/2gig/ct32.png \ config/images/BeNext/AlarmSound.png \ config/images/BeNext/DoorSensor.png \ config/images/BeNext/Molite.png \ + config/images/BeNext/P1dongle.png \ config/images/BeNext/TagReader.png \ config/images/BeNext/TagReader500.png \ config/images/BeNext/mydisplay.png \ config/images/BeNext/mygate.png \ + config/images/DefaultProductImage.png \ + config/images/abus/SHRM10000.jpg \ config/images/act/lfm20.png \ config/images/act/zdm230.png \ config/images/act/zdp100.png \ @@ -455,23 +520,35 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/aeotec/zwa004.png \ 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 \ config/images/comfort/ucm.png \ + config/images/connecthome/CH_201.png \ config/images/cooper/RF9501.png \ config/images/cooper/RF9505-T.png \ 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 \ @@ -483,15 +560,20 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/devolo/mt2647.png \ config/images/devolo/mt2652.png \ config/images/devolo/mt2756.png \ + config/images/devolo/mt2759.png \ + config/images/devolo/mt2760.png \ + config/images/devolo/mt2761.png \ config/images/diehlcontrols/766366.png \ config/images/dlink/dch-z110.png \ config/images/dlink/dch-z120.png \ + config/images/dlink/dch-z210.png \ config/images/dlink/dch-z510.png \ config/images/dome/0002.png \ config/images/dome/0085.png \ config/images/dome/0086.png \ config/images/dome/0088.png \ config/images/dome/0201.png \ + config/images/dome/dmex1.png \ config/images/domitech/zb22uk.png \ config/images/domitech/ze27eu.png \ config/images/dragontech/wd-100.png \ @@ -499,12 +581,14 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/duwi/zw-edan-300.png \ config/images/duwi/zw-zdan-300.png \ config/images/duwi/zwws.png \ + config/images/ecodim/0.7.jpg \ config/images/ecolink/doorwindow.png \ config/images/ecolink/firefighter.png \ config/images/ecolink/floodfreeze.png \ config/images/ecolink/motion.png \ config/images/ecolink/sensor.png \ config/images/ecolink/tiltsensor.png \ + config/images/econet/ezw1204.png \ config/images/electronicsolutions/dbmz.png \ config/images/enblink/ss201-us-w_1308.png \ config/images/enerwave/zw15rmplus.png \ @@ -512,9 +596,12 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/enerwave/zw20rm.png \ config/images/enerwave/zwn-bpc.png \ config/images/enerwave/zwnrsm1plus.png \ + config/images/enerwave/zwnrsm2plus.png \ + config/images/eurotronic/eur_airquality.png \ config/images/eurotronic/eur_cometz.png \ config/images/eurotronic/eur_spiritz.png \ config/images/eurotronic/eur_stellaz.png \ + config/images/eurotronic/eur_temphumid.png \ config/images/everspring/ad146.png \ config/images/everspring/ad147.png \ config/images/everspring/an157.png \ @@ -542,12 +629,14 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/everspring/tse03.png \ config/images/evolve/lfm-20.png \ config/images/evolve/ltm-5.png \ + config/images/evolve/t-100.png \ config/images/fakro/arz.png \ config/images/fakro/zws12.png \ config/images/fibaro/fgbs222.png \ 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 \ @@ -557,21 +646,31 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/fibaro/fgmszw5.png \ config/images/fibaro/fgpb101.png \ 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 \ config/images/fibaro/fgwr111.png \ + config/images/firstalert/zcombo-g.png \ config/images/firstalert/zcombo.png \ + config/images/firstalert/zsmoke.png \ config/images/followgood/swz-1002.png \ config/images/forest/fs2z5232000002.png \ config/images/fortrezz/fmi.png \ + config/images/fortrezz/fts05p.png \ config/images/fortrezz/gdc1_fortrezz_1501.png \ config/images/fortrezz/mimo2plus.png \ config/images/fortrezz/mimolite.png \ @@ -584,20 +683,26 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/ge/12719-plugin-switch.png \ config/images/ge/12724-dimmer.png \ config/images/ge/12727.png \ + config/images/ge/14280-plugin-dimmer.png \ config/images/ge/14282-plugin-switch.png \ config/images/ge/14284.png \ + config/images/ge/14285.png \ config/images/ge/14288-outlet.png \ config/images/ge/14291-switch.png \ config/images/ge/14292-toggle-switch.png \ 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 \ config/images/ge/28169-plugin-switch.png \ config/images/ge/45604.png \ config/images/ge/46201-switch.png \ + config/images/ge/46202-switch.png \ config/images/ge/46203-dimmer.png \ + config/images/ge/46204-dimmer-toggle.png \ config/images/ge/dimmer.png \ config/images/ge/dimmer_module.png \ config/images/ge/hinge-pin.png \ @@ -605,17 +710,21 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/ge/relay.png \ config/images/ge/ze26i.png \ config/images/ge/zw6302.png \ + config/images/goodway/td14010.png \ config/images/gr/gr-302n.png \ config/images/gr/gr105.png \ config/images/gr/gr105n.png \ config/images/graber/brz1.png \ config/images/graber/csz1.png \ + config/images/graber/mcz1.png \ config/images/graber/rsz1.png \ config/images/graber/vcz1.png \ config/images/greenwave/gs1110-1-gr-1.png \ config/images/greenwave/powernode1.png \ config/images/greenwave/powernode6.png \ config/images/guardtec/gkw2000d.png \ + config/images/hab/iblinds.png \ + config/images/hab/iblindsV3.png \ config/images/hank/hkzw-dws01.png \ config/images/hank/hkzw-fld01.png \ config/images/hank/hkzw-ms01.png \ @@ -634,9 +743,12 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/heiman/HS1SA-Z.png \ config/images/heiman/HS1WL-Z.png \ config/images/heiman/HS2SK-Z.png \ + config/images/heltun/he-ft01.png \ + config/images/heltun/he-ht01.png \ config/images/homeseer/hs-ds100plus.png \ config/images/homeseer/hs-fc200plus.png \ config/images/homeseer/hs-fls100plus.png \ + config/images/homeseer/hs-fs100plus.png \ config/images/homeseer/hs-ls100plus.png \ config/images/homeseer/hs-ms100plus.png \ config/images/homeseer/hs-wd100plus.png \ @@ -644,7 +756,15 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/homeseer/hs-ws100plus.png \ config/images/homeseer/hs-ws200plus.png \ config/images/homeseer/hsm200.png \ + config/images/honeywell/2681-plugin-dimmer.png \ + config/images/honeywell/3830-zw3107.png \ + config/images/honeywell/39348-ZW4005.png \ + config/images/honeywell/39348-ZW4008.png \ + config/images/honeywell/39349-ZW1002.png \ config/images/honeywell/39351-ZW3005.png \ + config/images/honeywell/39357-ZW3004.png \ + config/images/honeywell/39358-ZW4002.png \ + config/images/honeywell/39449-ZW4106.png \ config/images/honeywell/lynx-touch-l5100.png \ config/images/honeywell/th6320zw2003.png \ config/images/honeywell/th8320zw1000.png \ @@ -665,33 +785,62 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/ingersoll/dwzwave1.png \ config/images/inovelli/lzw30-sn.png \ config/images/inovelli/lzw30.png \ + config/images/inovelli/lzw31-sn.png \ + config/images/inovelli/lzw31.png \ + config/images/inovelli/lzw36.png \ + config/images/inovelli/lzw40.png \ + config/images/inovelli/lzw41.png \ + config/images/inovelli/lzw42.png \ + config/images/inovelli/lzw60.png \ + config/images/inovelli/nzw30.png \ config/images/inovelli/simple_module.png \ config/images/iwatsu/ne-4ct-2p.png \ config/images/iwatsu/ne-4ct.png \ config/images/jasco/45601.png \ config/images/kaipule/im20.png \ + config/images/kwikset/888.png \ + config/images/kwikset/914c.png \ + config/images/kwikset/916.jpg \ config/images/kwikset/smartcode.png \ config/images/leviton/dz15s.png \ config/images/leviton/dz6hd.png \ + config/images/leviton/dzpa1.png \ config/images/leviton/dzpd3.png \ config/images/leviton/vrcs2.png \ config/images/leviton/vrf01.png \ config/images/leviton/vri10.png \ + 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 \ + config/images/linear/WT00Z5-1.png \ config/images/linear/gd00z-7.png \ 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 \ config/images/mcohome/mhp511.png \ + config/images/mcohome/mhs513.png \ config/images/merten/5044xx.png \ config/images/merten/5046xx.png \ config/images/merten/506004.png \ config/images/merten/508244.png \ 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 \ config/images/nodon/asp3100SmartPlug.png \ config/images/nodon/crc3100OctanRemote.png \ config/images/nodon/crc360xSofremote.png \ @@ -700,6 +849,8 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/northq/nq92021.png \ config/images/oomi/ft100.png \ config/images/oomi/ft111.png \ + config/images/oomi/ft112.png \ + config/images/oomi/ft118.png \ config/images/permundo/psc132zw.png \ config/images/permundo/psc234zw.png \ config/images/philio/pad02.png \ @@ -730,26 +881,34 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/popp/700045.png \ config/images/popp/700168.png \ config/images/popp/700397.png \ + config/images/popp/701202.png \ config/images/popp/dwt.png \ config/images/popp/smoke-detector.png \ config/images/popp/solar-siren.png \ config/images/popp/zweather.png \ config/images/prowell/zw-702.png \ + config/images/q-light/q-light_puck.png \ + config/images/q-light/q-light_zerodim.png \ + config/images/q-light/q-light_zerodim_2pol.png \ config/images/qees/reto-dimmer-plus.png \ config/images/qees/reto-plugin-switch.png \ + config/images/qolsys/qz2140-840.png \ config/images/qubino/ZMNHADx.png \ config/images/qubino/ZMNHBDx.png \ 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 \ + config/images/qubino/ZMNHQDx.png \ config/images/qubino/ZMNHSDx.png \ config/images/qubino/ZMNHTDx.png \ config/images/qubino/ZMNHVDx.png \ config/images/qubino/ZMNHWD1.png \ config/images/qubino/ZMNHYDx.png \ + config/images/qubino/ZMNKADx.png \ config/images/qubino/zmnhxdx.png \ config/images/quby/qb2.png \ config/images/rcs/em52-zw.png \ @@ -764,6 +923,9 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/remotec/zxt-120.png \ 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 \ @@ -772,12 +934,23 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/sensative/strips.png \ config/images/sensative/stripscomfort.png \ 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 \ config/images/smartthings/sth-eth200.png \ config/images/steinel/is140-2.png \ @@ -785,18 +958,37 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/steinel/rs-led-d2.png \ config/images/steinel/xled-home-2.png \ config/images/stelpro/stzw402.png \ + config/images/sunricher/srzv9001k12dimz4.png \ + config/images/sunricher/srzv9001k12dimz5.png \ + config/images/sunricher/srzv9001k2dim.png \ + config/images/sunricher/srzv9001k4dim.png \ + config/images/sunricher/srzv9001k4dimg2.png \ config/images/sunricher/srzv9001k8.png \ config/images/sunricher/srzv9001t4dimeu.png \ + config/images/sunricher/srzv9001tccteu.png \ config/images/sunricher/srzv9003t4rgbweu.png \ + config/images/sunricher/srzv9101facct.png \ 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 \ + config/images/technisat/03009497.png \ + config/images/technisat/03009499.png \ config/images/telldus/tzdw100.png \ config/images/telldus/tzwp100.png \ 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 \ @@ -814,6 +1006,7 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/vision/zm1601eu.png \ config/images/vision/zm1601eu5.png \ config/images/vision/zm1602eu5.png \ + config/images/vision/zm1701.png \ config/images/vision/zp3102.png \ config/images/vision/zp3111.png \ config/images/vision/zr1202us.png \ @@ -832,15 +1025,27 @@ DISTFILES = .github/workflows/PRTest.yml \ 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 \ + config/images/widom/UMS2.png \ config/images/widom/WDS.png \ + config/images/widom/WDS2.png \ + config/images/widom/WSP.png \ + 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 \ config/images/zipato/HS1WL-Z.png \ config/images/zipato/RGBBulb.png \ + config/images/zipato/ne-nas-ab01z.png \ config/images/zipato/pan04.png \ config/images/zipato/phpab01.png \ config/images/zipato/pse02.png \ @@ -850,12 +1055,25 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/zipato/zp3102.png \ 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 \ + config/images/zooz/zen21v3.png \ config/images/zooz/zen22.png \ + config/images/zooz/zen23v3.png \ + config/images/zooz/zen24v2.png \ config/images/zooz/zen26.png \ 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 \ @@ -869,12 +1087,23 @@ DISTFILES = .github/workflows/PRTest.yml \ config/images/zwave.me/ZUno.png \ config/images/zwave.me/kfob.png \ 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 \ config/ingersoll/dwzwave1.xml \ config/inovelli/lzw30-sn.xml \ config/inovelli/lzw30.xml \ + config/inovelli/lzw31-sn.xml \ + config/inovelli/lzw31.xml \ + config/inovelli/lzw36.xml \ + 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 \ config/inovelli/nzw31.xml \ @@ -891,9 +1120,14 @@ DISTFILES = .github/workflows/PRTest.yml \ config/jasco/45601.xml \ config/kaipule/im20.xml \ config/kaipule/ix32.xml \ + config/kwikset/888.xml \ + config/kwikset/910.xml \ + config/kwikset/914c.xml \ + config/kwikset/916.xml \ config/kwikset/smartcode.xml \ config/leviton/dz15s.xml \ config/leviton/dz6hd.xml \ + config/leviton/dzpa1.xml \ config/leviton/dzpd3.xml \ config/leviton/rzi10.xml \ config/leviton/vrcpg.xml \ @@ -903,7 +1137,11 @@ DISTFILES = .github/workflows/PRTest.yml \ config/leviton/vrf01.xml \ config/leviton/vri06.xml \ config/leviton/vri10.xml \ + 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 \ config/linear/PD300Z-2.xml \ @@ -915,19 +1153,25 @@ DISTFILES = .github/workflows/PRTest.yml \ config/linear/WD500Z5-1.xml \ config/linear/WS15Z-1.xml \ config/linear/WT00Z-1.xml \ + config/linear/WT00Z5-1.xml \ config/linear/gd00z-7.xml \ config/linear/ngd00z.xml \ + config/logicsoft/ZDB5100.xml \ config/logicsoft/ZHC5002.xml \ config/logicsoft/ZHC5010.xml \ 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 \ @@ -941,7 +1185,16 @@ DISTFILES = .github/workflows/PRTest.yml \ config/merten/508244.xml \ config/merten/50x5xx.xml \ 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 \ config/nodon/crc3100OctanRemote.xml \ config/nodon/crc360xSofremote.xml \ @@ -952,6 +1205,8 @@ DISTFILES = .github/workflows/PRTest.yml \ config/northq/nq92021.xml \ config/oomi/ft100.xml \ config/oomi/ft111.xml \ + config/oomi/ft112.xml \ + config/oomi/ft118.xml \ config/options.xml \ config/options.xsd \ config/permundo/psc132zw.xml \ @@ -992,15 +1247,21 @@ DISTFILES = .github/workflows/PRTest.yml \ config/popp/123658.xml \ config/popp/700045.xml \ config/popp/700168.xml \ + config/popp/700342.xml \ config/popp/700397.xml \ config/popp/700793.xml \ + config/popp/701202.xml \ config/popp/dwt.xml \ config/popp/smoke-detector.xml \ config/popp/solar-siren.xml \ config/popp/zweather.xml \ config/prowell/zw-702.xml \ + config/q-light/q-light_puck.xml \ + config/q-light/q-light_zerodim.xml \ + config/q-light/q-light_zerodim_2pol.xml \ config/qees/reto-dimmer-plus.xml \ config/qees/reto-plugin-switch.xml \ + config/qolsys/qz2140-840.xml \ config/qubino/ZMNHAA2.xml \ config/qubino/ZMNHADx.xml \ config/qubino/ZMNHBA2.xml \ @@ -1018,6 +1279,7 @@ DISTFILES = .github/workflows/PRTest.yml \ 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 \ @@ -1030,6 +1292,7 @@ DISTFILES = .github/workflows/PRTest.yml \ config/qubino/ZMNHXDx.xml \ config/qubino/ZMNHYDx.xml \ config/qubino/ZMNHZDx.xml \ + config/qubino/ZMNKADx.xml \ config/qubino/ZMNKIDx.xml \ config/quby/qb2.xml \ config/rcs/em52-zw.xml \ @@ -1047,6 +1310,9 @@ DISTFILES = .github/workflows/PRTest.yml \ config/remotec/zxt-120.xml \ 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 \ @@ -1055,21 +1321,30 @@ DISTFILES = .github/workflows/PRTest.yml \ 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 \ config/shenzen_neo/ls01ch.xml \ 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 \ config/smartthings/pgc401m.xml \ config/smartthings/sth-eth200.xml \ config/somfy/1811265_ZRTSI.xml \ @@ -1078,19 +1353,40 @@ DISTFILES = .github/workflows/PRTest.yml \ config/steinel/rs-led-d2.xml \ config/steinel/xled-home-2.xml \ config/stelpro/stzw402.xml \ + config/sunricher/srzv9001k12dimz4.xml \ + config/sunricher/srzv9001k12dimz5.xml \ + config/sunricher/srzv9001k2dim.xml \ + config/sunricher/srzv9001k4dim.xml \ + config/sunricher/srzv9001k4dimg2.xml \ config/sunricher/srzv9001k8.xml \ 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 \ config/sunricher/zv9101.xml \ + config/sunricher/zv9101fa.xml \ config/swiid/swiidinter.xml \ config/swiid/swiidplug.xml \ + config/technisat/03009496.xml \ + config/technisat/03009497.xml \ + config/technisat/03009499.xml \ config/telldus/tzdw100.xml \ config/telldus/tzwp100.xml \ 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 \ @@ -1140,32 +1436,54 @@ DISTFILES = .github/workflows/PRTest.yml \ 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 \ + config/widom/UMS2.xml \ config/widom/WDS.xml \ + config/widom/WDS2.xml \ + config/widom/WSP.xml \ + config/widom/WTED.xml \ + config/wink/wnk-mot1.xml \ + config/wink/wnk-sir1p.xml \ config/zipato/MiniKeypad.xml \ config/zipato/RGBBulb.xml \ config/zipato/RGBBulb2.xml \ + config/zipato/ne-nas-ab02z.xml \ config/zipato/pan04.xml \ config/zipato/vszd2102.xml \ config/zipato/zp3102.xml \ config/zooz/zen06.xml \ 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 \ - config/zooz/zen21v2.xml \ + config/zooz/zen21v3.xml \ config/zooz/zen22.xml \ config/zooz/zen22v2.xml \ config/zooz/zen23.xml \ + config/zooz/zen23v3.xml \ config/zooz/zen24.xml \ + config/zooz/zen24v2.xml \ config/zooz/zen25.xml \ config/zooz/zen26.xml \ 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 \ @@ -1189,6 +1507,7 @@ DISTFILES = .github/workflows/PRTest.yml \ config/zwave.me/iTemp.xml \ config/zwave.me/kfob.xml \ config/zwave.me/popp_kfob-c.xml \ + config/zwave.me/razberry.xml \ config/zwave.me/zme_raz5.xml \ config/zwave.me/zweather.xml \ config/zwcfg.xsd \ @@ -1413,6 +1732,8 @@ DISTFILES = .github/workflows/PRTest.yml \ 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 \ @@ -1488,6 +1809,7 @@ DISTFILES = .github/workflows/PRTest.yml \ cpp/src/platform/unix/TimeStampImpl.h \ cpp/src/platform/unix/WaitImpl.cpp \ cpp/src/platform/unix/WaitImpl.h \ + cpp/src/platform/unix/android.h \ cpp/src/platform/winRT/DNSImpl.cpp \ cpp/src/platform/winRT/DNSImpl.h \ cpp/src/platform/winRT/EventImpl.cpp \ diff --git a/makedist b/makedist index b7a859b272..5a279cf5f2 100755 --- a/makedist +++ b/makedist @@ -9,7 +9,7 @@ use List::Util 1.33 'any'; my $input = ".distfiles"; my $output = "distfiles.mk"; -my @excludedir = (".github"); +my @excludedir = (".github", ".github/workflows"); my @excludefile = (); open( my $fh => $input) || die "Cannot open $input: $!";