8 min read

Shorts #4: HydroMix

Shorts #4: HydroMix

It's already obvious, but I love plants, especially the fruiting ones. And I love hydroponics because it's the right mixture of nature and technology that pushes that dopamine button in my head when things go right. But that can be challenging and annoying. And I don't like to be annoyed by some measly plant matter!

the issue

In hydroponics, the plants receive all nutrients from the water. I won't bother you by explaining how and why today, maybe later, but let's say all the plant food is in the water. The amount of nutrients dissolved in the water is measured as EC (electric conductivity) in mS/cm (millisiemens per centimeter) or ppm (parts per million). And why conductivity, you ask? Because nutrients are in the form of salts, which love to dissolve in water, increasing the conductivity. And you can measure that. However, there is a catch. The EC is a single number that tells you how much of all salts is in the water, not the ratio of each compound. And like people, every plant has its own taste for the food. Some plants like it a little bit spicy, some plants like it mild. For example, fruiting plants like tomatoes and peppers like a lot of phosphorus and potassium for those sweet tomatoes. But give the same mixture to a lettuce, for example, and you would spit it out after the first bite because it would be bitter as hell, as they love nitrogen. Manufacturers of hydroponic nutrients are trying to make it easier for us by creating combinations of concentrated salt solutions or bags of dry salts and providing a dosing table.

Some nutrients are stupid simple: part A and part B mixed in the appropriate amount of water. This is the case with the Shogun Coco line, for example. Just mix equal amounts of part A and part B in a bucket and call it a day. Some are more complex and give you much more control, like the TerraAquatica Tri-Part line, which lets you fine-tune the vegetative and fruiting phases to your liking.

TerraAquatica TriPart table.

But here lies the issue. You see, the Tri-Part, for example, has a dosing table. It's neatly divided into stages. But for what plant is this? Is this some generic dosage? Will this work for leafy greens? Is this dosage a low-key how-to for those magical plants? Who knows. For years, I've been manually adjusting the right amount based on the extremely scientific approach of just eyeballing the ratio.

the solution

The key is repeatability. I don't want to hit the exact right amount of nutrients. But I want to hit the same amount every time. I want to use exactly the same EC 1.8 solution for tomatoes every time, at the same ratio. I want something that takes the plant and EC as inputs and outputs the amounts of each part I need to mix to achieve the desired EC. So I want a calculator basically. Many apps in the App Store help you monitor the plant, tell you what it needs, and even diagnose it based on a photo. That's all nice, but it won't allow you to change the parameters. And I want that. Initially, I thought I would learn some Swift and make an iOS app, but I pivoted to a client-side web app in TypeScript. Knowing nothing about TypeScript, I looked into current trends and decided to use SvelteKit as a UI framework and Tailwind CSS for styling. And since I'd never written a single line of TypeScript, I bought some credits for Codex, then a brand-new coding agent from OpenAI, only to switch to Claude Code later because Codex's results were very disappointing.

the app

The app is designed around the nutrients I use and the plants I grow: the already mentioned TerraAquatica Tri-Part and Shogun Coco, and fruiting nightshades, cucumbers, and leafy greens.

I used a simple linear model to calculate the proportions of each component in the mixture to achieve the desired EC value. For this, I had to measure the EC of each part of the nutrient line. These values are then used in the following formula; mind that this is for the Tri-Part, for simplicity:

$$EC_{target} = EC_{water} + scale \times (r_{Grow} \times k_{Grow} + r_{Micro} \times k_{Micro} + r_{Bloom} \times k_{Bloom})$$

In here, we already know the $EC_{target}$, the $EC_{water}$, we know the EC of each part $k_j$, and we set our own ratios $r_j$. The only thing to figure out is the scale.

$$scale = \frac{EC_{target} - EC_{water}}{r_{Grow} \times k_{Grow} + r_{Micro} \times k_{Micro} + r_{Bloom} \times k_{Bloom}}$$

And now we can use this value to calculate the amount of each part to mix in the solution.

$$dose_{Grow} = scale \times r_{Grow}$$ $$dose_{Micro} = scale \times r_{Micro}$$ $$dose_{Bloom} = scale \times r_{Bloom}$$

It's a really stupid-simple approach for this; the target EC can be off a little bit because of the slight non-linearity of some nutrients, but I have generally measured accurate results. But I know there are some visual readers out there, and for you, I tasked the AI with creating an interactive visualization:

GH Tripart — dose vs EC target

k-values (EC per ml/L)
0.13
0.17
0.14
Ratios
1.0
2.0
3.0
Water baseline
0.30

Grow Micro Bloom

Doses in ml/L. Set your measured k-values and desired ratios to see how each part scales with target EC.

Mind that the formula is currently for the TerraAquatica line because I had some time to experiment. It's also very static and straightforward. In the app, there is an option for the Shogun line, with additives, but that's experimental and currently not working. The main parts are easy because it's a 1:1 ratio, but there are additives. And while most of the additives are salts that work with the linear model, I also use fulvic acid, which is almost invisible to the EC meter; caution is therefore advised when using the calculator.

And what's the performance? I used this calculator for the majority of the second round of my winter tomatoes in the HydroBROR.

While the vegetative phase was basically spot on, I had a dosing issue in the fruiting phase because I had slightly more Grow in the mix, which led to sour fruits. Adjusting the ratio towards Bloom fixed the issue.

Obviously, the key here is not to be precise. Heck, I am using a measuring cup and scale for $10. But all I wanted was repeatability. I care more about taste and yield than I do about those numbers, but the numbers are the only metric I can use to achieve the desired results with a somewhat consistent procedure.

There is a bookmark in the menu that leads to the latest version of my deployment. While you can use it, I recommend hosting your own version with your own measured values. I will keep updating the app to suit my needs, including the k values, so don't be surprised when it changes.