Rechnen mit Zeiten

Rat und Tat rings um Home Assistant Automationen.


Antworten
Stephan1965
Beiträge: 18
Registriert: Sa 23. Sep 2023, 12:49
Has thanked: 10 times

Rechnen mit Zeiten

Beitrag von Stephan1965 »

Hallo,
Ich würde mir gerne einen bestimmten Zeitpunkt für eine Automatisierung machen:

Basierend auf dem jeweiligen Sonnenaufgang soll die Automation mit einer zusätzlichen Verzögerung von x Minuten ausgelöst werden. Und dann soll noch, je nach Anwesenheitsstatus der Bewohner eventuell noch eine Verzögerung hinzugefügt werden:

Dusk + Verzögerung y Minuten + Verzögerung (Bewohner sind weg) x Minuten

Und bei Sonnenuntergang soll das dann entsprechend anders herum sein. Hier soll dann entsprechend vor dem Sonnenuntergang ausgelöst werden. Also eine negative Verzögerung. ;)

Dawn - Verzögerung y Minuten - Verzögerung (Bewohner sind weg) x Minuten

Mir ist leider nicht klar, wie ich das bewerkstelligen soll. Rechnen mit Zeiten habe ich leider noch nicht verstanden. Vielleicht könnte mir da jemand auf die Sprünge helfen?

Gruß
Stephan

Jim_OS

Re: Rechnen mit Zeiten

Beitrag von Jim_OS »

Ganz spontan ohne viel Helfer & co.: :)

Ha_Auto_Sun.png

Versatz bei Sun: An optional time offset can be given to have it fire a set time before or after the sun event (e.g., 45 minutes before sunset). A negative value makes it fire before sunrise or sunset, a positive value afterwards. The offset needs to be specified in number of seconds, or in a hh:mm:ss format.

Bei Bedingungen dann z.B. die Entität die den Anweisenheitsstatus feststellt, bzw. das was Du dafür nutzt. Für den zusätzlichen Versatz bei dem Anwesenheitsstatus musst Du dann mal schauen ob Du das mit einer weiteren Automatisierung, oder einen Script lösen kannst/willst. Aktion halt das was dann passieren/soll.

Auch per HA Script und Sequenz wären ja Verzögerungen möglich. Hier ein Beispiel von meiner Video-/Türklingel und deren Live-Stream wenn jemand klingelt hat. Nach 30 Sekunden wird über das HA Script der HA Mediaplayer Stopp Dienst aufgerufen und der Live-Stream auf meinen Nest Displays beendet.

HA_Script_Sequenz_Verzögerung.png

D.h. viele Wege führen nach Rom :) und vielleicht wäre es auch hilfreich zu wissen was genau über diese Automatisierung dann passieren soll. Dann könnte man dazu ggf. auch noch mehr sagen und/oder andere Vorschläge machen.

VG Jim

Stephan1965
Beiträge: 18
Registriert: Sa 23. Sep 2023, 12:49
Has thanked: 10 times

Re: Rechnen mit Zeiten

Beitrag von Stephan1965 »

Hallo Jim,
ich will die berechneten Zeiten für die Rollladensteuerung benutzen. Die ca. halbe Stunde Verzögerung morgens, bzw. etwa eine halbe Stunde vorher am Abend, aus WAF-Gründen.
Die Verzögerung wegen Abwesenheit soll bei den Rollladen im Erdgeschoß gemacht werden als Abschreckung von Fremdpersonen. Ich hatte dies in meiner auf FHEM basierenden Haussteuerung so und würde das gerne jetzt auch wieder einrichten.
Und irgendwie muss auch rechnen mit Zeiten möglich sein. :D Das wollte ich auch einfach wissen.

Jim_OS

Re: Rechnen mit Zeiten

Beitrag von Jim_OS »

Ich glaube @Osorkon hatte hier schon mal einiges zum Thema Rollladensteuerung gepostet und sofern ich mich richtig erinnern kann, da auch irgendwelche Zeitsteuerungen drin. Siehe z.B. hier: viewtopic.php?t=393 --> Musst Du einfach mal schauen/suchen.

Wenn es um eher individuell angepassten YAML-Code, incl. Helfer & Co. geht, ist @Osorkon da sicherlich fitter drin als ich das bin und der wird Dir bestimmt helfen können. :)

VG Jim

Benutzeravatar
Osorkon
Administrator
Beiträge: 1953
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 530 times
Kontaktdaten:

Re: Rechnen mit Zeiten

Beitrag von Osorkon »

Ich bin bin nicht sicher was genau @Stephan1965 umsetzen möchte. Bzw. warum er unbedingt irgendwas ausrechnen will.
Das was @Jim_OS bereits vorgeschlagen hat, ist glaube ich bereits die richtige Richtung.

Zum Verständnis @Stephan1965:

Du möchtest die Rollläden in Abhängigkeit vom Sonnenstand mit positiven bzw. negativen Offset steuern. Zusätzlich soll ein zusätzlicher offset berücksichtigt werden, wenn keiner Zuhause ist.

Also als Beispiel beim Sonnenaufgang.
Wenn jemand zuhause ist: Sonnenaufgang + 10min
Wenn keiner Zuhause ist: Sonnenaufgang + 10min + 10min

Das kannst Du einfach wie von @Jim_OS über den Sonnen Auslöser realisieren.
Die Anwesenheit wäre dann eine Bedingung. Hier mal ein BSP. Automatisierung.
Sonnenaufgang + 10min als Auslöser -> ID: anwesend
Sonnenaufgang + 20min als Auslöser -> ID: abwesend

Dann wird geprüft Ob die Bedingungen ID und Anwesenheit zutreffen.
Wenn die Zone Home >0 -> Anwesend, fahren die Jalousien um Sonnenaufgang + 10min hoch.
Wenn die Zone Home <1 -> Abwesend, fahren die Jalousien um Sonnenaufgang + 20min hoch.

Code: Alles auswählen

description: ""
mode: single
trigger:
  - platform: sun
    event: sunrise
    offset: "00:10:00"
    id: anwesend
  - platform: sun
    event: sunrise
    offset: "00:20:00"
    id: abwesend
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - anwesend
          - condition: numeric_state
            entity_id: zone.home
            above: 0
        sequence:
          - service: cover.open_cover
            data: {}
            target:
              entity_id: cover.jalousie
      - conditions:
          - condition: trigger
            id:
              - abwesend
          - condition: numeric_state
            entity_id: zone.home
            below: 1
        sequence:
          - service: cover.open_cover
            data: {}
            target:
              entity_id: cover.jalousie

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Osorkon
Administrator
Beiträge: 1953
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 530 times
Kontaktdaten:

Re: Rechnen mit Zeiten

Beitrag von Osorkon »

Bezüglich Berechnung der Uhrzeit, als Bsp. Sonnenaufggang + 1h.
Das Template dazu:

Code: Alles auswählen

{{ (as_timestamp(states('sensor.sun_next_rising')) + 3600) | timestamp_custom('%H:%M') }}

Die Ausgabe erfolgt im Format HH:MM

Diese Template kannst u jetzt z.B. als Auslöser verwenden.
Nach de Motto, wenn Aktzelle Uhrzeit = berechnete Uhrzeit.

Code: Alles auswählen

trigger:
  - platform: template
    value_template: |
      {{now().strftime('%H:%M') == (as_timestamp(states('sensor.sun_next_rising')) + 3600) | timestamp_custom('%H:%M') }}

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Stephan1965
Beiträge: 18
Registriert: Sa 23. Sep 2023, 12:49
Has thanked: 10 times

Re: Rechnen mit Zeiten

Beitrag von Stephan1965 »

Hallo,
ich wollte in einem Helfer die Zeit berechnen und davon abhängig dann eine Automatisierung für die Rollläden machen. Und es interessiert mich auch, wie so etwas in HA gemacht werden kann. Daher schon mal vielen Dank @Osorkon
Den Vorschlag von @Jim_OS ist natürlich auch eine Möglichkeit, um an das Ziel zu gelangen.
Ich habe das mal testweise für einen Rollladen umgesetzt:

Code: Alles auswählen

alias: Rollo Eingangsflur runter bei Sonnenuntergang
description: ""
trigger:
  - platform: sun
    event: sunset
    offset: "-30"
  - platform: time
    at: "22:30:00"
  - platform: sun
    event: sunset
    offset: "-60"
condition: []
action:
  - if:
      - condition: state
        entity_id: input_boolean.bewohner_sind_weg
        state: "off"
    then:
      - if:
          - condition: time
            after: "22:29:00"
          - condition: sun
            after: sunset
            after_offset: "-30"
        then:
          - if:
              - type: is_open
                condition: device
                device_id: ef6fe5144bc17658a149c884eb4e29bd
                entity_id: 139002d0625a7bfc08818582c365034b
                domain: binary_sensor
            then:
              - device_id: 29470f5d52c326abf26dda49f9897756
                domain: cover
                entity_id: 97db183c8bb5dd8a2702d429a1b2a48f
                type: set_position
                position: 40
            else:
              - device_id: 29470f5d52c326abf26dda49f9897756
                domain: cover
                entity_id: 97db183c8bb5dd8a2702d429a1b2a48f
                type: close
        else:
          - if:
              - condition: sun
                after: sunset
                after_offset: "-30"
            then:
              - if:
                  - type: is_open
                    condition: device
                    device_id: ef6fe5144bc17658a149c884eb4e29bd
                    entity_id: 139002d0625a7bfc08818582c365034b
                    domain: binary_sensor
                then:
                  - device_id: 29470f5d52c326abf26dda49f9897756
                    domain: cover
                    entity_id: 97db183c8bb5dd8a2702d429a1b2a48f
                    type: set_position
                    position: 40
                else:
                  - device_id: 29470f5d52c326abf26dda49f9897756
                    domain: cover
                    entity_id: 97db183c8bb5dd8a2702d429a1b2a48f
                    type: close
    else:
      - device_id: 29470f5d52c326abf26dda49f9897756
        domain: cover
        entity_id: 97db183c8bb5dd8a2702d429a1b2a48f
        type: close
mode: single

Ich muss jetzt mal in den nächsten Tagen testen, ob das auch so funktioniert.

Gruß
Stephan

Antworten