overvaagning:
  alias: AI indkorsel
  sequence:
    - variables:
        ai_pause_until: "{{ states('input_datetime.ai_indkorsel_ai_pause_until') }}"
        ai_is_paused: >-
          {{
            ai_pause_until not in ['unknown', 'unavailable', '']
            and as_timestamp(ai_pause_until) > as_timestamp(now())
          }}
    - metadata: {}
      data:
        filename: /config/www/indkorsel_snapshot.jpg
      target:
        device_id: cf4f218aae515c84aea9f37f190dcfd5
      enabled: true
      action: camera.snapshot
    - delay:
        hours: 0
        minutes: 0
        seconds: 0
        milliseconds: 500
      enabled: true
    - metadata: {}
      data:
        filename: /config/www/indkorsel_snapshot_1.jpg
      target:
        device_id: cf4f218aae515c84aea9f37f190dcfd5
      enabled: true
      action: camera.snapshot
    - delay:
        hours: 0
        minutes: 0
        seconds: 0
        milliseconds: 500
      enabled: true
    - metadata: {}
      data:
        filename: /config/www/indkorsel_snapshot_2.jpg
      target:
        device_id: cf4f218aae515c84aea9f37f190dcfd5
      enabled: true
      action: camera.snapshot
    - choose:
        - conditions:
            - condition: template
              value_template: "{{ not ai_is_paused }}"
          sequence:
            - continue_on_error: true
              data:
                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: 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:
        - choose:
            - conditions:
                - condition: template
                  value_template: "{{ not ai_is_paused }}"
              sequence:
                - data:
                    entity_id: input_datetime.ai_indkorsel_ai_pause_until
                    datetime: >-
                      {{ (now() + timedelta(hours=1)).isoformat() }}
                  action: input_datetime.set_datetime
        - metadata: {}
          data:
            title: Bevægelse i indkørsel
            message: >-
              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: >-
              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: ""
