Sicherheit: Garten AI-Erkennung
Wie Einfahrt-AI-Erkennung, aber für die Garten-/Terrassenkamera. Filtert zusaetzlich Gartenmoebel (Stuehle, Tisch, Schale) heraus. Telegram mit Foto und Inline-Buttons bei relevanten Objekten.
Entitäten:camerasensorpersontelegram_botshell_command
Was brauchst du dafür?
Integrationen
- Telegram Bot
- Kamera-Integration
- Shell Command
Geräte
- Sensor
- Kamera
- Person/Anwesenheit
Was musst du anpassen?
| Platzhalter | Ersetze mit |
|---|---|
| DEIN_NAME | Deine Person-Entity (z.B. person.max) |
| DEINE_KAMERA | Deine Kamera-Entity-ID (z.B. camera.einfahrt) |
Sicherheit: Garten AI-Erkennung
# Entity-IDs sind anonymisiert. Ersetze sie durch deine eigenen.
# Beispiel: light.dein_wohnzimmer_licht -> light.wohnzimmer_deckenlampe
# Sicherheit: Garten AI-Erkennung
# Identisch zur Einfahrt-Erkennung, aber fuer die Garten-/Terrassenkamera.
# Ignoriert zusaetzlich Gartenmoebel (Stuehle, Tische, Schalen, Tassen).
alias: "Sicherheit: Garten AI-Erkennung"
description: >-
Alle 30s Snapshot -> AI-Erkennung -> Telegram bei relevanter Erkennung.
- Laeuft nur nachts (22-06) oder bei Abwesenheit
- Statische Objekte (Stuehle, Tisch, Schale, Topfpflanze, etc.) werden ignoriert
- Englische Labels werden uebersetzt
- Cooldown: 2 Min nach Person, 10 Min nach anderen Objekten
# --- Trigger: Alle 30 Sekunden ---
triggers:
- trigger: time_pattern
seconds: /30
alias: Alle 30 Sekunden
# --- Bedingung: Nur nachts oder bei Abwesenheit ---
conditions:
- condition: or
alias: Nur nachts oder bei Abwesenheit
conditions:
- condition: time
after: "22:00:00"
before: "06:00:00"
- condition: not
conditions:
- condition: state
entity_id: person.DEIN_NAME # z.B. person.dein_name
state: home
# --- Aktionen ---
actions:
# Snapshot von der Garten-Kamera erstellen
- alias: Snapshot von Terrasse-Kamera
action: camera.snapshot
target:
entity_id: camera.DEINE_KAMERA # z.B. Terrasse-Kamera
data:
filename: /config/www/tmp/camera/garten_ai.jpg
- delay: 00:00:03
alias: Warten bis Snapshot gespeichert
# AI-Erkennung auf dem Snapshot ausfuehren
- alias: AI-Erkennung auf Snapshot ausfuehren
action: shell_command.ai_detect_garten
- delay: 00:00:05
alias: Warten auf AI-Analyse
# Sensor mit AI-Ergebnis aktualisieren
- alias: AI-Sensor aktualisieren
action: homeassistant.update_entity
target:
entity_id: sensor.ai_garten_ergebnis
- delay: 00:00:01
alias: Kurz warten bis Sensor aktualisiert
# Variablen: Ignorier-Liste (erweitert um Gartenmoebel), Uebersetzungen
- alias: Variablen fuer Filterung und Uebersetzung setzen
variables:
ignore_objects:
- chair
- dining table
- bench
- potted plant
- bowl
- vase
- cup
- bottle
- stuhl
- tisch
- schale
- topfpflanze
translate_map:
person: Person
car: Auto
cat: Katze
dog: Hund
bird: Vogel
bicycle: Fahrrad
motorcycle: Motorrad
truck: LKW
umbrella: Regenschirm
backpack: Rucksack
handbag: Handtasche
suitcase: Koffer
cell phone: Handy
laptop: Laptop
sports ball: Ball
skateboard: Skateboard
kite: Drachen
teddy bear: Teddybaer
book: Buch
ai_raw: '{{ states("sensor.ai_garten_ergebnis") }}'
filtered_list: >-
{% set items = states("sensor.ai_garten_ergebnis").split(", ") %}
{% set ns = namespace(result=[]) %}
{% for item in items %}
{% set clean = item | trim | lower %}
{% if clean not in ignore_objects %}
{% set translated = translate_map.get(clean, item) %}
{% set ns.result = ns.result + [translated] %}
{% endif %}
{% endfor %}
{{ ns.result | join(", ") }}
has_person: '{{ "person" in (states("sensor.ai_garten_ergebnis") | lower) }}'
timestamp: '{{ now().strftime("%H:%M") }}'
seconds_since_last: >-
{{ (now() - state_attr("automation.sicherheit_garten_ai_erkennung",
"last_triggered") | as_datetime).total_seconds() | default(9999) }}
# Nur weiter wenn relevante Objekte erkannt wurden
- alias: Pruefe ob relevante Objekte erkannt wurden
condition: template
value_template: >-
{{ ai_raw not in ["Keine Objekte", "Warte auf Analyse", "unavailable", "unknown"]
and filtered_list | length > 0 }}
# Entscheidung: Person oder anderes Objekt
- choose:
- alias: Person erkannt -- Cooldown 2 Min
conditions:
- condition: template
value_template: "{{ has_person and seconds_since_last | float(9999) > 120 }}"
sequence:
- alias: Foto mit Person-Warnung an Telegram senden
action: telegram_bot.send_photo
data:
caption: >-
Garten -- {{ timestamp }}
Person erkannt!
Objekte: {{ filtered_list }}
file: /config/www/tmp/camera/garten_ai.jpg
inline_keyboard:
- - - Terrasse an
- /garten_licht_an
- - Neues Foto
- /garten_neues_foto
- - - 30 Min. stumm
- /garten_stumm_30
default:
- alias: Pruefe Cooldown 10 Min fuer nicht-Person-Objekte
condition: template
value_template: "{{ seconds_since_last | float(9999) > 600 }}"
- alias: Foto mit Objekt-Erkennung an Telegram senden
action: telegram_bot.send_photo
data:
caption: >-
Garten -- {{ timestamp }}
Bewegung erkannt.
Objekte: {{ filtered_list }}
file: /config/www/tmp/camera/garten_ai.jpg
inline_keyboard:
- - - Terrasse an
- /garten_licht_an
- - Neues Foto
- /garten_neues_foto
- - - 30 Min. stumm
- /garten_stumm_30
mode: single
max_exceeded: silent
