SuncrestReef
That Apex guy
- Review score
- +0 /0 /-0
R2R Excellence Award
Reef Tank 365
Article Contributor
Reef Squad Emeritus
Controller Advisor
Build Thread Contributor
When I wrote my 8-part Apex Programming Tutorial series, all of the coding examples were applied to outputs where the Control Type was set to Advanced. Control Types are pre-set shortcuts to program an output for a specific device, allowing less experienced Apex users with a simple entry form to fill in the desired settings, and the Apex does the programming for you behind the scenes. The EB832 EnergyBar comes pre-programmed with each output set for specific Control Types, so you can just plug your lights into outputs 1 & 2, return pump in output 3, heater in output 4, etc. to get your system up and running quickly. However, these pre-programmed outputs can be changed to any Control Type you choose.
To set a Control Type, first click the gear icon on the Fusion dashboard for the output you want to configure:
View attachment 1685715
The Control Type can then be selected from the dropdown list on the Output Configuration screen:
View attachment 1685714
There are 12 Control Types to choose from:
Below are screenshots of each Control Type, and then the automatically-generated code when switching it to Advanced. In screens where Fallback is mentioned, Fallback is the setting applied if the output's module is disconnected from the Apex, or if the Apex is not communicating with the module (such as when rebooting). Also, the Log checkbox is useful if you want to review a historic record of each time an output is turned on or off. This can be viewed in the Output Log screen.
Control Type: Always
Always should be used any time you want the output to remain On or Off 24/7. This is good for devices that you never want to turn off, or if you have an unused output and always want it to be powered off so if you plug something in it doesn't accidentally power on before you're ready.
View attachment 1685606
Here is the generated code for Always:
View attachment 1685605
Control Type: ATO
ATO should be used if you're configuring a non-Neptune ATO system. (Do NOT use this control type if you have the Neptune ATK. Please follow the instructions in my ATK Tutorial instead.)
With this Control Type you specify the low water and high water switch ports, and how long to wait before turning on the pump. These are typically float switches attached to a Breakout Box, but could also be optical sensors attached to the FMM module.
View attachment 1685586
Here is the generated code for ATO:
View attachment 1685585
Control Type: Chiller
Chiller allows you to specify the high temperature to turn on your chiller, and the low temperature to turn it off. You also need to specify which temperature probe to use if you have more than one. This Control Type could also be used for a cooling fan rather than a refrigerated chiller.
View attachment 1685604
Here is the generated code for Chiller:
View attachment 1685603
Control Type: Feeder
Feeder is used to control the Neptune AFS automatic feeder. Of all the Control Types, this one is probably the most convenient because programming the AFS can be complicated. While this Control Type is convenient, it does not allow you to coordinate other devices such as pumps, skimmers, or powerheads to shut down during automated feedings. For this I wrote an entire tutorial topic on Apex Feed Cycles which covers how to automate all your devices during feeding.
For the Feeder, you specify the time of day for the first feeding, how many times the AFS drum should rotate per feeding, how many times to feed per day, and if more than one feeding per day how long to wait between feedings. The Feed Cycle option is to choose which Feed button can be used to manually trigger the feeder outside of the scheduled times.
View attachment 1685602
Here is the generated code for Feeder. Please see my tutorial on Apex Timers for details on the OSC and If Time commands.
View attachment 1685601
Control Type: Heater
Heater allows you to specify the low temperature to turn on your heater, and the high temperature to turn it off. You also need to specify which temperature probe to use if you have more than one.
View attachment 1685600
Here is the generated code for Heater:
View attachment 1685599
Control Type: Light
Light allows you to schedule the on and off times for a light, and a temperature to turn it off if the water gets too warm. You also need to specify which temperature probe to use if you have more than one. Hysteresis is the time (in MM:SS) to wait before turning the lights back on once the temperature drops below the limit.
View attachment 1685584
Here is the generated code for Light:
View attachment 1685583
Control Type: pH Control
pH Control allows you to turn on or turn off a device based on the pH probe reading. This is useful for controlling CO2 feed in calcium reactors, or to turn off dosing of certain additives that impact the pH of your water. You need to select your pH probe if you have more than one, the high pH reading, the low pH reading, and whether to turn on the device when pH is low or high.
View attachment 1685595
Here is the generated code for pH Control:
View attachment 1685594
Control Type: ORP Control
ORP Control allows you to turn on or turn off a device based on the ORP probe reading. This is typically used to control an ozone generator. You need to select your ORP probe if you have more than one, the high ORP reading, the low ORP reading, and whether to turn on the device when ORP is low or high.
View attachment 1685598
Here is the generated code for ORP Control:
View attachment 1685597
Control Type: Powerhead
Powerhead allows you to configure the output to turn on and off on a repeating timed cycle. This is typically only used for powerheads which do not have any variable speed control. The times are specified in MM:SS format. The Initial Off Time is typically used to offset the cycle from another powerhead to create an oscillating flow pattern. If you only have one powerhead, the Initial Off Time is of little value, but keep in mind the total amount of time the output is off will be the combination of the Initial Off Time and the Off Time. For example, if you want the powerhead on for 1 minute and off for 1 minute, but you are using the Initial Off Time, then split the 1 minute between the Initial Off Time field and the Off Time field, such as 0:30 and 0:30.
The Feed Timer option will turn off the output when the selected Feed button is manually pressed, and the Feed Timer Delay is the number of additional minutes to remain off after the Feed timer has expired. See my tutorial on Apex Feed Cycles for more details.
View attachment 1685593
Here is the generated code for Powerhead. Please see my tutorial on Apex Timers for details on the OSC command.
View attachment 1685592
Control Type: Return Pump
Return Pump is pretty self explanatory. The Feed Timer option will turn off the output when the selected Feed button is manually pressed, and the Feed Timer Delay is the number of additional minutes to remain off after the Feed timer has expired. See my tutorial on Apex Feed Cycles for more details.
View attachment 1685590
Here is the generated code for Return Pump:
View attachment 1685589
Control Type: Skimmer
Skimmer is also pretty self explanatory. The Feed Timer option will turn off the output when the selected Feed button is manually pressed, and the Feed Timer Delay is the number of additional minutes to remain off after the Feed timer has expired. See my tutorial on Apex Feed Cycles for more details.
The Defer Time is the number of minutes & seconds to wait before turning on the skimmer, typically to allow the water level in the sump to normalize if the return pump was also shut down. This is to prevent skimmer overflows.
View attachment 1685588
Here is the generated code for Skimmer:
View attachment 1685587
I hope this article gives you better understanding of how Control Types can be used, and also provides a starting point to get into more advanced Apex programming. Be sure to read the tutorial series linked a the top of this article to expand your Apex programming skills.
Happy reefing!
To set a Control Type, first click the gear icon on the Fusion dashboard for the output you want to configure:
View attachment 1685715
The Control Type can then be selected from the dropdown list on the Output Configuration screen:
View attachment 1685714
There are 12 Control Types to choose from:
- Advanced
- Always
- ATO
- Chiller
- Feeder
- Heater
- Light
- pH Control
- ORP Control
- Powerhead
- Return Pump
- Skimmer
Below are screenshots of each Control Type, and then the automatically-generated code when switching it to Advanced. In screens where Fallback is mentioned, Fallback is the setting applied if the output's module is disconnected from the Apex, or if the Apex is not communicating with the module (such as when rebooting). Also, the Log checkbox is useful if you want to review a historic record of each time an output is turned on or off. This can be viewed in the Output Log screen.
Control Type: Always
Always should be used any time you want the output to remain On or Off 24/7. This is good for devices that you never want to turn off, or if you have an unused output and always want it to be powered off so if you plug something in it doesn't accidentally power on before you're ready.
View attachment 1685606
Here is the generated code for Always:
View attachment 1685605
Control Type: ATO
ATO should be used if you're configuring a non-Neptune ATO system. (Do NOT use this control type if you have the Neptune ATK. Please follow the instructions in my ATK Tutorial instead.)
With this Control Type you specify the low water and high water switch ports, and how long to wait before turning on the pump. These are typically float switches attached to a Breakout Box, but could also be optical sensors attached to the FMM module.
View attachment 1685586
Here is the generated code for ATO:
View attachment 1685585
Control Type: Chiller
Chiller allows you to specify the high temperature to turn on your chiller, and the low temperature to turn it off. You also need to specify which temperature probe to use if you have more than one. This Control Type could also be used for a cooling fan rather than a refrigerated chiller.
View attachment 1685604
Here is the generated code for Chiller:
View attachment 1685603
Control Type: Feeder
Feeder is used to control the Neptune AFS automatic feeder. Of all the Control Types, this one is probably the most convenient because programming the AFS can be complicated. While this Control Type is convenient, it does not allow you to coordinate other devices such as pumps, skimmers, or powerheads to shut down during automated feedings. For this I wrote an entire tutorial topic on Apex Feed Cycles which covers how to automate all your devices during feeding.
For the Feeder, you specify the time of day for the first feeding, how many times the AFS drum should rotate per feeding, how many times to feed per day, and if more than one feeding per day how long to wait between feedings. The Feed Cycle option is to choose which Feed button can be used to manually trigger the feeder outside of the scheduled times.
View attachment 1685602
Here is the generated code for Feeder. Please see my tutorial on Apex Timers for details on the OSC and If Time commands.
View attachment 1685601
Control Type: Heater
Heater allows you to specify the low temperature to turn on your heater, and the high temperature to turn it off. You also need to specify which temperature probe to use if you have more than one.
View attachment 1685600
Here is the generated code for Heater:
View attachment 1685599
Control Type: Light
Light allows you to schedule the on and off times for a light, and a temperature to turn it off if the water gets too warm. You also need to specify which temperature probe to use if you have more than one. Hysteresis is the time (in MM:SS) to wait before turning the lights back on once the temperature drops below the limit.
View attachment 1685584
Here is the generated code for Light:
View attachment 1685583
Control Type: pH Control
pH Control allows you to turn on or turn off a device based on the pH probe reading. This is useful for controlling CO2 feed in calcium reactors, or to turn off dosing of certain additives that impact the pH of your water. You need to select your pH probe if you have more than one, the high pH reading, the low pH reading, and whether to turn on the device when pH is low or high.
View attachment 1685595
Here is the generated code for pH Control:
View attachment 1685594
Control Type: ORP Control
ORP Control allows you to turn on or turn off a device based on the ORP probe reading. This is typically used to control an ozone generator. You need to select your ORP probe if you have more than one, the high ORP reading, the low ORP reading, and whether to turn on the device when ORP is low or high.
View attachment 1685598
Here is the generated code for ORP Control:
View attachment 1685597
Control Type: Powerhead
Powerhead allows you to configure the output to turn on and off on a repeating timed cycle. This is typically only used for powerheads which do not have any variable speed control. The times are specified in MM:SS format. The Initial Off Time is typically used to offset the cycle from another powerhead to create an oscillating flow pattern. If you only have one powerhead, the Initial Off Time is of little value, but keep in mind the total amount of time the output is off will be the combination of the Initial Off Time and the Off Time. For example, if you want the powerhead on for 1 minute and off for 1 minute, but you are using the Initial Off Time, then split the 1 minute between the Initial Off Time field and the Off Time field, such as 0:30 and 0:30.
The Feed Timer option will turn off the output when the selected Feed button is manually pressed, and the Feed Timer Delay is the number of additional minutes to remain off after the Feed timer has expired. See my tutorial on Apex Feed Cycles for more details.
View attachment 1685593
Here is the generated code for Powerhead. Please see my tutorial on Apex Timers for details on the OSC command.
View attachment 1685592
Control Type: Return Pump
Return Pump is pretty self explanatory. The Feed Timer option will turn off the output when the selected Feed button is manually pressed, and the Feed Timer Delay is the number of additional minutes to remain off after the Feed timer has expired. See my tutorial on Apex Feed Cycles for more details.
View attachment 1685590
Here is the generated code for Return Pump:
View attachment 1685589
Control Type: Skimmer
Skimmer is also pretty self explanatory. The Feed Timer option will turn off the output when the selected Feed button is manually pressed, and the Feed Timer Delay is the number of additional minutes to remain off after the Feed timer has expired. See my tutorial on Apex Feed Cycles for more details.
The Defer Time is the number of minutes & seconds to wait before turning on the skimmer, typically to allow the water level in the sump to normalize if the return pump was also shut down. This is to prevent skimmer overflows.
View attachment 1685588
Here is the generated code for Skimmer:
View attachment 1685587
I hope this article gives you better understanding of how Control Types can be used, and also provides a starting point to get into more advanced Apex programming. Be sure to read the tutorial series linked a the top of this article to expand your Apex programming skills.
Happy reefing!
Last edited by a moderator: