GE Fan Switch 14287

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

No, I don’t see any config options for it even after the update…I was just referring to the basement functionality working. It bugs my wife too though…not pretty, but I’ll probably just put some white vinyl tape over it and call it a day.

The manufactuer_specific.xml change was merged into openzwave 17 days ago:

Not sure how that translates into python-openzwave releases though, so might still need to patch locally for it to be effective.

Has anyone been able to control the LED on this yet? I can get it to add and operate just fine, but the LED control settings will just not take.LED setting works fine on the 14294 dimmer, this shouldn’t be any different in that regard, I would think…

I have not found a solution, yet.

Just wanted to resurface this to see if anyone has figured out the LED control. I currently have an AppDaemon app compensating for my 12*** version, but the 14*** version doesn’t react to any config changes, still…

Unfortunately no, I’ve been watching this thread and can only confirm the same problems. I own both the 14287 and 12730 fan switches, plus the 14294 dimmer. As already mentioned, the 14294 works flawlessly with all 3 configuration parameters, while the 14287 doesn’t allow any change, and the 12730 allows anything but “always off”.

With the 14287 I can however use the hardware toggle (3 on/1 off) to swap the LED setting, but can’t control it with software. I actually bought this newer one because I thought they might have fixed the problem in the 12730, but seems like they went backwards.

After I originally bought the 12730 and couldn’t turn off the LED, I called Jasco tech support (this was only a few months ago) and asked if turning off the LED was supported in these fan switches specifically, and they said it is, but either phone support is wrong of they’ve got broken products. I’ve considered calling again to see if they’ll take my switches under warranty as defective to see what happens.

Do you mind sharing your AppDaemon solution for the 12730? I assume it just toggles the z-wave config value based on the switch on/off position?

You’re correct. It just uses the service to call zwave.set_config_parameter. Here is the code:

import appdaemon.appapi as appapi

#
# App to turn manage LED notification on GE Switch
#
# EXAMPLE appdaemon.yaml entry below
#
# LED Control:
#   class: GE_switch_led_control
#   module: GE_switch_led_control
#   entities:
#     - entity: fan.master_bedroom_fan_level
#       parameter: '3'
#       off_value: 'LED on when light on'
#       on_value: 'LED on when light off'
#     - entity: fan.living_room_fan_level
#       parameter: '3'
#       off_value: 'LED on when light on'
#       on_value: 'LED on when light off'
#
#
# Arguments
#
# entity: the entity that is being monitored
# parameter: the zwave parameter that you would like to update
# off_value: the value to send when the device is 'off'
# on_value: the value to send when the device is 'on'
#
# Release Notes
#
# Version 1.0:
#   Initial Version
#
#
# ####################################################################
# ####################################################################


class GE_switch_led_control(appapi.AppDaemon):

    def initialize(self):

        if "entities" in self.args:
            for item in self.args["entities"]:
                entity = item["entity"]
                node_id = self.get_state(entity, "node_id")
                parameter = item["parameter"]
                off_value = item["off_value"]
                on_value = item["on_value"]

                msg = "{} setup for LED control using Node ID {}.".format(
                    self.friendly_name(entity), node_id)
                self.log(msg, "INFO")

                # initialize LED

                # wait seconds
                self.run_in(self.initialize_led(entity=entity, node_id=node_id, parameter=parameter,
                                                off_value=off_value, on_value=on_value), 240)

                # Setup Listener
                self.listen_state(self.state_changed, entity=entity,
                                  node_id=node_id, parameter=parameter,
                                  off_value=off_value, on_value=on_value)

        else:
            msg = "GE Switch LED Control enabled but no entities configured."
            self.log(msg, "INFO")

    def state_changed(self, entity, attribute, old, new, kwargs):
        node_id = kwargs["node_id"]
        parameter = kwargs["parameter"]
        off_value = kwargs["off_value"]
        on_value = kwargs["on_value"]

        if new == "on":
            value = on_value
        else:
            value = off_value

        msg = "{} is now {}, setting Zwave value to: {}.".format(
            self.friendly_name(entity), new, value)
        self.log(msg, "INFO")

        self.call_service("zwave/set_config_parameter", node_id=node_id,
                          parameter=parameter, value=value)

    def initialize_led(self, entity, node_id, parameter, off_value, on_value):
        current_state = self.get_state(entity)
        if current_state == "on":
            value = on_value
        else:
            value = off_value

        msg = "Zwave Ready - INITIALIZING: {} is now {}, setting Zwave value to: {}.".format(
            self.friendly_name(entity), current_state, value)
        self.log(msg, "INFO")

        self.call_service("zwave/set_config_parameter", node_id=node_id,
                          parameter=parameter, value=value)

    def log_notify(self, msg, level):
        self.log(msg, level)
        self.call_service("notify/notify", message=msg)


The initialization of the LED is throwing errors and I haven’t spent time to figure out what is causing it. But, that is only firing on App start.

Let me know if you have questions.

1 Like

Anyone figure this out? My 14287 doesn’t have any config options either. Would love to turn off the LED to the switch in my bedroom.

@kylerw I too have the 14287 fan switch. I couldn’t figure out how to turn off the LED by setting the parameter via HASS but I found online that when the fan is off manually press ON ON ON OFF really quickly and it turns off the LED. I just tested it on my own and it worked!! Hopefully it works for you as well.

1 Like

does that toggle through the options?

always off
on when off
on when on

I just tried it out and it appears it only toggles between always on and on when on.

There’s a Jasco product manager on Reddit (u/mccoolio) who posts in r/homeautomation. Awhile back I asked about the configuration parameters for these switches. Here was the response:

So the LED functionality for the Fan Controls was made differently than the dimmers, although they’re basically the same thing. Here is why: we wanted to be able to signify the fan speed for the user. If the LED is disabled, the user can’t tell if it is on Low/Medium/High.

We have recently built in a manual disable of the LED function in our Z-Wave Plus items that isn’t in the parameters. To do so, tap the top button 3 times and the bottom button 1 time. I’m almost 100% certain that it will disable your LED (I can’t give you a concrete answer because the Product Manager behind the device is out of town and that function isn’t listed in the manual, yet). That is the only other option we have. Hope this helps!

The response did not address the differences between the 12730 and 14287, but it appears to be an intentional design decision that the LED cannot be disabled entirely (unlike the dimmer switches). That reasoning doesn’t makes sense to me since the LED doesn’t show the fan speed unless you activate the switch… but it is what it is. At least the 12730 LED can be disabled with the workaround above, unfortunately it seems the 14287 cannot. Guess I’ll be moving my 12730 to the bedroom and the 14287 to the living room.

I don’t have this device, but with other GE devices, I was able to stop HA and edit the zwcfg file.

Based on what is in the 12724-dimmer.xml file below (from https://github.com/OpenZWave/open-zwave/blob/master/config/ge/12724-dimmer.xml), you should be able to add/modify the entries in your zwcfg file for the node id of your fan switch. Specifically command class id=112 coveres the LED light, but there are other entries under there that you can add and get additional functionality.

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

<?xml version="1.0" encoding="utf-8"?>
<!-- GE(Jasco) 12724 3-Way Dimmer Switch -->
<Product xmlns='http://code.google.com/p/open-zwave/'>
	<!-- Configuration Parameters - per http://www.ezzwave.com/advanced-operation/ -->
	<CommandClass id="112">
		<Value type="list" index="3" genre="config" label="LED Light" min="0" max="2" value="0" size="1">
			<Help>Sets when the LED on the switch is lit.</Help>
			<Item label="LED on when light off" value="0" />
			<Item label="LED on when light on" value="1" />
			<Item label="LED always off" value="2" />
		</Value>
		<Value type="list" index="4" genre="config" label="Invert Switch" min="0" max="1" size="1" value="0">
			<Help>Change the top of the 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>
		<!-- Both the number of steps (or levels) that the dimmer will change and the timing of the steps can be modified to suit personal preferences. The timing of the steps can be adjusted in 10 millisecond intervals. As an example, the default setting for parameter 8 is 3. This means that the lighting level will change every 30 milliseconds when the Dim Command is received. A value of 255 would mean that the level would change every 2.55 seconds. Combined, the two parameters allow dim rate adjustments from 10 milliseconds to 4.2 minutes to go from maximum-to-minimum or minimum-to-maximum brightness levels. -->
		<Value type="byte" index="7" genre="config" label="Z-Wave Command Dim Step" units="" min="1" max="99" value="1">
			<Help>Indicates how many levels the dimmer will change for each dimming step.</Help>
		</Value>
		<Value type="byte" index="8" genre="config" label="Z-Wave Command Dim Rate" units="x 10 milliseconds" 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" index="9" genre="config" label="Local Control Dim Step" units="" min="1" max="99" value="1">
			<Help>Indicates how many levels the dimmer will change for each dimming step.</Help>
		</Value>
		<Value type="byte" index="10" genre="config" label="Local Control Dim Rate" units="x 10 milliseconds" 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" index="11" genre="config" label="ALL ON/ALL OFF Dim Step" units="" min="1" max="99" value="1">
			<Help>Indicates how many levels the dimmer will change for each dimming step.</Help>
		</Value>
		<Value type="byte" index="12" genre="config" label="ALL ON/ALL OFF Dim Rate" units="x 10 milliseconds" 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>
	</CommandClass>
</Product>