Pool ORP to PPM Free Chlorine Convertion Sensor

I have a pool with a PH-W2839 (Wireless WiFi Online Control Detector Water Quality Detector 3-in-1 pH/ORP/TEMP Controller Water Quality Tester BNC Type Probe). It’s working wonderfull with Home Assistant but i want to know the free chlorine PPM. I found a math equation from an AI (poe.com) and it’s (ORP+PH-600) / 10 but according to other convertion charts for example:

it’s not even close to this. For examble with ORP 800 and pH 7.5 (800+7.5-600)/10 we have 20.75ppm. As you see below we have 4ppm. The gap is HUGE! When i ask it why it give the 600 and what is it I’m getting this:

The value of 600 in the formula is a constant and represents the theoretical redox potential of a solution containing both chlorine and hypochlorous acid (HOCl) at a pH of 7. This value is often used as a reference point for redox measurements in swimming pools, where the predominant form of chlorine is HOCl.

The value of 600 is subtracted from the sum of the mV and pH values in the formula to account for the contribution of hypochlorous acid to the redox potential. This leaves only the contribution of free chlorine to the redox potential, which can then be used to estimate the free chlorine concentration in the pool water.

It’s worth noting that the value of 600 is an approximation, and the actual redox potential of a solution containing chlorine and HOCl will depend on factors such as temperature, pressure, and the concentration of other ions in the solution. However, for practical purposes, the value of 600 is a reasonable approximation that is widely used in the swimming pool industry.

The question is how can I have a sensor which calculate with the data from the below chart in Home Assistant?

PPM_Reading_vs_ORP_and_pH

Did you get anywhere with this? I’ve just got the same device and I’m trying to get free chlorine into HA

No not at all, even though Chat GPT said the math equation, it’s not accurate for open pools under the sun, the metrics is out of that they says the boards at all of the internet. I read in depth that ORP at the end can’t have a link with ppm of free clorine direclty. But in generally ORP is better than ppm, because with this way you can see how much clear is the water (whitch is the hole point in the end) and ppm they say only the free chlorine (which is not sure if the water is clear but how much chlorine is in it).

I came across this when I was using my old floating pool monitor (it didn’t last long).

  - platform: template
    sensors:
      pool_free_chlorine:
        value_template: "{{ ( 0.23 * (1 + 0 / 100 ) * ( 14 - states('sensor.pool_monitor_ph')|float(0.0)) ** ( 1 / (400 - states('sensor.pool_monitor_oxidation_reduction_potential')|float(0.0) - 516)/145) + 10.0 ** ( (states('sensor.pool_monitor_oxidation_reduction_potential')|float(0.0) + states('sensor.pool_monitor_ph')|float(0.0) * 70 -1282) / 40 ) ) |round(1) }}"
        unit_of_measurement: ppm
        icon_template: mdi:react
        friendly_name: "Calculated Free Chlorine"

I’ve added it to my setup but it seems a bit off especially as the temperature of the pool changes. I guess this is what you’re saying.

1 Like

Yes I did something like that but all boards charts they say metrics are at 25°C water temp. So for outside pool is not efficient… :confused:

I find the table from New Chart – Free Chlorine vs ORP/mV vs PH decent. Using it did require some calibration\offsets using a reference test kit, but it has been very good so far for my hot tub. I trained a ML model based on the table. Pre-trained model and usage example here.

1 Like

Hi @mzakharo your work is impressive!!
I’m a bit lost about how to implement your pre trained model in HA. How did you do that ?
Many people here would be very interested from what I read.
THanks :slight_smile:

I run the model via esphome - tubby/tubby.yaml at 562c1bfa9d2de87e46ba21e793025f799cc47f16 · mzakharo/tubby · GitHub

Hi, I found another table with data to estimate the amount of chlorine. Do you know of any tool that would create a formula from the data in excel?