aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/number.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/examples/number.rs b/examples/number.rs
new file mode 100644
index 0000000..78307d6
--- /dev/null
+++ b/examples/number.rs
@@ -0,0 +1,40 @@
1mod common;
2
3use common::AsyncTcp;
4use embassy_executor::{Executor, Spawner};
5use embassy_time::Timer;
6use static_cell::StaticCell;
7
8static RESOURCES: StaticCell<embassy_ha::DeviceResources> = StaticCell::new();
9
10#[embassy_executor::task]
11async fn main_task(spawner: Spawner) {
12 let mut stream = AsyncTcp::connect(std::env!("MQTT_ADDRESS"));
13
14 let mut device = embassy_ha::Device::new(
15 RESOURCES.init(Default::default()),
16 embassy_ha::DeviceConfig {
17 device_id: "example-device-id",
18 device_name: "Example Device Name",
19 manufacturer: "Example Device Manufacturer",
20 model: "Example Device Model",
21 },
22 );
23
24 let number = device.create_number("number-id", "Number Name");
25
26 spawner.must_spawn(number_task(number));
27
28 device.run(&mut stream).await;
29}
30
31#[embassy_executor::task]
32async fn number_task(mut number: embassy_ha::Number<'static>) {
33 loop {
34 let value = number.value_wait().await;
35 number.value_set(value);
36 Timer::after_secs(1).await;
37 }
38}
39
40example_main!();