Example #1
0
async def test_ranged_value_to_percentage_large():
    """Test a large range of low and high values convert a single value to a percentage."""
    range = (1, 255)

    assert ranged_value_to_percentage(range, 255) == 100
    assert ranged_value_to_percentage(range, 127) == 49
    assert ranged_value_to_percentage(range, 10) == 3
    assert ranged_value_to_percentage(range, 1) == 0
Example #2
0
async def test_ranged_value_to_percentage_starting_zero():
    """Test a range that starts with 0."""
    range = (0, 3)

    assert ranged_value_to_percentage(range, 0) == 25
    assert ranged_value_to_percentage(range, 1) == 50
    assert ranged_value_to_percentage(range, 2) == 75
    assert ranged_value_to_percentage(range, 3) == 100
Example #3
0
async def test_ranged_value_to_percentage_starting_at_one():
    """Test a range that starts with 1."""
    range = (1, 4)

    assert ranged_value_to_percentage(range, 1) == 25
    assert ranged_value_to_percentage(range, 2) == 50
    assert ranged_value_to_percentage(range, 3) == 75
    assert ranged_value_to_percentage(range, 4) == 100
Example #4
0
async def test_ranged_value_to_percentage_starting_high():
    """Test a range that does not start with 1."""
    range = (101, 255)

    assert ranged_value_to_percentage(range, 101) == 0
    assert ranged_value_to_percentage(range, 139) == 25
    assert ranged_value_to_percentage(range, 178) == 50
    assert ranged_value_to_percentage(range, 217) == 75
    assert ranged_value_to_percentage(range, 255) == 100
Example #5
0
 def percentage_received(msg):
     """Handle new received MQTT message for the percentage."""
     rendered_percentage_payload = self._value_templates[
         ATTR_PERCENTAGE](msg.payload)
     if not rendered_percentage_payload:
         _LOGGER.debug("Ignoring empty speed from '%s'", msg.topic)
         return
     if rendered_percentage_payload == self._payload[
             "PERCENTAGE_RESET"]:
         self._percentage = None
         self._speed = None
         self.async_write_op_state()
         return
     try:
         percentage = ranged_value_to_percentage(
             self._speed_range, int(rendered_percentage_payload))
     except ValueError:
         _LOGGER.warning(
             "'%s' received on topic %s. '%s' is not a valid speed within the speed range",
             msg.payload,
             msg.topic,
             rendered_percentage_payload,
         )
         return
     if percentage < 0 or percentage > 100:
         _LOGGER.warning(
             "'%s' received on topic %s. '%s' is not a valid speed within the speed range",
             msg.payload,
             msg.topic,
             rendered_percentage_payload,
         )
         return
     self._percentage = percentage
     self.async_write_op_state()
Example #6
0
 def percentage(self):
     """Return the current speed."""
     if self.smartfan.mode == "manual":
         current_level = self.smartfan.fan_level
         if current_level is not None:
             return ranged_value_to_percentage(SPEED_RANGE, current_level)
     return None
Example #7
0
 def percentage(self) -> int | None:
     """Return the current speed percentage."""
     if self.info.primary_value.value is None:
         # guard missing value
         return None
     return ranged_value_to_percentage(SPEED_RANGE,
                                       self.info.primary_value.value)
Example #8
0
 def percentage(self) -> int | None:
     """Return the current speed percentage."""
     if (
         self._fan_channel.fan_mode is None
         or self._fan_channel.fan_mode > SPEED_RANGE[1]
     ):
         return None
     if self._fan_channel.fan_mode == 0:
         return 0
     return ranged_value_to_percentage(SPEED_RANGE, self._fan_channel.fan_mode)
Example #9
0
async def test_ranged_value_to_percentage_small():
    """Test a small range of low and high values convert a single value to a percentage."""
    range = (1, 6)

    assert ranged_value_to_percentage(range, 1) == 16
    assert ranged_value_to_percentage(range, 2) == 33
    assert ranged_value_to_percentage(range, 3) == 50
    assert ranged_value_to_percentage(range, 4) == 66
    assert ranged_value_to_percentage(range, 5) == 83
    assert ranged_value_to_percentage(range, 6) == 100
Example #10
0
 def percentage(self) -> int | None:
     """Return the current speed percentage."""
     speed = self._ccb.data.get(SENSOR_FAN_SPEED_MODE)
     if speed is None:
         return None
     return ranged_value_to_percentage(SPEED_RANGE, speed)
Example #11
0
 def percentage(self) -> int:
     """Return speed percentage of the fan."""
     if self._smarty_fan_speed == 0:
         return 0
     return ranged_value_to_percentage(SPEED_RANGE, self._smarty_fan_speed)
Example #12
0
 def percentage(self) -> int:
     """Return the current speed percentage for the fan."""
     if not self._speed or not self._power:
         return 0
     return ranged_value_to_percentage(self._speed_range, self._speed)
Example #13
0
 def percentage(self):
     """Return the current speed percentage."""
     if self.auto_mode:
         return None
     return ranged_value_to_percentage(SPEED_RANGE,
                                       int(self._device.state.speed))
Example #14
0
 def percentage(self) -> int:
     """Return the current speed percentage."""
     if self._insteon_device_group.value is None:
         return None
     return ranged_value_to_percentage(SPEED_RANGE, self._insteon_device_group.value)
Example #15
0
 def percentage(self) -> int | None:
     """Return the current speed percentage."""
     if self._node.status == ISY_VALUE_UNKNOWN:
         return None
     return ranged_value_to_percentage(SPEED_RANGE, self._node.status)
Example #16
0
 def percentage(self) -> int:
     """Return the current speed percentage."""
     return ranged_value_to_percentage(SPEED_RANGE, self._fan_mode)
Example #17
0
 def percentage(self) -> int:
     """Return the current speed percentage."""
     return ranged_value_to_percentage(SPEED_RANGE,
                                       self._device.status.fan_speed)
Example #18
0
 def percentage(self):
     """Return the current speed percentage."""
     return ranged_value_to_percentage(SPEED_RANGE, self._state)