OpenZWave / node-openzwave-shared

OpenZWave addon for Node.js (all versions) including management and security functions
Other
199 stars 113 forks source link

GE In-Inwall Smart Dimmer valueId not found #270

Closed jayfar closed 5 years ago

jayfar commented 5 years ago

I have successfully added my new GE Smart Dimmer switches as nodes and I can change the light level value and update some settings in class_id 38 by issuing these commands:

// Set to NOT ignore start level
zwave.setValue({ node_id:4, class_id: 38, instance:1, index:3}, false);
// Set to new start level of the switch to 15
zwave.setValue({ node_id:4, class_id: 38, instance:1, index:4}, 15);
// Set the light to 50 brightness right now
zwave.setValue({ node_id:4, class_id: 38, instance:1, index:0}, 50);

However, when I try to issue setValue to other class_ids,

// Invert Switch
zwave.setValue({ node_id:4, class_id: 112, instance:1, index:1}, 1);

I get this error message:

TypeError: OpenZWave valueId not found: 4-112-1-1

According to the device information, 112 seems like a valid class_id...

node4: GE, 12729 3-Way Dimmer Switch
node4: name="", type="Multilevel Power Switch", location=""
node4: class 38
node4:  [0] Level=50
node4:  [1] Bright=undefined
node4:  [2] Dim=undefined
node4:  [3] Ignore Start Level=true
node4:  [4] Start Level=0
node4: class 39
node4:  [0] Switch All=On and Off Enabled
node4: class 112
node4:  [0] LED Light=LED on when light off
node4:  [1] Invert Switch=No
node4:  [2] Z-Wave Command Dim Step=1
node4:  [3] Z-Wave Command Dim Rate=3
node4:  [4] Local Control Dim Step=1
node4:  [5] Local Control Dim Rate=3
node4:  [6] ALL ON/ALL OFF Dim Step=1
node4:  [7] ALL ON/ALL OFF Dim Rate=3
node4: class 115
node4:  [0] Powerlevel=Normal
node4:  [1] Timeout=0
node4:  [2] Set Powerlevel=undefined
node4:  [3] Test Node=0
node4:  [4] Test Powerlevel=Normal
node4:  [5] Frame Count=0
node4:  [6] Test=undefined
node4:  [7] Report=undefined
node4:  [8] Test Status=Failed
node4:  [9] Acked Frames=0
node4: class 134
node4:  [0] Library Version=6
node4:  [1] Protocol Version=3.67
node4:  [2] Application Version=3.36

I thought the issue might be the data type (like maybe true/false needed rather than 1/0), but issuing wrong data types in 38 give an explicit data type error.

Side Note: I am not exactly sure what the data type for some of these are. I did run the MinOZW and found this information, but I am not sure what ValueType: 4 means.

     ValueLabel: Invert Switch 
         ValueType: 4 
         ValueHelp: Change the top of the switch to OFF and the bottom of the switch to ON, if the switch was installed upside down. 
         ValueUnits:  
         ValueMin: 0 
         ValueMax: 1  

Why am I getting the "valueId not found: 4-112-1-1" and how can I send value updates to my class 112?

I am using openzwave-shared 1.4.6.

robertsLando commented 5 years ago

Try to print value_id property of every value added and check that it exists. The class exists but maybe the value you want to set has a different index or instance.

robertsLando commented 5 years ago

As I thought: check your dimmer switch config file: https://github.com/OpenZWave/open-zwave/blob/master/config/ge/12724-dimmer.xml#L12

The value you want to set has index 4 so to control the switch you have to send:

zwave.setValue({ node_id:4, class_id: 112, instance:1, index:4}, 1);
// or try with
zwave.setValue({ node_id:4, class_id: 112, instance:1, index:4}, "Yes");
guymcswain commented 5 years ago

Alternately, zwave.setConfigParam(4, 1, paramValue) works for me.