Russound RIO

276 views
Skip to first unread message

av_roller

unread,
Aug 31, 2010, 9:29:34 PM8/31/10
to CommandFusion
Hi,

I'm trying to control a Russound MCA-A5 Multi Zone Controller with IP
and am not having any luck.

Here is some info copied from RIO protocol doc:

The RIO Command Set is available as ASCII text via IP (using port
9621) and
RS232 interfaces.

The specifics of the RIO protocol are:
RIO commands are case-insensitive.
RIO commands are made up of ASCII characters except for the
terminating characters.
All RIO commands must be terminated with a <CR> (0x0D hex)
All RIO responses are terminated with a <CR><LF> (0x0D 0x0A hex)


Here an example command copied from RIO doc, Increase the volume of
controller 1, zone 4:

EVENT C[1].Z[4]!KeyPress VolumeUp

I created a system,TCP, maintain constant connection, port 9621

It's not working though, I think I may not be doing the terminating
characters correctly. How would I attach them to the command?

Thanks for any help.

Jarrod Bell

unread,
Aug 31, 2010, 11:21:37 PM8/31/10
to CommandFusion
Search our wiki for entering hex characters into guiDesigner.
Carriage return is \x0D

Try:
EVENT C[1].Z[4]!KeyPress VolumeUp\x0D

Jarrod

Nahshon Williams

unread,
Sep 1, 2010, 2:58:12 AM9/1/10
to comman...@googlegroups.com
In general

<CR> is represented by \x0D in commandfusion.
<LF> is represented by \x0A in commandfusion.

Using your example (are there spaces in the command?):

If so

EVENT C[1].Z[4]!KeyPress VolumeUp

will be

EVENT C[1].Z[4]!KeyPress VolumeUp/x0D

A protocol link maybe?

Jarrod Bell

unread,
Sep 1, 2010, 6:09:37 AM9/1/10
to CommandFusion
Nahshon, your example was incorrect, make sure its a backslash \x0D

Jarrod

Nahshon Williams

unread,
Sep 1, 2010, 6:15:13 AM9/1/10
to comman...@googlegroups.com
From now on call me typo!

av_roller

unread,
Sep 4, 2010, 3:18:06 PM9/4/10
to CommandFusion
Thanks guys,

OK, I got all my commands working.

Now for some parsing.

I'm trying to capture 95.5 from this example:

N S[1].channel=”95.5”

I tried a few different regex but I think I'm not matching the space
between N S correctly.

Thanks for any help.

Philip Olson

unread,
Sep 4, 2010, 6:47:20 PM9/4/10
to CommandFusion
I'm actually trying to parse this:

N S[1].channel=”95.5 MHz FM"

I would like to omit the MHz if possible so it's just 95.5 FM

Right now I'm using this regex:

N S(.*).channel="(.*)"

Capture group 1 gives me [1] obviously, I need to know how to capture just the 1

and then capture group 2 gives me the full 95.5 MHz FM

Thanks for any help.


--
You received this message because you are subscribed to the Google Groups "CommandFusion" group.
To post to this group, send email to comman...@googlegroups.com.
To unsubscribe from this group, send email to commandfusio...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/commandfusion?hl=en.


Jarrod Bell

unread,
Sep 4, 2010, 7:52:25 PM9/4/10
to CommandFusion
N S\[(.)\].channel=”([\d\.]*).*(FM|AM)"

That will give you three capture groups:
1 = 1
2 = 95.5
3 = FM

Then to put it all together, you create three capture groups in the
processing order, giving each a name:
1 = zone (just guessing that its zone)
2 = channel
3 = band
Doesn't matter what you set each target to, because we will use their
value next.

Now create an onmatch item, set its value to:
Zone: $zone$, $channel$ $band$
Then target a serial join.
The output on the serial join would be something like:
Zone: 1, 95.5 FM

Jarrod
> > commandfusio...@googlegroups.com<commandfusion%2Bunsubscribe@goog legroups.com>
> > .

Philip Olson

unread,
Sep 4, 2010, 9:53:10 PM9/4/10
to comman...@googlegroups.com
Thanks Jarrod,

OK, I see how to do it now. Although I couldn't get your regex to produce anything in the tester.

There are two other pieces of metadata for this tuner:

N S[s].radioText=”<value>”

N S[s].programServiceName=”<value>”

I set up a (.*) capture page and sent the monitor source command to the Russound. What I got back was three separate consecutive feedbacks.

N S[s].programServiceName=”something”
N S[s].programServiceName=”something”
N S[s].programServiceName=”something”

Text carries over from the first and second.
 
I tried a regex:

N S[s].programServiceName=”(.*)”

But nothing, same for radioText

Philip




To unsubscribe from this group, send email to commandfusio...@googlegroups.com.

Jarrod Bell

unread,
Sep 4, 2010, 9:56:30 PM9/4/10
to CommandFusion
Thats strange, I used the tester to craft the regex, and it perfectly
matched the 3 sets of data, using this as the test data:
N S[1].channel=”95.5 MHz FM"

In your other regex's you need to escape the square brackets as they
have special meaning in regex syntax:
N S\[s\].programServiceName=”(.*)”

Jarrod

Philip Olson

unread,
Sep 4, 2010, 10:01:44 PM9/4/10
to comman...@googlegroups.com
My bad, it works.

Thanks, It should be all down hill from here.



To unsubscribe from this group, send email to commandfusio...@googlegroups.com.

Philip Olson

unread,
Sep 5, 2010, 1:23:06 PM9/5/10
to comman...@googlegroups.com
Everything works except the radio text only shows it's first string. On the keypad it shows it's first string and then scrolls left to finish and then starts over. I was wondering if it is possible to emulate this in iViewer?


THX

To unsubscribe from this group, send email to commandfusio...@googlegroups.com.

Jarrod Bell

unread,
Sep 6, 2010, 8:58:10 AM9/6/10
to CommandFusion
Whats the messages coming in?

Jarrod

Philip Olson

unread,
Sep 6, 2010, 11:09:14 AM9/6/10
to comman...@googlegroups.com
Hi Jarrod,

iViewer captures this in a large text window:

    YOUR NUMBER ONE HIT MUSIC STATION 95.5 WI


Keypad initial text:

    YOUR NUMBER ONE HIT MU

Then scrolls left to finish:

    USIC STATION 95.5 WIFC     CENTRAL WI US

Then starts over.


One other thing I'm looking to do is scale the volume. The Russound goes 0-50, I would like to transform to 0-100. I have text and sliders. I read a up bit on math expressions but need a little help.


THX


  

To unsubscribe from this group, send email to commandfusio...@googlegroups.com.

Jarrod Bell

unread,
Sep 7, 2010, 1:59:35 AM9/7/10
to CommandFusion
What exact messages are coming in for the radio info that you want to
capture?

For the volume scaling, just do a capture group, targeting serial
join, in the value do:
value*2

Jarrod

Philip Olson

unread,
Sep 7, 2010, 2:22:57 AM9/7/10
to comman...@googlegroups.com
The messages are RDS data from over the air. Each station has it's own radio text.

I made (.*) capture but for some reason only the first part of the data is captured, it cuts off in the middle of a word. The remaining text can be seen scrolling on the keypad though? If there is nothing I can change in guiDesigner that must just be the way it is.

Thanks



To unsubscribe from this group, send email to commandfusio...@googlegroups.com.

Jarrod Bell

unread,
Sep 7, 2010, 2:33:24 AM9/7/10
to CommandFusion
Can't help much without knowing the exact messages that are coming in
and the exact sequence.
Most likely its coming back in multiple messages, so its being cut
off.

Jarrod
> ...
>
> read more »

Philip Olson

unread,
Sep 7, 2010, 3:02:43 AM9/7/10
to comman...@googlegroups.com
So I need to create a separate regex for each station tailored to it's specific text?

I'm not sure how the remaining text is sequenced because (.*) doesn't capture it.

The full text as seen on the In-Wall keypad is:

    YOUR NUMBER ONE HIT MUSIC STATION 95.5 WIFC   CENTRAL WI US

But (.*) only captures:


    YOUR NUMBER ONE HIT MUSIC STATION 95.5 WI

As the keypad scrolls from right to left nothing changes in iViwer, the above text is static.


THX



To unsubscribe from this group, send email to commandfusio...@googlegroups.com.

Jarrod Bell

unread,
Sep 7, 2010, 3:09:57 AM9/7/10
to CommandFusion
Thats the exact messages coming back? I'm confused how the info is
coming in, etc.
Please give a full outline of exactly what its happening.
Im guessing more than just that text is coming back if there is any
other info it reports?

Maybe you just need to do (?msi)(.*) as your regex (to allow capturing
multiple lines of data).

Got a protocol document?

Jarrod
> ...
>
> read more »

Philip Olson

unread,
Sep 7, 2010, 3:15:36 AM9/7/10
to comman...@googlegroups.com
Cool, that's what I needed to know. I'll try it out at the shop tomorrow. I didn't realize I needed to use a special regex.

Attached is doc.

RIO Protocol for 3rd Party Integrators.pdf

Jarrod Bell

unread,
Sep 7, 2010, 5:38:04 AM9/7/10
to CommandFusion
Is the actual data coming in like:
N S[s].radioText=”<value>” ?
Thats what the protocol says, doesnt mention any 'unwrapped' data like
you are saying.

Anyway, you might find the "US" that iViewer isnt capturing in your
example just isnt even sent at all.

Jarrod
> ...
>
> read more »
>
>  RIO Protocol for 3rd Party Integrators.pdf
> 269KViewDownload

Philip Olson

unread,
Sep 7, 2010, 5:30:42 PM9/7/10
to comman...@googlegroups.com
Jarrod, I have determined only a preset number of RDS characters is being sent...bummer.

I am successfully capturing all feedback from the Russound but think I could be doing the source numbers more efficiently.

Right now I have a seperate regex for each source in each zone. For example these regex will capture source 1 and 2 respectively from zone 1.

N C\[1\].Z\[1\].currentSource="(1)"

N C\[1\].Z\[1\].currentSource="(2)"


I tried:

 N C\[1\].Z\[1\].currentSource="(1)?(2)?(3)?(4)?"

And while this works in the tester it doesn't work in program. Is there a way to do what I'm trying to do?

Thanks for the help, I'm close to done.

Philip




--

Jarrod Bell

unread,
Sep 7, 2010, 9:12:54 PM9/7/10
to CommandFusion
N C\[1\].Z\[1\].currentSource="(1)?(2)?(3)?(4)?"

That will work, just make sure you are targeting each capture group
index correctly for your digital joins.
The above regex will give you 4 capture groups. Each capture group
must reference the correct regex, and have the 'onval' set to the
number its capturing as well (if you are trying to set a digital
join).

Jarrod
> ...
>
> read more »

Philip Olson

unread,
Sep 10, 2010, 2:37:41 PM9/10/10
to comman...@googlegroups.com
Thanks Jarrod

Can I also target a serial for "current source text"?


--

Jarrod Bell

unread,
Sep 10, 2010, 9:03:28 PM9/10/10
to CommandFusion
The current source text, such as "1" or "2"? or is there another
incoming message with the source name?
Just create another feedback item, thats the easiest way.
N C\[1\].Z\[1\].currentSource="(.)"
That will capture what the source number is.

Jarrod
> ...
>
> read more »

Philip

unread,
Sep 10, 2010, 10:16:34 PM9/10/10
to comman...@googlegroups.com
Currently I have a feedback item N C\[1\].Z\[1\].currentSource="(1)?(2)?(3)?(4)?"

This is for my source buttons. I also have a room view page where each zone has a text window for current source. I tried adding an on serial match to the same regex but could not get it working. So what your saying is to create a separate feedback item for serial?
Will (.*) work though because I need to convert the source number to text, 1=Tuner for example?

Also, I think I'm going to have to do something with tokens to get this working proper. When I turn off a zone I get an OFF response which I parse to put my joins to 0. But when I turn a zone on only an ON response is generated from the Russound. I need the ON response to trigger a WATCH command so my joins update. I believe an early post today pertains to this and will try to implement tomorrow.

Philip

Sent from my iPad

Reply all
Reply to author
Forward
0 new messages