Compare commits

..

No commits in common. "c17424a686fe2dc4f8928052c68deda57794a44d" and "b228e552de1bc61d8097459a73a35b7409d76988" have entirely different histories.

4 changed files with 383 additions and 398 deletions

761
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,6 @@ rppal = { version = "0.13.1", features = ["hal"] }
ssd1351 = { git = "https://github.com/FliegendeWurst/ssd1351-rust" }
display-interface-spi = "0.4.1"
ureq = { version = "2.4.0", default-features = false }
#gpio-am2302-rs = { git = "https://github.com/FliegendeWurst/gpio-am2302-rs" }
[profile.release]
codegen-units = 1

View File

@ -31,10 +31,6 @@ fn main() {
.unwrap();
while temps.len() < 5 && attempts < 10 {
if let Ok((rh, temp)) = raspi_oled::am2302_reading(&line) {
// TODO: try out gpio_am2302_rs!
//if let Ok(reading) = gpio_am2302_rs::try_read(26) {
//let rh = reading.humidity as i64;
//let temp = (reading.temperature * 10.0) as i64;
if rh > 0 && temp < 500 {
rhs.push(rh);
temps.push(temp);
@ -47,13 +43,10 @@ fn main() {
// median = hopefully no faulty readings
temps.sort();
rhs.sort();
let rh = rhs[rhs.len() / 2];
let temp = temps[temps.len() / 2];
println!("info: acquired {} readings (temps {:?}, rhs {:?}), using rh {} and temp {}", temps.len(), temps, rhs, rh, temp);
database
.execute(
"INSERT INTO sensor_readings (time, humidity, celsius) VALUES (?1, ?2, ?3)",
params![time.as_secs(), rh, temp],
params![time.as_secs(), rhs[rhs.len() / 2], temps[temps.len() / 2]],
)
.unwrap();
}

View File

@ -76,7 +76,6 @@ fn read_events(line: &gpio_cdev::Line, timeout: std::time::Duration) -> Result<V
}
}
if events.len() < 81 {
println!("error: only got {} events", events.len());
return Err(SensorError::Timeout);
}
Ok(events)
@ -163,14 +162,15 @@ impl From<gpio_cdev::Error> for SensorError {
}
pub fn am2302_reading(line: &Line) -> Result<(u16, u16), SensorError> {
let out = line.request(LineRequestFlags::OUTPUT, 1, "rust-am2302").unwrap();
out.set_value(1)?;
line.request(LineRequestFlags::OUTPUT, 1, "rust-am2302").unwrap();
sleep(Duration::from_millis(500));
set_max_priority();
// set low for 20 ms
out.set_value(0)?;
if let Err(e) = line.request(LineRequestFlags::OUTPUT, 0, "rust-am2302") {
set_normal_priority();
return Err(SensorError::Io(e));
}
sleep(Duration::from_millis(3));
drop(out);
let events = read_events(&line, Duration::from_secs(1));
println!("{:?} {:?}", events, events.as_ref().map(|x| x.len()));