From ab4a7c83e00314a2f5d2f455987ba530fd08bdd7 Mon Sep 17 00:00:00 2001 From: diogo464 Date: Sun, 14 Dec 2025 14:17:56 +0000 Subject: added category field to entity discovery payload --- examples/sensor.rs | 25 +++++++++++++++++++++++++ src/lib.rs | 4 ++++ 2 files changed, 29 insertions(+) diff --git a/examples/sensor.rs b/examples/sensor.rs index 2fd2d1f..acbb3ab 100644 --- a/examples/sensor.rs +++ b/examples/sensor.rs @@ -51,8 +51,25 @@ async fn main_task(spawner: Spawner) { }, ); + let signal_strength_sensor = embassy_ha::create_sensor( + &device, + "signal-strength-sensor-id", + embassy_ha::SensorConfig { + common: embassy_ha::EntityCommonConfig { + name: Some("Signal Strength"), + category: Some(embassy_ha::EntityCategory::Diagnostic), + ..Default::default() + }, + class: embassy_ha::SensorClass::SignalStrength, + state_class: embassy_ha::StateClass::Measurement, + unit: Some(embassy_ha::constants::HA_UNIT_SIGNAL_STRENGTH_DBM), + suggested_display_precision: Some(0), + }, + ); + spawner.must_spawn(random_temperature_task(temperature_sensor)); spawner.must_spawn(random_humidity_task(humidity_sensor)); + spawner.must_spawn(random_signal_strength_task(signal_strength_sensor)); embassy_ha::run(&mut device, &mut stream).await.unwrap(); } @@ -73,4 +90,12 @@ async fn random_humidity_task(mut sensor: embassy_ha::Sensor<'static>) { } } +#[embassy_executor::task] +async fn random_signal_strength_task(mut sensor: embassy_ha::Sensor<'static>) { + loop { + sensor.publish(rand::random_range(-90.0..-30.0)); + Timer::after_secs(1).await; + } +} + example_main!(); diff --git a/src/lib.rs b/src/lib.rs index 7d31ac5..7766171 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -136,6 +136,9 @@ struct EntityDiscovery<'a> { #[serde(skip_serializing_if = "Option::is_none")] icon: Option<&'a str>, + #[serde(skip_serializing_if = "Option::is_none")] + entity_category: Option<&'a str>, + #[serde(skip_serializing_if = "Option::is_none")] entity_picture: Option<&'a str>, @@ -771,6 +774,7 @@ pub async fn run(device: &mut Device<'_>, transport: &mut T) -> Re platform: entity_config.platform, state_class: entity_config.state_class, icon: entity_config.icon, + entity_category: entity_config.category, entity_picture: entity_config.picture, min: entity_config.min, max: entity_config.max, -- cgit