Refactor air quality display in briefing.yaml to improve clarity. Adjusted conditions for displaying air quality information, ensuring it only shows when the index is above 15.

This commit is contained in:
Carlo Costanzo
2025-12-09 18:49:29 -05:00
parent 2265f2b282
commit 02a554a793
2 changed files with 89 additions and 5 deletions

View File

@@ -0,0 +1,87 @@
# LLM Vision test package: checks the garage camera for garbage cans in the upper-right corner.
# Trigger with input_button.llmvision_garbage_check to update input_boolean.garbage_cans_in.
input_button:
llmvision_garbage_check:
name: "LLM Vision: Garage cans check"
icon: mdi:delete-variant
input_boolean:
garbage_cans_in:
name: "Garbage cans in upper right"
icon: mdi:trash-can
input_text:
llmvision_garbage_last_response:
name: "LLM Vision garage response"
max: 255
llmvision_garbage_last_keyframe:
name: "LLM Vision garage key frame"
max: 255
input_datetime:
llmvision_garbage_last_run:
name: "LLM Vision garage last run"
has_date: true
has_time: true
template:
- binary_sensor:
- name: "Garbage cans in"
unique_id: llmvision_garbage_cans_in
device_class: presence
state: "{{ is_state('input_boolean.garbage_cans_in', 'on') }}"
attributes:
last_run: "{{ states('input_datetime.llmvision_garbage_last_run') }}"
last_response: "{{ states('input_text.llmvision_garbage_last_response') }}"
last_key_frame: "{{ states('input_text.llmvision_garbage_last_keyframe') }}"
source_camera: camera.garagecam
automation:
- alias: LLM Vision - Garage cans upper right
id: d88a2e6d-78f3-4bb7-9d9f-c4d06e6eb5a9
mode: restart
trigger:
- platform: state
entity_id: input_button.llmvision_garbage_check
variables:
prompt_text: >
Examine ONLY the upper-right quadrant of the image (top half + right half). Ignore everything else (car, floor text, door, bikes, bottles, bags). If you see a black garbage can in that upper-right quadrant, respond exactly "on". If none are present there, respond exactly "off". Do not add any other words.
action:
- service: llmvision.data_analyzer
response_variable: llmvision_result
data:
provider: !secret llmvision_provider_entry
model: gpt-4o-mini
message: "{{ prompt_text }}"
sensor_entity: input_boolean.garbage_cans_in
image_entity:
- camera.garagecam
include_filename: false
target_width: 1280
max_tokens: 16
expose_images: true
- service: input_text.set_value
target:
entity_id: input_text.llmvision_garbage_last_response
data:
value: "{{ (llmvision_result.response_text | default('unknown'))[:250] }}"
- choose:
- conditions: "{{ llmvision_result is defined and llmvision_result.key_frame is defined }}"
sequence:
- service: input_text.set_value
target:
entity_id: input_text.llmvision_garbage_last_keyframe
data:
value: "{{ llmvision_result.key_frame }}"
default:
- service: input_text.set_value
target:
entity_id: input_text.llmvision_garbage_last_keyframe
data:
value: ""
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.llmvision_garbage_last_run
data:
datetime: "{{ now() }}"

View File

@@ -35,11 +35,8 @@
[Here is the current weather outside]
{% set aq_description = state_attr('sensor.bear_stone_common_air_quality_index', 'description') | default('') %}
{% set aq_index = states('sensor.bear_stone_common_air_quality_index') | int(0) %}
{% if aq_description %}
Air Quality: {{ aq_description }}
{% endif %}
{% if aq_index >= 150 %}
[Air quality is unhealthy; limit outdoor activity]
{% if aq_index >= 15 %}
[Air Quality: {{ aq_description }}]
{% endif %}
{% set pirateweather_metrics = states.sensor
| selectattr('entity_id','search','pirateweather')