I’ve built a BBQ meter using an esp32-wroom-32u. I have 5 hardwired meat probes (1 X BBQ and 4 X Meat Probes) and the ability to control a fan or an element. I am now trying to also add a 6th probe but wireless (bluetooth).
I’m using this chinese bluetooth probe (this one) probe and I’m getting this:
[17:40:43][I][ble_adv:021]: New BLE device
[17:40:43][I][ble_adv:022]: address: 2A:03:DC:52:36:1B
[17:40:43][I][ble_adv:023]: name: BBQ ProbeE 75323
[17:40:43][I][ble_adv:024]: Advertised service UUIDs:
[17:40:43][I][ble_adv:035]: - 0x2A03: (length 6)
[17:41:21][I][ble_adv:021]: New BLE device
[17:41:21][I][ble_adv:022]: address: 2A:03:DC:52:36:1B
[17:41:21][I][ble_adv:023]: name: BBQ ProbeE 75323
[17:41:22][I][ble_adv:024]: Advertised service UUIDs:
[17:41:29][I][ble_adv:021]: New BLE device
[17:41:29][I][ble_adv:022]: address: 2A:03:DC:52:36:1B
[17:41:29][I][ble_adv:023]: name: BBQ ProbeE 75323
[17:41:29][I][ble_adv:024]: Advertised service UUIDs:
[17:41:29][I][ble_adv:027]: - 0xFB00
[17:41:30][I][ble_adv:029]: Advertised service data:
[17:41:30][I][ble_adv:033]: Advertised manufacturer data:
[17:41:30][I][ble_adv:035]: - 0x2A03: (length 6)
[17:41:52][I][ble_adv:022]: address: 2A:03:DC:52:36:1B
[17:41:52][I][ble_adv:023]: name: BBQ ProbeE 75323
[17:41:52][I][ble_adv:024]: Advertised service UUIDs:
[17:41:52][I][ble_adv:027]: - 0x180A
[18:10:31][I][ble_adv:021]: New BLE device
[18:10:31][I][ble_adv:022]: address: 2A:03:DC:52:36:1B
[18:10:31][I][ble_adv:023]: name: BBQ ProbeE 75323
[18:10:31][I][ble_adv:024]: Advertised service UUIDs:
[18:10:31][I][ble_adv:027]: - 0x180A
[18:10:31][I][ble_adv:027]: - 0xFB00
[18:10:31][I][ble_adv:030]: Advertised service data:
[18:10:31][I][ble_adv:039]: - 0x2A03: (1B.36.52.DC.03.2A (6))
How can I get actual data from it (temperatures)?
[18:07:44][D][sensor:125]: 'Probe BLE': Sending state 0.00000 °C with 0 decimals of accuracy
My code:
esp32_ble_tracker:
on_ble_advertise:
- mac_address: 2A:03:DC:52:36:1B
then:
- script.stop: timer
- lambda: |-
if (x.get_name() != "BBQ ProbeE 75323") return;
ESP_LOGI("ble_adv", "New BLE device");
ESP_LOGI("ble_adv", " address: %s", x.address_str().c_str());
ESP_LOGI("ble_adv", " name: %s", x.get_name().c_str());
ESP_LOGI("ble_adv", " Advertised service UUIDs:");
for (auto uuid : x.get_service_uuids()) {
ESP_LOGI("ble_adv", " - %s", uuid.to_string().c_str());
}
ESP_LOGI("ble_adv", " Advertised service data:");
for (auto data : x.get_service_datas()) {
ESP_LOGI("ble_adv", " - %s: (length %i)", data.uuid.to_string().c_str(), data.data.size());
}
ESP_LOGI("ble_adv", " Advertised manufacturer data:");
for (auto data : x.get_manufacturer_datas()) {
ESP_LOGI("ble_adv", " - %s: (%s)", data.uuid.to_string().c_str(), hexencode(data.data).c_str());
if (data.uuid.contains(0, 0)) {
int probe0 = (data.data[1] << 8) + data.data[0];
ESP_LOGI("ble_data", " - %f %f", probe0 / 10.0);
if (probe0 < 60000) {
id(ble_sensor_1).publish_state(probe0 / 10.0);
} else {
id(ble_sensor_1).publish_state(0);
}
}
}
- script.execute: timer
I added the following:
ESP_LOGI("ble_data", "0 - %f %f", data.data[0]);
And got:
[19:32:06][I][ble_data:042]: 0 - 1.999355 1.802914
[19:33:49][I][ble_data:042]: 0 - 1.985104 1.802948
[19:37:41][I][ble_data:042]: 0 - 1.988010 1.802914
[19:38:19][I][ble_data:042]: 0 - 1.983585 1.802914
[19:38:53][I][ble_data:042]: 0 - 1.983089 1.802914
No clue what I am doing