Blue Connect pool measurements

Don’t know what state you’re in, but I got mine through poolmart in Mandurah WA. Any astral dealer can just order it unless they don’t make them anymore

1 Like

hello, i have a little and maybe easy question.

I have the blueriiot blue without suscription (i can buy it monthly to obtain the measurements automatically and regularry (i dont want to force the measurements in the app).
If i buy the wifi extender, the measurements go automatically withouth suscription? or i must force the measurement by the phone, (like without the suscription)

thanks a lot

Heads up guys - the SIGFOX network owners have filed for bankruptcy protection in France - not sure how this will work out and how long our devices will continue to be able to update through the Sigfox network - maybe local polling needs to be a higher priority

Craig

Hi LordMike, I have had to redo everything and now have the Docker association. But I am missing a hint how to include this now in Home Assistant or Node-Red. Can you give me a hint there?

Hi,

I am two years user of Blue Connect and the BlueRiiot integration. I know this is not the purpose of this thread but i have a problem with my device that i wanted to share in case someone had gone through that. It ran out of battery and I bought a new one for replacement, in spite of that, the unit does not sent any measure via SigFox and does not respond to any Bluetooth request (it is not visible). If I run BLE scanner i can see the device and its services. I am trying to get support from the vendor but they are very slow responding. My pool is fully automated based on Blue Connect measures and I am a bit desperated. If I get a solution from the vendor I will share it just in case someone can benefits of that.

Thanks in advance.

Mine did that after about a year, wouldn’t transmit any data , changed the battery in case it was just low but no go. I contacted fluidra and they sent me a new one under warranty. I’ve still got the old one in the shed if there’s any fixes out there

Thanks for the info. I finally got contacted by the BlueRiiott support and they offered me a new one in spite the guarantee had expired a month ago. Good point dfor them. It looks like it cannot be fixed. Hope they honour their words, I am managing the request with my seller.

Good outcome. Im planning to take the old one apart and see if I can fix it. I bought a heap of esp32 chips, so I may be able to replace the interface chip with one. Be nice if it worked so potentially I could talk directly to the sensors via wifi and BT but it’s probably wishful thinking.

How did you discover the decoding of the values?
I have a bluetooth PH/ORP probe and I cannot decode any of the readed values.

This is what I got in wireshark:

ffa9fc5afe73ffc0ffc4ffeefdf7fd7ffabc65fea4ddbb55

And this is what I got from the android app:

ID  Model Name  Date    EC  EC(Unit)    TDS TDS(Unit)   SALT(%) SALT(TDS)   SALT(TDS)(Unit) SALT(S.G.)  pH  Humidity(%) ORP(mV) H2(ppb) H2(ppm) DO(mg/L)    DO(%)   CF  CL(mg/L)    Temperature(°C) Temperature(°F) Location    Notes
1   BLE-C600    2022-06-16 12:54:44 110 μS/cm   55  ppm 0.0 55  ppm 0.999   8.56    -   141 -   -   -   -   -   -   26.0    78.8    Madrid  

This is my probe:

I managed to read the battery level and also turn on/of the display.But not the rest of the meassurements. Any idea?

1 Like

Thanks, Not a bad idea, with ESPHome you can do lot of things using ESP32. Just as of potentian linspiration take a look to this
Wi-Fi Pool Kit | Atlas Scientific (atlas-scientific.com)
It is a bit expensive, but the heart of the device is an ESP32 that you can manage in HA via ESPHome. I have done that for another type of devices (moisture probes).

Wow prices on the Atlas kit have certainly spiked.
I believe the issue that wasn’t solved last time this device was brought up was the inability to calibrate the probes when using esphome. Any idea if that’s been solved?

Hi, how did you get the Bluetooth values from the device?
I’m trying to connect via an ESP32 and ESPHome using esp32_ble_tracker with which I’m able to see a manufacturer_data_advertise with ID 0131 but it doesn’t seem to be right.

hello, anyone can obtain the values of the blueconnect by bluetooth?
With the docker container you can obtain the values but you need a suscription active to blueconnect.

Im try to avoid this suscription but i dont know it is posible by bluetooth or by wifi extender.

Hello guys
My name is Jose, from Spain, I’m new to the forum.
I stumbled upon this thread, a few days ago, searching for a way to hack read Blue Connect device measurements via Bluetooth LE on demand. I bought a Blue Connect Go, that measures Temperature, PH and ORP.

I found a couple of posts in this thread crucial for reaching my goal:

  1. vampcp - Oct 18,2021 - Some example for RAW data and corresponding values from the cloud:
23ab093207ab0a7800240e
"salinity":4.9,"conductivity":8742,"temperature":24.8,"ph":7.93,"orp":685
[...]
2 more samples
  1. vampcp - Oct 28,2021 - This is how I managed to get the raw values from the device
blueClient.enableNotifications(blue_device, BLUE_TAKE_MEASURE_SERVICE) 
blueClient.setNotificationCallback(myNotificationCallback) 
blueClient.**requestMeasurements**(BLUE_REQUEST_SENSOR_DATA)

Plus a third hint:

  1. This GitHub page, more concise about triggering a measurement:
    https://githubhelp.com/myhomeiot/esphome-components/issues/8

UUID F3300002-FOA2-9B06-0C59-1BC4763B5C00 is the one that I write TRUE / 0x01 to and then I get the answer notified on F3300003-F0A2-9B06-0C59-1BC4763B5C00

Ok, so I first tried to decode myself the samples provided by vampcp, for example this one:

Cloud value set 1:
"salinity":4.9,"conductivity":8742,"temperature":24.8,"ph":7.93,"orp":685

23 ab 09 32 07 ab 0a 78 00 24 0e
   ^^-^^---------------------------- TEMP 0x09ab = 2475 / 100  = 24.75 ºC   <-- OK
         ^^-^^---------------------- PH   0x0732 = 1842 / 7.93 = K 232.28
               ^^-^^---------------- ORP  0x0aab = 2731 / 4    = 682.75 mV  <-- MOSTLY OK

For the TEMPerature, as mentioned earlier in this thread, the hex values [ab 09], represent the integer number 0x09ab = 2475 (little-endian, actually, first byte = least significant byte). Divide it by 100 and you get the temperature in degrees celsius with 0.01 ºC resolution. The App shows this with just 1 decimal place.

For the ORP, I found a similar approach. Just divide the raw value by 4 and you get the actual ORP with 0.25 mV resolution. The App shows this discarding the decimal part.

The PH was tricky, though. At first I thought there was also a linear direct relationship. With the given 3 samples, one could think of a value like K = 232.28 which was great to PH = 0x0732 / 232.28 = 7.93. As soon as I tried to use that constant with my samples around PH 7, it was a big NOK:

BLE Scanner: 23 a9 0b ff 07 aa 08 01 00 25 0e -- App: "29.8 ºC", "7.0", "554 mV"

23 a9 0b ff 07 aa 08 01 00 25 0e
   ^^-^^---------------------------- TEMP 0x0ba9 = 2985 / 100   = 29.85 ºC   <-- OK
         ^^-^^---------------------- PH   0x07ff = 2047 / K 232 = 8.82       <-- *** NOK ***
               ^^-^^---------------- ORP  0x08aa = 2218 / 4     = 554.50 mV  <-- OK

Uhmmm! K=232 seems a twisted value. I would have expected something like K=200 or K=256.

Then I noticed what seemed to be a negative linear relationship between the PH raw and cooked values. See vampcp’s readings, sorted by PH:

23ab093407980a7b00240e - 0x0734 -> "ph":7.92
23ab093207ab0a7800240e - 0x0732 -> "ph":7.93
23a6093007b70a78001e0e - 0x0730 -> "ph":7.94

Here, an increase of 0x0002 gives you a decrease of 0.01 in the cooked value, so there must be some negative 1/200 -ish constant in the formula. As we’ll see later on, I got values very close to 0x0800 for PH 7.0 (neutral PH, center value of the 0-14 PH scale). What if we then just needed to apply the proper K value? Let’s find out, please keep reading!

I’ve been taking samples during the last couple of days, several times during the day. I used both BLE Scanner on my iPhone to get the raw values and the BlueConnect App to get the cooked values.

Note: for this, I take a sample with BLE Scanner, giving me the raw value (take a screenshot), disconnect and then take a new sample with the BlueConnect App, giving me the cooked values (take another screenshot). So, there’s a slight delay between samples and their values may vary slightly

Note 2: Alternatively, you can use the ‘gatttool’ tool that comes with Linux’ bluetooth package. I happen to have a Raspberry Pi near the pool that I can use for that. A reading can be taken as follows:

$ gatttool -b 00:A0:50:XX:XX:XX --char-write-req --handle=0x0014 --value=0100 --char-write-req --handle=0x0012 --value=01 --listen
Characteristic value was written successfully
[...takes about 8 seconds]
Notification handle = 0x0014 value: 23 77 0b fc 07 48 08 01 00 1f 0e

…and we get the raw values.
(you can prepend ‘timeout 60’ to the ‘gattool’ command to let it not wait for notifications forever)
(here handle 0x0012 corresponds to characteristic ‘F3300002’ and handle 0x0014 to ‘F3300003’. First we enable notifications on the second one, then we send the ‘start measurement’ command to the first one)

With the BLE Scanner, you write the value 01 to the characteristic ‘F3300002’ and after 8 seconds, the raw measurement value will be notified to the characteristic ‘F3300003’:

So, here go some values for PH ranging from 7.0 to 8.1:

BLE Scanner: 23 a9 0b ff 07 aa 08 01 00 25 0e -- App: "29.8 ºC", "7.0", "554 mV"
23 a9 0b ff 07 aa 08 01 00 25 0e
   ^^-^^---------------------------- TEMP 0x0ba9 = 2985 / 100 = 29.85 ºC  <-- OK
         ^^-^^---------------------- PH   0x07ff

BLE Scanner: 23 18 0b 7f 07 0d 0a 00 00 2b 0e -- App: "28.4 ºC", "7.6", "645 mV"
23 18 0b 7f 07 0d 0a 00 00 2b 0e
   ^^-^^---------------------------- TEMP 0x0b18 = 2840 / 100 = 28.40 ºC  <-- OK
         ^^-^^---------------------- PH   0x077f

BLE Scanner: 23 91 0a 13 07 44 09 01 00 27 0e -- App: "27.0 ºC", "8.0", "592 mV"
23 91 0a 13 07 44 09 01 00 27 0e
   ^^-^^---------------------------- TEMP 0x0a91 = 2705 / 100 = 27.05 ºC  <-- OK
         ^^-^^---------------------- PH   0x0713

BLE Scanner: 23 04 0b 01 07 e7 09 00 00 26 0e -- App: "28.2 ºC", "8.1", "632 mV"
23 04 0b 01 07 e7 09 00 00 26 0e
   ^^-^^---------------------------- TEMP 0x0b04 = 2820 / 100 = 28.20 ºC  <-- OK
         ^^-^^---------------------- PH   0x0701

As I suspected, 0x07ff (or 0x0800, for the case) seems to correspond to PH 7.0, going down to 0x0713 for PH 8.0, so we could assume the slope constant may be something like:
K = (0x0800 - 0x0713) / (7.0 - 8.0) = -237

Playing a bit with the several PH values around 7.0 and 8.0, and several values of K, I find K = 232 gets me the ‘most rated OK’ results for all my tested cases:

BLE Scanner: 23 a9 0b ff 07 aa 08 01 00 25 0e -- App: "29.8 ºC", "7.0", "554 mV"

23 a9 0b ff 07 aa 08 01 00 25 0e
   ^^-^^---------------------------- TEMP           0x0ba9 = 2985 / 100 = 29.85 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x07ff) / 224 + 7   = 7.0045    <-- OK *
         ^^-^^---------------------- PH   (0x0800 - 0x07ff) / 232 + 7   = 7.0043    <-- OK **
         ^^-^^---------------------- PH   (0x0800 - 0x07ff) / 240 + 7   = 7.0042    <-- OK ***
         ^^-^^---------------------- PH   (0x0800 - 0x07ff) / 248 + 7   = 7.0040    <-- OK ****
         ^^-^^---------------------- PH   (0x0800 - 0x07ff) / 256 + 7   = 7.0039    <-- OK *****

BLE Scanner: 23 72 0b fd 07 3f 08 01 00 1f 0e -- App: "29.3 ºC", "7.0", "523 mV"

23 72 0b fd 07 3f 08 01 00 1f 0e
   ^^-^^---------------------------- TEMP           0x0b72 = 2930 / 100 = 29.30 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x07fd) / 224 + 7   = 7.0134    <-- OK *
         ^^-^^---------------------- PH   (0x0800 - 0x07fd) / 232 + 7   = 7.0129    <-- OK **
         ^^-^^---------------------- PH   (0x0800 - 0x07fd) / 240 + 7   = 7.0125    <-- OK ***
         ^^-^^---------------------- PH   (0x0800 - 0x07fd) / 248 + 7   = 7.0121    <-- OK ****
         ^^-^^---------------------- PH   (0x0800 - 0x07fd) / 256 + 7   = 7.0117    <-- OK *****

BLE Scanner: 23 18 0b 7f 07 0d 0a 00 00 2b 0e -- App: "28.4 ºC", "7.6", "645 mV"

23 18 0b 7f 07 0d 0a 00 00 2b 0e
   ^^-^^---------------------------- TEMP           0x0b18 = 2840 / 100 = 28.40 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x077f) / 224 + 7   = 7.5759    <-- OK *****
         ^^-^^---------------------- PH   (0x0800 - 0x077f) / 232 + 7   = 7.5560    <-- OK ***
         ^^-^^---------------------- PH   (0x0800 - 0x077f) / 240 + 7   = 7.5375    <-- NOK
         ^^-^^---------------------- PH   (0x0800 - 0x077f) / 248 + 7   = 7.5202    <-- NOK
         ^^-^^---------------------- PH   (0x0800 - 0x077f) / 256 + 7   = 7.5039    <-- NOK

BLE Scanner: 23 dc 0a 7e 07 fa 0a 01 00 1f 0e -- App: "27.8 ºC", "7.6", "701 mV"

23 dc 0a 7e 07 fa 0a 01 00 1f 0e
   ^^-^^---------------------------- TEMP           0x0adc = 2780 / 100 = 27.80 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x077e) / 224 + 7   = 7.5804    <-- OK *****
         ^^-^^---------------------- PH   (0x0800 - 0x077e) / 232 + 7   = 7.5603    <-- OK ***
         ^^-^^---------------------- PH   (0x0800 - 0x077e) / 240 + 7   = 7.5417    <-- NOK
         ^^-^^---------------------- PH   (0x0800 - 0x077e) / 248 + 7   = 7.5242    <-- NOK
         ^^-^^---------------------- PH   (0x0800 - 0x077e) / 256 + 7   = 7.5078    <-- NOK

BLE Scanner: 23 4f 0b 58 07 58 09 00 00 2d 0e -- App: "28.9 ºC", "7.7", "601 mV"

23 4f 0b 58 07 58 09 00 00 2d 0e
   ^^-^^---------------------------- TEMP           0x0b4f = 2895 / 100 = 28.95 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x0758) / 224 + 7   = 7.7500    <-- NOK
         ^^-^^---------------------- PH   (0x0800 - 0x0758) / 232 + 7   = 7.7241    <-- OK ***
         ^^-^^---------------------- PH   (0x0800 - 0x0758) / 240 + 7   = 7.7000    <-- OK ***** nailed it
         ^^-^^---------------------- PH   (0x0800 - 0x0758) / 248 + 7   = 7.6774    <-- OK ****
         ^^-^^---------------------- PH   (0x0800 - 0x0758) / 256 + 7   = 7.6563    <-- OK **

BLE Scanner: 23 d7 0a 26 07 a4 09 00 00 27 0e -- App: "27.7 ºC", "7.9", "617 mV"

23 d7 0a 26 07 a4 09 00 00 27 0e
   ^^-^^---------------------------- TEMP           0x0ad7 = 2775 / 100 = 27.75 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x0726) / 224 + 7   = 7.9732    <-- OK *
         ^^-^^---------------------- PH   (0x0800 - 0x0726) / 232 + 7   = 7.9397    <-- OK ***
         ^^-^^---------------------- PH   (0x0800 - 0x0726) / 240 + 7   = 7.9083    <-- OK *****
         ^^-^^---------------------- PH   (0x0800 - 0x0726) / 248 + 7   = 7.8790    <-- OK ****
         ^^-^^---------------------- PH   (0x0800 - 0x0726) / 256 + 7   = 7.8516    <-- OK **

BLE Scanner: 23 a5 0a 1e 07 4c 09 00 00 26 0e -- App: "27.2 ºC", "8.0", "594 mV"

23 a5 0a 1e 07 4c 09 00 00 26 0e
   ^^-^^---------------------------- TEMP           0x0aa5 = 2725 / 100 = 27.25 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x071e) / 224 + 7   = 8.0089    <-- OK *****
         ^^-^^---------------------- PH   (0x0800 - 0x071e) / 232 + 7   = 7.9741    <-- OK ****
         ^^-^^---------------------- PH   (0x0800 - 0x071e) / 240 + 7   = 7.9417    <-- NOK
         ^^-^^---------------------- PH   (0x0800 - 0x071e) / 248 + 7   = 7.9113    <-- NOK
         ^^-^^---------------------- PH   (0x0800 - 0x071e) / 256 + 7   = 7.8828    <-- NOK

BLE Scanner: 23 91 0a 13 07 44 09 01 00 27 0e -- App: "27.0 ºC", "8.0", "592 mV"

23 91 0a 13 07 44 09 01 00 27 0e
   ^^-^^---------------------------- TEMP           0x0a91 = 2705 / 100 = 27.05 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x0713) / 224 + 7   = 8.0580    <-- OK ***
         ^^-^^---------------------- PH   (0x0800 - 0x0713) / 232 + 7   = 8.0216    <-- OK ****
         ^^-^^---------------------- PH   (0x0800 - 0x0713) / 240 + 7   = 7.9875    <-- OK *****
         ^^-^^---------------------- PH   (0x0800 - 0x0713) / 248 + 7   = 7.9556    <-- OK ****
         ^^-^^---------------------- PH   (0x0800 - 0x0713) / 256 + 7   = 7.9258    <-- NOK

BLE Scanner: 23 04 0b 01 07 e7 09 00 00 26 0e -- App: "28.2 ºC", "8.1", "632 mV"

23 04 0b 01 07 e7 09 00 00 26 0e
   ^^-^^---------------------------- TEMP           0x0b04 = 2820 / 100 = 28.20 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x0701) / 224 + 7   = 8.1384    <-- OK ***
         ^^-^^---------------------- PH   (0x0800 - 0x0701) / 232 + 7   = 8.0991    <-- OK *****
         ^^-^^---------------------- PH   (0x0800 - 0x0701) / 240 + 7   = 8.0625    <-- OK ****
         ^^-^^---------------------- PH   (0x0800 - 0x0701) / 248 + 7   = 8.0282    <-- NOK
         ^^-^^---------------------- PH   (0x0800 - 0x0701) / 256 + 7   = 7.9961    <-- NOK

This calculation may not be the real one they use on their servers and App, but it’s accurate enough for me for values between 7.0 and 8.1, perhaps extrapolable down to 6.0 but no lower. I would need to take a few measurements using the PH 4.0 calibration solution to get raw/cooked values at that point and redo the calculations. Maybe the same constant is still valid down to 4.0, maybe I meed a different constant for the acidic range (7…0), maybe a slightly different constant works for the 4…8 range, who knows.

To end the post, these would be my final dissections:

BLE Scanner: 23 dc 0a 7e 07 fa 0a 01 00 1f 0e -- App: "27.8 ºC", "7.6", "701 mV"

23 dc 0a 7e 07 fa 0a 01 00 1f 0e
   ^^-^^---------------------------- TEMP           0x0adc = 2780 / 100 = 27.80 ºC  <-- OK
         ^^-^^---------------------- PH   (0x0800 - 0x077e) / 232 + 7   = 7.5603    <-- OK, rounds up to 7.6
               ^^-^^---------------- ORP  0x0afa = 2810 / 4             = 702.50 mV <-- OK, just a millivolt off
                     ^^-^^---------- SAL  0x0001 -- my device does not support it, the App does not show it
                           ^^-^^---- COND 0x0e1f -- same as above

Sorry for the long post, I just wanted to share with you my ramblings and excitement trying to decode the raw data for this device. Hope it has been interesting and useful.

I’m planning on writing a small python script to automate the reading and decoding of the data from the device via BLE, in order to take 1 measurement per hour from a Raspberry Pi that I have near the pool running Raspbian Linux.

Regards
Jose

4 Likes

Great job jose (gracias tio!!)

Im now testing with the wifi extender and the mqtt docker, to force obtain data at certenly hours, if i cant make this, maybe i use your method

Hey Jose - thats fantastic work - i will try and use Tasmota on ESP32 to do this now that you have done the hard work. (Unfortunately my Blue Connect has died and am waiting for a factory warranty replacement.

Craig

Thank you guys! Here is what I get taking a measurement each hour:

Except for the ambient temperature, the other are read from the BlueConnect via BLE.

I don’t have a Github repo yet, so here are 2 snippets of the python script that I’m currently using:

def read_raw_measurement(device_mac):
	'''
	Read temperature, PH and ORP

	$ gatttool -b 00:A0:50:xx:xx:xx --char-write-req --handle=0x0014 --value=0100 --char-write-req --handle=0x0012 --value=01 --listen
	Characteristic value was written successfully
	Notification handle = 0x0014 value: 23 1d 0b 76 07 b6 0a 01 00 25 0e
	'''
	log = logging.getLogger()

	log.info("Reading Blue Connect Go Measurement...")
	process = subprocess.Popen(['timeout', '60', 'gatttool', '-b', device_mac, '--char-write-req', '--handle=0x0014', '--value=0100', '--char-write-req', '--handle=0x0012', '--value=01', '--listen'],
						 stdout=subprocess.PIPE,
						 stderr=subprocess.PIPE)
	out, err = process.communicate()

	if process.returncode == 0 or process.returncode == 124:
		lines = out.decode('ascii').splitlines()
		for line in lines:
			log.debug("--> %s" % (line,))

		p0 = re.compile(r'^Notification handle = 0x0014 value: ([0-9a-f ]+)')
		m0 = None
		for line in lines:
			m0 = p0.search(line)
			if m0 is not None:
				break

		if m0 is not None:
			# raw_measurement
			return m0.group(1).replace(' ','')

		raise Exception("could not parse subprocess output")
	else:
		raise Exception("subprocess returned exit code: %u" % (process.returncode,))

And this is where raw data is decoded and sent to stdout in CSV format:

		# ---------------------------------------------------------------------
		# time (UTC)
		# 2022-07-17T12:16:03.021Z
		utcNow = datetime.utcnow()
		sUtcTime = utcNow.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z"

		raw_measurement = None
		try:
			raw_measurement = read_raw_measurement(device_mac)
		except Exception as e:
			log.error("EXCEPTION: %s", repr(e))

		water_temp = None
		water_ph = None
		water_orp = None

		if raw_measurement is not None:
			# ---------------------------------------------------------------------
			# Water Temp (deg C)
			# 28.45
			# 231d0b7607b60a0100250e
			#   ^^^^
			raw_temp = int(raw_measurement[4:6] + raw_measurement[2:4], 16)
			water_temp = float(raw_temp) / 100

			# ---------------------------------------------------------------------
			# PH Level (U)
			# 7.59
			# 231d0b7607b60a0100250e
			#       ^^^^
			raw_ph = int(raw_measurement[8:10] + raw_measurement[6:8], 16)
			water_ph = (float(0x0800) - float(raw_ph)) / 232 + 7

			# ---------------------------------------------------------------------
			# ORP Level (mV)
			# 685.50
			# 231d0b7607b60a0100250e
			#           ^^^^
			raw_orp = int(raw_measurement[12:14] + raw_measurement[10:12], 16)
			water_orp = float(raw_orp) / 4

		# ---------------------------------------------------------------------
		# Print header
		print("time (UTC),Water Temp (deg C),PH Level (U),ORP Level (mV),RAW Measurement (),Manufacturer Data (),RSSI (dBm)")
		# Print data
		print("%s,%s,%s,%s,%s,%s,%s" % (
			sUtcTime,
			"%.2f" % water_temp if water_temp is not None else "",
			"%.2f" % water_ph if water_ph is not None else "",
			"%.2f" % water_orp if water_orp is not None else "",
			raw_measurement if raw_measurement is not None else "",
			manufacturer_data if manufacturer_data is not None else "",
			rssi if rssi is not None else ""
		))

Output:

time (UTC),Water Temp (deg C),PH Level (U),ORP Level (mV),RAW Measurement (),Manufacturer Data (),RSSI (dBm)
2022-07-20T07:01:01.513Z,24.00,7.25,550.25,236009c70799080000260e,190100c607ded720f01e15,-86

Regards
Jose

3 Likes

Spanish joke !!! -----> En dos palabras Impre Zionante !!!

I will try to explore also what could be done with ESPHOME given all the great job @JosePortillo has done.

1 Like

i have questions to @LordMike and users of MGTT addon for HA.
Can we double check together settings please ?

MQTT

Server: ha_server_IP_address
Port: 1883
Username: ha_login
Password: ha_password
ClientId: blueriiot2mqtt

BlueRiiot
Username: ‘bluriiot_app_email’
Password: ‘bluriiot_app_password’

Cause actualy, i don’t succeed to initialise connection MQTTnet.Exceptions.MqttCommunicationException: Connection refused

Thx

The first data is for mqtt server, not homeassistant server.
Ip, port, login and pass of the mqtt server