I see a "U" in my AquaController screen or status website; what is it and how do I fix it?


Seeing "U" or "Unknown" in the screen or webpage for the AquaController is most often nothing to be concerned about but understanding the conditions that lead to this indication is core in understanding how the AC thinks and processes the program.  It is often assumed that the logic in the AC is like modern day program languages and contains stateful logic and while it may appear to be the case it is actually much simpler than one would expect.

When the AC programs begins a run it 1st initialized all timers to "unknown"' at this point the controller doesn't know what a particular timer should be set to so unknown should make perfect sense.  Next the AC separates all 'If Time' statements, orders them by device and time or day and evaluates each one in order.  If a statement evaluates to TRUE the value of the timer is updated on ON or OFF depending on the condition.

Following the "If Time" statements the AC evaluates all other program lines, 1 at a time in order as they appear in the program.  Each line is treated separately, an important distinction to keep in mind in order to understand the AC logic.  As before, if a program condition evaluates to TRUE the configured timer will be set to ON or OFF as indicated in the statement.

Note: There are some special conditions which can alter the program but these will be ignored for this description (e.g., Max Change)

Once all program lines have been evaluated the AC will set each timer to the indicated state and the process begins again except that timer states are not re-initialized so they may contain existing state.

So; where does the "U" (or UNKNOWN) come from; take the following example:

Assume that the tank temperature is 77.1 F and the program contains the following lines related to temperature:

If Temp > 78.0 Then COL ON
If Timer < 77.0 Then COL OFF

When the program runs the COL timer will be initialized to "UNKNOWN" and the 1st line will be evaluated and since the tank temperature is NOT greater than 78.0 the statement evaluates to FALSE and COL is not changed (it remains UNKNOWN).  Next the 2nd statement is evaluated and again, the tank temperature of 77.1 is NOT less than 77.0 so this statement also evaluates to FALSE and COL is not changed (it remains UNKNOWN).   If these where all the program lines that affected COL then after all program lines are evaluated COL will be U (or UNKNOWN).

Oh, no, but my COL is ON and the AC doesn't know what to do; will my tank freeze?

The answer is, no.  As noted above the program is run over and over again (forever) and at some point in time the tank's temperature will reach 76.9 and the 2nd program statement above will evaluate to TRUE at which time the COL timer will be configured accordingly (to OFF) and the COL timer will be turned OFF.  Likewise, if the COL was off and the tank became warmer than 78.0 then the 1st statement would evaluate to TRUE and COL would be set to ON and the COL timer would be turned ON.

Do I ever need to worry about seeing "U" or UNKNOWN?

The short answer is usually not but if you see this for the 1st time and you should investigate it.  For example assume that your program only included 1 program statement above and was written like this:

If Temp < 77.0 Then COL OFF

And the COL was in fact OFF.  The tank would warm up and NEVER turn COL ON, it would remain UNKOWN until the tank cooled down all by itself and this could be bad.

In summary, the rule should is that for the 1st time you see U (or UNKNOWN) you should check your program for errors but if you see it in the future it is likely that your program has been restarted (because of a power outage, a program edit, etc) and the U will clear itself.