Compare commits
6 Commits
329eb6db04
...
v0.4.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
8603d6fab4
|
|||
|
d3e915575f
|
|||
|
14f17d49df
|
|||
|
01738df95c
|
|||
|
2f89c58f95
|
|||
|
032d785d60
|
15
Cargo.lock
generated
15
Cargo.lock
generated
@@ -13,8 +13,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "air_filter"
|
||||
version = "0.3.0"
|
||||
version = "0.4.4"
|
||||
dependencies = [
|
||||
"air_filter_types",
|
||||
"bme280",
|
||||
"cfg-if",
|
||||
"const_format",
|
||||
@@ -49,6 +50,15 @@ dependencies = [
|
||||
"updater",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "air_filter_types"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"bme280",
|
||||
"defmt",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "arrayvec"
|
||||
version = "0.7.6"
|
||||
@@ -1889,7 +1899,8 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
||||
|
||||
[[package]]
|
||||
name = "updater"
|
||||
version = "0.1.0"
|
||||
version = "0.2.0"
|
||||
source = "git+https://git.huizinga.dev/Dreaded_X/iot_tools?tag=v0.2.0#ce96dd0a4ef3cffe1c6be6786b0a47cdb412f861"
|
||||
dependencies = [
|
||||
"cortex-m",
|
||||
"defmt",
|
||||
|
||||
16
Cargo.toml
16
Cargo.toml
@@ -1,12 +1,18 @@
|
||||
[package]
|
||||
name = "air_filter"
|
||||
version = "0.3.0"
|
||||
version = "0.4.4"
|
||||
edition = "2021"
|
||||
|
||||
[workspace.dependencies]
|
||||
defmt = "0.3"
|
||||
bme280 = { version = "0.5.0", features = ["async", "defmt"] }
|
||||
serde = { version = "1.0", default-features = false, features = ["derive"] }
|
||||
|
||||
[dependencies]
|
||||
air_filter_types = { path = "./air_filter_types/" }
|
||||
cortex-m = { version = "0.7", features = ["inline-asm"] }
|
||||
cortex-m-rt = "0.7"
|
||||
defmt = "0.3"
|
||||
defmt = { workspace = true }
|
||||
defmt-rtt = "0.4"
|
||||
embassy-embedded-hal = { version = "0.3.0", features = ["defmt"] }
|
||||
embassy-executor = { version = "0.7", features = [
|
||||
@@ -58,7 +64,7 @@ rust-mqtt = { version = "0.3", features = [
|
||||
], default-features = false }
|
||||
const_format = "0.2"
|
||||
git-version = "0.3"
|
||||
serde = { version = "1.0", default-features = false, features = ["derive"] }
|
||||
serde = { workspace = true }
|
||||
heapless = { version = "0.8", features = ["defmt-03", "serde"] }
|
||||
nourl = { version = "0.1", features = ["defmt"] }
|
||||
# Embassy hardcodes a max of 6 dns servers, if there are more it crashes. This is a workaround
|
||||
@@ -67,9 +73,9 @@ nourl = { version = "0.1", features = ["defmt"] }
|
||||
smoltcp = { version = "0.12", default-features = false, features = [
|
||||
"dns-max-server-count-4",
|
||||
] }
|
||||
updater = { version = "0.1.0", path = "../iot_tools/updater" }
|
||||
updater = { git = "https://git.huizinga.dev/Dreaded_X/iot_tools", tag = "v0.2.0" }
|
||||
portable-atomic = { version = "1.6", features = ["critical-section"] }
|
||||
bme280 = { version = "0.5.0", features = ["async", "defmt"] }
|
||||
bme280 = { workspace = true }
|
||||
picoserve = { version = "0.13.3", features = ["defmt", "embassy"] }
|
||||
embedded-storage = "0.3"
|
||||
|
||||
|
||||
9
air_filter_types/Cargo.toml
Normal file
9
air_filter_types/Cargo.toml
Normal file
@@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "air_filter_types"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
bme280 = { workspace = true }
|
||||
defmt = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
@@ -15,7 +15,7 @@ pub enum FanSpeed {
|
||||
High,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[derive(Serialize, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct FanState {
|
||||
pub speed: FanSpeed,
|
||||
@@ -26,20 +26,32 @@ impl FanState {
|
||||
pub fn new(speed: FanSpeed, manual: bool) -> Self {
|
||||
Self { speed, manual }
|
||||
}
|
||||
|
||||
pub fn speed(&self) -> FanSpeed {
|
||||
self.speed
|
||||
}
|
||||
|
||||
pub fn manual(&self) -> bool {
|
||||
self.manual
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct SetFanSpeed {
|
||||
speed: FanSpeed,
|
||||
}
|
||||
|
||||
impl SetFanSpeed {
|
||||
pub fn new(speed: FanSpeed) -> Self {
|
||||
Self { speed }
|
||||
}
|
||||
|
||||
pub fn speed(&self) -> FanSpeed {
|
||||
self.speed
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct SensorData {
|
||||
temperature: f32,
|
||||
humidity: f32,
|
||||
@@ -54,4 +66,16 @@ impl SensorData {
|
||||
pressure: measurements.pressure,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn temperature(&self) -> f32 {
|
||||
self.temperature
|
||||
}
|
||||
|
||||
pub fn humidity(&self) -> f32 {
|
||||
self.humidity
|
||||
}
|
||||
|
||||
pub fn pressure(&self) -> f32 {
|
||||
self.pressure
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,7 @@ use updater::firmware_router;
|
||||
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
|
||||
use air_filter::{FanSpeed, FanState, SensorData, SetFanSpeed};
|
||||
use air_filter_types::{FanSpeed, FanState, SensorData, SetFanSpeed};
|
||||
|
||||
bind_interrupts!(struct Irqs {
|
||||
PIO0_IRQ_0 => pio::InterruptHandler<PIO0>;
|
||||
|
||||
Reference in New Issue
Block a user