Inkbird IBS-M1 with IBS-P01

The Inkbird app loads my M1 and IBS-P01 no problem, but I can’t link that app to the IoT platform. I’ve tried loading them both the Tuya app and the Smart Life but whenever I do, everything loads in Chinese and I can’t make sense of any of it. How can I connect the M1 to Smart Life in English, in order to get it into the IoT platform?

Hi,
Do you know if the same can be achieved using RFXtrx433XL?

Thanks

I guess you are asking if “RFXtrx433XL” transciever is supported by rtl_433-hass-addons ? If so then the supported devices are listed here Hardware tested with rtl_433 | rtl_433 and yours is not in the list. But you could give it a try. If it uses the same chip as the supported ones then it might. No guarantees. You just have to test it.

Actually I wanna know if I can use the RFXtrx to communicate with the IBS-P01R

Same question. Did you have a solution?

1 Like

My looks exactly same:

Tuya IoT Device Debugg:

Device log:

Status:

Have You figured this somehow out?

I used an RTL-SDR dongle which worked but was unreliable over time because of the distance between the dongle and my thermometer in the pool outside. As such, I found another solution that works well but requires a lot of work and is (probably unnecessarily) complicated. I did this by using a gateway (the newer IBS-M1 or IBS-M2) connected to the local network and connected to Tuya instead of the Inkbird app. In the Tuya app I get everything in Chinese like other users. I then changed the device on the Tuya IoT website from “standard instruction” to “DP instruction” and created scripts that use curl and python to query Tuya online, convert the data to temperature in Celsius and update a HA sensor via MQTT. I run the scripts on the linux host of my HA instance, not within HA, which I access via SSH. I then use an automation to run the script periodically to update the temperature. It was a while ago when I did it so I may have not remembered everything, but this is what you need to do:

  • Connect the thermometer to an Inkbird Gateway (the newer IBS-M1 or IBS-M2) which is connected to the internet. Check that it all works with the Inkbird app but then remove the thermometer from the app.

  • Link the gateway to the Tuya app to get the Chinese information

  • Open a Tuya IoT account (follow instructions here: tuyapi/SETUP.md at 189b4f2818d52cd609d6feb750f939a603920909 · codetheweb/tuyapi · GitHub)

  • In Tuya IoT, change the gateway from “standard instruction” to “DP instruction”:

    go to cloud → development → your project’s name → devices, find the device under “View Devices by Product” and click on “Change Control Instruction Mode”.

    Note the Device ID, your Tuya ClientID and ClientSecret

  • Install and setup an MQTT broker and note it’s IP – I used Mosquitto broker running as a Home Assistant Add-on. If you do this, the broker’s IP will be the same as your HA IP/host name. See: addons/DOCS.md at ae2107bf57eb2db6c5cb0d9d8b14edfbaac32102 · home-assistant/addons · GitHub

  • I used a combination of a bash script to query Tuya and a python script to convert the result to the actual temperature:

    In the Linux machine, create a file called inkird_process.py as below. You will need to change “ch_1” with the channel you use on your gateway.

import json
import sys

charcter_conversion = {
    "A": 0,
    "E": 1,
    "I": 2,
    "M": 3,
    "Q": 4,
    "U": 5,
    "Y": 6,
    "c": 7,
    "g": 8,
    "k": 9,
    "o": 10,
    "s": 11,
    "w": 12,
    "0": 13,
    "4": 14,
    "8": 15
}

device_param = json.loads(sys.argv[1])
number_of_status = len(device_param["result"][0]["status"])

for i in range(number_of_status):
    if device_param["result"][0]["status"][i]["code"] == "ch_1":
        raw_temp = device_param["result"][0]["status"][i]["value"]

raw_temp_first_charecter = raw_temp[1:2]
raw_temp_second_charecter = raw_temp[2:3]
raw_temp_third_charecter = raw_temp[3:4]

temp_by_ten = (ord(raw_temp_first_charecter) - 65)*16 + charcter_conversion[raw_temp_second_charecter]

if raw_temp_third_charecter == "B":
    temp_by_ten = temp_by_ten + 256

pool_temp = temp_by_ten/10

print(pool_temp)
  • Also in the linux machine, create a file call inkird_query.sh with the following content, replacing ClientID, ClientSecret, Device ID, path to inkbird_process.py, your MQTT broker IP/Host name, MQTT username and MQTT password with your own values. Anything in the code that is surrounded by << >> needs to be replaced(I found the code online and changed it):
#!/bin/bash
debug=true

# Declare constants

ClientID="<<ENTER CLIENT ID HERE>>"
ClientSecret="<<ENTER CLIENT SECRET HERE>>"
BaseUrl="https://openapi.tuyaeu.com"
EmptyBodyEncoded="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
tuyatime=`(date +%s)`
tuyatime=$tuyatime"000"
if ($debug) then echo Tuyatime is now $tuyatime; fi;


# Get Access Token

URL="/v1.0/token?grant_type=1"

StringToSign="${ClientID}${tuyatime}GET\n${EmptyBodyEncoded}\n\n${URL}"
if ($debug) then echo StringToSign is now $StringToSign; fi;

AccessTokenSign=$(printf $StringToSign | openssl sha256 -hmac  "$ClientSecret" | tr '[:lower:]' '[:upper:]' |sed "s/.* //g")
if ($debug) then echo AccessTokenSign is now $AccessTokenSign; fi;

AccessTokenResponse=$(curl -sSLkX GET "$BaseUrl$URL" -H "sign_method: HMAC-SHA256" -H "client_id: $ClientID" -H "t: $tuyatime"  -H "mode: cors" -H "Content-Type: application/json" -H "sign: $AccessTokenSign")
if ($debug) then echo AccessTokenResponse is now $AccessTokenResponse; fi;

AccessToken=$(echo $AccessTokenResponse | sed "s/.*\"access_token\":\"//g"  |sed "s/\".*//g")
if ($debug) then echo Access token is now $AccessToken; fi;

# Send Device status request

URL="/v1.0/iot-03/devices/status?device_ids=<<ENTER DEVICE IDs HERE>>"

StringToSign="${ClientID}${AccessToken}${tuyatime}GET\n${EmptyBodyEncoded}\n\n${URL}"
if ($debug) then echo StringToSign is now $StringToSign; fi;

RequestSign=$(printf $StringToSign | openssl sha256 -hmac  "$ClientSecret" | tr '[:lower:]' '[:upper:]' |sed "s/.* //g")
if ($debug) then echo RequestSign is now $RequestSign; fi;

RequestResponse=$(curl -sSLkX GET "$BaseUrl$URL" -H "sign_method: HMAC-SHA256" -H "client_id: $ClientID" -H "t: $tuyatime"  -H "mode: cors" -H "Content-Type: application/json" -H "sign: $RequestSign" -H "access_token: $AccessToken")
if ($debug) then echo RequestResponse is now $RequestResponse; fi;

# echo $RequestResponse

Pool_temp=$(python <<PATH>>/inkbird_process.py $RequestResponse)

mosquitto_pub -h <<mosquito IP/Hostname>> -u '<<MQTT username>>' -P '<<MQTT password>>' -t pool/pool_temp -m {"\"temp\": $Pool_temp"} -r

# echo pool temp is $Pool_temp
  • The Linux machine that runs the scripts should have python and mosquito broker running locally

  • Uncomment the last line and run the script locally to check it works:

 ./inkird_query.sh
  • You will need to be able to connect via SSH from your HA to the Linux machine were you are going to have the scripts via the AH shell_command integration. For that you will need to create a key so you can connect without entering a password. I followed the very useful instructions here: https://siytek.com/home-assistant-shell/

  • In HA configuration.yaml add the following, replacing the username for the linux machine, the linux machine’s IP or hostname and the path for inkbird_query.sh:

shell_command:
  update_pool_temp: ssh -i /config/ssh/id_rsa -o 'StrictHostKeyChecking=no' <<user@linux machine IP/hostname>> '<<path>>/inkbird_query.sh'
  • Also in configuration.yaml, define the mqtt sensor:
mqtt:
    sensor:
      - name: "Pool Temperature"
        state_topic: "pool/pool_temp"
        unit_of_measurement: "°C"
        device_class: temperature
        value_template: "{{ value_json.temp }}"
        json_attributes_topic: "pool/pool_temp"
        unique_id: tuya_mqtt_pool_temp_sensor
        object_id: pool_temp
  • In automations.yaml, create an automation to update the sensor every time interval. Below automation updates it every 30 seconds, which is probably excessive
- id: update_pool_temp_every_minute
  alias: update_pool_temp_every_minute
  trigger:
  - platform: time_pattern
    seconds: "/30"
  action:
  - service: shell_command.update_pool_temp
  • Restart HA and you should now have a sensor called pool_temp that has the current temperature.

As I said, very complicated. There is probably an easier way to run the script and update the sensor but this worked so I just left it like that. I hope I didn’t forget any steps.

3 Likes

Great work.

I wonder if after changing to DP instruction you can then use the standard local tuya tools to access.

I’m certainly going to give it a go.

I think I tried it with local tuya, but I’m not sure. Let us know.

Has anyone managed to integrate the thermometers from the INKBIRD IBS-M1 into HA?

I read all the news here but unfortunately I didn’t make it.

Unfortunately, I’m not a programmer

Greeting

Marcel

Hi @marcel510,

The IBS-M1 is a 2.4GHz gateway device which is what provides connectivity between the sensor and your wifi network.
What you havent mentioned is what sensor you are trying to get working.
IBS-P01B = Bluetooth (shorter range: 30M/98ft)
IBS-P01R = Radio 433 MHz (longer range: up to 300ft in open)

You should know which one you bought.

As this image shows, there is not much difference in how they look.

I just checked and Inkbird also have a brand new product called the
WIFI Gateway IBS-M2 = 2.4GHz
IBS-P02R = Radio 433 MHz

Yes, i have been able to using localtuya

Okay, I’ve tried a few hours now via tuya and the connection is apparently also established.

Unfortunately, I can’t get the sensor / entity to add correctly. It always shows 0 degrees.

Greetings

New IBS-M1 and IBS-M2 no longer work with Tuya (like older IBS-M1). You either need a RTL-SDR dongle or use the scripts that I published above. If you read this thread from the top you will see relevant discussions.

1 Like

Thank you. I read the contribution of them with the script.

Unfortunately, I’m not a programmer and I don’t dare to do it.

Maybe I’ll find someone else in my

Circle of acquaintances who can do this for me.

Greetings, Marcel

1 Like

Hi @marcel510

Please provide as much information as possible in order for us to best try and help you as there are subtle differences that will affect the advice you are given.

For example, my older IBS-M1-1 is a category “qt”

image

whereas the newer IBS-M1S2.0 is a category “wsdcg”

image

More information about how to tell them apart is here:

1 Like

I wonder if marcel510 has a newer IBS-M1 which doesn’t work with Tuya, and this is why is he is getting 0 degrees. I have tested a newer IBS-M1 and an IBS-M2 and, with both, Tuya doesn’t show the temperature. This is an issue reported by many users above. With those devices, what you get on Tuya iot is:

Screenshot 2023-05-26 204226

Localtuya doesn’t work with those devices - it doesn’t show the temperature. The script I put above converts this code to an actual temperature.

Hi Nir,

thank you for the codes. I am successfull in reading by sh script and I am able to parse some values from some fields in statuses.
Unfortunatly, there is no status which would have code like ch_1 or which would look like the temperature.

Did I miss something?
I use IBS-M1 2.0
Here is my data:

{
	'id': 'xxxxxxx',
	'status': [{
		'code': 'app_add_device_cmd',
		'value': 'MA=='
	}, {
		'code': 'g_scan_device',
		'value': 'MA=='
	}, {
		'code': 'ch_para',
		'value': 'AQMQULIAAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//wAAAP//AAAA//8AAAD//w=='
	}, {
		'code': 'ch_cfg1',
		'value': 'LAEgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAg=='
	}, {
		'code': 'ch_cfg2',
		'value': 'WAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAg=='
	}, {
		'code': 'ch_cfg3',
		'value': 'WAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAg=='
	}, {
		'code': 'ch_cfg4',
		'value': 'WAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAg=='
	}, {
		'code': 'ch_cfg5',
		'value': 'WAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAlgCIANYAiADnP9kAJz/ZAAAAAAAAAAAAAJYAiADWAIgA5z/ZACc/2QAAAAAAAAAAAACWAIgA1gCIAOc/2QAnP9kAAAAAAAAAAAAAg=='
	}, {
		'code': 'ch_alarm',
		'value': 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
	}, {
		'code': 'ch_alarm_trig1',
		'value': 0
	}, {
		'code': 'alarm_notify_status',
		'value': False
	}, {
		'code': 'ch_scene1',
		'value': 'AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfw=='
	}, {
		'code': 'ch_scene2',
		'value': 'AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfwAAAAAAAAAAAH8AAAAAAAAAAAB/AAAAAAAAAAAAfw=='
	}, {
		'code': 'ch_rtd1',
		'value': 'Aw8BAAAAAAAAXAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AA=='
	}, {
		'code': 'his_ask_cmd',
		'value': 'MA=='
	}, {
		'code': 'his_answer',
		'value': 'MA=='
	}, {
		'code': 'his_data',
		'value': 'MA=='
	}, {
		'code': 'ch_name1',
		'value': 'VGVwbG90YSBiYXrDqW51AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
	}, {
		'code': 'ch_name2',
		'value': 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
	}, {
		'code': 'ch_name3',
		'value': 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
	}, {
		'code': 'ch_name4',
		'value': 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
	}, {
		'code': 'ch_name5',
		'value': 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
	}, {
		'code': 'ch_rtd2',
		'value': 'AP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AAD//////////wAA//////////8AAP//////////AA=='
	}, {
		'code': 'his_data_time',
		'value': 'MA=='
	}, {
		'code': 'ch_alarm_trig2',
		'value': 0
	}, {
		'code': 'his_alarm1',
		'value': 'IwUlIFUDAAAAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w=='
	}, {
		'code': 'his_alarm2',
		'value': '/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w=='
	}]
}

According to translation, I would expect the temperature in ch_rtd1, but the inkbird_process.py returns value 114 for temperature around 27 °C,

  • “app添加设备的命令” - “Command to add a device to the app”
  • “网关搜索到设备上报” - “Report of device found by gateway”
  • “通道配对参数” - “Channel pairing parameters”
  • “通道配置参数1” - “Channel configuration parameter 1”
  • “通道配置参数2” - “Channel configuration parameter 2”
  • “通道配置参数3” - “Channel configuration parameter 3”
  • “通道配置参数4” - “Channel configuration parameter 4”
  • “通道配置参数5” - “Channel configuration parameter 5”
  • “通道设备报警数据” - “Channel device alarm data”
  • “报警状态提醒” - “Alarm status reminder”
  • “通道间场景智能互动1” - “Intelligent interaction between channel scenes 1”
  • “通道间场景智能互动2” - “Intelligent interaction between channel scenes 2”
  • “通道实时数据上报1” - “Channel real-time data report 1”
  • “历史数据问询指令” - “Historical data inquiry command”
  • “通道名称1” - “Channel name 1”
  • “通道名称2” - “Channel name 2”
  • “通道名称3” - “Channel name 3”
  • “通道名称4” - “Channel name 4”
  • “通道名称5” - “Channel name 5”
  • “报警触发1” - “Alarm trigger 1”
  • “网关历史指令应答” - “Gateway historical instruction response”
  • “历史数据上传” - “Historical data upload”
  • “通道实时数据上报2” - “Channel real-time data report 2”
  • “历史数据时间上传” - “Historical data time upload”
  • “报警触发2” - “Alarm trigger 2”
  • “报警历史1” - “Alarm history 1”
  • “报警历史2” - “Alarm history 2”

I’ll have a look at it in the morning. I assume you have a thermometer connected to the IBS-M1 and showing correctly if you look at the Inkbird app? Do you have more than one thermometers connected? What is the type of thermometer you have - does it have humidity as well? I guess the issue is related to the fact that I have an IBS-M2 - I assumed the conversion will be similar to the newer IBS-M1 but I may be mistaken. Another possible issue can be related to the fact that I am using a pool thermometer with no humidity. I suspect that you are right about ch-rtd1 being the field holding the temp data. I’ll compare your data to mine and see if I can find the differences.