Skip to main content

chefiq-ble

Passive Bluetooth Low Energy advertisement parser for Chef iQ wireless cooking probes (CQ50 / CQ60), built for use with the Home Assistant bluetooth passive update framework.

The probe broadcasts everything needed to read temperatures over plain BLE advertisements - no connection, no cloud, no base/hub required.

Install

pip install chefiq-ble

Usage

from chefiq_ble import ChefIqBluetoothDeviceData

device = ChefIqBluetoothDeviceData()
# service_info is a BluetoothServiceInfo (or BluetoothServiceInfoBleak)
update = device.update(service_info)
for key, value in update.entity_values.items():
    print(key.key, value.native_value)

What it parses

A Chef iQ probe rotates three advertisement packet types in its manufacturer specific data (company id 0x05CD). The low nibble of the first byte selects the type; the remaining header nibbles encode a major.minor.patch advertisement protocol version.

sensor unit source
food_temperature °C temperature packet (food core)
ambient_temperature °C temperature packet
probe_tip_1..4_temperature °C temperature packet (V2: 3 tips, V3: 4 tips)
battery_percent % status packet (V3) / temperature packet (V2, legacy)
soc_temperature °C status packet (V3) / temperature packet (V2, legacy)

All 16-bit temperatures are signed, little-endian, divided by 10 (Celsius).

Identifying a probe

The manufacturer id alone is not proof of a Chef iQ probe. Some vendors put a sensor reading where the Bluetooth company id belongs: an Inkbird IBS-TH broadcasts its temperature x100 there, so at exactly 14.85 °C it shows up with "manufacturer id" 0x05CD (home-assistant/core#188557). The parser therefore accepts an advertisement, and supported() reports a probe, only when the protocol major version is a known one (2 to 5) and the payload matches the documented layout for its packet type:

  • a name packet carries a 12-byte, NUL-padded, printable name, or the device's local name is a known probe model (probes advertise their model, e.g. CQ60, as the BLE local name);
  • a temperature packet carries every reading of its layout, each either a plausible Celsius value or the firmware's "no reading" sentinel (raw values of 32000 and above; a CQ60 sends 0x7FFF for an empty ring);
  • a status packet (and a legacy temperature packet) carries the probe's own MAC address, which must match the advertising address.

Any single real packet passes, so discovery works whichever of the three packet types is seen first. Rejected advertisements are logged at debug level.

Advertisement formats

Three temperature-payload layouts are supported, selected by the protocol major version carried in the advertisement:

protocol major layout status packet
5 V3 - verified against a CQ60 (protocol version 5.0.0) MAC, battery, SoC
4 V2 - 3 tips, battery and SoC inline MAC only
2, 3 legacy - MAC, SoC, food and ambient inline; battery from 3.x none

V2 and legacy are supported from the protocol description and are not yet verified against real hardware; captures from a CQ50 or an older-firmware probe are welcome to confirm the layouts and the version boundaries. Other major versions are not known probe protocols and are ignored.

This library decodes the probe's public BLE advertisements for interoperability and builds on the earlier Chef iQ work in ble_monitor. The byte layouts are documented in parser.py.

License

MIT

Metadata

Release files for chefiq-ble 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chefiq-ble 1.1.0
File Size Uploaded Provenance Actions
chefiq_ble-1.1.0.tar.gz 12.8 kB With provenance Details for chefiq_ble-1.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for chefiq-ble 1.1.0
File Interpreter ABI Platform Actions
chefiq_ble-1.1.0-py3-none-any.whl Python 3 none any Details for chefiq_ble-1.1.0-py3-none-any.whl

Total release size: 22.4 kB

Release files / chefiq_ble-1.1.0.tar.gz

Download URL chefiq_ble-1.1.0.tar.gz
Size 12.8 kB
Tags Source
SHA-256 checksum
How to use checksums
76a869ea8611fc8dad2c4f01950ba807eb0f0203529daca8616b64d499661e73
BLAKE2b-256 checksum
How to use checksums
b158b8e296ffe9cae0316a86e0935acef0247a7689edede669f41938dc2d57c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / chefiq_ble-1.1.0-py3-none-any.whl

Download URL chefiq_ble-1.1.0-py3-none-any.whl
Size 9.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c7a51f04350638eee833443f970e5efe32b2885c84860583777d506bb011b54a
BLAKE2b-256 checksum
How to use checksums
c50b159f8f91b773e07c543141c87899fc7f5e534c9f6c00a58ab4306ee7f0fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Security for chefiq-ble 1.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for chefiq_ble-1.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page