More wonkiness with combined panels
DHawthorne
Posts: 4,584
I've run across a bit of a problem, and am hoping there is some mechanism I can apply that won't require me re-wiriting a lot of code.
A customer recently asked that I give him a one-page summary of what all his systems are doing, and the ability to turn them on or off from it. The system in question consists of five masters, two of which control one-room theaters, and two more that control multiple room theater or TV's. So I made a grid showing each possible viewing station and the sources available to each. The local systems track what each is doing via channels on a virtual device, and resond to SEND_COMMANDS on the same device. These virtuals are defined on each master so they can all talk to each other. This part of it works fine. The problem is in the panel. Since this "snapshot" is going to be the same everywhere, depending on what is going on, I linked it to a single virtual device, which in turn is combined on a central master with an array of all the touch panels. As far as that goes, this works fine too. Here is what the panel looks like normally with the HD DSS on in the Basement Theater:
The problem is when a panel gets rebooted. If I update the panel file, or the network burps and a panel goes offline, when it comes back, the feedback channels on this shared page are not accurate. It's almost like random feedback channels are turned on (the following picture is from TPD4, not a live shot, the channels aren't exactly the ones that come on, this is just the general idea):
I'm guessing that the internal mechanism that updates feedback channels is only tracking their state in the virtual. This prevents it from updating them on a panel that went offline and came back again; it doesn't see they need it. What boggles me is that they don't instead just revert to the panel defaults (all off), and that it doesn't affect every channel. There are only two ways for me to synchronize them - reboot the master, or go through every system and turn ON each source that has a falsely lit button, then turn it off again.
I'm afraid I have to abandon the combine, unless there is some obscure command that will force an update. I tried uncombining that virtual and re-combining it on any online event for the effected panels, and that brought the system to it's knees. The panels went into an endless offline/online cycle; I guess there was just too much traffic generated on the network. Eliminating the combine will add quite a bit of work - this isn't the only page that is a part of that combine, I have several feedback elements using it (and they all have similar problems). I'm also not certain I won't just see the same thing if I simply talk to the array instead of the virtual (though I guess that would be the easiest to try). What I really want to avoid is needing to individually update each panel.
Any ideas?
A customer recently asked that I give him a one-page summary of what all his systems are doing, and the ability to turn them on or off from it. The system in question consists of five masters, two of which control one-room theaters, and two more that control multiple room theater or TV's. So I made a grid showing each possible viewing station and the sources available to each. The local systems track what each is doing via channels on a virtual device, and resond to SEND_COMMANDS on the same device. These virtuals are defined on each master so they can all talk to each other. This part of it works fine. The problem is in the panel. Since this "snapshot" is going to be the same everywhere, depending on what is going on, I linked it to a single virtual device, which in turn is combined on a central master with an array of all the touch panels. As far as that goes, this works fine too. Here is what the panel looks like normally with the HD DSS on in the Basement Theater:
The problem is when a panel gets rebooted. If I update the panel file, or the network burps and a panel goes offline, when it comes back, the feedback channels on this shared page are not accurate. It's almost like random feedback channels are turned on (the following picture is from TPD4, not a live shot, the channels aren't exactly the ones that come on, this is just the general idea):
I'm guessing that the internal mechanism that updates feedback channels is only tracking their state in the virtual. This prevents it from updating them on a panel that went offline and came back again; it doesn't see they need it. What boggles me is that they don't instead just revert to the panel defaults (all off), and that it doesn't affect every channel. There are only two ways for me to synchronize them - reboot the master, or go through every system and turn ON each source that has a falsely lit button, then turn it off again.
I'm afraid I have to abandon the combine, unless there is some obscure command that will force an update. I tried uncombining that virtual and re-combining it on any online event for the effected panels, and that brought the system to it's knees. The panels went into an endless offline/online cycle; I guess there was just too much traffic generated on the network. Eliminating the combine will add quite a bit of work - this isn't the only page that is a part of that combine, I have several feedback elements using it (and they all have similar problems). I'm also not certain I won't just see the same thing if I simply talk to the array instead of the virtual (though I guess that would be the easiest to try). What I really want to avoid is needing to individually update each panel.
Any ideas?
0
Comments
The timeline event would then look something like this:
{
[dvTP_ARRAY,1] = [vdvDEV,1]
[dvTP_ARRAY,2] = [vdvDEV,2]
}
Then you don't have to worry about stuff going offline as it would be refreshed depending on how often you fire the timeline.
In my experience, I found that whenever a panel comes online, you have to refresh it. All of it. Every time. And that COMBINE was not a tool you could use for any serious panel like what you are trying to achieve.
Refreshing needs to be done S-L-O-W-L-Y otherwise AXLink goes nuts. I found the limit to be about 100 refreshes and then 0.5 secs of pause or something like that. My panels have a "please wait" page as initial page. The last thing the refresh does is to move the panel to the correct page (which depends on whatever the system is up to at that time). Voila panel never shown "undressed" from user, no matter what ONLINE/OFFLINE comes around.
I found that the same code worked as well for fixed panel (to cater for the inevitable power down with the master up) than for wireless panels (for which the code was designed in the first place).
This being so common, it came to me as a surprise that AMX did not build some hooks for such a management in Netlinx.
HTH
Fred
Uh? It only takes a couple of months to write some very nice generic mechanism :-)
Fred
Perhaps a compromise, and a new port just for this is in order.
By section I mean: Theater Room / Security / Lighting / etc.