reef-pi :: An opensource reef tank controller based on Raspberry Pi.

Unfortunately not. For what its worth, ATO build is the simplest of all the controllers. I'll give a brief run down of the steps here, that should get you started (and if you could contribute the ATO guide that would be awesome, everyone else would be thankful :) )
Here are the steps:
1) Get a photoelectric sensor from DFrobot, a set of male/female 3.5 mm audio jack. Since the probe is 3 pin (1 GND, 1 5v, 1 data) we can use audio jacks as connector.
2) Wire up the probe to the male audio jack instead of the 3 pin connector it comes with. Hook up the salvaged connector with female panel mount audio jack. This will give you a easily pluggable probe, where the probe is connected to a male audio jack and the female part will be mounted on the housing
3) Connect the breakout board that comes with photo electric sensor to raspberry pi. Wiring is described here: https://www.dfrobot.com/wiki/index.php/Liquid_Level_Sensor-FS-IR02_SKU:_SEN0205
in-short, you need the red wire goes to 5 v rails, black wire goes to GND, and the other data wire goes to any of the GPIO pin (ref: http://www.jameco.com/Jameco/workshop/circuitnotes/raspberry_pi_circuit_note_fig2.jpg, choose one of the green pins). Note down this pin number
4) Configure reef-pi: Specify the pin which reef-pi should monitor to get current water level value (0 or 1) , also specify the outlet reef-pi should switch on, when the water level is below. You should plug in a water pump in that outlet. If you use the older version of reef-pi (0.7 ) you can specify all these via configuration file : https://github.com/reef-pi/reef-pi/blob/0.0.7/build/reef-pi.yml#L3 .

My advice will be to setup the wiring, configure reef-pi, enable telemetry, and dont enable 'control' mode. reef-pi ato system will send telemetry data everytime it detects the water level is off, it will only turn on the outlet if `control` configuration parameter is set to true. Run the ato for couple of days in just sensor mode, with control disabled and see how frequently it trips (using the graph) , if things looke good, enable control :). I would also advice getting a smaller gph pump for ato (or get an ato sepecific pump like this: https://www.bulkreefsupply.com/smart-ato-replacement-dc-pump-autoaqua.html, remember to use 12v based relay outlet)
I got the stuff coming. So ill get it all put together and see what i cane make of it.

Im planning on using the aqualifter pump for the ato because of the low gph.

Thanks for all the help!
 
Like when setting up the ato. How do i select the pins for it to use gpio?
Gotcha,
Here you go:
Raspberry Pi pins
All pins in reef-pi except PWM outputs represent Raspberry Pi GPIO pin
This is raspberry pi's pinout diagram: http://www.jameco.com/Jameco/workshop/circuitnotes/raspberry_pi_circuit_note_fig2.jpg
You can choose any GPIO pins. In the image above, they are in green color. Specify the correct GPIO pin number, no the serial number.
An example will be GPIO17. It can also be simply called as pin number 11. The number denoted inside the circle (refer above image) is serial number of the pin (11), while the label denoted on the rectangle next to it is its GPIO number (17). Repeating: While specifying pins in reef-pi, use the GPIO number not the serial number. GPIO pins are used in all outlets, ATO, etc uses GPIO pins
All PWM pins in reef-pi represent PCA9685 board pin numbers. PCA9685 packs 16 pins, and the pin number ranges from 0-15. PWM pins are generally used in light/led control parts

@Brad Cox does this make sense now?

@Cary I think this will be a common ask., should we add this in the documentation, if so what the best place? Glossary ? electronics? FAQ ?or . a dedicated page
 
I have some important updates reefers,
I am cutting first minor release (0.1) of reef-pi tonight. This triggers reef-pi 's release cadence till we get our first major release (1.0) around X-mas. 1.0 release is intended for public consumption and will be supported for 1 year at least (i.e. no breaking changes, and easy to upgrade releases). For the past year reef-pi accumulated a heft of usable code that we know now how to use, build the physical parts (electronics, housing etc) and troubleshooting around them. We have learned the significant learning curve around configuration file.. Couple of weeks before I decided to address this (complicated configuration file), along side couple of other common pitfalls (changing reef-pi server address to 0.0.0.0:8080) as well as improve the code base by increasing automated tests, refactoring the code. Today that work has culminated. What we have now is much intuitive UI, all configuration driven by UI and segregated code base to ease development. I am satisfied with this foundation around which reef-pi first major release can be done. I should be able to maintain this for a year without making large breaking changes.

The reason this is a minor release (0.1) is because Ill be testing individual release for individual modules physically, improving the docs, fixing any bugs , along the way. Each module will trigger a new minor release. Till all main modules are covered (equipments, timers, lighting, temperature, ato, doser ). I do not expect the UI to change much during this time, but it is possible if need be.

Now enough about technical jurgons, heres how the new user experience looks like:
1) reef-pi configuration file is now optional. If specified it only controls the database file path. Users dont have to edit or create configuration file.
2) All settings (controller name, available modules etc), equipments, lights are dynamic and can be added/removed from the UI
3) reef-pi 's main interface is now modular. i.e. user can configure reef-pi to use one or many subsystem (ato, lighting, equipments, temperature etc) and reef-pi dashboard will only show that module specific UIs.

The typical workflow with reef-pi 0.1 is:
1) Download and run reef-pi
2) By default reef-pi will run in dev_mode (all physical controls are disabled) and without any of the modules enabled. User will use the core "system" tab to declare what all physical components are present. Along side they can also change the controller name, and other details. Once ready, they can switch off the dev_mode and restart reef-pi

3) Once restarted, reef-pi will reflect its new settings, and all module specific UI will appear (i.e. if lighting is enabled lighting UI will appear). Users can use these UI to setup and control their desired modules.

Here is a workflow for my 4 equipment pico tank controller:
1) First boot screen, reef-pi is just installed with everything disabled


1.png


2) I prefer to name the controller as per my tank. I'll also update the interface to reflect that I am using wifi with Raspberry Pi. and finally enable all the module (equipments, timers, lighting)
2.png


Hit "Update" to save the settings and then hit "reboot" to restart reef-pi & raspberry pi. Any changes in settings will require restarting reef-pi to take effect.
3) Once restart reef-pi UI reflect all the changes

3.png

4) I'll declare a handful of outlets (relay) and jacks (pwm ) under system tab. These are required for equipment and lighting controls.
Adding my 4 outlets

4.png


Adding two jacks. Note: pin numbers represent PCA9685 channel numbers, A jack can have multiple pins (each for one channel) which are separated by comma
5.png


5) Once outlets are available we can use the equipment tab to declare few equipments:
6.png

6) Once equipments are declared, users can use them to turn on or off at specific time using the timer module
7.png


7) Jack are used in the lighting controls (similar to outlets in equipments control). Number of channels in a light will be automatically detected from the jack being used. Use can assign a fixed value or a 12 point light cycle (each point representing 2 hour intervals), aka "auto" mode. Here is an example of me setting up KessilA80 control

8.png

8) Once light is added, reef-pi will automatically show all the controls for individual channels
9.png




Thats all,, this is the entire 0.1 changes. Let me know what you all think. As always, I could use any help with testing, documentation etc.

Happy reefing
 
Gotcha,
Here you go:
Raspberry Pi pins
All pins in reef-pi except PWM outputs represent Raspberry Pi GPIO pin
This is raspberry pi's pinout diagram: http://www.jameco.com/Jameco/workshop/circuitnotes/raspberry_pi_circuit_note_fig2.jpg
You can choose any GPIO pins. In the image above, they are in green color. Specify the correct GPIO pin number, no the serial number.
An example will be GPIO17. It can also be simply called as pin number 11. The number denoted inside the circle (refer above image) is serial number of the pin (11), while the label denoted on the rectangle next to it is its GPIO number (17). Repeating: While specifying pins in reef-pi, use the GPIO number not the serial number. GPIO pins are used in all outlets, ATO, etc uses GPIO pins
All PWM pins in reef-pi represent PCA9685 board pin numbers. PCA9685 packs 16 pins, and the pin number ranges from 0-15. PWM pins are generally used in light/led control parts

@Brad Cox does this make sense now?

@Cary I think this will be a common ask., should we add this in the documentation, if so what the best place? Glossary ? electronics? FAQ ?or . a dedicated page


I think we should start with a separate page in general guides. It may be moved to another place later. Maybe when we get the api doc started?? How does that sound?
 
Gotcha,
Here you go:
Raspberry Pi pins
All pins in reef-pi except PWM outputs represent Raspberry Pi GPIO pin
This is raspberry pi's pinout diagram: http://www.jameco.com/Jameco/workshop/circuitnotes/raspberry_pi_circuit_note_fig2.jpg
You can choose any GPIO pins. In the image above, they are in green color. Specify the correct GPIO pin number, no the serial number.
An example will be GPIO17. It can also be simply called as pin number 11. The number denoted inside the circle (refer above image) is serial number of the pin (11), while the label denoted on the rectangle next to it is its GPIO number (17). Repeating: While specifying pins in reef-pi, use the GPIO number not the serial number. GPIO pins are used in all outlets, ATO, etc uses GPIO pins
All PWM pins in reef-pi represent PCA9685 board pin numbers. PCA9685 packs 16 pins, and the pin number ranges from 0-15. PWM pins are generally used in light/led control parts

@Brad Cox does this make sense now?

@Cary I think this will be a common ask., should we add this in the documentation, if so what the best place? Glossary ? electronics? FAQ ?or . a dedicated page
Got it!
 
I have some important updates reefers,
I am cutting first minor release (0.1) of reef-pi tonight. This triggers reef-pi 's release cadence till we get our first major release (1.0) around X-mas. 1.0 release is intended for public consumption and will be supported for 1 year at least (i.e. no breaking changes, and easy to upgrade releases). For the past year reef-pi accumulated a heft of usable code that we know now how to use, build the physical parts (electronics, housing etc) and troubleshooting around them. We have learned the significant learning curve around configuration file.. Couple of weeks before I decided to address this (complicated configuration file), along side couple of other common pitfalls (changing reef-pi server address to 0.0.0.0:8080) as well as improve the code base by increasing automated tests, refactoring the code. Today that work has culminated. What we have now is much intuitive UI, all configuration driven by UI and segregated code base to ease development. I am satisfied with this foundation around which reef-pi first major release can be done. I should be able to maintain this for a year without making large breaking changes.

The reason this is a minor release (0.1) is because Ill be testing individual release for individual modules physically, improving the docs, fixing any bugs , along the way. Each module will trigger a new minor release. Till all main modules are covered (equipments, timers, lighting, temperature, ato, doser ). I do not expect the UI to change much during this time, but it is possible if need be.

Now enough about technical jurgons, heres how the new user experience looks like:
1) reef-pi configuration file is now optional. If specified it only controls the database file path. Users dont have to edit or create configuration file.
2) All settings (controller name, available modules etc), equipments, lights are dynamic and can be added/removed from the UI
3) reef-pi 's main interface is now modular. i.e. user can configure reef-pi to use one or many subsystem (ato, lighting, equipments, temperature etc) and reef-pi dashboard will only show that module specific UIs.

The typical workflow with reef-pi 0.1 is:
1) Download and run reef-pi
2) By default reef-pi will run in dev_mode (all physical controls are disabled) and without any of the modules enabled. User will use the core "system" tab to declare what all physical components are present. Along side they can also change the controller name, and other details. Once ready, they can switch off the dev_mode and restart reef-pi

3) Once restarted, reef-pi will reflect its new settings, and all module specific UI will appear (i.e. if lighting is enabled lighting UI will appear). Users can use these UI to setup and control their desired modules.

Here is a workflow for my 4 equipment pico tank controller:
1) First boot screen, reef-pi is just installed with everything disabled


1.png


2) I prefer to name the controller as per my tank. I'll also update the interface to reflect that I am using wifi with Raspberry Pi. and finally enable all the module (equipments, timers, lighting)
2.png


Hit "Update" to save the settings and then hit "reboot" to restart reef-pi & raspberry pi. Any changes in settings will require restarting reef-pi to take effect.
3) Once restart reef-pi UI reflect all the changes

3.png

4) I'll declare a handful of outlets (relay) and jacks (pwm ) under system tab. These are required for equipment and lighting controls.
Adding my 4 outlets

4.png


Adding two jacks. Note: pin numbers represent PCA9685 channel numbers, A jack can have multiple pins (each for one channel) which are separated by comma
5.png


5) Once outlets are available we can use the equipment tab to declare few equipments:
6.png

6) Once equipments are declared, users can use them to turn on or off at specific time using the timer module
7.png


7) Jack are used in the lighting controls (similar to outlets in equipments control). Number of channels in a light will be automatically detected from the jack being used. Use can assign a fixed value or a 12 point light cycle (each point representing 2 hour intervals), aka "auto" mode. Here is an example of me setting up KessilA80 control

8.png

8) Once light is added, reef-pi will automatically show all the controls for individual channels
9.png




Thats all,, this is the entire 0.1 changes. Let me know what you all think. As always, I could use any help with testing, documentation etc.

Happy reefing
Sweet! I notcied you added the reverse pwm!

Does this aso include the code for the DAC?
 
Ranjib et al. this really is amazing work. I have been going back and forth about which controller to implement in my new tank build (either the Arduino Mega based system I had already aquired the parts for, or this one). That decision just got much easier.
I am definitely jumping on board, and cant wait to get my Pi.
I'll be happy to help to document, troubleshoot or test whatever is needed whenever I start working on it.
Again, thanks to all and great work.
 
Morning Brad. Man, I can't wait to get started...dang cable. ;-}

Ranjib, I really haven't had time to read everything you said above, so this may not be the best way to approach documentation. I guess you could like to the graphic at Jameco and then we could build our own pin out for Reef-Pi in a table and also show the component pins used as you stated above regarding the PCA 9685. Anyone have thoughts on this?
 
Morning Brad. Man, I can't wait to get started...dang cable. ;-}

Ranjib, I really haven't had time to read everything you said above, so this may not be the best way to approach documentation. I guess you could like to the graphic at Jameco and then we could build our own pin out for Reef-Pi in a table and also show the component pins used as you stated above regarding the PCA 9685. Anyone have thoughts on this?
You still havnt got it yet?
 
nope. I thought I ordered one from the US but it must be coming from China. I think I found a way to use ssh and virtual network into the pi. What I found was written for windows, so I will have to test it out for Linux.
 
Sweet! I notcied you added the reverse pwm!

Does this aso include the code for the DAC?
Not yet.I'll give you a heads up when I add the DAC code
 
Ranjib et al. this really is amazing work. I have been going back and forth about which controller to implement in my new tank build (either the Arduino Mega based system I had already aquired the parts for, or this one). That decision just got much easier.
I am definitely jumping on board, and cant wait to get my Pi.
I'll be happy to help to document, troubleshoot or test whatever is needed whenever I start working on it.
Again, thanks to all and great work.
Awesome. Let usknow what you are trying to do, and we can help you out with the steps.
 
Morning Brad. Man, I can't wait to get started...dang cable. ;-}

Ranjib, I really haven't had time to read everything you said above, so this may not be the best way to approach documentation. I guess you could like to the graphic at Jameco and then we could build our own pin out for Reef-Pi in a table and also show the component pins used as you stated above regarding the PCA 9685. Anyone have thoughts on this?
We can. We can link that image and give proper attribution, that should be fine. I agree we need to specify the pin out bit. I was also thinking recommending a fixed set of pins to make it easy for everyone
 
.... I was also thinking recommending a fixed set of pins to make it easy for everyone

I think that is a good idea. In your controller, do you leave the breadboard as part of the circuitry, or do you make direct connections?. Maybe this question will answer itself when I can get started.

If found that I still have some mistakes in the glossary, but I will wait until I gather more terms before I do another pull...plus you are very busy..
 
I think that is a good idea. In your controller, do you leave the breadboard as part of the circuitry, or do you make direct connections?. Maybe this question will answer itself when I can get started.

If found that I still have some mistakes in the glossary, but I will wait until I gather more terms before I do another pull...plus you are very busy..
I used breadboard only for my very first build. In between I used perf boards, with ic sockets for mounting all the different ICs. I use perma proto boards now, exclusively from adafruit. They stack up real nice. One of the local reefers who is electronics savvy has expressed interest in building a full blown pi-hat, that can be distributed as part of a reef-pi kit, and allow users to build reef-pi controller without any soldering . but that's something post 1.0 release , and not a high priority goal for me. I would say use bread board if this is your first serious electronic project . once the controller is running for couple of month, you can replace the breadboard with a perma proto board based circuit. Salvaging all the rest of the components
 

IF YOU HAD TO TAKE A REEFING EXAM, WOULD YOU PASS?

  • Yes!

    Votes: 32 45.7%
  • Not yet, but I have one that I want to buy in mind!

    Votes: 9 12.9%
  • No.

    Votes: 26 37.1%
  • Other (please explain).

    Votes: 3 4.3%
Back
Top