Automation anhand Zonenaufenthalt in letzten x Minuten

Hallo zusammen,

ich bin noch ziemlich neu und habe mich leider bisher erfolglos an folgender Automation versucht. Ich habe auch nicht wirklich etwas zu dem Usecase bei google finden können bzw. suche falsch danach:

  • ich habe 2 Zonen (home, Kindergarten)
  • ich möchte das Garagentor automatisch öffnen lassen, wenn:
  • es morgens zwischen 07:30 und 09:00 ist
  • ich innerhalb der letzten 15 Minuten in der Zone Kindergarten war
  • ich mich meiner Zone home auf 50m nähere

Kann mir jemand von euch ein paar Denkanstöße geben? :anguished:
Ich könnte den 2. Punkt “innerhalb der letzten 15 Minuten in Zone Kindergarten gewesen” zwar einfach weglassen und es nicht overengineeren, aber damit würde ich falsche Triggerungen vermeiden.

Vielen lieben Dank schonmal vorab an alle die mich in die richtige Richtung schubsen! Falls weitere Infos fehlen, reiche ich die natürlich gerne nach

Schönes WE allen!

Das sollte so alles machbar sein. Du legst eine Automation an State → device_tracker.dein_geraet Entity id deines Smartphones. Bei der Bedingung das es Zwischen 7:30 und 9:00 Uhr ist, eine 2 Bedingung Template ob du in den letzten 15min in der Zone Kindergarten warst dies sollte so aussehen (nicht Getestet):

value_template: >
          {% set kindergarten = 'zone.kindergarten' %}
          {% set device_tracker = 'device_tracker.dein_geraet' %}
          {% set last_seen = states[device_tracker].last_changed %}
          {{ last_seen and (now() - last_seen).total_seconds() < 900 and is_state(device_tracker, kindergarten) }}

und dann noch die 3 Bedingung wenn du dich 50m näherst wieder ein Template (nicht getestet)

        value_template: >
          {% set home = states.zone.home %}
          {% set device_tracker = states.device_tracker.dein_geraet %}
          {% if home and device_tracker %}
            {{ distance(device_tracker.state, home.state) < 50 }}
          {% else %}
            false
          {% endif %}

Und unter Action dann das was er machen soll.

und hier der Komplette Code der aber

  1. Noch Angepast werden muss
  2. Und dann getestet werden muss (da ich so eine Automation nicht Testen kann)
automation:
  - alias: "Garagentor öffnen bei Annäherung"
    trigger:
      - platform: state
        entity_id: device_tracker.dein_geraet # Ersetze dies mit deinem Gerätetracker
    condition:
      - condition: time
        after: "07:30:00"
        before: "09:00:00"
      - condition: template
        value_template: >
          {% set kindergarten = 'zone.kindergarten' %}
          {% set device_tracker = 'device_tracker.dein_geraet' %}
          {% set last_seen = states[device_tracker].last_changed %}
          {{ last_seen and (now() - last_seen).total_seconds() < 900 and is_state(device_tracker, kindergarten) }}
      - condition: template
        value_template: >
          {% set home = states.zone.home %}
          {% set device_tracker = states.device_tracker.dein_geraet %}
          {% if home and device_tracker %}
            {{ distance(device_tracker.state, home.state) < 50 }}
          {% else %}
            false
          {% endif %}
    action:
      - service: cover.open_cover
        target:
          entity_id: cover.garagentor # Ersetze dies mit der Entität deines Garagentors

Vielen vielen lieben Dank für die schnelle und ausführliche Antwort demrios!

Ich mach mich direkt dran das auf meine Entitäten zu übersetzen und hoffe, dass ich das mit dem Template etc. hinbekomme.

Ich halte uns auf dem Laufenden :slight_smile:

1 „Gefällt mir“

Sooo, dank Kind und Job habe ich erst jetzt ausreichend Zeit gefunden die Antwort zu testen.
Ich bin auf jeden Fall so weit gekommen, dass der Code eine Automation erzeugt hat. Konnte auch alle ids belegen, aber ich habe das Problem, dass die Automation nicht auslöst.

Ich habe viel mit dem setzen von Zuständen gespielt und irgendwie ist die condition “letzte 15 Minuten im Kindergarten gewesen” nur true wenn ich device_tracker.dein_geraet manuell auf zone.kindergarten setze. wenn ich es danach auf away oder home setze ist die Bedingung der Automation false, obwohl ich ja im Zeitraum letzte 15 Minuten bin.

Ich würde es viel einfacher machen.

Als Trigger nimmst Du zone.kindergarten verlassen. Als Bedingung die von Dir genannten Zeiten.

Und dann ein warten auf, das Du auf 15 Minuten begrenzt.

Du wartest also 15 Minuten lang, nachdem Du den Kindergarten verlassen hast, dass Du nach Hause kommst und öffnest dann das Tor.

description: ""
mode: single
triggers:
  - trigger: zone
    entity_id: person.trajuna
    zone: zone.kindergarten
    event: leave
conditions:
  - condition: time
    after: "07:30:00"
    before: "09:00:00"
actions:
  - wait_for_trigger:
      - trigger: zone
        entity_id: person.trajuna
        zone: zone.home
        event: enter
    timeout:
      hours: 0
      minutes: 15
      seconds: 0
      milliseconds: 0
    continue_on_timeout: false
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.garagentor

Ich würde immer mit person. und nicht mit device_tracker. arbeiten. Wenn Du Deiner Person einen oder mehrere Tracker in den Einstellungen zuordnest, wird Dein Personenstatus darüber bestimmt. Wenn Du dann mal das Gerät wechselst, musst Du nur an einem Ort das Gerät austauschen und nicht die Automatisierungen bearbeiten.

Ist jetzt eben aus dem Ärmel geschüttelt. Sollte funktionieren und muss, meiner Meinung nach, auch nicht komplizierter sein.

Und weil ich ursprünglich die Wochentage mit drin hatte, mir dann aber auffiel, dass das vermutlich unsinnig ist. Du möchtest immer, wenn Du vom Kindergarten nach Hause kommst, dass die Garage aufgeht, oder? Denn in dem Fall kannst Du die Zeiten auch weglassen.

Oder würdest Du, wenn du nachmittags kommst, woanders parken?

1 „Gefällt mir“

Vielen Dank für deinen neuen Denkanstoß!
über die Person zu gehen macht wirklich Sinn - Danke!
Hab ich eigentlich auch schon von Simon in einem Video beigebracht bekommen :slight_smile:

Also ich würde die Uhrzeiten drin lassen, da der Kindergarten sehr zentral bei uns im Ort liegt und ich uU auch in der Nähe bin, ohne dass ich bei Heimkehr dann die Garage öffnen lassen möchte.
Dies nur explizit, wenn ich um diese Uhrzeiten morgens dort war.
Ich baue jetzt auch deine Automation nach, aber ich habe Bedenken, ob sie richitg getriggert wird:

ich habe mal im Zonenverlauf von Kindergarten nachgesehen, und da ist immer der Wert 0 drin, auch an Tagen an denen ich definitiv im Kindergarten war und das Handy dabei hatte.
Die Kindergartenzone stand bis gerade auf passiv, das habe ich jetzt mal abgestellt und aktiv geschalten. Vielleicht funktioniert das “einchecken” in die Zone dann korrekt.

Liebe Grüße und nochmals dankeschön!

Du kannst einfach den Code kopieren, eine neue Automatisierung anlegen, Code als yaml anzeigen und alles mit meinem Code ersetzen.

Danach kannst Du auf UI zurück wechseln und die Entitäten umbenennen.

Alles klar!

vielleicht liegt die inkorrekte Standortbehandlung bei mir aber auch an einem generellen Problem. Ich habe bspw. auch die Proximity Erweiterung, und da stimmen die Bewegungsrichtungen auch nicht:
nach angekommen (blau)
kommt stationär (rot)
dann entfernt sich (gelb)
dann nähert sich (grün)
dann wieder angekommen (blau)

das müsste definitiv andersrum sein, also:
angekommen > entfernt sich > stationär > nähert sich > angekommen

Man sieht das gut in dem Screenshot v.a. beim zweiten Block rechts. der große gelbe Balken müsste stationär sein, da habe ich mich nicht bewegt.

Dann solltest Du mal Deine Ortung und Deine Zonen überprüfen. :wink:

Konnte deine Automation jetzt scharf schalten! :pray: bin sehr gespannt

hast du einen Tipp wo und wie ich mit der Prüfung anfangen kann?

iOS oder Android?

In den Einstellungen solltest Du Deine letzten Ortungen nachvollziehen können. Und auch wodurch diese ausgelöst wurden. (Zumindest bei iOS.)

Android hat teilweise mit dem Energie sparen usw. deine Problem, dass Prozesse gekillt werden.

Müssten wir hier im Forum schon öfter diskutiert haben.

IOS
und ich habe Stromsparmodus etc alles bereits deaktiviert.
Vollen / genauen Standortzugriff gegeben und auf immer gestellt.

Oben die Stati vom device_tracker und unten die Bewegungsrichtung aus proximity über die Zone von Home

Grundsätzlich passen die Start und Zielzeiten, aber dazwischen geschieht irgendwie Unsinn bei Proximity (und evtl. könnte das damit zusammenhängen, dass ich nicht in der zone.Kindergarten beim Betreten ankomme.)

Die Sache mit annähren und entfernen bezieht sich auf die Luftlinie. Je nach Fahrtrichtung kann dies (kurzzeitig) auch falsch sein. Deswegen würde ich mir keine Gedanken machen.

Grundsätzlich scheint die Ortung ja auch zu funktionieren. Nur Deine Zone Kindergarten ist offensichtlich falsch eingestellt (gewesen).

Okay, dann beobachte ich es auf jeden Fall einfach weiter… :+1:

Beim rechten Block ist es aber definitiv falsch. Ich bin 13:13 von zuhause weggefahren. Auch Luftlinie konsequent weiter weg. Nach ein Paar Monuten dann eine knappe Stunde dort gewesen, was dann ja eigentlich stationär sein müsste aber hier als entfernt sich angegeben wird. und danach heimgefahren.

Einstellungen → Companion-App → Standort → Standortverlauf

Dort kannst Du auf dem Gerät nachvollziehen, wann der Standort aktualisiert wurde und was dies ausgelöst hat. Vielleicht hilft das weiter. :wink:

:heart_eyes: :heart_eyes: :heart_eyes: :heart_eyes:

Woow, das ist ja einerseits erschreckend welche Daten da gespeichert werden :slight_smile:
Aber andererseits hat mir das gezeigt, dass die Kindergartenzone wohl ein, zwei Meter zu klein bemessen war, denn der Pin war genau am Rand.
Ich habe die Zone eigentlich ohnehin schon extra groß mit Puffer bemessen, etwa 25 Meter über das Grundstück hinausragend aber dann war es vielleicht genau das.

Ich danke dir tausendfach und melde mich am Dienstag (nach dem Kind abgeben!) nochmal, ob sich jetzt alles wie gewünscht verhält!

Um so besser zu wissen, dass die Daten auf dem Gerät liegen und Home Assistant eben ohne fremde Clouds arbeiten. :wink:

25m sind für GPS nicht unbedingt viel, wenn die Toleranzen teilweise bis zu 100m gehen können. Gerade im Gebäude, wenn das Handy noch in der Tasche ist…

Würde im Zweifelsfall ein paar Meter mehr mit in die Zone reinnehmen. Ich bin sehr gespannt, was Du Dienstag zu berichten hast. :wink:

1 „Gefällt mir“

Also, ich sag mal so:
Eine Garage, die sich automatisch öffnet, wenn ich mit dem Fahrrad zuhause ankomme versetzt einem schon ein riesen Grinsen ins Gesicht :slight_smile: :slight_smile:
Das ist wahrscheinlich der selbe Effekt, wie wenn ein Hund gutgelaunt wartet, dass man die Haustüre öffnet!

Es hat alles total super geklappt und durch die deutliche Übergröße der Zone, wurde ich dort auch richtig eingecheckt.

Vielen lieben Dank nochmals für die geduldige Hilfestellung

1 „Gefällt mir“