I wanted to share a small project that gradually turned into something much more useful than I originally expected: a local, at-the-tank touchscreen feed controller and Apex status display.
It started because I added another tank and had a 15-minute feed automation in Smart Life. Every time I wanted to feed, I had to find the tablet, unlock it, open the app, find the automation, and run it. I wanted one simple physical control at the tank, especially when I had food in my hands.
My first version used an ESP32-S3 SuperMini, a 0.96-inch OLED, and four physical buttons. It proved the basic idea: a physical ESP32 control could call Home Assistant, which could then trigger an Apex feed mode or a feed automation.
That version eventually had a small menu for Fusion 15, Apex Feed A through D, and Apex Cancel. It worked, but the small OLED and button navigation made it feel more like a compact remote than a true at-the-tank interface.
I then moved to an ESP32-2432S028 CYD touchscreen. The goal was not just a larger display. I wanted to walk up to the tank, see what is active, press the action I want, get confirmation that it happened, and see when things will return to normal.
The current touchscreen includes Apex Feed A, B, C, and D, Apex Cancel, Fusion 15 start, Fusion Cancel during an active Fusion feed, live Apex and Fusion countdowns, a date/time header, alarms and warnings, informational status banners, and rotation between multiple active statuses.
The screen stays intentionally simple. It shows the current Apex and Fusion state, the main feed controls, and a footer that normally says Select Feed Action but changes to a warning, alarm, or informational status when something is active.
The normal control path stays local:
Apex local REST/XML endpoints, then Home Assistant for scripts, automations, templates, and status processing, then encrypted ESPHome communication to the CYD.
The touchscreen does not talk directly to the Apex and does not store Apex credentials.
The optional Fusion-style feed workflow is handled by Home Assistant. It turns off the return, UV, and skimmer, then starts a 15-minute timer. When the timer finishes, or when I press Fusion Cancel, it turns the return and UV back on, waits one minute, then turns the skimmer on.
The button reflects that state directly. When inactive, it is blue and says Fusion 15. When the timer is active, it changes to red and says Fusion Cancel.
One limitation worth noting is that the current restore sequence explicitly turns those configured devices back on. It is a reliable staged restore, but it is not yet a true state snapshot-and-restore system for equipment that may already have been intentionally off.
The footer can show things like Trident Testing, SOW Wavemaker Running, High Temperature Warning, and High Temperature Alarm. Multiple active items rotate and show an indicator such as 1/2 or 2/2.
I cleaned up and published the project as a modular community build here:
https://github.com/reefprintshare/apex-cyd-feed-controller
It includes sanitized ESPHome YAML, Home Assistant examples for Apex feed controls, live feed status, countdowns, a custom Fusion-style feed workflow, alert/footer templates, secrets templates, installation notes, troubleshooting, and the screenshots above.
I built and refined this with a lot of help from ChatGPT. The idea, workflow, desired behavior, and testing all came from my own setup, while AI was especially useful for working through ESPHome, Home Assistant YAML, Apex local API calls, display logic, troubleshooting, documentation, and turning it into something shareable.
I am sharing it less as a finished one-size-fits-all product and more as a jumping-off point for other reefers. Someone may only want touchscreen buttons for Feed A through D and Cancel. Others may want to add countdowns, custom feed behavior, alerts, or their own equipment logic.
A few cautions for anyone trying it: keep it local, do not expose Apex, Home Assistant, or ESPHome directly to the internet, and test every feed, cancel, restore, and safety behavior against your own equipment before relying on it.
Feedback, improvements, and ideas for other useful tank-side status or control screens are welcome.
It started because I added another tank and had a 15-minute feed automation in Smart Life. Every time I wanted to feed, I had to find the tablet, unlock it, open the app, find the automation, and run it. I wanted one simple physical control at the tank, especially when I had food in my hands.
My first version used an ESP32-S3 SuperMini, a 0.96-inch OLED, and four physical buttons. It proved the basic idea: a physical ESP32 control could call Home Assistant, which could then trigger an Apex feed mode or a feed automation.
That version eventually had a small menu for Fusion 15, Apex Feed A through D, and Apex Cancel. It worked, but the small OLED and button navigation made it feel more like a compact remote than a true at-the-tank interface.
I then moved to an ESP32-2432S028 CYD touchscreen. The goal was not just a larger display. I wanted to walk up to the tank, see what is active, press the action I want, get confirmation that it happened, and see when things will return to normal.
The current touchscreen includes Apex Feed A, B, C, and D, Apex Cancel, Fusion 15 start, Fusion Cancel during an active Fusion feed, live Apex and Fusion countdowns, a date/time header, alarms and warnings, informational status banners, and rotation between multiple active statuses.
The screen stays intentionally simple. It shows the current Apex and Fusion state, the main feed controls, and a footer that normally says Select Feed Action but changes to a warning, alarm, or informational status when something is active.
The normal control path stays local:
Apex local REST/XML endpoints, then Home Assistant for scripts, automations, templates, and status processing, then encrypted ESPHome communication to the CYD.
The touchscreen does not talk directly to the Apex and does not store Apex credentials.
The optional Fusion-style feed workflow is handled by Home Assistant. It turns off the return, UV, and skimmer, then starts a 15-minute timer. When the timer finishes, or when I press Fusion Cancel, it turns the return and UV back on, waits one minute, then turns the skimmer on.
The button reflects that state directly. When inactive, it is blue and says Fusion 15. When the timer is active, it changes to red and says Fusion Cancel.
One limitation worth noting is that the current restore sequence explicitly turns those configured devices back on. It is a reliable staged restore, but it is not yet a true state snapshot-and-restore system for equipment that may already have been intentionally off.
The footer can show things like Trident Testing, SOW Wavemaker Running, High Temperature Warning, and High Temperature Alarm. Multiple active items rotate and show an indicator such as 1/2 or 2/2.
I cleaned up and published the project as a modular community build here:
https://github.com/reefprintshare/apex-cyd-feed-controller
It includes sanitized ESPHome YAML, Home Assistant examples for Apex feed controls, live feed status, countdowns, a custom Fusion-style feed workflow, alert/footer templates, secrets templates, installation notes, troubleshooting, and the screenshots above.
I built and refined this with a lot of help from ChatGPT. The idea, workflow, desired behavior, and testing all came from my own setup, while AI was especially useful for working through ESPHome, Home Assistant YAML, Apex local API calls, display logic, troubleshooting, documentation, and turning it into something shareable.
I am sharing it less as a finished one-size-fits-all product and more as a jumping-off point for other reefers. Someone may only want touchscreen buttons for Feed A through D and Cancel. Others may want to add countdowns, custom feed behavior, alerts, or their own equipment logic.
A few cautions for anyone trying it: keep it local, do not expose Apex, Home Assistant, or ESPHome directly to the internet, and test every feed, cancel, restore, and safety behavior against your own equipment before relying on it.
Feedback, improvements, and ideas for other useful tank-side status or control screens are welcome.
Some of us are a little 
