Seite 1 von 1
Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 13:52
von Friedi
Ich habe gerade mal wieder eine Blockade und weiß nicht, wie ich das geregelt bekomme.
Ich will eine Automatisierung erstellen, in der ich ein Script aufrufe und die Variable "mode_on_off" mit z.B. dem Wert off übergebe.
Code: Alles auswählen
service: script.turn_on
target:
entity_id: script.air_purifier
data:
mode_on_off: "off"
Im aufgerufenen Script möchte ich nun in Abhängigkeit dieser Variable unterschiedliche Aktionen ausführen. Also wenn die Variable "on" ist, soll Aktion A ausgeführt werden und bei "off" die Aktion B.
Ich komme hier beim Script einfach zu keinem Ergebnis, das auch nur annähernd laufen würde. Hat hier jemand eine Idee für mich?
Re: Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 15:12
von Osorkon
Hier mal ein Beispiel, Aktion Teil einer Automatisierung
Code: Alles auswählen
action:
- service: script.xyz
metadata: {}
data:
on_off: "off"
im data Bereich wird der Wert für on_off definiert.
Mit "off" wird der Input Bohlen ausgeschaltet und mit "on" wird dieser eingeschaltet.
Und hier das Script xyz
Code: Alles auswählen
alias: xyz
sequence:
- service: input_boolean.turn_{{on_off}}
metadata: {}
data: {}
target:
entity_id: input_boolean.xyz
mode: single
Hilft das weiter?
Ansonsten poste doch mal Deine Automatisierung und das zugehörige Script.
Gruß
Osorkon
Re: Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 15:20
von Friedi
Das hilft mir leider nicht weiter. Trotzdem danke
Die Action meiner Automatisierung habe ich ja bereits gepostet. Die passt auch so weit.
Leider bekomme ich mein Script nicht hin. Ich will entweder per choose oder if then else im Script verschiedene Aktionen auslösen. Je nachdem, ob in der Variable on oder off mitgegeben wird.
Re: Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 15:33
von Osorkon
Also einfach Wenn Dann?!
Code: Alles auswählen
alias: xyz
sequence:
- if:
- condition: template
value_template: |
{{ on_off == "on" }}
then:
- service: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.xyz
- if:
- condition: template
value_template: |
{{ on_off == "off" }}
then:
- service: input_boolean.turn_off
metadata: {}
data: {}
target:
entity_id: input_boolean.xyz
mode: single
Auswahl wäre auch eine Option
Code: Alles auswählen
- choose:
- conditions:
- condition: template
value_template: |
{{ on_off == "on" }}
sequence:
- service: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.xyz
- conditions:
- condition: template
value_template: |
{{ on_off == "off" }}
sequence:
- service: input_boolean.turn_off
metadata: {}
data: {}
target:
entity_id: input_boolean.xyz
Gruß
Osorkon
Re: Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 16:13
von Friedi
Danke erst mal. Jetzt hat es zumindest klick gemacht und das Script ist jetzt zumindest dahingehend korrekt, dass es nicht mehr rot angezeigt wird. Allerdings haut das mit dem Aufruf aus der Automatisierung irgendwie nicht hin. Hier mal meine Codes. Vielleicht siehst du was
Automatisierung:
Code: Alles auswählen
alias: test_puri
description: ""
trigger:
- platform: state
entity_id:
- input_boolean.test_purifier
from: "off"
to: "on"
condition: []
action:
- service: script.turn_on
target:
entity_id: script.air_purifier
data:
mode_on_off: "off"
mode: single
Script:
Code: Alles auswählen
air_purifier:
sequence:
- choose:
- conditions:
- condition: template
value_template: |
{{ mode_on_off == "on" }}
sequence:
- service: fan.set_preset_mode
target:
entity_id: fan.xiaomi_smart_air_purifier_4_pro
data:
preset_mode: Auto
- conditions:
- condition: template
value_template: |
{{ mode_on_off == "off" }}
sequence:
- service: fan.turn_off
target:
entity_id: fan.xiaomi_smart_air_purifier_4_pro
Re: Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 16:26
von Friedi
Kaum ruft man den Service richtig auf, funktioniert es
Code: Alles auswählen
- service: script.turn_on
target:
entity_id: script.air_purifier
data:
variables:
mode_on_off: "off"
Re: Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 16:29
von Friedi
Jetzt hätte ich dennoch eine Frage: Kann man, für den Fall, dass die Variable nicht übergeben wird, im Script einen Default für die Variable setzen, der nur dann verwendet wird, wenn kein Wert übergeben wird?
Re: Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 16:44
von Osorkon
| default(„xyz“)
Wenn keine variable übergeben wird.
Oder als default Option eine Aktion definieren, wenn keine der Standard Auswahl zutrifft.
Gruß
Osorkon
Re: Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 16:56
von Friedi
Osorkon hat geschrieben: ↑Sa 27. Jan 2024, 16:44
| default(„xyz“)
Wenn keine variable übergeben wird.
Verstehe ich nicht
Wo soll dieses |default(“off”) im Code hin? Kannst du das in meinem Beispiel mal einsetzen?
Re: Variable an Script übergeben und verwenden
Verfasst: Sa 27. Jan 2024, 17:01
von Osorkon
Wird keine variable übergeben , wird diese == "on" gesetzt.
Code: Alles auswählen
air_purifier:
sequence:
- choose:
- conditions:
- condition: template
value_template: |
{{ mode_on_off | default(“on“) == "on" }}
Guß
Osorkon