alx9r Posted September 13, 2012 Posted September 13, 2012 Denon AV Receivers have an official control protocol. (in case that link goes dead in the future, google for "Denon AVR control protocol"). While the protocol document references a particular model of Denon receiver (AVR-3808CI), the protocol seems to work the same for both models that I have tried to control (AVR-2808CI and AVR-2113CI, purchased 5 years apart). The protocol document reads like an API spec. Therefore, I expect Denon to maintain a level of consistency for this control protocol across different models. The commands (but not the connection details) are also the same for both RS232 and Ethernet. As a reference, this is the protocol that the LinuxMCE project uses to control Denon receivers. Enough front matter already... How to Create a Network Resource That Sends a Command to an AVR from an ISY994i Things you'll need that I won't document here: [*:3366dip0] the ISY994i network module[*:3366dip0] get to the ISY994i's Admin Page->Configuration->Networking->Network Resources tab[*:3366dip0] the IP address of your Denon AV Receiver Find the command you want from aforementioned control protocol document. In this example, I will be using the "ON" "PoWer" command which is the string "PWON" followed by carriage return (i.e. the C escape character '\r'). Create a network resource with the following configuration: Protocol: TCP Host: Port: 23 Timeout: 100 ms Mode: C Escaped Body: "PWON\r" (without the quotes) Click Update, Save, Save again, select the resource and click Test. Any other command that your receiver supports can be put in the body. Make sure you remember the '\r'. For example, volume up becomes "MVUP\r". Enjoy.
Michel Kohanim Posted September 13, 2012 Posted September 13, 2012 Hi alx9r, Thanks so very much for your contribution. With kind regards, Michel
jakekooser Posted September 22, 2012 Posted September 22, 2012 Thanks for figuring this out! This has been one of my greatest wishes but I didn't have the ability to figure it out on my own.
io_guy Posted October 22, 2012 Posted October 22, 2012 Yes, you just need the network module installed.
JSP0511 Posted November 30, 2012 Posted November 30, 2012 I am not sure I follow what you are trying to do. Are you setting up a switch or a program to be able to turn your Denon receiver on? Can I do this with my Denon AVR-1912?
jakekooser Posted December 30, 2012 Posted December 30, 2012 JSP0511, That is exactly what this does on the most basic level. I now use my ISY to turn on my AVR-1912 as port of my morning program that starts my coffee pot. If you do a little exploration, nearly every command for the AVR is available. I kept it simple, turn it on or off with my alarm being set, shut down when going to bed, lower the volume when my slug is announcing the weather forecast in the morning. it's a very simple thing, but it makes a huge difference.
dpaget21 Posted October 15, 2013 Posted October 15, 2013 Thanks for help on this topic. I am able to use some of the commands but not others. Specifically setting the channel of Sirius. I am trying to use the command TFXM071 and I am inputing the command TFXM071\r in the Body Any help would be great!!
tibbar Posted April 17, 2014 Posted April 17, 2014 Hello. I'm tring this with AVR-3312ci but no luck. Anybody willing to help. It is the only reason I just purchased network module. Thanks.
tibbar Posted April 18, 2014 Posted April 18, 2014 I've figured out the problem. I'm using Vera3 for my zwave door locks and thermostat and I had a Denon plugin running Which is using telnet ( I guess) and could not connect to denon with Isy. As soon as I shot down Vera everything was good.
trevorst Posted April 25, 2014 Posted April 25, 2014 I've figured out the problem. I'm using Vera3 for my zwave door locks and thermostat and I had a Denon plugin runningWhich is using telnet ( I guess) and could not connect to denon with Isy. As soon as I shot down Vera everything was good. That is because the Denon will only allow one connection at a time, so the first app running gets the connection. There is another method of controlling the Denon that connects via http that allows multiple connections. This is the method that the Denon iPhone app uses, however they have not published the Api.
someguy Posted May 28, 2015 Posted May 28, 2015 I used this today and it was very helpful. The important things for me were: the 100 msec timeout and realizing that the script that was running on my old Redeye (network remote control device) was clogging up the Denon receiver and as soon as I unplugged my Redeye it solved most of my problems. thank you for your time Alx9r.
ccclapp Posted February 27, 2016 Posted February 27, 2016 Hi As you guys are experienced with ISY -> Denon control, I'm wondering if you can answer the following: Can one specify the amount of volume increase or decrease, or is increase /decrease always by one unit? I know I can set an absolute volume,but am trying to send increase decrease volumes but they only increment by one. This means I need to send repeated network commands from ISY and it takes a very long time for the response cycle to for example increase volume by 10. I've tried adding a number after the volume up/down command and have not succeeded. Can this be done? Thanks
Michel Kohanim Posted February 28, 2016 Posted February 28, 2016 Hi ccclapp, Aren't there volume up/down commands? With kind regards, Michel
ccclapp Posted February 28, 2016 Posted February 28, 2016 Hi ccclapp,Aren't there volume up/down commands?With kind regards,Michel yes there are, but the command increases/decreases by one unit, an amount which is so small as to be hardly audible. Therefore one has to repeat the command at least 10 times flooding both Isy and the denon
danbutter Posted February 28, 2016 Posted February 28, 2016 (edited) Not sure of the exact model you have and whether or not this is applicable, but you could try this. Look at the pic which is a snip of the service manual for AVR-3312CI/AVR-3312. Your command would be MV40 if 40dB was the level you wanted. Not sure if this is what you meant by absolute volume. Hope this helps Edited February 28, 2016 by danbutter
ccclapp Posted February 28, 2016 Posted February 28, 2016 DenonVolumedB.PNG Not sure of the exact model you have and whether or not this is applicable, but you could try this. Look at the pic which is a snip of the service manual for AVR-3312CI/AVR-3312. Your command would be MV40 if 40dB was the level you wanted. Not sure if this is what you meant by absolute volume. Hi Dan. Thanks Yes that is what I meant by "absolute volume", which can be done just as you say. Its "relative volume", i.e increase/decrease that is the issue. If you invoke Volume Down, it changes by 1 unit ie goes from 40 to 39. That level of volume change is barely audible so as to make that function useless because you cant send enough repeats fast enough to be functional...60 seconds holding a button doesn't cut it with Mrs. I've searched here, AVS, Remote Central etc and not found a way to do: "increase by 5db" etc. Because I am doing this on a keypad it looks like I have two options: 1) Use a Global Cache to convert back to IR with required repeats built into the command, or 2) Test IsyHelper for this. IsyHelper (IH) enables the ISY to interface w my Harmony Hub. If I can create the command in Harmony with enough repeats sent by Harmony that would work too. Two issues here: i. Harmony seems not to permit device level macros and has very limited repeates at the device level, only custom button press assignments can be macros, which IH may or may not interface with and, ii. will IH/RPi be stable enough for this unattended location vs Global Cache. Thanks for your thinking and effort. The search goes on...
alx9r Posted February 29, 2016 Author Posted February 29, 2016 ccclapp, I can confirm that I have found no way to implement volume up/down commands in greater increments than 0.5dB. That increment is too small to be useful when dispatching user-invoked volume commands using the ISY because of the delay introduced by the ISY. As a workaround, I have a list of about 10 separate network resources each with its own volume level (eg. MV13, MV16, MV19, MV22, MV25, etc) that are invoked by ISY programs as the user selects different volume levels. The many-network-resources method works. But it is rather laborious to implement, and the ISY is slow to execute it. (I'm guessing it's slow because it evaluates all 10 'if' statements each time the volume is changed, but I don't have any way of proving that.) I think the correct way for ISY to implement this sort of control is to interpolate variable values into strings transmitted by network resources. IIRC there was once talk about a future firmware version supporting string interpolation in network resources, but I haven't kept up with that progress. Best Regards, Alex
ccclapp Posted February 29, 2016 Posted February 29, 2016 ccclapp, I can confirm that I have found no way to implement volume up/down commands in greater increments than 0.5dB. That increment is too small to be useful when dispatching user-invoked volume commands using the ISY because of the delay introduced by the ISY. As a workaround, I have a list of about 10 separate network resources each with its own volume level (eg. MV13, MV16, MV19, MV22, MV25, etc) that are invoked by ISY programs as the user selects different volume levels. The many-network-resources method works. But it is rather laborious to implement, and the ISY is slow to execute it. (I'm guessing it's slow because it evaluates all 10 'if' statements each time the volume is changed, but I don't have any way of proving that.) I think the correct way for ISY to implement this sort of control is to interpolate variable values into strings transmitted by network resources. IIRC there was once talk about a future firmware version supporting string interpolation in network resources, but I haven't kept up with that progress. Best Regards, Alex Thanks Alex. I've come to the same conclusion (strange that Denon would not have this as it limits the entire IP control of denon). Your vol preset approach is viable, but if using a KP or mini-remote, etc that takes up a lot of buttons. I came up with what I feel is a very good solution, but it involves adding a Global Cache and sending VolUp/Dn IR commands with repeats built in. I have one for small change (button presss), for which GC sends 2 repeats and another for mid change (button hold), for which GC sends 6 repeats. Both of these are single ISY->GC commands and the GC has no issue with the repeats and Dennon no issue in receiving them (just as is a remote volume button hold). I give some more detail in the GC thread on this forum here: http://forum.universal-devices.com/topic/4810-the-global-cache-wf2ir-works/?p=169036
alx9r Posted February 29, 2016 Author Posted February 29, 2016 ccclapp, You only need to devote two keypad buttons (volup/voldn) to get this working. Here is the overview of how I implemented this: keypress events are received by the ISY and increment or decrement any ISY state variable and limit the valid range of that state variable to, say, 0-9 create 10 network resources, each of which transmits a particular value of MVxx create 10 programs each of which has a condition that is true for exactly one valid value of the state variable, and each of which invokes the corresponding network resource. Example in Action Supposed the state variable is currently "2", and you have decided to map "2" to "MV20" and "3" to "MV30". Now suppose a user presses your "VOLUP" keypad button. One program senses the "VOLUP" keypress and increments the state variable from 2 to 3. Another program has a conditional that is true only when the state variable is 3, so that program executes its 'then' block which invokes a network resource that transmits "MV30". The net result is that pressing "VOLUP" just incremented the volume from "MV20" to "MV30". The same concept applies for all 9 other values of state variable and MVxx What I am Doing FWIW, I have this working in this way at my house. It works well for A/V zones where dynamic volume is enabled, since the user rarely (read: almost never in my house) has to change the volume manually in those zones. When those zones turn on, my ISY programming pre-selects a likely volume based on time-of-day, what caused the zone to turn on, and in the kitchen for example, whether the range hood is cranking. Without dynamic volume, no amount of automation will help you because the user will have to ride the volume constantly to maintain comfortable a volume. That's fine for the home theater, but impractical everywhere else. In summary: For the home theatre zone I disable dynamic volume and provide a delay-free IR path between an IR remote and the receiver. This works because you get the full dynamic range of volume and users like the responsiveness of the delay-free volume control. For other zones, I enable dynamic volume to almost eliminate the need for volume adjustments. Then I provide keypad volume controls à la the method I describe above. Because volume adjustments are rare in these zones, users are fine with the delay introduced by Insteon and ISY. For still other zones, I don't even provide keypad volume controls because the dynamic volume works well enough. Hope that helps, Alex 1
ccclapp Posted February 29, 2016 Posted February 29, 2016 ccclapp, You only need to devote two keypad buttons (volup/voldn) to get this working. Here is the overview of how I implemented this: keypress events are received by the ISY and increment or decrement any ISY state variable and limit the valid range of that state variable to, say, 0-9 create 10 network resources, each of which transmits a particular value of MVxx create 10 programs each of which has a condition that is true for exactly one valid value of the state variable, and each of which invokes the corresponding network resource. Example in Action Supposed the state variable is currently "2", and you have decided to map "2" to "MV20" and "3" to "MV30". Now suppose a user presses your "VOLUP" keypad button. One program senses the "VOLUP" keypress and increments the state variable from 2 to 3. Another program has a conditional that is true only when the state variable is 3, so that program executes its 'then' block which invokes a network resource that transmits "MV30". The net result is that pressing "VOLUP" just incremented the volume from "MV20" to "MV30". The same concept applies for all 9 other values of state variable and MVxx What I am Doing FWIW, I have this working in this way at my house. It works well for A/V zones where dynamic volume is enabled, since the user rarely (read: almost never in my house) has to change the volume manually in those zones. When those zones turn on, my ISY programming pre-selects a likely volume based on time-of-day, what caused the zone to turn on, and in the kitchen for example, whether the range hood is cranking. Without dynamic volume, no amount of automation will help you because the user will have to ride the volume constantly to maintain comfortable a volume. That's fine for the home theater, but impractical everywhere else. In summary: For the home theatre zone I disable dynamic volume and provide a delay-free IR path between an IR remote and the receiver. This works because you get the full dynamic range of volume and users like the responsiveness of the delay-free volume control. For other zones, I enable dynamic volume to almost eliminate the need for volume adjustments. Then I provide keypad volume controls à la the method I describe above. Because volume adjustments are rare in these zones, users are fine with the delay introduced by Insteon and ISY. For still other zones, I don't even provide keypad volume controls because the dynamic volume works well enough. Hope that helps, Alex Alex, Very elegant!! Ok, you're way up on me. I will circle back on this when all else is running well. FYI, so far, I find I often change volume even when my environment has not changed, eg when working w various levels of concentration vs interest in whats playing. Listening to Kitchen TV to hear dialog at points and not others. A lot of my use will be via KP on initial entry and some modest changing thereafter (if easier to hit KP than remote). My desire for initial and changes are not routine/environmental. More about mood, company, what Im doing. Moreover, I intend to use several mini-remotes (the tiny insteon 8 button pocket KPs) at the dinner table, bedside, desk, pocket. Most will be room specific and do normal source/volume/lights separately (not as a watch TV scene, but will likely have default start points per source). Some will be more "universal" with folder/variable activation code to control the whole house on those 8-buttons-in-a-pocket. The "activation code" would set the zone and/or control type and be consistent thereafter (so I dont need to remember much). With that streamlined, ill investigate "dynamic control". Sounds cool. I like your progressive volume scheme. Again, I will very likely implement that (state-machine) approach after my fairly smooth and fairly east to do initial solution. Thanks for sharing this!
Tuckerdude Posted December 12, 2017 Posted December 12, 2017 Hi Guys...I came across this thread yesterday and got pretty excited. I managed to get my Denon AVR-X6300H Tuner working with the methods described here. So now, I'd like to take the next step and add it to my Mobilinc dashboard. But I can think of an obvious way to assign a control to it. It would be great if I could just click on the control and toggle the tuner on and off. Is this possible? I will confess, I've not had the best luck with programming the ISY except for a few very basic things. Any help would be appreciated! Attached is a screenshot from Mobilinc running on my phone. Thanks for making this information available...I'd love to really dive in and extend the capabilities of my system!
Recommended Posts