kamaradclimber / hydrao-dump

A simple script to send data from hydrao shower head to Home Assistant through an MQTT server
8 stars 3 forks source link

Question: is the Temperature also accessible via bluetooth? #4

Open giovanne123 opened 2 years ago

giovanne123 commented 2 years ago

Do you know if the temperature is also available via bluetooth. Do you have ideas in which characteristic it is saved?

(I successfully can read the infos arnog23 has mentioned in this post https://community.jeedom.com/t/plugin-blea-hydrao/11622/36)

kamaradclimber commented 2 years ago

It is surely available because thats how the mobile app does it. But I have not found the field to read, i would be really interested though 😀

On Thu, Feb 17, 2022, at 17:05, giovanne123 wrote:

Do you know if the temperature is also available via bluetooth. Do you have ideas in which characteristic it is saved?

(I successfully can read the infos arnog23 has mentioned in this post https://community.jeedom.com/t/plugin-blea-hydrao/11622/36)

— Reply to this email directly, view it on GitHub https://github.com/kamaradclimber/hydrao-dump/issues/4, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAD254M23UFF2RDDGY5C743U3UMF3ANCNFSM5OVEBEYA. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub. You are receiving this because you are subscribed to this thread.Message ID: @.***>

giovanne123 commented 2 years ago

From the Screengrab (see below) which are taken at: _1) ~17:48:01 (App_Screengrab_120220223-174801.jpg) 1 liter Current Water Volume (in 0x0012) 39,9 °C Temperatur 8.0 l/min Water Volume per min 10 sec Shower time ...

_2) ~17:48:14 (App_Screengrab_220220223-174814.jpg) 3 liter Current Water Volume (in 0x0012) 40.5 °C Temperatur 8.0 l/min Water Volume per min 24 sec Shower time

in this timeframe there are only following BLE handles send/received: 0x0012 -> Known for the Water Volume current and Sum 0x001a -> unknown 0x001c -> unknown 0x001e -> unknown

For the unknown I get: "0x001a" Value: b805e905 Value: b805de05 17:48:00.416 Value: b705de05 -1)-> 17:48:02.173 Value: af05de05 Value: a705de05 Value: a005de05 Value: 9b05c605 Value: 9805c605 Value: 9705c605 -2)-> 17:48:14.234 Value: 9605c605 Value: 9605c005 "0x001c" Value: 1d010000 Value: 1a011301 Value: 19011301 Value: 16011301 Value: 16011301 Value: 14011601 Value: 17011601 -1)-> 17:48:01.947 Value: 14011601 Value: 15011601 Value: 16011601 Value: 14011401 Value: 13011401 -2)-> 17:48:14.007 Value: 13011401 Value: 14011401 Value: 12011501 "0x001e" Value: 9402 Value: 9a02 Value: 9b02 Value: f502 Value: a502 Value: a002 -1)-> 17:48:00.64 Value: bc02
Value: a302 Value: 9802 Value: b002 Value: a202 Value: a902 Value: ad02 -2)-> 17:48:14.48 Value: ae02 Value: a602

I'm a little bit struggling with decoding the values. I have marked the values for each unknown handle at the time the screengrabs are taken and the data which can be seen in the sceengrabs for e.g. the temperature.

Is someone (hopefully a few people are reading here ;-)) possible to find the temperature, shower time and water/min in the marked values?

1) App_Screengrab_1_20220223-174801

2) App_Screengrab_2_20220223-174814

kamaradclimber commented 2 years ago

I've spent some time this weekend to try to decode the messages.

I'll continue to dig this. If you look in the repository, I've added a wireshark dissector for the protocol with my findings, hoping someone can resume from there.

giovanne123 commented 2 years ago

Do you think it goes in this direction? I have read yesterday once the three handles for the Volumes, Temperature and the Flow and tried to analyse the temperature and flow. For the three handles see the return values in the code:

import struct
import binascii

#-VOLUMES-------------------------------
#Fri, 21 Oct 2022 21:34:28 INFO     call_gatttool_external sudo gatttool -i hci0 -b XX:XX:XX:XX:XX:XX --char-read --handle=0x0012
#Fri, 21 Oct 2022 21:34:29 INFO     run Running...
#Fri, 21 Oct 2022 21:34:29 INFO     call_gatttool_external Characteristic value/descriptor: 1c 00 00 00
print("-----------------------")
print("### VOLUMES ###")
volumes = "1c 00 00 00"
print("Orig: " + str(volumes))
volumes_clean = volumes.replace(" ", "").strip()
volumes_clean_bytearray = binascii.unhexlify(volumes_clean)

volume_tuple = struct.unpack('<HH', volumes_clean_bytearray)
volume_sum = volume_tuple[0]
volume_current = volume_tuple[1]

print("Volume Summary OK: " + str(volume_sum))
print("Volume Current OK: " + str(volume_current))
print("-----------------------")

#-TEMPERATURE-------------------------------
#Fri, 21 Oct 2022 21:34:29 INFO     call_gatttool_external sudo gatttool -i hci0 -b XX:XX:XX:XX:XX:XX --char-read --handle=0x001a
#Fri, 21 Oct 2022 21:34:31 INFO     call_gatttool_external Characteristic value/descriptor: 7c 09 00 00
print("### TEMPERATURE ###")
data = "7c 09 00 00"
print("Orig: " + str(data))
data_clean = data.replace(" ", "").strip()
data_clean_bytearray = binascii.unhexlify(data_clean)

data_tuple = struct.unpack('<HH', data_clean_bytearray)
data_1 = data_tuple[0]
data_2 = data_tuple[1]

print("Temp1 ?: " + str(data_1))
print("Temp1 / 100 -> °C ?: " + str(data_1 / 100))
print("Temp2 ?: " + str(data_2))
print("Temp2 / 100 -> °C ?: " + str(data_2 / 100))
print("-----------------------")

#-FLOW-------------------------------
#Fri, 21 Oct 2022 21:34:32 INFO     call_gatttool_external sudo gatttool -i hci0 -b XX:XX:XX:XX:XX:XX --char-read --handle=0x001e
#Fri, 21 Oct 2022 21:34:34 INFO     run Running...
#Fri, 21 Oct 2022 21:34:34 INFO     call_gatttool_external Characteristic value/descriptor: ac 02
print("### FLOW ###")
data = "ac 02"
print("Orig: " + str(data))
data_clean = data.replace(" ", "").strip()
data_clean_bytearray = binascii.unhexlify(data_clean)

#data_tuple = struct.unpack('<HH', data_clean_bytearray)
data_tuple = struct.unpack('<H', data_clean_bytearray)
data_1 = data_tuple[0]
#data_2 = data_tuple[1]

print("flow ?: " + str(data_1))
print("flow / 100 -> l/min ?: " + str(data_1 / 100))
print("-----------------------")

and the output of the tried to converted values for temperature and flow: (temp / flow divided by 100)

BathPi:/home/pi# python3 Hydrao_Shower_UNKNOWN_Analyser.py
-----------------------
### VOLUMES ###
Orig: 1c 00 00 00
Volume Summary OK: 28
Volume Current OK: 0
-----------------------
### TEMPERATURE ###
Orig: 7c 09 00 00
Temp1 ?: 2428
Temp1 / 100 -> °C ?: 24.28
Temp2 ?: 0
Temp2 / 100 -> °C ?: 0.0
-----------------------
### FLOW ###
Orig: ac 02
flow ?: 684
flow / 100 -> l/min ?: 6.84
-----------------------

What do you think?

Very bad test environment - where we have to switch the shower on to test and analyse :-( (I have to have a deeper look to your hydrao_dissector.lua and try to understand that more)

kamaradclimber commented 2 years ago

Regarding field 001a, I think you are nearly there: first 2 bytes seems to be indeed temperature multiplied by 100. The second pair of bytes is likely the average temperature since beginning of shower (my latest sample shows this quite clearly). I probably need to make a new sample to confirm but I am away from home this week. I'll update the dissector, if you succeed to make your own traffic dump and observe it with wireshark, I would be very grateful.

giovanne123 commented 2 years ago

Thanks, sounds good. So far I haven't a new hci-dump. I started to understand your lua dissector and learned how to use in Wireshark ;-)

Can you please also add the "Flow" part into the dissector?

For the temperature: I used my old dump (belonging to the Screenshots earlier in the thread) and still a little bit confused about my temperature there: The 3Liters current volume are fine. But at the same time it shows me 14,31 °C what seems to be not corrosponding to the APPs 40,5 °C :-( image

I have attached my old dump. hci_snoop_2022_02_23_17_46_49.cfa.log

I will have a look to create a new dump by the next shower, but maybe the APP will do much more stuff before, because haven't used/synced the shower with the APP since lots of month :-)

kamaradclimber commented 2 years ago

I agree temperature of 14’C seems low. In your sample, the average field however seems to converge towards the value of the first field. I would recommend to get another, longer sample.

giovanne123 commented 2 years ago

I sniffed a new sample, see pictures. First 9l, second 18l But still for me the temperature is too low and flow also not like in the app. Hm, maybe I'm doing something wrong... :-( Will wait if our findings will work fine for you...

9L_26102022_Compare 18L_26102022_Compare

Haven't attached the hci-dump file because it includes all my data since last App sync from 23.02.2022. If you have interest, maybe I can provide it separate via email and don't attach it here globallly?

For reference, my sys infos: {"ThresholdColor4Name": "red", "ThresholdColor1Name": "lime", "Firmware": "20210427", "DeviceUUID": "MY-xxxxxx-xxxxxxx", "ThresholdVolume4": 32, "ThresholdVolume1": 8, "ThresholdVolume3": 24, "ThresholdVolume2": 16, "HardwareVersion": 8, "ThresholdColor4": "ff0000", "ThresholdColor3Name": "magenta", "ThresholdColor1": "00ff00", "ThresholdColor3": "ff00ff", "ThresholdColor2": "0000ff", "ThresholdColor2Name": "blue"}

giovanne123 commented 1 year ago

Do you have new findings on your side?

I haven't - for me temperature seems still to low as described before.

I have collected last showers (below) and converted with:

#temperature and flow_current
                if ( device_shower_temp_flow == "yes" ):
                    #Temperature
                    decode_1a = call_gatttool_external("D0:34:31:AA:BB:CC", "char-read", "0x001a").rsplit(':', 1)[-1]
                    decode_1a_clean = decode_1a.replace(" ", "").strip()
                    decode_1a_clean_bytearray = binascii.unhexlify(decode_1a_clean)
                    data_tuple = struct.unpack('<HH', decode_1a_clean_bytearray)
                    temperature_current = data_tuple[0] / 100
                    temperature_average = data_tuple[1] / 100
                    log.info("Temperature Cur: " + str(temperature_current))
                    log.info("Temperature Avg: " + str(temperature_average))
                    msg_temp_current = {
                        "WaterTemperatureCur": temperature_current
                    }
                    msg_temp_sum = {
                        "WaterTemperatureAvg": temperature_average
                    }
                    plugins["BS440mqtt_shower"].execute_temperature_current(config, json.dumps(msg_temp_current))
                    plugins["BS440mqtt_shower"].execute_temperature_average(config, json.dumps(msg_temp_sum))

                    time.sleep(1)

                    #Flow
                    decode_1e = call_gatttool_external("D0:34:31:AA:BB:CC", "char-read", "0x001e").rsplit(':', 1)[-1]
                    decode_1e_clean = decode_1e.replace(" ", "").strip()
                    decode_1e_clean_bytearray = binascii.unhexlify(decode_1e_clean)
                    data_tuple = struct.unpack('<H', decode_1e_clean_bytearray)
                    flow_current = data_tuple[0] / 100
                    log.info("Flow Cur: " + str(flow_current))
                    msg_flow_current = {
                        "WaterFlowCur": flow_current
                    }
                    plugins["BS440mqtt_shower"].execute_flow_current(config, json.dumps(msg_flow_current))

                    msg = {
                        "WaterVolumeSum": volume_sum,
                        "WaterVolumeCur": volume_current,
                        "WaterTemperatureCur": temperature_current,
                        "WaterTemperatureAvg": temperature_average,
                        "WaterFlowCur": flow_current
                    }

e.g. "WaterTemperatureCur" is too low, I don't get a shower that is that cold ;-)

29/10/2022 16:00:48: {"WaterFlowCur": 6, "WaterVolumeSum": 113, "WaterTemperatureAvg": 0, "WaterVolumeCur": 0, "WaterTemperatureCur": 19}
29/10/2022 16:00:59: {"WaterFlowCur": 6, "WaterVolumeSum": 115, "WaterTemperatureAvg": 18, "WaterVolumeCur": 2, "WaterTemperatureCur": 15}
29/10/2022 16:02:59: {"WaterFlowCur": 6, "WaterVolumeSum": 117, "WaterTemperatureAvg": 17, "WaterVolumeCur": 4, "WaterTemperatureCur": 15}
29/10/2022 16:03:11: {"WaterFlowCur": 6, "WaterVolumeSum": 118, "WaterTemperatureAvg": 17, "WaterVolumeCur": 5, "WaterTemperatureCur": 15}
29/10/2022 16:03:22: {"WaterFlowCur": 6, "WaterVolumeSum": 119, "WaterTemperatureAvg": 16, "WaterVolumeCur": 6, "WaterTemperatureCur": 15}
29/10/2022 16:03:44: {"WaterFlowCur": 7, "WaterVolumeSum": 121, "WaterTemperatureAvg": 16, "WaterVolumeCur": 8, "WaterTemperatureCur": 15}
29/10/2022 16:04:17: {"WaterFlowCur": 7, "WaterVolumeSum": 125, "WaterTemperatureAvg": 16, "WaterVolumeCur": 12, "WaterTemperatureCur": 15}
29/10/2022 18:33:16: {"WaterFlowCur": 6, "WaterVolumeSum": 128, "WaterTemperatureAvg": 21, "WaterVolumeCur": 1, "WaterTemperatureCur": 16}
29/10/2022 18:33:27: {"WaterFlowCur": 6, "WaterVolumeSum": 129, "WaterTemperatureAvg": 19, "WaterVolumeCur": 2, "WaterTemperatureCur": 14}
29/10/2022 18:33:39: {"WaterFlowCur": 6, "WaterVolumeSum": 131, "WaterTemperatureAvg": 18, "WaterVolumeCur": 4, "WaterTemperatureCur": 14}
29/10/2022 18:34:50: {"WaterFlowCur": 6, "WaterVolumeSum": 132, "WaterTemperatureAvg": 17, "WaterVolumeCur": 5, "WaterTemperatureCur": 15}
29/10/2022 18:35:02: {"WaterFlowCur": 6, "WaterVolumeSum": 133, "WaterTemperatureAvg": 16, "WaterVolumeCur": 6, "WaterTemperatureCur": 14}
29/10/2022 18:35:14: {"WaterFlowCur": 8, "WaterVolumeSum": 135, "WaterTemperatureAvg": 16, "WaterVolumeCur": 8, "WaterTemperatureCur": 14}
29/10/2022 18:35:26: {"WaterFlowCur": 8, "WaterVolumeSum": 136, "WaterTemperatureAvg": 16, "WaterVolumeCur": 9, "WaterTemperatureCur": 14}
29/10/2022 18:35:38: {"WaterFlowCur": 8, "WaterVolumeSum": 137, "WaterTemperatureAvg": 15, "WaterVolumeCur": 10, "WaterTemperatureCur": 14}
31/10/2022 12:04:37: {"WaterFlowCur": 6, "WaterVolumeSum": 140, "WaterTemperatureAvg": 21, "WaterVolumeCur": 1, "WaterTemperatureCur": 16}
31/10/2022 12:06:02: {"WaterFlowCur": 8, "WaterVolumeSum": 146, "WaterTemperatureAvg": 17, "WaterVolumeCur": 7, "WaterTemperatureCur": 15}
31/10/2022 12:06:16: {"WaterFlowCur": 8, "WaterVolumeSum": 148, "WaterTemperatureAvg": 17, "WaterVolumeCur": 9, "WaterTemperatureCur": 15}
31/10/2022 12:06:29: {"WaterFlowCur": 8, "WaterVolumeSum": 149, "WaterTemperatureAvg": 16, "WaterVolumeCur": 10, "WaterTemperatureCur": 15}
31/10/2022 12:08:42: {"WaterFlowCur": 7, "WaterVolumeSum": 150, "WaterTemperatureAvg": 16, "WaterVolumeCur": 11, "WaterTemperatureCur": 16}
31/10/2022 12:08:54: {"WaterFlowCur": 7, "WaterVolumeSum": 151, "WaterTemperatureAvg": 16, "WaterVolumeCur": 12, "WaterTemperatureCur": 15}
31/10/2022 12:09:06: {"WaterFlowCur": 7, "WaterVolumeSum": 153, "WaterTemperatureAvg": 16, "WaterVolumeCur": 14, "WaterTemperatureCur": 15}
31/10/2022 12:09:17: {"WaterFlowCur": 5, "WaterVolumeSum": 154, "WaterTemperatureAvg": 16, "WaterVolumeCur": 15, "WaterTemperatureCur": 15}
31/10/2022 12:09:40: {"WaterFlowCur": 5, "WaterVolumeSum": 156, "WaterTemperatureAvg": 16, "WaterVolumeCur": 17, "WaterTemperatureCur": 15}
31/10/2022 12:10:01: {"WaterFlowCur": 5, "WaterVolumeSum": 158, "WaterTemperatureAvg": 16, "WaterVolumeCur": 19, "WaterTemperatureCur": 15}
31/10/2022 12:10:13: {"WaterFlowCur": 5, "WaterVolumeSum": 160, "WaterTemperatureAvg": 16, "WaterVolumeCur": 21, "WaterTemperatureCur": 15}
31/10/2022 12:10:25: {"WaterFlowCur": 5, "WaterVolumeSum": 161, "WaterTemperatureAvg": 16, "WaterVolumeCur": 22, "WaterTemperatureCur": 15}
31/10/2022 12:10:36: {"WaterFlowCur": 5, "WaterVolumeSum": 162, "WaterTemperatureAvg": 16, "WaterVolumeCur": 23, "WaterTemperatureCur": 15}
31/10/2022 12:10:48: {"WaterFlowCur": 5, "WaterVolumeSum": 163, "WaterTemperatureAvg": 16, "WaterVolumeCur": 24, "WaterTemperatureCur": 15}
31/10/2022 12:11:00: {"WaterFlowCur": 5, "WaterVolumeSum": 165, "WaterTemperatureAvg": 16, "WaterVolumeCur": 26, "WaterTemperatureCur": 15}
31/10/2022 19:04:46: {"WaterFlowCur": 6, "WaterVolumeSum": 165, "WaterTemperatureAvg": 0, "WaterVolumeCur": 0, "WaterTemperatureCur": 23}
31/10/2022 19:04:58: {"WaterFlowCur": 6, "WaterVolumeSum": 166, "WaterTemperatureAvg": 18, "WaterVolumeCur": 1, "WaterTemperatureCur": 13}
31/10/2022 19:05:36: {"WaterFlowCur": 6, "WaterVolumeSum": 170, "WaterTemperatureAvg": 16, "WaterVolumeCur": 5, "WaterTemperatureCur": 15}
31/10/2022 19:07:35: {"WaterFlowCur": 5, "WaterVolumeSum": 180, "WaterTemperatureAvg": 15, "WaterVolumeCur": 15, "WaterTemperatureCur": 15}
31/10/2022 20:34:19: {"WaterFlowCur": 6, "WaterVolumeSum": 184, "WaterTemperatureAvg": 0, "WaterVolumeCur": 0, "WaterTemperatureCur": 21}
31/10/2022 20:35:10: {"WaterFlowCur": 7, "WaterVolumeSum": 185, "WaterTemperatureAvg": 20, "WaterVolumeCur": 1, "WaterTemperatureCur": 17}
31/10/2022 20:35:21: {"WaterFlowCur": 7, "WaterVolumeSum": 186, "WaterTemperatureAvg": 19, "WaterVolumeCur": 2, "WaterTemperatureCur": 16}
31/10/2022 20:35:32: {"WaterFlowCur": 7, "WaterVolumeSum": 187, "WaterTemperatureAvg": 17, "WaterVolumeCur": 3, "WaterTemperatureCur": 16}
31/10/2022 20:35:43: {"WaterFlowCur": 8, "WaterVolumeSum": 189, "WaterTemperatureAvg": 17, "WaterVolumeCur": 5, "WaterTemperatureCur": 16}
31/10/2022 20:35:54: {"WaterFlowCur": 7, "WaterVolumeSum": 190, "WaterTemperatureAvg": 17, "WaterVolumeCur": 6, "WaterTemperatureCur": 16}
31/10/2022 20:36:15: {"WaterFlowCur": 9, "WaterVolumeSum": 192, "WaterTemperatureAvg": 16, "WaterVolumeCur": 8, "WaterTemperatureCur": 16}
31/10/2022 20:36:26: {"WaterFlowCur": 9, "WaterVolumeSum": 194, "WaterTemperatureAvg": 16, "WaterVolumeCur": 10, "WaterTemperatureCur": 16}
31/10/2022 20:36:37: {"WaterFlowCur": 9, "WaterVolumeSum": 196, "WaterTemperatureAvg": 16, "WaterVolumeCur": 12, "WaterTemperatureCur": 16}
31/10/2022 20:36:48: {"WaterFlowCur": 9, "WaterVolumeSum": 197, "WaterTemperatureAvg": 16, "WaterVolumeCur": 13, "WaterTemperatureCur": 16}
31/10/2022 20:42:19: {"WaterFlowCur": 7, "WaterVolumeSum": 199, "WaterTemperatureAvg": 0, "WaterVolumeCur": 0, "WaterTemperatureCur": 17}
31/10/2022 20:42:30: {"WaterFlowCur": 7, "WaterVolumeSum": 200, "WaterTemperatureAvg": 16, "WaterVolumeCur": 1, "WaterTemperatureCur": 16}
31/10/2022 20:42:41: {"WaterFlowCur": 6, "WaterVolumeSum": 202, "WaterTemperatureAvg": 16, "WaterVolumeCur": 3, "WaterTemperatureCur": 16}
31/10/2022 20:42:52: {"WaterFlowCur": 6, "WaterVolumeSum": 203, "WaterTemperatureAvg": 16, "WaterVolumeCur": 4, "WaterTemperatureCur": 16}
31/10/2022 20:43:03: {"WaterFlowCur": 6, "WaterVolumeSum": 204, "WaterTemperatureAvg": 16, "WaterVolumeCur": 5, "WaterTemperatureCur": 16}
31/10/2022 20:43:14: {"WaterFlowCur": 6, "WaterVolumeSum": 206, "WaterTemperatureAvg": 16, "WaterVolumeCur": 7, "WaterTemperatureCur": 16}
31/10/2022 20:43:35: {"WaterFlowCur": 9, "WaterVolumeSum": 207, "WaterTemperatureAvg": 16, "WaterVolumeCur": 8, "WaterTemperatureCur": 16}
31/10/2022 20:43:46: {"WaterFlowCur": 9, "WaterVolumeSum": 210, "WaterTemperatureAvg": 16, "WaterVolumeCur": 11, "WaterTemperatureCur": 16}
31/10/2022 20:44:08: {"WaterFlowCur": 8, "WaterVolumeSum": 213, "WaterTemperatureAvg": 16, "WaterVolumeCur": 14, "WaterTemperatureCur": 16}
31/10/2022 20:44:19: {"WaterFlowCur": 5, "WaterVolumeSum": 214, "WaterTemperatureAvg": 16, "WaterVolumeCur": 15, "WaterTemperatureCur": 18}
31/10/2022 20:44:30: {"WaterFlowCur": 5, "WaterVolumeSum": 215, "WaterTemperatureAvg": 16, "WaterVolumeCur": 16, "WaterTemperatureCur": 18}
31/10/2022 20:44:41: {"WaterFlowCur": 5, "WaterVolumeSum": 217, "WaterTemperatureAvg": 16, "WaterVolumeCur": 18, "WaterTemperatureCur": 18}
31/10/2022 20:44:52: {"WaterFlowCur": 5, "WaterVolumeSum": 218, "WaterTemperatureAvg": 16, "WaterVolumeCur": 19, "WaterTemperatureCur": 18}
31/10/2022 20:45:04: {"WaterFlowCur": 5, "WaterVolumeSum": 219, "WaterTemperatureAvg": 16, "WaterVolumeCur": 20, "WaterTemperatureCur": 18}
31/10/2022 20:45:14: {"WaterFlowCur": 5, "WaterVolumeSum": 221, "WaterTemperatureAvg": 16, "WaterVolumeCur": 22, "WaterTemperatureCur": 18}
31/10/2022 20:45:29: {"WaterFlowCur": 5, "WaterVolumeSum": 222, "WaterTemperatureAvg": 17, "WaterVolumeCur": 23, "WaterTemperatureCur": 18}
01/11/2022 16:18:04: {"WaterFlowCur": 6, "WaterVolumeSum": 225, "WaterTemperatureAvg": 20, "WaterVolumeCur": 1, "WaterTemperatureCur": 15}
01/11/2022 16:20:20: {"WaterFlowCur": 6, "WaterVolumeSum": 228, "WaterTemperatureAvg": 16, "WaterVolumeCur": 4, "WaterTemperatureCur": 14}
01/11/2022 16:20:33: {"WaterFlowCur": 6, "WaterVolumeSum": 230, "WaterTemperatureAvg": 16, "WaterVolumeCur": 6, "WaterTemperatureCur": 14}
01/11/2022 16:20:44: {"WaterFlowCur": 8, "WaterVolumeSum": 231, "WaterTemperatureAvg": 15, "WaterVolumeCur": 7, "WaterTemperatureCur": 14}
01/11/2022 16:20:56: {"WaterFlowCur": 8, "WaterVolumeSum": 232, "WaterTemperatureAvg": 15, "WaterVolumeCur": 8, "WaterTemperatureCur": 14}
01/11/2022 16:21:07: {"WaterFlowCur": 8, "WaterVolumeSum": 234, "WaterTemperatureAvg": 15, "WaterVolumeCur": 10, "WaterTemperatureCur": 14}
01/11/2022 16:21:19: {"WaterFlowCur": 8, "WaterVolumeSum": 235, "WaterTemperatureAvg": 15, "WaterVolumeCur": 11, "WaterTemperatureCur": 14}
01/11/2022 16:21:30: {"WaterFlowCur": 8, "WaterVolumeSum": 237, "WaterTemperatureAvg": 15, "WaterVolumeCur": 13, "WaterTemperatureCur": 14}
01/11/2022 16:21:42: {"WaterFlowCur": 8, "WaterVolumeSum": 238, "WaterTemperatureAvg": 15, "WaterVolumeCur": 14, "WaterTemperatureCur": 14}
01/11/2022 16:21:53: {"WaterFlowCur": 5, "WaterVolumeSum": 239, "WaterTemperatureAvg": 14, "WaterVolumeCur": 15, "WaterTemperatureCur": 14}
01/11/2022 17:53:45: {"WaterFlowCur": 6, "WaterVolumeSum": 244, "WaterTemperatureAvg": 17, "WaterVolumeCur": 4, "WaterTemperatureCur": 14}
01/11/2022 17:55:28: {"WaterFlowCur": 6, "WaterVolumeSum": 244, "WaterTemperatureAvg": 17, "WaterVolumeCur": 4, "WaterTemperatureCur": 14}
01/11/2022 17:55:48: {"WaterFlowCur": 8, "WaterVolumeSum": 247, "WaterTemperatureAvg": 15, "WaterVolumeCur": 7, "WaterTemperatureCur": 14}
01/11/2022 17:56:00: {"WaterFlowCur": 8, "WaterVolumeSum": 248, "WaterTemperatureAvg": 15, "WaterVolumeCur": 8, "WaterTemperatureCur": 14}
01/11/2022 17:56:21: {"WaterFlowCur": 8, "WaterVolumeSum": 250, "WaterTemperatureAvg": 15, "WaterVolumeCur": 10, "WaterTemperatureCur": 14}
01/11/2022 17:56:32: {"WaterFlowCur": 8, "WaterVolumeSum": 252, "WaterTemperatureAvg": 15, "WaterVolumeCur": 12, "WaterTemperatureCur": 14}
06/11/2022 13:27:08: {"WaterFlowCur": 6, "WaterVolumeSum": 285, "WaterTemperatureAvg": 21, "WaterVolumeCur": 2, "WaterTemperatureCur": 15}
06/11/2022 13:27:19: {"WaterFlowCur": 6, "WaterVolumeSum": 286, "WaterTemperatureAvg": 19, "WaterVolumeCur": 3, "WaterTemperatureCur": 15}
06/11/2022 13:27:30: {"WaterFlowCur": 6, "WaterVolumeSum": 287, "WaterTemperatureAvg": 18, "WaterVolumeCur": 4, "WaterTemperatureCur": 15}
06/11/2022 13:29:17: {"WaterFlowCur": 8, "WaterVolumeSum": 289, "WaterTemperatureAvg": 17, "WaterVolumeCur": 6, "WaterTemperatureCur": 14}
06/11/2022 13:29:28: {"WaterFlowCur": 8, "WaterVolumeSum": 292, "WaterTemperatureAvg": 16, "WaterVolumeCur": 9, "WaterTemperatureCur": 14}
06/11/2022 13:29:50: {"WaterFlowCur": 8, "WaterVolumeSum": 294, "WaterTemperatureAvg": 16, "WaterVolumeCur": 11, "WaterTemperatureCur": 14}
06/11/2022 19:03:49: {"WaterFlowCur": 6, "WaterVolumeSum": 296, "WaterTemperatureAvg": 0, "WaterVolumeCur": 0, "WaterTemperatureCur": 17}
06/11/2022 19:04:00: {"WaterFlowCur": 5, "WaterVolumeSum": 297, "WaterTemperatureAvg": 20, "WaterVolumeCur": 1, "WaterTemperatureCur": 15}
06/11/2022 19:04:12: {"WaterFlowCur": 6, "WaterVolumeSum": 298, "WaterTemperatureAvg": 18, "WaterVolumeCur": 2, "WaterTemperatureCur": 14}
06/11/2022 19:04:23: {"WaterFlowCur": 6, "WaterVolumeSum": 299, "WaterTemperatureAvg": 16, "WaterVolumeCur": 3, "WaterTemperatureCur": 14}
06/11/2022 19:04:35: {"WaterFlowCur": 6, "WaterVolumeSum": 300, "WaterTemperatureAvg": 16, "WaterVolumeCur": 4, "WaterTemperatureCur": 14}
06/11/2022 19:04:46: {"WaterFlowCur": 6, "WaterVolumeSum": 301, "WaterTemperatureAvg": 15, "WaterVolumeCur": 5, "WaterTemperatureCur": 14}
06/11/2022 19:05:28: {"WaterFlowCur": 7, "WaterVolumeSum": 303, "WaterTemperatureAvg": 15, "WaterVolumeCur": 7, "WaterTemperatureCur": 14}
06/11/2022 19:05:39: {"WaterFlowCur": 8, "WaterVolumeSum": 304, "WaterTemperatureAvg": 15, "WaterVolumeCur": 8, "WaterTemperatureCur": 14}
06/11/2022 19:06:00: {"WaterFlowCur": 7, "WaterVolumeSum": 305, "WaterTemperatureAvg": 15, "WaterVolumeCur": 9, "WaterTemperatureCur": 14}
06/11/2022 19:06:12: {"WaterFlowCur": 8, "WaterVolumeSum": 308, "WaterTemperatureAvg": 14, "WaterVolumeCur": 12, "WaterTemperatureCur": 14}
06/11/2022 19:16:32: {"WaterFlowCur": 6, "WaterVolumeSum": 310, "WaterTemperatureAvg": 16, "WaterVolumeCur": 1, "WaterTemperatureCur": 15}
06/11/2022 19:16:44: {"WaterFlowCur": 6, "WaterVolumeSum": 311, "WaterTemperatureAvg": 15, "WaterVolumeCur": 2, "WaterTemperatureCur": 14}
06/11/2022 19:17:54: {"WaterFlowCur": 6, "WaterVolumeSum": 313, "WaterTemperatureAvg": 15, "WaterVolumeCur": 4, "WaterTemperatureCur": 14}
09/11/2022 19:23:06: {"WaterFlowCur": 6, "WaterVolumeSum": 321, "WaterTemperatureAvg": 22, "WaterVolumeCur": 2, "WaterTemperatureCur": 14}
09/11/2022 19:24:33: {"WaterFlowCur": 6, "WaterVolumeSum": 324, "WaterTemperatureAvg": 17, "WaterVolumeCur": 5, "WaterTemperatureCur": 15}
09/11/2022 19:24:46: {"WaterFlowCur": 6, "WaterVolumeSum": 325, "WaterTemperatureAvg": 16, "WaterVolumeCur": 6, "WaterTemperatureCur": 14}
09/11/2022 19:24:59: {"WaterFlowCur": 8, "WaterVolumeSum": 327, "WaterTemperatureAvg": 16, "WaterVolumeCur": 8, "WaterTemperatureCur": 14}
09/11/2022 19:25:13: {"WaterFlowCur": 8, "WaterVolumeSum": 328, "WaterTemperatureAvg": 16, "WaterVolumeCur": 9, "WaterTemperatureCur": 14}
09/11/2022 19:25:25: {"WaterFlowCur": 7, "WaterVolumeSum": 330, "WaterTemperatureAvg": 15, "WaterVolumeCur": 11, "WaterTemperatureCur": 14}
11/11/2022 16:20:56: {"WaterFlowCur": 6, "WaterVolumeSum": 332, "WaterTemperatureAvg": 0, "WaterVolumeCur": 0, "WaterTemperatureCur": 19}
11/11/2022 16:21:23: {"WaterFlowCur": 6, "WaterVolumeSum": 335, "WaterTemperatureAvg": 18, "WaterVolumeCur": 3, "WaterTemperatureCur": 14}
11/11/2022 16:23:16: {"WaterFlowCur": 6, "WaterVolumeSum": 337, "WaterTemperatureAvg": 16, "WaterVolumeCur": 5, "WaterTemperatureCur": 15}
11/11/2022 16:23:29: {"WaterFlowCur": 6, "WaterVolumeSum": 339, "WaterTemperatureAvg": 16, "WaterVolumeCur": 7, "WaterTemperatureCur": 14}
11/11/2022 16:23:51: {"WaterFlowCur": 7, "WaterVolumeSum": 340, "WaterTemperatureAvg": 16, "WaterVolumeCur": 8, "WaterTemperatureCur": 14}
11/11/2022 16:24:36: {"WaterFlowCur": 7, "WaterVolumeSum": 345, "WaterTemperatureAvg": 15, "WaterVolumeCur": 13, "WaterTemperatureCur": 14}
12/11/2022 14:58:37: {"WaterFlowCur": 6, "WaterVolumeSum": 347, "WaterTemperatureAvg": 19, "WaterVolumeCur": 0, "WaterTemperatureCur": 16}
12/11/2022 14:59:02: {"WaterFlowCur": 6, "WaterVolumeSum": 350, "WaterTemperatureAvg": 17, "WaterVolumeCur": 3, "WaterTemperatureCur": 15}
12/11/2022 14:59:41: {"WaterFlowCur": 6, "WaterVolumeSum": 352, "WaterTemperatureAvg": 16, "WaterVolumeCur": 5, "WaterTemperatureCur": 15}
12/11/2022 15:00:03: {"WaterFlowCur": 8, "WaterVolumeSum": 353, "WaterTemperatureAvg": 16, "WaterVolumeCur": 6, "WaterTemperatureCur": 15}
12/11/2022 15:00:15: {"WaterFlowCur": 8, "WaterVolumeSum": 356, "WaterTemperatureAvg": 16, "WaterVolumeCur": 9, "WaterTemperatureCur": 15}
12/11/2022 15:00:28: {"WaterFlowCur": 7, "WaterVolumeSum": 357, "WaterTemperatureAvg": 16, "WaterVolumeCur": 10, "WaterTemperatureCur": 15}
12/11/2022 15:00:41: {"WaterFlowCur": 8, "WaterVolumeSum": 359, "WaterTemperatureAvg": 15, "WaterVolumeCur": 12, "WaterTemperatureCur": 15}
12/11/2022 15:00:53: {"WaterFlowCur": 8, "WaterVolumeSum": 360, "WaterTemperatureAvg": 15, "WaterVolumeCur": 13, "WaterTemperatureCur": 15}
12/11/2022 15:01:06: {"WaterFlowCur": 8, "WaterVolumeSum": 361, "WaterTemperatureAvg": 15, "WaterVolumeCur": 14, "WaterTemperatureCur": 15}
12/11/2022 15:01:18: {"WaterFlowCur": 5, "WaterVolumeSum": 363, "WaterTemperatureAvg": 15, "WaterVolumeCur": 16, "WaterTemperatureCur": 15}
12/11/2022 15:01:31: {"WaterFlowCur": 5, "WaterVolumeSum": 364, "WaterTemperatureAvg": 15, "WaterVolumeCur": 17, "WaterTemperatureCur": 15}
12/11/2022 15:01:43: {"WaterFlowCur": 5, "WaterVolumeSum": 366, "WaterTemperatureAvg": 15, "WaterVolumeCur": 19, "WaterTemperatureCur": 15}
12/11/2022 15:03:48: {"WaterFlowCur": 5, "WaterVolumeSum": 368, "WaterTemperatureAvg": 15, "WaterVolumeCur": 21, "WaterTemperatureCur": 15}
12/11/2022 15:04:13: {"WaterFlowCur": 5, "WaterVolumeSum": 370, "WaterTemperatureAvg": 15, "WaterVolumeCur": 23, "WaterTemperatureCur": 15}
12/11/2022 15:04:25: {"WaterFlowCur": 5, "WaterVolumeSum": 372, "WaterTemperatureAvg": 15, "WaterVolumeCur": 25, "WaterTemperatureCur": 15}
12/11/2022 15:04:39: {"WaterFlowCur": 5, "WaterVolumeSum": 373, "WaterTemperatureAvg": 15, "WaterVolumeCur": 26, "WaterTemperatureCur": 15}
12/11/2022 15:04:52: {"WaterFlowCur": 5, "WaterVolumeSum": 374, "WaterTemperatureAvg": 15, "WaterVolumeCur": 27, "WaterTemperatureCur": 15}
12/11/2022 15:05:06: {"WaterFlowCur": 5, "WaterVolumeSum": 376, "WaterTemperatureAvg": 15, "WaterVolumeCur": 29, "WaterTemperatureCur": 15}
12/11/2022 15:05:18: {"WaterFlowCur": 5, "WaterVolumeSum": 377, "WaterTemperatureAvg": 15, "WaterVolumeCur": 30, "WaterTemperatureCur": 15}
12/11/2022 15:05:31: {"WaterFlowCur": 10, "WaterVolumeSum": 378, "WaterTemperatureAvg": 15, "WaterVolumeCur": 31, "WaterTemperatureCur": 15}
12/11/2022 15:05:44: {"WaterFlowCur": 10, "WaterVolumeSum": 380, "WaterTemperatureAvg": 15, "WaterVolumeCur": 33, "WaterTemperatureCur": 15}
12/11/2022 15:38:06: {"WaterFlowCur": 6, "WaterVolumeSum": 381, "WaterTemperatureAvg": 0, "WaterVolumeCur": 0, "WaterTemperatureCur": 15}
12/11/2022 15:38:19: {"WaterFlowCur": 6, "WaterVolumeSum": 383, "WaterTemperatureAvg": 16, "WaterVolumeCur": 2, "WaterTemperatureCur": 14}
12/11/2022 15:39:48: {"WaterFlowCur": 6, "WaterVolumeSum": 385, "WaterTemperatureAvg": 15, "WaterVolumeCur": 4, "WaterTemperatureCur": 15}
12/11/2022 15:40:00: {"WaterFlowCur": 6, "WaterVolumeSum": 386, "WaterTemperatureAvg": 15, "WaterVolumeCur": 5, "WaterTemperatureCur": 14}
12/11/2022 15:40:13: {"WaterFlowCur": 6, "WaterVolumeSum": 388, "WaterTemperatureAvg": 15, "WaterVolumeCur": 7, "WaterTemperatureCur": 14}
12/11/2022 15:40:25: {"WaterFlowCur": 8, "WaterVolumeSum": 389, "WaterTemperatureAvg": 15, "WaterVolumeCur": 8, "WaterTemperatureCur": 14}
12/11/2022 15:40:38: {"WaterFlowCur": 8, "WaterVolumeSum": 391, "WaterTemperatureAvg": 15, "WaterVolumeCur": 10, "WaterTemperatureCur": 14}
12/11/2022 15:41:00: {"WaterFlowCur": 8, "WaterVolumeSum": 392, "WaterTemperatureAvg": 15, "WaterVolumeCur": 11, "WaterTemperatureCur": 14}
13/11/2022 18:31:20: {"WaterFlowCur": 6, "WaterVolumeSum": 407, "WaterTemperatureAvg": 22, "WaterVolumeCur": 2, "WaterTemperatureCur": 14}
13/11/2022 22:03:39: {"WaterFlowCur": 6, "WaterVolumeSum": 421, "WaterTemperatureAvg": 0, "WaterVolumeCur": 0, "WaterTemperatureCur": 21}
13/11/2022 22:04:00: {"WaterFlowCur": 7, "WaterVolumeSum": 422, "WaterTemperatureAvg": 21, "WaterVolumeCur": 1, "WaterTemperatureCur": 16}
13/11/2022 22:04:12: {"WaterFlowCur": 6, "WaterVolumeSum": 425, "WaterTemperatureAvg": 18, "WaterVolumeCur": 4, "WaterTemperatureCur": 16}
13/11/2022 22:04:23: {"WaterFlowCur": 6, "WaterVolumeSum": 426, "WaterTemperatureAvg": 18, "WaterVolumeCur": 5, "WaterTemperatureCur": 16}
13/11/2022 22:06:16: {"WaterFlowCur": 7, "WaterVolumeSum": 427, "WaterTemperatureAvg": 18, "WaterVolumeCur": 6, "WaterTemperatureCur": 16}
13/11/2022 22:06:27: {"WaterFlowCur": 9, "WaterVolumeSum": 428, "WaterTemperatureAvg": 17, "WaterVolumeCur": 7, "WaterTemperatureCur": 15}
13/11/2022 22:06:38: {"WaterFlowCur": 8, "WaterVolumeSum": 429, "WaterTemperatureAvg": 17, "WaterVolumeCur": 8, "WaterTemperatureCur": 15}
13/11/2022 22:06:49: {"WaterFlowCur": 8, "WaterVolumeSum": 431, "WaterTemperatureAvg": 17, "WaterVolumeCur": 10, "WaterTemperatureCur": 15}
13/11/2022 22:07:00: {"WaterFlowCur": 9, "WaterVolumeSum": 432, "WaterTemperatureAvg": 17, "WaterVolumeCur": 11, "WaterTemperatureCur": 15}
13/11/2022 22:07:12: {"WaterFlowCur": 9, "WaterVolumeSum": 433, "WaterTemperatureAvg": 16, "WaterVolumeCur": 12, "WaterTemperatureCur": 15}
13/11/2022 22:07:23: {"WaterFlowCur": 8, "WaterVolumeSum": 435, "WaterTemperatureAvg": 16, "WaterVolumeCur": 14, "WaterTemperatureCur": 15}
13/11/2022 22:07:34: {"WaterFlowCur": 5, "WaterVolumeSum": 436, "WaterTemperatureAvg": 16, "WaterVolumeCur": 15, "WaterTemperatureCur": 15}
14/11/2022 13:35:30: {"WaterFlowCur": 6, "WaterVolumeSum": 439, "WaterTemperatureAvg": 19, "WaterVolumeCur": 1, "WaterTemperatureCur": 16}
14/11/2022 13:37:13: {"WaterFlowCur": 6, "WaterVolumeSum": 441, "WaterTemperatureAvg": 17, "WaterVolumeCur": 3, "WaterTemperatureCur": 16}
14/11/2022 13:37:28: {"WaterFlowCur": 6, "WaterVolumeSum": 443, "WaterTemperatureAvg": 16, "WaterVolumeCur": 5, "WaterTemperatureCur": 15}
14/11/2022 13:37:51: {"WaterFlowCur": 8, "WaterVolumeSum": 445, "WaterTemperatureAvg": 16, "WaterVolumeCur": 7, "WaterTemperatureCur": 15}
14/11/2022 13:38:02: {"WaterFlowCur": 8, "WaterVolumeSum": 447, "WaterTemperatureAvg": 16, "WaterVolumeCur": 9, "WaterTemperatureCur": 15}
14/11/2022 13:38:13: {"WaterFlowCur": 8, "WaterVolumeSum": 448, "WaterTemperatureAvg": 16, "WaterVolumeCur": 10, "WaterTemperatureCur": 15}
14/11/2022 13:38:25: {"WaterFlowCur": 8, "WaterVolumeSum": 450, "WaterTemperatureAvg": 16, "WaterVolumeCur": 12, "WaterTemperatureCur": 15}
kamaradclimber commented 1 year ago

(I'm not working on this at the moment) I agree this is very strange, our understanding of temperature is probably incorrect!

giovanne123 commented 1 year ago

@kamaradclimber , don't know if you are still using the shower. But can you please tell me the HW Version and Firmware Version of your device. I got a new one because it was no longer functioning after 3week of vacation (maybe some lime or so ... but I can open the old one to see how it was build ;-)) I now have HW 9 and FW 90040400 (Maybe you had already a newer one like I posted before (HW 8 and other FW) inour analysing the temp and flow?)

Currently I have the problem that the volumes (current and sum) are not working: -> handle=0x0012 is reporting shorter than before (was xx xx xx xx) and does currently not change, stays always "53 02"

Wed, 30 Aug 2023 20:35:30 INFO     call_gatttool_external sudo gatttool -i hci0 -b 6E:xx:vv:xx:xx:xx --char-read --handle=0x0012
Wed, 30 Aug 2023 20:35:37 INFO     run Running...
Wed, 30 Aug 2023 20:35:37 INFO     call_gatttool_external Characteristic value/descriptor: 53 02

Wed, 30 Aug 2023 20:35:37 INFO     <module> Error: unpack requires a string argument of length 4

Will have to spend some water for analysing again after it was running with the older shower for the last year ;-)

kamaradclimber commented 1 year ago

Hello, I'm not using it anymore because it stopped working about 3 months ago. If you know how to extract information from the shower head, that would be great! FW version is likely in one of the dump I put in the repo but I don't anymore how to look for it.