J’ai découvert que l’on pouvait utiliser simplement Gemini pour analyser des images de mes caméras.
J’utilise donc cela pour envoyer une notification avec un niveau de risque, faible, moyen ou élevé.
Cela n’étant pas encore au niveau désiré, je me demande si certains entre vous l’on mit en place et dans ce cas, êtes vous satisfait ? Et qu’en voyez vous à Gemini :
Capture photo?
Combien de photo et quel interval de temps entre les captures ?
Salut, j’ai vu cela aussi récemment, et je tente actuellement de le mettre en place. Mais j’ai un soucis avec les fichiers à analyser.
Voici le code de mon automation :
alias: Test auto AI (Gemini stable)
description: Analyse une image caméra avec Gemini et envoi d'une notification
triggers: []
conditions: []
actions:
- alias: Prendre un snapshot
data:
entity_id: camera.camera_reolink_jardin
filename: /config/www/media/test.jpg
action: camera.snapshot
- delay: "00:00:03"
- alias: Analyse image avec Gemini
data:
entity_id: ai_task.google_ai_task
instructions: >
Analyse cette image de manière neutre. Décris les objets visibles,
notamment s’il y a quelque chose qui ressemble à un sac, un carton ou un
objet posé au sol. Ne parle pas des personnes.
task_name: Analyse caméra jardin
attachments:
media_content_id: media-source://image_upload/XxX
media_content_type: image/png
metadata:
title: LilP.png
thumbnail: /api/image/serve/XxX/256x256
media_class: image
children_media_class: null
navigateIds:
- {}
- media_content_type: app
media_content_id: media-source://image_upload
response_variable: gemini_response
action: ai_task.generate_data
- alias: Enregistrer la réponse AI
target:
entity_id: input_text.gemini_reponse
data:
value: |
{% if gemini_response.text %}
{{ gemini_response.text }}
{% elif 'SAFETY' in (gemini_response.reason | default('')) %}
Analyse bloquée par la sécurité Google AI.
{% else %}
Aucune réponse AI.
{% endif %}
action: input_text.set_value
- alias: Envoyer notification mobile
data:
message: "{{ states('input_text.gemini_reponse') }}"
action: notify.mobile_app_oneplus
- alias: Log réponse AI
data:
level: info
message: "Réponse Gemini : {{ gemini_response.text | default('Aucune') }}"
action: system_log.write
mode: single
De mon côté, voici le prompt, celui-ci fonctionne. Pour envoyer des alertes telegram.
“A partir de la photo, dis moi si tu vois une ou des personnes et / ou
une voiture en mouvement. le but étant d’être alerté en cas de venue de
personne mal attentionnée. je voudrai une conclusion démarrant par un
niveau de risque : Faible / Moyen / Elevé et une reponse sur 200
caractères maximum. A noter, si tu reçois une image avec le nom CamExt1,
nous possédons 2 voitures (une blanche immatriculée XX xxx XX et une
grise immatriculée XX xxx XX) autre point si tu détecte une personne sur
la 1ère image et que tu ne la vois pas sur la second ou si la personne à
son visage camouflé tu dois considérer un risque élevé”
En fait, je lui envoi 2 photos à quelques secondes d’intervalle.
Je ne l’ai pas encore mis en œuvre, je dois faire un peu de mise au point sur l’interval entre les images et peut être encore optimiser le prompt.
Si tu as des capteurs de présence utilise les comme trigger c’est plus raisonnable. En envoyant du traitement a intervalle fixe tu va vite dépasser le quota de demande.
Merci pour les réponses.
Voici donc l’automation corrigé après l’ajout du chemin dans configuration.yaml.
alias: Test auto AI (Gemini stable)
description: Analyse une image caméra avec Gemini et envoi d'une notification
triggers:
- type: motion
device_id: XxX
entity_id: XxX
domain: binary_sensor
trigger: device
conditions: []
actions:
- alias: Prendre un snapshot
action: camera.snapshot
target:
entity_id: camera.camera_reolink_jardin
data:
filename: /media/snapshot_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg
- delay: "00:00:03"
- alias: Analyse image avec Gemini
action: ai_task.generate_data
data:
entity_id: ai_task.google_ai_task
task_name: Analyse image jardin
instructions: >
Décrivez brièvement ce que vous voyez sur cette image prise par ma
caméra en précisant la date et l'heure. Votre message doit être court
pour pouvoir être affiché dans une notification. Ne décrivez pas
d'objets ou de bâtiments fixes. Réponds exclusivement en français, avec
une phrase claire et naturelle.
attachments:
- media_content_id: >-
media-source://media_source/local/snapshot_{{
now().strftime('%Y%m%d_%H%M%S') }}.jpg
media_content_type: image/jpeg
response_variable: gemini_reponse
- alias: Log complet Gemini
action: system_log.write
data:
level: info
message: "DEBUG Gemini brut : {{ gemini_reponse | tojson }}"
- alias: Enregistrer la réponse AI
action: input_text.set_value
target:
entity_id: input_text.gemini_reponse
data:
value: |
{% if gemini_reponse.data %}
{{ gemini_reponse.data }}
{% else %}
Aucune réponse AI.
{% endif %}
- alias: Envoyer notification mobile
action: notify.mobile_app_oneplus
data:
message: |
{% if gemini_reponse.data %}
{{ gemini_reponse.data }}
{% else %}
Aucune réponse AI.
{% endif %}
mode: single
La ou j’ai encore du mal, c’est d’envoyer la capture dans la notification.
Voila donc l’automation qui envois la notif avec le snapshot via l’application HA.
- id: "1758727222634"
alias: Analyse caméra jardin avec Gemini AI
description: Capture une image sur détection de mouvement, l’analyse via Gemini, et envoie une notification.
triggers:
- type: motion
device_id: XxX
entity_id: XxX
domain: binary_sensor
trigger: device
conditions: []
actions:
- alias: Définir le nom du fichier
variables:
snapshot_file: /config/www/snapshot.jpg
- alias: Prendre un snapshot
action: camera.snapshot
target:
entity_id: camera.camera_reolink_jardin
data:
filename: "{{ snapshot_file }}"
- delay: 00:00:03
- alias: Analyse image avec Gemini
action: ai_task.generate_data
data:
entity_id: ai_task.google_ai_task
task_name: Analyse image jardin
instructions: >
Décrivez brièvement ce que vous voyez sur cette image prise par ma caméra,
en précisant la date et l'heure. Votre message doit être court pour pouvoir
être affiché dans une notification. Ne décrivez pas d'objets ou bâtiments fixes.
Réponds exclusivement en français, avec une phrase claire et naturelle.
attachments:
- media_content_id: media-source://media_source/local/snapshot.jpg
media_content_type: image/jpeg
response_variable: gemini_reponse
- alias: Log complet Gemini
action: system_log.write
data:
level: info
message: "DEBUG Gemini brut : {{ gemini_reponse | tojson }}"
- alias: Enregistrer la réponse AI
action: input_text.set_value
target:
entity_id: input_text.gemini_reponse
data:
value: >
{% if gemini_reponse.data %}
{{ gemini_reponse.data }}
{% else %}
Aucune réponse AI.
{% endif %}
- alias: Envoyer notification mobile
action: notify.mobile_app_oneplus
data:
message: >
{% if gemini_reponse.data %}
{{ gemini_reponse.data }}
{% else %}
Aucune réponse AI.
{% endif %}
data:
image: /local/snapshot.jpg
mode: single