Automation mit Zufallsgenerator

Hallo, ich möchte bei Sonnenuntergang per Zufallsprinzip entweder Leuchte 1 oder Leuchte 2 einschalten. Ich habe einen Random-Helfer generiert. Aber der toggled in einem ziemlich festen Rythmus von 30sek bis hin zu 2 Minuten und das halt sehr regelmäßig. Jetzt ist gerade zur Zeit der Sonnenuntergang immer fast zur gleichen Zeit. Deshalb ist mein Helfer jeden Abend im selben Zustand und es geht nur die eine Leuchte an. Kann man das auch noch anders lösen?

Du könntest z.B. alle 2 Min. jede Stunde auslösen.
Und dann mit der Bedingung “nach Sonnenuntergang” und “vor Sonnenaufgang” noch folgendes Wenn Dann Sonst bauen:
{{ (range(2)|random) == 1 }}

So kannst du dann abfragen:
Wenn {{ (range(2)|random) == 1 }}, Dann schalte Leuchte 1 ein, sonst Leuchte 2.

alias: "Lights toggle"
description: ""
triggers:
  - minutes: /2
    trigger: time_pattern
conditions: []
actions:
  - if:
      - condition: sun
        after: sunset
      - condition: sun
        before: sunrise
      - condition: template
        value_template: "{{ (range(2)|random) == 1 }}"
    then:
      - action: light.turn_off
        metadata: {}
        target:
          entity_id: light.lampe_2
        data: {}
      - action: light.turn_on
        metadata: {}
        target:
          entity_id: light.lampe_1
        data: {}
    else:
      - action: light.turn_off
        metadata: {}
        target:
          entity_id: light.lampe_1
        data: {}
      - action: light.turn_on
        metadata: {}
        target:
          entity_id: light.lampe_2
        data: {}
mode: single

Ich würde hier einfach eine Variable erstellen, die die jeweilige Lichter beinhaltet. Und dann zufällig eine der Lichter als Ziel auswählen.

actions:
  - variables:
      lichter:
        - light.xyz_1
        - light.xyz_2
  - action: light.turn_on
    metadata: {}
    target:
      entity_id: |
        {{ lichter | random }}
    data: {}

Gruß Osorkon

Hallo, super danke für die Anregungen. Auf jeden Fall konnte ich mein Random-Problem jetzt lösen. Damit habe ich nämlich auch schon experimentiert, aber ich habe es nicht richtig gemacht. Jetzt mache ich mich als nächstes an das IF Then Else (das hatte ich auch schon probiert und nicht hin bekommen). Oder ich probiere den anderen Vorschlag.

Wie würde dann die Programmzeile lauten, wenn man nach 30Minuten die entsprechende Leuchte wieder ausschalten möchte?

Was bedeutet die Programmzeile metadata und data?

Ich bin ein fauler Mensch. Deshalb würde ich einfach eine Leuchten Gruppe erstellen, bestehend aus den 2 Leuchten und dann die Gruppe ausschalten. Dann brauch ich kein Aufwand treiben mir zu merken, welche der Leuchten eingeschaltet wurde.

Also als Auslöser 30 min nach Sonnenuntergang.

Das sind automatisch generierte Zeilen, die Du zu Gesicht bekommst in der YAML Ansicht. Einmal für die Metadaten undeinmal für weitere Parameter , die Du übergeben kannst.

Im grafischen Editor sieht das dan so aus:


Gruß Osorkon

Danke für die tolle Erklärung. Ich habe jetzt wieder ein Problem. Ich habe keine Leuchten, sondern Steckdosen, die ich ein und ausschalte. Und ich habe es noch nicht hin bekommen, eine Gruppe der Steckdosen zu erstellen. Ich bin leider ziemlicher Anfänger. Wenn ich sage, Gruppe, Leuchten, kann ich die Steckdosen-Entitäten nicht auswählen. Wie mache ich denn das am besten?

Zum einen kannst Du aus einem Switch ein Light erstellen.

Entität auswählen —> Zahnrad —> Anzeigen als —> Leuchte.

Gruppieren kannst Schalter wie auch Leuchten

Helfer —> Helfer erstellen —> Gruppe

Gruß Osorkon

Das sind dann keine Leuchten sondern Schalter/Switch.

So, da bin ich mal wieder. Ich habe ein bißchen Ruhe gebraucht. Wollte mit der IF Then Else Sache anfangen. Und bin sofort auf Probleme gestoßen. Wer kann mir helfen? Was ist falsch?

Und dann die Frage: wie bekomme ich die beiden Angaben zu meinem Ziel (Steckdose für leuchte) in einer Variable:

grafik

Bitte entschuldigt, dass ich so blöde Fragen stelle, aber ich möchte das unbedingt lernen, aber ich tue mir da sehr schwer. Ich arbeite viel mit Excel VBA und das klappt super. Aber das hier ist mir trotzdem irgendwie fremd.

Dann kann man nicht mal ungültige Entwürfe speichern. Man fängt beim nächsten Mal also wieder bei null an. Ist schon etwas schwierig das Zeug

Code als Foto zu posten, ist eine Zumutung. Mach das doch bitte mit Copy&Paste in „Vorformatierter Text“ ( Icon </> )!

Entschuldige bitte, es war nicht meine Absicht, irgendwem etwas zuzumuten. Hier natürlich der Text

alias: Bo_Leuchten_Test
description: ""
triggers:
  - trigger: sun
    event: sunset
    offset: 0
conditions:

actions:
  -if:
  - condition: template
    value_template: {{ range (2) | random == 1}}
  then:
  - device_id: bbb4b7c1f4baf83a29d1b9fbde973b0a
    domain: mobile_app
    type: notify
    message: BO_Sonnenuntergang - Leuchte ein
  - if:
      - condition: time
        after: "21:30:00"
        before: "22:30:00"
    then:
      - type: turn_on
        device_id: 462acdf115415abeb529ee97d0a655a4
        entity_id: 9475a6873ec2ac8b2d386e29198354c9
        domain: switch
      - delay:
          hours: 0
          minutes: 45
          seconds: 0
          milliseconds: 0
      - type: turn_off
        device_id: 462acdf115415abeb529ee97d0a655a4
        entity_id: 9475a6873ec2ac8b2d386e29198354c9
        domain: switch
      - device_id: bbb4b7c1f4baf83a29d1b9fbde973b0a
        domain: mobile_app
        type: notify
        message: Leuchte aus nach 21:30
  
mode: single

Was soll den die Automation den genau tun?

Aktuell wird diese bei Sonnenuntergang ausgelöst.
Dann würfelst Du eine Zahl zwischen 0 und 1

Wenn eine 1 gewürfelt wird, geht die Automation weiter, bei 0 wird sie abgebrochen.

Wenn 1 gewürfelt wird, dann versendest Du eine Benachrichtigung.
Wenn die Uhrzeit zwischen 21:30 und 22:30, dann schaltest Du einen Switch ein. Wartest 45 min, dann schaltest Du den Switch aus und versendest eine Benachrichtigung.

In meinen Breitengraden geht aktuell die Sonne bereits vor 21:30 unter.

Was also Deine Automation gerade mach, ist zum Zeitpunkt des Sonnenuntergangs ( vor 21:30) eine Benachrichtigung zu verschicken, wenn eine 1 gewürfelt wird, sonst nichts.

Also was genau möchtest Du erzielen?

Meine Vermutung:
Schalte beim Sonnenuntergang zufällig Switch 1 oder 2 ein. Und schalte den Switch nach 45 Minuten wieder aus, wenn es nach Sonnenuntergang ist.
Als erstes erstellst Du Dir eine Switch Gruppe, bestehend aus den zwei Switches, dann sehe die Automation so aus.


description: ""
mode: single
triggers:
  - trigger: sun.sunset
    options: {}
    id: ein
  - trigger: state
    entity_id:
      - switch.gruppe_xyz
    to:
      - "on"
    for:
      hours: 0
      minutes: 45
      seconds: 0
    id: aus
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - ein
        sequence:
          - variables:
              lichter:
                - switch.xyz_1
                - switch.xyz_2
          - action: switch.turn_on
            metadata: {}
            target:
              entity_id: |
                {{ lichter | random }}
            data: {}
      - conditions:
          - condition: trigger
            id:
              - aus
          - condition: state
            entity_id: sun.sun
            state:
              - below_horizon
        sequence:
          - action: switch.turn_off
            metadata: {}
            target:
              entity_id: switch.gruppe_xyz
            data: {}


Du musst lediglich die Entitäten

  • switch.gruppe_xyz
  • switch.xyz_1
  • switch.xyz_2

Durch Deine eigene Entität austauschen.

Wenn ich mit meiner Interpretation der Aufgabenstellung falsch liege.
Dann beschreib mal bitte genau was Du vor hast.

Gruß Osorkon

Du solltest das nicht im yaml bearbeiten sondern in der UI.

Versuch es mal so.

alias: Bo_Leuchten_Test
description: ""
triggers:
  - trigger: sun
    event: sunset
    offset: 0
conditions: null
actions:
  - if:
      - condition: template
        value_template: "{{ range (2) | random == 1}}"
    then:
      - device_id: bbb4b7c1f4baf83a29d1b9fbde973b0a
        domain: mobile_app
        type: notify
        message: BO_Sonnenuntergang - Leuchte ein
  - if:
      - condition: time
        after: "21:30:00"
        before: "22:30:00"
    then:
      - type: turn_on
        device_id: 462acdf115415abeb529ee97d0a655a4
        entity_id: 9475a6873ec2ac8b2d386e29198354c9
        domain: switch
      - delay:
          hours: 0
          minutes: 45
          seconds: 0
          milliseconds: 0
      - type: turn_off
        device_id: 462acdf115415abeb529ee97d0a655a4
        entity_id: 9475a6873ec2ac8b2d386e29198354c9
        domain: switch
      - device_id: bbb4b7c1f4baf83a29d1b9fbde973b0a
        domain: mobile_app
        type: notify
        message: Leuchte aus nach 21:30
mode: single

Du hast das alles schon richtig erkannt. Eigentlich wollte ich Wenn 1 dann eine Leuchte und Else dann andere leuchte. ABer wenn der erste Teil schon nicht klappt, habe ich den Else Part schon mal weg gelassen. Ich werde das mal testen. Wobei ich mir schon mit der Switch Gruppe schwer getan habe.

Ich habe auch keine einzelne Variable Switch.xyz_1, sondern das:

        device_id: 462acdf115415abeb529ee97d0a655a4        
        entity_id: 9475a6873ec2ac8b2d386e29198354c9

@rstuck: Was ist UI?

Was bedeutet der Teil des Codes?

Das ist der Auslöser zum Ausschaten.

Wenn Switch Gruppe an für 45 min.

Helfer erstellen —-> Gruppe —> Schalter

GUI steht für Graphical User Interface; auf Deutsch sagt man meist grafische Benutzeroberfläche.

Gruß Osorkon

Aha, das ist das, was man normal aufruft mit den Bildern. Im prinzip ist das ja wirklich einfacher, aber ich habe es trotzdem nicht hin bekommen :see_no_evil_monkey:

Tatsächlich möchte ich bei Sonnenuntergang Zufallsgesteuert entweder die eine Leuchte / Schalter oder die andere einschalten und nach 45Minuten wieder aus.

Wie würde das in GUI aussehen?

UI = User Interface = (graphische) Benutzeroberfläche

In deinem yaml-code waren ja einige Einrückungsfehler was beim benutzen des Automationseditors nicht passiert.

Im Prinzip habe ich es so auch gemacht. Aber da fehlt mir der Part mit dem Zufallsgenerator für den Auswahl der Leuchten. Nur für eine Leuchte ist es genau so.

Die Benachrichtigung ist für mein Handy, die mir sagt, jetzt Leuchte ein und aus.

Du erstellst dir einfach eine neu Automation.
Kopierst den von mir zur Verfügung gestellten Yaml Code und fügst es einfach per Copy and Paste ein.

Du kannst jetzt zwischen den grafischen Editor und der Yaml Ansicht hin und her wechseln.

Ersetzte die Switch Entitäten, wie oben beschrieben durch Deine eigenen.
Speichern —> Fertig

Gruß Osorkon