Weber Connect Smart Grilling Hub integration

As far as I can tell - for Weber connect devices, Bluetooth is just used for pairing.

If you turn Bluetooth off, everything still works the same. That’s because it’s connected to a cloud websocket

Edit: seems like I was wrong. The data is transmitted over Bluetooth and websocket. But the andoird app actually seems to require Bluetooth even though the iOS app can work 100% without bluetooth

Ah, that makes sense. Thanks for the explanation.

Very exciting!

If iOS can work without Bluetooth, presumably it’s possible then, right?

The android app doesn’t need Bluetooth. I’m cooking pork chops right now with Bluetooth turned off on my Android phone. It wasn’t turned on when I opened the app either.

Really exciting. I just got my grill and was hoping someone had figured out a way to sniff that device. Keep us posted !

Odd - Maybe it is my particular device or my particular emulator for android? Not sure.

Besides that though - I’ve hit a few barriers

  1. Time - A few other things have been occupying my time.

  2. I can connect to the websocket and even register a ‘companion app’. But I have not been able to find a way to sync the device to the companion app/ websocket.

  3. I have not found a way to decrypt the websocket messages.

If anyone is interested in assisting me in any of these, your support would be welcome. Their code is rather convoluted with a lot of overloading and unneeded code and it has been making things a bit difficult.

I have commitments for my current integrations that are taking priority, but once I finish both of them - I will continue working on this problem.

1 Like

Any luck on this? I just did a +1 with Weber on this feature request.

I’ve had a lot less time recently to be able to handle this. I haven’t made much progress. I can connect to a websocket, but I don’t have the method of decrypting ws messages yet or sync the websocket on to the companion app info.

Always willing to chat with anyone who wants to work on this on discord.

1 Like

Me too. But I am not good in programming, so I am Not a good coding Partner.

Gave up and bought an inkbird + ble and it works perfectly :slight_smile:

@Lash-L I’m not sure how much time I will have for it, but could you share the code so I can experiment a bit?

I have now a Weber Searwood (same app) and some programing experience. I would like to support also.

Hi @nambuco and @davidemarcoli Please add me on discord and I can add you to a chat with one other person who showed interest.

Lash-L/ conway220

2 Likes

Hello, did you guys have any luck finding a soulution for this weber connect hub? i would really like go integrate min to my HA aswell.

This is working for me… just call the associated variables in a main.yaml

############################################
# MODULE: iGrill 3 BLE Integration Template
# TYPE: Sensor + BLE Client
# CREATED: 2025-10-06
# AUTHOR: Soup (Steve Campbell)
#
# INPUTS:
#   - MAC address (BLE)
#   - Battery level (AA or docked)
#   - Propane level (if docked)
#   - Temperature probes 1–4
#
# OUTPUTS:
#   - Connection status (binary + text)
#   - Battery sensor (template)
#   - Propane status (emoji + %)
#   - Probe temps (raw + emoji summary)
#
# RUNTIME IMPACT:
#   - BLE scan + 60s polling
#   - 4 probe sensors + propane + battery
############################################

ble_client:
  - mac_address: ${mac_address}
    id: ${igrill_id}
    on_connect:
      then:
        - binary_sensor.template.publish:
            id: ${igrill_id}_connection
            state: ON
    on_disconnect:
      then:
        - binary_sensor.template.publish:
            id: ${igrill_id}_connection
            state: OFF

binary_sensor:
  - platform: template
    name: "${igrill_name} Connection"
    id: ${igrill_id}_connection
    device_class: connectivity

sensor:
  - platform: igrill
    ble_client_id: ${igrill_id}
    update_interval: 60s
    send_value_when_unplugged: true
    unplugged_probe_value: 0
    battery_level:
      name: "${igrill_name} Battery"
      id: ${igrill_id}_battery
    propane_level:
      name: "${igrill_name} Propane"
      id: ${igrill_id}_propane
    temperature_probe1:
      name: "${igrill_name} Probe 1"
      id: ${igrill_id}_probe1
    temperature_probe2:
      name: "${igrill_name} Probe 2"
      id: ${igrill_id}_probe2
    temperature_probe3:
      name: "${igrill_name} Probe 3"
      id: ${igrill_id}_probe3
    temperature_probe4:
      name: "${igrill_name} Probe 4"
      id: ${igrill_id}_probe4

text_sensor:
  - platform: template
    name: "${igrill_name} MAC Address"
    id: ${igrill_id}_mac
    lambda: |-
      return std::string("${mac_address}");


  - platform: template
    name: "${igrill_name} Probe Summary"
    id: ${igrill_id}_summary
    lambda: |-
      if (!id(${igrill_id}_connection).state) {
        return {"🔌 OFFLINE"};
      }
      auto format_probe = [](float temp) -> std::string {
        if (temp <= 0.0) return "🧊";
        if (temp < 100.0) return "🌡️ " + to_string((int)temp) + "°F";
        return "🔥 " + to_string((int)temp) + "°F";
      };
      std::string p1 = format_probe(id(${igrill_id}_probe1).state);
      std::string p2 = format_probe(id(${igrill_id}_probe2).state);
      std::string p3 = format_probe(id(${igrill_id}_probe3).state);
      std::string p4 = format_probe(id(${igrill_id}_probe4).state);
      return "P1: " + p1 + " | P2: " + p2 + " | P3: " + p3 + " | P4: " + p4;



  
2 Likes

Is the BLE_CLIENT the Bluetooth MAC address or the WiFi MAC Address? I am sorry, I just do not have much experience looking at these so if a key is there to tell me what I need to replace, I will give it a shot.

@kahilzinger the bluetooth device’s mac

Hmm…any on the WiFi MAC?

How are you setting this up for the Weber Connect Hub? With the configuration you shared, I am getting an error saying that the igrill platform is missing.

I’m not doing anything with Web Connect Hub… just an Igrill 3 and an Igrill mini.