Automatisierung zufällig ausführen

Hallo zusammen

Ich bin noch ein Frischling in HomeAssistant, das vorab :wink:

Gerne möchte ich in dem Zeitraum von 18:00h bis 22:00h eine Automatisierung zufällig ausführen und das nicht nur einmal, sondern immer wieder zu unterschiedlichen Zeiten.

Ziel war es so eine Lichtautomatisierung zu Halloween auszuführen. Brauche kein fertiges Beispiel, sondern hätte gerne Inputs wie ihr das angehen würdet. Vor allem das mit der Random Zeit.

Grüsse

Du könntest z. B. den Trigger immer auf 18 Uhr setzen und in der Action mit einem delay in der Art arbeiten
minutes: "{{ range(0, 180)|random|int }}"

Delay geht aber, glaube ich, bei einem Ausfall von HA verloren.

Ggf. könnte man da was mit Wiederholen kombinieren. Habe ich aber nie getestet. Sonst auch mal mit (0, 15) und Wiederholen testen.

1 „Gefällt mir“

Ich würde auch wie @sirector mit random arbeiten aber als Template trigger

{{ range(0, 10) | random == 5 }}

da Template Trigger nur 1x pro Minute gecheckt werden hast du jede Minute die Chance von 1/10 das getriggert wird. (kann ja auch angepasst werden)
Und als Bedingung würde ich die Zeit nach 18:00 und vor 22:00 Stellen.

LG

1 „Gefällt mir“

Uhi, danke für eure Antworten.
@totow Hast du davür evtl ein Beispiel für mich?

So:

description: ""
mode: single
trigger:
  - platform: template
    value_template: "{{ range(0, 10) | random == 5 }}"
condition:
  - condition: time
    after: "18:00:00"
    before: "20:00:00"
action: []

@totow mich würde interessieren wofür das random == 5 steht?

@sirector wenn die Random Zahl = 5 ist wird True ausgegeben und getriggert wen nicht False.

LG

2 „Gefällt mir“

Die Lösung gefällt mir!

danke. :slight_smile:

aber woher kommt der Auslöser? im range von 0-10 wird ausgeführt, wenn der range = 5 ist. richtig verstanden? muss ich den modus der automatisierung dann auf “neu starten” stellen?

Neustart brauchst du nicht, Einzeln wäre mMn richtig. Die Automation soll ja durchlaufen und danach erst wieder von vorne anfangen.

Neustart würde die laufende Automation unterbrechen.

Sorry, aber in welchem Zeitraum wird das dann ausgeführt? Verstehe den ersten Part leider nicht ganz.

Hmm irgendwie Funktioniert das bei mir selber grad nicht, kann man die random Funktion nicht im Template Trigger nutzen? oO
In den Entwicklerwerkzeugen funktioniert es… da zeig er false und true an… währe wohl zu schön gewesen.
Edit:
ich habe das gefunden:

bei Delay scheint random zu funktionieren.
also könnte man mit einem Timepattern von 1min Arbeiten und dan ein random Delay einbauen

alias: Test Random Trigger
description: ""
trigger:
  - platform: time_pattern
    minutes: /1
condition:
  - condition: time
    after: "18:00:00"
    before: "22:00:00"
    enabled: true
action:
  - delay: 00:{{ (range(1, 30)|random|int) }}:00

hier ist die zeit grad zwischen 1-30min.
So funktioniert es auch bei mir extra nochmal getestet. :sweat_smile:

2 „Gefällt mir“

Super, ich danke dir! Das teste ich.
Kommt das was ich ausführen möchte, dann in die Aktion unter das Delay?
So weit wie ihr wäre ich auch schon gerne

Ja das kommt dann unter delay.

Man könnte es auch so testen

automation:
  - alias: Test Random Trigger
    trigger:
      platform: time_pattern
      minutes: /1
    condition:
      condition: template
      value_template: "{{ (range(10)|random) == 5 }}"
    action:
      ......

Habe ich aber nicht getestet.

I think, its very kompliziert. Der Teil mit dem Delay geht nicht in meinen Kopf.
Es wird jede Minute geprüft, ob es zwischen 18-22Uhr ist, dann eine random Delay zwischen 1 und 30 minuten generiert. Wird dann (z.B. wenn delay 4 min ist) die 4 “gespeichert” und dann nach 4 minuten ausgeführt? was passiert wenn nach der 1 Minuten Prüfung der Wert 2 ist?

Wenn deine Automation in mode: single Arbeitet kann sie nur einmal laufen.
Heißt wenn der Delay läuft, wird solange nicht neu ausgelöst.

Edit:
bedeutet aber auch das die Automation rein theoretisch nach 22Uhr ausgeführt werden kann.
Startet um 21:59 kommt damit noch zwischen den Uhrzeiten durch und danach starte erst der delay.
Kann man noch fixen dafür bin ich aber grad zu müde.

Gute Nacht :sleeping_bed:

Auf die Schnelle … :thinking:
Eine zweite Automation, die die erste Automation erst um 18 Uhr startet und um 22 Uhr wieder beendet (Dienst ausführen: automation.turn_off/turn_on). Damit sind auch die Delay beendet.

Nein ich hätte das in einer Automation gemacht, so müsste es doch theoretisch funktionieren, wen ich mich nicht täusche.

alias: Test Random Trigger
description: ""
trigger:
  - platform: time_pattern
    minutes: /1
condition:
  - condition: time
    after: "18:00:00"
    before: "22:00:00"
action:
  - delay: 00:{{ (range(1, 2)|random|int) }}:00
  - choose:
      - conditions:
          - condition: time
            after: "18:00:00"
            before: "22:00:00"
        sequence:
          - service: switch.toggle
            data: {}
            target:
              entity_id: switch.abstellkammer
mode: single

So sollte er doch nach dem Delay noch mal die zeit Checken bevor er den Rest(switch.toggle) ausführt.
Oder habe ich da ein Denkfehler drin?
LG

Könnte klappen. Der Vorteil einer zweiten Automation wäre, dass das time_pattern nicht den ganzen Tag getriggert wird. Ansonsten klappt auch das, habe es getestet

description: ""
trigger:
  - platform: time_pattern
    minutes: /1
condition:
  - condition: template
    value_template: "{{ (range(10)|random) == 5 }}"
  - condition: time
    after: "18:00:00"
    before: "22:00:00"
action:
  - service: notify.mobile_app
    data:
      message: Test
mode: single