Hello everyone, first post and I figured I could start with some yummy stuff. This will be a long post and I do love to write in detail so buckle up.
First a little bit of background info, I'm a 25 year old software developer from a tiny island in the Mediterranean Sea called Malta. I've been fishkeeping since 2010 and while my planted tanks were nothing special I always enjoyed them. I currently have 5 tanks, a 180L community tank, a 40L shrimp tank, a 40L guppy tank, an 80L tank housing a Mississippi Map turtle and an ~80L tank which is the one this project is based on.
So let's get to it. The idea is to have a way to monitor and have historic data about the tank parameters while also having automation with the possibility of manually changing parameters.
Please note that this project is currently in progress and things might change every now and then. Some data/information might also be incomplete or missing for the time being. The code will be released once I'm happy with it and you will be able to do whatever you like with it although this project might take some time to be fully completed because of other priorities I have at the moment.
This tank will be housing plants (of course) and a variety of shrimp which will be rehomed into it from the 40L.
An obligatory picture of the initial stages follows (a bit messy for now):
The tank has a custom built hood made out of 6mm marine plywood (3 sheets for the base, 18mm) which wasn't as easy to plan since the tank footprint isn't so big. However, there should be enough space to house all the components required even the reservoirs and power supplies while having an empty space for the external filter pipes to pass through. At the bottom there is a perspex tray which can be pulled out from the side in order to expose the LED mountings should maintenance be required. The are 2 intake slots for 80mm fans, 1 exhaust slot for an 80mm fan as well as a slot on the bottom for a 120mm fan to be mounted to push air into the light section as well as to the water via holes in the perspex sheet.
While displaying real time data is cool and does not require space it's quite easy to do. However, this prevents us from having any historic data about the tank which to me is quite a big deal. In IT terms, what's going to be used to store data is a denormalized table within SQL. For the non-tech savvy people, this means all data for a specific point in time is represented in 1 single row. This way it's easier and faster to retrieve historic data since everything is in order by time right as the data is requested.
I'm currently not decided on what interval the data would be recorded at. I could be quite accurate or less accurate but size-wise a data snapshot every 30 seconds or 1 minute seems adequate and accurate enough since the parameters being measured do not shift rapidly.
- Coding scripts for all sensors and components
- Calculating light requirements
- Enabling data logging on all components
- Lay wiring within the hood and connect all devices
What is being used so far in the computational side of things:
- Water level checking
- Water refilling from reservoir in hood
- Heater monitoring
- Temperature monitoring at surface and bottom
- Temperature and humidity monitoring inside the hood and ambient
- Fertilizer dosing
- Filter inlet and outlet flow checking
- Resrvoir and fertilizer level checking
- Light monitoring within the tank and ambient
- Sunset/Sunrise and cloud simulation using white and RGB LEDs
- Automated fan control based on temperatures
- Automated CO2 injection
- Data logging
- Web interface with graphical interface for live data
- Historic data via web interface using graphs and other visual tools
- Raspberry Pi 3 + 8GB micro SD card running Raspbian Jessie
- MySQL Database (for data logging and parameters)
- Node.js (for all scripts)
- pi-gpio (for Node.js to interface with Raspberry Pi pins)
- sockets.io (for live data display)
- lightppd (for web hosting)
- Custom written scripts (for all the code I write)
- DS18B20 temperature sensors
- DHT11 temperature & humidity sensors
- Water flow sensors
- Water level floats
- Water level sensors
- Light sensors
- More to be added
- WS2812 LED Modules
- 5630 SMD Strips
- 12V Relays
- A lot of wiring
- More to be added
- A number of mini pumps
Please remember that this is a work in progress. I'm open to suggestions so please let me know what you think I might be missing or doing wrong, I'd be happy to hear your feedback. I believe strongly that we can all learn from one another so if you need further information or clarification let me know. And please, by all means, teach me as well!