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

fix(tylohelo_sl2_sauna): default conflicts with hidden

- other uses of hidden require that it is available only for forward
  mappings, but the way default is used requires reverse mapping also.
- remove the hidden tag in this config to allow the default mapping to
  work as intended.
- Avoid returning default mappings that are hidden and instead log an
  error to get them fixed quickly.

Issue #5087
Jason Rumney 2 дней назад
Родитель
Сommit
96b3de8011

+ 1 - 2
custom_components/tuya_local/devices/tylohelo_sl2_sauna.yaml

@@ -52,9 +52,8 @@ entities:
           - dps_val: 8
             value: Rainbow
           - dps_val: 1
-            value: "white"
+            value: white
             default: true
-            hidden: true
       - id: 101
         name: named_color
         type: integer

+ 16 - 2
custom_components/tuya_local/helpers/device_config.py

@@ -631,11 +631,25 @@ class TuyaDpsConfig:
             )
             return None
         for m in self._config["mapping"]:
-            if m.get("default", False):
+            if m.get("default", False) and not m.get("hidden", False):
                 return m.get("value", m.get("dps_val", None))
+            elif m.get("default", False):
+                _LOGGER.error(
+                    "%s: Default value for %s.%s is hidden",
+                    self._entity._device.config,
+                    self._entity.config_id,
+                    self.id,
+                )
             for c in m.get("conditions", {}):
-                if c.get("default", False):
+                if c.get("default", False) and not c.get("hidden", False):
                     return c.get("value", m.get("value", m.get("dps_val", None)))
+                elif c.get("default", False):
+                    _LOGGER.error(
+                        "%s: Default value for %s.%s is hidden",
+                        self._entity._device.config,
+                        self._entity.config_id,
+                        self.id,
+                    )
 
     def range(self, device, scaled=True):
         """Return the range for this dps if configured."""