Browse Source

feat(devices): add Coleman-Mach RVP 9420 thermostat

Issue #5847
Jason Rumney 8 hours ago
parent
commit
6e1b1a66fa
25 changed files with 878 additions and 23 deletions
  1. 1 0
      DEVICES.md
  2. 693 0
      custom_components/tuya_local/devices/colemanmach_rvp9420_thermostat.yaml
  3. 8 1
      custom_components/tuya_local/translations/bg.json
  4. 8 1
      custom_components/tuya_local/translations/ca.json
  5. 8 1
      custom_components/tuya_local/translations/cs.json
  6. 8 1
      custom_components/tuya_local/translations/de.json
  7. 8 1
      custom_components/tuya_local/translations/el.json
  8. 8 1
      custom_components/tuya_local/translations/en.json
  9. 8 1
      custom_components/tuya_local/translations/es.json
  10. 8 1
      custom_components/tuya_local/translations/fr.json
  11. 8 1
      custom_components/tuya_local/translations/hu.json
  12. 8 1
      custom_components/tuya_local/translations/id.json
  13. 8 1
      custom_components/tuya_local/translations/it.json
  14. 8 1
      custom_components/tuya_local/translations/ja.json
  15. 8 1
      custom_components/tuya_local/translations/no-NB.json
  16. 8 1
      custom_components/tuya_local/translations/pl.json
  17. 8 1
      custom_components/tuya_local/translations/pt-BR.json
  18. 8 1
      custom_components/tuya_local/translations/pt-PT.json
  19. 8 1
      custom_components/tuya_local/translations/ro.json
  20. 8 1
      custom_components/tuya_local/translations/ru.json
  21. 8 1
      custom_components/tuya_local/translations/sv.json
  22. 8 1
      custom_components/tuya_local/translations/uk.json
  23. 8 1
      custom_components/tuya_local/translations/ur.json
  24. 8 1
      custom_components/tuya_local/translations/zh-Hans.json
  25. 8 1
      custom_components/tuya_local/translations/zh-Hant.json

+ 1 - 0
DEVICES.md

@@ -288,6 +288,7 @@
 - Beok TR9B _(rebadged as Vancoo and perhaps others)_, TR9B-AC2 thermostats
 - BHT-002-GALW and GABW thermostats _(rebadged as many different brands)_
 - Brade MC6 thermostat _(rebadged as many different brands)_
+- Coleman-Mach RVP 9240-391 thermostat
 - Computherm Q20 thermostat
 - Dr Heater DR-008 electric radiant floor thermostat
 - Drexma WiStat ET7AW thermostat

+ 693 - 0
custom_components/tuya_local/devices/colemanmach_rvp9420_thermostat.yaml

@@ -0,0 +1,693 @@
+name: Thermostat
+products:
+  - id: iarskv8rllonqsvo
+    manufacturer: Coleman-Mach
+    model: RVP 9420-391
+entities:
+  - entity: climate
+    translation_key: thermostat
+    dps:
+      - id: 2
+        type: string
+        name: hvac_mode
+        mapping:
+          - dps_val: "auto"
+            value: heat_cool
+          - dps_val: heat
+            value: heat
+          - dps_val: cool
+            value: cool
+          - dps_val: emer
+            value: heat
+            hidden: true
+          - dps_val: "off"
+            value: "off"
+          - dps_val: auto_heat
+            value: heat
+            hidden: true
+          - dps_val: auto_cool
+            value: cool
+            hidden: true
+      - id: 23
+        type: string
+        name: temperature_unit
+        mapping:
+          - dps_val: f
+            value: F
+          - value: C
+      - id: 101
+        type: string
+        name: preset_mode
+        mapping:
+          - dps_val: com
+            value: comfort
+          - dps_val: eco
+            value: eco
+          - dps_val: sch
+            value: program
+      - id: 102
+        type: string
+        name: fan_mode
+        mapping:
+          - dps_val: auto
+            value: auto
+          - dps_val: "on"
+            value: "on"
+          - dps_val: low
+            value: low
+          - dps_val: med
+            value: medium
+          - dps_val: high
+            value: high
+      - id: 131
+        type: base64
+        optional: true
+        mask: "FFFF0000000000000000"
+        name: current_temperature
+      - id: 103
+        type: integer
+        name: temperature
+        range:
+          min: 0
+          max: 370
+        mapping:
+          - constraint: temperature_unit
+            conditions:
+              - dps_val: c
+                scale: 10
+                step: 5
+                value_redirect: temp_c
+              - dps_val: f
+                value_redirect: temp_f
+      - id: 103
+        type: integer
+        name: temp_c
+        range:
+          min: 0
+          max: 370
+        mapping:
+          - scale: 10
+            step: 5
+            constraint: hvac_mode
+            conditions:
+              - dps_val: [heat, auto_heat, emer]
+                value_redirect: heat_temp_c
+                range:
+                  min: 0
+                  max: 320
+      - id: 103
+        type: integer
+        name: temp_f
+        range:
+          min: 32
+          max: 99
+        mapping:
+          - constraint: hvac_mode
+            conditions:
+              - dps_val: [heat, auto_heat, emer]
+                value_redirect: heat_temp_f
+                range:
+                  min: 32
+                  max: 90
+      - id: 104
+        type: integer
+        name: heat_temp_c
+        mapping:
+          - scale: 10
+            step: 5
+        range:
+          min: 0
+          max: 320
+      - id: 104
+        type: integer
+        name: heat_temp_f
+        range:
+          min: 32
+          max: 90
+      - id: 118
+        type: base64
+        optional: true
+        mask: "00000300"
+        name: hvac_action
+        mapping:
+          - dps_val: 1
+            value: cooling
+          - dps_val: 2
+            value: heating
+          - dps_val: 0
+            value: idle
+          - value: null
+  - entity: select
+    translation_key: temperature_unit
+    category: config
+    dps:
+      - id: 23
+        type: string
+        name: option
+        mapping:
+          - dps_val: c
+            value: celsius
+          - dps_val: f
+            value: fahrenheit
+  - entity: number
+    translation_key: temperature_calibration
+    class: temperature_delta
+    category: config
+    dps:
+      - id: 27
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: -45
+          max: 45
+        mapping:
+          - scale: 10
+            step: 5
+  - entity: button
+    translation_key: factory_reset
+    category: config
+    hidden: true
+    dps:
+      - id: 39
+        type: boolean
+        optional: true
+        name: button
+  - entity: select
+    name: Schedule days
+    icon: "mdi:calendar-week"
+    category: config
+    dps:
+      - id: 105
+        type: string
+        name: option
+        mapping:
+          - dps_val: 7_4
+            value: Daily
+          - dps_val: 5_2
+            value: Weekdays+Weekend
+          - dps_val: 5_1_1
+            value: Weekdays+Sat+Sun
+  - entity: select
+    name: System type
+    category: config
+    dps:
+      - id: 106
+        type: string
+        name: option
+        mapping:
+          - dps_val: 1H1C_C
+            value: 1H1C_C
+          - dps_val: 1H1C_HP
+            value: 1H1C_HP
+          - dps_val: HEAT_NO_FAN_C
+            value: HEAT_NO_FAN_C
+          - dps_val: HEAT_WITH_FAN_C
+            value: HEAT_WITH_FAN_C
+          - dps_val: HEAT_VAVLE_C
+            value: HEAT_VALVE_C
+          - dps_val: COOL_C
+            value: COOL_C
+          - dps_val: 2H1C_AUX_HP
+            value: 2H1C_AUX_HP
+          - dps_val: 2H1C_EMER_HP
+            value: 2H1C_EMER_HP
+          - dps_val: 1H1C_1S_FUEL
+            value: 1H1C_1S_FUEL
+          - dps_val: 2H2C_C
+            value: 2H2C_C
+          - dps_val: 2H1C_C
+            value: 2H1C_C
+          - dps_val: 1H2C_C
+            value: 1H2C_C
+          - dps_val: 2H2C_HP
+            value: 2H2C_HP
+          - dps_val: 3H2C_AUX_HP
+            value: 3H2C_AUX_HP
+          - dps_val: 3H2C_EMER_HP
+            value: 3H2C_EMER_HP
+          - dps_val: 4H2C_A_E_HP
+            value: 4H2C_A_E_HP
+          - dps_val: 2H2C_1S_D_FUEL
+            value: 2H2C_IS_D_FUEL
+          - dps_val: 2H2C_2S_D_FUEL
+            value: 2H2C_2S_D_FUEL
+          - dps_val: FC_WITH_3
+            value: FC_WITH_3
+          - dps_val: FC_WITH_3_AC
+            value: FC_WITH_3_AC
+          - dps_val: FC_WITH_3_ERV
+            value: FC_WITH_3_ERV
+          - dps_val: FC_WITH_3_E_A
+            value: FC_WITH_3_E_A
+          - dps_val: 1H1C_HP_WITH_E
+            value: 1H1C_HP_WITH_E
+          - dps_val: 2H1C_HP_WITH_EA
+            value: 2H1C_HP_WITH_EA
+          - dps_val: 1H1C_HP_3
+            value: 1H1C_HP_3
+          - dps_val: 1H1C_C_3
+            value: 1H1C_C_3
+  - entity: text
+    name: ERV mode
+    category: config
+    icon: "mdi:hvac"
+    hidden: true
+    dps:
+      - id: 107
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    translation_key: schedule
+    category: config
+    hidden: true
+    dps:
+      - id: 108
+        type: base64
+        optional: true
+        name: value
+  - entity: select
+    name: Fan type
+    icon: "mdi:fan"
+    category: config
+    dps:
+      - id: 109
+        type: string
+        name: option
+        mapping:
+          - dps_val: gas_oil
+            value: Gas / Oil
+          - dps_val: electric
+            value: Electric
+  - entity: select
+    name: Valve direction
+    icon: "mdi:valve"
+    category: config
+    dps:
+      - id: 110
+        type: string
+        name: option
+        mapping:
+          - dps_val: cool
+            value: Cool
+          - dps_val: heat
+            value: Heat
+  - entity: select
+    name: Lock screen
+    icon: "mdi:television-shimmer"
+    category: config
+    dps:
+      - id: 111
+        type: string
+        name: option
+        mapping:
+          - dps_val: temp
+            value: Temperature
+          - dps_val: main_menu
+            value: Main menu
+  - entity: select
+    name: Auto mode
+    icon: "mdi:auto-mode"
+    category: config
+    dps:
+      - id: 112
+        type: string
+        name: option
+        mapping:
+          - dps_val: auto_changeover
+            value: Auto changeover
+          - dps_val: manual_changeover
+            value: Manual changeover
+  - entity: number
+    name: Temperature hysteresis
+    category: config
+    class: temperature_delta
+    dps:
+      - id: 113
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: 5
+          max: 50
+        mapping:
+          - scale: 10
+            step: 5
+  - entity: text
+    name: Hourly cycling
+    category: config
+    icon: "mdi:sync"
+    hidden: true
+    dps:
+      - id: 114
+        type: base64
+        optional: true
+        name: value
+  - entity: select
+    name: Filter reminder
+    translation_key: timer
+    category: config
+    dps:
+      - id: 115
+        type: string
+        name: option
+        mapping:
+          - dps_val: "off"
+            value: cancel
+          - dps_val: 10_days
+            value: 10d
+          - dps_val: 30_days
+            value: 30d
+          - dps_val: 60_days
+            value: 60d
+          - dps_val: 90_days
+            value: 90d
+          - dps_val: 160_days
+            value: 160d
+          - dps_val: 365_days
+            value: 365_days
+  - entity: select
+    name: Compressor protection
+    icon: "mdi:timer"
+    category: config
+    dps:
+      - id: 116
+        type: string
+        name: option
+        mapping:
+          - dps_val: "0"
+            value: "0"
+          - dps_val: "2"
+            value: "2"
+          - dps_val: "3"
+            value: "3"
+          - dps_val: "4"
+            value: "4"
+          - dps_val: "5"
+            value: "5"
+  - entity: text
+    name: Temperature range
+    category: config
+    icon: "mdi:thermometer-lines"
+    hidden: true
+    dps:
+      - id: 117
+        type: base64
+        optional: true
+        name: value
+  - entity: sensor
+    name: Fan
+    class: enum
+    translation_key: status
+    category: diagnostic
+    dps:
+      - id: 118
+        type: base64
+        optional: true
+        mask: "FF000000"
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: "off"
+          - dps_val: 1
+            value: low
+          - dps_val: 2
+            value: medium
+          - dps_val: 3
+            value: high
+          - value: null
+  - entity: binary_sensor
+    name: ERV
+    class: running
+    category: diagnostic
+    dps:
+      - id: 118
+        type: base64
+        optional: true
+        name: sensor
+        mask: "00010000"
+  - entity: binary_sensor
+    name: Compressor protection
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 118
+        type: base64
+        optional: true
+        mask: "00000001"
+        name: sensor
+  - entity: text
+    name: Fan delay
+    category: config
+    icon: "mdi:cogs"
+    hidden: true
+    dps:
+      - id: 119
+        type: base64
+        optional: true
+        name: value
+  - entity: lock
+    translation_key: child_lock
+    category: config
+    dps:
+      - id: 120
+        type: string
+        name: lock
+        mapping:
+          - dps_val: no_lock
+            value: false
+          - dps_val: lock
+            value: true
+  - entity: number
+    name: Dual fuel temperature
+    category: config
+    class: temperature
+    dps:
+      - id: 121
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: -50
+          max: 500
+        mapping:
+          - scale: 10
+            step: 5
+  - entity: select
+    name: Dual fuel temperature source
+    category: config
+    dps:
+      - id: 122
+        type: string
+        name: option
+        mapping:
+          - dps_val: outdoor_sensor
+            value: Outdoor sensor
+          - dps_val: cloud
+            value: Cloud
+  - entity: select
+    name: Adaptive recovery
+    category: config
+    dps:
+      - id: 123
+        type: string
+        name: option
+        mapping:
+          - dps_val: conventional
+            value: Conventional
+          - dps_val: early
+            value: Early
+  - entity: switch
+    translation_key: anti_frost
+    category: config
+    dps:
+      - id: 124
+        type: boolean
+        name: switch
+  - entity: number
+    name: Anti-frost temperature
+    category: config
+    class: temperature
+    icon: "mdi:snowflake-thermometer"
+    dps:
+      - id: 125
+        type: integer
+        name: value
+        unit: C
+        range:
+          min: -90
+          max: 50
+        mapping:
+          - scale: 10
+            step: 5
+  - entity: number
+    name: Power on brightness
+    category: config
+    icon: "mdi:television-ambient-light"
+    dps:
+      - id: 126
+        type: integer
+        name: value
+        unit: "%"
+        range:
+          min: 0
+          max: 100
+  - entity: number
+    name: Standby brightness
+    category: config
+    icon: "mdi:television-ambient-light"
+    dps:
+      - id: 127
+        type: integer
+        name: value
+        unit: "%"
+        range:
+          min: 0
+          max: 100
+  - entity: text
+    name: Temperature compensation
+    category: config
+    hidden: true
+    dps:
+      - id: 128
+        type: base64
+        optional: true
+        name: value
+  - entity: text
+    name: Relay control
+    category: config
+    hidden: true
+    dps:
+      - id: 129
+        type: base64
+        optional: true
+        name: value
+  - entity: button
+    name: Clear fan runtime
+    category: config
+    dps:
+      - id: 130
+        type: boolean
+        optional: true
+        name: button
+  - entity: sensor
+    name: Indoor temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 131
+        type: base64
+        optional: true
+        mask: "FFFF0000000000000000"
+        name: sensor
+        unit: C
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: sensor
+    name: Outdoor temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 131
+        type: base64
+        optional: true
+        mask: "0000FFFF000000000000"
+        name: sensor
+        unit: C
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: sensor
+    name: Forecast temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 131
+        type: base64
+        optional: true
+        mask: "00000000FFFF00000000"
+        name: sensor
+        unit: C
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: sensor
+    class: humidity
+    category: diagnostic
+    dps:
+      - id: 131
+        type: base64
+        optional: true
+        mask: "000000000000FFFF0000"
+        name: sensor
+        unit: "%"
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: binary_sensor
+    class: problem
+    translation_key: problem
+    category: diagnostic
+    dps:
+      - id: 131
+        type: base64
+        optional: true
+        mask: "0000000000000000FFFF"
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - dps_val: null
+            value: false
+          - value: true
+      - id: 131
+        type: base64
+        optional: true
+        mask: "0000000000000000FFFF"
+        name: fault_code
+  - entity: sensor
+    name: Schedule period
+    class: enum
+    category: diagnostic
+    dps:
+      - id: 132
+        type: integer
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: Default
+          - dps_val: 1
+            value: Time slot 1
+          - dps_val: 2
+            value: Time slot 2
+          - dps_val: 3
+            value: Time slot 3
+          - dps_val: 4
+            value: Time slot 4
+          - dps_val: 5
+            value: Override
+  - entity: text
+    name: Hysteresis
+    category: config
+    hidden: true
+    dps:
+      - id: 133
+        type: base64
+        optional: true
+        name: value
+  - entity: select
+    name: Parameter query
+    category: config
+    dps:
+      - id: 133
+        type: string
+        name: option
+        mapping:
+          - dps_val: temp_set_query
+            value: Temperature
+          - dps_val: set_query
+            value: Settings
+          - dps_val: sch_query
+            value: Schedule

+ 8 - 1
custom_components/tuya_local/translations/bg.json

@@ -869,7 +869,13 @@
                     "4d": "4 дни",
                     "5d": "5 дни",
                     "6d": "6 дни",
-                    "7d": "7 дни"
+                    "7d": "7 дни",
+                    "10d": "10 дни",
+                    "30d": "30 дни",
+                    "60d": "60 дни",
+                    "90d": "90 дни",
+                    "160d": "160 дни",
+                    "365d": "365 дни"
                 }
             },
             "temperature_unit": {
@@ -1248,6 +1254,7 @@
                     "occupied": "Зает",
                     "normal": "Нормално",
                     "low": "Ниско",
+                    "medium": "Средно",
                     "high": "Високо",
                     "unwashed": "Непочистен",
                     "pre_washing": "Предварително измиване",

+ 8 - 1
custom_components/tuya_local/translations/ca.json

@@ -868,7 +868,13 @@
                     "4d": "4 dies",
                     "5d": "5 dies",
                     "6d": "6 dies",
-                    "7d": "7 dies"
+                    "7d": "7 dies",
+                    "10d": "10 dies",
+                    "30d": "30 dies",
+                    "60d": "60 dies",
+                    "90d": "90 dies",
+                    "160d": "160 dies",
+                    "365d": "365 dies"
                 }
             },
             "temperature_unit": {
@@ -1280,6 +1286,7 @@
                     "occupied": "Ocupat",
                     "normal": "Normal",
                     "low": "Baix",
+                    "medium": "Mitjà",
                     "high": "Alt",
                     "unwashed": "No rentat",
                     "pre_washing": "Prerentat",

+ 8 - 1
custom_components/tuya_local/translations/cs.json

@@ -868,7 +868,13 @@
                     "4d": "4 dny",
                     "5d": "5 dní",
                     "6d": "6 dní",
-                    "7d": "7 dní"
+                    "7d": "7 dní",
+                    "10d": "10 dní",
+                    "30d": "30 dní",
+                    "60d": "60 dní",
+                    "90d": "90 dní",
+                    "160d": "160 dní",
+                    "365d": "365 dní"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Obsazeno",
                     "normal": "Normální",
                     "low": "Nízký",
+                    "medium": "Střední",
                     "high": "Vysoký",
                     "unwashed": "Nemytý",
                     "pre_washing": "Předmytí",

+ 8 - 1
custom_components/tuya_local/translations/de.json

@@ -868,7 +868,13 @@
                     "4d": "4 Tage",
                     "5d": "5 Tage",
                     "6d": "6 Tage",
-                    "7d": "7 Tage"
+                    "7d": "7 Tage",
+                    "10d": "10 Tage",
+                    "30d": "30 Tage",
+                    "60d": "60 Tage",
+                    "90d": "90 Tage",
+                    "160d": "160 Tage",
+                    "365d": "365 Tage"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Besetzt",
                     "normal": "Normal",
                     "low": "Niedrig",
+                    "medium": "Mittel",
                     "high": "Hoch",
                     "unwashed": "Ungewaschen",
                     "pre_washing": "Vorwäsche",

+ 8 - 1
custom_components/tuya_local/translations/el.json

@@ -868,7 +868,13 @@
                     "4d": "4 ημέρες",
                     "5d": "5 ημέρες",
                     "6d": "6 ημέρες",
-                    "7d": "7 ημέρες"
+                    "7d": "7 ημέρες",
+                    "10d": "10 ημέρες",
+                    "30d": "30 ημέρες",
+                    "60d": "60 ημέρες",
+                    "90d": "90 ημέρες",
+                    "160d": "160 ημέρες",
+                    "365d": "365 ημέρες"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Κατειλημμένο",
                     "normal": "Κανονικό",
                     "low": "Χαμηλό",
+                    "medium": "Μεσαίο",
                     "high": "Υψηλό",
                     "unwashed": "Ανεπεξέργαστο",
                     "pre_washing": "Προπλύση",

+ 8 - 1
custom_components/tuya_local/translations/en.json

@@ -868,7 +868,13 @@
                     "4d": "4 days",
                     "5d": "5 days",
                     "6d": "6 days",
-                    "7d": "7 days"
+                    "7d": "7 days",
+                    "10d": "10 days",
+                    "30d": "30 days",
+                    "60d": "60 days",
+                    "90d": "90 days",
+                    "160d": "160 days",
+                    "365d": "365 days"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Occupied",
                     "normal": "Normal",
                     "low": "Low",
+                    "medium": "Medium",
                     "high": "High",
                     "unwashed": "Unwashed",
                     "pre_washing": "Pre-washing",

+ 8 - 1
custom_components/tuya_local/translations/es.json

@@ -868,7 +868,13 @@
                     "4d": "4 días",
                     "5d": "5 días",
                     "6d": "6 días",
-                    "7d": "7 días"
+                    "7d": "7 días",
+                    "10d": "10 días",
+                    "30d": "30 días",
+                    "60d": "60 días",
+                    "90d": "90 días"
+                    "160d": "160 días",
+                    "365d": "365 días"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Ocupado",
                     "normal": "Normal",
                     "low": "Bajo",
+                    "medium": "Medio",
                     "high": "Alto",
                     "unwashed": "Sin lavar",
                     "pre_washing": "Pre-lavado",

+ 8 - 1
custom_components/tuya_local/translations/fr.json

@@ -868,7 +868,13 @@
                     "4d": "4 jours",
                     "5d": "5 jours",
                     "6d": "6 jours",
-                    "7d": "7 jours"
+                    "7d": "7 jours",
+                    "10d": "10 jours",
+                    "30d": "30 jours",
+                    "60d": "60 jours",
+                    "90d": "90 jours",
+                    "160d": "160 jours",
+                    "365d": "365 jours"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Occupé",
                     "normal": "Normal",
                     "low": "Faible",
+                    "medium": "Moyen",
                     "high": "Haut",
                     "unwashed": "Non lavé",
                     "pre_washing": "Pré-lavage",

+ 8 - 1
custom_components/tuya_local/translations/hu.json

@@ -868,7 +868,13 @@
                     "4d": "4 nap",
                     "5d": "5 nap",
                     "6d": "6 nap",
-                    "7d": "7 nap"
+                    "7d": "7 nap",
+                    "10d": "10 nap",
+                    "30d": "30 nap",
+                    "60d": "60 nap",
+                    "90d": "90 nap",
+                    "160d": "160 nap",
+                    "365d": "365 nap"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Foglalt",
                     "normal": "Normál",
                     "low": "Alacsony",
+                    "medium": "Közepes",
                     "high": "Magas",
                     "unwashed": "Nem mosott",
                     "pre_washing": "Előmosás",

+ 8 - 1
custom_components/tuya_local/translations/id.json

@@ -868,7 +868,13 @@
                     "4d": "4 hari",
                     "5d": "5 hari",
                     "6d": "6 hari",
-                    "7d": "7 hari"
+                    "7d": "7 hari",
+                    "10d": "10 hari",
+                    "30d": "30 hari",
+                    "60d": "60 hari",
+                    "90d": "90 hari",
+                    "160d": "160 hari",
+                    "365d": "365 hari"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Terisi",
                     "normal": "Normal",
                     "low": "Rendah",
+                    "medium": "Sedang",
                     "high": "Tinggi",
                     "unwashed": "Belum dicuci",
                     "pre_washing": "Pencucian awal",

+ 8 - 1
custom_components/tuya_local/translations/it.json

@@ -868,7 +868,13 @@
                     "4d": "4 giorni",
                     "5d": "5 giorni",
                     "6d": "6 giorni",
-                    "7d": "7 giorni"
+                    "7d": "7 giorni",
+                    "10d": "10 giorni",
+                    "30d": "30 giorni",
+                    "60d": "60 giorni",
+                    "90d": "90 giorni",
+                    "160d": "160 giorni",
+                    "365d": "365 giorni"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Occupato",
                     "normal": "Normale",
                     "low": "Basso",
+                    "medium": "Medio",
                     "high": "Alto",
                     "unwashed": "Non lavato",
                     "pre_washing": "Pre-lavaggio",

+ 8 - 1
custom_components/tuya_local/translations/ja.json

@@ -868,7 +868,13 @@
                     "4d": "4日",
                     "5d": "5日",
                     "6d": "6日",
-                    "7d": "7日"
+                    "7d": "7日",
+                    "10d": "10日",
+                    "30d": "30日",
+                    "60d": "60日",
+                    "90d": "90日",
+                    "160d": "160日",
+                    "365d": "365日"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "占有",
                     "normal": "通常",
                     "low": "低い",
+                    "medium": "中",
                     "high": "高い",
                     "unwashed": "未洗浄",
                     "pre_washing": "予洗い",

+ 8 - 1
custom_components/tuya_local/translations/no-NB.json

@@ -868,7 +868,13 @@
                     "4d": "4 dager",
                     "5d": "5 dager",
                     "6d": "6 dager",
-                    "7d": "7 dager"
+                    "7d": "7 dager",
+                    "10d": "10 dager",
+                    "30d": "30 dager",
+                    "60d": "60 dager",
+                    "90d": "90 dager",
+                    "160d": "160 dager",
+                    "365d": "365 dager"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Opptatt",
                     "normal": "Normal",
                     "low": "Lav",
+                    "medium": "Medium",
                     "high": "Høy",
                     "unwashed": "Uvasket",
                     "pre_washing": "Forvasking",

+ 8 - 1
custom_components/tuya_local/translations/pl.json

@@ -868,7 +868,13 @@
                     "4d": "4 dni",
                     "5d": "5 dni",
                     "6d": "6 dni",
-                    "7d": "7 dni"
+                    "7d": "7 dni",
+                    "10d": "10 dni",
+                    "30d": "30 dni",
+                    "60d": "60 dni",
+                    "90d": "90 dni",
+                    "160d": "160 dni",
+                    "365d": "365 dni"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Zajęty",
                     "normal": "Normalny",
                     "low": "Niski",
+                    "medium": "Średni",
                     "high": "Wysoki",
                     "unwashed": "Niewyprane",
                     "pre_washing": "Przed myciem",

+ 8 - 1
custom_components/tuya_local/translations/pt-BR.json

@@ -868,7 +868,13 @@
                     "4d": "4 dias",
                     "5d": "5 dias",
                     "6d": "6 dias",
-                    "7d": "7 dias"
+                    "7d": "7 dias",
+                    "10d": "10 dias",
+                    "30d": "30 dias",
+                    "60d": "60 dias",
+                    "90d": "90 dias",
+                    "160d": "160 dias",
+                    "365d": "365 dias"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Ocupado",
                     "normal": "Normal",
                     "low": "Baixo",
+                    "medium": "Médio",
                     "high": "Alto",
                     "unwashed": "Não lavado",
                     "pre_washing": "Pré-lavagem",

+ 8 - 1
custom_components/tuya_local/translations/pt-PT.json

@@ -868,7 +868,13 @@
                     "4d": "4 dias",
                     "5d": "5 dias",
                     "6d": "6 dias",
-                    "7d": "7 dias"
+                    "7d": "7 dias",
+                    "10d": "10 dias",
+                    "30d": "30 dias",
+                    "60d": "60 dias",
+                    "90d": "90 dias",
+                    "160d": "160 dias",
+                    "365d": "365 dias"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Ocupado",
                     "normal": "Normal",
                     "low": "Baixo",
+                    "medium": "Médio",
                     "high": "Alto",
                     "unwashed": "Não lavado",
                     "pre_washing": "Pré-lavagem",

+ 8 - 1
custom_components/tuya_local/translations/ro.json

@@ -868,7 +868,13 @@
                     "4d": "4 zile",
                     "5d": "5 zile",
                     "6d": "6 zile",
-                    "7d": "7 zile"
+                    "7d": "7 zile",
+                    "10d": "10 zile",
+                    "30d": "30 zile",
+                    "60d": "60 zile",
+                    "90d": "90 zile",
+                    "160d": "160 zile",
+                    "365d": "365 zile"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Ocupat",
                     "normal": "Normal",
                     "low": "Scăzut",
+                    "medium": "Mediu",
                     "high": "Ridicat",
                     "unwashed": "Nespălat",
                     "pre_washing": "Pre-spălare",

+ 8 - 1
custom_components/tuya_local/translations/ru.json

@@ -868,7 +868,13 @@
                     "4d": "4 дня",
                     "5d": "5 дней",
                     "6d": "6 дней",
-                    "7d": "7 дней"
+                    "7d": "7 дней",
+                    "10d": "10 дней",
+                    "30d": "30 дней",
+                    "60d": "60 дней",
+                    "90d": "90 дней",
+                    "160d": "160 дней",
+                    "365d": "365 дней"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Занято",
                     "normal": "Нормально",
                     "low": "Низкий",
+                    "medium": "Средний",
                     "high": "Высокий",
                     "unwashed": "Не помыто",
                     "pre_washing": "Предварительная стирка",

+ 8 - 1
custom_components/tuya_local/translations/sv.json

@@ -868,7 +868,13 @@
                     "4d": "4 dagar",
                     "5d": "5 dagar",
                     "6d": "6 dagar",
-                    "7d": "7 dagar"
+                    "7d": "7 dagar",
+                    "10d": "10 dagar",
+                    "30d": "30 dagar",
+                    "60d": "60 dagar",
+                    "90d": "90 dagar",
+                    "160d": "160 dagar",
+                    "365d": "365 dagar"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Upptagen",
                     "normal": "Normal",
                     "low": "Låg",
+                    "medium": "Medel",
                     "high": "Hög",
                     "unwashed": "Otvättad",
                     "pre_washing": "Förtvätt",

+ 8 - 1
custom_components/tuya_local/translations/uk.json

@@ -868,7 +868,13 @@
                     "4d": "4 дні",
                     "5d": "5 днів",
                     "6d": "6 днів",
-                    "7d": "7 днів"
+                    "7d": "7 днів",
+                    "10d": "10 днів",
+                    "30d": "30 днів",
+                    "60d": "60 днів",
+                    "90d": "90 днів",
+                    "160d": "160 днів",
+                    "365d": "365 днів"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "Зайнято",
                     "normal": "Нормально",
                     "low": "Низький",
+                    "medium": "Середній",
                     "high": "Високий",
                     "unwashed": "Не вимито",
                     "pre_washing": "Попереднє миття",

+ 8 - 1
custom_components/tuya_local/translations/ur.json

@@ -868,7 +868,13 @@
                     "4d": "4 دن",
                     "5d": "5 دن",
                     "6d": "6 دن",
-                    "7d": "7 دن"
+                    "7d": "7 دن",
+                    "10d": "10 دن",
+                    "30d": "30 دن",
+                    "60d": "60 دن",
+                    "90d": "90 دن",
+                    "160d": "160 دن",
+                    "365d": "365 دن"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "مصروف",
                     "normal": "عام",
                     "low": "کم",
+                    "medium": "درمیانہ",
                     "high": "زیادہ",
                     "unwashed": "نہ دھویا",
                     "pre_washing": "پری واشنگ",

+ 8 - 1
custom_components/tuya_local/translations/zh-Hans.json

@@ -868,7 +868,13 @@
                     "4d": "4天",
                     "5d": "5天",
                     "6d": "6天",
-                    "7d": "7天"
+                    "7d": "7天",
+                    "10d": "10天",
+                    "30d": "30天",
+                    "60d": "60天",
+                    "90d": "90天",
+                    "160d": "160天",
+                    "365d": "365天"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "占用",
                     "normal": "正常",
                     "low": "低",
+                    "medium": "中",
                     "high": "高",
                     "unwashed": "未清洗",
                     "pre_washing": "预洗中",

+ 8 - 1
custom_components/tuya_local/translations/zh-Hant.json

@@ -868,7 +868,13 @@
                     "4d": "4天",
                     "5d": "5天",
                     "6d": "6天",
-                    "7d": "7天"
+                    "7d": "7天",
+                    "10d": "10天",
+                    "30d": "30天",
+                    "60d": "60天",
+                    "90d": "90天",
+                    "160d": "160天",
+                    "365d": "365天"
                 }
             },
             "temperature_unit": {
@@ -1247,6 +1253,7 @@
                     "occupied": "佔用",
                     "normal": "正常",
                     "low": "低",
+                    "medium": "中",
                     "high": "高",
                     "unwashed": "未清洗",
                     "pre_washing": "預洗中",