From 2ded5921475485d4dd5d4915683af98e8e3676dc Mon Sep 17 00:00:00 2001 From: Claus Dethlefsen Date: Wed, 8 Apr 2026 07:35:46 +0200 Subject: [PATCH] Migrate AI driveway surveillance to AI Task --- include/automations/ai_indkorsel.yaml | 8 ++- include/scripts/overvaagning.yaml | 93 +++++++++++++++++++++------ 2 files changed, 80 insertions(+), 21 deletions(-) diff --git a/include/automations/ai_indkorsel.yaml b/include/automations/ai_indkorsel.yaml index bdbba50..f57579c 100644 --- a/include/automations/ai_indkorsel.yaml +++ b/include/automations/ai_indkorsel.yaml @@ -2,7 +2,13 @@ trigger: platform: state entity_id: binary_sensor.indkorsel_sensor_motion - to: 'on' + to: 'on' + conditions: + - condition: template + value_template: >- + {% set last = state_attr('automation.ai_overvagning', 'last_triggered') %} + {% set someone_home = is_state('binary_sensor.family_presence', 'on') %} + {{ not someone_home or last is none or (now() - last).total_seconds() > 900 }} actions: - action: script.overvaagning metadata: {} diff --git a/include/scripts/overvaagning.yaml b/include/scripts/overvaagning.yaml index 3356b10..8c73488 100644 --- a/include/scripts/overvaagning.yaml +++ b/include/scripts/overvaagning.yaml @@ -35,38 +35,91 @@ overvaagning: enabled: true action: camera.snapshot - metadata: {} + continue_on_error: true data: - prompt: >- - Bevægelse er blevet opdaget – hvad ser du på billedet? Hvis du ser en - person eller en bil, giv en kort beskrivelse af dem. Forsøg at inkludere - detaljer som tøj eller nummerplade, hvis muligt. Beskriv ikke bygninger - 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: - - /config/www/indkorsel_snapshot.jpg + entity_id: ai_task.google_ai_task + task_name: indkoersel_motion_notification + instructions: >- + Bevægelse er blevet opdaget ved indkørslen. Se på kamerabilledet og + afgør, om der er en synlig årsag til bevægelsen. + + Hvis du ser en person eller et køretøj, så skriv en meget kort dansk + notifikationstekst egnet til iPhone. Medtag kun nyttige detaljer som + tøj, farve, retning eller nummerplade, hvis det faktisk er synligt. + + Ignorer bygninger, parkerede biler og andre stationære objekter. + Hvis der ikke er nogen åbenlys synlig årsag til bevægelsen, skal du + markere det som ingen bevægelse og bruge teksten 'Ingen åbenlys + bevægelse detekteret.' + structure: + motion_detected: + description: >- + True hvis en person eller et køretøj tydeligt er den synlige årsag + til bevægelsen. False hvis der ikke er nogen åbenlys synlig årsag. + required: true + selector: + boolean: + summary: + description: >- + En meget kort dansk notifikationstekst. Brug præcist 'Ingen + åbenlys bevægelse detekteret.' hvis ingen synlig årsag findes. + required: true + selector: + text: + attachments: + - media_content_id: media-source://camera/camera.indkoersel_sub + media_content_type: image/jpeg response_variable: generated_content - action: google_generative_ai_conversation.generate_content - - if: - - condition: template - value_template: "{{ 'No Obvious Motion Detected.' in generated_content.text }}" - then: - - stop: "" - else: + action: ai_task.generate_data + - choose: + - conditions: + - condition: template + value_template: >- + {{ generated_content is defined + and generated_content.data is defined + and generated_content.data.motion_detected is defined + and not generated_content.data.motion_detected }} + sequence: + - stop: "" + - conditions: + - condition: template + value_template: >- + {{ generated_content is defined + and generated_content.data is defined + and generated_content.data.summary is defined + and generated_content.data.motion_detected is defined + and generated_content.data.motion_detected }} + sequence: + - metadata: {} + data: + title: Bevægelse i indkørsel + message: >- + {{ generated_content.data.summary }} - Tid: {{ + now().strftime('%Y-%m-%d %H:%M:%S') }} + data: + image: /local/indkorsel_snapshot.jpg + action: notify.mobile_app_claus_iphone_15pro + - data: + entity_id: input_text.last_notification_message + value: >- + {{ generated_content.data.summary }} - Tid: {{ + now().strftime('%Y-%m-%d %H:%M:%S') }} + action: input_text.set_value + default: - metadata: {} data: title: Bevægelse i indkørsel message: >- - {{ generated_content['text'] }} - Tid: {{ now().strftime('%Y-%m-%d - %H:%M:%S') }} + Bevægelse registreret, men AI-beskrivelse er ikke tilgængelig lige + nu. Tid: {{ now().strftime('%Y-%m-%d %H:%M:%S') }} data: image: /local/indkorsel_snapshot.jpg action: notify.mobile_app_claus_iphone_15pro - data: entity_id: input_text.last_notification_message value: >- - {{ generated_content['text'] }} - Tid: {{ now().strftime('%Y-%m-%d - %H:%M:%S') }} + Bevægelse registreret, men AI-beskrivelse er ikke tilgængelig lige + nu. Tid: {{ now().strftime('%Y-%m-%d %H:%M:%S') }} action: input_text.set_value mode: single description: ""