Fix fertilizer calculation and logging

This commit is contained in:
2026-05-26 02:03:19 +02:00
parent bd5b687430
commit fe2d227c67
2 changed files with 9 additions and 2 deletions

View File

@@ -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}");
}
}
}
}

View File

@@ -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?;