canbus: presence layer + departure failsafes
Water heater = occupancy truth. New Pi package campsite_presence.yaml: rv_occupied + phones_on_campsite_wifi template sensors (wifi one stays unavailable until the MikroTik integration lands — load-bearing for the dead-man trigger), MQTT bridging home, a local notify-only dead-man (heater on, no phones on WiFi 3h), and disabled pre-staged lot-light automations for the future shed Shelly. dsi_fault_alert.yaml gains the Octavia MQTT relay (campsite/octavia/say) so home HA — which has no file access — can speak through the verified webhook path. Home-side (UI-managed, not in repo): quick failsafe (both out of the enlarged 150m campsite zone 25 min → fans/lights off + summary ping) and heater failsafe (2h → heater off with bridge round-trip confirmation). Both verified live; fan states snapshot-restored after the test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,25 @@ rest_command:
|
||||
"allowed_mentions": {"users": ["321798967669030912"]}}
|
||||
|
||||
automation:
|
||||
# --- Octavia relay: anything on the broker can speak through the one
|
||||
# verified webhook path. Home HA's failsafe automations publish here
|
||||
# (campsite/octavia/say, payload = the message) since home has no
|
||||
# file/packages access for its own rest_command. ---
|
||||
- id: campsite_octavia_relay
|
||||
alias: "Octavia: MQTT relay"
|
||||
triggers:
|
||||
- trigger: mqtt
|
||||
topic: "campsite/octavia/say"
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.payload | length > 0 and trigger.payload | length < 1900 }}"
|
||||
actions:
|
||||
- action: rest_command.discord_server_alerts
|
||||
data:
|
||||
message: "{{ trigger.payload }}"
|
||||
mode: queued
|
||||
max: 5
|
||||
|
||||
- id: camper_dsi_fault_discord
|
||||
alias: "Camper: DSI fault → Discord"
|
||||
description: >-
|
||||
|
||||
Reference in New Issue
Block a user