Page 3 of 4

Re: New Marantz TCP Control Plugin

Posted: Wed Jan 11, 2017 3:07 am
by kgschlosser
ok so we now know the forwarding works properly... I need to know if the multithreaded receiving works as well.. to test this you will need to make a second connection to the "Echo Server". And if successful that is a HUGE step with solving a problem that has been an issue with these pieces of equipment. I would also like to know if the IOS app or android app will also connect to it. I do not know if you are able to set the IP address in them. I am curious to know.

and how is the speed as well. there shouldn't be a whole lot of latency... I would hope there isn't anyways.

Re: New Marantz TCP Control Plugin

Posted: Wed Jan 11, 2017 5:26 am
by kkl
OK, doubleplusgood. PC3 is able to connect to PC1 and PC2 (with Echo Server enabled). All events appear to be mirrored, without any noticable lag. There are a bunch of events that keep repeating, even when nothing is happening.
That probably needs to be controlled somehow.

The Android app appears to only be able to connect to the AVR directly. I tried manually adding the PC1 IP, but got an error. I don't know that the app uses telnet. There are undocumented HTTP commands that it might use. The app and plug-in don't lock each other out. The app does cause a bunch of events to be generated when it connects.

I think you've done it. :D

Re: New Marantz TCP Control Plugin

Posted: Wed Jan 11, 2017 8:57 am
by kgschlosser
that crap will get fixed... it's showing communications between the android app and the AVR. because the app does not use telnet. but it is nice to know that the multiple connections work properly.

I have 80% of the events done and 100% of the Actions. all i have left is doing up some nice event names for all the surround modes. and the HD radio status stuff

but here is what i have so far if you want to look.

all 1700 lines just for the actions and events LOL

what is nice is because of how i did up the actions. a simple call to self.AddActionsFromList(ACTIONS) will do the dirty and add all the actions.

Re: New Marantz TCP Control Plugin

Posted: Wed Jan 11, 2017 11:27 am
by kgschlosser
what's odd is the things you show in the screen shot have absolutely nothing to do with the plugin. i just skimmed it really fast but none of the events look anything like the data in the API.

there are no commands or responses that begin with SS or OP. did you happen to have the android app connected at the time this was happening??

I am wondering if these are messages generated from that.

and as far as the HTTP method. there isn't even 1/4 of the available commands that are available from IP/serial.

Re: New Marantz TCP Control Plugin

Posted: Wed Jan 11, 2017 4:01 pm
by kkl
kgschlosser wrote:what's odd is the things you show in the screen shot have absolutely nothing to do with the plugin. i just skimmed it really fast but none of the events look anything like the data in the API.

there are no commands or responses that begin with SS or OP. did you happen to have the android app connected at the time this was happening??

I am wondering if these are messages generated from that.
Yes, you're absolutely right. Those events only occur when the app is connected.

I did find several mentions of undocumented Denon commands. A Denon control program called command3808 lists a few of them (OtherCommands.txt):
SSFUN ? - Source names
SSSPC ? - info about speaker settings
PSCHN ? - speaker channel info ??

SSINFAISSIG ? - audio input signal (analog, pcm, etc.)
-- 01 = analog
-- 03 = dolby digital

SSTPN ? - preset info (tuner)
SSXPN ? - preset info (XM)

Re: New Marantz TCP Control Plugin

Posted: Thu Jan 12, 2017 3:13 am
by kgschlosser
let us first get the plugin fully running. then add any additional commands afterwards. the next step is a heap load of work. I have to code out something to get the events. but also deal with the user input for specific actions. and because of the use of dynamically created actions it gets tricky. because there is only one action class that handles every command. so i have to make it so that a config dialog will be viewable for actions that require user input. but i also have to validate anything that is entered for number of input characters as well as character type. and this has to change dynamically with each action that requires user input. so..... that's where i am at

Re: New Marantz TCP Control Plugin

Posted: Thu Jan 12, 2017 7:43 am
by kgschlosser
OK. there is still alot more work needed. But I have all of the actions in place (still going to need some testing). as well as the events..

I set up a telnet server to do some basic tests and it does the conversions from user entered numbers to AVR commands as well as vice versa.

There are still a lot of events that have not been finished up.. about 80^ of the sound modes are left. and the HD radio crap.. but that is pretty straight forward. just a long boring process of keying those long ass sound mode names.. LOL

I do not know how the stuff with the volume will work as of yet. i do not know if the AVR needs to see a - in there or not. but from what the API tells me is that it doesn't..

on the event generation side of the volumes I am going to have to add a special catch to that so it will add the - in there. and i want to also make it user changeable to do a 0-100 conversion on it.

just a note... do not have EG in debugging mode when you install this.. it will flood the file as well as the log (EG 0.5) with more then 3000 items. it's compounded by other debug entried when making the tree items...

I also think you will find the way the auto loaded macros are organized. so i do recommend uninstalling the plugin if you already have it installed because it will not want to load the sample macros unless it's a fresh install..

I am also going to be adding a means to bring up a series of menus to select a specific key instead of having to go through searching the add action dialog for the command... i want to make it searchable as well.. maybe an autocomplete

big version jump on this one... added a whole slew of things. the Remote Input thing is not functional yet. you will see actions for that as well. they don't do anything at the moment. but they will function like i had explained before.. drag and drop the numerical remote control presses (a remote you have set to work with EG) into the Remote input number actions.. set a toggle button for youself..

when you press the toggle button and then press another key like channel up or volume up. it will lock the plugin into an input mode. and pressing the numerical keys will enter say a specific volume.. if you press the toggle button again it will cancle the command. but if you are done entering and press the same button you used to enter the mode. it will send the command and exit the toggle mode.

this is the best way i could think about setting up those kinds of key presses. I am going to do something similar with the menus as well.. this will allow for double programming of remote buttons so if a menu is open the whole remote layout will automatically change to controlling the menu. and when the menu is closed. it will change back.. no need for the user to set up any complicated scripts for this.

as an example... play in normal mode would play some music or whatever.. so you would drag and drop the event for the play button on your remote to the play action for the AVR.. but say you also want play to bring you to the next page of a menu.. just drag and drop the event to the menu next page action.. and that is all you will have to do...

as soon as you open the menu (whether it is from a button on the physical AVR, or the original remote) the button mapping on the EG remote will change.

I do not like to base things like this off fo actual button presses. because if by change the AVR does not get the message. the remote gets out of sorts. so it will only change the mapping upon receiving a response from the AVR.. this is the smart way to do things.

I am going to also make an action that will not be an action it will be for storage. for things like power states and mute states current volume. this is how I have my AVR set up. so if i need to access any of the information it would be something like this...

Code: Select all

volume = eg.plugins.MarantzAVR.States.VOLUME
that's in the future..

but the egplugin file is attached. and have fun. please do make a list of all problems you run across... it's best to copy and paste into a text file for me.. make sure the different issues are spaced apart by 5 empty lines or so. if there is a typo and you can copy and paste it.. do that..

tracebacks.. same deal goes as well..

anything you come across will help to make a better plugin..

this is a complete command set for the Marantz AVR's and I will be adding any oddball Denon codes as well..

Re: New Marantz TCP Control Plugin

Posted: Thu Jan 12, 2017 10:10 am
by kgschlosser
OK so here is yet another release. I added Serial connections as well and it will forward from a client connected to EG over IP to the serial port and from the avr connected to serial to the client over IP

I also started some code organization as that can get out of hand if not kept in check. so i have split this into more files.

I also changed the class Name as it now does serial as well.. I changed it to Marantz

this should require no changes on your end as the actions are dynamically generated the class names with move with them.

attached is the egplugin file

Re: New Marantz TCP Control Plugin

Posted: Fri Jan 13, 2017 5:52 am
by kkl
I've just barely scratched the surface, but wanted to give you what limited feedback I have. You probably already know about most of this.

Receiver changes volume in 0.5 dB increments, so 47.5 generates an "Unknown message, 'MV475'", whereas 47 gives an expected event.

"Unknown message, 'MVMAX 98'" is generated for nearly every volume command. Not in the spreadsheet; appears to be another undocumented event. Unknown 'CVEND' also occurs frequently. That appears to be a valid response to CV?, although I didn't issue that command.

Biggest problem appears to be that responses are getting bottle necked somewhere along the way. Some events are coming out asynchronously to the commands. As example, command is "Main Zone Source DVD", repeated once, then multiple commands of "Zone 2 Auto Standby Status". Each of these status commands generates a single non-sequitur response. The event for "MainZone.Source.DVD" doesn't occur until after many intervening commands and responses.
Another example, "Main Zone Volume Status" issued multiple times in a row. Expected response for the first two, then more non-sequiturs. Finally, the Auto Standby Status spits out from many commands earlier:
Issuing a command that requires an input yields a traceback error.

The good news is that the main functions work. It's just some of the oddball responses. Lots more to check.

Re: New Marantz TCP Control Plugin

Posted: Fri Jan 13, 2017 7:17 am
by kgschlosser
OK #1 thing is that you have to remember that if you issue a command the AVR may perform multiple functions... depending on what it's doing..

so as an example...

you changed the volume... and what happens when you change the volume.. it gets louder.. and the AVR may make some adjustments to things dpeneding on what equipment you have so if it detects distortion on a specific channel it may drop the volume for that one specific channel.. who knows! LOL

and CV is Channel Volume
and CVEND is the end of that..

You will get events for Everything..and I do mean Everything...

now an event is something the AVR may just spit out at any random time for absolutely no reason... well it would appear this way... but while the AVR is on it does internal things and checks on the various states... Like source inputs and things of that nature... That data storage i mentioned a couple of posts ago is the solution to this... because it will store anything that has come out and if it has changed then it will process and event...

yeah I know about the volume as well... dumdum's that made the API sheet put MV** as the event not MV***
and we may find more of this IDK

so this is how it goes...

you have a COMMAND... which is what you send to the AVR. and by doing that it will cause the AVR to generate a RESPONSE. But you also have EVENTS that the AVR will produce these come out at any time.. so for example... if you walk over to you AVR and turn the volume knob or change the input... you did not send a COMMAND to the AVR so it will not generate a RESPONSE. but you will however see that there are events that happened.

This is an absolutely wonderful thing.. for things like... If you are a parent and are going out for the night and do not want the kiddos messin with your Home Theatre... doesn't matter if they press the power button on the front of the AVR or not.. you can program the thing to turn it right back off

Or how about this...

if you select HDMI1 on your AVR by pressing the button on the front...
it can turn the TV on and turn on whatever it is you have connected to HDMI1. and have it set the volume and lighting.. and if there is a disc in for instance... play whatever it is that's in there... and all without even the need for the remote!

sometimes you are just so friggin tired and don't want to have to hunt through the sofa for the remote... and it's easier just to walk up to the thing and press the power to shut it off. but then you have to go to the TV and turn that off as well.. well if you have your TV connected... pressing the power button on the AVR will generate an event and off that event you can tell it to turn the TV Off
Night Night... LOL

Mine is set up so that if i turn the TV On it will turn on the AVR and if i turn the TV Off. if and only if my HTPC is watching TV or playing a movie will it shot off the AVR. if i am listening to my mp3's or have some internet radio going it will leave the AVR on

and if i turn the AVR on or off only if the AVR is set to a video source will it turn on or off the TV. or even if the AVR is on and then i change to a video source and the TV is off it will turn it on.

Re: New Marantz TCP Control Plugin

Posted: Fri Jan 13, 2017 7:22 am
by kgschlosser
and they have also change the API a bunch of times in the last 6 years. and the newer sheets don't reflect what the older events were.. I don't know how old your AVR is or if you have updated the firmware on it.. but i would recommend doing so because this will bring the command spec up to the latest.. which i don't even know if that sheet you attached is the latest.. I don't believe it is.. I believe it is like one of the first ones Out.. I have to go and see if i can find a more recent one.

I know i stumbled across one from 2014..

and there are also different commands for different regions of the world.. it's batty.

Re: New Marantz TCP Control Plugin

Posted: Fri Jan 13, 2017 7:49 am
by kgschlosser
It seems as tho we may have some kind of an AVR conflict. The command/event sheet may not line up with a Denon AVR.

what I am going to do is build in some kind of a debugging routine that will save all the incoming and outgoing data to a file along with any events that were chosen as well as any forwarding of data. so we can see what is going on.. because if you have an app on a phone that is requesting data all the time. it would cause something like this...

if you have any apps installed that are accessing the AVR.. shut the device off.. see if they stop...

I am going to do that debug as well as getting the data storage built... because that will eliminate all events unless something has changed

Re: New Marantz TCP Control Plugin

Posted: Fri Jan 13, 2017 5:36 pm
by kkl
I don't think I described the problem well enough. I understand that the AVR can generate many events from a single action and that they may spit out at any time, and the power of events to trigger other actions. What I'm observing is a VERY LONG time between a command and its response. For example, after the AVR had been left alone all night, I issued a "Main Zone Source CD" command at 0820 this morning. The events that followed were the results of the Zone2 Standby Status commands issued over 9 hours earlier:
Now, since the change to CD input didn't show the expected response, I started issuing "Main Zone Source Status" commands every few minutes. The acknowledgment of 'MainZone.Source.CD' did not occur until 0835, 15 minutes after the command was issued.
I don't know the source of these delays; I'm just reporting my observations. I suspect that the problem is cumulative. It doesn't seem to happen right after the plug-in is started, but gets worse with time.

The spreadsheet I provided is the current version, updated on July 15, 2016, as it covers the 2016 x300 receiver models. I have a AVR-X3200W (x200), a 2014 model, with updated firmware. Attached is the prior version, dtd July 8, 2014.

Re: New Marantz TCP Control Plugin

Posted: Fri Jan 13, 2017 6:11 pm
by kgschlosser
let me hammer out the debugging bits and create that storage. and i will send that up to ya. i need to figure out what's going on with this thing...

because what it seems you are telling me is that this thing is and from the images is that it's firing off it's own actions. idk how or why it would do this. but even more so i do not know how it would show up in the log if it was.

and also you do not have to do screen shots all the time...

turn on the time stamps for the log and copy and select the log entries and paste them

Re: New Marantz TCP Control Plugin

Posted: Fri Jan 13, 2017 7:16 pm
by kgschlosser
I also wanted to make sure you know this... even tho the plugin has the automatically created commands. there are config dialogs for them. not like the old pluigin. so if there is an action that is an "Input" action you can bring up a dialog it will have some blank fields and will limit you to the specific number of digits that can be entered into each field. and it will only enable the test and OK buttons if all fields are filled in

the fields have no labels but you get the point..