checks / unit (pull_request) Successful in 8m8s
- DOCS.md / config.yaml: the watchdog's P1 age entity is sensor.goodwe_p1_sample_age (device "GoodWe" + "P1 sample age", as app/mqtt.py announces and the live install recorded), not sensor.p1_sample_age_s. - DOCS.md: the inverters: example and per-entry table carry the required bms_soc_floor (and capacity_kwh); config.yaml's schema comment says four required keys, not three. - Field guide: marked v0.1.0/outdated; slew_w row no longer recommends the 1000 W that SAFETY-39 now refuses. HTML regenerated; the PDF is NOT rebuilt (no Chrome here). README/DOCS pointers fixed. - test_docs.py: the documented roster must pass app/validate.py and the schema's per-entry keys; the documented entity id must equal the id composed from app/mqtt.py; the wrong id may appear in no shipped doc. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BwRLw7eKYj2byVdwB6kbjU
47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# Field Guide
|
|
|
|
The guide technicians carry is the PDF:
|
|
|
|
**`docs/GoodWe-RS485-Field-Guide.pdf`** — 10 pages, A4, print it double-sided.
|
|
|
|
⚠️ **Outdated: it is v0.1.0.** Its `slew_w` row is corrected in `build_guide.py`
|
|
and `field-guide.html`, but the PDF has not been rebuilt (see below). Where the
|
|
guide disagrees with `goodwe_controller/DOCS.md`, DOCS.md wins.
|
|
|
|
It covers, in the order the work is done: pre-visit checks, hardware, firmware,
|
|
add-on install and configuration, how to read the Web UI, the six commissioning
|
|
gates, the e-stop (and the statement a site without one must sign), proving a
|
|
maintenance cycle, handover with a sign-off sheet, and troubleshooting.
|
|
|
|
## Editing it
|
|
|
|
The text lives in `docs/build_guide.py` — deliberately one source, so a Markdown
|
|
copy cannot drift from the PDF someone is holding in a cellar.
|
|
|
|
```bash
|
|
python3 docs/build_guide.py # regenerates field-guide.html and the PDF
|
|
```
|
|
|
|
Requires Chrome or Chromium (used headless for print-to-PDF); `CHROME` in the
|
|
script is a Windows path, so edit it on any other machine. Screenshots live
|
|
in `docs/img/` and are base64-embedded, so `field-guide.html` is standalone.
|
|
|
|
⚠️ **Every section must stay under the A4 printable height** (1039 px at 96 dpi
|
|
with the configured margins). Chrome silently spills an over-long section onto a
|
|
second page, and the pagination stops matching the step numbers. After editing,
|
|
open `field-guide.html` and check:
|
|
|
|
```js
|
|
document.querySelectorAll('.page').forEach(el =>
|
|
console.log(el.getBoundingClientRect().height)) // each must be < 1039
|
|
```
|
|
|
|
The PDF should always come out at exactly **one page per section**.
|
|
|
|
## Regenerating the screenshots
|
|
|
|
`docs/img/ui-running.png` and `ui-notready.png` are real captures of the add-on's
|
|
own Web UI, taken by running it against stub data. If the UI changes, retake them
|
|
— a field guide showing a screen that no longer exists is worse than one with no
|
|
screenshots at all.
|