You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: config/packages/README.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,6 +39,7 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this
39
39
| Package | What it unlocks | Notable entities / services |
40
40
| --- | --- | --- |
41
41
|[alarm.yaml](alarm.yaml)| NodeMCU-powered perimeter monitoring with arm/disarm helpers and rich notifications. |`binary_sensor.mcu*_gpio*`, `group.family`, notify + siren scripts |
42
+
|[alexa_media_player.yaml](alexa_media_player.yaml)| Alexa Media helper sensors including stable bedroom wake-alarm wrappers for Carlo and Stacey plus a combined next-wake view. |`sensor.last_alexa`, `sensor.bedroom_next_wake_alarm`, `sensor.bedroom_next_wake_alarm_source`, `binary_sensor.bedroom_next_wake_alarm_active`|
42
43
|[garadget.yaml](garadget.yaml)| MQTT-based control + status for both garage doors, feeding entry/exit lighting routines. |`cover.large_garage_door`, `cover.small_garage_door`, `sensor.garadget_reflection`|
43
44
|[august.yaml](august.yaml)| Front-door August smart lock with Alexa Show camera pop-up when unlocked. |`lock.front_door`, media_player actions for front doorbell camera |
44
45
|[holiday.yaml](holiday.yaml)| REST-driven US holiday + flag sensors that color scenes and exterior lighting. |`sensor.holiday`, `sensor.flag`, JSON feed at `config/json_data/holidays.json`|
@@ -54,7 +55,7 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this
54
55
|[mariadb.yaml](mariadb.yaml)| MariaDB recorder health and capacity SQL sensors. |`sensor.mariadb_status`, `sensor.database_size`|
55
56
|[tugtainer_updates.yaml](tugtainer_updates.yaml)| Tugtainer container update notifications via webhook + persistent alerts, plus event-based Joanna dispatch when reports include `### Available:` (24h cooldown via `mode: single` + delay, no new helpers). |`persistent_notification.create`, `event: tugtainer_available_detected`, `script.joanna_dispatch`, `input_datetime.tugtainer_last_update`|
56
57
|[bearclaw.yaml](bearclaw.yaml)| Joanna/BearClaw bridge automations that forward Telegram commands to codex_appliance, include LLM-first routing context for freeform text, relay replies back, ingest `/api/bearclaw/status` telemetry, and expose dispatch plus QMD/memory-index sensors for Infrastructure dashboards. |`rest_command.bearclaw_*`, `sensor.bearclaw_status_telemetry`, `sensor.joanna_*`, `binary_sensor.joanna_*`, `automation.bearclaw_*`, `script.send_to_logbook`|
57
-
|[telegram_bot.yaml](telegram_bot.yaml)| Telegram transport package for BearClaw and other ops flows; the shared `joanna_send_telegram` helper now lives under `config/script/`. |`telegram_bot.send_message`, `script.joanna_send_telegram`|
58
+
|[telegram_bot.yaml](telegram_bot.yaml)| Telegram transport package for BearClaw and other ops flows; the shared `joanna_send_telegram` helper now lives under `config/script/`. |`telegram_bot.send_message`, `script.joanna_send_telegram`|
58
59
|[phynplus.yaml](phynplus.yaml)| Phyn shutoff automations with push + Activity feed + Repairs issues for leak events. |`valve.phyn_shutoff_valve`, `binary_sensor.phyn_leak_test_running`, `repairs.create`|
59
60
|[water_delivery.yaml](water_delivery.yaml)| ReadyRefresh delivery date helper with night-before + garage door Alexa reminders, plus helper-change audit logging and Telegram confirmations. |`input_datetime.water_delivery_date`, `script.send_to_logbook`, `script.joanna_send_telegram`, `notify.alexa_media_garage`|
60
61
|[vacation_mode.yaml](vacation_mode.yaml)| Auto-enable vacation mode after 24 hours away or no bed use, track sitter analytics/secure-house checks, and deliver Chromecast-first vacation briefings with a garage Alexa welcome. |`input_boolean.vacation_mode`, `input_boolean.house_sitter_present`, `sensor.vacation_house_sitter_*`, `group.garage_doors`, `lock.front_door`, `script.notify_engine`, `script.joanna_send_telegram`|
{% set invalid = ['unknown', 'unavailable', 'none', ''] %}
26
+
{% set primary = states('sensor.carlo_bedroom_next_alarm') %}
27
+
{% set secondary = states('sensor.carlo_bedroom_next_alarm_2') %}
28
+
{% set value = primary if primary not in invalid else secondary %}
29
+
{% set ts = as_timestamp(value, none) %}
30
+
{{ ts | timestamp_local if ts is not none else none }}
31
+
- name: "Stacey Bedroom Wake Alarm"
32
+
unique_id: stacey_bedroom_wake_alarm
33
+
device_class: timestamp
34
+
icon: mdi:alarm
35
+
state: >
36
+
{% set invalid = ['unknown', 'unavailable', 'none', ''] %}
37
+
{% set primary = states('sensor.stacey_bedroom_next_alarm') %}
38
+
{% set secondary = states('sensor.stacey_bedroom_next_alarm_2') %}
39
+
{% set value = primary if primary not in invalid else secondary %}
40
+
{% set ts = as_timestamp(value, none) %}
41
+
{{ ts | timestamp_local if ts is not none else none }}
42
+
- name: "Bedroom Next Wake Alarm"
43
+
unique_id: bedroom_next_wake_alarm
44
+
device_class: timestamp
45
+
icon: mdi:alarm
46
+
state: >
47
+
{% set now_ts = as_timestamp(now()) %}
48
+
{% set max_ts = now_ts + 172800 %}
49
+
{% set carlo_raw = states('sensor.carlo_bedroom_next_alarm') %}
50
+
{% set carlo_fallback = states('sensor.carlo_bedroom_next_alarm_2') %}
51
+
{% set stacey_raw = states('sensor.stacey_bedroom_next_alarm') %}
52
+
{% set stacey_fallback = states('sensor.stacey_bedroom_next_alarm_2') %}
53
+
{% set carlo_ts = as_timestamp(carlo_raw, none) if carlo_raw not in ['unknown', 'unavailable', 'none', ''] else as_timestamp(carlo_fallback, none) %}
54
+
{% set stacey_ts = as_timestamp(stacey_raw, none) if stacey_raw not in ['unknown', 'unavailable', 'none', ''] else as_timestamp(stacey_fallback, none) %}
55
+
{% set carlo_ok = carlo_ts is not none and carlo_ts >= (now_ts - 900) and carlo_ts <= max_ts %}
56
+
{% set stacey_ok = stacey_ts is not none and stacey_ts >= (now_ts - 900) and stacey_ts <= max_ts %}
57
+
{% if carlo_ok and stacey_ok %}
58
+
{{ [carlo_ts, stacey_ts] | min | timestamp_local }}
59
+
{% elif carlo_ok %}
60
+
{{ carlo_ts | timestamp_local }}
61
+
{% elif stacey_ok %}
62
+
{{ stacey_ts | timestamp_local }}
63
+
{% else %}
64
+
{{ none }}
65
+
{% endif %}
66
+
- name: "Bedroom Next Wake Alarm Source"
67
+
unique_id: bedroom_next_wake_alarm_source
68
+
icon: mdi:account-voice
69
+
state: >
70
+
{% set now_ts = as_timestamp(now()) %}
71
+
{% set max_ts = now_ts + 172800 %}
72
+
{% set carlo_raw = states('sensor.carlo_bedroom_next_alarm') %}
73
+
{% set carlo_fallback = states('sensor.carlo_bedroom_next_alarm_2') %}
74
+
{% set stacey_raw = states('sensor.stacey_bedroom_next_alarm') %}
75
+
{% set stacey_fallback = states('sensor.stacey_bedroom_next_alarm_2') %}
76
+
{% set carlo_ts = as_timestamp(carlo_raw, none) if carlo_raw not in ['unknown', 'unavailable', 'none', ''] else as_timestamp(carlo_fallback, none) %}
77
+
{% set stacey_ts = as_timestamp(stacey_raw, none) if stacey_raw not in ['unknown', 'unavailable', 'none', ''] else as_timestamp(stacey_fallback, none) %}
78
+
{% set carlo_ok = carlo_ts is not none and carlo_ts >= (now_ts - 900) and carlo_ts <= max_ts %}
79
+
{% set stacey_ok = stacey_ts is not none and stacey_ts >= (now_ts - 900) and stacey_ts <= max_ts %}
{% set carlo_raw = states('sensor.carlo_bedroom_next_alarm') %}
98
+
{% set carlo_fallback = states('sensor.carlo_bedroom_next_alarm_2') %}
99
+
{% set stacey_raw = states('sensor.stacey_bedroom_next_alarm') %}
100
+
{% set stacey_fallback = states('sensor.stacey_bedroom_next_alarm_2') %}
101
+
{% set carlo_ts = as_timestamp(carlo_raw, none) if carlo_raw not in ['unknown', 'unavailable', 'none', ''] else as_timestamp(carlo_fallback, none) %}
102
+
{% set stacey_ts = as_timestamp(stacey_raw, none) if stacey_raw not in ['unknown', 'unavailable', 'none', ''] else as_timestamp(stacey_fallback, none) %}
103
+
{% set carlo_ok = carlo_ts is not none and carlo_ts >= (now_ts - 900) and carlo_ts <= max_ts %}
104
+
{% set stacey_ok = stacey_ts is not none and stacey_ts >= (now_ts - 900) and stacey_ts <= max_ts %}
# Notes: Keeps 180 days (1/2 year); excludes vcloudinfo pings, noisy connectivity telemetry, and other high-churn entities; MariaDB via recorder_db_url.
9
+
# Notes: Keeps 180 days (1/2 year); excludes vcloudinfo pings, noisy connectivity telemetry, countdown-style alarm helpers, and other high-churn entities; MariaDB via recorder_db_url.
0 commit comments