Being able to control my new media player is nice, but of no use at all if the AV Receiver the player is connected to (along with a Cable STB and a Playstation) cannot be controlled. I wanted to have the same wired control for my AV Receiver as I have for my media player and searched the net for a suitable model with all the right specs. Both Denon and Onkyo (and probably more, but those are my favorite brands) have the ability for controlling some of their Receiver models with a RS-232 port and both have reasonably well documented proprietary protocols.
The new Onkyo TX-NR709 I bought recently is also equipped with a RS-232 port (what a surprise :-)), so this makes controlling the whole set of A/V equipment complete: TV, Dune media player, AV Receiver, Cable STB are all under control of my Domotica system; either wired or by IR (IrTrans). After I bought the receiver, I found out that the Onkyo is not only controllable by means of the Serial RS232 port, but that the Ethernet connection can be used for this purpose as well. The Serial protocol (called ISCP) and the Ethernet version (eISCP) look very much alike, in a way that it should be possible to support both protocols in one go without much extra work. The Ethernet version has some extra header bytes, a data length and a version byte added to the ISCP Message, that’s all; the ISCP message stays the same.
But why should I want to support both? Well, it seems not all receivers are that good at keeping power consumption at an acceptable level when network control is enabled. The Onkyo NR709 user manual says: “enabling network control will slightly increase power consumption in Standby mode“; right, we’ll see what “slightly” means, considering this receiver can consume 570W. If the difference between with or without network control is too big for my taste, I’ll go for RS-232 (only if this can compensate for the extra Serial Ethernet Server running 24/7 ;-)) I have all of my power usage monitors in use while I’m writing this, so I’ll have to test this power consumption issue later; for now, it won’t hinder development and testing of the interface; I can make the choice between RS-232 and Ethernet later.
The nice thing about the (e)ISCP Protocol is that there are different ways to control the Receiver; for instance, the Muting Command has 3 values with which you can control it: on, off and toggle. Why’s that so convenient? Because with this, there’s no need to track the receivers Muting state in my own Domotica system. Without the toggle option built into the protocol, I would have to track Muting state if I would like to have a single “Mute” button for a GUI, cause I (read: my system) don’t know what the user wants to do; mute on or off? I’ll have to know the current mute state to send the right mute command…
With the on, off and toggle options I can switch muting on in case of an incoming phone call, off again at the end of that phone call, but also create that single mute button on the GUI as well, all without the need for tracking everything I want to control. Of course, this is not the complete story behind something ‘simple’ as controlling mute; it’s very easy to come up with scenarios where things can still go wrong… there’s always that user, constantly interfering and overriding things 😉
After a few hours of defining all the commands that are supported by the (e)ISCP protocol, I could do my first tests today. I started with testing the Master Volume Command (“MVL”). Nothing really spectacular actually; I pushed a button and the Master Volume went up; pushing another button made it go down again, just as I expected. No, the really cool stuff happened when I went to the living room and manually turned the Master Volume knob; I saw incoming eISCP packets containing the new, manually set Master Volume! Wow, this is real 2-way communication! Nice surprise, I missed that one 🙂
This means I’ll be informed of everything that’s happening without the need for polling; this is what I really wanted but didn’t expect to get! Now, when someone selects the tuner on the Receiver (no matter how), I can switch off those devices which are not needed for listening to the radio – the TV, the Dune and the Cable STB. Or switch off the Dune media player when watching cable TV. Ow yeah 🙂
Darn, I don’t have discrete IR codes for my TV; no wait, haha, I don’t need those discrete codes anymore! Since the TV is Ethernet connected, I can ping it (another small project I’m working on) so I do know whether the TV is on or off…
Long live integration!