env_monitor_example/
env_monitor_example.rs1use 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}