Problem / motivation
--speak announces every tick by design (poll.py's speech_for_probes()), which is great mid-day but can be a lot for a long overnight cook — there's currently no way to reduce frequency or silence it during, say, 11pm-7am without just turning --speak off entirely (losing updates you might still want at the next check).
Proposed solution
--speak-every N (default 1): only call speak() every Nth tick with new content, rather than every tick. Printed/logged output and alarms are unaffected — this only paces the spoken announcement.
--quiet-hours HH:MM-HH:MM: suppress speak() (but not alarms — a probe/pellet/anomaly alert should still fire) during a local time window.
- Both should be easy to reason about against the existing
_update_count/_last_state machinery in poll.py — the comparative "what changed" narration still needs to compare against the actual previous tick's data, not the previous spoken tick, so the stall/ETA-delta logic must keep sampling every tick even when it doesn't speak.
Alternatives considered
Only mentioning rate-of-change (skip "steady" ticks entirely) — narrower than configurable pacing, and doesn't address the quiet-hours use case at all.
Problem / motivation
--speakannounces every tick by design (poll.py'sspeech_for_probes()), which is great mid-day but can be a lot for a long overnight cook — there's currently no way to reduce frequency or silence it during, say, 11pm-7am without just turning--speakoff entirely (losing updates you might still want at the next check).Proposed solution
--speak-every N(default 1): only callspeak()every Nth tick with new content, rather than every tick. Printed/logged output and alarms are unaffected — this only paces the spoken announcement.--quiet-hours HH:MM-HH:MM: suppressspeak()(but not alarms — a probe/pellet/anomaly alert should still fire) during a local time window._update_count/_last_statemachinery in poll.py — the comparative "what changed" narration still needs to compare against the actual previous tick's data, not the previous spoken tick, so the stall/ETA-delta logic must keep sampling every tick even when it doesn't speak.Alternatives considered
Only mentioning rate-of-change (skip "steady" ticks entirely) — narrower than configurable pacing, and doesn't address the quiet-hours use case at all.