Pārlūkot izejas kodu

Update device_config.py for mask_signed: True

Changed mask_signed: True and count the number of bits in the mask
BevDan 8 mēneši atpakaļ
vecāks
revīzija
ac47d54f51

+ 5 - 4
custom_components/tuya_local/helpers/device_config.py

@@ -483,10 +483,11 @@ class TuyaDpsConfig:
             raw_result = (value & mask) // scale
             raw_result = (value & mask) // scale
 
 
             # Insert signed interpretation here
             # Insert signed interpretation here
-            signed_bits = self._config.get("signed_bits")
-            if signed_bits:
-                raw_result = to_signed(raw_result, signed_bits)
-
+            if self._config.get("mask_signed", False):
+            # Count how many bits are set in the mask
+                bit_count = bin(mask).count("1")
+                raw_result = to_signed(raw_result, bit_count)
+    
             return self._map_from_dps(raw_result, device)
             return self._map_from_dps(raw_result, device)
         else:
         else:
             return self._map_from_dps(device.get_property(self.id), device)
             return self._map_from_dps(device.get_property(self.id), device)