Can I link Inkbird IBBQ-4T (wifi) to Home Assistant?

@kbrown01 Fantastic setup and something I’ve been wanting to do for awhile. However, I’m a bit of noob here… I have the IBBQ-4T all set up with Local Tuya and the entities configured.

My question is what is the easiest way to import your dashboard / templates from GitHub into lovelace? Which directories do the files go in? Does something need to go into configuration.yaml? If anybody else knows how, I’d appreciate it.

Hello All I bought iBBQ-4T today and managed to add it to Tuya App on my iPhone. And managed to obtain the local ID and add local tuya integration to my Home Assistant.
When its time to add the device I can see the IP address of the iBBQ-4T but can only add one device, either switch, sensor, or binary sensor. When I tried to add a sensor it doesn’t show any temp on the unit.
Am I missing something, can somebody please provide me some steps on how to add the devices? thank you in advance . appreciate your help.

Hello, can you please refer me to the instructions you followed to be able to add the entities to home assistant? appreciate your help , thanks in advance.

Curious, running IOS, do you lose access to the inklbird APP (do you only have access through the tuya app (and HA))? has anyone tried this with the BW version?

GitHub - kbrown01/ibbq-4t: Home Assistant files for iBBQ-4T Inkbird 4 Probe is my version

I’m currently “working on” / “searching for” a control flow for my smokebox. Your setup looks very good. Would you mind shearing the json code?

:+1:

Has anyone figured out how to get this working after 2023.5? I can connect to the device, but the temp pobes are just returning long strings of gobbelty-gook…

image

Same Problem

Tried this with my iBBQ-4T but I only see the main-device in HASS, no probes.
Do I need to add these probes in Tuya (not sure if possible) to make them appear in HASS?

I’m having the same issue. I think at some point they have changed the device to report all 4 probes from DP 107. I think the long strings is encoding all 4 temps into 1 base64 string. Not sure how it is encoded though.

Is there some standard way that a base64 string would be modified by multiplying / dividing by the local key, maybe?

@JB1982 figured it out in NodeRed and posted his code in the linked post. I used his code (with some small changes) and it is working great.

I am new to node red, what changes where made to get it working for you?

So TuyaLoca decodes my inkbird as follows:

primary_entity:
  entity: sensor
  name: Temperature probe 1
  class: temperature
  dps:
    - id: 107
      type: base64
      name: sensor
      class: measurement
      optional: true
      mapping:
        - mask: FFFF000000000000
          endianness: little
          scale: 100
      unit: F
    - id: 111
      type: bitfield
      name: fault_code
secondary_entities:
  - entity: sensor
    name: Temperature probe 2
    class: temperature
    dps:
      - id: 107
        type: integer
        name: sensor
        class: measurement
        optional: true
        mapping:
          - scale: 100
            mask: 0000FFFF00000000
            endianness: little
        unit: F
  - entity: sensor
    name: Temperature probe 3
    class: temperature
    dps:
      - id: 107
        type: integer
        name: sensor
        class: measurement
        optional: true
        mapping:
          - scale: 100
            mask: 00000000FFFF0000
            endianness: little
        unit: F
  - entity: sensor
    name: Temperature probe 4
    class: temperature
    dps:
      - id: 107
        type: integer
        name: sensor
        class: measurement
        optional: true
        mapping:
          - scale: 100
            mask: 000000000000FFFF
            endianness: little
        unit: F

But for some reason it messes up Probe1 and doesn’t populate Probe2,3,4
image

Debug from hassio:

"data": {
    "name": "BBQ thermometer",
    "type": "inkbird_bbq4t_thermometerv2",
    "device_id": "**REDACTED**",
    "device_cid": "",
    "local_key": "**REDACTED**",
    "host": "**REDACTED**",
    "protocol_version": 3.3,
    "tinytuya_version": "1.13.1",
    "api_version_set": 3.3,
    "api_version_used": 3.3,
    "api_working": true,
    "status": {},
    "cached_state": {
      "updated_at": 1703167790.8128028,
      "1": true,
      "19": "f",
      "101": 74000,
      "102": 15,
      "104": false,
      "105": 0,
      "111": 0,
      "107": "UB4AAEYeAABQHgAA7B0AAA=="
    },

Actual temps read from the actual inkbird are (F):
PRB1 = 78
PRB2 = 78
PRB3 = 78
PRB4 = 77

I have created these binary_sensors to determine which probes are connected. I use these in conditional cards to only display the probes that are in use.
They need an entity (in this case named number.probes_connected) which returns the value from ID 111.
I have this in my binary_sensors.yaml
Thought I’d share.

- platform: template
  sensors:
    ibbq_probe_1_connected:
      friendly_name: "iBBQ Probe 1 Connected"
      value_template: >
        {% set decVal = states('number.probes_connected') %}
        {% if decVal not in ['unavailable', 'unknown', 'none', None] %}
          {{ (decVal | int) % 2 == 0 }}
        {% else %}
          false
        {% endif %}
      device_class: connectivity

    ibbq_probe_2_connected:
      friendly_name: "iBBQ Probe 2 Connected"
      value_template: >
        {% set decVal = states('number.probes_connected') %}
        {% if decVal not in ['unavailable', 'unknown', 'none', None] %}
          {{ ((decVal | int) // 2) % 2 == 0 }}
        {% else %}
          false
        {% endif %}
      device_class: connectivity

    ibbq_probe_3_connected:
      friendly_name: "iBBQ Probe 3 Connected"
      value_template: >
        {% set decVal = states('number.probes_connected') %}
        {% if decVal not in ['unavailable', 'unknown', 'none', None] %}
          {{ ((decVal | int) // 4) % 2 == 0 }}
        {% else %}
          false
        {% endif %}
      device_class: connectivity

    ibbq_probe_4_connected:
      friendly_name: "iBBQ Probe 4 Connected"
      value_template: >
        {% set decVal = states('number.probes_connected') %}
        {% if decVal not in ['unavailable', 'unknown', 'none', None] %}
          {{ ((decVal | int) // 8) % 2 == 0 }}
        {% else %}
          false
        {% endif %}
      device_class: connectivity

This is my inkbird IBBQ-4T V2 dashboard:

2 Likes

That’s great, how did you get that done?

I shared my code on github: GitHub - TurboTronix/IBBQ-4T-V2: HomeAssistant Lovelace UI for IBBQ-4T V2

I got the localTuya to add the device, but I like to read it in C, and I get a F value (scaled down to 0.01)

I tried to add this to yaml but its wrong…

localtuya:

  • sensor:
    name: “BBQ Probe 1”
    value_template: “{{ ((value | float - 32) / 1.8)|round(2) }}”