Created
September 4, 2024 17:40
-
-
Save StefCoders/8912441fbe208e716d791f9e99b9f9c7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: ZHA - Moes Tuya Smart Knob (TS004F) controller for media_player | |
description: Steuern Sie die Lautstärke des Media Players und setzen Sie Play/Pause darauf | |
domain: automation | |
input: | |
remote: | |
name: Remote | |
description: Moes Tuya Smart Knob-Gerät zur Verwendung | |
selector: | |
device: | |
integration: zha | |
model: TS004F | |
media_player: | |
name: MediaPlayer | |
description: Der MediaPlayer, der gesteuert werden soll | |
selector: | |
target: | |
entity: | |
domain: media_player | |
volume_step_size: | |
name: Volume Step Size | |
description: Wert der Drehung, der einer Lautstärke-Änderung von 1% entspricht | |
default: 13 | |
selector: | |
number: | |
min: 1 | |
max: 100 | |
mode: slider | |
step: 1 | |
secondary_media_player: | |
name: Secondary MediaPlayer | |
description: Ein weiterer MediaPlayer, der bei einem Tastendruck gesteuert werden soll | |
selector: | |
target: | |
entity: | |
domain: media_player | |
button_custom_action: | |
name: Button Custom Action | |
description: Benutzerdefinierte Aktion, die beim Tastendruck ausgeführt werden soll | |
selector: | |
action: {} | |
mode: restart | |
max_exceeded: silent | |
trigger: | |
- platform: event | |
event_type: zha_event | |
event_data: | |
device_id: !input 'remote' | |
action: | |
- variables: | |
command: '{{ trigger.event.data.command }}' | |
cluster_id: '{{ trigger.event.data.cluster_id }}' | |
endpoint_id: '{{ trigger.event.data.endpoint_id }}' | |
args: '{{ trigger.event.data.args }}' | |
step_type: > | |
{% if args %} | |
{% if 'StepMode.Up' in args %} | |
up | |
{% elif 'StepMode.Down' in args %} | |
down | |
{% endif %} | |
{% else %} | |
none | |
{% endif %} | |
amount: '{{ (args and args.split(",")[1] | int(default=50)) or 50 }}' | |
rate: '{{ (args and args.split(",")[2] | int(default=1)) or 1 }}' | |
volume_step_size: !input 'volume_step_size' | |
# --- Media Player --- | |
media_player_entity: !input 'media_player' | |
media_player_is_on: "{{ states(media_player_entity.entity_id) not in ['off', 'unavailable', 'idle'] }}" # Überprüft, ob der Media Player eingeschaltet oder am Abspielen ist. | |
- choose: | |
- conditions: | |
- '{{ command == "toggle" }}' | |
- '{{ cluster_id == 6 }}' | |
- '{{ endpoint_id == 1 }}' | |
sequence: !input 'button_custom_action' | |
- conditions: | |
- '{{ command == "step" }}' | |
- '{{ cluster_id == 8 }}' | |
- '{{ endpoint_id == 1 }}' | |
- '{{ media_player_is_on }}' | |
sequence: | |
- repeat: | |
count: '{{ rate }}' | |
sequence: | |
- service: media_player.volume_set | |
target: !input 'media_player' | |
data: | |
volume_level: > | |
{% set current_volume = state_attr(media_player_entity.entity_id, 'volume_level') | float %} | |
{% set volume_increment = (amount | float) / volume_step_size / 100 %} | |
{% if step_type == 'up' %} | |
{% set new_volume = current_volume + volume_increment %} | |
{% elif step_type == 'down' %} | |
{% set new_volume = current_volume - volume_increment %} | |
{% endif %} | |
{% set new_volume = new_volume if 0 <= new_volume <= 1 else 0 if new_volume < 0 else 1 %} | |
{{ new_volume }} | |
- delay: '00:00:01' # Eine konstante Verzögerung zwischen den Befehlen |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment