If you intend to use your Nodon Soft Remote to trigger Reactor routines directly, instead of (or in addition to!) assigning a “House Mode or Scene” to each button (under Soft Remote device’s “Select Scenes for Device Buttons” settings), then you will need to monitor two specific variables – sl_CentralScene & sl_CentralSceneAttr – watching for the values indicated below.
NOTE: I’ve created two lookup tables here, one for 7.0.29 firmware and another for 7.0.31, since the keypress values appear to have changed since the upgrade. (Likewise, the “Select Scenes” feature mentioned above has been expanded from 8 button assignments to 12, although the Soft Remote is supposedly capable of controlling up to 16 distinct scenes if you include ‘Release’ states, explained later.)
Each of the Soft Remote’s 4 buttons (let’s call them ‘Dot’, ‘Plus’, ‘Circle’, and ‘Minus’) generates 4 different pairs of keypress values, depending on whether you Single Tap, Double Tap, Long Hold, or Release it (this last type being the least documented and most difficult to reproduce). These value-pairs can then be used to trigger a Reactor routine based on the button pressed.
SOFT REMOTE KEYPRESS VALUES
First, let’s summarize the values as transmitted by the remote.
‘SLC’ stands for the sl_CentralScene attribute
‘SLA’ stands for the sl_CentralSceneAttr attribute
(For use with Vera firmware >= 7.0.31)
KEY PRESSED SLC SLA
Dot Tap 1x 1 0
Dot Tap 2x 2 3
Dot Hold 3 2
Dot Release* 1 1
Plus Tap 1x 4 0
Plus Tap 2x 5 3
Plus Hold 6 2
Plus Release* 2 1
Circle Tap 1x 7 0
Circle Tap 2x 8 3
Circle Hold 9 2
Circle Release* 3 1
Minus Tap 1x 10 0
Minus Tap 2x 11 3
Minus Hold 12 2
Minus Release* 4 1
*NOTE: ‘Release’ is equivalent to ‘long press then let go’.
(For use with Vera firmware <= 7.0.29)
KEY PRESSED SLC SLA
Dot Tap 1x 1 0
Dot Tap 2x 2 3
Dot Hold 1 2
Plus Tap 1x 3 0
Plus Tap 2x 4 3
Plus Hold 2 2
Circle Tap 1x 5 0
Circle Tap 2x 6 3
Circle Hold 3 2
Minus Tap 1x 7 0
Minus Tap 2x 8 3
Minus Hold 4 1
=============================
I use these same values in the Reactor setup shown below – using a method (not entirely sanctioned or condoned by the creator of Reactor) that relies heavily on Expressions – to react to each keypress type. (Observe how with pre-.31 firmware it was impossible to distinguish which physical button had been pressed using only sl_CentralScene, since those values were not unique; whereas the later .31 revision smartly assigns the numbers 1-12 to the twelve most-used keypresses, greatly simplifying things.)
NOTE: Subsequent time trials reveals no appreciable difference in execution times between this “Expressions” approach versus testing the “Device States” within each subgroup. (See Reply #5, below)
REACTOR SETUP
Create a separate Reactor Sensor exclusively for use with your Nodon Soft Remote, due to the need for numerous Expression variables and Conditions, and for easier editing in the future.
STEP 1: DEFINE EXPRESSIONS
This approach requires the following variables be assigned under Expressions, as follows, inside the Reactor Sensor you created:
VARIABLE VALUE
SLC := getstate( ###, "urn:micasaverde-com:serviceId:SceneController1", "sl_CentralScene" )
SLA := getstate( ###, "urn:micasaverde-com:serviceId:SceneController1", "sl_CentralSceneAttr" )
where ### is the device number of your Soft Remote device.
VARIABLE VALUE (for use with firmware 7.0.31 and later)
btnDot1x := (SLC)==1 && (SLA)==0
btnDot2x := (SLC)==2 && (SLA)==3
btnDotH := (SLC)==3 && (SLA)==2
btnPlus1x := (SLC)==4 && (SLA)==0
btnPlus2x := (SLC)==5 && (SLA)==3
btnPlusH := (SLC)==6 && (SLA)==2
btnCircle1x := (SLC)==7 && (SLA)==0
btnCircle2x := (SLC)==8 && (SLA)==3
btnCircleH := (SLC)==9 && (SLA)==2
btnMinus1x := (SLC)==10 && (SLA)==0
btnMinus2x := (SLC)==11 && (SLA)==3
btnMinusH := (SLC)==12 && (SLA)==2
After upgrading to firmware revision 7.0.31, you may also want to define the following four additional variables, which correspond to the ‘Release’ (that is, long hold and then let go) keypress type for each of the remote buttons.
VARIABLE VALUE (for use with firmware 7.0.31 and later)
btnDotR := (SLC)==1 && (SLA)==1
btnPlusR := (SLC)==2 && (SLA)==1
btnCircleR := (SLC)==3 && (SLA)==1
btnMinusR := (SLC)==4 && (SLA)==1
WARNING! Apparently the Soft Remote does not consistently issue these last four values (for example, after long-holding and releasing the ‘Plus’ button, my remote sets the values SLC=6 / SLA=2 but never updates them to SLC=2 / SLA=1, so I cannot reliable trigger Reactor based on a btnPlusR event).
IMPORTANT — For Vera firmware 7.0.29, use the values below instead!
VARIABLE VALUE (for use with firmware 7.0.29 and earlier)
btnDot1x := (SLC)==1 && (SLA)==0
btnDot2x := (SLC)==2 && (SLA)==3
btnDotH := (SLC)==1 && (SLA)==2
btnPlus1x := (SLC)==3 && (SLA)==0
btnPlus2x := (SLC)==4 && (SLA)==3
btnPlusH := (SLC)==2 && (SLA)==2
btnCircle1x := (SLC)==5 && (SLA)==0
btnCircle2x := (SLC)==6 && (SLA)==3
btnCircleH := (SLC)==3 && (SLA)==2
btnMinus1x := (SLC)==7 && (SLA)==0
btnMinus2x := (SLC)==8 && (SLA)==3
btnMinusH := (SLC)==4 && (SLA)==1
NOTE: Under 7.0.29, I was unable to identify any values for ‘Release’ keypress types.
STEP 2: CREATE CONDITIONS
Under Conditions, after changing the outermost sensor mode to NUL, begin creating 1-12 subgroups (one for each keypress type you would like to react to), and give them appropriate labels. Add two conditions within each subgroup, set to AND mode, as follows:
Subgroup 'Hold Circle Button'
--------------------------------------
[Expression Variable] [btnCircleH] [is TRUE]
AND
[Device State] [Soft Remote] [sl_CentralScene] [updates]
In this example, the Subgroup labeled ‘Hold Circle Button’ will be triggered when – you guessed it – the ‘Circle’ button is held on the Soft Remote.
Use the same setup consistently within the other subgroups. Profit!