Inkbird IBBQ-4T

From Hackerspace ACKspace
Jump to: navigation, search
Project: Inkbird IBBQ-4T
Featured: Yes
State Active
Members xopr
GitHub No GitHub project defined. Add your project here.
Description Cloudless Inkbird IBBQ-4T
Picture
Inkbird IBBQ-4T Picture.jpg


synopsis

Remove Barbecue temperature sensor from the cloud, adding it to Home Assistant.

xopr had some gift cards to spare and paid €69,- for it (noice!)

requirements

  • ESP-12 module flashed with Tasmota using a programming jig (or in-circuit with extra reset jumper)
  • solder iron + solder
  • desoldering iron or lots of solder
  • hairdryer or equivalent
  • small philips screwdriver
  • flat screwdriver or spudger
  • utility or exacto knife
  • (optional) wires for in-circuit programming

hardware

The thermometer has a backlit display, beeper, USB-C charge (only) port and a 7.4Wh 3.7v battery. It's wireless part is based on Tuya: a Chinese IoT cloud provider and the first revision had an Espressif wifi chip. This version has a WBR3 module based on Realtek chips which is incompatible with the current open source solutions.

The only way is to replace the module with an ESP-12, pull GPIO15 low and CH_PD high with a 10-20k resistor.

Naked PCB with a transplanted ESP module. Notice the required resistors for running and optional jumper for in-circuit programming
probes in Home Assistant

opening and replacing the module

  • grab a hairdryer and utility/exacto knife
  • heat the front plate and pry open carefully to not scratch off the paint. The adhesive is foamy so pushing the knife too far might make it curl up
  • use small philips screwdriver to open up the case and remove the board (USB-C side first; bend the case a bit, and don't lose the knob)
  • remove the Realtek module
  • solder on the ESP module (either pre-programmed or solder extra wires)
  • solder a resistor between CH_PD and VCC and one between GND and GPIO15
  • if you want to program in-circuit, keep the Tuya MCU in reset by bridging Reset and GND on the breakout pads while flashing the ESP

firmware settings

After connecting to Tasmota, go to Configuration -> Other and set template {"NAME":"Tuya","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}

Next, go to console and enter the following commands:

  • set as template module (using TuyaMCU): module 0
  • set baudrate to 115200: SetOption97 1
  • Backlog TuyaMCU 99,1; TuyaMCU 11,19; TuyaMCU 35,101; TuyaMCU 81,102; TuyaMCU 12,104
  • Add two rules and activate them. The first rule sets an enum value for the mute button, the second one publishes the raw hex values on the probes subtopic:
Rule1 ON power1#state=1 DO TuyaSend4 19,1 ENDON ON power1#state=0 DO TuyaSend4 19,0 ENDON
Rule2 ON TuyaReceived#DpType0Id107 DO Publish stat/%topic%/probes %value% ENDON
Backlog Rule1 1; Rule2 1
  • Set button names: Backlog WebButton1 F/C; WebButton2 Mute

home assistant

Note that the published hex value contains 4x8 hex characters as little endian farenheit values where the first byte is ignored (it seems to toggle between 0 and 1)

In the configuration.yaml file, set the following:

mqtt:
  sensor:
    - name: "Barbecue probe 1"
      state_topic: "stat/tasmota_5B7316/probes"
      unique_id: "barbecue_probe_1"
      value_template: "{{(0xffff * value[6:8] | int(base=16) + 0xff * value[4:6] | int(base=16) + value[2:4] | int(base=16)) / 100 }}"
      unit_of_measurement: "°F"
      device_class: temperature
    - name: "Barbecue probe 2"
      state_topic: "stat/tasmota_5B7316/probes"
      unique_id: "barbecue_probe_2"
      value_template: "{{(0xffff * value[14:16] | int(base=16) + 0xff * value[12:14] | int(base=16) + value[10:12] | int(base=16)) / 100 }}"
      unit_of_measurement: "°F"
      device_class: temperature
    - name: "Barbecue probe 3"
      state_topic: "stat/tasmota_5B7316/probes"
      unique_id: "barbecue_probe_3"
      value_template: "{{(0xffff * value[22:24] | int(base=16) + 0xff * value[20:22] | int(base=16) + value[18:20] | int(base=16)) / 100 }}"
      unit_of_measurement: "°F"
      device_class: temperature
    - name: "Barbecue probe 4"
      state_topic: "stat/tasmota_5B7316/probes"
      unique_id: "barbecue_probe_4"
      value_template: "{{(0xffff * value[30:32] | int(base=16) + 0xff * value[28:30] | int(base=16) + value[26:28] | int(base=16)) / 100 }}"
      unit_of_measurement: "°F"
      device_class: temperature

todo

  • ignore the sensor if it is not plugged in (there is a bitmask command but it's safe to assume >1000 degrees is not a realistic value
  • add instructions/commands to set display timer, temperature alarm and other stuff

links