From e5416e848c8caeed59e8aca6fb3e191fbc621b1b Mon Sep 17 00:00:00 2001 From: diogo464 Date: Sat, 6 Dec 2025 14:31:54 +0000 Subject: Refactor sensor API to support generic sensor types with configurable display precision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaced TemperatureSensor with a generic Sensor type that accepts sensor class, state class, unit, and display precision to support various sensor types. Added suggested_display_precision field to control decimal places in Home Assistant UI. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/lib.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 1571255..0107116 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -115,6 +115,9 @@ struct EntityDiscovery<'a> { #[serde(skip_serializing_if = "Option::is_none")] mode: Option<&'a str>, + #[serde(skip_serializing_if = "Option::is_none")] + suggested_display_precision: Option, + device: &'a DeviceDiscovery<'a>, } @@ -427,11 +430,11 @@ impl<'a> Device<'a> { } } - pub fn create_temperature_sensor( + pub fn create_sensor( &self, id: &'static str, - config: TemperatureSensorConfig, - ) -> TemperatureSensor<'a> { + config: SensorConfig, + ) -> Sensor<'a> { let mut entity_config = EntityConfig::default(); entity_config.id = id; config.populate(&mut entity_config); @@ -440,7 +443,7 @@ impl<'a> Device<'a> { entity_config, EntityStorage::NumericSensor(Default::default()), ); - TemperatureSensor::new(entity) + Sensor::new(entity) } pub fn create_button(&self, id: &'static str, config: ButtonConfig) -> Button<'a> { @@ -573,6 +576,7 @@ impl<'a> Device<'a> { max: entity_config.max, step: entity_config.step, mode: entity_config.mode, + suggested_display_precision: entity_config.suggested_display_precision, device: &device_discovery, }; crate::log::debug!( -- cgit