diff --git a/CONTEXT.md b/CONTEXT.md index db29b64..e195b48 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -7,7 +7,7 @@ Fetches unread articles from FreshRSS, selects and summarizes them via Ollama, t Forked from `Seth/PrinterAutomation` on Gitea. ## Components -- `pos_briefing.py` — Main script. Run directly or via cron. +- `pos_briefing.py` — Main script. Run directly or via the MQTT bridge (Google Home button). - `config.json` — Credentials and endpoints (not committed). - `config.example.json` — Template for config.json. @@ -47,11 +47,12 @@ Forked from `Seth/PrinterAutomation` on Gitea. - **Uptime Kuma:** CT 147 — queried via `pct exec 147` (requires Proxmox host). - **This script runs on:** steel141 (`192.168.0.141`). Previously CT 166 (retired). -## Cron -Runs daily at 04:30 via crontab on steel141: -``` -30 4 * * * python3 /root/bin/POS-Automation/pos_briefing.py >> /var/log/pos_briefing.log 2>&1 -``` +## Trigger +On-demand only — **no cron**. Google Home button → HA `script.print_daily_briefing` +→ MQTT `posbriefing/button/press` on broker CT 301 (192.168.0.154) → +`pos-briefing-mqtt.service` on steel141 (systemd, `User=claude`) → `pos_briefing.py` +→ printer discovered by MAC → ESC/POS over TCP. See `docs/ha-setup.md` and +`docs/superpowers/specs/2026-06-07-ha-google-home-trigger-design.md`. ## Setup ```bash diff --git a/DECISIONS.md b/DECISIONS.md new file mode 100644 index 0000000..ca49ff2 --- /dev/null +++ b/DECISIONS.md @@ -0,0 +1,35 @@ +# POS-Automation — Decisions + +Format: `YYYY-MM-DD: ` + +- **2026-06-07: On-demand trigger via MQTT bridge (lgtv pattern), not cron.** Seth + wants a Google Home button, not a scheduled print. Bridge `pos-briefing-mqtt.service` + (systemd, `User=claude`) on steel141 subscribes to `posbriefing/button/press` on + broker CT 301 (192.168.0.154); HA exposes a `script` to Google as a Scene (button). + The earlier "schedule 4:58am/3pm" was never a real cron job — that commit only + edited SESSION.md. +- **2026-06-07: Printer discovered by MAC `50:57:9c:eb:0f:07`, not a fixed IP.** The + TM-m30's IP changes on every reboot (router DHCP, no reservation). Cache last IP + (`~/.cache/pos-briefing/last_ip`), verify by MAC + port, sweep the /24 on a miss. + A router DHCP reservation would make this belt-and-suspenders but isn't required. +- **2026-06-07: Summaries on `gemma4:26b`; story selection stays on a fast model.** + Seth asked to switch summaries to gemma4. gemma4:26b under `format:json` ignores + the bare-array instruction and emits a reasoning object (`{"thought": ...}`), which + broke Phase-1 selection. Selection now uses `ollama_select_model` (default + `qwen2.5:1.5b`); summaries use `ollama_model` = `gemma4:26b`. Also better latency + for an interactive button. +- **2026-06-07: yfinance installed on steel141** via `pip --user --break-system-packages` + (PEP 668). It was missing after the CT 166 → steel141 migration — the original + "not firing" had two causes: no cron ever installed + this missing dependency. +- **2026-06-07: paho-mqtt v1 callbacks (`CallbackAPIVersion.VERSION1`).** paho 2.1.0 + is installed for `claude`; matches the working lgtv bridge. One-time deprecation + warning at startup is harmless. + +## Deferred / Rejected +- **Print latency (~1–2 min/press):** gemma4:26b summarization (+ yfinance) dominates. + Acceptable for v1; the button returns immediately and `posbriefing/status` tracks + progress. Optimize later (model keep-alive, fewer/shorter summaries) if it annoys. +- **Router DHCP reservation for the printer:** Seth's router action; MAC discovery + makes it optional. Add if convenient to drop the sweep fallback. +- **zfs/reddit/grafana dashboard fields return None on steel141** (not the tank/ZFS + host; `cannot open 'tank'`). Out of scope for the trigger work — track separately.