Store brightness in f32 instead of f64

This commit is contained in:
2025-08-22 03:07:55 +02:00
parent fe83568839
commit 73218bb9b9

View File

@@ -52,7 +52,7 @@ impl LightState for StateOnOff {}
pub struct StateBrightness { pub struct StateBrightness {
#[serde(deserialize_with = "state_deserializer")] #[serde(deserialize_with = "state_deserializer")]
state: bool, state: bool,
brightness: f64, brightness: f32,
} }
impl LightState for StateBrightness {} impl LightState for StateBrightness {}
@@ -255,7 +255,7 @@ where
} }
} }
const FACTOR: f64 = 30.0; const FACTOR: f32 = 30.0;
#[async_trait] #[async_trait]
impl<T> Brightness for Light<T> impl<T> Brightness for Light<T>
@@ -267,14 +267,14 @@ where
let state = self.state().await; let state = self.state().await;
let state: StateBrightness = state.deref().clone().into(); let state: StateBrightness = state.deref().clone().into();
let brightness = let brightness =
100.0 * f64::log10(state.brightness / FACTOR + 1.0) / f64::log10(254.0 / FACTOR + 1.0); 100.0 * f32::log10(state.brightness / FACTOR + 1.0) / f32::log10(254.0 / FACTOR + 1.0);
Ok(brightness.clamp(0.0, 100.0).round() as u8) Ok(brightness.clamp(0.0, 100.0).round() as u8)
} }
async fn set_brightness(&self, brightness: u8) -> Result<(), ErrorCode> { async fn set_brightness(&self, brightness: u8) -> Result<(), ErrorCode> {
let brightness = let brightness =
FACTOR * ((FACTOR / (FACTOR + 254.0)).powf(-(brightness as f64) / 100.0) - 1.0); FACTOR * ((FACTOR / (FACTOR + 254.0)).powf(-(brightness as f32) / 100.0) - 1.0);
let message = json!({ let message = json!({
"brightness": brightness.clamp(0.0, 254.0).round() as u8 "brightness": brightness.clamp(0.0, 254.0).round() as u8