A few years ago I made one of my dreams come true. I built a pond in our garden. There are water plants, fish, and other water animals living in the pond. To keep the pond in good conditions, I have automated control of its environment with the help of Claris FileMaker and Raspberry Pi…
First year with the pond was mostly easy. There were not too many fish, plants were small, there was no dirt from the trees surrounding the pond. Second year was an eye opening lesson as it brought several issues.
Pond issues
The pond contains about 35 cubic meters of water (about 9246 gallons) and it’s 2 meters (6.5 feet) deep in its deepest point. It is equipped with both mechanical and pressurized filter, UV light, pumps for filtration and waterfall, and an air pump.
The first issue I faced was with the water getting too warm. In the summer months on sunny days, when the air temperature exceeded 30°C, the heat was getting even to deeper parts of the pond thanks to water circulation. The water for waterfall was being suck by the pump from the bottom and flowing back to the pond over the hot stones. Since water temperature was essential for the fish lives, it was necessary to keep it under 25°C.
Second issue was water clarity. During sunny days, when the water temperature was sufficient for algae to grow, the water was getting green and cloudy. So it was important to add some germs to help getting rid of dirt that was otherwise feeding the algae. Adding germs, however, required to turn off the UV light for a few days, because it would immediately kill them. Having to go to the tight technical shaft to turn off the UV light one day and then again to turn it back on two days later was not very convenient.
I enjoy taking care of the pond and I know it’s a live environment, that I have to adjust my care to, even according to current weather. Unfortunately, constant monitoring of temperatures, turning the UV light on and off, and other tasks, started to annoy me. So I started to look for ways how to automate the repeating activities and focus only on important and less boring things.
Temperature monitoring
The first activity I got automated was monitoring the temperature of both the outside air and the pond water. For this purpose i used Raspberry Pi with various temperature sensors. The Raspberry Pi itself is connected to my home network over WiFi and regularly submits the measured values to a database.
I am using PostgreSQL as a highly efficient intermediate storage of the raw data, which I am pulling to my FileMaker app using ODBC. Extra benefit of using PostgreSQL is that I can also easily use the same data to feed web applications.
Based on the collected temperature stats I was able to figure out what water temperature would be the best, and perform further improvements.
Waterfall pump control
The next component I automated was the pump for my waterfall. I connected the pump to a remotely controlled power outlet. I could control the outlet either directly using the GPIO pins on the Raspberry Pi, but to retain the original functionality of the switch and avoid tampering with it I decided to simply emulate the remote control.
To control the power outlet, I loaded the control signal sequences to Raspberry Pi, and added a radio transmitter to the Pi to transmit the control signals.
Remote control app
I used Claris FileMaker to create a database with an overview of the pond status (water temperature, air temperature, historical data, status of electrical devices), where I implemented some logic and rules how to control individual devices based on the current state.
For example, I can use a native FileMaker app, built with Xgode and running on my iPhone, to remotely turn off the UV light for a predefined amount of time after I have added germs to the pond, so that they can sufficiently procreate. The UV light automatically turns back on after the specified time elapses, so that it begins killing unwanted algae again.
Automation using FileMake Server
An automated schedule running on FileMaker Server then constantly monitors the water and air temperature during days and nights, and activated o deactivates the waterfall, to ensure that the pond water does not get heated or cooled unintentionally. Thanks to this I am able to maintain the water temperature within limits good for the fish and other animals.
Yet another thing controlled by a FileMaker Server schedule is the pond airing, depending on current needs. During warm months it is bringing more air to the shallow waters, while at night it is blowing air to the deep bottom of the pond in order to mix the water and let it cool down from the outside air.
Enjoying the results
Since the pond is my hobby, I like to also look at graphical reports, where I can see how the water temperature was changing over time in comparison to the air temperature. When an unexpected situation arises, I am automatically notified by a push notification sent to my cell phone, so I can respond promptly.
In the future, I am planning to collect more data about the pond, such as pH of the water, and other values that may have significant impact on the life conditions in the pond. The existing automations have, however, already freed me of all the tedious repeating maintenance activities, so that I can truly enjoy the pond and relax.
This pond is my hobby. And I am glad I could take advantage of my work expertise and experience to enjoy it even more. On the other side, I can now take the experience I gained with the pond back to my work, and use it for the projects we do for our customers, enjoying the work even more.