From abdcb51d7e9d6ebfacdf17b32e5296464e0aa2d4 Mon Sep 17 00:00:00 2001 From: diogo464 Date: Thu, 4 Dec 2025 21:14:27 +0000 Subject: added switch example --- examples/switch.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 examples/switch.rs (limited to 'examples/switch.rs') diff --git a/examples/switch.rs b/examples/switch.rs new file mode 100644 index 0000000..a12b8d0 --- /dev/null +++ b/examples/switch.rs @@ -0,0 +1,42 @@ +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 switch = device.create_switch("switch-id", "Example Switch"); + + spawner.must_spawn(switch_task(switch)); + + device.run(&mut stream).await; +} + +#[embassy_executor::task] +async fn switch_task(mut switch: embassy_ha::Switch<'static>) { + loop { + let state = switch.wait().await; + switch.set(state); + + println!("state = {}", state); + Timer::after_secs(1).await; + } +} + +example_main!(); -- cgit