canbus: decode the water-heater DSI fault + add fault binary_sensors
Forced a real lockout (captures/dsi-fault-*.log) and diffed vs the healthy baseline: - Water-heater DSI fault = node 95 page-3 b0 bit5 (0x20). Healthy 0x80/0x81, fault 0xA0. (Earlier suspects b1=FF and node AE were both wrong.) - Bus-wide "system fault present" = page-0 b0 bit0 (every node flips 02->03). Both wired into esphome/onecontrol-canbus.yaml as binary_sensor (device_class: problem). README + HANDOFF updated; DSI item closed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+15
-10
@@ -187,18 +187,23 @@ the app uses to build its UI.
|
||||
`6A`/`7F`/`9C` (movement — slide?), and find the battery SoC / "4 green lights"
|
||||
source.
|
||||
|
||||
### Planned: capture the DSI fault (2026-06-12)
|
||||
### DSI fault — decoded (2026-06-12, `captures/dsi-fault-*.log`)
|
||||
|
||||
The water-heater DSI fault is almost certainly on the bus, but every capture so
|
||||
far is of a *healthy* heater, so the fault encoding is unknown. **Plan:** close
|
||||
the propane tank valve, run the water heater on gas until it locks out (DSI fault
|
||||
light on the panel), capture ~20 s, then diff against a healthy baseline. Prime
|
||||
suspects (both sit at a constant "all-clear" value in current captures):
|
||||
- **node `95` (heater) page-3 `b1`** — always `0xFF`; expect it to drop a bit on fault.
|
||||
- **node `AE` (type 0x27, ?LP-gas/diagnostics) page-3** — always `0x00`; expect non-zero on fault.
|
||||
Forced a real lockout (propane valve closed, heater run on gas until it gave up)
|
||||
and diffed against the healthy baseline. Two signals:
|
||||
|
||||
Whichever flips → becomes a `binary_sensor` in the ESPHome node (the DSI fault
|
||||
the Bluetooth app never exposed). Reset = reopen valve, re-light.
|
||||
- **Water-heater DSI fault = node `95` page-3 `b0` bit5 (`0x20`).** Healthy heater
|
||||
reads `0x80` (off) or `0x81` (running); during the lockout it read **`0xA0`**
|
||||
(bit0 cleared, bit5 set) for every sample. Bit5 never appears healthy → it's
|
||||
the gas-ignition lockout flag. (`b1` stays `0xFF` and `node AE` stays `0x00` —
|
||||
the two earlier suspects were both wrong.)
|
||||
- **Bus-wide "system fault present" = page-0 `b0` bit0 (`0x01`).** *Every* node's
|
||||
page-0 `b0` flipped `0x02`→`0x03` during the fault, so any node carries a
|
||||
generic "a fault exists somewhere" flag.
|
||||
|
||||
Both are wired into the ESPHome node as `binary_sensor`s (`device_class:
|
||||
problem`) — the DSI fault the Bluetooth app never exposed. Reset = reopen valve,
|
||||
re-light.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user