# 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
|
||||
# Description: Various MQTT sensors for Home Assistant
|
||||
#
|
||||
# For more information and updates, visit:
|
||||
# https://www.vcloudinfo.com/click-here
|
||||
#
|
||||
# Original Repository: https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
#-------------------------------------------
|
||||
######################################################################
|
||||
# @CCOSTAN - Follow Me on X
|
||||
# For more info visit https://www.vcloudinfo.com/click-here
|
||||
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
|
||||
# -------------------------------------------------------------------
|
||||
# MQTT Sensors - Medication reminder timestamp feed
|
||||
# MQTT-backed timestamp sensor used by medicine reminder workflows.
|
||||
# -------------------------------------------------------------------
|
||||
######################################################################
|
||||
|
||||
mqtt:
|
||||
sensor:
|
||||
- state_topic: "dash/medicine/medicine_time"
|
||||
name: "Medicine time"
|
||||
unique_id: medicine_time_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