Skip to content

fix: move solar pump relay to R4 (GPIO2), add RC snubber docs#165

Open
stritti wants to merge 4 commits into
mainfrom
fix/relay-r4-solar-pump
Open

fix: move solar pump relay to R4 (GPIO2), add RC snubber docs#165
stritti wants to merge 4 commits into
mainfrom
fix/relay-r4-solar-pump

Conversation

@stritti

@stritti stritti commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Solar pump relay moved from defunct R1 (GPIO12 — welded contact) to R4 (GPIO2) on NORVI AE01-R.

Changes

Code

  • src/Config.hppPIN_RELAY_SOLAR = 2 (R4), static_assert blocks GPIO12, comment neutralized

Docs

  • norvi-ae01-r.md / .de.md — Pin table, wiring diagram, pin reference, and snubber section updated to R4
  • contactor-guide.md / .de.md — ECM pump note, neutral field report, wiring/steps on R4
  • wiring-contactor.svg — new wiring diagram

Hardware

  • ⚠️ RC snubber (100nF + 100Ω) recommended across relay contacts for ECM capacitive inrush protection

@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

MegaLinter analysis: Error

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ ACTION actionlint 9 0 0 0.39s
✅ BASH bash-exec 1 0 0 0.3s
✅ BASH shellcheck 1 0 0 0.27s
✅ BASH shfmt 1 0 0 0.01s
✅ C clang-format 1 0 0 0.05s
✅ C cppcheck 1 0 0 0.03s
✅ C cpplint 1 0 0 0.33s
❌ CPP clang-format 64 1 0 0.51s
✅ CPP cppcheck 64 0 0 8.06s
✅ CPP cpplint 64 0 0 6.23s
✅ EDITORCONFIG editorconfig-checker 236 0 0 0.68s
✅ JSON jsonlint 6 0 0 0.12s
✅ JSON v8r 6 0 0 3.64s
⚠️ MARKDOWN markdownlint 96 1 0 3.85s
✅ YAML yamllint 25 0 0 0.84s

Detailed Issues

❌ CPP / clang-format - 1 error
src/StatusLed.cpp:44:103: error: code should be clang-formatted [-Wclang-format-violations]
    Serial.printf("• StatusLed using config pin GPIO %d (board-specific, LED_BUILTIN overridden)\n",
⚠️ MARKDOWN / markdownlint - 1 error
docs/contactor-guide.de.md:160:38 error MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

See detailed reports in MegaLinter artifacts

Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)

  • Documentation: Custom Flavors
  • Command: npx mega-linter-runner@9.6.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,BASH_EXEC,BASH_SHELLCHECK,BASH_SHFMT,C_CPPCHECK,C_CPPLINT,C_CLANG_FORMAT,CPP_CPPCHECK,CPP_CPPLINT,CPP_CLANG_FORMAT,EDITORCONFIG_EDITORCONFIG_CHECKER,JSON_JSONLINT,JSON_V8R,MARKDOWN_MARKDOWNLINT,YAML_YAMLLINT

MegaLinter is graciously provided by OX Security
Show us your support by starring ⭐ the repository

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 29f63ce345

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Config.hpp
Comment thread docs/contactor-guide.md Outdated
Comment thread docs/wiring-contactor.svg Outdated
stritti added 2 commits July 18, 2026 16:31
- hardware-guide.md/hardware-guide.de.md: fix breadboard image path
  from ../pool-controller_breadboard.png to pool-controller_breadboard.png
- quickstart.md: fix breadboard image URL (non-existent docs/images/
  subdirectory → docs/)
- quickstart.md, hardware-guide.md, hardware-guide.de.md: replace
  version-unstable raw/main GitHub URLs with relative file paths
- Config.hpp: PIN_RELAY_SOLAR → GPIO2 (R4), R1 now blocked by
  static_assert, neutral comment without field story
- norvi-ae01-r docs: update pin table, wiring diagram, pin reference,
  snubber section to use R4
- contactor-guide docs: add ECM pump note, neutral field report,
  wiring and steps updated to R4
- Hardware guides: nuanced recommendation (contactor >300W, snubber <100W)
@stritti
stritti force-pushed the fix/relay-r4-solar-pump branch from 29f63ce to d43ac69 Compare July 18, 2026 14:34
@github-actions

Copy link
Copy Markdown
Contributor

Native Test Coverage

Metric Value
Line Coverage 21.8%
Branch Coverage 61.3%
Lines Hit/Total 107/490
Branches Hit/Total 38/62

Report from native unit tests (ASan + gcov).

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d43ac69be8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/norvi-ae01-r.md Outdated
…date

- P1: StatusLed::begin() no longer overrides LED_BUILTIN when
  Config.hpp explicitly sets a different pin (NORVI GPIO27)
- P1: contactor-guide overview diagram — 230V L path replaced with
  24V DC (+) (mains must not enter control circuit)
- P2: wiring-contactor.svg — R5/GPIO33 → R4/GPIO2, 300-600W → 6-28W ECM
- P2: norvi-ae01-r direct-wiring sketch — added NO0/NO4 contacts

Addresses PR #165 review comments.
@stritti

stritti commented Jul 18, 2026

Copy link
Copy Markdown
Contributor Author

All four review items addressed in bc6b2db:

# Priority File Fix
P1 🔴 src/StatusLed.cpp StatusLed::begin() überschreibt ledPin_ nur noch wenn Config den Standardwert (2) hat — NORVI mit GPIO27 bleibt korrekt
P1 🔴 docs/contactor-guide.md Übersichtsdiagramm korrigiert: 230V L24V DC (+) im Steuerkreis
P2 🟡 docs/wiring-contactor.svg R5/GPIO33 → R4/GPIO2, 300–600W → 6–28W ECM
P2 🟡 docs/norvi-ae01-r.md Direct-Wiring-Skizze: COMNOPump L (Relaiskontakt in Serie)

@stritti

stritti commented Jul 18, 2026

Copy link
Copy Markdown
Contributor Author

@codex review please

@github-actions

Copy link
Copy Markdown
Contributor

Native Test Coverage

Metric Value
Line Coverage 21.8%
Branch Coverage 61.3%
Lines Hit/Total 107/490
Branches Hit/Total 38/62

Report from native unit tests (ASan + gcov).

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bc6b2db055

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/contactor-guide.md Outdated
Comment thread docs/contactor-guide.md Outdated
- P1: RC snubber capacitor must be X2-rated (mains safety) — specified in
  contactor-guide EN+DE and norvi-ae01-r EN+DE
- P1: DE contactor-guide overview diagram — 230V L → 24V DC (+)
- P2: EN contactor-guide overview diagram — N no longer labeled 'via contactor'
  (single-pole contactor only switches L)

Addresses PR #165 review comments.
@github-actions

Copy link
Copy Markdown
Contributor

Native Test Coverage

Metric Value
Line Coverage 21.8%
Branch Coverage 61.3%
Lines Hit/Total 107/490
Branches Hit/Total 38/62

Report from native unit tests (ASan + gcov).

@stritti

stritti commented Jul 18, 2026

Copy link
Copy Markdown
Contributor Author

@codex review please

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7fdbfd531d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/contactor-guide.md
Comment on lines +15 to +18
> **⚠️ Note:** ECM pumps (electronically commutated motors <100W) have
> large input capacitors that cause a brief high charging peak (10–20A
> for microseconds) each time the relay closes. Over many cycles this
> capacitive inrush can micro-weld relay contacts. An **RC snubber**

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Do not present an RC snubber as capacitive-inrush protection

For the stated failure mode—an ECM pump's input-capacitor inrush when the relay closes—an RC network placed across the relay contacts does not limit the closing current through those contacts; it is primarily for suppressing turn-off transients. Thus the new guidance can lead users to direct-wire a <100 W ECM pump and still repeatedly weld the relay. Recommend an inrush-limiting/pre-charge solution, a relay rated for capacitive loads, or retaining the contactor requirement instead.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant