New Fish

Long overdue update – the tank is going well, but there are a number of obstacles I’m currently trying to navigate.

The good news, finally purchased a pair of Apistogramma Caucatoides Double Reds. They are beautiful fish and I’m loving them so far.

The problems, in no particular order:

  • Covid-19 has really thrown a wrench into the tank – among other things.
  • I recently installed a Raspberry Pi running Node-Red and a Mosquitto MQTT broker. This acts as the main hub now. All of my esp8266 and esp32 boards communicate with Node-Red on the Pi. Fantastic system.
    • The problem is that there is something fishy going on – I am not sure if the Pi is overheating or if something is causing esp32 that run the lighting system to falter, but the automations stop after a day or so. Ordinarily, I would be home to trouble shoot, but with the pandemic still flared high, I am staying with my partner at her house and can’t be home to problem solve.
    • I am fairly certain the problem has something to do with the Micropython code I wrote. I’ve been learning more about try & except statements and it seems like this could be the culprit. Essentially, something in the program periodically throws an error which stalls the program.

  • A follow up problem to this issue with Node-Red umqtt automations is that it will fail with, obviously, the lights on or the lights off. So either the tank experiences 48 hours of blasting light or 48 hours of darkness. I’ve been stopping by my house every two days to check in (safely).
  • This, in turn, has kicked off some serious algae growth. Nothing too crazy yet, but without vigilant monitoring, I’m having trouble both understanding what is happening as well as well as fixing it.
  • As stated in previous posts, my naturally hard water is probably not making it any easier. I have added Indian Almond leaves, but I think CO2 is necessary. I purchased one of those cheap DIY baking soda/citric acid reactors, but it is not working very well. Depending on how the future shakes out with everything, I am seriously debating purchasing a proper regulator and pressurized co2 cylinder.
  • Also, due to Covid-19, I haven’t made it out to any pet stores recently to restock on food. The new cichlid don’t love the cheap flake food the guppies eat and I just ran out of frozen blood worms. I’ve been digging up earth worms for the Apistos, but I am not sure if they are big enough yet to go after earth worms.
  • I’ll be receiving a package of frozen food today, along with a few new aquatic plants (because why not) and some brine shrimp eggs. I’m going to try raising some baby brine shrimp and see how they do in terms of food for the Cichlids.

On another note, my lights are up and working. As of now, they are triggered by a MQTT message from Node-Red on the Pi. Its okay… but not cool enough, so I’ve order a pcb with 5 Meanwell LDD 700 PWM drivers. I’ll be using this to control the lights eventually. The advantage to this is that you can control the duty cycle on the LEDs with the drivers and thus the dimming/brightness of each LED string. So essentially, colour mixing with Red, Blue, Cool White and Warm White. I have to figure out what to do with the 5th driver.

I’ve written a code that can be triggered by MQTT and run transition fades from one duty cycle value to another. You would have to call these functions within the section listening for messages from the MQTT broker.

from machine import Pin, PWM import utime # This is still in BETA testing.  # The below light() function transtions between start value and stop values by increments as stated in the increase_X = variable.  # Still need to develop all of the various transitions and write the MQTT stuff.  r = PWM(Pin(16)) b = PWM(Pin(17)) ww = PWM(Pin(18))  cw = PWM(Pin(19)) def dark_sunrise():     red = 0     blue = 0     cool = 0     warm = 0     increase_r = 1     increase_b = 2     increase_cw = 3     increase_ww = 4          while True:         utime.sleep_ms(30)         while r.duty(red) != (1000):             if red > 300:                 print(str(r.duty()) + ' r.duty') # print() statements are for testing                 print(str(red) + ' red lights')                 break             else:                 print(str(r.duty()) + ' r.duty')                  print(str(red) + ' red lights')                  red += increase_r             break         while b.duty(blue) != (1000):             if blue > 300:                 print(str(b.duty()) + ' b.duty')                 print(str(blue) + ' blue lights')             else:                     print(str(b.duty()) + ' b.duty')                 print(str(blue) + ' blue lights')                 blue += increase_b             break         while cw.duty(cool) != (1000):             if cool > 300:                 print(str(cw.duty()) + ' cw.duty') # print() statements are for testing                 print(str(cool) + ' Cool White')                 break             else:                 print(str(cw.duty()) + ' cw.duty')                  print(str(cool) + ' Cool White')                  cool += increase_cw             break         while ww.duty(warm) != (1000):             if warm > 600:                 print(str(ww.duty()) + ' ww.duty') # print() statements are for testing                 print(str(warm) + ' Warm White')                 break             else:                 print(str(ww.duty()) + ' ww.duty')                  print(str(warm) + ' Warm White')                  warm += increase_ww             break         if red > 300 and blue > 300 and cool > 300 and warm > 600:             break

Goddamn shit. Tank Update:

  1. Project DEAL BREAKER is going smoothly. It was a little harder than I thought it would be to implement, but that’s because I have switched some of the hardware around and some of the libraries didn’t talk well with one another. It is a reminder that I still have a lot to learn.
    At this point, I have almost everything working in concept. The relays are all working and (in theory can be) triggered by toggles as well as the DS3231 RTC at specific times. I have temps from three different temperature probes, the DHT22 temp/humidity sensor working well and I think I’m very close to have the Flow Rate sensor working. The code that I have for the Flow sensor compiles fine, but gives a funky number. I think its electrical noise, I need to add a resistor into the circuit, but I haven’t had time to do detailed electrical work recently… mostly just been rewatching the Sopranos and mulling over the code. When DEAL BREAKER is fully implemented, I will post the code and a more complete list of components to a post.
  2. After the main DEAL BREAKER stuff is done, the next step will be interfacing it with a ESP01 Wifi Module and start logging inputs on a MySQL database here – ie: PROJECT REAL FAKER.
  3. The above video is the first thing I ever made with an Arduino Uno and my introduction to this stuff. I had a rough idea of what Arduino was – a simple tiny computer that could prompt an output based on an input. If this, do this. So obviously its more complicated than that (or at least, it often is), but I ordered a kit off Amazon for $50 or so and its expanded exponentially since. Two years later and I basically need a barn where I can have an electronics lab, a grow/tank room and a painting/fabrication studio…
  4. Goddamn. I lost my phone. I went to a suburban fish store last week and bought some fish, a couple plants and another thing or two. I was writing an in-depth post for this blog while on the long bus ride back into Toronto proper, when I nearly missed my stop. I grabbed my fish friends and inadvertently left my phone on the seat beside me. In the large scheme of things in the universe – this is insignificant. In the tiny and self involved scheme of the universe- this is a giant pain in the ass. Not only do I not have a phone to appease my nervous fidgeting, I also can’t take photos of the tank as it rapidly progresses in this early phase. The dawning irony that my trip to fish store was about to double or triple in cost due to the replacement of my phone was also not welcome.
  5. I bought five more Panda Corydoras catfish for the tank. A giant and tragic flaw in my system: I recently found three Cory corpses in various stages of the sump weir. I thought that I had protected the opening enough, but it would appear that I had not. It was unfortunate, but I’ve temporarily over-covered the weir. The entire opening is stuff with polyfill. I think in the near future I may order a laser-cut acrylic insert that can be placed over the opening, allowing the full flow of water, but nothing big enough for a fish to get through.
  6. I also bought 8 Ember Tetras (Hyphessobrycon amandae) on the same trip. They seem to be doing well. They are colouring up and I’m looking forward to setting up a brine shrimp hatchery for them. Occasionally they will school together and its very cool – but I think there’s not quite enough of them to display shoaling behaviour all the time.
  7. I think once the tank chills out for a bit and I can get the water parameters under more control (more on that in another post), I would like to get a predatory fish – probably a pair of Dwarf Pike Cichlids so start regulating the Guppy population, and ideally, keep it at an absolute minimum. The guppies are already too numerous and I have a funny feeling that their random swimming behaviour disrupts the Ember Tetras shoaling. I think also just have a calmer tank with more substantial fish personalities would feel more resolved – hopefully, keep the water cleaner too.
  8. I also got a few more plants – a couple bunch of Sagittaria subulata and some Java Fern. Underwater garden is looking good, but they need some time to grow in. My Cryptocoryne Usteriana (I think) is doing pretty well. From what I have read, upon replanting they typically lose a lot of their leaves and send up new shoots and leaves once re-established. 2 of the 3 plants are sending up prominent new leaves, which is great. I would like to start Co2 injection soon, but apparently… this “hobby” is becoming “an obsession” and I have to “manage” my “time” and “money” more “responsibly“.
  9. Experiment update:  A little while ago I mentioned that I was trying to grow some aquatic plants in my hydroton sump tank emersed from the water. I have some Alternanthera reineckii, a rosebud of the same crypts I mentioned above as well as a year old, stunted and struggling Anubias in the sump. The anubias was a last ditch effort to see if the plant was worth keeping at all whatsoever.
    I am happy to report that all three plants are showing emersed growth. The Reineckii is growing the slowest, but you can see it has corrected its direction a couple of times and has tiny new leaves. The crypt is sending up a new leaf just like its buds upstairs and the Anubias is growing brand new, electric green leaves.All in all, the idea of have a sump with a “laborartory” in it is paying off. Any new sump design in the future will emphasize a space to work with plants (not to mention, grow food plants) within the system.