Skip to content

Support of T902 #152

@petrkr

Description

@petrkr

Is your feature request related to a problem? Please describe.
Nope, only problem is missing device :)

Describe the solution you'd like
Help with understand this code and implement T902 model to here based on my sniffing and example-proof-of-concept working code.

Additional context

https://buythermopro.com/products/tp920-bluetooth-wireless-meat-thermometer

There is some init sequence, which I need to send without it T902 wont start sending data even notify is requested. Probably some auth? Do not know, just blindly send them as-sniffed-ones.

GATT UUIDs

# TP902 GATT UUIDs
SERVICE_UUID = "1086fff0-3343-4817-8bb2-b32206336ce8"
WRITE_UUID = "1086fff1-3343-4817-8bb2-b32206336ce8"  # handle 0x0018
NOTIFY_UUID = "1086fff2-3343-4817-8bb2-b32206336ce8"  # handle 0x001a

Init sequence, but really do not know what those data are

INIT_SEQUENCE = [
    bytes.fromhex("01098a7a13b73ed68b67c2a0"),  # This is only one needed, others will be some configs
#    bytes.fromhex("410041"),
#    bytes.fromhex("28040b685b8c86"),
]

Write registers (sniffed, guessed)

#    bytes.fromhex("20010c2d"), # Probably settings of C/F unit
#    bytes.fromhex("23060100ffffffff26"), # Write settings T1 alarm range / type (in this case disabled)
#    bytes.fromhex("23060200ffffffff27"), # Write settings T2 alarm range / type (in this case disabled)

Read of alarm (guessed)

  TX >> [24010126] cmd=0x24 len=1 data=01
  RX << [2406018211970809660000000000510f0400392e] alarm_read ch1: RANGE(130) lo=80.9°C hi=119.7°C
  TX >> [24010227] cmd=0x24 len=1 data=02
  RX << [2406020a074000007d0000000000510f0400be3a] alarm_read ch2: TARGET(10) target=74.0°C

Already have parsed some data (battery is just guess, rest hex I do not know what they are)

Notify temperature, every 1-2 seconds

300f4c0c0009991007ffffffffffffffff480120 | bat=76% T1=99.9°C T2=100.7°C T3=--.-°C T4=--.-°C T5=--.-°C T6=--.-°C
300f4c0c0009991007ffffffffffffffff480120 | bat=76% T1=99.9°C T2=100.7°C T3=--.-°C T4=--.-°C T5=--.-°C T6=--.-°C

I will try to include more info, whenever I will discovery something more. But for initial support for reading temperature it should be enough.

Features like setting top/low/target temperature or alarms, type of unit I will keep for later

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions