GE Fan Switch 14287

Did you add this to your configuration file:

fan: - platform: zwave

That didn’t work

What does OZW_Log.txt say? Any errors?

I don’t see anything obvious to me but not sure what I’m looking at:slight_smile: There is something on the 5th line about an expected callback different from what was received?

2017-06-11 04:00:38.878 Info, Requesting Neighbor Update for node 30
2017-06-11 04:00:38.878 Detail, Node030, Queuing (Command) ControllerCommand_RequestNodeNeighborUpdate (Node=30): 0x01, 0x05, 0x00, 0x48, 0x1e, 0x6f, 0xc3
2017-06-11 04:00:38.878 Detail, Notification: ControllerCommand - Starting
2017-06-11 04:00:38.878 Detail, 
2017-06-11 04:00:38.878 Info, Node030, Sending (Command) message (Callback ID=0x6f, Expected Reply=0x48) - ControllerCommand_RequestNodeNeighborUpdate (Node=30): 0x01, 0x05, 0x00, 0x48, 0x1e, 0x6f, 0xc3
2017-06-11 04:00:38.955 Detail, Node030,   Received: 0x01, 0x05, 0x00, 0x48, 0x6f, 0x21, 0xfc
2017-06-11 04:00:38.955 Detail,
2017-06-11 04:00:38.955 Info, Node030, REQUEST_NEIGHBOR_UPDATE_STARTED
2017-06-11 04:00:38.955 Detail, Node033,   Expected callbackId was received
2017-06-11 04:00:38.955 Detail, Node033,   Expected reply was received
2017-06-11 04:00:38.955 Detail, Node033,   Message transaction complete
2017-06-11 04:00:38.955 Detail,
2017-06-11 04:00:38.955 Detail, Node030, Removing current message
2017-06-11 04:00:38.955 Detail, Notification: ControllerCommand - InProgress
2017-06-11 04:00:39.342 Detail,   Received: 0x01, 0x05, 0x00, 0x48, 0x6f, 0x21, 0xfc
2017-06-11 04:00:39.343 Detail,
2017-06-11 04:00:39.343 Info, REQUEST_NEIGHBOR_UPDATE_STARTED
2017-06-11 04:00:39.343 Detail, Notification: ControllerCommand - InProgress
2017-06-11 04:00:39.855 Detail,   Received: 0x01, 0x05, 0x00, 0x48, 0x6f, 0x22, 0xff
2017-06-11 04:00:39.855 Detail,
2017-06-11 04:00:39.855 Info, REQUEST_NEIGHBOR_UPDATE_DONE
2017-06-11 04:00:39.855 Detail, Requesting routing info (neighbor list) for Node 30
2017-06-11 04:00:39.855 Detail, Node030, Queuing (Command) Get Routing Info (Node=30): 0x01, 0x07, 0x00, 0x80, 0x1e, 0x00, 0x00, 0x03, 0x65
2017-06-11 04:00:39.856 Detail, Notification: ControllerCommand - Completed
2017-06-11 04:00:39.856 Detail,
2017-06-11 04:00:39.856 Info, Node030, Sending (Command) message (Callback ID=0x00, Expected Reply=0x80) - Get Routing Info (Node=30): 0x01, 0x07, 0x00, 0x80, 0x1e, 0x00, 0x00, 0x03, 0x65
2017-06-11 04:00:39.863 Detail, Node030,   Received: 0x01, 0x20, 0x01, 0x80, 0xbf, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, $
2017-06-11 04:00:39.863 Detail,
2017-06-11 04:00:39.863 Info, Node030, Received reply to FUNC_ID_ZW_GET_ROUTING_INFO
2017-06-11 04:00:39.863 Info, Node030,     Neighbors of this node are:
2017-06-11 04:00:39.863 Info, Node030,     Node 1
2017-06-11 04:00:39.863 Info, Node030,     Node 2
2017-06-11 04:00:39.863 Info, Node030,     Node 3
2017-06-11 04:00:39.863 Info, Node030,     Node 4
2017-06-11 04:00:39.863 Info, Node030,     Node 5
2017-06-11 04:00:39.863 Info, Node030,     Node 6
2017-06-11 04:00:39.863 Info, Node030,     Node 8
2017-06-11 04:00:39.863 Info, Node030,     Node 23
2017-06-11 04:00:39.863 Info, Node030,     Node 29
2017-06-11 04:00:39.864 Detail,   Expected reply was received
2017-06-11 04:00:39.864 Detail,   Message transaction complete
2017-06-11 04:00:39.864 Detail,
2017-06-11 04:00:39.864 Detail, Node030, Removing current message

This is what’s in the xml file.

 </Node>
        <Node id="30" name="GE 14287 Fan Control Switch" location="" basic="4" generic="17" specific="8" roletype="5" devicetype="1024" nodetype="0" type="Multilevel Switch" listening="true" frequentList$
                <Manufacturer id="63" name="GE">
                        <Product type="4944" id="3131" name="Unknown: type=4944, id=3131" />
                </Manufacturer>
                <CommandClasses>
                        <CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1" mapping="38">
                                <Instance index="1" />
                        </CommandClass>
                        <CommandClass id="38" name="COMMAND_CLASS_SWITCH_MULTILEVEL" version="1" innif="true">
                                <Instance index="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="2$
                                <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=$
                                <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"$
                                <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$
                        </CommandClass>
                        <CommandClass id="39" name="COMMAND_CLASS_SWITCH_ALL" version="1" request_flags="4" 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"$
                                        <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="4" innif="true">
                                <Instance index="1" />
                        </CommandClass>
                        <CommandClass id="86" name="COMMAND_CLASS_CRC_16_ENCAP" version="1" request_flags="4" innif="true">
                                <Instance index="1" />
                        </CommandClass>
                        <CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1" request_flags="4" innif="true">
                                <Instance index="1" />
                        </CommandClass>
                        <CommandClass id="94" name="COMMAND_CLASS_ZWAVE_PLUS_INFO" version="1" request_flags="4" innif="true">
                                <Instance index="1" />
                                <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=$
                                <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=$
                                <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="-327$
                        </CommandClass>
                        <CommandClass id="112" name="COMMAND_CLASS_CONFIGURATION" version="1" request_flags="4" innif="true">
                                <Instance index="1" />
                        </CommandClass>
                        <CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
                                <Instance index="1" />
                        </CommandClass>
                        <CommandClass id="115" name="COMMAND_CLASS_POWERLEVEL" version="1" request_flags="4" 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="$
                                        <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$
                                <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" mi$
                                <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" $
                                <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" $
                                        <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="$
                                <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=$
                                <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" ma$
                                <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"$
                                        <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="$
                        </CommandClass>
                        <CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION" version="1" request_flags="4" innif="true">
                                <Instance index="1" />
                                <Associations num_groups="3">
                                        <Group index="1" max_associations="5" label="Group 1" auto="true">
                                                <Node id="1" />
                                        </Group>
                                        <Group index="2" max_associations="5" label="Group 2" auto="false" />
                                        <Group index="3" max_associations="5" label="Group 3" auto="false" />
                                </Associations>
                        </CommandClass>
                        <CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" 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" m$
                                <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" $
                                <Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="$
                        </CommandClass>
                </CommandClasses>
        </Node>
</Driver>

@hagensieker

I have the same switch, and was running into the exact same no entities issue but I think I figured it out finally.

First I did the same as you and added an entry into manufacture_specific.xml, right underneath 12730 GE fan switch:

		<Product type="4944" id="3131" name="14287 Fan Control Switch" config="ge/12724-dimmer.xml"/>

Then I did everything on the latest HA (0.48.1) via the z-wave console:

  1. Removed the node just so we could start totally fresh.
  2. Added it (non-secure, not sure if it matters or not)
  3. Restart HASS

(At this point, it should now show up named properly but with no entities.)

  1. Shutdown HASS
  2. Go into /home/homeassistant/.homeassistant/zwcfg_*.xml

Search for 14287 and then change the “specific” attribute on the Node property for this item to 1 from 8:

<Node id="55" name="" location="" basic="4" generic="17" specific="1" roletype="5" devicetype="1024" nodetype="0" type="Multilevel Switch" listening="true" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
  1. Save and then restart HASS and you should see a fan control.

NOTE: I didn’t have to add the fan component to configuration.yaml.

1 Like

Thanks. Will give this a shot tonight.

For what it’s worth, I wound up being able to do it in secure pairing mode too. And when I was watching the OZW logs, I noticed that the devicetype seemed to cause errors related to the configuration options I think. It still worked fine on the frontend in HASS, but if I changed devicetype to match an actual dimmer I had (devicetype=“1536”), it no longer threw errors into the log.

No idea if that’s “correct” or not, but for completeness, the final version I ended up with was:

<Node id="59" name="Living Room Fan" location="" basic="4" generic="17" specific="1" roletype="5" devicetype="1536" nodetype="0" type="Multilevel Switch" listening="true" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" secured="true" query_stage="Complete">

@shoeman22

Awesome! It worked. I’m still on the old zwave naming system and will make the jump soon.

Just want to add one step in case some one more noob than me stumbles across this. Before messing with

/home/homeassistant/.homeassistant/zwcfg_*.xml

Go to services then:

call homeasssistant > stop

then do all this.

Thanks again. Was able to get my $40 switch off the garage shelf and actually use it. I probably owe you a beer.

Glad to hear it worked! Just installed my second one a few minutes ago and it’s working like a champ too.

Hi,

Is anyone with this device able to test this change? https://github.com/home-assistant/home-assistant/pull/8682/files This may not fix the manufacturer_specific.xml problem, but it should let the device be discovered without changing specific="8".

willing to give this a try, what do I need to do? Can I throw it in the custom_components/zwave folder?

This is working well but control over the LED light is not working. Has anyone figured that out?

This change has been merged into dev, so at this point it’s probably easiest to just wait for 0.51

1 Like

Actually, ‘on when on’ and ‘off when on’ work. ‘Never on’ does not. Anyone seen this? That blue led is annoying at night on my bedroom fan!

I take that back. my 14287 doesn’t seem to update at all while my 12724 has the behavior above

Discovered great with that change. Now to figure out why the LED settings are sticking.

:boom: Thanks for testing and reporting back!

Just wanted to give a second confirmation that it’s fixed! Installed 3rd 14287 today after updating to .50.2 and it showed up as a fan directly after doing add_node_secure.

Thanks for putting this change in!

Are you able to update the LED config setting? @shoeman22