Cannot get Tuya Integration to work

This is amazing. Wish I had seen this before spending a while figuring out how they were encoding the values by myself!

1 Like

I have not used node red before could someone tell me what I do with that code to get it to work for me?

So I got everything put into node red but when I run it I get this error from the function.
“RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds”
Any ideas?

My tuya app shows my IBBQ-4T but there are no variables for the 4 probes. Not sure why. I can see some chinese stuff but they don’t seem to show temp values.

I don’t see 107…


I have the same issue as you. Did you get it resolved?

Where can I find this “manual DPS option” is this in Tuya app or dev or in Hassio?

Unfortunately not. Though I haven’t checked it since I posted here - Based on you having the same problem, I expect it to be the same. If I get a chance I’ll check it out again and confirm.

1 Like

I think you can add 107 manually within HA config when setting up the tuya - just going off memory so could be wrong.

So managed to see the 107 but it’s a negative number and only displays the probe1 temp.

I’m using Tuya Local which identified my Inkbird as “inkbird_bbq4t_thermometerv2.yaml”

In that yaml file I can see that it uses the DP107 and then splits it up to all other probes so not sure why it shows up as a negative number.

From Tuya loT debug of DP107 I see the following:

Time Device Event DP ID Event Details
12/21/2023 8:32 Report 探头温度1 wBwAAMAcAAAQHQAAwBwAAA==
12/21/2023 8:32 Report 探头温度1 wBwAAcAcAAEaHQAB1BwAAQ==
12/21/2023 8:32 Report 探头温度1 1BwAAMAcAAAaHQAA3hwAAA==
12/21/2023 8:31 Report 探头温度1 wBwAAcAcAAEaHQABwBwAAQ==
12/21/2023 8:31 Report 探头温度1 wBwAAMAcAAAaHQAAyhwAAA==
12/21/2023 8:30 Report 探头温度1 wBwAAcAcAAEQHQABwBwAAQ==

Even though it’s in chinese characters it is indeed DP107 as per the inspection of the page:

In Tuya.iot in your “project” you’ll find a Device-ID, with this you can “Traverse” the left menu, and find a "Complete list of DP’s for your devices , where there also is a ( Scaling ) Number, which you manually have to set( for various measurements, to get it right in i.e HA), when either setting up your devices, or clicking “Configure Device” in /Settings/Devices-Integrations.

I can’t remember exactly where ( long time since i’ve been in there, from what i know they have changed their site-structure ), but it’s in the bottom of the left Menu, in tuya.iot , and there are a few topis in regards to DP’s in here, with complete links/pic’s, Use the Search function

Or go here and check if this is still valid , the DP-list and other details is among the various sub-menu’s, go through, copy/past your device id, and you’ll see

PS: You just say “it’s not right” , so what is the correct temperature ) ( +1.6 ? +16 ? +160 ? ) this is what the scaling factor is for … In Tuya integrations this has to be "transformed into i.e ( multiply/devide 0,1 or 0,01 or 0.001 ) , or ( 10 or 100 or 1000 )

So I played with the “inkbird_bbq4t_thermometerv2.yaml" file and got the following (all I did is change the probe 2-3-4 from integer to type: base64):


Thing is when I test the probes with hot water I notice that the Hassio temp for Probe 4 is actually the Probe 1 of the device, Probe 2 matches Probe 2, the other probes make the negative numbers blink.

1 Like

1 and 3 could be “showing” the same, as 3 is just “rounded” to 1 digits … are you sure these 2 actually is configured/connected correct ?

EDIT: Try to change “output” to see if the “probes” actually is “Toasted” :slight_smile:

What i find strange is the masking in the yaml file. There are more digits in that string coming from the dp107 than in the mask. Will have to show you what i mean when i get back home.

For example probe 1 = FFFF 0000 0000 0000
but dp107 has = 0000 0000 0000 0000 0000 0000 digits in the string

ok, try to put all probes in same small bowl of boiled water, for 5min or so (don’t let the cables(rubber) into/near the water. this way you get a better idea, whether some needs to be calibrated, and if some is way off !
And when you get the result, from all probes, in same heated temperature, at the same time, you could have a look at this post, might help you to understand what you are seeing.

Hassio debuger give me:
"107": "1j0AAShBAAEIPgABNj0AAQ=="

So as per the link you provided from InkBirds tech:
I get the following from DP107: 1j0AAShBAAEIPgABNj0AAQ==
Converted to HEX: d6 3d 00 01 28 41 00 01 08 3e 00 01 36 3d 00 01

Which gives us:

Probe 1:

  • d6 3d 00 01 reversed → 01003dd6
  • converted to decimal: 16793046
  • 16793046/100,000 = 167.93 F which is 75 C

Probe 2:

  • 28 41 00 01 reversed → 01004128
  • converted to decimal: 16793896
  • 16793896/100,000 = 167.93 F which is 75 C

Probe 3:

  • 08 3e 00 01 reversed → 01003e08
  • converted to decimal: 16793096
  • 16793096/100,000 = 167.93 F which is 75 C

Probe 4:

  • 36 3d 00 01 reversed → 01003d36
  • converted to decimal: 16792886
  • 16792886/100,000 = 167.92 F which is 75 C

This matched all my probes inserted all at once into a cup of hot water (+/- 1C).

So in conclusion, I believe something is wrong with the conversion inside the yaml file. Since we can see that Tuya_Local debug log does indeed get the correct numbers from dp107 but hassio is not outputing them correctly.

In the yaml this is done:

    - id: 107
      type: base64
      name: sensor
      class: measurement
      optional: true
        - mask: FFFF000000000000
          endianness: little
          scale: 100
      unit: F

From my understanding:

  • mask: FFFF000000000000 it takes the first 4 HEX
  • endianness: little reverse the bytes
  • scale: 100 divide by 100

Code seems correct but for some reason Probe1 and Probe3 are not giving the correct measurement in hassio.

Ok, i don’t know where you get your “information” nor which “yaml” you refers to , but i think you should read this whole Topic ( Which actually has nothing to do whether Tuya-Local Integration Not working, but 1 common thing in the post here is IBBQ-4T …Configuration/setup) , and it turns out that both links to DP’s etc is here already, aswell as the info , in FEW post above, i linked you to, so have you considered enable 108,109,110 ?, or tried to “follow” more of the examples in here ?.

Well from what I’ve read on here, mine is a IBBQ-4T V2 which merges all temps into one DP (DP107). The info derived from my unit seems to match that claim. The yaml I am talking about comes from Tuya-Local. If you go into custom_components\tuya_local\devices folder it’s in there. That is the yaml file Tuya_Local uses to define my device. What I can’t figure out is why it manages to perfectly show Probe2 and Probe4 but messes up on Probe1 and Probe3 even though the code is exactly the same.


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

you need to “devide” this into 4 sensors type-input, read above ( sensor 1 , 2 , 3 , 4 )

I pretty sure one can not do that in YAML, most likely a .js or jinja

Anyway i have no such Device, and wouldn’t need HA to be a part of my cooking, specially not if i had a device already, in hand , with probes connected, and with Alarm etc
I just popped in here (again !, saw it last year also i think) as it seemed like someone needed to know where to find DP’s etc.
(Id better Mute this Topic … someone should change the Topic Header to ( Setup IBBC-4T ) :slight_smile:

Hey @kbrown01 could you share your meatmaptemp situation here as far as setting the doneness temperatures? You must have done some logic with the currently selected dropdown option.

Edit: I found another place that you posted it. Thanks again! Inkbird BBQ4T Local Control - #22 by kbrown01

Perfect. Not sure anything has changed but here is the latest:

  - name: meatmaptemp
    state: >
     {% set tartemp = {
        "Poultry": {
            "Rare": 150,
            "Medium-Rare": 150,
            "Medium": 155,
            "Medium-Well": 160,
            "Well": 165
        "Pig": {
            "Rare": 135,
            "Medium-Rare": 140,
            "Medium": 150,
            "Medium-Well": 160,
            "Well": 170
        "Goat": {
            "Rare": 140,
            "Medium-Rare": 145,
            "Medium": 160,
            "Medium-Well": 165,
            "Well": 170
        "Lamb": {
            "Rare": 140,
            "Medium-Rare": 145,
            "Medium": 160,
            "Medium-Well": 165,
            "Well": 170
        "Beef": {
            "Rare": 120,
            "Medium-Rare": 130,
            "Medium": 135,
            "Medium-Well": 145,
            "Well": 155
        "Venison": {
            "Rare": 120,
            "Medium-Rare": 130,
            "Medium": 135,
            "Medium-Well": 145,
            "Well": 155
        "Alligator": {
            "Rare": 140,
            "Medium-Rare": 145,
            "Medium": 160,
            "Medium-Well": 165,
            "Well": 170
     } %}
     {% set meattype = states.input_select.meat_types.state %}
     {% set meattemp = states.input_select.meat_temps.state %}
     {{ tartemp[meattype][meattemp] | int }}