Compare commits

..

1 Commits

7 changed files with 54 additions and 39 deletions
+3 -2
View File
@@ -2,8 +2,9 @@
trigger:
platform: state
entity_id: binary_sensor.indkorsel_sensor_motion
to: 'on'
actions:
to: 'on' condition:
- condition: template
value_template: "{{ states('input_number.ai_gemini_calls_today') | int < 20 }}" actions:
- action: script.overvaagning
metadata: {}
data: {}
+9
View File
@@ -0,0 +1,9 @@
- alias: Reset AI Gemini Calls Daily
trigger:
platform: time
at: '00:00:00'
action:
- service: input_number.set_value
data:
entity_id: input_number.ai_gemini_calls_today
value: 0
@@ -1,15 +1,12 @@
- alias: Tesla failsafe charge
trigger:
- platform: time_pattern
minutes: "/5"
condition:
- condition: template
- platform: template
value_template: >
{% set deadline_ts = as_timestamp(states('input_datetime.tesla_charge_deadline')) %}
{% set now_ts = as_timestamp(now()) %}
{{ (deadline_ts - now_ts) <= 3600 }}
{{ (deadline_ts - now_ts) <= 3600 }} # 1 time = 3600 sekunder
condition:
- condition: numeric_state
entity_id: sensor.tesla_kwh_needed
above: 0
@@ -2,8 +2,8 @@
trigger:
- platform: template
value_template: >
{{ (states('sensor.snowywhite_battery') | default(0)) | float >=
(states('number.snowywhite_charge_limit') | default(100)) | float }}
{{ states('sensor.snowywhite_battery')|float >=
states('number.snowywhite_charge_limit')|float }}
action:
- service: switch.turn_off
+7
View File
@@ -0,0 +1,7 @@
ai_gemini_calls_today:
name: AI Gemini Calls Today
min: 0
max: 50
step: 1
mode: box
unit_of_measurement: calls
+6 -3
View File
@@ -43,11 +43,14 @@ overvaagning:
eller stationære objekter. Hvis der ikke er nogen synlig årsag til
bevægelsen, svar blot med 'Ingen åbenlys bevægelse detekteret.' Hold
beskeden kort og underholdende som en notifikation på Apple!
filenames:
images:
- /config/www/indkorsel_snapshot.jpg
response_variable: generated_content
action: google_generative_ai_conversation.generate_content
- if:
action: ai_task.generate_data
- service: input_number.set_value
data:
entity_id: input_number.ai_gemini_calls_today
value: "{{ states('input_number.ai_gemini_calls_today') | int + 1 }}"
- condition: template
value_template: "{{ 'No Obvious Motion Detected.' in generated_content.text }}"
then:
+15 -17
View File
@@ -1,29 +1,27 @@
binary_sensor:
platform: template
sensors:
- name: tesla_charge_now
state: >
{% set deadline_raw = states('input_datetime.tesla_charge_deadline') %}
{% set deadline_ts = as_timestamp(deadline_raw) if deadline_raw not in ['unknown','unavailable',''] else none %}
{% set deadline = states('input_datetime.tesla_charge_deadline') %}
{% set hours_needed = states('sensor.tesla_charge_hours_needed')|float(0)|round(0,'ceil') %}
{% set prices = (state_attr('sensor.energidataservice','today') or [])
+ (state_attr('sensor.energidataservice','tomorrow') or []) %}
{# Filter valid price entries and apply deadline #}
{% set prices = state_attr('sensor.energidataservice','today') + state_attr('sensor.energidataservice','tomorrow') %}
{% set valid = [] %}
{# Filtrer kun timer før deadline #}
{% for p in prices %}
{% if p.hour is defined and p.hour %}
{% set ts = as_timestamp(p.hour) %}
{% if not deadline_ts or ts <= deadline_ts %}
{% set slot_time = as_timestamp(strptime(p.hour,'%Y-%m-%dT%H:%M:%S')) %}
{% if slot_time <= as_timestamp(deadline) %}
{% set valid = valid + [p] %}
{% endif %}
{% endif %}
{% endfor %}
{# Pick cheapest hours #}
{% set cheapest = (valid | sort(attribute='price'))[:hours_needed] %}
{# Sorter efter pris #}
{% set sorted = valid | sort(attribute='price') %}
{# Current hour #}
{% set now_slot = now().replace(minute=0, second=0, microsecond=0).isoformat() %}
{# Vælg de billigste slots der dækker ladetiden #}
{% set cheapest = sorted[:hours_needed] %}
{# Tjek om nuværende slot er i listen #}
{% set now_slot = now().replace(minute=(now().minute//15)*15, second=0, microsecond=0).isoformat() %}
{{ cheapest | selectattr('hour','equalto',now_slot) | list | count > 0 }}