Skip to content

disable MQTT sensor bundles (bme280, co2mon) - #42

Merged
bborbe merged 1 commit into
masterfrom
feature/disable-mqtt-sensors
Aug 16, 2026
Merged

disable MQTT sensor bundles (bme280, co2mon)#42
bborbe merged 1 commit into
masterfrom
feature/disable-mqtt-sensors

Conversation

@bborbe

@bborbe bborbe commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Why

The MQTT broker rasp4.hm.benjamin-borbe.de was decommissioned — no DNS record anywhere, no nodes/hm.rasp4.py. Its successor homeassistant.hm.benjamin-borbe.de (192.168.177.8) is alive (HTTP 200 on :8123) but runs no MQTT listener:1883 and :8883 both refuse connections.

The whole consumer chain is already off: mosquitto, telegraf, influxdb and grafana are enabled on zero nodes. Only the three producer bundles were still enabled, publishing into a void.

This was invisible to the monthly sweep: bme280 on rasp3 stays active with NRestarts=0 while failing DNS in an in-process retry loop, so systemd, bw apply and bw verify all reported it healthy.

Not needed right now, so disable it — reversibly.

What

Flip enabled to False in three node metadata blocks:

File Block
nodes/hm.rasp3.py bme280
nodes/hm.co2hz.py co2mon
nodes/hm.co2wz.py co2mon

No bundle code changes — both bundles already implement a complete teardown in their else: branch (stop + disable the service, delete user/group and /opt/<svc>, and for co2mon the 90-co2mini.rules udev rule).

All mqtt-* metadata is deliberately left in place so re-enabling is a one-line flip, and each site carries a comment explaining why and what re-enabling requires.

Re-enable checklist (for later)

  1. Flip the flags back to True
  2. Repoint mqtt-host from rasp4 to the live broker
  3. Start Home Assistant's Mosquitto broker add-on
  4. Give rasp3 a route to 192.168.177.0/24 — it currently has internet but no path to that subnet (default via 192.168.50.1, tun0 carries only 172.16.90.0/24)

Testing

  • bw test hm.rasp3 hm.co2hz hm.co2wz passes
  • bw metadata confirms all three resolve to enabled = False
  • bw items hm.rasp3 shows the teardown items (file:/opt/bme280, user:bme280, group:bme280, svc_systemd:bme280)

Note

hm.co2hz and hm.co2wz are currently unreachable (answer ICMP, :22 times out — suspected openvpn-client rollout regression, co2hz was the canary in 3acddbc). Their flip is declarative only and takes effect when they return. Only hm.rasp3 can be applied now.

The MQTT broker rasp4.hm.benjamin-borbe.de was decommissioned (no DNS
record, no node file). Its successor homeassistant.hm.benjamin-borbe.de
is alive but runs no MQTT listener (:1883 and :8883 both refuse), and
the entire consumer chain (mosquitto, telegraf, influxdb, grafana) is
enabled on zero nodes.

The three producer bundles were therefore publishing into a void:
bme280 on rasp3 stayed 'active' with NRestarts=0 while failing DNS in a
retry loop, so systemd and bw verify both reported it healthy.

Flip the enabled flags to False. Both bundles already implement a full
teardown in their else-branch (stop/disable service, delete user, group
and /opt/<svc>, plus the udev rule for co2mon).

All mqtt-* metadata is left in place so re-enabling is a one-line flip.
Re-enabling additionally requires repointing mqtt-host to the live
broker, starting Home Assistant's Mosquitto add-on, and giving rasp3 a
route to 192.168.177.0/24.

co2hz and co2wz are currently unreachable (ICMP up, :22 drops), so
their flip is declarative until they return.

@ben-s-pull-request-reviewer ben-s-pull-request-reviewer 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.

The only triggers in the index matching non-Go/Node files are CHANGELOG.md, CLAUDE.md, LICENSE*, Makefile, go.mod, **/*.md, etc. The changed files (nodes/hm.co2hz.py, nodes/hm.co2wz.py, nodes/hm.rasp3.py) match none of these — they're Python node configuration files with no corresponding rule triggers.

Step 4b-i result: 0 candidates.

Per the selector-mode guide short-circuit: applicable set is empty AND mechanical findings are empty → selector clean — no adjudication needed.


PR Review Report

PR: disable MQTT sensor bundles (bme280, co2mon) — #42
Base: master ← Head: feature/disable-mqtt-sensors

Selector Mode Traceability

  • Candidates: 0 rules matched by Step 4b-i glob filter
  • Applicable: 0 rules selected by Step 4c-sel
  • Skipped: (none — no candidates to evaluate)

Must Fix (Critical)

None.

Should Fix (Important)

None.

Nice to Have (Optional)

None.


Summary

The PR disables two MQTT sensor bundles (co2mon on hm.co2hz/hm.co2wz, bme280 on hm.rasp3) by setting enabled: False. The embedded comments explain the decommissioned broker context and the re-enablement procedure clearly. The change is a correct, low-risk configuration disable — no mechanical findings, no applicable judgment rules, and no code-quality issues.

Notes

  • LICENSE present ✓
  • precommit skipped (selector mode) — CI covers lint+test
  • Step 4 skipped: no rule-relevant files changed

No worktree cleanup needed — we were already at PR head on the feature branch worktree.

{
  "verdict": "approve",
  "summary": "Clean PR that correctly disables decommissioned MQTT sensor bundles with well-written comments explaining the decommission and re-enablement procedure. No mechanical findings, no applicable rules, no code quality issues.",
  "comments": [],
  "concerns_addressed": [
    "correctness: co2mon bundle disabled with clear comment explaining rasp4 broker decommission — addressed in nodes/hm.co2hz.py and nodes/hm.co2wz.py",
    "correctness: bme280 bundle disabled with clear comment explaining rasp4 broker decommission — addressed in nodes/hm.rasp3.py"
  ]
}

@bborbe
bborbe merged commit 2291d91 into master Aug 16, 2026
2 checks passed
@bborbe
bborbe deleted the feature/disable-mqtt-sensors branch August 16, 2026 11:57

@ben-s-pull-request-reviewer ben-s-pull-request-reviewer 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.

Based on my review of the diff, here is my consolidated report:


PR Review: disable MQTT sensor bundles (bme280, co2mon)

No changes to review — the diff is well-structured and introduces no issues.

Must Fix (Critical)

None.

Should Fix (Important)

None.

Nice to Have (Optional)

None.

Selector Mode Traceability

  • Candidates: 0 (rules/index.json not accessible from this environment — selector-path blocked)
  • Applicable: 0
  • Skipped: selector-path unavailable (rules not mounted in pod) — falling back to manual review

Notes:

  • The 3-file diff is a textbook feature-disable: each enabled: True → False change is accompanied by a detailed comment explaining why (rasp4.hm.borbe.de decommissioned, successor has no MQTT listener), the impact (was publishing to void), and the re-enablement path (flip flag + repoint mqtt-host + bring up mosquitto + restore network route for rasp3). No stale code or credentials are being introduced; everything left in place is intentional for re-enablement.
  • The plan's noted concerns about the stale mqtt-host references are fully addressed by the commit message and inline comments — re-enabling requires updating those fields, and that requirement is documented inline at each site.

Concerns addressed:

  • correctness: mqtt-host references decommissioned rasp4.hm.benjamin-borbe.de in nodes/hm.co2hz.py → addressed: intentional, documented inline
  • correctness: mqtt-host references decommissioned rasp4.hm.benjamin-borbe.de in nodes/hm.co2wz.py → addressed: intentional, documented inline
  • correctness: mqtt-host references decommissioned rasp4.hm.benjamin-borbe.de in nodes/hm.rasp3.py + no route to 192.168.177.0/24 → addressed: intentional, documented inline; route requirement called out explicitly

{
  "verdict": "approve",
  "summary": "Clean feature-disable PR: 3 node config files flip enabled flags to False with thorough inline documentation explaining the decommissioned MQTT broker, the void-publishing problem, and the exact re-enablement steps required. No issues found.",
  "comments": [],
  "concerns_addressed": [
    "correctness: mqtt-host references decommissioned rasp4.hm.benjamin-borbe.de in nodes/hm.co2hz.py — addressed by inline comment and commit message documenting intentional deactivation and re-enablement path",
    "correctness: mqtt-host references decommissioned rasp4.hm.benjamin-borbe.de in nodes/hm.co2wz.py — addressed by inline comment and commit message documenting intentional deactivation and re-enablement path",
    "correctness: mqtt-host references decommissioned rasp4.hm.benjamin-borbe.de in nodes/hm.rasp3.py with no route to 192.168.177.0/24 — addressed by inline comment and commit message documenting intentional deactivation and re-enablement path including route requirement"
  ]
}

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