Blue Connect pool measurements

I had the same problem. This helped me: How to find new devices with esp32_ble_tracker when nothing appears in the logs

1 Like

thanks for link. i solved with hardware reset. disconnected the battery :slight_smile:

Hi, I am also looking for a way to add salt readings. Please let me know if (and how) you have managed to do this. Thanks!

After some more reading of the excellent contributions in this thread, I manged to add the salt sensor:

sensor:
#insert below temp, ph, orp and battery sensors
  - platform: template 
    id: sensor_${blueriiot_id_prefix}_salt
    name: ${blueriiot_name_prefix} Salt
    # Optional variables:
    unit_of_measurement: "g/L"
    icon: "mdi:water-percent"
    state_class: "measurement"
    accuracy_decimals: 1

and

text_sensor:
  - platform: ble_client
    id: ${blueriiot_id_prefix}_reading_data
    name: ${blueriiot_name_prefix} reading data
    internal: true
    ble_client_id: ble_client_${blueriiot_id_prefix}
    service_uuid: ${blueriiot_receive_service_uuid}
    characteristic_uuid: ${blueriiot_receive_characteristic_uuid}
    notify: true
    update_interval: never
    on_notify:
      then:
       lambda: |-
          std::string rawhex = format_hex_pretty((uint8_t *) x.c_str(), x.size()).c_str();
          ESP_LOGD("raw_hex", "%s", rawhex.c_str());

          float temperature = (float)((int16_t)(x[2]<< 8) + x[1])/100;
          ESP_LOGD("temp", "%f", temperature);
          id(sensor_${blueriiot_id_prefix}_temperature).publish_state(temperature);
              
          float raw_ph = (float)( (int16_t) (x[4]<< 8) + x[3]) ;
          float ph = (float)( (int16_t) (2048 - raw_ph)) / 232  + 7 ; 
          ESP_LOGD("ph", "%f", ph);
          id(sensor_${blueriiot_id_prefix}_ph).publish_state(ph);
          
          float orp = (float)( (int16_t) (x[6]<< 8) + x[5]) / 3.86 - 21.57826;
          ESP_LOGD("orp", "%f", orp);
          id(sensor_${blueriiot_id_prefix}_orp).publish_state(orp);
          
          float salt = (float)( (int16_t) (x[8]<< 8) + x[7]) / 25.0;
          ESP_LOGD("salt", "%f", salt);
          id(sensor_${blueriiot_id_prefix}_salt).publish_state(salt);
          
          float bat = (float)( (int16_t) x[11]) / 36 * 100;
          ESP_LOGD("bat", "%f", bat);
          id(sensor_${blueriiot_id_prefix}_bat).publish_state(bat);
          
          id(switch_${blueriiot_id_prefix}_enable).turn_off();

My only challenge is that my probe is no longer working. I have ordered a new one and will let you know once Iā€™ve tested everything.

Thanks everyone for amazing work!

4 Likes

So, the entity of the middle gauge is: BLEproxy SK-Pool Battery.
it could not be the temperatur, du to the fact that i live in Germany :wink:
Today it shows 28Ā°C, thats an impossible value for a temperature right now ā€¦
this is the yaml part of the three gauges:
its a basic visualisation:

square: true
type: grid
cards:
  - type: gauge
    entity: sensor.esphome_web_1cc2b0_sk_pool_ph
    name: pH
    needle: true
    severity:
      green: 7.2
      yellow: 7.6
      red: 0
    min: 6.8
    max: 8
  - type: gauge
    entity: sensor.esphome_web_1cc2b0_sk_pool_battery
    needle: true
    severity:
      green: 80
      yellow: 20
      red: 0
    name: Batterie
  - type: gauge
    entity: sensor.esphome_web_1cc2b0_sk_pool_orp
    needle: true
    name: ORP
    severity:
      green: 650
      yellow: 750
      red: 0
    min: 600
    max: 800
columns: 3

Thats the battery part, am i wrong here?

          float bat = (float)( (int16_t) x[11]) ;
          ESP_LOGD("bat", "%f", bat);
          id(sensor_${blueriiot_id_prefix}_bat).publish_state(bat);

Hi,
With my unit, it comes really close to the temperature. (Buitengevel is dutch for the outside wall of a house). When it was hotter there was a bigger difference, my guess due to the water temperature that influences the sensor.

I think it is the Battery Temperature, this would explain why it is neaby the outside temparute.
Because the post of the gauge I was able to optimize mine.

square: false
type: grid
cards:
  - type: gauge
    entity: sensor.esphome_web_1cc2b0_sk_pool_ph
    name: pH
    needle: true
    min: 6.2
    max: 8.6
    segments:
      - from: 0
        color: '#FF0000'
      - from: 6.6
        color: '#FFA500'
      - from: 7.2
        color: '#008000'
      - from: 7.6
        color: '#FFA500'
      - from: 8.2
        color: '#FF0000'
  - type: gauge
    entity: sensor.esphome_web_1cc2b0_sk_pool_temperature
    name: Temperatur
    needle: true
    max: 32
    min: 18
    segments:
      - from: 0
        color: '#0000FF'
      - from: 22
        color: '#008000'
      - from: 28
        color: '#FF0000'
  - type: gauge
    entity: sensor.esphome_web_1cc2b0_sk_pool_orp
    needle: true
    name: ORP
    min: 350
    max: 1050
    segments:
      - from: 0
        color: '#FF0000'
      - from: 400
        color: '#FFA500'
      - from: 650
        color: '#008000'
      - from: 750
        color: '#FFA500'
      - from: 1000
        color: '#FF0000'
columns: 3
1 Like

Yes, the Pico-CPU could be a problem. Thanks for the hint!
Do you think, the ESP32-S3FN8 variant could be better? Iā€™m thinking about buying a M5Stack C123 for this purposeā€¦

To be honest, i dont know.

I looked at the PICO specs and thought that this would not be good enough for the BT LE to do what we need. What you can do is buy a cheap development board with the same chip (ESP32-S3-MINI-1) and try it out and then go for the M5Stack version.

1 Like

the battery in blue connect device, is this one , noe extacly the same but very similar with the same form factor and same chemistry

As you can see, the voltage of the battery is constat until complete discharge.
For this reason we can assume that no information about battery level is sent .
Instead battery temperature can help the hardware in the device to estimate the correct lifetime.

1 Like

I have the exact same problem. The probe isnā€™t working correctly anymore, needs replacement. :frowning:

Iā€™ll buy it next summer, but Iā€™ll apply your code additions for salt in the meanwhile.

Could you post the complete yaml file please? Because I noticed some differences vs the code I was using.

Thanks a lot.

Ciao Daniele,

I replaced the original battery with this one (itā€™s 2.6Ah vs 1.8Ah of the original, and itā€™s working): https://www.amazon.it/gp/product/B097MR4FJ9

image

The code relies on the voltage so I shouldnā€™t change anything, correct?

The original one is 1800mAh:

Ciao Alex. Thatā€™s correct. Mine is reporting 69% after 45 days with a reading every hour when the pump is on (12 hours) and 1 every 2 when off.

i will buy the same!!

Hi Alex,

I added the 2 parts to my yaml so ts complete.
All should be aligned now with the recent additions from this thread,

2 Likes

Hi,
Question regarding the conductivity level. I am getting a value of 8.802,6 mS/cm here. But I have no glue about the acceptable ranges here. Internet is not saying much about this. My app is not displaying this topic at all.
Regards
Lukas

from the blue connect app, you can get the correct range.

My app is not telling me the limits, thats why i asked.