All posts by tripzero

Rethinking the Smart Home Part 1 – Offsetting power usage

Like myself, many people have grid-tied solar power generation and also like me, I suppose that many people are doing it wrong.

“Nobody uses your power better than you do” -Milton Electron Friedman

With a typical grid-tied solar system, the solar inverter converts DC power into 240V AC which feeds directly into the grid.  Using a net meter, the power company will credit you something for any power that you don’t immediately use.  After those electrons leave your house, your ability to understand how that power is being used disappears.  Your generated power may be used by one of  your neighbors to power an inefficient incandescent light bulb where 95% of that power will be wasted.  For ethical reasons, it may be best for you to use the power you generate yourself.  In the very least you’ll be able to control how the power is used towards more personally valuable objectives.

There’s also economic reasons.  Many electric companies will only credit you for the energy you generate per kilowatt-hour.  Only part of your bill is energy consumption.  The other part of your bill is transportation fees per kilowatt-hour.  The electric company may not credit you for these fees when you gift the grid your power.

How do I use more of the power I generate?

The simplest, but most expensive, is to couple your solar system with a battery system like the Tesla Powerwall.  A battery system can allow you to offset when your generated power is used.  You charge the battery when you would normally be gifting the grid and you use the power later when you need it.  A large battery system can cost tens of thousands of dollars, however, and the payoff length is long.  Some estimate 30-38 years.  My goal was to start smaller, work up, and see if we can not only build savings over time.

I started with the goal of charging my phones from battery.  This is pretty simple.  I purchased a large 3.7V lithium-ion battery for $90.  This battery is a pack of (21) 18650 cells in parallel.  The total capacity is 40 Ah or so.  To charge it, I picked up a pack of 10 TC4056A charging chips for $10.  Putting two in parallel allows me to charge at 2A via USB.  Many USB chargers won’t go over 2A, so that’s slow, but fine for now.  These also offer over-current and under-voltage protection.  Bonus.  I need to boost the 3.7 volts up to 5V to charge USB devices so I bought some 3V to 5V USB boost converters that can charge up to 2A each.

DZS Elec 2pcs Mini DC 3V to 5V 2A USB Output Step-up Charging Module Battery Converter for Mobile Mp3 Phone Charging DIY Power Supply Charger

Using this $110 battery setup, I can charge almost all the phones in my house.  I also use it to charge our fitness watches, and anything else that charges over USB.  Using it to charge my two kid’s phones, I save about $0.06 per month.  That’s not very much.  If I can utilize the entire 40Ah of the battery, I can save around $0.53 per month.  There’s only so many USB (type A) devices in my home, however.  My phone and my wife’s phone are USB type C.  These devices can charge at 5V 3A.  Furthermore, I have a laptop that also charges via USB type C.  This time, it’s at 20V 2-3A.  How do I charge those off a battery?

USB Type C charging from battery

There are already aftermarket batteries that charge both USB type A and type C devices.  Each of these however comes with unique flaws that make it unusable for my purposes.  I have a 10Ah battery and a 20Ah.  The 10Ah battery made by Anker can power up to two USB type A devices at 2A but will only do so after you hit the power button on the battery.  It’s not automatic.  The 20Ah battery, which has one USB type C port, is similar.  It won’t charge until you hit the button, but worse, it will not charge devices and allow itself to be charged at the same time.  The 20Ah battery also only charges type C devices at 5V.  This won’t work for my laptop (which alone could save at least $0.16/month if powered off-grid).

We need a type C charger that can be powered off a battery, and charge up to 20V.  I’ve searched for years trying to find one that can charge 20V.  There are many DC-DC Type C chargers made for vehicle charging of phones.  These typically come with both a type C and type A charging port.  Some can even charge at voltages as low as 2.6V (Tronsmart).  This one will work perfect for phones from my 3.7V battery.  After much searching, I finally found one that charges my laptop made by Gearmo.

It claims to support up to 60W on the type C port.  I’ve tested it with my laptop and seen it do 40W.  The point is, it works.  I have to supply 12-24V to this adapter, however.  My 3.7V battery won’t cut it.  I had about (16) 18650 laying around that I made into a 16V battery.  I configured it with four in parallel, and four in series (4S).  Each cell is 2000mAh so in total it’s about 8Ah or 118Wh (8Ah * 14.8V).  This is almost three times that capacity of my laptop.  To charge this, I spent $30 on a 700W+ Drok power supply.  I charge this battery at 5A.  I’m also using a Drok 4S battery protection board so I don’t kill the battery with under-voltage or over-current.

So now all my phones, most of my USB devices, and my laptop are all off-grid now.  How much do I save?  About $4.34/year.  Ouch.  That’s nothing.

What else can I save (future plans)?

There are actually many things that use voltages in the 5V to 12V range.  My stair lights are 5V.  My garage and front door lights are too.  Those use APA102 LED strip lights.  Those lights can consume up to 40W, but typically are around 10W.  If I can power those off of battery, that’ll save me about $20/year.  Now we are getting there.

I have several 12V devices as well.  I have two wireless access points.  Those can consume up to 46W each and are on 24/7.  These end up being the biggest pigs so far.  Almost $100 in savings.  These, however, have a maximum power usage of 1.1kWh.  Our little 16V battery is only 0.12kWh.  We need more batteries.  We only have to power these from battery during non-solar hours.  So the battery bank that powers them should be at least 500Wh.

Nissan Leaf Powerwall

Batteries made for electric vehicles can be purchased at pretty good prices.  There are dozens of videos on youtube of people using Chevy Volt batteries, Tesla, and even Nissan Leaf batteries for off-grid projects.  The Nissan Leaf battery is in a 7.4V configuration and is about 33Ah.  Two in series gives me 14.8V and about 0.49 kWh of storage.  That’s almost enough.  I picked up two of these a while back on ebay for around $100 each.  I plan on getting a few more later.

In the end, how much will I save?

With just two, plus my other two battery banks, I estimate I can save almost $115 per year.  My total cost is close to $500 but may be close to $800 when I’m all done (two more batteries, wiring, DC converters).  That’s a 5-8 year payoff.  Not bad.  Much better than the 30 years of a much more expensive unit.

This setup really only works if we have the available solar power to charge our batteries.  Since not everything in the house is going to be powered from the batteries (like the HVAC system), we need to take those devices into consideration and be smart about when we charge the batteries.  I figure that in total, these 5-12V DC devices amount to about 2.7kWh usage.  In the dead of winter, my solar system does about 4.4kWh a day average.  We have power to spare, but if we really want to save, we need to only charge the batteries when there is excess available power on top of the devices already being powered.  More on that in part 2 of this series.

How much cooling does my greenhouse need?

When looking at different cooling methods, the first thing you need to know is how much energy (heat!) you need to remove.  You have to know your energy inputs and outputs.  The inputs are primarily the sun or solar radiation, but they can also be air from the outside.  We’ll focus on solar radiation input, as it’s the biggest factor.  Our outputs are our cooling mechanisms.  Probably the most common method is simple air exchange with the outside air.  We’ll add to that list geothermal and water chillers, but we can even include evaporative coolers and traditional air conditioners.  We’ll start out with a very rough way to estimate and go into more accurate forms in subsequent blogs.

Estimating Input using the Solar Constant

The average solar radiation received by the earth is about 1300W/m^2.  After atmospheric absorption, it’s around 1000W/m^2.  That makes things easy.  All you have to do to get your radiation input is to multiply the surface area of your greenhouse by 1000.  My greenhouse is 8.9m^2 so my energy input is 8900W or 8.9kW.

Energy Input = 1000W/m^2 * GH Surface Area(m^2)

Now that we have a rough estimate how much energy we need to remove, we can look at how we can cool that with different methods.

Geothermal Water

This type of cooling requires 4 basic parts: geothermal temperature, setpoint, tubing, and a means of transferring the energy into the water.  For our setpoint, we are using 32C and assuming the geothermal temperature is 15C.

We assume for simplicity that we are able to transfer all the energy input from the sun into the water.  This is really important but we could dedicate an entire article on just this topic.  I’ll briefly mention a few methods of getting the energy into the water and move on.  Methods include: copper/aluminum air-to-water heat exchangers, tubing distributed in the greenhouse flooring (using the surface area of the greenhouse flooring to transfer the heat), direct radiation to a water reservoir.

We also don’t assume any bonus energy transfers from condensation or evaporation.

We are going to use a script I wrote to try to figure out how much tubing we are going to need to bury underground.  We run it like this:

python3 –greenhouse redhouse.json

redhouse.json is my greenhouse and you will want to edit it for yours.  We just need greenhouse_dimensions and optionally “pump_flow_rate” for this script.  We can also change the flow rate with the “–flow_rate” option.

Tubing diameter : Watts per meter tube length
1/2in (0.0127m)  : 0.72W

Using the –tube_diameter argument we can see how much doubling the tubing size helps:

python3 –greenhouse redhouse.json –tube_diameter 0.0254

Tubing diameter : Watts per meter tube length
1in (0.0254m) : 1.44W

I use 1/2″ tubing, so to get enough cooling for 8900W, I’d need 8900/0.72 = 12420 meters of tubing length.  That’s a lot of tubing!  Is it correct?  I am not sure.  My script is open source, so feel free to look at it and check it.  We need to be clear what the script is telling us.  It is trying to transfer all the solar radiation to the soil.  That is a factor of the thermal conductivity of soil, the temperatures of each, and the surface area in contact.  We can play around with our setpoint, the flow rate and the tubing diameter and this will change out outcome.  Most likely, geothermal will be a supplementary method used with other cooling methods.  So we can play around with the energy input as well.

Geothermal Air

Air is going to be similar to water in how we figure out how effective it will be.  We will use our script to figure out cooling potential per meter length of tubing.  We will use the same setpoint of 32C and 15C for the geothermal temperature.  We will use 0.102m for the tubing diameter (4in pipe), and an air-flow rate of 94 liters per second (about 200 cubic feet per minute).  Like our water calculations, we are not assuming any condensation/evaporation effects which are complicated and unreliable.

python3 –greenhouse redhouse.json –tube_diameter 0.102 –flow_rate 94

This gives us a rate of 5.77W/m of tubing.  If we use 0.152m tubing (6 inches), we get 8.59W.

We require 1038 meters of tubing for my greenhouse.  That’s still a lot of tubing, but much less.

Is geothermal air better than water?

It certainly transfers more per meter of tubing because of the increase in surface area.  Water of the same tubing size has identical using this script.  The differences are going to be in the transfer of energy to air.  Air doesn’t absorb much visible light.  So all energy absorption comes from its atoms bumping into things that do absorb the direct solar radiation.  This is a slow process because air has the worst thermal conductivity of almost anything.  The good news is the surface area is huge: effectively the entire surface area of everything in your greenhouse.

Energy transfers to water much more easily (24 times better) and can store 4 times the energy per gram, but performance is going to greatly depend on surface area of radiation to water heat exchange and the water to soil heat exchange (the tubing diameter).

Condensing Air Conditioner

These are the easiest to estimate for because they usually come with a rating in BTU/hr.  1W = 3.412BTU/hr, so we can do a simple conversion to get the required size of air conditioner.  8900 x 3.412 = 30367 BTU/hr.  These are expensive up front and expensive also to run.

Water chiller

Another expensive option is a water chiller.  There are two varieties air cooled and water cooled.  If you have need of both heating and cooling, the water cooled option is a good one.  Either option is a good addition to a geothermal  water system.  It can also be used to cool LEDs if those are water cooled.  These are usually rated in “tons”.  Each ton is equivalent to 12,000 BTU/hr or about 3500W per ton.  For my greenhouse without geothermal, I’d need a 3 ton.

Water cooled chillers require a second water loop to transfer the heat.  It can be transferred to a pool heater system, a water cooling tower, or even used to heat water for your home.

I want to look more into both advanced estimation solar input and these different cooling methods including more in subsequent blogs, so stay tuned.

Preemptive Greenhouse Cooling with Machine Learning

In order to improve cooling, I added a 1/2 HP water chiller to my system.  When used with the geothermal, it cools pretty well.  This is evident by the amount of condensation I can see on the pipes and the HVAC water reservoir:


and the heat exchanger:

The chiller, however, is only a bit over 400W consumption.  This means at 100% efficiency, I can remove 400W of energy.  That’s not good enough.  Using pysolar I estimate I need to remove an average of 1764W of solar energy.  Combining the chiller with geothermal, however, I have so far been able to maintain sub-40C temperatures with 22% shadecloth (1375W average solar input) at up to 30C outside.  However, near the end of the day, the reservoir sensors claims the water temperature is 30C.  I think this is higher than it actually is (sensor may be polluted by outside air due to its location), but it’s warm enough that condensation stops.  Condensation represents a nice boost in cooling because it takes more energy to phase change water gas to liquid and that energy will be pulled from the ambient air.

How much energy can my reservoir absorb?

Doing the math, I can estimate how much my 151L reservoir can absorb at different starting temperatures.  If I can start my reservoir at 9C, it can absorb around 245W of energy throughout the day (15 hours until it reaches 30C).

This is more than enough even without any bonuses from condensation.  So how do I get my reservoir that cool at the beginning of the day?  One established method is to pre-cool the reservoir during the night.

Pre-cooling and saving energy

It would be relatively easy to pre-cool the reservoir at night.  I just keep the geothermal pump and HVAC pumps going at night until I reach the desired temperature.  However, if I want to maximize efficiency, I need to understand the next day’s needs.  I need to preemptively decide whether or not pre-cooling is necessary.  If it’s going to rain the following day, and solar radiation drops below 400-500W/m^2, I don’t need to pre-cool.  How do I understand my future needs so that I can be efficient in how I pre-cool?

Weather forecast is inadequate

I can easily get tomorrows estimated maximum temperature.  However, this is not adequate.  In a greenhouse, it may be 15C outside, but if there’s high solar radiation, it will easily be 30C or higher inside the greenhouse.   I cannot use predicted outside temperatures alone in my preemptive decision.  If I knew the forecast for solar radiation, I could base my preemption on that.  However, the Weather Underground (WU) forecast API, the API I’m currently using, doesn’t have solar radiation estimates/predictions.

Machine learning to predict greenhouse temperature

I can get tomorrows and historic atmospheric conditions from the WU API.  This will give me a rough idea how much solar radiation I’ll have.  I also have a couple years worth of greenhouse temperature data.  Using Tensorflow, I should be able to train a neural network linear regression model using historic weather data and data for my greenhouse and use that model to predict future temperatures using weather forecasts.

To start out with, I used 2 months worth of data.  The data retreival process was the slowest part.  With a free WU API account, I can only get 10 API calls per minute.  Once complete, I have 3700+ data points to work with.  I can expand this to more data as needed (depending on accuracy requirements).

Machine learning prediction results

Looks like my prediction results are within about 4-5C.  I selected 3 recent temperature points and associated conditions over the past week to test:

Outside Temperature: 15.1C
Condition: “Overcast”
Prediction: 18.5C
Actual: 17.9C

Outside Temperature: 17.7C
Condition: “PartlyCloudy”
Prediction: 21C
Actual: 25.8C

Outside Temperature: 27.2C
Condition: “Clear”
Prediction: 32.5C
Actual: 36.6C

This level of accuracy might be fine.  If it predicts anything over 23 (which is my typical setpoint), I’ll know I need to preemptively cool during the night.

Efficient Method of preemptive cooling

I have up to three sources of cooling at night.  The air using the HVAC heat exchanger and fans, the geothermal system, and finally the chiller.  Understanding when to use which will help me cool most efficiently.  My algorithm is roughly this:

  • Use HVAC heat exchange fans and all pumps until reservoir is within 1C of the air temperature
  • Disengage the HVAC fans (180W savings)
  • Continue using geothermal pump until water is within 1C of geothermal battery temperature (I estimate at 12C)
  • Disengage the geothermal pump (60W savings)
  • Continue using chiller pump until water reaches 4C.

Measuring success

The entire system is just about in place.  There’s a few bugs to work out with using the machine learning model and I still need to separate the pumps onto different power supplies.  I have, however, been doing well using only the forecast max temperature to decide preemption and I believe it’s been working.  To determine this objectively, I should be able to look at non-preemptive cooling minimum and maximum deltas between the indoor and outdoor temperatures.  The smaller the difference should mean better cooling.  I started preemptively cooling using the temperature method on 6-6, 2017.  I started preemptively cooling using machine learning on 6-18.  Let’s pull min/max data from may, and compare it to data between 6-6 and 6-15 (a few days before any changes for good measure).  The results look promising:

5-6 to 6-5:

  • min delta: -3.8
  • max delta: 30.0
  • mean delta: 4.0

After 6-6:

  • min delta: -1.0
  • max delta: 15.6
  • mean delta: 3.1

The max of 30 may be anomalous (ie, during a power out), but doing a mean should weed those out.  After implementing preemptive cooling, I’m getting almost 1C better temperatures.  Once I have the machine learning and other improvements made, I’ll check again and see if I see additional improvements.

UPDATE (7/18/2017):

Math about how much energy a 151kg could absorb over a day was incorrect.  Fixed math to cover 15hr period instead of merely 1hr.

Also fixed greenhouse estimated solar input.  New estimate computed with pysolar.

Using the SCIO in gardening

Ages ago, I funded a kickstarter for a “consumer molecular scanner”.  It’s a pocket spectrometer of sorts that can be used with your smartphone to analyse the chemical composition of just about anything.  It works by spraying an object with photons from an LED on the device.  Different chemicals react differently with different wavelengths of photons.  On the device is a sensor, that analysis which photons bounce back.

The android app that you use with the device, communicates over bluetooth to read data.  Data is then sent to the cloud for analysis.  What comes back is a spectrum that represents the object.  Included in the app are a number of applets for doing things from estimating body fat to estimating the BRIX rating of a fruit product.  You can also create your own “mini-applet” to capture and analyze your own objects.

Tomato leaf deficiency mini-applet

I wanted to create a mini-applet to analyse tomato leaves and perhaps identify any deficiencies.  I started with some healthy leaves and took some scans.  Unfortunately, I need to produce leaves with known deficiencies, scan those leaves and name those scans after the deficiency for this to be really useful.  I did however, notice some strange leaf formation, took some scans and the results were different than the normal “healthy” leaf.  If I can identify this as a nutrient deficiency, I’ll have a good way of identifying it moving forward.

Produce Selector applet

This is a built-in applet that allows you to scan your favorite fruit and get a BRIX rating.  BRIX is basically the sugar content in a solution.  Unfortunately for this applet, it didn’t recognize any tomato I scanned :(.  I scanned my unripe fruit and the store bought roma tomato.  I provided feedback via the app to the developers.  I hope there will be an update soon.

Fruit and Vegetable applet

This applet lets you estimate the carb content in the fruit or vegetable.  I used this on my unripe tomato growing in my greenhouse.  It came up with 5% carbs.

I snapped a picture of the fruit and I’ll be able to check later for changes.  I’m exciting to see what happens over time with these readings.  Here’s the “spectral fingerprint” from my phone (5/10/17):

For comparison purposes, I scanned a store-bought roma tomato.  The readings were identical from what I can tell and I’m not sure exactly what that means yet, but another scan of my greenhouse fruit when its ripe might reveal something.


The SCIO is pretty fun.  I foresee it will be very useful moving forward to help identify plant and fruit quality.

Winter 2016-2017 learnings

What I learned (so you won’t have to)

My goal for this project is to grow tomatoes (and possibly other warm-weather crops) all year round in my greenhouse. I learned several things from my winter experience this year.  I thought I’d record them here to benefit anyone else out there trying to grow tomatoes year-round in uncooperative environments.

For the record.  I “shut-down” the greenhouse in mid-December.  This year (La Nina year), was below average cold for my area.  There just wasn’t enough produce to justify the propane heating cost which was turning out to be double what I expected (9 kg of fuel per month).  Further, there was no future produce either as flowers were not setting fruit.  Reasons listed below.

Light is essential

No duh, right?  This winter, I did not have supplemental lighting.  As a result, growth was slow, the plans were weak, and fruit didn’t set.  A lot of this has to do with improper temperatures, but I believe light was a major factor this year.

Geothermal is unhelpful for winter tomatoes

The concept behind geothermal in the winter is that you can store energy during the day, and recover it at night.  In addition, since the geothermal “battery” recharges from the surrounding soil, there’s a temperature floor which helps keep air temperatures at night above freezing.

The problem with the theory is when there is little to no energy input geothermal temperatures are too low for tomatoes.  Without the sun, which is typical for winters in my area, there’s no “free energy” to store during the day.  To supplement the lack of solar energy, I have a propane water heater as a backup heating source.  This energy isn’t “free” light sunlight and I don’t need to store it in the ground.  In fact, it’s inefficient to store it in the ground during the day because just like the geothermal battery “recharges” from the surrounding soil, the surrounding soil also “recharges” from the geothermal battery when the battery has a higher temperature.  The energy losses to the surrounding soil resulted in lower than acceptable air and soil bed temperatures and wasted propane.  The lower temperatures with the light problems led to slow growth and a lack of fruit production.

When I turned the greenhouse back on, I added a bypass manifold that separated the geothermal from the bed and aisle lines.  Now I can provide radiant heating directly from the propane water heater without any losses to the earth.

The result was very positive.  The water reservoir heated up enough that it was warm to the touch.  Soil temperatures went from just 11C to above 16C (March 6th).

Don’t shut down your greenhouse

When I shut down, temperatures were allowed to drop extremely low.  It was cold enough to crack some PVC pipes, and burst copper tubes in every single heat exchanger in the greenhouse including the propane water heater.  The damage was close to $500…  (all in the name of saving $20 worth of propane).  Instead of shutting down, I should have just lowered the set-point to around 3C.

Genetics is everything

A number of my tomato plants had poor yields, even in the summer time.  Among the poor producers was the San Marzano that I got from The Home Depot.  This was especially disappointing as even my grafted San Marzano produced almost nothing.  I’m not sure why the San Marzanos didn’t produce well in my greenhouse, but this year I’m trying a greenhouse-specific hybrid: The Pozzano.  This is supposed to be the same style as the San Marzano (paste/plum tomato), but really excels in the greenhouse.  We’ll see.  So far the plants I have look promising.

A new start

It took a while to repair and get things running again.  Sometime learning is expensive and I sure learned a lot this year.  Early February, I was able to transplant some new Pozzano plants into the greenhouse.  I have 7 new plants and 5 of the 7 have flowers.  This is going to be year 3 and I’m hoping this will be the year it “just works”.  Summer is coming and I have big plans, but I’ll save that for the next post.

Estimating light energy requirements by CO2 consumption rate

Plants use carbon dioxide and water to make sugar.  They use light energy to power this operation.  I wanted to see if I could estimate light energy requirements by the rate at which my plants are consuming CO2.  With that information, maybe I can vary my LED light intensity to match those requirements.

NOTE: I’m already varying my LED intensity based on how much sunlight I’m getting.  You can see that blog here.

Energy required per gram of CO2

1g of hydrogen = 5.02e22 elements.
CO2 weighs as much as 44 hydrogen elements.
1g CO2 = 5.02e22 / 44 = 1.1e21

It takes about 60 photons of light to break down 1 molecule of CO2 and sugarize it. The average energy of a 550nm photon is 3.63e-19 Joules.

Energy per molecule of CO2 = 60 x 3.62e-19 = 2.17e-17
Energy per gram of CO2 = 2.17e-17 x 1.1e21 = 24741 Joules or 24kJ.

The ratio of grams CO2 to plant sugar (6CH12O6) is 1.4:1. So for every 1g CO2 consumed, your plant increases in mass 0.6g. So 1g of growth requires about 40kJ of energy.

According to this website, plants consume about 2.40g/h/m2 of CO2.  That’s about 57.6kJ of energy over the span of 1 hour or about 16W per square meter ( 57600/3600).  It’s not clear on the website, but I believe that’s using the CO2 concentration of 1300ppm.  Consumption will also vary by plant, temperature, water, nutrients and other conditions.  If you happen to find plant specific CO2 consumption rates, or consumption rates per concentration CO2, please comment below with the source.

Plants only use 16W per square meter

Full sunlight at the earths surface is about 1000W/m^2.  Is it possible that plants only use 1.6% of the sunlight that hits them?

Light technology efficiency

LEDs are about 40% efficient (theoretical maximum efficiency).  That means a 100W LED will produce about 40W of light energy.  We need to assume that a certain percentage of the light isn’t going to hit the plant.  This is difficult to measure, so let’s just assume only 10% of the light actually hits the plant.  So a 100W LED would have about 4W actually hit the plant.  That would mean we need about 400W of LEDs per meter to reach our 16W of required light energy.  We can play around with that “plant penetration” percentage too.  At 50% penetration, we only need 100W/m^2.  I’ve prepared a calculator spreadsheet that uses the knowledge we developed here to calculate light power requirements.

Calculating Greenhouse CO2 infiltration/leakage

At the moment, my greenhouse is somewhat empty.  I can write a simple python script that will bring the CO2 reading up to 1000ppm, and then measure how long it takes for the CO2 reading to reach ambient levels (for my sensor, that’s about 460ppm).

I’ll take the reading in a different blog, but we can do the math here.

Actual CO2 consumption = (CO2 Reading 1 – CO2 Reading 2) – Leakage Rate

Light Power Required = (Actual CO2 Consumption x 24000) / 3600

Now that we have the light required, we can plug the data into our calculator and see what our light level should be.  My light intensity is controlled by PWM rate programatically so we can plug these calculations into the automation algorithm.

PID my lights

Now that we have a light rate, we can actually use a PID controller to check our light vs CO2 consumption rate.  The setpoint should be set to the maximum CO2 consumption rate we can achieve.  We can try to use the number we got above (2.4g/h/m2) or we can observe our greenhouse full of plants over time and get a maximum rate.  We can also start low and adjust over time.  The minumum rate is 1.2g/h/m2.  For this example, I’ll use the python pid module but you can adapt it to whichever PID library you use.  Most of this is just psuedo code, so keep that in mind.


Future work

Our set point can actually change over time based upon the actual plant size and health.  We should implement some machine-learning and change the set_point accordingly.  For example, if we are never reaching our setpoint and the lights are always on, we should accept the current co2_rate as the new setpoint.  Also, any time our co2_rate is higher than our setpoint, the co2_rate should become the new setpoint.  After all, we are trying to maximize CO2 consumption.

Also, since temperature is also a significant component in co2 usage and photosythesis, we can create a second PID controller that controlls temperature and tries to find the temperature that will give us the maximum co2 consumption rate.


My previous method of light control was based upon light level readings and assumed plant requirements (ie 8hrs of “full sun” per day).  I think this method is much more accurate because CO2 consumption by the plant and photosynthesis are very strongly correlated.  It is still probably important not to give your plants more light in terms of total on time than is necessary.  The rule of thumb is up to 16 hours depending on the plant and stage of growth… however, if CO2 consumption goes on and on past 16 hours, maybe we should call into question the 16 hour rule.

I’m going to be implementing this new method of light control and I’ll post back on my results.  As I said, right now my greenhouse is mostly empty, so I imagine that the results will be several months away.  Remind me if I forget to blog about what I observed from this method.

Geothermal air vs water – The math

Math is hard… especially in complex systems.  Therefore what I’m about to do may have errors.  There may be holes in my understanding.  Hopefully, if you see an error or hole, you’ll let me know.  Here goes…

Air holds less energy than water.  About 4 times less.  That means that you can sink lots of energy into water without raising its temperature much.  Water can also transfer energy (thermal conductivity) better than air.  These attributes should make water superior to air at heating or cooling, right?  Well, as I have learned, maybe not.

Air contains water.  Up to 2% of air is water vapor.  How many grams of water per cubic meter of air depends on the air’s temperature. The warmer the air is, the more water it can hold.  For example, one cubic meter of air (1.2kg) at 30C can contain 30g of water at 100% saturation or 100% humidity.  At 15C, air only can hold 12g of water (again at 100% humidity).  I’ll be using those temperatures later in my examples, so take note.

Latent heat

When water changes from a liquid state, to a gas state (and vice-versa), it takes a certain amount of energy.  It takes 2257 joules per gram of liquid water to change it from a liquid to gas.  In my understanding, the energy to phase change the water will come from the warmest available source.  In a geothermal cooling situation, the energy is going to come from the air because it’s warmer.  We can calculate, then, how much energy will be taken out of the air as it goes from one temperature to another.  We can estimate a best-case energy transfer air to a 15C geothermal thermal mass.  I compiled the following chart showing the best-case performance of geothermal air per humidity level:


From the chart, we can see that it’s possible to condense 100% of the available air above 50% humidity.  We also see that we move about 18,000 joules of energy from the air during this transfer.  By contrast, taking the same mass of water (1.2kg) from 30C to 15C without any phase changes transfers 75,312 joules.  Even with the latent bonus, more energy is being transferred with water.

The devil is in the details.  How quickly can you transfer that amount of energy using the various mediums and what is the cost are really the questions.  How likely is it that you will be able to achieve a water temperature shift from 30C to 15C?  I guess it depends on the amount of tubing in the ground.  Likewise, we are making assumptions about the air system -that all available water has been condensed and the humidity of the air coming out is almost 100%.

Update (2016/10/24): I originally claimed the air coming out would be 0%.  That is incorrect since not all the water vapor will be condensed.

Too make the muddy water less clear, a geothermal water system isn’t exactly 100% sensible (no phase changes).  For example, I see water condensing around my heat exchanger.  Water can also condense around the reservoir surface area but I have not noticed it (nor have I looked for it).  This condensing effect might be just as good as a geothermal air system, but I don’t have the proper tools to test it and my temperatures are probably not warm enough to do the testing until next year anyway.  So we’ll have to leave that as an open question: does the latent effects of a water system with heat exchanger equal that of a geothermal air system?


Air is probably better at cooling than it will be at heating.  The main reason is that the amount of moisture that the air can hold at cool temperatures is low.  If you live in an area like mine where the cool months still have high humidity, this effect is reduced even more because there just won’t be the excess capacity in the air to hold any water vapor.  Without water vaporizing or condensing, there will be no latent heating bonus.

I put together a similar chart showing, again, best-case results where the air picks up as much moisture from the soil as possible (achieving 100% humidity every pass).  I’m assuming that air that wicks up moisture gains the energy from the phase change of liquid from the soil to gas.  I started with an air temperature of 0C and a geothermal mass of 10C.


Both tables are available here:

How does that compare to water?  Well, to take 1.2kg of 0C water to 10C takes 51000 joules of energy (ignoring phase change).  That’s enough to warm the air to “7.2C” over 50 times.  At one complete exchange of the loop per minute, it will take about 22 hours for the water to achieve that temperature.


The up front costs of geothermal air are higher than geothermal water.  For 200 meters of corrugated 6 inch tubing, the cost is around $500 dollars.  For the same length of 1/2″ PEX tubing, it will cost less than $200 dollars.  The blower is also more expensive than the pump.  Below I’ve listed prices I found for both systems:geothermal-air2

What about runtime costs?  The pump consumes around 70W.  This dayton blower consumes above 200W at full speed.  The fan on the heat exchanger runs at about 90W.  So even though the water system has more components, the total sum of components uses less power than the air system.


Utility is how useful a thing is.  If it has more than one uses, the better.  Are there multiple uses for the air we can take advantage of?  Yes.  We can use the cool air from the geothermal system to cool lighting such as LEDs but we need extra fans.  Ambient air cooling will probably not be  adequate.  Channeling the air might also be difficult.

Water will have much more utility.  Water is going to be better for spot cooling things and for moving energy around.  The tubing is much smaller and cheaper and pumps are less expensive.  You can use the same pump for the entire system where with air, multiple fans are requires for spot applications.  The costs add up.  We can easily use a water system to spot cool CO2 generators, lights, and virtually anything else we need to without any additional moving parts or electrical components (generally just tubes and adapters).


Geothermal with air as a medium might be better than water at cooling if water has no latent effects.  If water does have latent effects and if latent effects are equal, water is probably better due to it’s capacity to store energy.

The latent effects of air for cooling are diminished in dry environments when air is below 50% humidity.  Humidity in high desert states like Utah may not get over 30% during summer days.

For heating, the endothermic bonus for air is not great and since it cannot be used as thermal mass, water could be better.

Temperature stability is going to be better with water because the required amount of energy to change the water’s temperature is greater.

Utility is also better for water because it can be used to spot cool virtually anything without adding additional costs relative to trying to spot cool with air.

Optimizing the greenhouse cooling system

My current cooling solution is composed of the following:

  • 15″ x 12″ intake water-cooled heat exchanger
  • 12″ exhaust fan
  • 8″ water-cooled heat exchanger with 240mm fan x2
  • Geothermal loop 5-6′ deep
  • Soil bed and aisle loop 3-4″ deep

Since the beginning of spring, I’ve been optimizing the cooling system.  Now that it’s summer, I can test it’s capabilities.  Here are some of the principles I’m trying out.

Variable setpoint

In my area day/night temperatures can swing violently.  7C at night, and 31C during the day isn’t uncommon.  It will become more consistent as summer progresses, but for now, I want a system that will change the setpoint based on the fact that nights are colder.  I want the system to store more heat during the day so it can keep things warmer at night.  So I have a bit of machine learning built into the system that takes into consideration the night time temperature and allows for a higher setpoint during the day to store more heat.  I have to keep the setpoint within livable conditions for my plants.  Right now, I’ve got 9C as my lowest setpoint, and 34C as my highest and the “ideal” setpoint at 24C.  For every night the temperature drops below 9C, I raise the running setpoint by one degree.  In the winter, that will probably mean that the temperature could reach 34C and maintain there for a while.  In the summer, if the nights are warm, the setpoint will decrease as long as it’s above the 24C.

With this type of “learning”, I shouldn’t have to ever manually set my setpoint.

Oh, and one more thing.  If the setpoint is kinda high -too high for humans to comfortably work in the greenhouse, I have a rule where if the human lights (a white LED strip) are on, change the setpoint to something that a human can tolerate.  For me, that’s 23C.

CO2 On-demand

The rule for this is simple.  If the temperature is below the variable setpoint and it’s daytime, burn some hydrocarbons and make some CO2.  If it’s night, only turn on if the temperature drops below the minimum threshold (9C).  Plants only need CO2 when there’s light, so trying to maintain a certain CO2 level at night will become expensive.

Exhaust only when needed

I have my exhaust set to turn on when the temperature exceeds the maximum threshold of 34C.  Why?  Well, if there’s a certain CO2 level, and it’s 25C (vs the 24C setpoint) we don’t want to exhaust the CO2.  That’d be a waste!

We will, however, exhaust the CO2 if we get a gas alarm from the harmful gas sensor.

Variable speed intake

My intake has 6 200CFM 120mm fans controlled by a photon which can PWM a MOSFET to control how much voltage the fans get.  Using a PID algorithm and the variable setpoint, On the photon, I get 8bits of control resolution (256 steps) so I’m able to suck in just the amount of air needed to cool.  Almost all of the cooling work is being done by this and the other heat exchanger.

Below you can see how well the intake system tracks the temperature (right graph) and also see when the exhaust fan kicks on (left graph).

intake and exhaust

Heat exchanger for geothermal

I redesigned my geothermal system a bit.  Instead of using the same reservoir as the irrigation, it now exclusively uses a 50 gallon drum and a small 5w continuous pump.  This pump pumps water through the geothermal system and back 24hrs a day every day.  In addition, I moved the water cooling pump (the pump that pumps through the intake, LEDs, CO2 generator, etc) to use this dedicated drum as well.

This change allows me to add a bit of chlorine to the water to keep algae from clogging my tubes.  It also frees up my irrigation reservoir for liquid-based feeding (more on that in a future post?).

To compare, here are the designs for both the old system and the new system.

Trip's greenhouse water system

New system:

Trip's greenhouse water system (3)

Attached to the geothermal line is my little 8″ x 8″ heat exchanger with 240mm fan.  The fans don’t push a lot, but it’s the quality that counts.  The air coming from there is cooled from water deep within the earth.


I don’t open my door

With this setup, I have never had the need to open my door so far.  This hopefully keeps pests out and with them, disease.


Over the next several weeks, I’ll be trying to test the potential of this system.  Today’s high was 27C.  My high temperature in the greenhouse was 36C right around the time I increased the aggressiveness of the intake PID algorithm and reset the system (see the missing data on the graph above) .  With that aggressive setting, the intake still only hit 210 pulses out of a possible 255.  My next goal is to optimize the PID settings and tune it better.  This will further give me an idea of the systems capabilities.

Augmenting greenhouse with blue and far red LEDs

I’ve done a few posts about the benefits of blue and far red lights on plants.  I’ve used them on my seedlings.  Now that I have no seedlings for the moment, I wanted to try them out in the greenhouse.

But the greenhouse is outside, right?  It already has the sun, right?  Yes and yes.  However, exposing plants to a higher concentration of blue light before sunrise, can begin the process of the plant opening its stomata (pours the plant uses to “breath” out water and breath in CO2) to make it more ready for photosynthesis and ultimately carbon fixing and growth.

Far red light benefits at the end of the day are already covered in a different blog.  The higher concentrations should help -especially because trees and other objects shade the setting sun from my plants.

I’m trying to put growth and fruit production into overdrive.  My max expected yield should be somewhere around 1-2lbs of tomatoes per day.  I’m getting close to 1lb every 2-3 days.  The blue light along with CO2 boosting in the morning should help with growth and production.  I expect to see less suckers on my tomatoes and more growth with the far red light as well.

My red and blue lights are enclosed in flood light housings.  It was pretty easy to set them up this way.  I used a carabiner to hang them from the wire over my second bed.  I then pointed the lights at my tomatoes and ran the power cord to the ubiquity mfi mpower strip that I recently installed.  The cool thing about the mpower strip is that you can control it over wifi -so I can tie it into my automation system, but it also supports simple schedules including location-based sunrise/sunset.  I created a schedule that starts the blue light 1hr before sunrise and turns it off 1hr after sunrise.

The blue light looks really cool at night.  This is what a 50 watt LED can do.


The schedule I set up for the far red LED was 30 mins before sunset, and turn back of 1 hr after sunset.  It isn’t visibly as bright as the blue, but my infrared camera sees the difference.


I’ll try to remember to follow up if I notice a difference.  If I forget, comment below and I’ll either respond with my findings or make a new “results” post.