Russound rnet

Guys, thanks for the work on this.

I was trying to grab the last version off server and (try) to give it a go, but have been unable to reach it for the last few days.

Sorry about that. Had some issues with location of my build server, the jar is now on was

https://s3-us-west-2.amazonaws.com/craigham-pub/org.openhab.binding.russound-2.1.0-SNAPSHOT.jar

1 Like

Ok, got it, thanks.

Got it up and running on a Russound CAV6.6. Able to control power, volume and change sources for the zones (when adding Russound RNet device).

While I would like to use Ser2sock (never had luck configuring) I am using a Global Cache IP2SL, and put in the port for that and works fine.

One oddity i have noticed, not specific to this, but the All On code for the CAV seems different than other Russound devices (manual says CAV/CAM/CAA).

They show All On hex code as: F0 7E 00 7F 00 00 71 05 02 02 00 00 F1 22 00 01 00 00 00 01 10 F7
But for “CAV/CAM/CAA All On”: F0 7E 00 7F 00 00 70 05 02 02 00 00 F1 22 00 00 01 00 00 01 0F F7
Second one works for CAV, first one does not. All other codes seems to be fine.

Great to see the RNET protocol being worked on, been running Openremote for a while, but Openhab is more compatible with many protocols and has a much larger following. I use two CAA66’s in my house controlled by Openremote via GC-100, and it was the only thing holding me from implementing openhab completely.

I will keep an eye on the thread.

Thanks

I’m watching this thread with great interest. My situation is similar to Scott’s. I was using openremote directly through the serial port on the host machine to control a CAA66. It worked pretty well except it would get bungled up from polling so I set polling to some long duration to get it to play nice. I’ve since migrated to Openhab (many thanks to developers and contributors) for automation and control. Right now I’ve got zwave and sonos working but would love to get my Russound Rnet unit working. I’ve been trying to control the Russound indirectly from Openhab via my Omnipro II with the 1.10 Omnilink binding but I’ve really struggled with it.

Regarding Sabre66’s question the first hex string is for the ACA-E5 keypad (0x71). The second works with the rest of the keypads (0x70). Also I believe there is no valid ALL ON command for the CAA66, but there is an ALL OFF command.

The russound binding should send (excluding checksum, terminating byte)

f0 7e 00 7f ff ff 70 05 02 02 00 00 f1 22 00 01 00 00 00 01

for all on, which is similar to the first set of bytes you specified, except byte 7 is 70 instead of 71. I have the caa66 so there is no all on support.

Does the all off work for your cav6.6? It seems the on/off byte is 1 greater for the cav, is there documentation for the cav all on/off?

Yes, the ‘all off’ code as is does work for the CAV6.6. I have tested the All On code below with iRule previously, and it does its intended purpose for the CAV6.6 (that is the only one I have tested it on). Not the end of the world if it does not work. Thanks

F0 7E 00 7F 00 00 70 05 02 02 00 00 F1 22 00 00 01 00 00 01 0F F7

See page 3 of in the link http://docslide.us/documents/russound-rs232-hex-codes-v1007.html

could you try the latest build from my s3 and let me know if that fixes all on for you?

Very nice, all on / all off now work for the CAV6.6. Thank you.

craigh,

Could you do me a favor? In the russound discovery class (RioSystemDiscovery) there is a 100 millisecond timeout (CONN_TIMEOUT_IN_MS) for a valid response, could you up that to 300 milliseconds and commit with your changes. Seems 100 is a bit too fast if the russound process is running something…

Thanks,
Tim

done, latest build has increased timeout.

craig

Can you post or point me to sample conf info for setting up my CAM6’s? I can’t tell from the threads if the controller will be discovered or not. I am currently connecting to over TCP using a BrainBox ES-257 The suggested Thing config references RIO, so that has me concerned.

Below is an example for things and items file which should get you started. This connects via tcp to the proxy connected to the serial port.

FYI If you just used the things file, then when you did a russound discovery, the binding would auto generate the zones using the numControllers, and zonesPer attributes of the bridge.

There is no support for auto-discovery of the bridge at this time.
russound-rnet.things

Bridge russound:rnet:rnet [ ipAddress="192.168.1.30", port=7777,numControllers=2,zonesPer=6]
{
    Thing russound:rnetzone:2_1 "Kitchen Speakers" [controller=2, zone=1]
}

russound-rnet.items

Switch russound_rnetzone_2_1_status { channel="russound:rnetzone:2_1:status" }

and for anyone wondering how to expose the serial port via tcp, this is what I do on my pi (linux solution)

I install ser2net via apt

then put this line in my /etc/ser2net.conf file

7777:telnet:0:/dev/ttyUSB0:19200 8DATABITS NONE 1STOPBIT banner tr=tr1 timestamp

I just created a new version of the binding with rnet support. It does have a change which breaks existing config. I had to do this to support direct serial connections.

Here is an example of my things file. The attribute connectionString has been added to the rnet bridge, and ip and port have been removed. Now someone could put the serial port text in their and it will connect via the serial port. Unfortunately I have been unable to test the direct serial connection, so if someone else could, would be great to get feedback. For serial you would set your connection string to /dev/ttyAMA0 in linux, and whatever the convention is for Windows in theory should work too. I grabbed this code from the old russound 1.x binding, so it should either work, or be close.

here is my new things file…

Bridge russound:rnet:rnet [ connectionString="/tcp/192.168.1.30:7777",numControllers=2,zonesPer=6]
{
    
    Thing russound:rnetzone:1_1 "Basement Speakers" [controller=1, zone=1]
    Thing russound:rnetzone:1_2 "Office Speakers" [controller=1, zone=2]
    Thing russound:rnetzone:1_3 "Master Speakers" [controller=1, zone=3]
    Thing russound:rnetzone:1_4 "MasterBath Speakers" [controller=1, zone=4]
    Thing russound:rnetzone:1_5 "Balcony Speakers" [controller=1, zone=5]
    Thing russound:rnetzone:1_6 "Great Room Speakers" [controller=1, zone=6]
    
    Thing russound:rnetzone:2_1 "Kitchen Speakers" [controller=2, zone=1]
    Thing russound:rnetzone:2_2 "Dining Speakers" [controller=2, zone=2]
    Thing russound:rnetzone:2_2 "Rooftop Speakers" [controller=2, zone=3]
}

Thanks craigh, will test it out when i can with Global Cache. And I will also try to dump my need for Global Cache IP2SL with your tips. Is this the official binding, or do we still get it from your server?

Thanks muchly. That was enough info for me to get it working. My russound.things file ended up looking like this (your russound:rnetzone:1_1 syntax didn’t work for me):

Bridge russound:rnet:rnet [  connectionString="/tcp/192.168.0.51:9001", numControllers=2, zonesPer=6] {
    Thing rnetzone 01 "Zone 1" [ controller=1, zone=1 ]
    Thing rnetzone 02 "Zone 2" [ controller=1, zone=2 ]
    Thing rnetzone 03 "Zone 3" [ controller=1, zone=3 ]
    Thing rnetzone 04 "Zone 4" [ controller=1, zone=4 ]
    Thing rnetzone 05 "Zone 5" [ controller=1, zone=5 ]
    Thing rnetzone 06 "Zone 6" [ controller=1, zone=6 ]
    Thing rnetzone 07 "Zone 7" [ controller=2, zone=1 ]
    Thing rnetzone 08 "Zone 8" [ controller=2, zone=2 ]
    Thing rnetzone 09 "Zone 9" [ controller=2, zone=3 ]
    Thing rnetzone 10 "Zone 10" [ controller=2, zone=4 ]
    Thing rnetzone 11 "Zone 11" [ controller=2, zone=5 ]
    Thing rnetzone 12 "Zone 12" [ controller=2, zone=6 ]
}

Sorry, i still cant seem to get ser2net to work and not sure how to configure the thing for using the global cache with new binding. The prior binding was perfect and worked for me, so i will stick with that for now. Thank you.

what config are you using with the old binding so that it works?

I did not create a things file, but rather configured it thru the Paper UI, and added all the channels. I set the IP and port to those of the iTach, and created an items file for all the zones. Such as:

Switch RNetAudioZone1_1_Status "Kitchen Island Speaker [%s]" ["Switchable"] {channel="russound:rnetzone:1_1:status"}
Dimmer RNetAudioZone1_1_Volume	"Kitchen Island Volume [%.0f %%]" ["Lighting"] {channel="russound:rnetzone:1_1:volume"}
Number RNetAudioZone1_1_Source "Kitchen Island Source [%.0f]" ["Lighting"] {channel="russound:rnetzone:1_1:source"}
Switch RNetAudioZone1_1_Loudness "Kitchen Island Loudness [%s]" {channel="russound:rnetzone:1_1:loudness"}

The [“Switchable”] for status is for Alexa skill, and it works great for on/off. But volume is either all or none, so no good, and source also does not work.