set_position von cover mit Helper realisieren

StPan

New member
Hallo,

als Home Assistant-Neuling bin ich derzeit dabei, meine Rollo-Automatisierungen zu optimieren.
Ich möchte erreichen, dass die Endpositionen der Rollos nicht als nummerischer Festwert in den unterschiedlichen Automationen hinterlegt sind, sondern (quasi als globale Variable) in einem nummerischen Wert eines Helpers.

Script mit nummerischem Festwert:
YAML:
alias: AU - TEST
description: ""
trigger:
  - platform: sun
    event: sunrise
    offset: 0
condition: []
action:
  - device_id: a1810bcf6e33a1342da204ae23f3931f
    domain: cover
    entity_id: c1546757b998baa44ccf6a9592dc936c
    type: set_position
    position: 60
mode: single

Als Lösungsansatz wurde das Script um den Helper "input_number.hl_rollo_schlafposition" erweitert und unterschiedliche Syntaxmöglichkeiten getestet.
Eine davon ist diese:
YAML:
alias: AU - TEST
description: ""
trigger:
  - platform: sun
    event: sunrise
    offset: 0
condition: []
action:
  - device_id: a1810bcf6e33a1342da204ae23f3931f
    domain: cover
    entity_id: c1546757b998baa44ccf6a9592dc936c
    type: set_position
    position: "{{ states('input_number.hl_rollo_schlafposition') | int }}"
mode: single

Die Änderung führt generell zur Fehlermeldung Message malformed: value must be one of ['close', 'close_tilt', 'open', 'open_tilt', 'stop'] for dictionary value @ data['type'].

Nun zu meiner Frage:
1. Wo liegt der Fehler im Script?
2. Kann der nummerischen Festwerte durch einen Helper ersetzt werden?
3. Falls nein, welche Alternativen gibt es?

Vielen Dank für die Unterstützung
Stefan
 
Ich würde mal behaupten, das deine Rolladenschalter mit einer Position nichts anfangen können. Steht ja da, was er eigentlich erwartet.
Ich kann meine Rolläden auch nicht auf eine Position "60" oder sowas fahren, sondern muß es über Zeitsteuerung machen.
Also Befehl
ROLLO SCHLIEßEN
WARTE 10 Sekunden
ROLLO STOP
 
Hallo,

ich verwende Shelly-Aktoren, die nach einem Kalibrierungslauf eine Position von 0% (geschlossen) bis 100% (offen) haben können.
Das erste Script mit nummerischem Festwert: funktioniert in dieser Form.

Stefan
 
Tja, dann bin ich überfragt. So vom aussehen her würde ich auch sagen, müßte das funktionieren.
Nur die Fehlermeldung sagt hat, das er nur diese Werte will. Teste doch mal, wenn Du "input_number.hl_rollo_schlafposition" auf CLOSE setzen tust, was er dann macht. Also wirklich den STRING so senden.
 
@StPan mal abgesehen davon, dass ich niemals device_id's in meinen Automatisierungen/ Skripten nutze.
Funktioniert das setzen der Position über einen Input Number Helfer ohne weiteres. Vorausgesetzt der Input Number hat Werte zwischen 0-100

YAML:
  - service: cover.set_cover_position
    data:
      position: |
        {{ states('input_number.XYZ') | int(0) }}
    target:
      entity_id: cover.XYZ
 
Zuletzt bearbeitet:
mal abgesehen davon, dass ich niemals device_id's in meinen Automatisierungen/ Skripten nutze.
Wenn man eine Automatisierung macht, setzt er die aber nun mal ein. Im Visual Editor stehen die richtigen Geräte, im yaml aber nun mal nur der Code.
Ist bei mir in einer Automatisierung auch so.
 
Aber nur wenn Du Gerät als Auslöser, Bedingung, Aktion auswählen tust. ;)

Verwendest Du als Aktion „Dienst Ausführen“
In diesem Fall den Dienst „Abdeckung: Position festlegen“ (cover.set_cover_position) und als Ziel die Entität des Covers, ist das nicht der Fall.

IMG_4330.jpeg
Grafischer Editor:
IMG_4329.jpeg

YAML Editor:

IMG_4331.jpeg

Des Weiteren kannst jede einzelnen Auslöser, Bedingung, Aktion im grafischen editor als yaml bearbeiten ohne in die YAML Ansicht wechseln zu müssen. Um z.B. als Position ein Template einzufügen.

IMG_4332.jpeg
 
Zuletzt bearbeitet von einem Moderator:
Aber nur wenn Du Gerät als Auslöser, Bedingung, Aktion auswählen tust. ;)

Verwendest Du als Aktion „Dienst Ausführen“
In diesem Fall den Dienst „Abdeckung: Position festlegen“ (cover.set_cover_position) und als Ziel die Entität des Covers, ist das nicht der Fall.
Leider kann ich das von mir zu steuernde Gerät nicht als DIENST ansprechen.
YAML Editor:

Anhang anzeigen 4603

Des Weiteren kannst jede einzelnen Auslöser, Bedingung, Aktion im grafischen editor als yaml bearbeiten ohne in die YAML Ansicht wechseln zu müssen. Um z.B. als Position ein Template einzufügen.
Ja, kann ich bei mir auch, aber dennoch steht die entität_id als Zahl und nicht im klartext da.
1691837053999.png
 
@RudiP ist mir leider in meinen 3 Jahren Home Assistant und mit mittlerweile über 2700 Entitäten kein einziges Mal untergekommen?! Ich kann Dir versichern, dass in all meinen Automatisierungen alle verwendete Entitäten mit der Domain und der von mir vergebenen entity-id erscheinen.
Ich gehe mal davon aus, dass das Verhalten bei Dir nur wenige Entitäten betrifft, eines bestimmten Gerätes oder einer bestimmten Integration.
Aber das Ganze hat ja mit der eigentlichen Fragestellung nichts mehr zu tun. Und hilft dem Thread Ersteller nicht weiter.
 
@StPan:
Hast Du das mit den Jalousien inzwischen zum laufen bekommen? Ich stehe grad vor dem selben Problem.
Wenn ich einen Sensor anlege, hat dieser leider immer den aktuellen Wert nachdem die Jalousie bewegt wurde.
Dadurch fällt dieser Weg weg:-(
Einen Helper habe ich definiert, dort wird der letzte Zustand auch gespeichert, aber ich bekomme es nicht hin die Jalousie nach
einem Trigger in die Position fahren zu lassen die in dem Helper steht. Ich nutze auch Shelly Aktoren und kann entsprechend die
Position mittels einer Zahl festlegen.
Schöne Grüße
Mercy
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.630
Beiträge
47.400
Mitglieder
4.282
Neuestes Mitglied
MrNico_
Zurück
Oben