feat: add fertilizer cooldown functionality with web UI, HAL integration, and configuration support
This commit is contained in:
@@ -715,13 +715,33 @@ pub async fn do_secure_pump(
|
||||
let mut pump_time_ms: u32 = 0;
|
||||
|
||||
if !dry_run {
|
||||
// Run fertilizer pump first if configured
|
||||
// Run fertilizer pump first if configured and not in cooldown
|
||||
if plant_config.fertilizer_s > 0 {
|
||||
info!("Starting fertilizer pump for {} seconds", plant_config.fertilizer_s);
|
||||
board.board_hal.extra2(true).await?;
|
||||
Timer::after_millis(plant_config.fertilizer_s as u64 * 1000).await;
|
||||
board.board_hal.extra2(false).await?;
|
||||
info!("Fertilizer pump stopped");
|
||||
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;
|
||||
|
||||
if elapsed_minutes >= plant_config.fertilizer_cooldown_min as i64 {
|
||||
info!("Starting fertilizer pump for {} seconds (last fertilizer was {} minutes ago)",
|
||||
plant_config.fertilizer_s, elapsed_minutes);
|
||||
log(
|
||||
LogMessage::FertilizerApplied,
|
||||
plant_config.fertilizer_s as u32,
|
||||
(plant_id + 1) as u32,
|
||||
&elapsed_minutes.to_string(),
|
||||
"",
|
||||
);
|
||||
board.board_hal.extra2(true).await?;
|
||||
Timer::after_millis(plant_config.fertilizer_s as u64 * 1000).await;
|
||||
board.board_hal.extra2(false).await?;
|
||||
info!("Fertilizer pump stopped");
|
||||
|
||||
// Store the current time as last fertilizer time
|
||||
board.board_hal.get_esp().store_last_fertilizer_time(plant_id, current_time);
|
||||
} else {
|
||||
let remaining_minutes = plant_config.fertilizer_cooldown_min as i64 - elapsed_minutes;
|
||||
info!("Skipping fertilizer (cooldown: {} minutes remaining)", remaining_minutes);
|
||||
}
|
||||
}
|
||||
|
||||
board.board_hal.get_tank_sensor()?.reset_flow_meter();
|
||||
|
||||
Reference in New Issue
Block a user