From 40a16d099c2bf2b3e5bf537aa14d37fdf9e52668 Mon Sep 17 00:00:00 2001 From: diogo464 Date: Thu, 4 Dec 2025 23:59:21 +0000 Subject: added basic binary sensor example --- examples/binary_sensor.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 examples/binary_sensor.rs (limited to 'examples') diff --git a/examples/binary_sensor.rs b/examples/binary_sensor.rs new file mode 100644 index 0000000..2809255 --- /dev/null +++ b/examples/binary_sensor.rs @@ -0,0 +1,44 @@ +mod common; + +use common::AsyncTcp; +use embassy_executor::{Executor, Spawner}; +use embassy_time::Timer; +use static_cell::StaticCell; + +static RESOURCES: StaticCell = StaticCell::new(); + +#[embassy_executor::task] +async fn main_task(spawner: Spawner) { + let mut stream = AsyncTcp::connect(std::env!("MQTT_ADDRESS")); + + let mut device = embassy_ha::Device::new( + RESOURCES.init(Default::default()), + embassy_ha::DeviceConfig { + device_id: "example-device-id", + device_name: "Example Device Name", + manufacturer: "Example Device Manufacturer", + model: "Example Device Model", + }, + ); + + let sensor = device.create_binary_sensor( + "binary-sensor-id", + "Binary Sensor", + embassy_ha::constants::HA_DEVICE_CLASS_BINARY_SENSOR_SMOKE, + ); + + spawner.must_spawn(binary_sensor_class(sensor)); + + device.run(&mut stream).await; +} + +#[embassy_executor::task] +async fn binary_sensor_class(mut switch: embassy_ha::BinarySensor<'static>) { + loop { + let state = switch.toggle(); + println!("state = {}", state); + Timer::after_secs(2).await; + } +} + +example_main!(); -- cgit