Bedingungen "if ... then ... else ..." in Homeassistant programmieren

sprotte24

New member
Moin,
ich kenne eine Reihe von Programmiersprachen.
Aber gerade in Homeassistant gelingt es mir als Einsteiger nicht gut, solche Bedingungen zu benutzen.

Stellen wir uns mal vor, ich habe einen Schalter.
Wenn ich diesen schließe, soll eine Lampe eingeschaltet werden.
Wenn ich ausschalte, soll die Lampe ausgeschaltet werden.
Also
if Schalter = on
then Lampe einschalten
else Lampe ausschalten

Der Schalter ist als ein Trigger, die Lampe eine Aktion.

Natürlich ist dies bereits ein starke Vereinfachung, denn:

Eigentlich macht es Sinn, den Zustand der Lampe immer vorab zu prüfen.
Und nur wenn sie gerade aus ist, dann sollte ich sie einschalten.
Umgekehrt sollte ich vor Ausschalten wiederum den Zustand der Lampe kennen.
Wenn die Lampe aus ist, dann brauche ich sie ja nicht auszuschalten.

Mich irritiert, dass Homeassistant beim simplen Erstellen einer Automation nicht unmittelbar das "else" zur Verfügung stellt.

Ich bitte um Hinweise, wie ich mich am besten in diese Problematik einlesen kann.

Viele Grüße
sprotte24
 
Zuletzt bearbeitet:
man braucht kein else, bei mehreren Möglichkeiten kannst du choose verwenden (Optionen? weiß grad nicht, wie das deutsch heißt), da gibts default.

Und für Schalter u.ä. benutzt du einfach eine toggle Aktion.
 
Zuletzt bearbeitet:
Weder ist "else" dasselbe wie "default", noch ist "else" überflüssig.
Ein "Schalter" ist was anderes als ein "Umschalter"..
Das hat mir leider nicht weitergeholfen.
Ich freue mich weiter über Hinweise.
 
Es gibt kein else aus genannten Gründen, kannst du in div. Featurrequests in der HA Community nachlesen.

if 1
tu dies
if 2
tu das
default
tu was anderes, falls noch nichts getan (else)
 
Zuletzt bearbeitet:
OK, und für die beiden letzten Zeilen fehlt dann der Code.
Was soll denn da stehen?
If nicht 1 und auch nicht 2 dann default?
Dafür wäre ein "else" sehr nützlich, und das Fehlen macht es kompliziert.
Natürlich kennt YAML das "else".
Oder es geht weiter mit "else if".
 
Zuletzt bearbeitet:
Hi sprotte24,

wenn du eine Automatisierung erstellst kannst im Aktionsblock ein "Wenn" einfügen. Dieses bietet dir dann alles was du dir wünschst.
Um bei deinem Beispiel zu bleiben:
YAML:
description: ""
mode: single
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.wohnzimmer_spots_schaltereingang
conditions: []
actions:
  - if:
      - condition: state
        entity_id: binary_sensor.wohnzimmer_spots_schaltereingang
        state: "on"
    then:
      - action: light.turn_on
        metadata: {}
        data:
          brightness_pct: 100
        target:
          entity_id: light.licht_gruppe_wohnzimmer
    else:
      - action: light.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: light.licht_gruppe_wohnzimmer
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.387
Beiträge
61.565
Mitglieder
6.562
Neuestes Mitglied
KogerLi
Zurück
Oben