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

Add Wine Enthusiast Beverage Center config (#4714)

* Add Wine Enthusiast Prestige S Beverage Center config

Adds device config for the Wine Enthusiast Prestige S 24" Undercounter
Smart Wi-Fi Beverage Center (product ID: qvcxc9c0wlkcuwto, category: jg).

Entities: climate (with C/F unit support), child lock, interior light
(white/yellow with brightness), lamp color select, ECO mode switch,
humidity sensor, filter days remaining sensor, filter reset interval
select, and fault binary sensor.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix failing CI checks for beverage center config

- Use existing translation_key 'thermostat' instead of non-existent 'wine_cellar'
- Use translation_key 'child_lock' instead of hardcoded name on lock entity
- Remove redundant 'Humidity' name that hides the class-based translation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address reviewer feedback on beverage center config

- Shorten model name to "Prestige S"
- Remove unnecessary translation_key from climate entity
- Merge ECO mode switch into climate as preset_mode
- Merge lamp color select into light as color_temp
- Remove unnecessary mapping from lamp_color_select
- Use translation_key: filter_life for filter sensor
- Remove redundant name from fault binary_sensor (class provides it)
- Add fault_code attribute to fault binary_sensor

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Move fault mask to sensor, fix mask value, add fault descriptions

- Move mask from fault_code to sensor DPS per reviewer feedback
- Fix mask from "3F" to "7F" (7 fault flags per Tuya spec)
- Add description DPS with human-readable fault names from device spec:
  NTC1_OVER, NTC1_LOW, NTC2_OVER, NTC2_LOW, NTC1_ERR, NTC2_ERR, DOOR_OPEN

Note: DOOR_OPEN (bit 6) is defined in the Tuya spec but doesn't seem
to trigger on the test unit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix (wineenthusiast_prestiges_beveragecenter): make descriptions human readable

- rename file to match convention

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Jason Rumney <make-all@users.noreply.github.com>
ScottHansma 5 дней назад
Родитель
Сommit
2275f4f805
1 измененных файлов с 170 добавлено и 0 удалено
  1. 170 0
      custom_components/tuya_local/devices/wineenthusiast_prestiges_beveragecenter.yaml

+ 170 - 0
custom_components/tuya_local/devices/wineenthusiast_prestiges_beveragecenter.yaml

@@ -0,0 +1,170 @@
+name: Beverage center
+products:
+  - id: qvcxc9c0wlkcuwto
+    manufacturer: Wine Enthusiast
+    model: Prestige S
+entities:
+  - entity: climate
+    dps:
+      - id: 1
+        type: boolean
+        name: hvac_mode
+        mapping:
+          - dps_val: true
+            value: cool
+          - dps_val: false
+            value: "off"
+      - id: 2
+        type: integer
+        name: temperature
+        range:
+          min: 1
+          max: 10
+        mapping:
+          - constraint: temperature_unit
+            conditions:
+              - dps_val: f
+                range:
+                  min: 34
+                  max: 50
+                value_redirect: temp_set_f
+      - id: 4
+        type: string
+        name: temperature_unit
+        mapping:
+          - dps_val: c
+            value: C
+          - dps_val: f
+            value: F
+      - id: 6
+        type: integer
+        name: current_temperature
+        mapping:
+          - constraint: temperature_unit
+            conditions:
+              - dps_val: f
+                value_redirect: current_temperature_f
+      - id: 102
+        type: boolean
+        name: preset_mode
+        mapping:
+          - dps_val: true
+            value: eco
+          - dps_val: false
+            value: none
+      - id: 103
+        type: integer
+        hidden: true
+        name: current_temperature_f
+      - id: 104
+        type: integer
+        hidden: true
+        name: temp_set_f
+        range:
+          min: 34
+          max: 50
+  - entity: lock
+    translation_key: child_lock
+    category: config
+    dps:
+      - id: 5
+        type: boolean
+        name: lock
+  - entity: light
+    name: Interior light
+    category: config
+    dps:
+      - id: 101
+        type: boolean
+        name: switch
+      - id: 13
+        type: integer
+        name: brightness
+        range:
+          min: 0
+          max: 100
+        mapping:
+          - constraint: color_temp
+            conditions:
+              - dps_val: yellow
+                value_redirect: yellow_brightness
+      - id: 109
+        type: string
+        name: color_temp
+        mapping:
+          - dps_val: white
+            value: 6500
+          - dps_val: yellow
+            value: 2700
+      - id: 110
+        type: integer
+        hidden: true
+        name: yellow_brightness
+        range:
+          min: 0
+          max: 100
+  - entity: sensor
+    class: humidity
+    category: diagnostic
+    dps:
+      - id: 7
+        type: integer
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: sensor
+    translation_key: filter_life
+    category: diagnostic
+    dps:
+      - id: 106
+        type: integer
+        name: sensor
+        unit: days
+        class: measurement
+  - entity: select
+    name: Filter reset interval
+    category: config
+    dps:
+      - id: 108
+        type: string
+        name: option
+        mapping:
+          - dps_val: M_6
+            value: 6 months
+          - dps_val: M_12
+            value: 12 months
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 10
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+        mask: "7F"
+      - id: 10
+        type: bitfield
+        name: fault_code
+      - id: 10
+        type: bitfield
+        name: description
+        mapping:
+          - dps_val: 0
+            value: ok
+          - dps_val: 1
+            value: Sensor 1 over temperature
+          - dps_val: 2
+            value: Sensor 1 under temperature
+          - dps_val: 4
+            value: Sensor 2 over temperature
+          - dps_val: 8
+            value: Sensor 2 under temperature
+          - dps_val: 16
+            value: Sensor 1 fault
+          - dps_val: 32
+            value: Sensor 2 fault
+          - dps_val: 64
+            value: Door open