From fe2d227c679c7eed44784c4b7157f2f2f62bf495 Mon Sep 17 00:00:00 2001 From: Empire Phoenix Date: Tue, 26 May 2026 02:03:19 +0200 Subject: [PATCH] Fix fertilizer calculation and logging --- Software/MainBoard/rust/src/hal/esp.rs | 5 +++++ Software/MainBoard/rust/src/main.rs | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Software/MainBoard/rust/src/hal/esp.rs b/Software/MainBoard/rust/src/hal/esp.rs index d4c01f4..ead2389 100644 --- a/Software/MainBoard/rust/src/hal/esp.rs +++ b/Software/MainBoard/rust/src/hal/esp.rs @@ -368,6 +368,11 @@ impl Esp<'_> { for (i, item) in CONSECUTIVE_WATERING_PLANT.iter().enumerate() { info!("CONSECUTIVE_WATERING_PLANT[{i}] = {item}"); } + // is executed before main, no other code will alter these values during printing + #[allow(static_mut_refs)] + for (i, item) in LAST_FERTILIZER_TIMESTAMP.iter().enumerate() { + info!("LAST_FERTILIZER_TIMESTAMP[{i}] = {item}"); + } } } } diff --git a/Software/MainBoard/rust/src/main.rs b/Software/MainBoard/rust/src/main.rs index 4f0471b..d51fb25 100644 --- a/Software/MainBoard/rust/src/main.rs +++ b/Software/MainBoard/rust/src/main.rs @@ -703,8 +703,9 @@ pub async fn do_secure_pump( if plant_config.fertilizer_s > 0 { let current_time = board.board_hal.get_time().await; let last_fertilizer = board.board_hal.get_esp().last_fertilizer_time(plant_id); - let elapsed_minutes = (current_time.timestamp() - last_fertilizer) / 60; - + // Convert last_fertilizer from milliseconds to seconds for correct subtraction + let elapsed_minutes = ((current_time.timestamp_millis() - last_fertilizer) / 1000) / 60; + info!("Fertilizer pump cooldown check - Current time: {}, Last fertilizer: {}, Elapsed minutes: {}", current_time, last_fertilizer, elapsed_minutes); if elapsed_minutes >= plant_config.fertilizer_cooldown_min as i64 { info!( "Starting fertilizer pump for {} seconds (last fertilizer was {} minutes ago)", @@ -717,6 +718,7 @@ pub async fn do_secure_pump( &elapsed_minutes.to_string(), "", ); + info!("Fertilizer pump applied - Current time: {}, Last fertilizer: {}, Elapsed minutes: {}", current_time, last_fertilizer, elapsed_minutes); board.board_hal.fertilizer_pump(true).await?; Timer::after_millis(plant_config.fertilizer_s as u64 * 1000).await; board.board_hal.fertilizer_pump(false).await?;