Good news
It is working now. I updated to the newest esphome version 2023.8.2 and also to a nodemcu-32s board. Now its really working fine. Thanks for all who assisted me!
I am now unsure about the data quality itself. The blue connect is not yet inside the pool, its still „new“. For the ph-value I get from the espdevice a value of 4.4, if I re-calculate it including the temperature I get 7.02 which looks more to be the correct value. The „bat“ value is probably really something else, I get something between 25 and 27, the current outdoor temp is 19.29 the water temp is 23.5 and the room temp where the blueconnect is right now is 20.5. So I really have no clue about the interpretation of this value.
Hi folks,
thanks for the fantastic work.
But i have some problems finding my the ble macadress of the blue connect go,
any tips?
Use the link in this post. Instructions are on the ESP-Home website
Thanks Peter,
I firste used a esp32 BLE scanner to find the blue connect go mac adress,
now it works fine.
(i am captured in an apple environment, so it was harder to get the mac adress)
Really nice work, that makes the blue connect go a much more useable device
Glad that ii isworking now. The battery data is not the battery data. Its looks like temperature as the value is close to outside temperature (see the latest post before yours).
How did you make the gauges?
I had the same problem. This helped me: How to find new devices with esp32_ble_tracker when nothing appears in the logs
thanks for link. i solved with hardware reset. disconnected the battery
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!
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
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
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.
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.
I have the exact same problem. The probe isn’t working correctly anymore, needs replacement.
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
The code relies on the voltage so I shouldn’t change anything, correct?
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.