Forráskód Böngészése

Add support for Inkbird INT-12-BW cooking probe thermometer (#4187)

* Add support for Inkbird INT-12-BW cooking probe thermometer

* fix linter and tests

* address pr feedback

* Add translation key for automatic sleep setting

To get correct options displayed

PR #4187

---------

Co-authored-by: jt <nhojt@gmail.com>
Co-authored-by: Jason Rumney <make-all@users.noreply.github.com>
JT 1 hónapja
szülő
commit
556cd4ac5c

+ 2 - 2
DEVICES.md

@@ -507,7 +507,7 @@
 - Goldair GGK1000 smart kettle
 - Götze and Jensen KT975K smart kettle
 - Homend Royaltea kettle
-- Inkbird iBBQ-4BW, iBBQ-4T, IBS-M1S, IBS-M2, IBT-26S cooking probe thermometers
+- Inkbird iBBQ-4BW, iBBQ-4T, IBS-M1S, IBS-M2, IBT-26S, INT-12-BW cooking probe thermometers
 - Inkbird ISC-007BW smoker fan controller
 - Inkbird sous vide cooker (also supports Silvercrest sous vide sticks)
 - Klarstein Amazonia dishwasher
@@ -737,7 +737,7 @@ of device.
 - Generic RGB only "Dreamlight" LED strip
 - Generic RGB only light bar - like the lights above, but no white light controls supported.
 - Unbranded 1CH dimmer module
-- Unbranded 4-in-1 10GHz motion sensor 
+- Unbranded 4-in-1 10GHz motion sensor
 - Unbranded dual dimmer module
 - A60 1800-2700K RGBWW light
 - Arknoah Aquarium lights

+ 1231 - 0
custom_components/tuya_local/devices/inkbird_int12bw_thermometer.yaml

@@ -0,0 +1,1231 @@
+name: BBQ thermometer
+products:
+  - id: lkrzzdaex96syshadps
+    model: INT-12-BW
+    manufacturer: Inkbird
+
+# Probe1 is the black probe
+# Probe2 is the white probe
+
+entities:
+  # Base unit
+
+  - entity: sensor
+    class: battery
+    dps:
+      - id: 103
+        type: base64
+        name: sensor
+        mask: "000000FF"
+        endianness: little
+        unit: "%"
+
+  - entity: select
+    translation_key: temperature_unit
+    category: config
+    dps:
+      - id: 101
+        type: string
+        name: option
+        mapping:
+          - dps_val: C
+            value: celsius
+          - dps_val: F
+            value: fahrenheit
+
+  # r/w in query things but doesn't turn off the base
+  # - entity: binary_sensor
+  #   name: Base Power
+  #   class: power
+  #   category: diagnostic
+  #   dps:
+  #     - id: 102
+  #       type: boolean
+  #       name: sensor
+
+  - entity: number
+    name: Screem brightness
+    category: config
+    dps:
+      - id: 104
+        type: integer
+        name: value
+        unit: "%"
+        range:
+          min: 1
+          max: 100
+
+  - entity: select
+    name: Alarm volume
+    category: config
+    dps:
+      - id: 106
+        type: string
+        name: option
+        mapping:
+          - dps_val: "EQJM"
+            value: "mute"
+          - dps_val: "WgGJ"
+            value: "low"
+          - dps_val: "WgKA"
+            value: "medium"
+          - dps_val: "WgOH"
+            value: "high"
+
+  - entity: select
+    name: Automatic sleep
+    translation_key: timer
+    category: config
+    dps:
+      - id: 137
+        type: string
+        name: option
+        mapping:
+          - dps_val: "ASwBPg=="
+            value: "5m"
+          - dps_val: "AVgCwQ=="
+            value: "10m"
+          - dps_val: "AYQDgA=="
+            value: "15m"
+          - dps_val: "AbAEOA=="
+            value: "20m"
+          - dps_val: "AQgH1g=="
+            value: "30m"
+          - dps_val: "ARAOFg=="
+            value: "1h"
+
+  # Probe1
+
+  - entity: sensor
+    name: Probe 1A temperature
+    class: temperature
+    hidden: unavailable
+    dps:
+      - id: 109
+        type: base64
+        name: sensor
+        class: measurement
+        optional: true
+        mask: "00000000000000FFFF0000"  # [7],[8]
+        endianness: little
+        mapping:
+          - scale: 10
+        unit: C
+      - id: 131  # device_state_flag1
+        type: bitfield
+        name: available
+        mapping:
+          - dps_val: 2  # bit1 -> "1InBox"
+            value: false
+          - value: true
+
+  - entity: sensor
+    name: Probe 1F temperature
+    class: temperature
+    hidden: unavailable
+    dps:
+      - id: 109
+        type: base64
+        name: sensor
+        class: measurement
+        optional: true
+        mask: "000000000000000000FFFF"  # [9],[10
+        endianness: little
+        mapping:
+          - scale: 10
+        unit: C
+      - id: 131  # device_state_flag1
+        type: bitfield
+        name: available
+        mapping:
+          - dps_val: 2  # bit1 -> "1InBox"
+            value: false
+          - value: true
+
+  # Writes full base64 payloads back to DPS 122 (no masking)
+  - entity: select
+    name: Probe 1F preset  # (full payload) Beef
+    category: config
+    dps:
+      - id: 122
+        type: string
+        name: option
+        mapping:
+          - dps_val: "EOgDAAAAApU="
+            value: "38°C / 100 °F"
+          - dps_val: "EEwEAAAAAs8="
+            value: "43°C / 110 °F"
+          - dps_val: "ELAEAAABAg4="
+            value: "49°C / 120 °F"
+          - dps_val: "EBQFAAADAjU="
+            value: "54°C / 130 °F"
+          - dps_val: "EHgFAAAFAu0="
+            value: "60°C / 140 °F"
+          - dps_val: "ENwFAAAHArQ="
+            value: "66°C / 150 °F"
+          - dps_val: "EEAGAAAKAmI="
+            value: "71°C / 160 °F"
+          - dps_val: "EKQGAAAKAmc="
+            value: "77°C / 170 °F"
+          - dps_val: "EAgHAAAKAjk="
+            value: "82°C / 180 °F"
+          - dps_val: "EGwHAAAKAtA="
+            value: "88°C / 190 °F"
+          - dps_val: "ENAHAAAKAnI="
+            value: "93°C / 200 °F"
+
+  # Any "old" value triggers
+  # this is a monotonic seconds counter in little‑endian (byte1=low, byte2=high)
+  - entity: button
+    name: Probe 1 alarm
+    category: config
+    dps:
+      - id: 126
+        type: base64
+        name: button
+        mapping:
+          - dps_val: "Ap1cMmmeXDJpEw"
+            value: true
+
+  - entity: button
+    name: Probe 1 alarm dismiss
+    category: config
+    dps:
+      - id: 136
+        type: base64
+        name: button
+        mapping:
+          - dps_val: "MVVua25vd24"  # Base64 for ASCII "1Unknown"
+            value: true
+
+  # Probe2
+
+  # No ambient sensor
+  # - entity: sensor
+  #   name: Probe 2A temperature
+  #   class: temperature
+  #   hidden: unavailable
+  #   dps:
+  #     - id: 109
+  #       type: base64
+  #       name: sensor
+  #       class: measurement
+  #       optional: true
+  #       mask: "0000FFFF00000000000000" # [2],[3]
+  #       endianness: little
+  #       unit: C
+  #     - id: 131 # device_state_flag1
+  #       type: bitfield
+  #       name: available
+  #       mapping:
+  #         - dps_val: 131072 # bit17 -> "2InBox"
+  #           value: false
+  #         - value: true
+
+  - entity: sensor
+    name: Probe 2F temperature
+    class: temperature
+    hidden: unavailable
+    dps:
+      - id: 109
+        type: base64
+        name: sensor
+        class: measurement
+        optional: true
+        mask: "00000000FFFF0000000000"  # [4],[5]
+        endianness: little
+        mapping:
+          - scale: 10
+        unit: C
+      - id: 131  # device_state_flag1
+        type: bitfield
+        name: available
+        mapping:
+          - dps_val: 131072  # bit17 -> "2InBox"
+            value: false
+          - value: true
+
+  # Writes full base64 payloads back to DPS 123 (no masking)
+  - entity: select
+    name: Probe 2F preset  # (full payload) Beef
+    category: config
+    dps:
+      - id: 123
+        type: string
+        name: option
+        mapping:
+          - dps_val: "EOgDAAAAApU="
+            value: "38°C / 100 °F"
+          - dps_val: "EEwEAAAAAs8="
+            value: "43°C / 110 °F"
+          - dps_val: "ELAEAAABAg4="
+            value: "49°C / 120 °F"
+          - dps_val: "EBQFAAADAjU="
+            value: "54°C / 130 °F"
+          - dps_val: "EHgFAAAFAu0="
+            value: "60°C / 140 °F"
+          - dps_val: "ENwFAAAHArQ="
+            value: "66°C / 150 °F"
+          - dps_val: "EEAGAAAKAmI="
+            value: "71°C / 160 °F"
+          - dps_val: "EKQGAAAKAmc="
+            value: "77°C / 170 °F"
+          - dps_val: "EAgHAAAKAjk="
+            value: "82°C / 180 °F"
+          - dps_val: "EGwHAAAKAtA="
+            value: "88°C / 190 °F"
+          - dps_val: "ENAHAAAKAnI="
+            value: "93°C / 200 °F"
+      - id: 131
+        type: bitfield
+        name: available
+
+  # Any "old" value triggers
+  # this is a monotonic seconds counter in little‑endian (byte1=low, byte2=high)
+  - entity: button
+    name: Probe 2 alarm
+    category: config
+    dps:
+      - id: 127
+        type: base64
+        name: button
+        mapping:
+          - dps_val: "Ap1cMmmeXDJpEw"
+            value: true
+
+  - entity: button
+    name: Probe 2 alarm dismiss
+    category: config
+    dps:
+      - id: 136
+        type: base64
+        name: button
+        mapping:
+          - dps_val: "MlVua25vd24"  # Base64 for ASCII "2Unknown"
+            value: true
+
+  - entity: select
+    name: Probe pre-alerts (1 / 2)
+    category: config
+    dps:
+      # Write exact token to DPS 116
+      - id: 116
+        type: string
+        name: option
+        mapping:
+          #  No alerts
+          - dps_val: "AwAAAACm"
+            value: "Probe1 0 °C / 2 0 °C"
+
+          #  Probe1 only
+          - dps_val: "AwkAAAAA"
+            value: "Probe1 5 °C / Probe2 0 °C"
+          - dps_val: "AxIAAADt"
+            value: "Probe1 10 °C / Probe2 0 °C"
+          - dps_val: "AyQAAAAw"
+            value: "Probe1 20 °C / Probe2 0 °C"
+          - dps_val: "AzYAAAB7"
+            value: "Probe1 30 °C / Probe2 0 °C"
+
+          #  Probe2 only
+          - dps_val: "AwkJAAA6"
+            value: "Probe1 0 °C / Probe2 5 °C"
+          - dps_val: "AxIJAADX"
+            value: "Probe1 0 °C / Probe2 10 °C"
+          - dps_val: "AyQJAAAK"
+            value: "Probe1 0 °C / Probe2 20 °C"
+          - dps_val: "AzYJAABB"
+            value: "Probe1 0 °C / Probe2 30 °C"
+
+          #  Both probes: Probe1 prefix + Probe2 suffix
+          # Probe1 5 °C + Probe2 X
+          - dps_val: "AwkJAAA6"
+            value: "Probe1 5 °C / Probe2 5 °C"
+          - dps_val: "AwkJAADX"
+            value: "Probe1 5 °C / Probe2 10 °C"
+          - dps_val: "AwkJAAAK"
+            value: "Probe1 5 °C / Probe2 20 °C"
+          - dps_val: "AwkJAABB"
+            value: "Probe1 5 °C / Probe2 30 °C"
+
+          # Probe1 10 °C + Probe2 X
+          - dps_val: "AxIJAAA6"
+            value: "Probe1 10 °C / Probe2 5 °C"
+          - dps_val: "AxIJAADX"
+            value: "Probe1 10 °C / Probe2 10 °C"
+          - dps_val: "AxIJAAAK"
+            value: "Probe1 10 °C / Probe2 20 °C"
+          - dps_val: "AxIJAABB"
+            value: "Probe1 10 °C / Probe2 30 °C"
+
+          # Probe1 20 °C + Probe2 X
+          - dps_val: "AyQJAAA6"
+            value: "Probe1 20 °C / Probe2 5 °C"
+          - dps_val: "AyQJAADX"
+            value: "Probe1 20 °C / Probe2 10 °C"
+          - dps_val: "AyQJAAAK"
+            value: "Probe1 20 °C / Probe2 20 °C"
+          - dps_val: "AyQJAABB"
+            value: "Probe1 20 °C / Probe2 30 °C"
+
+          # Probe1 30 °C + Probe2 X
+          - dps_val: "AzYJAAA6"
+            value: "Probe1 30 °C / Probe2 5 °C"
+          - dps_val: "AzYJAADX"
+            value: "Probe1 30 °C / Probe2 10 °C"
+          - dps_val: "AzYJAAAK"
+            value: "Probe1 30 °C / Probe2 20 °C"
+          - dps_val: "AzYJAABB"
+            value: "Probe1 30 °C / Probe2 30 °C"
+
+  # Diagnostics
+
+  - entity: sensor
+    name: Probe temps
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 109
+        type: base64
+        name: sensor
+
+  - entity: sensor
+    name: Temperature compensation
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 110
+        type: base64
+        name: sensor
+
+  - entity: sensor
+    name: Dismiss low battery alert
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 111
+        type: base64
+        name: sensor
+
+  - entity: sensor
+    name: Device internal temperature
+    class: temperature
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 114
+        type: integer
+        name: sensor
+        class: measurement
+        mapping:
+          - scale: 10
+        unit: F  # set to F but is actually C
+
+  - entity: sensor
+    name: Pre alert value  # for temp preset pre-alert
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 116
+        type: base64
+        name: sensor
+
+  - entity: sensor
+    name: Preset alert state
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 107
+        type: base64
+        name: sensor
+
+  - entity: sensor
+    name: Probe 1 timer
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 126
+        type: base64
+        name: sensor
+
+  - entity: sensor
+    name: Probe 2 timer
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 127
+        type: base64
+        name: sensor
+
+  - entity: sensor
+    name: Timer running state
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 130
+        type: base64
+        name: sensor
+
+  - entity: binary_sensor
+    name: Probe 1 connection
+    class: connectivity
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 1
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1 in box
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 2
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1 charge
+    class: power
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 4
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1F low temp alert
+    class: cold
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 8
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1F high temp alert
+    class: heat
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 16
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1F low temp alert pending
+    class: problem
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 32
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1F high temp alert pending
+    class: problem
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 64
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1F temp exceed max
+    class: heat
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 128
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1F temp exceed min
+    class: cold
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 256
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1F pre alert state
+    class: safety
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 512
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1A temp exceed max
+    class: heat
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 1024
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1A temp exceed min
+    class: cold
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 2048
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1 paired
+    class: connectivity
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 4096
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1 request paired
+    class: connectivity
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 8192
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1 low battery alert
+    class: problem
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 16384
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Bit15
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 32768
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 connected
+    class: connectivity
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 65536
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 in box
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 131072
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 charge
+    class: power
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 262144
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 low temp alert
+    class: cold
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 524288
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 high temp alert
+    class: heat
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 1048576
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 low temp alert pending
+    class: problem
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 2097152
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 high temp alert pending
+    class: problem
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 4194304
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2F temp exceed max
+    class: heat
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 8388608
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2F temp exceed min
+    class: cold
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 16777216
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2F prealert state
+    class: safety
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 33554432
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2A temp exceed max
+    class: heat
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 67108864
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2A temp exceed min
+    class: cold
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 134217728
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 paired
+    class: connectivity
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 268435456
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 request paired
+    class: connectivity
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 131
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 536870912
+            value: true
+          - default: true
+
+  - entity: sensor
+    name: Alert status
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 132
+        type: base64
+        name: sensor
+
+  - entity: binary_sensor
+    name: Probe 2 low battery alert
+    class: problem
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 1
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Bit 31
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 2
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: USB
+    class: power
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 4
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Base power  # Bit33 turns off when base is off vs 102 that doesn't
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 8
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Bit 34
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 16
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Bit 35
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 32
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Bit 36
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 64
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Bit 37
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 128
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: BLE connection
+    class: connectivity
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 256
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: BLE request pairing
+    class: connectivity
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 512
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: BLE authorize
+    class: connectivity
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 1024
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: WiFi reset
+    class: problem
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 2048
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Timestamp service
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 4096
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1 timer alert
+    class: safety
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 8192
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 timer alert
+    class: safety
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 16384
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 3 timer alert
+    class: safety
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 32768
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 4 timer alert
+    class: safety
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 65536
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 1 timer state
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 131072
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 2 timer state
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 262144
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 3 timer state
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 524288
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Probe 4 timer state
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 1048576
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Device body high temp alert
+    class: heat
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 2097152
+            value: true
+          - value: false
+
+  - entity: binary_sensor
+    name: Device body low temp alert
+    class: cold
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 133
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 4194304
+            value: true
+          - value: false
+
+  - entity: sensor
+    name: Device name
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 134
+        type: base64
+        name: sensor
+
+  - entity: sensor
+    name: Device other info  # Only set when base is off (likely saved state)
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 135
+        type: base64
+        name: sensor
+
+  - entity: sensor
+    name: Dismiss pause alerts
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 136
+        type: base64
+        name: sensor