env_monitor_example/
env_monitor_example.rs

1use env_monitor::sensors::dht11::Dht11Sensor;
2use env_monitor::sensors::fire::FireSensor;
3use env_monitor::sensors::{FireDetector, TemperatureSensor};
4use std::error::Error;
5use tokio::time::{self, Duration};
6
7#[tokio::main]
8async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
9    println!("环境监控系统启动");
10    println!("- DHT11温湿度传感器: GPIO17");
11    println!("- 火焰传感器: GPIO27, 蜂鸣器: GPIO22");
12
13    let dht_sensor = Dht11Sensor::new(17);
14    let fire_sensor = FireSensor::new(27, 22, true);
15
16    fire_sensor.start_monitoring(100).await?;
17
18    loop {
19        match dht_sensor.read_async().await {
20            Ok(data) => {
21                println!(
22                    "温度: {:.1}°C, 湿度: {:.1}%",
23                    data.temperature, data.humidity
24                );
25
26                if data.temperature > 40.0 {
27                    println!("警告: 温度过高! ({:.1}°C)", data.temperature);
28                }
29            }
30            Err(e) => {
31                println!("DHT11读取失败: {}", e);
32            }
33        }
34
35        time::sleep(Duration::from_secs(5)).await;
36    }
37}