Oral-B Support toothbrush model 3764

@bdraco
I am trying to add my oral b toothbrush with the new oral b integration. But currently my model 3764 is not supported.
This model can be added in my oral b Android app, so maybe it is also possible to add it in the integration? Is there any information I can provide and where can I find it?

Post the advertisements you get from the device by enabling debug logs for homeassistant.components.bluetooth

It will look something like this AdvertisementData(local_name='Oral-B Toothbrush', manufacturer_data={220: b'\x03V\x04\x030\x00\x02\x01\x01\x06\x04'}, tx_power=-127, rssi=-79)

Ok, I had to lift of the toothbrush before connecting. Maybe you should add this to your description of the integration.

After I took the toothbrush I could connect. But it is added as “Smart Series 7000 3E87
Oral-B”

Maybe this is the right string: 2022-11-03 22:22:53.915 DEBUG (MainThread) [homeassistant.components.bluetooth.manager] esp-schlafzimmer: 34:15:13:EA:3E:87 AdvertisementData(manufacturer_data={220: b’\x02\x02\x06\x02 \x00\x00\x01\x0f\x00\x04’}, tx_power=-127, rssi=-59) connectable: False match: set() rssi: -59

That’s it b"\x02\x02\x06\x02 \x00\x00\x01\x0f\x00\x04"

Do you have a link to this model? I can’t seem to find much about it.

It looks like its a rebranded 6000/6500/7000 series or the Oral-B Triumph v2?

You’ll probably need to experiment with it a bit

There is a pressure sensor in it that will probably show unknown pressure 32 or the like.

We need to know the number when pressure is normal and when pressure is high

Also cycle though all the states and report any unknown values and what the brush is doing.

No I was also struggling which model I have. On the toothbrush itself there is a sign called “triumph professional care” but on the bottom there is the number 3764.
So maybe it is the Triumph v2?

When the pressure is normal it says “unknown pressure 0” and when the pressure is high it says “unknown pressure 192”

@bdraco: have 4 of these models, 3 are found as a 7000 model and the fourth one not. All made in Germany. The serial number on the one not registering is a R 451 … serial number, the othera are all R 601 … or higher. My guess is a firmware difference, but the firmware does not seem to be upgradable through the app.

When I attached them all through an ESP using on_ble_advertise the sample lambda I used checked for data size to be greater or equal to 10, but this one provides only 9 bytes. When I changed that it worked fine on the ESP. Could that be it?

EDIT: On a side note: I think they all were all sold as a Oral-B PRO 6000 SmartSeries Bluetooth duo pack, so one pack must have contained two different production batches.

@Edwin_D
Can you post the AdvertisementData?

That was easier said then done. I couldnt get any info from HA itself so I got the data from the ESP32 proxy. I think this is the one you need:

11:17:24][VV][esp32_ble_tracker:575]: Parse Result:
[11:17:24][VV][esp32_ble_tracker:592]:   Address: 54:4A:16:22:90:6A (PUBLIC)
[11:17:24][VV][esp32_ble_tracker:594]:   RSSI: -74
[11:17:24][VV][esp32_ble_tracker:595]:   Name: ''
[11:17:24][VV][esp32_ble_tracker:603]:   Ad Flag: 5
[11:17:24][VV][esp32_ble_tracker:609]:   Manufacturer data: 01.02.05.03.01.00.00.01.01 (9)
[11:17:24][VV][esp32_ble_tracker:625]: Adv data: 02.01.05.0C.FF.DC.00.01.02.05.03.01.00.00.01.01 (16)

And I think this is one that does work:

11:19:49][VV][esp32_ble_tracker:575]: Parse Result:
[11:19:49][VV][esp32_ble_tracker:592]:   Address: E0:E5:CF:50:65:15 (PUBLIC)
[11:19:49][VV][esp32_ble_tracker:594]:   RSSI: -62
[11:19:49][VV][esp32_ble_tracker:595]:   Name: ''
[11:19:49][VV][esp32_ble_tracker:603]:   Ad Flag: 5
[11:19:49][VV][esp32_ble_tracker:609]:   Manufacturer data: 02.02.06.02.20.00.00.01.01.00.04 (11)
[11:19:49][VV][esp32_ble_tracker:625]: Adv data: 02.01.05.0E.FF.DC.00.02.02.06.02.20.00.00.01.01.00.04 (18)

The amount of logging made my ESP32 cry though: “Too many BLE events to process. Some devices may not show up.” :slight_smile:

EDIT: Got it to work through HA too now, bad one and good one:

AdvertisementData(manufacturer_data={220: b'\x01\x02\x05\x03\x01\x00\x00\x01\x01'}, tx_power=-127, rssi=-83) connectable: True match: {'oralb'} rssi: -83
AdvertisementData(manufacturer_data={220: b'\x02\x02\x06\x03\x00\x00\x01\x01\x01\x03\x04'}, tx_power=-127, rssi=-57) connectable: True match: set() rssi: -57

I added the 11 byte one to the lib. Should appear in next months release

For the 9 byte one we will need all the state information of what the brush is doing matched up the the advertisement data at the time

The 11 byte one was already recognised as a 7000 model, everything works as expected. Only the pressure values were there, but not properly recognised. The 9 byte one seems compatible in my previous esp32 implementation in all values regarding time, sector, state and mode and just missing the last 2 bytes. Seems logical they only add new stuff at the end. Maybe battery state? That is the only thing I can think of that is missing. But you might already know from newer models.

I didn’t know how to read pressure, but all my devices support it in the Oral-B app. I do not know if it is supposed to be in those last two bytes, but the app shows it the same for all brushes, so it must be in the first 9 bytes. The pressure is just a ok/too hard indication though.

It should just be normal or high