home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
73.61k stars 30.77k forks source link

Duplicate lights, sensors for single Z-Wave Motion Dimmer (GE/Jasco 26933) #20495

Closed mrtnkhl closed 5 years ago

mrtnkhl commented 5 years ago

Home Assistant release with the issue:

0.85.0

Last working Home Assistant release (if known): unknown

Operating environment (Hass.io/Docker/Windows/etc.):

Docker on Ubuntu 18.04 LTS with Aeotec Z-Stick Gen5, fresh install a week ago

Component/platform:

https://www.home-assistant.io/docs/z-wave/

Description of problem: https://community.home-assistant.io/t/ge-jasco-26933-issues/22738 When adding a GE / Jasco 26933 Motion Dimmer device via Z-Wave "Add Node", the Z-Wave component adds one (1) new NodeID for the device but Home Assistant creates multiple duplicates:

On the Home Assistant side, the light component of the device, as well as the motion and other sensor components, appear 2-3 times as duplicates. This makes the devices practically unusable, as it is unclear which light of the two to switch or which sensor to query or respond to. The duplicate lights also appear to not share the same state.

This seems to be a known issue since 2017, that some people in the forum attribute to the different operating modes of the motion dimmer (Occupancy, Vacancy, and Manual mode). No real workaround has been found for this attractive and useful device.

The folks around SmartThings seem to have found a solution to this problem in the form of a custom DTH: http://thingsthataresmart.wiki/index.php?title=GE_Z-Wave_Motion_Sensor_Dimmer_Switch Their code can be found here: https://raw.githubusercontent.com/MichaelStruck/SmartThingsPublic/master/devicetypes/michaelstruck/ge-motion-dimmer-switch-26933.src/ge-motion-dimmer-switch-26933.groovy

Ideally, HA would only create one entry for the light and sensor components.

Problem-relevant zwavecfg.xml entries:

    <Node id="2" name="" location="" basic="4" generic="17" specific="1" roletype="5" devicetype="1536" nodetype="0" type="Multilevel Power Switch" listening="true" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
        <Manufacturer id="63" name="GE">
            <Product type="494d" id="3034" name="26933 Smart Motion Dimmer" />
        </Manufacturer>
        <CommandClasses>
            <CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1" request_flags="5" mapping="38">
                <Instance index="1" />
                <Instance index="2" endpoint="1" />
            </CommandClass>
            <CommandClass id="38" name="COMMAND_CLASS_SWITCH_MULTILEVEL" version="2" request_flags="1" innif="true">
                <Instance index="1" />
                <Instance index="2" endpoint="1" />
                <Value type="byte" genre="user" instance="1" index="0" label="Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1" />
                <Value type="button" genre="user" instance="1" index="1" label="Bright" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
                <Value type="button" genre="user" instance="1" index="2" label="Dim" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
                <Value type="bool" genre="system" instance="1" index="3" label="Ignore Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="True" />
                <Value type="byte" genre="system" instance="1" index="4" label="Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="byte" genre="user" instance="2" index="0" label="Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="34" />
                <Value type="button" genre="user" instance="2" index="1" label="Bright" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
                <Value type="button" genre="user" instance="2" index="2" label="Dim" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
                <Value type="bool" genre="system" instance="2" index="3" label="Ignore Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="True" />
                <Value type="byte" genre="system" instance="2" index="4" label="Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="byte" genre="system" instance="2" index="5" label="Dimming Duration" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="255" />
            </CommandClass>
            <CommandClass id="39" name="COMMAND_CLASS_SWITCH_ALL" version="1" request_flags="5" innif="true">
                <Instance index="1" />
                <Value type="list" genre="system" instance="1" index="0" label="Switch All" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="3" size="1">
                    <Item label="Disabled" value="0" />
                    <Item label="Off Enabled" value="1" />
                    <Item label="On Enabled" value="2" />
                    <Item label="On and Off Enabled" value="255" />
                </Value>
            </CommandClass>
            <CommandClass id="43" name="COMMAND_CLASS_SCENE_ACTIVATION" version="1" request_flags="5" innif="true">
                <Instance index="1" />
            </CommandClass>
            <CommandClass id="86" name="COMMAND_CLASS_CRC_16_ENCAP" version="1" request_flags="5" innif="true">
                <Instance index="1" />
            </CommandClass>
            <CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1" request_flags="5" innif="true">
                <Instance index="1" />
            </CommandClass>
            <CommandClass id="94" name="COMMAND_CLASS_ZWAVEPLUS_INFO" version="1" request_flags="5" innif="true">
                <Instance index="1" />
                <Instance index="2" endpoint="1" />
                <Instance index="3" endpoint="2" />
                <Value type="byte" genre="system" instance="1" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1" />
                <Value type="short" genre="system" instance="1" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="1536" />
                <Value type="short" genre="system" instance="1" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="1536" />
                <Value type="byte" genre="system" instance="2" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="short" genre="system" instance="2" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
                <Value type="short" genre="system" instance="2" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
                <Value type="byte" genre="system" instance="3" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="short" genre="system" instance="3" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
                <Value type="short" genre="system" instance="3" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
            </CommandClass>
            <CommandClass id="96" name="COMMAND_CLASS_MULTI_INSTANCE/CHANNEL" version="4" request_flags="1" innif="true">
                <Instance index="1" />
            </CommandClass>
            <CommandClass id="112" name="COMMAND_CLASS_CONFIGURATION" version="1" request_flags="5" innif="true">
                <Instance index="1" />
                <Value type="list" genre="config" instance="1" index="1" label="Timeout Duration" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" vindex="2" size="1">
                    <Help>Amount of time the light stays on after motion stops</Help>
                    <Item label="5 seconds" value="0" />
                    <Item label="1 minute" value="1" />
                    <Item label="5 minutes" value="5" />
                    <Item label="15 minutes" value="15" />
                    <Item label="30 minutes" value="30" />
                    <Item label="Disable timeout" value="255" />
                </Value>
                <Value type="byte" genre="config" instance="1" index="2" label="Brightness" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="255" value="3">
                    <Help>Valid values are 0-99 or 255 for last dimming level</Help>
                </Value>
                <Value type="list" genre="config" instance="1" index="3" label="Operation Mode" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="3" vindex="2" size="1">
                    <Help>Motion-sensing mode of operation.</Help>
                    <Item label="Manual" value="1" />
                    <Item label="Vacancy" value="2" />
                    <Item label="Occupancy" value="3" />
                </Value>
                <Value type="list" genre="config" instance="1" index="5" label="Invert Switch" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="1" vindex="0" size="1">
                    <Help>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.</Help>
                    <Item label="No" value="0" />
                    <Item label="Yes" value="1" />
                </Value>
                <Value type="list" genre="config" instance="1" index="6" label="Enable/Disable Motion Sensor" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="1" vindex="1" size="1">
                    <Item label="Disabled" value="0" />
                    <Item label="Enabled" value="1" />
                </Value>
                <Value type="byte" genre="config" instance="1" index="7" label="Z-Wave Command Dim Step" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="99" value="1">
                    <Help>Indicates how many levels the dimmer will change for each dimming step.</Help>
                </Value>
                <Value type="byte" genre="config" instance="1" index="8" label="Z-Wave Command Dim Rate" units="x 10 milliseconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="255" value="3">
                    <Help>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.</Help>
                </Value>
                <Value type="byte" genre="config" instance="1" index="9" label="Local Control Dim Step" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="99" value="1">
                    <Help>Indicates how many levels the dimmer will change for each dimming step.</Help>
                </Value>
                <Value type="byte" genre="config" instance="1" index="10" label="Local Control Dim Rate" units="x 10 milliseconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="255" value="3">
                    <Help>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.</Help>
                </Value>
                <Value type="byte" genre="config" instance="1" index="11" label="ALL ON/ALL OFF Dim Step" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="99" value="1">
                    <Help>Indicates how many levels the dimmer will change for each dimming step.</Help>
                </Value>
                <Value type="byte" genre="config" instance="1" index="12" label="ALL ON/ALL OFF Dim Rate" units="x 10 milliseconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="255" value="3">
                    <Help>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.</Help>
                </Value>
                <Value type="list" genre="config" instance="1" index="13" label="Motion sensing sensitivity" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="3" vindex="2" size="1">
                    <Item label="High" value="1" />
                    <Item label="Medium" value="2" />
                    <Item label="Low" value="3" />
                </Value>
                <Value type="list" genre="config" instance="1" index="14" label="Enable/Disable Light Sensing" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="1" vindex="0" size="1">
                    <Item label="Disabled" value="0" />
                    <Item label="Enabled" value="1" />
                </Value>
                <Value type="int" genre="config" instance="1" index="15" label="Reset cycle" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="110" value="2">
                    <Help>0 = disable 1 = 10 seconds 2 = 20 seconds 3 = 30 seconds 4 = 45 seconds ... 110 = 27 minutes 15 seconds</Help>
                </Value>
                <Value type="list" genre="config" instance="1" index="16" label="Switch Mode" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="1" vindex="0" size="1">
                    <Item label="Disabled" value="0" />
                    <Item label="Enabled" value="1" />
                </Value>
                <Value type="byte" genre="config" instance="1" index="17" label="Switch Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="99" value="0" />
                <Value type="list" genre="config" instance="1" index="18" label="Dim Up Rate" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="1" vindex="0" size="1">
                    <Item label="Slow" value="0" />
                    <Item label="Fast" value="1" />
                </Value>
                <Value type="list" genre="config" instance="1" index="19" label="Exclusion Mode" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="1" vindex="0" size="1">
                    <Item label="Press any button" value="0" />
                    <Item label="Press X then press ON" value="1" />
                </Value>
            </CommandClass>
            <CommandClass id="113" name="COMMAND_CLASS_ALARM" version="4" request_flags="1" innif="true">
                <Instance index="1" />
                <Instance index="2" endpoint="2" />
                <Value type="byte" genre="user" instance="1" index="0" label="Alarm Type" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="byte" genre="user" instance="1" index="1" label="Alarm Level" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="byte" genre="user" instance="1" index="2" label="SourceNodeId" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="byte" genre="user" instance="1" index="10" label="Burglar" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="byte" genre="user" instance="2" index="0" label="Alarm Type" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="byte" genre="user" instance="2" index="1" label="Alarm Level" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="byte" genre="user" instance="2" index="2" label="SourceNodeId" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="byte" genre="user" instance="2" index="10" label="Burglar" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="254" />
            </CommandClass>
            <CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="5" innif="true">
                <Instance index="1" />
            </CommandClass>
            <CommandClass id="115" name="COMMAND_CLASS_POWERLEVEL" version="1" request_flags="5" innif="true">
                <Instance index="1" />
                <Value type="list" genre="system" instance="1" index="0" label="Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
                    <Item label="Normal" value="0" />
                    <Item label="-1dB" value="1" />
                    <Item label="-2dB" value="2" />
                    <Item label="-3dB" value="3" />
                    <Item label="-4dB" value="4" />
                    <Item label="-5dB" value="5" />
                    <Item label="-6dB" value="6" />
                    <Item label="-7dB" value="7" />
                    <Item label="-8dB" value="8" />
                    <Item label="-9dB" value="9" />
                </Value>
                <Value type="byte" genre="system" instance="1" index="1" label="Timeout" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="button" genre="system" instance="1" index="2" label="Set Powerlevel" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
                <Value type="byte" genre="system" instance="1" index="3" label="Test Node" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
                <Value type="list" genre="system" instance="1" index="4" label="Test Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
                    <Item label="Normal" value="0" />
                    <Item label="-1dB" value="1" />
                    <Item label="-2dB" value="2" />
                    <Item label="-3dB" value="3" />
                    <Item label="-4dB" value="4" />
                    <Item label="-5dB" value="5" />
                    <Item label="-6dB" value="6" />
                    <Item label="-7dB" value="7" />
                    <Item label="-8dB" value="8" />
                    <Item label="-9dB" value="9" />
                </Value>
                <Value type="short" genre="system" instance="1" index="5" label="Frame Count" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
                <Value type="button" genre="system" instance="1" index="6" label="Test" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
                <Value type="button" genre="system" instance="1" index="7" label="Report" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
                <Value type="list" genre="system" instance="1" index="8" label="Test Status" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
                    <Item label="Failed" value="0" />
                    <Item label="Success" value="1" />
                    <Item label="In Progress" value="2" />
                </Value>
                <Value type="short" genre="system" instance="1" index="9" label="Acked Frames" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
            </CommandClass>
            <CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION" version="1" request_flags="5" innif="true">
                <Instance index="1" />
                <Associations num_groups="3">
                    <Group index="1" max_associations="5" label="Lifeline" auto="true" multiInstance="true">
                        <Node id="1" />
                    </Group>
                    <Group index="2" max_associations="5" label="Basic Set" auto="false" multiInstance="true" />
                    <Group index="3" max_associations="5" label="Basic Set" auto="false" multiInstance="true" />
                </Associations>
            </CommandClass>
            <CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="5" innif="true">
                <Instance index="1" />
                <Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3" />
                <Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="4.34" />
                <Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="5.32" />
            </CommandClass>
            <CommandClass id="142" name="COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION" version="1" request_flags="5" innif="true">
                <Instance index="1" />
                <Associations num_groups="3">
                    <Group index="1" max_associations="5" label="Lifeline" auto="true" multiInstance="true">
                        <Node id="1" />
                    </Group>
                    <Group index="2" max_associations="5" label="Basic Set" auto="false" multiInstance="true" />
                    <Group index="3" max_associations="5" label="Basic Set" auto="false" multiInstance="true" />
                </Associations>
            </CommandClass>
        </CommandClasses>
    </Node>

Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):

Traceback (if applicable):

Additional information: All components are new, Z-Wave stick and dimmer switches bought in January 2019, sourced both from Amazon and Lowe's.

mrtnkhl commented 5 years ago

Open Z-Wave config for this device can be found here: https://github.com/OpenZWave/open-zwave/blob/master/config/ge/26933-motion-dimmer.xml

mrtnkhl commented 5 years ago

Issue still exists in 0.86.3.

niemyjski commented 5 years ago

I'm seeing this in 0.86.4 and have been seeing it since I added these switches. I think this is also causing my issues with my burglar always saying at value 254 (sleep) and them not updating properly as there are multiple entities.

mrtnkhl commented 5 years ago

Issue still exists in 0.87.0

bmenchaca commented 5 years ago

I just wanted to +1 this...I have had this issue with GE Z-Wave motion switches and dimmers since the beginning (1.5 years ago or so). This happened on my previous install that included MQTT, and on a new install that does not have MQTT.

loopforever commented 5 years ago

+1 Just commenting to say that I am experiencing this issue as well. Would be great if there was a workaround for duplicate switches.

DigitalBites commented 5 years ago

+1 I have the same issue. I would love to have a solution for the duplicate switches/sensors as well as the lack of updates on the switch status. When you use the buttons to turn on/off in HA, the light will turn off but the switches stay on usually at a partial dim setting.

stale[bot] commented 5 years ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue now has been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

Rocketman69 commented 5 years ago

So.....this was closed, and I assume nobody ever figured anything out? I am also having issues with these devices showing up as multiples of the same node in HA. Would really love to resolve the issue.

walnerz commented 5 years ago

still happens in 0.97.2

bmenchaca commented 5 years ago

If I recall correctly, this was expected behavior. The second instance of the switch represents z-wave switch changes, and the primary instance is any changes. You can use this to determine if a change to the switch state was initiated by a person or by an automation. I have not investigated if this works properly.

On Mon, Aug 26, 2019 at 11:17 PM Andrew Lambeth notifications@github.com wrote:

still happens in 0.97.2

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/home-assistant/home-assistant/issues/20495?email_source=notifications&email_token=ABELXA6YQ5CM5IXMNKJLOBTQGSTDXA5CNFSM4GSSCNBKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5GNPZI#issuecomment-525129701, or mute the thread https://github.com/notifications/unsubscribe-auth/ABELXAZFL6MKBX2PLEXQ2X3QGSTDXANCNFSM4GSSCNBA .

Rocketman69 commented 5 years ago

That seems...unlikely? I mean....I've got a whole lot of zwave switches, and these are the only ones that do that. All of them are able to tell if they were controlled locally or via RF....why would these particular switches require an entirely different entity for that?

bmenchaca commented 5 years ago

I don't know GE/JASCO's motivations. I have about 15 of these, and about an equal number of Leviton switches. I agree these work differently than Leviton switches. Looking at the history for several of these duplicate switch instances, I can 100% confirm that the histories are NOT identical between the two instances of the same switch (meaning these are not just a shadow of some kind). Beyond that, I can confirm that value_instance 2 appears to correlate with automations, and value_instance 1 appears to correlate with the actual relay state. If there is another explanation of the purpose or meaning of these that correlates with observed data, I would definitely be interested.

On Wed, Aug 28, 2019 at 12:53 PM Rocketman69 notifications@github.com wrote:

That seems...unlikely? I mean....I've got a whole lot of zwave switches, and these are the only ones that do that. All of them are able to tell if they were controlled locally or via RF....why would these particular switches require an entirely different entity for that?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/home-assistant/home-assistant/issues/20495?email_source=notifications&email_token=ABELXA3UXJ36WFWZCCMQAJLQG23TLA5CNFSM4GSSCNBKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5L6DRI#issuecomment-525853125, or mute the thread https://github.com/notifications/unsubscribe-auth/ABELXAZGEUVI6DRYF6LQ5CLQG23TLANCNFSM4GSSCNBA .

Cezero commented 4 years ago

This is still an issue with HA 106

niemyjski commented 4 years ago

I'm even seeing issues where the zwave entity is created but no child entities for GE switches :. I'm unable to remove or repair them either.

dlo747 commented 4 years ago

Still a issue for me 4/27

gongtao0607 commented 4 years ago

This is not an issue. This is what is reported from the device.

Check this: https://www.cd-jackson.com/index.php/zwave/zwave-device-database/zwave-device-list/devicesummary/740

So what happened is when OpenZWave sees endpoint 0, it creates SWITCH_MULTILEVEL instance 1 and NOTIFICATION instance 1. When it sees endpoint 1, it creates SWITCH_MULTILEVEL instance 2 and when it sees endpoint 2, it creates NOTIFICATION instance 2. That's where the duplicates are from.

Now, they should behave the same as the document says. However by openzwave default, only instance 1 is in the association group 1 (Members ["1.0"], if your controller node id is 1). So that's why you only see updates from the first instance but not the second. (If, by any chance, your instance 2 is in the association group 1 ("1.1"), you see the opposite). (Here I'm also not very clear why 1.1 is instance 2 but not endpoint 1 or 2, but that's the basic idea). If you want them both updated, just add "1.0" and "1.1" both to the association group.

So, for me, my solution for the duplication is to simply disable the entities from the second instance (and make sure only "1.0" is in the association group 1)