Inkbird BT thermometer iBBQ with ESP32

Thanks Anders, this is working great!

Was very happy to find this thread! Was using a solution found here which uses this, but this required me to use an MQTT server and using code which I did not fully grasp/had no real control over. So very happy to find proper esphome code!

With that said, I have been experimenting with the code a bit, got some node-red automations working to trigger notifications and such, but was a bit surprised about the somewhat erratic update intervals. Now I already read in this discussion that doing a proper login/connection would be the solution, so I was wondering if anybody already got this working.

I can get it to connect following the procedures described by esphome, but thats about where my handy work gets me. Some insights such as the UUIDs to query can be gained from the code mentioned earlier (this one), but how to translate that in working code is beyond me.

Anyone have more insights on this?

Just used this and it was so simple to setup, been looking for an easy way for ages. Thanks

Good evening, trying to replicate this setup with a Weber Connect Hub. I found the MAC address.
All I see now is the following :
[22:19:11][I][ble_adv:139]: address: 70:91:8F:21:34:15
[22:19:11][I][ble_adv:140]: name: Weber Connect Hub 9555
[22:19:11][I][ble_adv:141]: Advertised service UUIDs:
[22:19:11][I][ble_adv:144]: - 0xFD97
[22:19:11][I][ble_adv:147]: Advertised service data:

Ok after some reading I think I am on the right doc : ESP32 Bluetooth Low Energy Tracker Hub — ESPHome

Now just trying to make sense of all of this :stuck_out_tongue:

Not sure what Im doing wrong. I have this code updated with my mac_address and ble_client to pair automatically. But the temp probe0 and probe1 always says 0.00000. Cant get it to read the correct temps.

Can someone give me some assistance? Thank you.

esphome:
  name: electricsmoker
  on_boot:
    priority: -10
    then:
      - lambda: |-
          {
            id(ble_sensor_1).publish_state(false);
            id(ble_sensor_2).publish_state(false);        
          }

esp32:
  board: esp-wrover-kit
  framework:
    type: arduino
  

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "d81494f71266ca88bf31a80ae2dbe90b"

wifi:
  ssid: XXXXXX
  password: XXXXXXXXX

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-C5025C"
    password: "ruMTKeZOnf4X"

captive_portal:

script:
  - id: timer
    then:
      - delay: 60s
      - lambda: |-
          {
            id(ble_sensor_1).publish_state(false);
            id(ble_sensor_2).publish_state(false);        
          }
  
esp32_ble_tracker:
  on_ble_advertise:
    - mac_address: 73:7F:00:00:07:7F
      then:
        - script.stop: timer
        - lambda: |-
            if (x.get_name() != "xBBQ") 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[9] << 8) + data.data[8];
                int probe1 = (data.data[11] << 8) + data.data[10];
                    
                ESP_LOGI("ble_data", "    - %f %f", probe0 / 10.0, probe1 / 10.0);
    
                if (probe0 < 60000) {
                  id(ble_sensor_1).publish_state(probe0 / 10.0);
                } else {
                  id(ble_sensor_1).publish_state(0);                
                }
    
                if (probe1 < 60000) {
                  id(ble_sensor_2).publish_state(probe1 / 10.0);
                } else {
                  id(ble_sensor_2).publish_state(0);                
                }
              }
            }
        - script.execute: timer

ble_client:
  - mac_address: 73:7F:00:00:07:7F
    id: xBBQ
    
sensor: 
  - platform: template
    name: "xBBQ Temperature Probe 1"
    id: ble_sensor_1
    unit_of_measurement: "°C"
    accuracy_decimals: 0
  - platform: template
    name: "xBBQ Temperature Probe 2"
    id: ble_sensor_2
    unit_of_measurement: "°C"
    accuracy_decimals: 0

22 posts were merged into an existing topic: Presence detection, BLE, mi flora, RF gateway with ESP32, OpenMQTTGateway is now compatible

Does this work with any Bluetooth meat probe or only a specific one and if so which one?

You should be able to develop a similar integration for any bluetooth device, but this thread deals with the sensors mentioned by @paddy0174 in the first post.

2 Likes

I have a generic brand thermometer and it uses the same protocol as the original Inkbird one. I use it with the BLE passive monitor but it should work well with anything that supports Inkbird.

This is sold by a swedish company and branded with their “generic” brand:

I believe you will find that several sites selling the same type thermometer with assorted brand names.

Using an Inkbird and OpenMQTTGateway. It throws erroneous values at times which just ruins my chart :frowning: The chart in the inbird BBQ go app looks normal.

Any ideas?
Thanks,
Grey

Nope, no idea, as I’m not using OpenMQTTGateway (as stated above). :wink:

Please feel free to ask in the corresponding thread, here:

We are discussing this issue below :

1 Like

What are your expected measurement/temperature data when you see this ?

I’ll start my own thread since it’s a diff probe…

Hi guys,

Setting up my first ESP32 device to use exclusively with Inkbird BT4 and asking for a little help here.
I basically followed the steps from the first post, copy pasted all the configs.
I can see probes temperature in ESPHome logs:

But in home assistant sensors are not appearing, thought they are created under different names, but cannot find anything that may look like those sensors. To me it feels like ESP32 board not publishing anything to HA, but as it’s my first board I may miss something.

Update:

I think I found where my problem is - had to setup ESPHome integration in order for this to work.

Setup couldn’t be easier so thanks for the detailed setup instructions! I was able to get my BT thermometer into HA pretty quickly without any changes to the setup. Although sadly like a few other posts I also had dropouts which would cause my graphs to have huge spikes to 0 at times, range isn’t the issue as they’re VERY close to each other. The iBBQ app must either not get the connection drops or must smooth the map over as the issue isn’t present there. Given once you connect your phone the BT connection to the ESP also drops so sadly had to resort back to the iBBQ app for last weekends 7 hour smoke and miss out on all that juicy HA data!

1 Like

I’m trying to set this up with an Inkbird ibt-2x.

I had to change iBBQ to xBBQ to get the following result

13:18:50    [I]    [ble_adv:019]    New BLE device
13:18:50    [I]    [ble_adv:020]    address: D3:6D:00:00:11:2C
13:18:50    [I]    [ble_adv:021]    name: xBBQ
13:18:50    [I]    [ble_adv:022]    Advertised service UUIDs:
13:18:50    [I]    [ble_adv:025]      - 0xFFF0
13:18:50    [I]    [ble_adv:028]    Advertised service data:
13:18:50    [I]    [ble_adv:034]    Advertised manufacturer data:

However I don’t get any useful data. Is there anyway to debug this? Can I maybe get all service data and manufacturer data in my log to see if it matches the expected format?

Please post the code from the config you’re using. :slight_smile: It’s hard to say without actually seeing the code. :slight_smile:

This is fixed with the last version of OMG
https://docs.openmqttgateway.com/upload/web-install.html

OMG .9.15 and an inkbird works fine. Cornish hen :slight_smile:

1 Like