Wiznet makers

matthew

Published April 20, 2026 ©

169 UCC

9 WCC

46 VAR

0 Contests

1 Followers

1 Following

Original Link

ESP32_Solar_Thermal_Controller

An ESP32-S3 and W5500 Ethernet controller for monitoring solar thermal temperatures, controlling pumps, and logging system data through a local web UI.

COMPONENTS
PROJECT DESCRIPTION

ESP32 Solar Thermal Controller — W5500 Ethernet-Based Solar Heating and Pump Control System

URL Link

GitHub Repository:
https://github.com/seansplayin/ESP32_Solar_Thermal_Controller

Recommended Components

  • WIZnet W5500
  • ESP32-S3 DevKitC-1
  • MAX31865
  • PT1000 RTD Sensor
  • DS18B20 Temperature Sensors
  • DS3231 RTC
  • Relay Modules / Pump Relays
  • Solar Thermal Collectors
  • Thermal Storage Tank
  • DHW Pump / Heating Loop Pump
  • LittleFS
  • ESP Async WebServer
  • WebSocket
  • FreeRTOS
  • NTP Time Sync

PROJECT DESCRIPTION

📌 Overview

ESP32_Solar_Thermal_Controller is an open-source ESP32-based controller project for managing a solar thermal heating system.

Unlike a photovoltaic solar power project that generates electricity, this project is focused on solar thermal heating. In a solar thermal system, collectors capture heat from sunlight and transfer that heat through a water or glycol loop into a storage tank, domestic hot water system, or hydronic heating loop.

This controller reads multiple temperature sensors, compares temperatures across the collector, storage tank, circulation loop, DHW loop, and heating loop, and then controls pumps and relays based on configurable temperature thresholds.

The project also uses W5500 Ethernet to provide a local web dashboard and real-time WebSocket updates. Through a browser, users can monitor pump states, pump modes, current temperatures, runtime logs, temperature history, alarm states, and system configuration.

In short, this project is a local solar thermal heating controller that combines ESP32-S3, W5500 Ethernet, temperature sensors, relay control, web monitoring, and long-term logging.


📌 Project / Author Context

This repository is published by the GitHub user seansplayin. Based on the public repository, it appears to be an individual maker project rather than a commercial product.

The project looks like it was developed for a real solar thermal or hydronic heating installation. The code history and comments show many practical improvements around W5500 Ethernet stability, watchdog behavior, pump runtime logging, LittleFS migration, temperature logging, web page refactoring, DS18B20/PT1000 sensor integration, RTC/NTP time handling, and long-term system reliability.

This makes the project more than a simple demo. It is best understood as a field-oriented embedded control project for a real renewable heating system.


📌 What is a Solar Thermal Controller?

A solar thermal controller manages when heat should be moved from solar collectors into a storage tank or heating loop.

The key decision is when to turn pumps on or off. If the solar collector is significantly hotter than the storage tank, it makes sense to run the pump and move heat into storage. If the collector is too cool, or the tank is already hot enough, the pump should stop.

This project performs that decision-making on an ESP32. It reads temperatures from the collector, tank, circulation loop, domestic hot water loop, heating loop, and outdoor environment, then uses differential thresholds and safety limits to control pumps and relays.

In simple terms, it is an intelligent pump controller that decides when solar heat should be transferred, stored, circulated, or protected from freezing.


📌 What This Project Does

This project manages several pumps and relay-controlled outputs in a solar thermal heating system.

The controlled outputs include:

  • Panel lead pump
  • Panel lag pump
  • Heat tape
  • Circulation pump
  • DHW pump
  • Storage heating pump
  • Boiler circulation pump
  • Recirculation valve

Each pump can operate in Off, On, or Auto mode. In Auto mode, the controller uses temperature conditions and configurable differential values to determine whether a pump should run.

For example, if the panel manifold temperature is high enough and sufficiently warmer than the storage tank, the controller can turn on the lead pump to move heat into storage. If collector temperature rise is high enough, the lag pump can also be used. If the storage tank reaches its limit, the controller can stop heat transfer.

The project also includes freeze protection logic. If collector or line temperatures fall below configured thresholds, the controller can activate selected pumps to reduce the risk of freezing in outdoor or exposed piping.


📌 Temperature and Sensor System

The project uses multiple temperature sensing methods.

Main sensing components include:

  • PT1000 RTD sensor
  • MAX31865 RTD interface
  • DS18B20 temperature sensors
  • DS3231 real-time clock

The PT1000 sensor is used for important high-accuracy measurements such as panel manifold temperature. The MAX31865 interface reads the PT1000 RTD.

DS18B20 sensors are used across many locations in the system, including the collector supply, storage tank, outside ambient, circulation loop, DHW loop, furnace loop, and heat exchanger inlet/outlet.

The project defines system temperature names such as:

  • Panel Manifold Temperature
  • Collector Supply Temperature
  • 600 Gal Storage Tank Temperature
  • Outside Ambient Temperature
  • Circ Loop Return Temperature
  • Circ Loop Supply Temperature
  • Collector Return Temperature
  • DHW Glycol Supply / Return
  • Furnace Glycol Supply / Return
  • Potable Inline Heater Outlet
  • Potable Heat Exchanger Inlet / Outlet

Rather than monitoring only one temperature point, the controller observes the full thermal behavior of the solar heating loop.


📌 Web Dashboard and Logging

The project provides a browser-based dashboard using ESP Async WebServer and WebSocket.

The web interface includes functions such as:

  • Current temperature display
  • Pump state display
  • Pump mode selection
  • Heating call status
  • System configuration display and editing
  • Pump runtime table
  • Pump log file browser
  • Temperature log graph
  • Temperature log file browser
  • Alarm log view
  • System health, memory, and file system status

The second web page focuses on pump runtime and pump logs. It can show runtime values for today, yesterday, this month, last month, this year, last year, and total runtime for each pump.

The third web page focuses on temperature logs. Users can select a sensor and a date, view a graph, browse temperature log files, and download stored data.

This makes the controller useful not only for live control, but also for understanding how the heating system behaves over time.


📌 Role and Application of the WIZnet Chip

Related WIZnet product: W5500

In this project, the W5500 acts as the Ethernet interface that connects the ESP32-S3 controller to the local wired network.

The code defines W5500 SPI, interrupt, and reset pins, and the network manager initializes W5500 Ethernet through the ESP32 Ethernet stack. The W5500 is connected through a dedicated SPI bus and provides the network path for the local web dashboard, WebSocket updates, NTP time synchronization, log downloads, and network diagnostics.

This role is important because a solar thermal controller is often installed in a mechanical room, boiler room, utility area, or near storage tanks and heating equipment. In these environments, a wired Ethernet connection can be more reliable than depending on wireless signal quality.

For this project, W5500 enables the controller to become a networked local energy-system dashboard and control node.


📌 Features

  • Solar thermal pump control
    The controller manages pumps and relays based on collector, storage tank, DHW, heating loop, and circulation loop temperatures.
  • Lead / lag pump control
    The project separates panel lead and lag pumps, allowing more flexible solar collector loop control.
  • Auto / On / Off pump modes
    Each pump can be controlled manually or allowed to run automatically based on system conditions.
  • Freeze protection
    Collector freeze protection and line freeze protection logic are included. Selected pump groups can be activated when configured temperature sensors fall below threshold values.
  • Multi-sensor temperature monitoring
    The system uses PT1000 with MAX31865 and multiple DS18B20 sensors to monitor many points in the heating system.
  • W5500 Ethernet web dashboard
    W5500 Ethernet provides access to the local web dashboard and real-time WebSocket updates.
  • Pump runtime logging
    Pump start and stop events are recorded, and the controller calculates daily, monthly, yearly, previous-period, and total runtime data.
  • Temperature logging and graphing
    Temperature changes are stored in LittleFS and displayed as sensor-by-date graphs in the web UI.
  • RTC + NTP time handling
    The project combines NTP time synchronization with a DS3231 RTC so the system can continue using local time even when NTP is unavailable.
  • FreeRTOS task architecture
    Network setup, temperature reading, pump control, WebSocket transmission, logging, filesystem cleanup, and other functions are separated into FreeRTOS tasks.
  • Network watchdog and recovery
    The project includes network diagnostics and recovery behavior, including gateway testing, Ethernet event tracking, W5500 reset handling, and Ethernet restart logic.

📌 System Architecture

The project can be understood through five layers: sensor layer, control layer, network layer, logging layer, and web UI layer.

In the sensor layer, PT1000/MAX31865 and DS18B20 sensors measure temperatures across the collector, storage tank, heating loop, DHW loop, outdoor environment, and heat exchanger.

In the control layer, the ESP32-S3 reads these temperatures and controls pumps and relays based on configurable thresholds. Lead pump, lag pump, circulation pump, DHW pump, storage heating pump, boiler circulation pump, heat tape, and recirculation valve control are included.

In the network layer, W5500 Ethernet provides the local network interface. The ESP32 uses it for the web server, WebSocket updates, NTP synchronization, and log download features.

In the logging layer, LittleFS stores pump runtime logs and temperature logs. Pump logs are used for runtime reporting, while temperature logs are used for graphing and file download.

In the web UI layer, users can monitor the system in real time, change pump modes, view runtime history, inspect temperature trends, and check alarm or system status.


📌 Usage, Market, and Application Value

This project is suitable for makers, homeowners, and renewable-energy enthusiasts who operate or experiment with solar thermal heating systems.

Possible applications include:

  • DIY solar thermal heating systems
  • Solar collector pump control
  • Thermal storage tank monitoring
  • Domestic hot water preheating
  • Hydronic heating loop monitoring
  • Freeze protection control
  • Pump runtime analysis
  • Long-term temperature logging
  • Local web-based energy system dashboards
  • Low-cloud-dependency heating control

From a market perspective, this project is closer to a DIY renewable heating controller than a mass-market commercial product. However, it is highly meaningful as Maker Site content because it shows W5500 Ethernet being used in a real home energy control environment.

It demonstrates how wired Ethernet can support a local control system that needs reliability, live monitoring, web-based control, and long-term data logging.


📌 Additional Insight for W5500 Makers

This project is a useful learning example for W5500 makers.

Many W5500 examples stop at a simple web server or TCP client. This project goes further by using W5500 Ethernet as part of an operational control system.

Interesting points include:

  • Using W5500 as the wired network interface for a field controller
  • Tracking Ethernet events and network status
  • Performing gateway connection tests for network health monitoring
  • Recovering from network failures through reset and restart logic
  • Updating a web dashboard through WebSocket messages
  • Separating control, logging, web UI, and network functions into FreeRTOS tasks
  • Handling sensor, filesystem, web, and network workloads in one embedded controller

For makers, this project is valuable because it shows how W5500 Ethernet can support a practical embedded controller that must operate for long periods, not just a short demonstration.


📌 Things to Know Before Building

This project can be connected to real pumps, heating equipment, domestic hot water systems, and freeze protection functions. It should therefore be treated as a real control system, not only as a software demo.

Before building, users should check:

  • Whether the ESP32-S3 DevKitC-1 pin mapping matches the board being used
  • Whether the W5500 SPI, interrupt, and reset pins match the actual wiring
  • Whether the relay module is active-low or active-high
  • Whether the pump relays match the voltage and current requirements of the pumps
  • Whether AC pump or boiler-related wiring is safely isolated
  • Whether DS18B20 ROM assignments match the actual sensor locations
  • Whether the PT1000/MAX31865 wiring matches the 4-wire configuration
  • Whether the DS3231 RTC and NTP time sync are working correctly
  • Whether the LittleFS partition size is sufficient for the expected log volume
  • Whether freeze protection logic matches the real plumbing and pump layout
  • Whether manual and automatic pump modes behave as expected
  • Whether long-term Ethernet link loss or DHCP failure behavior has been tested

Because this project can interact with heating and pump systems, real installations should follow proper electrical, plumbing, and heating safety practices.


📌 Summary

ESP32_Solar_Thermal_Controller is an ESP32-S3 and W5500 Ethernet-based controller for solar thermal heating systems. It combines PT1000/MAX31865, DS18B20 sensors, DS3231 RTC, relay outputs, LittleFS, ESP Async WebServer, WebSocket, and FreeRTOS to control and log temperatures and pump operation across solar collectors, a storage tank, DHW, and heating loops.

From a WIZnet perspective, the key point is that W5500 is not just a simple network add-on. It enables the local web dashboard, WebSocket real-time status updates, log downloads, NTP synchronization, and network recovery behavior.

On the WIZnet Maker Site, this project can be introduced as a W5500 Ethernet-based local control and monitoring project for renewable energy heating systems.


📌 Similar Existing WIZnet Maker Site Content

It is difficult to find an existing WIZnet Maker Site post that exactly matches ESP32 Solar Thermal Controller as a “solar thermal heating controller.” However, the following existing contents can be connected from the perspectives of temperature-based control, relay automation, Ethernet-based monitoring, and energy/facility management.


1. WizOnOff

URL Link:
https://maker.wiznet.io/nk_maker/contest/wizonoff/

Why it is similar:
WizOnOff is introduced as a standalone automation controller with four relays and a DS18B20 temperature sensor. It is similar to ESP32 Solar Thermal Controller because both projects read temperature data and control external devices through relays.

ESP32 Solar Thermal Controller also uses multiple temperature sensors to control pump relays. In particular, it controls outputs such as heat tape, circulation pump, DHW pump, storage heating pump, and boiler circulation pump, making it similar from the perspective of temperature-driven relay automation.

Difference:
WizOnOff is closer to a general-purpose IoT relay automation board. It can be used for various IoT automation experiments such as MQTT, ThingSpeak, DS18B20 sensor testing, and relay board testing.

In contrast, ESP32 Solar Thermal Controller is not just a general relay board. It is a dedicated control project for a solar thermal heating system, including solar collectors, storage tank, DHW, heating loop, freeze protection, and pump runtime logging. It goes beyond general automation by implementing specialized control logic for a real renewable heating system.


2. Programmable IoT Edge ESP32 Ethernet IO Module

URL Link:
https://maker.wiznet.io/matthew/resellers/programmable-iot-edge-esp32-ethernet-io-module/

Why it is similar:
This content introduces an ESP32-based Ethernet I/O module and covers remote monitoring, secure I/O control, MODBUS TCP, MQTT, Ethernet, Wi-Fi, Bluetooth, utilities and energy monitoring, environmental monitoring, alarm applications, and automated task applications.

ESP32 Solar Thermal Controller also reads field data, controls pump and relay outputs, and provides a local web dashboard with real-time status updates through W5500 Ethernet. Therefore, both contents share the concept of a network-connected monitoring and control device.

Difference:
The Programmable IoT Edge ESP32 Ethernet IO Module is closer to an industrial, facility, or general-purpose I/O monitoring and control product. It is designed around industrial protocols, cloud platforms, PLC/SCADA-style applications, and broad I/O use cases.

ESP32 Solar Thermal Controller is not a general I/O module. It is an application-specific maker project for a solar thermal heating system. It combines multiple temperature sensors, pump control, freeze protection, runtime logs, and temperature history graphs, making it a controller that directly operates and records the behavior of an energy system.


3. Alert System Using W5100S-EVB-Pico & AWS SNS

URL Link:
https://maker.wiznet.io/gemma/projects/alert-system-using-w5100s-evb-pico-aws-sns/

Why it is similar:
This project sends alerts through AWS IoT Core and AWS SNS when a sensor value exceeds a configured threshold. It is similar to ESP32 Solar Thermal Controller because both projects monitor sensor values, compare them with thresholds, and trigger events or actions.

ESP32 Solar Thermal Controller also processes temperature thresholds and system states to trigger pump control, freeze protection, alarm events, network fault handling, and sensor fault handling. In that sense, both projects share a sensor threshold → system action / alert workflow.

Difference:
The Alert System project is mainly focused on cloud-based notification. When a sensor value crosses a threshold, the system sends a notification using AWS SNS.

ESP32 Solar Thermal Controller focuses more on local control. When temperature conditions change, it directly controls physical pump relays, updates status through WebSocket, and stores runtime and temperature history in LittleFS. It expands beyond alerting into a local energy controller that directly operates field equipment and records long-term system data.


📌 Difference and Expansion Value

The biggest differentiator of ESP32 Solar Thermal Controller is that, while many existing Maker Site contents focus on general relay automation, Ethernet I/O monitoring, or sensor-threshold alerts, this project is an application-specific embedded controller for a real solar thermal heating system.

Compared with the existing related content, the connection can be summarized as follows:

  • WizOnOff is similar from the perspective of temperature sensor + relay automation.
  • Programmable IoT Edge ESP32 Ethernet IO Module is similar from the perspective of Ethernet-based monitoring and control.
  • Alert System Using W5100S-EVB-Pico & AWS SNS is similar from the perspective of sensor-threshold-based event handling.
  • ESP32 Solar Thermal Controller expands these ideas into local control, logging, and web dashboarding for a real renewable heating system.

ESP32 Solar Thermal Controller provides the following expansion value.

First, it can be introduced as an example of WIZnet Ethernet being applied to a renewable energy control system.
While many Maker Site posts focus on smart home, sensor alerts, or relay automation, examples of actual thermal energy system control are relatively rare. This project is a strong example of using W5500 Ethernet as the operating network for a renewable heating system.

Second, it expands simple relay control into system-level pump control.
Many relay automation projects stop at basic On/Off control. This project considers collector temperature, storage tank temperature, DHW loop, heating loop, circulation loop, and outdoor temperature together to control lead pump, lag pump, heat tape, circulation pump, DHW pump, storage heating pump, and more.

Third, it expands sensor monitoring into long-term operational data.
Instead of simply displaying current temperature, the project provides pump runtime, daily/monthly/yearly/total runtime, temperature logs, date-based graphs, and log download features. This is useful for performance analysis and maintenance of an energy system.

Fourth, it can be used as a field-oriented Ethernet reliability example.
This project does not use W5500 Ethernet only to host a basic web page. It includes a network watchdog, gateway test, W5500 reset handling, and Ethernet recovery logic to support long-running operation. This is an important point for real facility-control projects.

Fifth, it is a local-first control example instead of a cloud-first alert system.
While the AWS SNS alert project is closer to cloud notification, ESP32 Solar Thermal Controller centers on a local web dashboard and local file logging. This is well suited for renewable heating systems that should continue operating and recording data even with limited cloud dependency.

Sixth, it expands Maker Site coverage from smart home projects into energy system maker content.
This project deals with solar collectors, storage tanks, heating loops, and domestic hot water systems, not just room automation or appliance control. It helps expand WIZnet Maker Site keywords into renewable energy, hydronic heating, field controllers, and long-term monitoring.

In conclusion, when connected with existing Maker Site content, ESP32 Solar Thermal Controller becomes a strong expansion case that links temperature sensor + relay automation → Ethernet I/O monitoring → threshold alert → renewable heating system control.

 

📌 FAQ

Q1. What is this project?
It is a solar thermal heating controller that uses ESP32-S3 and W5500 Ethernet to monitor temperatures and control pumps across a solar collector, storage tank, DHW loop, and heating loop.

Q2. Is this a solar power generation project?
No. This is not a photovoltaic solar power project. It is for solar thermal heating, where heat is collected and moved into a storage tank or heating loop.

Q3. Which WIZnet chip is used?
The project uses W5500. The code defines W5500 SPI, interrupt, and reset pins, and the network manager initializes W5500 Ethernet for the ESP32-S3 controller.

Q4. What sensors are used?
The project uses a PT1000 RTD sensor through a MAX31865 interface, multiple DS18B20 temperature sensors, and a DS3231 real-time clock.

Q5. What devices can it control?
It can control relay outputs for the lead pump, lag pump, heat tape, circulation pump, DHW pump, storage heating pump, boiler circulation pump, and recirculation valve.

Q6. Does it include a web UI?
Yes. It includes a local web dashboard, a pump runtime page, a temperature log graph page, and alarm/status pages.

Q7. Why is it meaningful for the WIZnet Maker Site?
It shows W5500 Ethernet being used as the network backbone for a real renewable heating controller with long-term operation, logging, web UI, pump control, and network recovery features.

Documents
Comments Write