This is a cheap pool heating automation which uses solar power to heat the water.
It is based on an esp8266 module (connected to a router or used as an AP(accesz point)) which allows the system to be controlled through WiFi using a web browser or it's app (still in development).
It uses a water pump/filter to recirculate the water in the pool through a black hose (pipe)/solar panel to heat it.
The system continuously measures the water temperature from the hose/pipe and starts the water pump/filter when a certain temperature is reached.
It can also be turned on/off by the user.
The web app offers full control of the system, including a schedule to turn on the pump/filter between 2 hours and also keeps the temperature log of the past 3 days.
The software can be updated through WiFi (OTA) allowing bug fixes/new features to be done remotely.
Also the WiFi data is encrypted using WPA2 encryption.
Here is the link to GitHub with the sketch.
It is explained alongside with the functions (//comment) in the code, but if you have any questions, feel free to hit the comments.
In the final version, the WiFi SSID and password and the ap name and password will be configurable with the website, so you won't need to change the code.
And it's done!
The Web App is made for mobile phones only so on the PC it might take a lot more time to load and it will not look as well as on the phone.
Open any browser and write the IP address of the Esp (you need to be connected to the same network as the Esp).
The big button will toggle the relay.
Under it there is a form to set the temperature of the water
The OTA button is for OTA programming (if you tap it and don't want to reprogram it, reset the system (unplug it))
The log button will take you to the log page with the log of the temperatures of the past 3 days
The time button will take you to the time settings page (to set the current time/date)
The settings button will take you to the settings page, where you can set the time the relay will be on/off and schedule the esp to keep the relay on between 2 hours
The code might have bugs, If you find any, just report them in the comments and i'll try to fix them.
This code also includes OTA programming (tutorial here), so if you want to change the code you won't have to tear it apart, just press the OTA button on the home page.