# Water-heater DSI fault → Discord ping in the server-alerts channel. # # The CAN node decodes the heater's DSI lockout (node 95 page-3 b0 bit5 — # see canbus/README.md); when the burner fails to light (usually an empty # propane tank) the module latches the fault and this fires the webhook. # # Deploy to Pi: /config/packages/dsi_fault_alert.yaml # Repo copy: canbus/ha/dsi_fault_alert.yaml # Secret: discord_server_alerts_webhook in the Pi's /config/secrets.yaml # (NOT the Gatus webhook — that one posts somewhere Wes doesn't # read; this one is confirmed delivering to the alerts channel) rest_command: discord_server_alerts: url: !secret discord_server_alerts_webhook method: POST content_type: "application/json; charset=utf-8" payload: >- {"username": "Camper OneControl", "content": {{ message | tojson }}, "allowed_mentions": {"users": ["321798967669030912"]}} automation: - id: camper_dsi_fault_discord alias: "Camper: DSI fault → Discord" description: >- 10s 'for' debounces a single glitched broadcast frame; a real lockout is latched by the module so it easily survives the wait. triggers: - trigger: state entity_id: binary_sensor.onecontrol_can_water_heater_dsi_fault to: "on" for: "00:00:10" actions: - action: rest_command.discord_server_alerts data: message: >- <@321798967669030912> 🔥 **WATER HEATER DSI FAULT** — hey dumbass, you're out of propane again. (Or the igniter finally died, but let's be honest, it's the propane.) The heater is in lockout — swap the tank, then cycle the heater off/on to relight. mode: single - id: camper_dsi_fault_cleared_discord alias: "Camper: DSI fault cleared → Discord" triggers: - trigger: state entity_id: binary_sensor.onecontrol_can_water_heater_dsi_fault from: "on" to: "off" for: "00:00:10" actions: - action: rest_command.discord_server_alerts data: message: >- ✅ DSI fault cleared — the water heater is lighting again. Crisis averted. Try to remember this feeling next time you eyeball the tank gauge and say "eh, it's fine." mode: single