Просмотр исходного кода

Add support for new variant of Inkbird iBBQ-4T

Issue #750

The v2.x variant of iBBQ-4T has all 4 probe measurements combined into
a single DP, which is little endian and base64 encoded, in the same
format as the Inkbird IBS-M1S probe hub.

Previous recorded product id came from the same user that reported the
original config not working, so removed the id from the v1 config
pending more info from the original reporter or someone else with that
variant.
Jason Rumney 2 лет назад
Родитель
Сommit
c9573d4ae6

+ 1 - 0
ACKNOWLEDGEMENTS.md

@@ -338,3 +338,4 @@ Further device support has been made with the assistance of users.  Please consi
 - [thugseus](https://github.com/thugseus) for assistance with support for HU06 Bluetooth smart locks.
 - [jaydensmith](https://github.com/jaydensmith) for assistance with support for Cadence aroma diffusers.
 - [davidsch1992](https://github.com/davidsch1992) for contributing support for Lyfco OL-A0012 air conditioners.
+- [lhassel](https://github.com/lhassel) for assisting with support for a variant of Inkbird iBBQ-4T thermometers with measurements combined into a single dp similar to IBS-M1S.

+ 1 - 1
DEVICES.md

@@ -215,7 +215,7 @@
 - Anko 1.7L smart kettle
 - Setti+ KT950W smart kettle
 - Inkbird iBBQ-4BW cooking probe thermometer
-- Inkbird iBBQ-4T cooking probe thermometer
+- Inkbird iBBQ-4T cooking probe thermometer (separate and combined measurement variants)
 - Inkbird IBS-M1S temperature probe hub
 - Inkbird sous vide cooker (also supports Silvercrest sous vide sticks)
 - Kogan glass 1.7L smart kettle

+ 0 - 3
custom_components/tuya_local/devices/inkbird_bbq4t_thermometer.yaml

@@ -1,7 +1,4 @@
 name: Inkbird BBQ thermometer
-products:
-  - id: wavwesi8clrfwx68
-    name: IBBQ-4T v2.x
 primary_entity:
   entity: sensor
   name: Temperature probe 1

+ 202 - 0
custom_components/tuya_local/devices/inkbird_bbq4t_thermometerv2.yaml

@@ -0,0 +1,202 @@
+name: BBQ thermometer
+products:
+  - id: wavwesi8clrfwx68
+    name: Inkbird IBBQ-4T v2.x
+primary_entity:
+  entity: sensor
+  name: Temperature probe 1
+  class: temperature
+  dps:
+    - id: 107
+      type: base64
+      name: sensor
+      class: measurement
+      optional: true
+      mapping:
+        - mask: FFFF000000000000
+          endianness: little
+          scale: 100
+      unit: F
+    - id: 111
+      type: bitfield
+      name: fault_code
+secondary_entities:
+  - entity: sensor
+    name: Temperature probe 2
+    class: temperature
+    dps:
+      - id: 107
+        type: integer
+        name: sensor
+        class: measurement
+        optional: true
+        mapping:
+          - scale: 100
+            mask: 0000FFFF00000000
+            endianness: little
+        unit: F
+  - entity: sensor
+    name: Temperature probe 3
+    class: temperature
+    dps:
+      - id: 107
+        type: integer
+        name: sensor
+        class: measurement
+        optional: true
+        mapping:
+          - scale: 100
+            mask: 00000000FFFF0000
+            endianness: little
+        unit: F
+  - entity: sensor
+    name: Temperature probe 4
+    class: temperature
+    dps:
+      - id: 107
+        type: integer
+        name: sensor
+        class: measurement
+        optional: true
+        mapping:
+          - scale: 100
+            mask: 000000000000FFFF
+            endianness: little
+        unit: F
+  - entity: binary_sensor
+    class: power
+    category: diagnostics
+    dps:
+      - id: 1
+        type: boolean
+        name: sensor
+  - entity: binary_sensor
+    name: Fault
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 111
+        type: bitfield
+        name: sensor
+        optional: true
+        mapping:
+          - dps_val: 0
+            value: false
+          - dps_val: null
+            value: false
+          - value: true
+  - entity: select
+    name: Display unit
+    icon: "mdi:temperature-celsius"
+    category: config
+    dps:
+      - id: 19
+        type: string
+        name: option
+        mapping:
+          - dps_val: f
+            value: Fahrenheit
+          - dps_val: c
+            value: Celsius
+  - entity: sensor
+    class: battery
+    category: diagnostic
+    dps:
+      - id: 101
+        type: integer
+        name: sensor
+        unit: "%"
+  - entity: number
+    name: Screen timeout
+    category: config
+    icon: "mdi:camera-timer"
+    dps:
+      - id: 102
+        type: integer
+        name: value
+        unit: s
+        range:
+          min: 0
+          max: 3600
+  - entity: switch
+    name: Alarm
+    category: config
+    dps:
+      - id: 104
+        type: boolean
+        name: switch
+  - entity: sensor
+    name: Alarm state
+    category: diagnostic
+    dps:
+      - id: 105
+        type: integer
+        name: sensor
+  - entity: number
+    name: Preset temperature 1
+    category: config
+    icon: "mdi:thermometer-alert"
+    dps:
+      - id: 106
+        type: base64
+        name: value
+        optional: true
+        unit: F
+        range:
+          min: 0
+          max: 50000
+        mapping:
+          - mask: FFFF000000000000
+            endianness: little
+            scale: 100
+  - entity: number
+    name: Preset temperature 2
+    category: config
+    icon: "mdi:thermometer-alert"
+    dps:
+      - id: 106
+        type: base64
+        name: value
+        optional: true
+        unit: F
+        range:
+          min: 0
+          max: 50000
+        mapping:
+          - mask: 0000FFFF00000000
+            endianness: little
+            scale: 100
+  - entity: number
+    name: Preset temperature 3
+    category: config
+    icon: "mdi:thermometer-alert"
+    dps:
+      - id: 106
+        type: base64
+        name: value
+        optional: true
+        unit: F
+        range:
+          min: 0
+          max: 50000
+        mapping:
+          - mask: 00000000FFFF0000
+            endianness: little
+            scale: 100
+  - entity: number
+    name: Preset temperature 4
+    category: config
+    icon: "mdi:thermometer-alert"
+    dps:
+      - id: 106
+        type: base64
+        name: value
+        optional: true
+        unit: F
+        range:
+          min: 0
+          max: 50000
+        mapping:
+          - mask: 000000000000FFFF
+            endianness: little
+            scale: 100