publish eve_orehold_watcher.py
This commit is contained in:
parent
ef950fdccd
commit
48fd3bcb17
1 changed files with 20 additions and 1 deletions
|
|
@ -335,6 +335,7 @@ def run_ocr(cp):
|
||||||
cooldown = cp.getint("watcher", "cooldown_secs", fallback=120)
|
cooldown = cp.getint("watcher", "cooldown_secs", fallback=120)
|
||||||
# stall = hold not growing -> lasers/drones stopped (depleted rock, idle drones)
|
# stall = hold not growing -> lasers/drones stopped (depleted rock, idle drones)
|
||||||
stall_secs = cp.getint("watcher", "stall_secs", fallback=150)
|
stall_secs = cp.getint("watcher", "stall_secs", fallback=150)
|
||||||
|
status_secs = cp.getint("watcher", "status_secs", fallback=90) # live Discord readout
|
||||||
|
|
||||||
region_s = cp.get("ocr", "region", fallback="").strip()
|
region_s = cp.get("ocr", "region", fallback="").strip()
|
||||||
if region_s:
|
if region_s:
|
||||||
|
|
@ -357,6 +358,9 @@ def run_ocr(cp):
|
||||||
last_stall_alert = 0.0
|
last_stall_alert = 0.0
|
||||||
misses = 0
|
misses = 0
|
||||||
samples = [] # recent (t, cur) for the live fill-rate estimate
|
samples = [] # recent (t, cur) for the live fill-rate estimate
|
||||||
|
rate_m3min = 0.0
|
||||||
|
last_status = 0.0
|
||||||
|
was_mining = False
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
img = grab_region(region)
|
img = grab_region(region)
|
||||||
|
|
@ -374,7 +378,22 @@ def run_ocr(cp):
|
||||||
if len(samples) >= 2 and (samples[-1][0] - samples[0][0]) >= 20:
|
if len(samples) >= 2 and (samples[-1][0] - samples[0][0]) >= 20:
|
||||||
dc = samples[-1][1] - samples[0][1]
|
dc = samples[-1][1] - samples[0][1]
|
||||||
dt = samples[-1][0] - samples[0][0]
|
dt = samples[-1][0] - samples[0][0]
|
||||||
write_rate(dc / dt * 60 if dc > 0 else 0.0, cur, cap)
|
rate_m3min = dc / dt * 60 if dc > 0 else 0.0
|
||||||
|
write_rate(rate_m3min, cur, cap)
|
||||||
|
# --- live status feed to Discord during a mining session ---
|
||||||
|
mining = bot_mining(cp)
|
||||||
|
if mining and not bot_muted(cp) and \
|
||||||
|
(not was_mining or time.time() - last_status >= status_secs):
|
||||||
|
free = cap - cur
|
||||||
|
if rate_m3min > 0:
|
||||||
|
full_at = int(time.time() + free / rate_m3min * 60)
|
||||||
|
tail = f"filling {rate_m3min:,.0f} m³/min · full <t:{full_at}:R>"
|
||||||
|
else:
|
||||||
|
tail = "not growing yet — lasers/drones idle?"
|
||||||
|
_discord(cp, "⛏️ Ore hold",
|
||||||
|
f"{pct:.0f}% ({cur:,}/{cap:,} m³) · {tail}")
|
||||||
|
last_status = time.time()
|
||||||
|
was_mining = mining
|
||||||
if pct < reset_pct:
|
if pct < reset_pct:
|
||||||
armed = True
|
armed = True
|
||||||
# --- still mining? (hold should be growing) ---
|
# --- still mining? (hold should be growing) ---
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue