How To – Integrate Russound with OpenRemote
The Russound RNET protocol can be used to control Russound multiroom audio amplifiers which support the RNET protocol. The RNET protocol is the 'older' HEX based Russound protocol which is used via the RS232 port of the devices.
The newer devices (C3 and C5) also have an integrated ethernet port which supports the ASCII based RIO protocol.
OpenRemote only supports RNET in the moment but we will probably also integrate RIO soon 
OpenRemote controller configuration
OpenRemote can access the device either directly via RS232 or through a RS232<->Ethernet device. This has to be configured within the controller configuration.
In the moment you cannot do this via the designer which means you have to edit the file "config.properties" manually.
The file is located within the controller in the folder "webapps/controller/WEB-INF/classes".
You have to change the settings in this section:
After this is done restart the controller and design your remote.
OpenRemote Online Designer
Now, let's create a remote in OpenRemote Online Designer.
Our task will be to create a switch to turn one zone on/off and which reflects the status.
Create new Device
In "Building Modeler", create new device (New->New Device)

Create commands
Still in "Building Modeler", select device that was created in step 1 and click on New->New Command.
Specify a name and select "Russound RNET Protocol" as protocol. If you configure multiple zones you should mention the zone numer in the name, that makes it easier to assign UI elements or other objects later.
These are the settings for power-on. We use Zone1 from Controller1.

Russound specific settings:
- Controller - The controller to which this command is sent (Count starts with 1)
- Zone - The zone to which this command is sent (Count starts with 1)
- Russound command - The action this command should do

The following Russound commands are available:
ALL_ON
ALL_OFF
POWER_ON
POWER_OFF
VOL_UP
VOL_DOWN
SELECT_SOURCE1
SELECT_SOURCE2
SELECT_SOURCE3
SELECT_SOURCE4
SELECT_SOURCE5
SELECT_SOURCE6
SELECT_SOURCE7
SELECT_SOURCE8
SET_SOURCE
SET_VOLUME
SET_TURNON_VOLUME
SET_BASS_LEVEL
SET_TREBLE_LEVEL
SET_BALANCE_LEVEL
SET_LOUDNESS_ON
SET_LOUDNESS_OFF
SET_PARTYMODE_ON
SET_PARTYMODE_OFF
GET_VOLUME
GET_TURNON_VOLUME
GET_POWER_STATUS
GET_SOURCE
GET_BASS_LEVEL
GET_TREBLE_LEVEL
GET_BALANCE_LEVEL
GET_LOUDNESS_MODE
GET_PARTY_MODE
GET_SHARED_SOURCE
GET_SYSTEM_ON_STATE
GET_DO_NOT_DISTURB
Since we are going to configure a second and third command, click on "Submit and continue". This will store our current settings, but preserver filled-in values. We can then easily update settings without the need to re-enter all the values again.
These are the settings for power-off.

And the last one. These are the settings for querying power status.

Since we are not going to add any other command, click on "Submit".
Create sensor
We also need a sensor which is later used by the "switch" object to query the status.
Select the device and select (New->New Sensor).
Define a name and select the status command from the previous step.
The sensor will have the type "switch".


If you want to create sensors which can be used for sliders (Volume, Bass, etc.), you have to create range sensors with the following ranges:
- For volume and turnonVolume: 0 - 10
- For bass, trebble, balance, -10 - 10
- For source selection: 1 - 8 (or 1 - 6)
Create switch
Now we can create the switch object which combines the on/off commands and the switch sensor. The switch object will be used later in the UI designer.
Select the device and select (New->New Switch).
Define a name and select the sensor from the previous step.
You also have to select the command for on and off.

We are done in the Building modeler and have successfully configured our device, the commands, a sensor and the switch.

Use commands in UI Designer
Now we switch to the UI Designer and create a panel which will be our remote.
The panel will contain one switch UI element which will use our switch object from the previous step.
If you don't select an image for on and off the button will just have a label "On" or "Off" depending on the status.

Result