frei benutzbare Variablen

Thrusty

Member
Hallo, kann mir mal jemand erklären wie ich eine frei benutzbare Variable erstelle?
Die Idee dahinter, ich möchte die Variable mit zb einer "0" füllen. Wenn sich der Zustand eines Gerätes ändert, dann soll die "0" gegen eine "1" getauscht werden. Ich möchte damit eine Mehrfachbelegung eines Tasters realisieren.
Einmal drücken - Licht an, ein zweites mal drücken - Licht aus.
 

Thrusty

Member
Danke für die schnelle Antwort. Habe einen Helfer als Nummer erstellt.
Leider bekomme ich nicht die Auswahl wenn ich eine Automatisierung erstellen möchte. Weder unter Auslöser, noch unter Bedingung, noch unter Aktion. Die Helfer werden dort nicht angeboten.
 

Nival

-
Moderator
Bei den Automatisierungen / deren Aktionen sind die Helfer unter den Diensten zu finden, hier ein Beispiel für einen Schalter:
1662817571416.png

bzw. bei den Auslösern und Bedingungen unter Zustand:
1662817677398.png
 
Zuletzt bearbeitet:

Thrusty

Member
Danke, bin ich wieder einen kleinen Schritt weiter.
Nur leider passt der Dienst, denn du mir zeigtest, nicht zu meinem Helfer.
Wie gesagt ich will nur einen Wert ablegen, der später wieder zurückgesetzt werden soll. Und bei bedarf ausgelesen werden muss.
.Bildschirmfoto 2022-09-10 um 16.05.38.png
 

Nival

-
Moderator
Nur leider passt der Dienst, denn du mir zeigtest, nicht zu meinem Helfer.
Ist richtig, ist ja auch für nen Schalter :) wenn Du an dieser Stelle ansetzen willst sollte es der Dienst "Numerische Eingabe: Set" sein, dann müsstest als Entität auch Deinen Helfer auswählen können.
 

Thrusty

Member
Das hat nun soweit funktioniert. Super.
Aber es ändert sich noch nichts in der yaml Datei wenn ich den Taster drücke. In der UI sehe ich "ausgelöst.."
Da passt etwas noch nicht.
 

Nival

-
Moderator
Schau in den Entwicklerwerkzeugen, da sollte die entsprechende Entität nun den durch die Automatisierung eingestellten Zustand haben. Das ist quasi "on the fly" :)
 

Thrusty

Member
Wieder etwas gelernt :).
Leider ändert sich der Zustand nicht obwohl der Tastendruck realisiert wird.
Der Code sieht so aus:
Code:
- id: '1662819990462'
  alias: DisplayTaste1
  description: setzt Helfer auf an/aus
  trigger:
  - platform: device
    type: changed_states
    device_id: c0b3d8650cde9438ff6424f2c8c3cf72
    entity_id: switch.status_display
    domain: switch
  condition: []
  action:
  - service: input_number.set_value
    data: {}
    target:
      entity_id: input_number.displaytaste_1
  mode: single
 

Nival

-
Moderator
Der Code sieht so aus:
Da sehe ich jetzt auch nicht den Wert, auf den es gesetzt wird..?

YAML:
- id: '1662819246981'
  alias: Zahl ändern
  description: ''
  trigger:
  - platform: time
    at: '16:15:00'
  condition: []
  action:
  - service: input_number.set_value
    data:
      value: 5
    target:
      entity_id: input_number.xyz
  mode: single
Thema data ;)
 

Nival

-
Moderator
Genau darauf wollte ich hinaus :)

Automatisierung, Bedingung, Aktion. Aktuell hast Du zwar die Art der Aktion genannt, aber nicht Ihren Wert.
 

Nival

-
Moderator
1662822574366.png

Also wenn Du hin und her schalten möchtest, dann musst Du prinzipiell zwei Automatisierungen machen - also wenn sich, was auch immer Du genau anstellen möchtest, so machen lässt ;)

Alternativ, falls das eher zu Deinen Zielen passt, lassen sich diese Helfer zum "manuellen umschalten" auch in der Benutzeroberfläche (Übersicht) integrieren:
1662822665253.png
- dann würdest Du anderswo nurnoch ihren Wert auslesen und damit weiterarbeiten.
 

Thrusty

Member
Versuche mal ob ich das hinbekomme.
Also zwei Automationen ist klar. Der Plan ist in diesem Fall:
ein Tastendruck und die Variable ist 0 dann Terrassenlicht an und die Variable auf 1 zu setzen.
Als zweites: Tastendruck und Variable ist 1 dann Terrassenlicht aus und Variable auf 0.
 

Nival

-
Moderator
Tastendruck im Home Assistant? Dann würde sich ein Schalter innerhalb der Oberfläche eigentlich eher anbieten zum schalten, und "Licht an oder aus" dann als Automatisierung. Dafür würde sich aber auch wirklich eher der Schalter anbieten als die Zahlenvariante.

Wenn es ein irgendwie externer Tastendruck ist, dann bleibt es bei den Automatisierungen, dann halt "wenn Variable soundso, dann schalte Licht und mache Variable anders", also mit zwei Aktionen.
 

Thrusty

Member
Vielleicht hast du Recht mit der Schaltervariante als Helfer.
Wäre aber schön wenn das mit den Zahlen auch funktionieren würde. Ich habe in meinem alten pimatic System so einiges über Variablen gelöst. Teilweise geht der Wert dann auf 3 oder 4.
Und der HardwareTaster... es gibt da eine bessere Hälfte, die möcht doch bitte nicht alles am Display schalten ;).
Daher habe ich für viele Dinge Fernbedienung oder anderes...

Die Ikea tradfri FB eignet sich auch hervorragend zum Rollläden schalten. Auch dafür brauche ich eine Variable mit mehreren Zuständen. Der linke und rechte Taster schaltet zu nächsten Fenster oder zurück. Der obere und untere Taster eben für hoch oder runter.
 

Nival

-
Moderator
Naja, es funktioniert ja problemlos über Zahlen, und wenn Du mehr als 0 / 1 aka False / True bedienen möchtest macht das auch Sinn.

Wenn nicht, dann nicht.
 

alexamend

Active member
Hier ein blueprint für mehrfach Belegung.

YAML:
blueprint:
    name: Short long double click
    description: Different Actions on Short, Long and Double click
    domain: automation
    input:
        switch_id:
            name: Binary sensor entity
            description: The binary_sensor used to trigger the automation
            selector:
                entity:
                    domain: binary_sensor
        long_click_action:
            name: Long click action
            description: The action(s) to launch for a long click
            default: []
            selector:
                action:
        short_click_action:
            name: Short click action
            description: The action(s) to launch for a single short click
            default: []
            selector:
                action:
        double_click_action:
            name: Double click action
            description: The action(s) to launch for a double click
            default: []
            selector:
                action:
        delay:
            name: Delay in seconds
            description: The time in seconds (can contain decimals) used as a delay for the double or long click detection
            default: 0.3
            selector:
                number:
                  min: 0.0
                  max: 10.0
                  unit_of_measurement: seconds
trigger:
  - platform: state
    entity_id: !input switch_id
    to: 'on'
action:
  - variables: # create variable cause we need those in templates
        switch_id: !input switch_id
        double_click_action: !input double_click_action
  - wait_template: "{{ is_state(switch_id, 'off') }}"
    timeout: !input delay
    continue_on_timeout: true
  - choose:
      - conditions: "{{ not wait.completed }}" # long click
        sequence: !input long_click_action
    default:
      - choose:
          - conditions: "{{ double_click_action | length > 0 }}" #only wait for second click if a n action is defined for it to be more reactive
            sequence:
              - wait_template: "{{ is_state(switch_id, 'on') }}" # second click?
                timeout: !input delay
                continue_on_timeout: true
              - choose:
                  - conditions: "{{ not wait.completed }}" #single click
                    sequence: !input short_click_action
                default: !input double_click_action  # double click
        default: !input short_click_action
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
969
Beiträge
14.048
Mitglieder
500
Neuestes Mitglied
McKay1408
Oben