Saturday, November 10, 2018

A fresh start

So here we go.  Starting over.

First thing, if I can buy it, I'm not building it.  Two reasons for that.
  1.  I know half the reason it's sat there, is that I don't want to go through the massive effort of building two huge sumps by hand from plywood, and I know I'll never get around to actually doing it.
  2. For some of these things, if I cut a corner here and there, it has long term consequences.  I need to just suck it up and spend the $$$.
So I bought some new equipment. First, a pair of Trigger Systems Ruby sumps.  One 36, and one 36 Elite.  Why two different ones? Simple, one is left drained, one is right drained.  Perfect.

Next, a Reef Octopus 200INT Elite skimmer.  Something to note on this.  The dimensions on the Ruby 36 indicate that you could fit this in there.  That is a bold faced lie.  It will not fit.  It does however fit in the Elite, so, phew.

Next on the list, new return pumps.  These will sit inside the sump, so when they inevitably leak.  They won't leak on the floor and ruin the whole planet.  I went with a pair of Neptune COR20's, because I love controllable, and I love Neptune.
Finally, a Neptune ATK, and level sensor.  I will not make the same mistake twice with the auto topoff and the RO/DI.  Don't ever do what I did.

So this is the start.. More as I progress.

What went wrong?

So what went wrong with the big aquarium? Well a number of things.

First, my attempts to save money with DIY ended up costing me a fortune.  DIY things are great sometimes, and sometimes there is no other option.  But if you rely on certain things to keep working, like computer fans, and they don't, then you have a failure.

Second, the size of the aquarium caused me to make some foolish decisions with the routing of electricity.  Extension cords, placing the Apex EB8's inside the frame of the stand, etc.  If water drips on the interface between plug and extension cord, you get a fire. If that interface is anywhere under or alongside the tank, water will drip on it.  Never ever do this.  The EB8 looked like it was in a good spot.  But funny thing about saltwater, it climbs cords. This meant, that little bits of salt and water went up the cord, into the aquabus, and rusted it all out.  Even better, I was dumb enough to put the apex brain unit down there too.  Guess what else is a brick?

So it was time to tear it all out.  All of it.  Every last bit, everything has to go.


I tore out all the plumbing.  All the tubs, all the bins, tore out all the electrical, all the apex bits, everything.

Now I have a nice bare room, plenty of space to start over.  I guess you could say the near electrical fire was the spark that caused me to get moving on this again..

So this is the starting point.  It all gets better from here, hopefully...








The disaster that is my in-wall aquarium

I have a large aquarium.  When I say large, I mean, mistakes were made large.  800 Gallons, saltwater, reef.  It took me a very long time to get this thing running, and it was looking fairly decent.

It wasn't perfect, but it started to look good, and I was relatively happy with it.

There were however, some demons lurking in there...


One such monster was the plumbing, and the sumps.  I went with a DIY attitude, and was trying to save money, because as it turns out, setting up an 800g aquarium is way more expensive than 6x a 120g aquarium...

The tubs would overflow occasionally, in spite of having 2 2" pipes connecting them.  The pump, a big dolphin 3000, started rusting and leaking.  Yay.




And then we have the lights.  Actually, I'm pretty proud of the lights, right up to the heatsink. A big vertical computer heatsink can absolutely hold down the temperature of a 100w COB/SMD LED run at 140 watts of power.  No problem.  Right until the fan dies. Then poof, instantly.

That's fixable though.  What happened next, was not.

A little tiny solenoid, with a murloc push fitting, shattered.  This push fitting, was what held back the mains water to my RO/DI unit.
This bad design resulted in a massive, and I mean massive flood of my house.  The resulting damage destroyed tons of equipment, drywall, electrical stuff, etc. Many things did not survive this, including my will to keep working on the whole aquarium at all.
So it sat idle. For a long time.  I kept the machinery running, but kind of ignored it.  Later this bit me, as alot of the random things I plumbed in to keep everything alive, were done with extension cords and bits of stupid.  Then one day, a few weeks ago, a big zap sound was heard in the room.  Luckily I was home, and found a bit of water dripping on an extension code, and a pump cord that was obviously burnt to a crisp.

Well that took out the last of my support equipment.  Now I had a real problem on my hands.  A giant aquarium, all pumps down, nothing works, fiasco everywhere, and it's a fire hazard to boot...

Monday, May 15, 2017

Moving to github!

I am currently moving gnhast to github.  So far this has been a pretty easy project.  At the same time, I'm trying to get some better documentation done for the project. In some ways, the documentation has been lacking.

I'd really love to have some collaboration on this, rather than going at it alone.  Anyone out there interested in joining me, please ping me.  Even though my main engine is written in C, the whole thing is designed in such a way that you could write parts of it in any language you like.  Python, Ruby, Perl, whatever.

Anyhow, some links!

https://github.com/garbled1/gnhast

And some new docs:

Doxygen source documentation:
https://codedocs.xyz/garbled1/gnhast/

General documentation:
https://garbled1.github.io/gnhast/

Back to work!

Monday, July 4, 2016

More fiddling with water

After a few more weeks of testing, I've found some new values, and edited the script more.

  1.  Originally, I had thursdays blacked out because the Yard guys come that day.  It was simply blacked out via cron. I noticed in the hard summer, this was too harsh, and the lawn would dry out too much that day.  Instead, I've written blackout hours into the script, so just the 8 hour window is blacked out.
  2. I've added day/night sensing via the LUX sensor.  I also have a day trigger number (21) and a night trigger number (19). This gives a slight preference to watering at night, while still keeping the lawn safe from dryout during the daylight hours.
  3. I had to bump the time each valve runs to 900 and 600 seconds for the primary/secondary rows.
All these changes, and the lawn is starting to green up quite a bit.  I think I've almost nailed it.

Some future ideas:

  1. Fix the ground temp probe, and if the ground is frozen, don't water.
  2. Maybe don't water if it's super windy?  This is semi-debateable, because the high wind dries the lawn out fast.
Got to keep fiddling.  Maybe I'll go automate something different for awhile.  It's working well so far.

Thursday, May 19, 2016

Finally have some lawn data

Having run the system for about a month, and fixing a few problems here and there along the way, I finally have a few days worth of data from the lawn, and some results.

My current setup is thus:

  1. Water trigger point set at 25. When one of the sensors hits 25, we fire off the appropriate set of sprinklers.
  2. The sprinklers run for about 10-12 minutes each to give a good deep soak.  One sensor triggers a pair of sprinkler rows on either side of the sensor.
  3. The script runs once every 3 hours to check the sensors. It takes about 30-45 minutes after watering for the water to drain into the soil, and soak the sensor.  Running the script out of cron every 3 hours seems to be about right.
First, the pretty graph:
Lawn data.  Set point 25, 3 hour cycle, 18 days.

In the graph above, we can see the 4 sensors, and in blue, we see the sprinklers.  The tall blue spikes are the lawn sprinklers, the little short ones all over the place are just the drips, so ignore those.

 And of course, the second result, being the lawn itself.  I've noticed a very slight browning from this watering schedule.

I've also noticed in the above graph, that it seems to take two watering sequences to drive the sensor down.  If you look closely, you can see before each dive in the sensor, there are two blue spikes 3 hours apart.  I believe the lawn is getting too dry in-between waterings, and it's taking alot of water to backfill. This is especially true for row 3, which seems to dry out the most.  Perhaps in a future edit, I will run that row's sprinklers longer.  Looking even closer, it looks like row 3 never triggers.  Apparently row 4 triggers and I think row 3 is just getting overspray.  Row 4 seems to have the steepest incline of the 4 slopes post-watering.

Due to all of the above, what I've done now is set the trigger point down to 21.  I'm hoping this provides better results.  I'll have to run it for another week or two to find out.  In some ways, this is a very interesting method of programming, as it takes 2-3 weeks to find out if your code changes work or not.

Writing code to interact with nature turns out to be much more challenging than having it interact with a computer.  Fun stuff!

Wednesday, April 6, 2016

Minor update on moisture sensors

Turns out I was utterly soaking my lawn.   Guess these might have been a good investment.  I installed them, and watched them for a few days, got nothing but 0's.  (0 being "utterly soaked").  I decided to turn the sprinklers off for a bit, and make sure the sensors were working, however, I accidentally left one of the schedules on, a 5 minute run per zone daily.  Here is what happened:


The last watering they would have gotten was around 5am.  You can see the steady march upward as the lawn dried out starting around 14:30.  The blue line is the sprinklers going off. (ignore the smaller blips, those are the drips, the one we care about is the big spike at 5am).  At 5am the sprinklers fire off for 5 minutes each.  You can see how two of the sensors respond to this immediately (1 and 4), but the other two are a bit more slow.  1 and 4 are the outside pair, and 2,3 are the innermost two sensors, closer to the center of the lawn.

The sensors responded within about 25 minutes on those outer pairs, especially #4.  I will be watching this over the next few weeks, and start writing some code to auto-adjust the sprinklers depending on conditions.

According to the Davis sensor manual, "turf does not need to be watered until 25-40cb".  I suspect that there needs to be some kind of hysterisys in there, so maybe let it rise to 60 and then knock it back down to 25?  Mostly, I need to watch the graphs for a bit, so I can determine exactly how much each valve contributes to the moisture, and how much time per valve is required to move the moisture a specific amount.  Once I have this data, I think I can start programming code to make everything automatic.

The benefit of course, should be that the water will automagically self-adjust to deal with the changing of the seasons.  That's the theory at least.

Also, side note, given the way sensor 4 responded so radically, it makes me suspect an underground leak.  Hrmm.