Ta, had never messed with Little Endian so no idea how it was parsed and a quick search wasn’t being helpful.
Changing the battery sensor to the following
- platform: ble_client
ble_client_id: oralb_kev
name: "$toothbrush_name battery level"
type: characteristic
service_uuid: 'a0f0ff00-5047-4d53-8208-4f72616c2d42'
characteristic_uuid: 'A0F0FF05-5047-4D53-8208-4F72616C2D42'
icon: 'mdi:battery'
unit_of_measurement: '%'
update_interval: 4s
lambda: |-
id(kev_seconds).publish_state(x[1] + (x[2] * 255));
return x[0];
(note the penultimate line) and adding the following sensor
- platform: template
name: "$toothbrush_name battery seconds"
id: kev_seconds
have now given me another entity which seems to work - a 120 second brush reduced the battery level by 71 seconds if this is “accurate”. Note it doesn’t update during the brush (unlike the %) only once you stop.