IntelliCenter Web Client and its Possible Alternatives

MyAZPool

Gold Supporter
Jul 3, 2018
1,419
Arizona
Recently, I have been giving the topic of the IntelliCenter Web Client and to a lesser degree, the iOS mobile app, a lot of thought due to some questions and comments online here from other members, concerning the web client. And especially in light of the current and ongoing issues related to the SCHEDULES page (to include the inability to edit schedules) within the Web Client, the overall lack of a quality appearance and sub-par functionality of the Web Client, and in my opinion, just its overall “clunkiness”.

I decided I was going try and put some of those thoughts down here, and see if I couldn’t raise my blood pressure a bit when I get to the parts regarding the IntelliCenter Web Portals’ lack of reliability, lack of a streamlined appearance and functionality and general lack of overall quality in my opinion, to serve the intended purpose to the increasing number of IntelliCenter users.

Background: As most IntelliCenter users are aware, there are two primary means of communicating with the IntelliCenter Control System remotely. The Web Client and the iOS or Android app. Although these two methods accomplish the same goal (or should), there is one big difference between how the two can provide the user with a means of communicating to the IntelliCenter Control System remotely and I will examine both and the advantage that one of those means provides the IntelliCenter user.

1. Web Client: The IntelliCenter Web Client is nothing more than a method of communications between the users’ PC/Mac, to the Pentair servers via the internet, while utilizing a web browser (IntelliCenter).​
Since the IntelliCenter Web Client communicates via the internet to the Pentair IntelliCenter servers, it does NOT communicate to the IntelliCenter Control System directly. The control system communicates directly to the Pentair servers and then the user communicates to those servers via the Web Client.​
This method of connectivity between the users’ PC or Mac and the IntelliCenter Control System, introduces two major “points-of-failure” to the connectivity equation as outlined below.​

  • Internet Outage: Internet outages can be caused by many factors and are too many to list here. But just for purposes of discussion, for whatever reason: the user is unable to receive internet service from their service provider.
If this lack of internet service is present, then the IntelliCenter user will be unable to communicate with their IntelliCenter Control System via the Pentair servers from the users’ PC/Mac.​
  • Pentair Web Server Outages: Again, there several reasons that the Pentair servers may experience server “downtime”. But for whatever reason, once again - the IntelliCenter user will be unable to communicate with the IntelliCenter Control System via the Pentair servers from the users’ PC/Mac.
Now, when it comes to communicating to the automation control system from the users’ PC/Mac, here is where I believe that the ScreenLogic2 based automation control systems (EasyTouch/IntelliTouch) possess a big advantage over how the IntelliCenter user communicates to their control system, in my opinion.​
The ScreenLogic2, is an actual application which is downloaded to the users’ PC/Mac from the Pentair Software Downloads portal. Once downloaded, the application then resides on the users’ desktop/laptop.​
All of this simply means that the Screenlogic2 app that resides on the users’ desktop or laptop, allows that user to communicate directly to the users’ automation system “locally”, or within the user’s local area network (LAN) via IP address from the users’ desktop/laptop to the ScreenLogic2 protocol adapter. The protocol adapter then utilizes a 4-lead hard-wire or a wireless connection, to the EasyTouch/IntelliTouch control panel to complete the “direct” connection).​
The two big advantages with ScreenLogic2 is that:​
(a) The ScreenLogic2 user can communicate directly to their automation system from their desktop/laptop within their own LAN, without any need for internet connectivity. This advantage removes one point-of-failure that currently exists in how IntelliCenter users communicate to their automation control system.​
(b) The ScreenLogic2 user has no need to communicate through any “middle-man” web servers, in order to access their automation control system. This advantage removes the second point-of-failure.​
I believe that I fully understand, why Pentair choose to go the route of the Web Client versus staying with the desktop app and I’ll list just a few here. These are just my own opinions as I have no “inside” information relating to Pentair’s philosophy regarding this topic.​
  • No Download - With the Web Client, there is nothing to be downloaded or installed.
  • Centralized Updateability – It’s much easier to update a web app that resides on centralized web servers.
  • Maintainability – The Web Client uses a common codebase regardless of machine type. In other words, utilizing a Web Client, it could care less what operating system is being used by the operator’s machine, i.e. Windows, MacOS, Linux etc.
While the points listed above may be advantageous for Pentair, they may not be so good for the end (IntelliCenter) user.​
In my opinion, If Pentair would do a much better job with regards to the quality of their IntelliCenter user web-portal (IntelliCenter), then things might not be so bad. If that were the case, then the only big dis-advantage to the Web Client that still remains, is the fact that the user is still at the mercy of both the internet and Pentair web server reliability.​
2. iOS or Android Application (App): Here, there is the one big difference that exists between the Web Client and the mobile app (besides the fact that the mobile app is extremely “mobile”). The mobile app actually resides on the users’ mobile device versus an application residing on remote servers. You download the app from either the Apple or Google Play Store (as applicable) and the app now resides on the users’ mobile device.​
Essentially, what that means is that if you are home and the internet goes down, and/or the Pentair servers are offline for some reason, you can still communicate directly with your IntelliCenter Control System via your mobile device thorough your router using your IntelliCenter Control Panel IP address and password which is stored within in your mobile app once they have been entered the first time. There is one more scenario that exists with regards to VPN but I’ll leave that alone for the time being.​
2020-02-23_22-51-37.jpg
For an iOS mobile device, this is done by tapping the Connect to a local pool when you open the app.​
2020-02-23_22-53-21.jpg
And then tapping the blue Connect button on the next screen that opens.​
And you are now communicating directly with your IntelliCenter Control System.​
For an Android mobile device, tap the Connect to Local IP. You will then need to enter your IntelliCenter’s IP address, (i.e. 192.168.1.30).​
2020-02-22_13-55-15.jpg
You only need to enter the IP address of the IntelliCenter control panel the first time that you choose to connect locally. After that, the field will auto-populate.​
Tap OK.​


Clarification: There has been some confusion among a couple of IntelliCenter users with regards to the IntelliCenter Web Client that I wish to clarify. They believed that updates to the Web Client would have an effect on how the IntelliCenter Control Panel behaves or operates. This could not be further from the truth. When Pentair updates the Web Client, they are updating the Web Server or Application Server software ONLY, which resides on the Pentair IntelliCenter Web Servers.

Those Web Client updates only make changes to the design, features or the functionality of the Web Client itself and has no effect on the firmware that only resides within the flash ROM chip located on the IntelliCenter i5P motherboard at the control panel.

The only way that a change or improvement can be made with regards to the IntelliCenter Control System, is for Pentair to issue a firmware update and consequently, that update is either automatically installed through a “push” or manually installed at the control panel itself.


Web Client Summary
: Hopefully, I have established so far that one of the biggest disadvantages to the use of a Web Client in order for the user to communicate to their IntelliCenter Control System, is the fact that the user MUST communicate via a desktop/laptop web browser, through the Pentair web servers and of course, must do so while utilizing the internet, either of which can fail and thus will completely restrict the use of a computer to serve as the means to successfully communicate to the IntelliCenter Control System/Panel.

Again, if the Web Client actually possessed a reasonable level of overall quality and reliability, then like I mentioned earlier, the only disadvantage that would remain would be the reliability of the Internet and the Pentair IntelliCenter Web Servers.

BUT, this is just not the case unfortunately. As I have pointed out previously, the IntelliCenter Web Client severely lacks many of the following features and characteristics. Characteristics, which in my opinion, should reasonably be expected of any modern 2020 Web Portal. One, which is responsible for and operated by large, successful and profitable corporation.

• Intuitiveness – I personally fail to find the web client very intuitive, when the IntelliCenter user clicks on SETTINGS and after twiddling your thumbs for 7 to 10 seconds, the user finally lands on the next screen which is the Schedules editing page first. Instead of landing on an easily navigable menu that allows the user to determine if they want to Edit Light Groups, Schedules or other System Configurations.​
• Reliability – Such as a schedule editing screen that actually allows the user to edit schedules instead of clicking on an existing schedule and having it close immediately again instead of staying expanded for editing purposes. In addition, I begin to question the reliability of a web client when a temperature setting is modified by the user and at midnight the temperature setting reverts back to its previous setting for no possible good reason at all.​

• Performance and speed – Characteristics that are certainly lacking in many aspects of the IntelliCenter Web Client.​
• Optimization – I don’t find the Web Client very "optimized" when I can’t even seem to get it to support one of the major web browsers.​
• Relevant Content – When a user navigates to the SETTINGS > MANUALS screen. Sure many of the other IntelliCenter user documents are there which is nice, but when Pentair introduced those additional online manuals, they dropped the actual Web Application User’s Manual which used to be there (and which I just happened to download to a .PDF doc prior to its deletion). Now, not that the Web Client is all that tough to navigate but not everyone has the same level of web savviness, when it comes to navigating web portals. I assume it was decided by someone that they did not want to take the time to update and publish the online Web Client manual (“IntelliCenter-WEB-APP-UG”), whenever they made changes to the Web Client.​
• WebApp Design Quality – Nope. The IntelliCenter Web Client looks like something from the early 2000’s. The reason this kind of gets to me is that if you navigate to the Pentair Pool and Spa website, there they certainly have no problem with WebApp design. They can’t task a couple of those Web Design Engineers or consultants over to the IntelliCenter Web Portal on TDY?​

• Functionality – There are many functions that are available to the IntelliCenter user at the control panel which are just not offered on the Web Client. Too many too list actually, but just for discussion sake, here are a couple.​
- Where is the SUNSET and SUNRISE and associated offset option buttons when creating a new schedule?​
- Or lastly, what about the Pentair hold/recall lighting option?​
There is much more that can be itemized here but there is really no point. The bottom line is that the Web Client is just NOT what it should be or what a user should expect in my honest opinion, from a system that costs upwards of a couple of thousands of dollars and more depending on the complexity of the system.​


The “Way Forward”
: Here are just some personal thoughts on how I honestly believe that a way forward solution might look like for those IntelliCenter users’ who wish to minimize the disadvantages of the IntelliCenter Web Client that I have pointed out above.

This discussion is not necessarily meant for the average IntelliCenter user who is currently satisfied with the design, functionality and performance of the IntelliCenter Web Client. But, if you are the type of user who is looking for a lot more out of the IntelliCenter (because the system is certainly capable of greater performance), and/or how you communicate with your control panel, then this section may have some merit for you.

1. As I have pointed out above, I believe that ScreenLogic has one huge advantage, in that it is an App that resides on the users’ desktop/Laptop. Given that fact, an individual or group of software development types would need to create an app that also resides on the IntelliCenter users’ desktop/laptop.​
This is a challenge I will concede, but it should not be “rocket science” either. However, the skill sets necessary to undertake this project are by all means above my “pay grade” or I would already be “all over it”, mainly due to my utter dissatisfaction with the web client and its lack of reasonable performance.​

2. The App would need to be able to communicate to the control panel. And herein, lies one of the major hurdles I believe.​
Unlike ScreenLogic type automation systems, there is no Interface Protocol Adapter involved with IntelliCenter because of the way that the IntelliCenter currently communicates to the panel via the servers.​
If I got this right (and someone please correct me if I don’t), the ScreenLogic Interface Protocol Adapter essentially converts language which is used by the ScreenLogic user’s computer and converts it to language used by the automation system and vice versa. The ScreenLogic Interface Adapter is wired either directly or via a wireless transceiver to the RS-485 bus of the EasyTouch/IntelliTouch. This might be one method that could be further explored.​
I’m thinking that for those that would care to go the desktop app option, I can see no reason why one could not use that existing ScreenLogic Interface Adapter for the IntelliCenter? Converting one machine language to another should be the same. The ScreenLogic Interface adapter should not care if it is talking to an EasyTouch or an IntelliCenter but I might be wrong on this account.​

3. MQTT Broker: But, I already know of at least one other method that currently exists because I have used it and it may be much better than the first option mentioned above. And that is by utilizing a 2-way MQTT broker to Telnet bridge. The MQTT Broker resides on the IntelliCenter users’ desktop. Further details regarding this concept can be found on the following TFP thread titled:
Hi @kyleaa and @MyAZPool ,​
Sorry for the delay I have a lot going on here at the moment so am not as active on here as I would like to be but wanted to check in and update.​
As @MyAZPool mentioned, he and I have been working on what I am calling the IntelliCenter Commander. It's really just a 2-way MQTT to Telnet bridge. I threw together some code and @MyAZPool has been the willing and very gracious guinea pig.​
The larger plan is this:​
Building off my IntelliCenter API document the Commander will accept coded commands on the MQTT bus interpret them and then send the IntelliCenter formatted command to the IntelliCenter via telnet.​
The commander simultaneously listens, via Telnet for messages on the IntelliCenter API bus, and relays them to the MQTT broker.​
The idea being that Home Automation systems, or anyone with a little coding knowledge, can use MQTT to both command the IntelliCenter and be updated of status changes for the equipment and sensors connected to the IntelliCenter. The home-brewers out there, if so inclined, could create their own UI without having to worry about communicating with the IntelliCenter or learning all of the command syntax.​
The Commander will run as a service on some low-power box on your local network. The MQTT server can be run locally on the same box, a different box or hosted in the cloud. When using a locally hosted MQTT server and when your device with your chosen UI is also on your local network you will have full control of your IntelliCenter no cloud required and no internet connection required.​
Finally, since we don't have to rely on Pentair's UI the IntelliCenter commander can do things the Pentair web app cannot (so I'm told :) )​
e.g.​

  • Select SaM mode for your light(s)
    • Turn on Swim mode for a light group
    • Sync a light group
    • Set a light group
    • 'Hold' a colour on a light
    • 'Recall' a held color on a light
    • Toggle Laminar thumper on/off
    • Other suggestions gladly received and I'll see what I can do
Also, I believe this effectively removes the annoying restriction of only 16 feature groups since we can now command features individually in whatever order and combination we like. It doesn't remove the 32 feature restriction but it does make it much less likely to be an issue since we can control pumps directly to any speed or GPM (if pump is VSF) then we don't have to use precious features to access particular pump speeds we can just command a pump to whatever speed we want directly without using a feature. :)
Additionally all of the commands that are present in the Pentair app are also available via the IntelliCenter Commander and MQTT. So you can control your pumps, your heaters, lights, chemical controller, features, etc, etc.​
So that's the theory.​
In practice, the code is working. We have the Commander, an MQTT server (other better MQTT servers are available), a viewer which is just a simple console app visualising messages from the MQTT bus sent out from the IntelliCenter and a UI which is a console app that allows you to select the command you wish to perform by selecting a series of options (really just for testing, not meant as a permanent way of sending commands.​
I would place the current state one notch above a proof of concept but not really ready for public beta (is that alpha?? ?:confused:).​
Major to do items:​

  • Enable subscribing to capture status changes and publish to MQTT
    • Rework the MQTT topic layout and message encoding to be more standardised and easier to understand
    • Various code clean ups and feature adds (ability to select a 'body of water' i.e. pool or spa' and Pentair seems to have made controlling pumps via their unofficial API more complicated than it needed to be so this needs a bit more investigation to make it fit for public consumption)
    • Upload code to Github
For those that are interested, it is written in C# targeting the latest .net framework. I believe it will all work in .netCore except the telnet library I am using is not compatible with core. I plan on fixing this to make the whole thing work in .netCore to hopefully allow it to run on Linux boxes.​
@kyleaa - You mentioned using websockets requires port 6680. I would prefer to use websockets vs Telnet since it seems more well suited to an always open connection where we want to listen in to the Pentair bus as well as add commands. However, I created a connection tester for @MyAZPool including attempting to connect via websockets on 6680 but it failed to connect. Do you have more information on how to establish a websockets connection to the IntelliCenter?​
Ok, that's enough for one post...​
:D
Let me take an opportunity to first explain that I am not nearly smart enough to have figured any of this out on my own and I do not want to take any credit for this advancement. I might have one, maybe two skill sets max, that I can claim “might” be just slightly above the average joe, but programming and software development and engineering is certainly not one of them.​
The good news though, is that we have some members on board here that are, in my mind extremely talented, especially when it comes to the type of expertise necessary to successfully pull this type of project off.​
Due to the talents of members like @mcqwerty and @kyleaa, along with extremely useful contributions as well from @guinness @mrweber and @jonpcar (if there are others that I may have missed, please accept my apologies), quite a bit of advancement has already been made along these lines. I believe that the groundwork has certainly been laid as of now.​

Through the diligent work of the members mentioned above, mcqwerty and I collaborated on this project for many hours (mcqwerty of course did 95% of the work). I can now communicate directly to my control panel from my desktop while utilizing that MQTT broker to Telnet feature and address the panel through its IP address. In my mind, this is quite an accomplishment already towards developing a new user interface that will reside on the users’ desktop and that can communicate to the IntelliCenter panel directly.​
I can control power circuits (pumps lights etc.), Feature Circuits (pump speeds/flows, valve actuators etc.) and the Circuit Groups (macros) all through the programming that mcqwerty was good enough to develop, from my desktop, and all without having to rely on the internet and/or the Pentair Web Servers. I can even perform the lighting hold/recall function from this app (something that cannot be done at the web client level apparently because its not there).​
4. The only thing left I believe is to begin to develop some sort of GUI shell that will wrap all of this up into a convenient and user-friendly package (I know I make this task sound a lot easier than it really is and for that I apologize to those software developers who spend hundreds of hours writing code for their projects).​
There was one person who developed one of these open source GUI programs for their IntelliTouch and the graphics and the entire user interface was incredible. For the life of me now, I cannot find that source. However, below are just some examples of the type of GUIs that can be developed. Some are not necessarily pool related but are only illustrated as possible looks to a new GUI for the IntelliCenter.​
2020-02-23_23-04-41.jpg
Credit: J. Horsey, geeky-gadgets.com​
2020-02-23_23-08-11.jpg
Credit: Unknown​
2020-02-23_23-46-35.jpg
I like this!​
Credit: Valarm Tools Cloud Web Dashboards​
2020-02-23_23-12-57.jpg
Credit: Dominic, myhydropi.com​
2020-02-23_23-27-54.jpgCredit: Unknown​
2020-02-23_23-22-48.jpg
I like this as well.​
I invision virtual dials as indicators​
on some sort of dashbard.​
Credit: Prometheus​
5. One such project can be found at:
6. I’m confident that with further collaboration, there will be a breakout soon. This will then allow those that are interested, the ease of programming and controlling their IntelliCenter and fully communicating to their IntelliCenter Control Panel from their PC/Mac, all without any reliance on either the Internet or on the Pentair IntelliCenter Web Servers. Web Servers that will undoubtedly continue to slow down as more users tap into their bandwidth.​

Comments and suggestions are encouraged in the hopes of keeping this possibility alive.
r.
 
Last edited:
  • Like
Reactions: Arizonarob

Katodude

Silver Supporter
Aug 22, 2017
929
West Palm Beach/Florida
Ron, that as usual is a great write up. Since I am not an Intellicenter owner I am not in much of a position to comment. However, let me take the opposing point of view on one issue. Communicating with the Intellicenter servers, which then control the intellicenter is basically cloud computing. So for all their lack of modern that is the one thing they did in a modern fashion.

Assuming that they used modern cloud computing techniques, and that is a big assumption based on the rest of the stuff you wrote about. Their servers should have virtually zero downtime (to the point where you should not notice). The second benefit that the cloud would give an Intellicenter user is better control of the Intellicenter from off property. Since you only have to communicate with the cloud as opposed to the Intellicenter directly then it is easier and more secure to do it that way. So you can control your pool while on vacation or the ever important “I just finished golfing and my back hurts so turn on the spa”, and doing that from the golf course while having beer with your buddies.
 
  • Like
Reactions: MyAZPool

MyAZPool

Gold Supporter
Jul 3, 2018
1,419
Arizona
Ron, that as usual is a great write up. Since I am not an Intellicenter owner I am not in much of a position to comment. However, let me take the opposing point of view on one issue. Communicating with the Intellicenter servers, which then control the intelliCenter is basically cloud computing. So for all their lack of modern that is the one thing they did in a modern fashion.

Assuming that they used modern cloud computing techniques, and that is a big assumption based on the rest of the stuff you wrote about. Their servers should have virtually zero downtime (to the point where you should not notice). The second benefit that the cloud would give an Intellicenter user is better control of the Intellicenter from off property. Since you only have to communicate with the cloud as opposed to the Intellicenter directly then it is easier and more secure to do it that way. So you can control your pool while on vacation or the ever important “I just finished golfing and my back hurts so turn on the spa”, and doing that from the golf course while having beer with your buddies.
A,
I agree with your points. I have only experienced server downtime a handful of times since December 2018, so really that is not too bad. Especially considering that I am using the web client a lot more than most due to my various testing of the system and just basic playing around with the whole thing.

And I would really be okay using those web servers IF the web client was much more satisfactory overall.

As far as mobile access, I'm not suggesting that there is too much wrong there (except for a few glitches in the iOS app) I certainly want to be able to access my control panel from down the road or across the country. ScreenLogic2 users can also use a mobile device to access their system remotely as well, so no changes really proposed in that area.

I've just essentially lost all confidence in the ability of the web client to perform its intended purpose with expected functionality and reasonable performance.
Thanks much.

BTW, I might have missed mentioning your behind the scenes efforts, when it comes to some of this (sorry about that). I really appreciate your input and insight as I realize that you are well versed in the IT arena and we all can benefit from your continued assistance.
Thanks again!!
r.
 

MyAZPool

Gold Supporter
Jul 3, 2018
1,419
Arizona
@rmontgomery
Ryan,

So, I don't actually have the code for the current UI. The UI was developed by @mcqwerty. And even if I did, I would of course need to obtain permission from him in order to release it (he put in a ton of work on this project). So I will defer that question to him.

I will let you know however that he is really busy these days and he is also preparing to start his pool build and as most of us know, that can be nearly a full time job in and of itself. So it might be some time before he can get back to us.

The basic UI has been built and you can peruse the thread for further information:

I believe that eventually the basic UI can go "graphical". The basic UI uses two pull-downs and sometimes a value field in order to execute a particular function.

Here is a screenprint of the UI which I have an okay to put out there.
2020-02-24_14-31-51.jpg

Looks like that when I moved some files around, the UI can no longer find the API, so my pull-downs are currently inop. I think I can release the API but I want to be sure.

When the UI is opened, it queries the IntelliCenter panel and here are the results of that query. The results will be different for each panel.
2/24/2020 1:52:42 PM - Topic: intellicenter/PNL01/messageraw/status - Payload: {"command":"SendQuery","messageID":"1dfcbe60-d341-4b63-b13e-c44641f753b1","queryName":"GetHardwareDefinition","description":"Created on: 2000-05-16 05:14:54","response":"200","answer":[{"objnam":"PNL01","params":{"OBJTYP":"PANEL","SUBTYP":"OCP","HNAME":"PNL01","SNAME":"Panel 1","PANID":"SHARE","LISTORD":"1","VER":"VER","OBJLIST":[{"objnam":"M0101","params":{"OBJTYP":"MODULE","SUBTYP":"I5P","SNAME":"M0101","LISTORD":"LISTORD","PARENT":"PNL01","PORT":"1","VER":"10.001","BADGE":"BADGE","CIRCUITS":[{"objnam":"B1101","params":{"OBJTYP":"BODY","SUBTYP":"POOL","SNAME":"Pool","LISTORD":"1","HITMP":"81","LOTMP":"85","HTSRC":"00000","SHARE":"B1202","PRIM":"65535","SEC":"65535","ACT1":"65535","ACT2":"65535","ACT3":"65535","ACT4":"65535","VOL":"20000","MANHT":"00000","OBJLIST":[{"objnam":"CHR01","params":{"OBJTYP":"CHEM","SUBTYP":"ICHLOR","SNAME":"IntelliChlor 1","COMUART":"1"}}]}},{"objnam":"C0002","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"AUX 1","SNAME":"Jet Pump","LISTORD":"2","PARENT":"M0101","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"240","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"C0003","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"AUX 2","SNAME":"Sanitation","LISTORD":"3","PARENT":"M0101","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"C0004","params":{"OBJTYP":"CIRCUIT","SUBTYP":"INTELLI","HNAME":"AUX 3","SNAME":"Pool Light East","LISTORD":"4","PARENT":"M0101","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"C0005","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"AUX 4","SNAME":"Heater Relay","LISTORD":"5","PARENT":"M0101","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"C0006","params":{"OBJTYP":"CIRCUIT","SUBTYP":"POOL","HNAME":"Pool","SNAME":"Pool","LISTORD":"6","PARENT":"M0101","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"GRP01","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP01","SNAME":"Skim Winter","COVER":"OFF","LISTORD":"1","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP02","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP02","SNAME":"Clean Winter","COVER":"OFF","LISTORD":"2","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"660","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP03","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP03","SNAME":"Clean Summer","COVER":"OFF","LISTORD":"3","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"240","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP04","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP04","SNAME":"Skim Summer","COVER":"OFF","LISTORD":"4","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP05","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP05","SNAME":"Relax","COVER":"OFF","LISTORD":"5","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"360","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP06","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP06","SNAME":"Water Feature","COVER":"OFF","LISTORD":"6","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP07","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP07","SNAME":"Flush Heat/Feat","COVER":"OFF","LISTORD":"7","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP08","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP08","SNAME":"Flush Bypass","COVER":"OFF","LISTORD":"8","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP09","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP09","SNAME":"Spa High","COVER":"OFF","LISTORD":"9","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP10","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP10","SNAME":"Circuit Group 9","COVER":"OFF","LISTORD":"10","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"VAL01","params":{"SUBTYP":"LEGACY","SNAME":"Valve A","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"NONE","DLY":"OFF","CIRCUIT":"FTR10"}},{"objnam":"VAL02","params":{"SUBTYP":"LEGACY","SNAME":"Valve B","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"NONE","DLY":"OFF","CIRCUIT":"FTR11"}},{"objnam":"H0001","params":{"OBJTYP":"HEATER","SUBTYP":"GENERIC","SNAME":"Spa Heater","LISTORD":"1","BODY":"B1202","START":"6","STOP":"3","COOL":"OFF","COMUART":"1","TIME":"1","BOOST":"5","HTMODE":"0"}}]}},{"objnam":"M0102","params":{"OBJTYP":"MODULE","SUBTYP":"I10PS","SNAME":"M0102","LISTORD":"LISTORD","PARENT":"PNL01","PORT":"1","VER":"10.001","BADGE":"BADGE","CIRCUITS":[{"objnam":"B1202","params":{"OBJTYP":"BODY","SUBTYP":"SPA","SNAME":"Spa","LISTORD":"2","HITMP":"103","LOTMP":"104","HTSRC":"H0001","SHARE":"B1101","PRIM":"65535","SEC":"65535","ACT1":"65535","ACT2":"65535","ACT3":"65535","ACT4":"65535","VOL":"1000","MANHT":"00000","OBJLIST":[{"objnam":"PMP02","params":{"OBJTYP":"PUMP","SUBTYP":"SINGLE","SNAME":"Jandy Max HP","COMUART":"0","PRIMFLO":"2500","PRIMTIM":"1","SYSTIM":"5","MIN":"MIN","MAX":"MAX","PRIOR":"65535","BODY":"B1202","SHARE":"SHARE","DLY":"DLY","SETTMP":"10"}},{"objnam":"CHR01","params":{"OBJTYP":"CHEM","SUBTYP":"ICHLOR","SNAME":"IntelliChlor 1","COMUART":"1"}}]}},{"objnam":"C0001","params":{"OBJTYP":"CIRCUIT","SUBTYP":"SPA","HNAME":"Spa","SNAME":"Spa","LISTORD":"1","PARENT":"M0102","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"C0007","params":{"OBJTYP":"CIRCUIT","SUBTYP":"INTELLI","HNAME":"AUX 5","SNAME":"Pool Light West","LISTORD":"7","PARENT":"M0102","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"C0008","params":{"OBJTYP":"CIRCUIT","SUBTYP":"MASTER","HNAME":"AUX 6","SNAME":"Robot","LISTORD":"8","PARENT":"M0102","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"C0009","params":{"OBJTYP":"CIRCUIT","SUBTYP":"LIGHT","HNAME":"AUX 7","SNAME":"WIFI LEDS","LISTORD":"9","PARENT":"M0102","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"C0010","params":{"OBJTYP":"CIRCUIT","SUBTYP":"LIGHT","HNAME":"AUX 8","SNAME":"Pad Light","LISTORD":"10","PARENT":"M0102","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"C0011","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"AUX 9","SNAME":"SPARE AUX 9","LISTORD":"11","PARENT":"M0102","BODY":"BODY","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"GRP01","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP01","SNAME":"Skim Winter","COVER":"OFF","LISTORD":"1","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP02","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP02","SNAME":"Clean Winter","COVER":"OFF","LISTORD":"2","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"660","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP03","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP03","SNAME":"Clean Summer","COVER":"OFF","LISTORD":"3","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"240","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP04","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP04","SNAME":"Skim Summer","COVER":"OFF","LISTORD":"4","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP05","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP05","SNAME":"Relax","COVER":"OFF","LISTORD":"5","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"360","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP06","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP06","SNAME":"Water Feature","COVER":"OFF","LISTORD":"6","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP07","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP07","SNAME":"Flush Heat/Feat","COVER":"OFF","LISTORD":"7","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP08","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP08","SNAME":"Flush Bypass","COVER":"OFF","LISTORD":"8","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP09","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP09","SNAME":"Spa High","COVER":"OFF","LISTORD":"9","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP10","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP10","SNAME":"Circuit Group 9","COVER":"OFF","LISTORD":"10","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"VAL03","params":{"SUBTYP":"LEGACY","SNAME":"Intake","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"INTAKE","DLY":"OFF","CIRCUIT":"00000"}},{"objnam":"VAL04","params":{"SUBTYP":"LEGACY","SNAME":"Return","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"RETURN","DLY":"OFF","CIRCUIT":"00000"}},{"objnam":"VAL07","params":{"SUBTYP":"LEGACY","SNAME":"Valve C","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"NONE","DLY":"OFF","CIRCUIT":"FTR12"}},{"objnam":"VAL08","params":{"SUBTYP":"LEGACY","SNAME":"Valve D","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"NONE","DLY":"OFF","CIRCUIT":"FTR13"}},{"objnam":"VAL09","params":{"SUBTYP":"LEGACY","SNAME":"Valve E","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"NONE","DLY":"OFF","CIRCUIT":"FTR15"}},{"objnam":"VAL10","params":{"SUBTYP":"LEGACY","SNAME":"Valve F","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"NONE","DLY":"OFF","CIRCUIT":"FTR09"}},{"objnam":"VAL11","params":{"SUBTYP":"LEGACY","SNAME":"Valve G","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"NONE","DLY":"OFF","CIRCUIT":"00000"}},{"objnam":"VAL12","params":{"SUBTYP":"LEGACY","SNAME":"Valve H","COMUART":"COMUART","POSIT":"POSIT","ASSIGN":"NONE","DLY":"OFF","CIRCUIT":"00000"}}]}},{"objnam":"M0103","params":{"OBJTYP":"MODULE","SUBTYP":"VALVEXP","SNAME":"M0103","LISTORD":"LISTORD","PARENT":"PNL01","PORT":"1","VER":"10.001","BADGE":"BADGE","CIRCUITS":[{"objnam":"GRP01","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP01","SNAME":"Skim Winter","COVER":"OFF","LISTORD":"1","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP02","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP02","SNAME":"Clean Winter","COVER":"OFF","LISTORD":"2","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"660","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP03","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP03","SNAME":"Clean Summer","COVER":"OFF","LISTORD":"3","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"240","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP04","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP04","SNAME":"Skim Summer","COVER":"OFF","LISTORD":"4","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP05","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP05","SNAME":"Relax","COVER":"OFF","LISTORD":"5","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"360","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP06","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP06","SNAME":"Water Feature","COVER":"OFF","LISTORD":"6","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP07","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP07","SNAME":"Flush Heat/Feat","COVER":"OFF","LISTORD":"7","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP08","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP08","SNAME":"Flush Bypass","COVER":"OFF","LISTORD":"8","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP09","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP09","SNAME":"Spa High","COVER":"OFF","LISTORD":"9","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"GRP10","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP10","SNAME":"Circuit Group 9","COVER":"OFF","LISTORD":"10","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}}]}},{"objnam":"FTR01","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR01","SNAME":"Spa High","COVER":"COVER","LISTORD":"1","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR02","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR02","SNAME":"Pump 25","COVER":"COVER","LISTORD":"2","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR03","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR03","SNAME":"Pump 50","COVER":"COVER","LISTORD":"3","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR04","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR04","SNAME":"Speed 2700","COVER":"COVER","LISTORD":"4","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR05","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR05","SNAME":"Pump 30","COVER":"COVER","LISTORD":"5","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR06","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR06","SNAME":"Pump 40","COVER":"COVER","LISTORD":"6","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR07","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR07","SNAME":"Pump 35","COVER":"COVER","LISTORD":"7","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR09","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR09","SNAME":"Return","COVER":"COVER","LISTORD":"9","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR10","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR10","SNAME":"Skim Only","COVER":"COVER","LISTORD":"10","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR11","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR11","SNAME":"Sprays","COVER":"COVER","LISTORD":"11","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR12","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR12","SNAME":"Heat By","COVER":"COVER","LISTORD":"12","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR13","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR13","SNAME":"Filter By","COVER":"COVER","LISTORD":"13","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR14","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR14","SNAME":"Spa Heater","COVER":"COVER","LISTORD":"14","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"FTR15","params":{"OBJTYP":"CIRCUIT","SUBTYP":"GENERIC","HNAME":"FTR15","SNAME":"Suction","COVER":"COVER","LISTORD":"15","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"00000","DNTSTP":"OFF","FEATR":"ON"}},{"objnam":"GRP01","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP01","SNAME":"Skim Winter","COVER":"OFF","LISTORD":"1","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c0102","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"C0006","ACT":"ON","LISTORD":"2","DLY":"0"}},{"objnam":"c0103","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR02","ACT":"ON","LISTORD":"3","DLY":"0"}},{"objnam":"c0104","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR10","ACT":"ON","LISTORD":"4","DLY":"0"}}]}},{"objnam":"GRP02","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP02","SNAME":"Clean Winter","COVER":"OFF","LISTORD":"2","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"660","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c0202","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"C0006","ACT":"ON","LISTORD":"2","DLY":"0"}},{"objnam":"c0203","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR06","ACT":"ON","LISTORD":"3","DLY":"0"}}]}},{"objnam":"GRP03","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP03","SNAME":"Clean Summer","COVER":"OFF","LISTORD":"3","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"240","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c0301","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"C0006","ACT":"ON","LISTORD":"1","DLY":"0"}},{"objnam":"c0302","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR06","ACT":"ON","LISTORD":"2","DLY":"0"}},{"objnam":"c0303","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"C0003","ACT":"ON","LISTORD":"3","DLY":"0"}}]}},{"objnam":"GRP04","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP04","SNAME":"Skim Summer","COVER":"OFF","LISTORD":"4","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c0401","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"C0006","ACT":"ON","LISTORD":"1","DLY":"0"}},{"objnam":"c0402","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR10","ACT":"ON","LISTORD":"2","DLY":"0"}},{"objnam":"c0403","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR02","ACT":"ON","LISTORD":"3","DLY":"0"}},{"objnam":"c0404","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"C0003","ACT":"ON","LISTORD":"4","DLY":"0"}}]}},{"objnam":"GRP05","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP05","SNAME":"Relax","COVER":"OFF","LISTORD":"5","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"360","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c0501","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR12","ACT":"ON","LISTORD":"1","DLY":"0"}},{"objnam":"c0502","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR15","ACT":"ON","LISTORD":"2","DLY":"0"}},{"objnam":"c0503","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR09","ACT":"ON","LISTORD":"3","DLY":"0"}},{"objnam":"c0504","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"C0001","ACT":"ON","LISTORD":"4","DLY":"0"}},{"objnam":"c0505","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"C0005","ACT":"ON","LISTORD":"5","DLY":"0"}},{"objnam":"c0506","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR14","ACT":"ON","LISTORD":"6","DLY":"0"}}]}},{"objnam":"GRP06","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP06","SNAME":"Water Feature","COVER":"OFF","LISTORD":"6","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c0601","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR10","ACT":"ON","LISTORD":"1","DLY":"0"}},{"objnam":"c0602","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR13","ACT":"ON","LISTORD":"2","DLY":"0"}},{"objnam":"c0603","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR11","ACT":"ON","LISTORD":"3","DLY":"0"}},{"objnam":"c0604","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR04","ACT":"ON","LISTORD":"4","DLY":"0"}}]}},{"objnam":"GRP07","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP07","SNAME":"Flush Heat/Feat","COVER":"OFF","LISTORD":"7","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c0701","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR12","ACT":"ON","LISTORD":"1","DLY":"0"}},{"objnam":"c0702","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR11","ACT":"ON","LISTORD":"2","DLY":"0"}},{"objnam":"c0703","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR05","ACT":"ON","LISTORD":"3","DLY":"0"}}]}},{"objnam":"GRP08","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP08","SNAME":"Flush Bypass","COVER":"OFF","LISTORD":"8","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c0801","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR13","ACT":"ON","LISTORD":"1","DLY":"0"}},{"objnam":"c0802","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR05","ACT":"ON","LISTORD":"2","DLY":"0"}}]}},{"objnam":"GRP09","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP09","SNAME":"Spa High","COVER":"OFF","LISTORD":"9","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c0901","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR13","ACT":"ON","LISTORD":"1","DLY":"0"}},{"objnam":"c0902","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR03","ACT":"ON","LISTORD":"2","DLY":"0"}}]}},{"objnam":"GRP10","params":{"OBJTYP":"CIRCUIT","SUBTYP":"CIRCGRP","HNAME":"GRP10","SNAME":"Circuit Group 9","COVER":"OFF","LISTORD":"10","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"720","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF","OBJLIST":[{"objnam":"c1001","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"C0006","ACT":"ON","LISTORD":"1","DLY":"0"}},{"objnam":"c1002","params":{"OBJTYP":"CIRCGRP","CIRCUIT":"FTR03","ACT":"ON","LISTORD":"2","DLY":"0"}}]}},{"objnam":"X0034","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Heat Pump","SNAME":"Heat Pump","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0035","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"UltraTemp","SNAME":"UltraTemp","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0036","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Hybrid","SNAME":"Hybrid","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0037","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Heat Boost","SNAME":"Heat Boost","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0038","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Heat Enable","SNAME":"Heat Enable","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0039","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Pump Speed +","SNAME":"Pump Speed +","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0040","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Pump Speed -","SNAME":"Pump Speed -","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0043","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Cleaner","SNAME":"Cleaner","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0044","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Pool Heater","SNAME":"Pool Heater","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0045","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Spa Heater","SNAME":"Spa Heater","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0046","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Freeze","SNAME":"Freeze","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0047","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Pool/Spa","SNAME":"Pool/Spa","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0050","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Cleaners","SNAME":"Cleaners","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0051","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Heater","SNAME":"Heater","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0052","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Solar","SNAME":"Solar","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0053","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"All Lights Off","SNAME":"All Lights Off","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0054","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"All Lights On","SNAME":"All Lights On","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"X0055","params":{"OBJTYP":"CIRCUIT","SUBTYP":"Generic","HNAME":"Pool Heat Enable","SNAME":"Pool Heat Enable","COVER":"COVER","LISTORD":"LISTORD","PARENT":"00000","BODY":"BODY","FREEZE":"FREEZE","VER":"VER","TIMZON":"TIMZON","TIME":"TIME","RLY":"RLY","DNTSTP":"DNTSTP","FEATR":"FEATR"}},{"objnam":"_A110","params":{"OBJTYP":"CIRCUIT","SUBTYP":"ALL","HNAME":"_A110","SNAME":"All Lights Off","COVER":"OFF","LISTORD":"LISTORD","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"0","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"_A111","params":{"OBJTYP":"CIRCUIT","SUBTYP":"ALL","HNAME":"_A111","SNAME":"All Lights On","COVER":"OFF","LISTORD":"LISTORD","PARENT":"00000","BODY":"00000","FREEZE":"OFF","VER":"VER","TIMZON":"TIMZON","TIME":"0","RLY":"RLY","DNTSTP":"OFF","FEATR":"OFF"}},{"objnam":"PMP01","params":{"OBJTYP":"PUMP","SUBTYP":"VSF","SNAME":"IntelliFlo VSF","COMUART":"1","PRIMFLO":"1000","PRIMTIM":"1","SYSTIM":"5","MIN":"450","MAX":"3150","MINF":"20","MAXF":"140","PRIOR":"65535","BODY":"00000","SHARE":"SHARE","DLY":"DLY","SETTMP":"100","SETTMPNC":"1","OBJLIST":[{"objnam":"p0101","params":{"CIRCUIT":"FTR03","LISTORD":"1","SPEED":"50","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0102","params":{"CIRCUIT":"FTR04","LISTORD":"2","SPEED":"2700","BOOST":"BOOST","SELECT":"RPM"}},{"objnam":"p0103","params":{"CIRCUIT":"FTR05","LISTORD":"3","SPEED":"30","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0104","params":{"CIRCUIT":"FTR06","LISTORD":"4","SPEED":"40","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0105","params":{"CIRCUIT":"FTR07","LISTORD":"5","SPEED":"35","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0106","params":{"CIRCUIT":"FTR02","LISTORD":"6","SPEED":"25","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0107","params":{"CIRCUIT":"C0001","LISTORD":"7","SPEED":"45","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0108","params":{"CIRCUIT":"C0006","LISTORD":"8","SPEED":"30","BOOST":"BOOST","SELECT":"GPM"}}]}},{"objnam":"PMP01","params":{"OBJTYP":"PUMP","SUBTYP":"VSF","SNAME":"IntelliFlo VSF","COMUART":"1","PRIMFLO":"1000","PRIMTIM":"1","SYSTIM":"5","MIN":"450","MAX":"3150","MINF":"20","MAXF":"140","PRIOR":"65535","BODY":"00000","SHARE":"SHARE","DLY":"DLY","SETTMP":"100","SETTMPNC":"1","OBJLIST":[{"objnam":"p0101","params":{"CIRCUIT":"FTR03","LISTORD":"1","SPEED":"50","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0102","params":{"CIRCUIT":"FTR04","LISTORD":"2","SPEED":"2700","BOOST":"BOOST","SELECT":"RPM"}},{"objnam":"p0103","params":{"CIRCUIT":"FTR05","LISTORD":"3","SPEED":"30","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0104","params":{"CIRCUIT":"FTR06","LISTORD":"4","SPEED":"40","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0105","params":{"CIRCUIT":"FTR07","LISTORD":"5","SPEED":"35","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0106","params":{"CIRCUIT":"FTR02","LISTORD":"6","SPEED":"25","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0107","params":{"CIRCUIT":"C0001","LISTORD":"7","SPEED":"45","BOOST":"BOOST","SELECT":"GPM"}},{"objnam":"p0108","params":{"CIRCUIT":"C0006","LISTORD":"8","SPEED":"30","BOOST":"BOOST","SELECT":"GPM"}}]}},{"objnam":"PMP02","params":{"OBJTYP":"PUMP","SUBTYP":"SINGLE","SNAME":"Jandy Max HP","COMUART":"0","PRIMFLO":"2500","PRIMTIM":"1","SYSTIM":"5","MIN":"MIN","MAX":"MAX","MINF":"0","MAXF":"0","PRIOR":"65535","BODY":"B1202","SHARE":"SHARE","DLY":"DLY","SETTMP":"10","SETTMPNC":"1"}},{"objnam":"SSS11","params":{"OBJTYP":"SENSE","SUBTYP":"SOLAR","NAME":"00000","SNAME":"Solar Sensor 1","SOURCE":"100","PROBE":"100","CALIB":"0","LISTORD":"11"}},{"objnam":"SSW11","params":{"OBJTYP":"SENSE","SUBTYP":"POOL","NAME":"00000","SNAME":"Water Sensor 1","SOURCE":"62","PROBE":"62","CALIB":"0","LISTORD":"10"}},{"objnam":"_A135","params":{"OBJTYP":"SENSE","SUBTYP":"AIR","NAME":"00000","SNAME":"Air Sensor","SOURCE":"69","PROBE":"67","CALIB":"-2","LISTORD":"12"}},{"objnam":"H0001","params":{"OBJTYP":"HEATER","SUBTYP":"GENERIC","SNAME":"Spa Heater","DLY":"5","ACT":"ACT"}}]}}]}
Not sure if the above is much help to you. I noted that I am a virtual dummy, when it comes to some of this stuff. :scratch:
r.
 
Last edited:

guinness

Well-known member
May 3, 2019
289
California
@rmontgomery I know a few months have passed, but I've created IntelliCenter Gateway repo on GitHub which acts as a gateway between a web client and the IntelliCenter telnet socket.

Using Javascript libraries it should be relatively easy to include visualizations of data (JSFiddle) and create a dashboard like the ones shown above.

It would also be possible to add a logging feature to the hosted service to record object values into a lightweight database like SQLite for later use.
 
Last edited:

rmontgomery

Well-known member
Oct 14, 2019
147
Rockwall, TX
@rmontgomery I know a few months have passed, but I've created IntelliCenter Gateway repo on GitHub which acts as a gateway between a web client and the IntelliCenter telnet socket.

Using Javascript libraries it should be relatively easy to include visualizations of data (JSFiddle) and create a dashboard like the ones shown above.

It would also be possible to add a logging feature to the hosted service to record object values into a lightweight database like SQLite for later use.
I'll take a look at it and see what I can do.

Ryan
 

guinness

Well-known member
May 3, 2019
289
California
Thanks Ryan, I think the biggest effort might be figuring out the messaging. Both @kyleaa and @mcqwerty have looked into it and a post in IntelliCenter Home Automation Integration and Control contains a Google sheets document that you might find helpful.

Below is some information I've gathered from command "GetQuery" with query "GetHardwareDefinition" that returns objects in a hierarchy. Each object has a type and sub-type shown below. Valves don't appear to have an object type, but a sub-type of "Legacy" - I suspect that valves are not directly controlled, but rather via a circuit.

Object types (Sub-types): BODY (Pool, Spa), CIRCUIT (All, Generic, Light, Pool, Spa), HEATER (Generic, Heater, Solar), MODULE (I5P, I5PS), PANEL (OCP), PUMP (Speed) & SENSE (Air, Pool, Solar).

Note: Every system will vary depending on modules installed, below are some additional types from posted configuration above by @MyAZPool.
CHEM (ICHLOR), CIRCUIT (INTELLI, CIRCGRP, MASTER), MODULE (I10PS, VALVEXP), PUMP (SINGLE, VSF)

There are also queries named "GetCircuitNames" and "GetConfiguration" for command "GetQuery" which might be useful. If anyone else has further insight please share and as we learn more I'll probably add this information to the wiki in the GitHub repo.

A possible option for a dashboard is to allow a user to enter and save object names (which appear unique) into local storage which could be used to configure the widgets to display. Anyway, I'd encourage you to ask questions here if something isn't clear as there might be someone that can shed some further light on it. Good luck!
 
Last edited:
  • Like
Reactions: MyAZPool

MyAZPool

Gold Supporter
Jul 3, 2018
1,419
Arizona
Currently, I'm having some pretty good success with the GitHub js-poolController 6.0 Dash Panel Option. Here is an example of my current setup.

2020-06-30_11-40-20.jpg

You can find additional information on this alternative to the Pentair web client here:
r.
 
Last edited:

guinness

Well-known member
May 3, 2019
289
California
Here's a screenshot from the nodejs-poolController repo on GitHub, pretty nice layout and should be possible to emulate. Just to clarify this project uses the RS485 protocol for communication and needs a serial (or USB) hardwired connection to the panel. This is different from the Telnet protocol that the Intellicenter has built-in and can be accessed over Ethernet (or WiFi). So I think there is probably room for both solutions depending on the need for lower level control of equipment.

 
Last edited:

Gibby13

Well-known member
Jul 12, 2019
91
Elgin, SC
@guinness I like what you did. (I did the PR for the Dockerfile).

I have been looking for a way to use the telnet port and integrate with other home automation systems, specifically home assistant. I know almost nothing of ASP.Net core and a little of nodejs. If anyone needs testers let me know.

I did find a command you can send over telnet and it dumps all the possible combinations for that system. Maybe could run that and load it in when the app starts up. I have it saved in my notes somewhere.

Are you on the Gitter for nodejs-poolController?
 

guinness

Well-known member
May 3, 2019
289
California
Thanks, I merged your PR. I created IntelliCenter Gateway as basically a proxy for Telnet communication which exposes an HTML5 WebSocket to the browser. Therefore all further development can be done in Javascript (which if you've toyed with nodejs you should have familiarity with).

For Home Assistant, you could look at Creating your first integration that uses Python and then connect to the proxy using the SignalR core client.

Please share the command you found and I'll take a look at it - did you discover it using the web client and the browser developer console?

I'm not in the Gitter for nodejs-poolController as although the solutions share similar goals the underlying mechanics are different (Telnet vs RS485 protocol).
 

Gibby13

Well-known member
Jul 12, 2019
91
Elgin, SC
@guinness took me a little bit but I found my notes and here is the command I stitched together from watching the developer console.


{"command":"RequestParamList","objectList":[{"objnam":"UFFFE","keys":["ENABLE","OBJTYP","PASSWRD","SHOMNU"]},{"objnam":"C0002","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"C0003","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"C0002","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"C0003","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"C0004","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"C0005","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"_5451","keys":["OBJTYP","MODE","AVAIL","TEMPNC","VACFLO","VACTIM","START","STOP","HEATING","VALVE","TIMZON","VER","MANHT"]},{"objnam":"_A135","keys":["OBJTYP","SUBTYP","PROBE","STATUS"]},{"objnam":"B1101","keys":["TEMP","HITMP","LOTMP","HEATER","STATUS","HTMODE","HTSRC","VOL","MANUAL","LSTTMP","HNAME","MODE"]},{"objnam":"C0002","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"C0003","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"C0004","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"C0005","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"C0006","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY"]},{"objnam":"GRP01","keys":["STATUS","MODE","LISTORD","USAGE","FREEZE","LIMIT","USE","MANUAL","FEATR","DNTSTP","CHILD","HNAME","SNAME","RLY","OBJNAM","OBJTYP","SHOMNU","TIME","TIMOUT","SOURCE","SUBTYP","BODY","CHILD","SYNC","SET","SWIM"]},{"objnam":"_C105","keys":["OBJTYP","SOURCE"]},{"objnam":"_C10C","keys":["OBJTYP","DAY","MIN","OFFSET","SNAME","TIMZON","SRIS","SSET","CLK24A","LOCX","LOCY","ZIP","DLSTIM"]},{"objnam":"_5451","keys":["OBJTYP","MODE","AVAIL","TEMPNC","VACFLO","VACTIM","START","STOP","HEATING","VALVE","TIMZON","VER","MANHT"]},{"objnam":"_57A7","keys":["PARTY","BADGE"]}],"messageID":"1234"}

It is not pretty to look at and looks like a few lines might be duplicates, but their might have been a reason I had to have it in there twice.
 

guinness

Well-known member
May 3, 2019
289
California
Thanks, that's the RequestParamList command. If you study it using JSON Formatter & Validator you'll see it's requesting various parameters on the following objects:

_5451, _57A7, _A135, _C105, _C10C, C0002, C0003, C0004, C0005, C0006, B1101, GRP01, UFFFE

If there are duplicate objects with the same keys that's probably due to bad programming as they're redundant.

If you refer to the IntelliCenter API document that @mcqwerty kindly put together, you'll see that some of the object names are circuits.

B1101 = Pool
C00xx = Circuit AKA Relay (With or without light attached)
GRPxx = Circuit Group

If you look at one of the returned objects, you'll see it's subscribing to various parameters (keys) on the object.

{ "objnam":"_A135", "keys":[ "OBJTYP", "SUBTYP", "PROBE", "STATUS" ] }

Also if you run the GetHardwareDefinition command (see Index.cshtml) you'll likely see it's an air temperature sensor (see below) and the key PROBE is the reading which will be periodically returned as a NotifyList event whenever the value changes (see site.js):

{"objnam":"_A135","params":{"OBJTYP":"SENSE","SUBTYP":"AIR","NAME":"00000","SNAME":"Air Sensor","SOURCE":"69","PROBE":"67","CALIB":"-2","LISTORD":"12"}}
 
Last edited:

guinness

Well-known member
May 3, 2019
289
California
@Gibby13 To expand on what I've written above and to help you understand the messaging I've created a Test page in the repo which uses the jsTree component to visually show all the objects returned from GetHardwareDefinition.

By right clicking on an object, the context menu will allow you to select a parameter (or key) whose value will be returned from IntelliCenter in the browser developer console.

At the moment I've disabled the circuit on/off menus as I haven't had the time to test, but you can also control circuits by entering setParam('C0001', 'ON') in the console with the corresponding object id and state.

@rmontgomery This might also be helpful to you on your effort to develop a GUI.

jstree.PNG
 
Last edited:
  • Like
Reactions: rmontgomery

rmontgomery

Well-known member
Oct 14, 2019
147
Rockwall, TX
So, finally am getting around to some programming. Starting with mobile app unless you would rather me start with desktop app. Have app connecting to signalr service and receiving streaming data.

Ryan
 

guinness

Well-known member
May 3, 2019
289
California
Mobile app would be great, whatever you can contribute would be appreciated. There's another member who developed an Android app with details at jonpcar/Pool-Controller and a screenshot below. It might be possible to reach out and get source code for that app then hook up the streaming data to that UI or at least you can draw some ideas from it if not.

 
Last edited:

rmontgomery

Well-known member
Oct 14, 2019
147
Rockwall, TX
The streaming data is a mess. I think I finally have GetHardwareDefinitions deserialized properly, but need to go through the values to check it out. I assume the response I receive is complete, so that is what I am using for my class definition for now.

That screen looks neat, will reach out.

Ryan
 

guinness

Well-known member
May 3, 2019
289
California
GetHardwareDefinitions response should be complete, but it's hierarchical in nature with modules (pool, spa, etc) containing child objects. The Test.html page does give a visualization if that helps. Object id's can appear more than once, an example is PMP01 (but maybe a bug). Also object id's that start with an X are inactive.