# Conflicts: # .gitignore # config/packages/README.mdpull/1610/head
commit
b0cd52d11d
@ -1 +1 @@
|
|||||||
2026.3.2
|
2026.4.1
|
||||||
@ -1,3 +0,0 @@
|
|||||||
# Sensors:
|
|
||||||
# entities:
|
|
||||||
# # - binary_sensor.aeotec_dsb04100_doorwindow_sensor_sensor_3_0
|
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
######################################################################
|
||||||
|
# @CCOSTAN - Follow Me on X
|
||||||
|
# For more info visit https://www.vcloudinfo.com/click-here
|
||||||
|
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# GitHub Watched Repo Scout - Nightly Joanna review of watched repos
|
||||||
|
# Schedules Joanna to review unread watched-repo notifications for HA ideas.
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# Notes: Joanna native GitHub scout logic runs in docker_17/codex_appliance.
|
||||||
|
# Notes: Successfully processed watched-repo notifications are marked read by Joanna.
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
automation:
|
||||||
|
- id: github_watched_repo_scout_nightly
|
||||||
|
alias: GitHub Watched Repo Scout - Nightly Joanna Review
|
||||||
|
description: Ask Joanna nightly to review unread watched-repo GitHub notifications for Home Assistant ideas.
|
||||||
|
mode: single
|
||||||
|
trigger:
|
||||||
|
- platform: time
|
||||||
|
at: "03:15:00"
|
||||||
|
variables:
|
||||||
|
trigger_context: "HA automation github_watched_repo_scout_nightly (GitHub Watched Repo Scout - Nightly Joanna Review)"
|
||||||
|
action:
|
||||||
|
- service: script.send_to_logbook
|
||||||
|
data:
|
||||||
|
topic: "GITHUB"
|
||||||
|
message: "Requesting Joanna nightly watched-repo scout review."
|
||||||
|
- service: script.joanna_dispatch
|
||||||
|
data:
|
||||||
|
trigger_context: "{{ trigger_context }}"
|
||||||
|
source: "home_assistant_automation.github_watched_repo_scout_nightly"
|
||||||
|
summary: "Nightly GitHub watched-repo scout review for Home Assistant ideas"
|
||||||
|
diagnostics: >-
|
||||||
|
schedule=03:15:00,
|
||||||
|
inbox_scope=unread,
|
||||||
|
repo_scope=watched,
|
||||||
|
create_issues=true,
|
||||||
|
mark_read_on_success=true
|
||||||
|
request: >-
|
||||||
|
Review unread GitHub notifications from watched repositories only.
|
||||||
|
Look for interesting Home Assistant configuration ideas we could apply in
|
||||||
|
our own repo, send a concise nightly recap, create or refresh one
|
||||||
|
GitHub issue per strong candidate in CCOSTAN/Home-AssistantConfig, and
|
||||||
|
mark each watched-repo notification read only after it has been
|
||||||
|
processed successfully. Leave failed items unread for the next run.
|
||||||
@ -0,0 +1,99 @@
|
|||||||
|
######################################################################
|
||||||
|
# @CCOSTAN - Follow Me on X
|
||||||
|
# For more info visit https://www.vcloudinfo.com/click-here
|
||||||
|
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# Tesla Model Y - Arrival and nightly plug-in reminders
|
||||||
|
# Garage speech + parents push reminders when the Tesla comes home low.
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# Related Issue: 1279
|
||||||
|
# Notes: Expects Tesla Fleet UI entities `sensor.spaceship_battery_level`
|
||||||
|
# and `switch.spaceship_charge`.
|
||||||
|
# Notes: Uses `device_tracker.spaceship_location` for arrival/home state.
|
||||||
|
# Notes: The nightly parents reminder starts at 8 PM, waits until the
|
||||||
|
# car is home, then loops every 30 minutes via a custom event until it
|
||||||
|
# is charging or no longer home.
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
automation:
|
||||||
|
- alias: "Tesla Model Y - Garage Plug In Reminder"
|
||||||
|
id: 6a873341-c823-4d5d-9d42-fc2df52b93db
|
||||||
|
mode: restart
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id: device_tracker.spaceship_location
|
||||||
|
to: 'home'
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{ trigger.from_state is not none and
|
||||||
|
trigger.from_state.state not in ['home', 'unknown', 'unavailable'] }}
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set battery = states('sensor.spaceship_battery_level') %}
|
||||||
|
{{ battery not in ['unknown', 'unavailable', 'none', ''] and
|
||||||
|
(battery | float(100)) < 50 and
|
||||||
|
is_state('switch.spaceship_charge', 'off') }}
|
||||||
|
action:
|
||||||
|
- wait_for_trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id: cover.large_garage_door
|
||||||
|
from: 'closed'
|
||||||
|
to: 'open'
|
||||||
|
for: '00:03:20'
|
||||||
|
timeout: '00:10:00'
|
||||||
|
continue_on_timeout: false
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set battery = states('sensor.spaceship_battery_level') %}
|
||||||
|
{{ battery not in ['unknown', 'unavailable', 'none', ''] and
|
||||||
|
(battery | float(100)) < 50 and
|
||||||
|
is_state('switch.spaceship_charge', 'off') }}
|
||||||
|
- service: notify.alexa_media_garage
|
||||||
|
data:
|
||||||
|
message: >-
|
||||||
|
Reminder: the Tesla battery is at
|
||||||
|
{{ states('sensor.spaceship_battery_level') | float(0) | round(0) }} percent.
|
||||||
|
Please plug in the Model Y.
|
||||||
|
data:
|
||||||
|
type: announce
|
||||||
|
- service: script.send_to_logbook
|
||||||
|
data:
|
||||||
|
topic: "TESLA"
|
||||||
|
message: >-
|
||||||
|
Garage reminder announced to plug in the Model Y at
|
||||||
|
{{ states('sensor.spaceship_battery_level') | float(0) | round(0) }} percent.
|
||||||
|
|
||||||
|
- alias: "Tesla Model Y - Nightly Plug In Reminder"
|
||||||
|
id: 8b243b63-f5c3-4436-b596-0ec00a2108ab
|
||||||
|
mode: single
|
||||||
|
trigger:
|
||||||
|
- platform: time
|
||||||
|
at: '20:00:00'
|
||||||
|
- platform: event
|
||||||
|
event_type: event_tesla_model_y_nightly_loop
|
||||||
|
action:
|
||||||
|
- wait_template: "{{ is_state('device_tracker.spaceship_location', 'home') }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set battery = states('sensor.spaceship_battery_level') %}
|
||||||
|
{{ is_state('device_tracker.spaceship_location', 'home') and
|
||||||
|
battery not in ['unknown', 'unavailable', 'none', ''] and
|
||||||
|
(battery | float(100)) < 50 and
|
||||||
|
is_state('switch.spaceship_charge', 'off') }}
|
||||||
|
- service: script.notify_engine
|
||||||
|
data:
|
||||||
|
title: "Tesla Plug In Reminder"
|
||||||
|
value1: >-
|
||||||
|
The Model Y is home, below 50 percent, and not plugged in.
|
||||||
|
Current battery:
|
||||||
|
{{ states('sensor.spaceship_battery_level') | float(0) | round(0) }} percent.
|
||||||
|
who: 'parents'
|
||||||
|
group: 'Tesla_Model_Y'
|
||||||
|
- service: script.send_to_logbook
|
||||||
|
data:
|
||||||
|
topic: "TESLA"
|
||||||
|
message: >-
|
||||||
|
Nightly plug-in reminder sent because the Model Y is home below 50 percent and not charging.
|
||||||
|
- delay: '00:30:00'
|
||||||
|
- event: event_tesla_model_y_nightly_loop
|
||||||
@ -1,15 +1,16 @@
|
|||||||
#-------------------------------------------
|
######################################################################
|
||||||
# MQTT Sensor Configuration
|
# @CCOSTAN - Follow Me on X
|
||||||
# Description: Various MQTT sensors for Home Assistant
|
# For more info visit https://www.vcloudinfo.com/click-here
|
||||||
#
|
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||||
# For more information and updates, visit:
|
# -------------------------------------------------------------------
|
||||||
# https://www.vcloudinfo.com/click-here
|
# MQTT Sensors - Medication reminder timestamp feed
|
||||||
#
|
# MQTT-backed timestamp sensor used by medicine reminder workflows.
|
||||||
# Original Repository: https://github.com/CCOSTAN/Home-AssistantConfig
|
# -------------------------------------------------------------------
|
||||||
#-------------------------------------------
|
######################################################################
|
||||||
|
|
||||||
mqtt:
|
mqtt:
|
||||||
sensor:
|
sensor:
|
||||||
- state_topic: "dash/medicine/medicine_time"
|
- state_topic: "dash/medicine/medicine_time"
|
||||||
name: "Medicine time"
|
name: "Medicine time"
|
||||||
|
unique_id: medicine_time_timestamp
|
||||||
device_class: "timestamp"
|
device_class: "timestamp"
|
||||||
|
|||||||
@ -0,0 +1,129 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>Open OneNote</title>
|
||||||
|
<style>
|
||||||
|
:root { color-scheme: light; }
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||||
|
background: linear-gradient(180deg, #f5f7fb 0%, #e8eef8 100%);
|
||||||
|
color: #122033;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
max-width: 32rem;
|
||||||
|
margin: 0 auto;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding: 2rem 1.25rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
background: rgba(255, 255, 255, 0.94);
|
||||||
|
border: 1px solid rgba(18, 32, 51, 0.08);
|
||||||
|
border-radius: 18px;
|
||||||
|
box-shadow: 0 18px 40px rgba(18, 32, 51, 0.12);
|
||||||
|
padding: 1.25rem;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0 0 0.5rem;
|
||||||
|
font-size: 1.35rem;
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
margin-top: 0.75rem;
|
||||||
|
font-size: 0.95rem;
|
||||||
|
color: #41556f;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
.actions {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.75rem;
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
.button {
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0.9rem 1rem;
|
||||||
|
border-radius: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.button.primary {
|
||||||
|
background: #166534;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.button.secondary {
|
||||||
|
background: #fff;
|
||||||
|
color: #122033;
|
||||||
|
border: 1px solid rgba(18, 32, 51, 0.14);
|
||||||
|
}
|
||||||
|
.hint {
|
||||||
|
font-size: 0.88rem;
|
||||||
|
color: #5c708a;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<section class="card">
|
||||||
|
<h1>Opening OneNote</h1>
|
||||||
|
<p>Joanna is handing this note to the OneNote app now.</p>
|
||||||
|
<p id="note-title" class="title"></p>
|
||||||
|
<div class="actions">
|
||||||
|
<a id="app-link" class="button primary" href="#">Open in OneNote App</a>
|
||||||
|
<a id="web-link" class="button secondary" href="https://www.onenote.com/">Open Web Copy</a>
|
||||||
|
</div>
|
||||||
|
<p class="hint">If the app does not open automatically in a second or two, tap the OneNote button.</p>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
var params = new URLSearchParams(window.location.search);
|
||||||
|
var clientUrl = String(params.get('client') || '').trim();
|
||||||
|
var webUrl = String(params.get('web') || '').trim() || 'https://www.onenote.com/';
|
||||||
|
var title = String(params.get('title') || '').trim();
|
||||||
|
var appLink = document.getElementById('app-link');
|
||||||
|
var webLink = document.getElementById('web-link');
|
||||||
|
var titleNode = document.getElementById('note-title');
|
||||||
|
|
||||||
|
if (title) {
|
||||||
|
titleNode.textContent = title;
|
||||||
|
} else {
|
||||||
|
titleNode.textContent = 'OneNote note';
|
||||||
|
}
|
||||||
|
|
||||||
|
webLink.href = webUrl;
|
||||||
|
if (!/^onenote:/i.test(clientUrl)) {
|
||||||
|
appLink.style.display = 'none';
|
||||||
|
window.location.replace(webUrl);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
appLink.href = clientUrl;
|
||||||
|
var fallbackTimer = window.setTimeout(function () {
|
||||||
|
window.location.replace(webUrl);
|
||||||
|
}, 1400);
|
||||||
|
var cancelFallback = function () {
|
||||||
|
window.clearTimeout(fallbackTimer);
|
||||||
|
};
|
||||||
|
window.addEventListener('pagehide', cancelFallback, { once: true });
|
||||||
|
document.addEventListener('visibilitychange', function () {
|
||||||
|
if (document.visibilityState === 'hidden') {
|
||||||
|
cancelFallback();
|
||||||
|
}
|
||||||
|
}, { once: true });
|
||||||
|
window.location.href = clientUrl;
|
||||||
|
}());
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
Before Width: | Height: | Size: 811 B After Width: | Height: | Size: 811 B |
Loading…
Reference in new issue