# Supported devices

`inkbird-ble` recognises the following INKBIRD models. Each one is exposed as a
member of the `Model` enum (importable from `inkbird_ble`); pass it to
`INKBIRDBluetoothDeviceData(...)` when you know the model up front, otherwise
the parser detects it from the first advertisement (passive devices) or you
must supply it (notify-only devices).

| Model                   | Family                | Transport          | Detection                          | Sensors                                                             |
| ----------------------- | --------------------- | ------------------ | ---------------------------------- | ------------------------------------------------------------------- |
| `IBS-TH`                | Hygrometer            | advertisement      | local name `sps`                   | temperature, humidity, battery                                      |
| `IBS-TH2` / `P01B`      | Hygrometer            | advertisement      | local name `tps`                   | temperature, humidity, battery                                      |
| `IBS-P02B`              | Pool / probe          | advertisement only | local name `ibs-p02b`              | temperature, battery                                                |
| `ITH-11-B`              | Hygrometer            | advertisement      | local name `ith-11-b`              | temperature, humidity, battery                                      |
| `ITH-13-B`              | Hygrometer            | advertisement      | local name `ith-13-b`              | temperature, humidity, battery                                      |
| `ITH-21-B`              | Hygrometer            | advertisement      | local name `ith-21-b`              | temperature, humidity, battery                                      |
| `IAM-T1`                | Indoor air quality    | GATT notify        | manufacturer-data `AC-6200` prefix | temperature, humidity, CO₂, atmospheric pressure                    |
| `IAM-T2`                | Indoor air quality    | advertisement      | 17-byte payload + MAC prefix       | temperature, humidity, CO₂                                          |
| `IHT-2PB`               | 3-probe thermometer   | GATT notify        | local name `Ink@IHT-2PB#…`         | temperature × 3 probes                                              |
| `INT-11P-B`             | Connected BBQ probe   | GATT poll          | local name `int-11p-b`             | probe temperature, ambient temperature, probe battery, case battery |
| `iBBQ-1`                | BBQ probe (1 channel) | advertisement      | name contains `xbbq` / `ibbq`      | temperature × 1                                                     |
| `iBBQ-2`                | BBQ probe (2 channel) | advertisement      | name contains `xbbq` / `ibbq`      | temperature × 2                                                     |
| `iBBQ-4`                | BBQ probe (4 channel) | advertisement      | name contains `xbbq` / `ibbq`      | temperature × 4                                                     |
| `iBBQ-6`                | BBQ probe (6 channel) | advertisement      | name contains `xbbq` / `ibbq`      | temperature × 6                                                     |
| `Generic 18 byte model` | Unknown hygrometer    | advertisement      | 18-byte payload + service UUID     | temperature, humidity, battery                                      |

## Transport guide

- **advertisement** — passive: feed every `service_info` to
  `INKBIRDBluetoothDeviceData.update()` and it returns a `SensorUpdate`. No
  connection is opened. The `IBS-TH` family, the eighteen-byte hygrometers and
  the iBBQ probes work this way; `IAM-T2` is advertisement-only as well.
- **advertisement only** — the device cannot be polled or notified safely
  (`IBS-P02B` wedges its firmware until a battery reset if you open a GATT
  connection, see issue [#116]). All fields are already in the broadcast.
- **GATT poll** — the device exposes a readable characteristic; call
  `async_poll(ble_device)` when `poll_needed()` returns true. `INT-11P-B`
  carries _no_ readings in its advertisement, so it must be polled.
- **GATT notify** — the device pushes readings over a notify characteristic;
  call `async_start(service_info, ble_device)` to subscribe. `IAM-T1` and
  `IHT-2PB` use this transport. `IHT-2PB` additionally requires two
  activation writes (handled transparently) before it starts streaming.

## Not supported

A few INKBIRD product lines that come up in the issue tracker are out of
scope for this library:

- **Sous-vide cookers** (`ISV-100W`, `ISV-100W 2.0`, `ISV-200W`, `ISV-300W`,
  `ISV-101W`). These are **Wi-Fi / Tuya** devices, not BLE, so they cannot be
  parsed here.

If you have a device that looks like it should work but is not detected,
open an issue with a BLE advertisement capture (e.g. from `bluetoothctl` or
`nrfConnect`) so the model can be reverse-engineered.

[#116]: https://github.com/Bluetooth-Devices/inkbird-ble/issues/116
