Udo68
23. Oktober 2025 um 17:48
1
Hallo, ich versuche mir einen Taster zu bauen, der beim Drücken auf True und beim loslassen auf False geht. aber irgendwie kommt das Signal nur kurz beim los lasen!
`Vorformatierter Text`type: custom:button-card
entity: button.s7_plc_rollo_zu
name: Auf
section_mode: true
grid_options:
rows: 2
columns: 6`Vorformatierter Text`
EDIT by Jay: Code bitte immer über die Codefunktion „</>“ im Editor hinzufügen.
Müsste doch eher ein Template Helfer sein
Das ist eine gute Frage, Template Helfer weiß nicht so richtig ob das funktioniert. Aber kann man nicht mit tap_action und hold_action arbeiten und die sozusagen zweckentfremden.
type: custom:button-card
entity: button.s7_plc_rollo_zu
name: Auf
section_mode: true
grid_options:
rows: 2
columns: 6
tap_action:
action: call-service
service: switch.turn_off
data:
entity_id: switch.rollo_auf
hold_action:
action: call-service
service: switch.turn_on
data:
entity_id: switch.rollo_auf
Udo68
23. Oktober 2025 um 18:22
4
Danke, ne geht leider auch nicht
Und der Helfer Template „Tasten-Template“?
Udo68
23. Oktober 2025 um 18:50
6
Wenn ich bei neuen Helfer Tasten eingebe kommt bei mir nichts!
meins57
23. Oktober 2025 um 18:57
7
Helfer - Template - Taster. Also unter Template gucken.
Hi, versuche mal das:
type: custom:button-card
entity: button.s7_plc_rollo_zu
name: Rollo Zu
icon: mdi:arrow-down-bold
show_state: false
styles:
card:
- height: 120px
- width: 120px
- border-radius: 25px
- border: none
- background: "linear-gradient(130deg, #4398C3 0%, #3880A5 100%)"
- box-shadow: "3px 8px 8px #91A09C"
name:
- font-size: 16px
- color: white
icon:
- color: white
- width: 40px
- height: 40px
tap_action:
action: none # keine Standardaktion
hold_action:
action: none
# --- Momentary / Taster-Logik ---
custom_fields:
js: |
[[[
const el = this;
const entity = 'button.s7_plc_rollo_zu';
const press = () => {
hass.callService('input_boolean', 'turn_on', { entity_id: entity });
};
const release = () => {
hass.callService('input_boolean', 'turn_off', { entity_id: entity });
};
// Falls bei dir schon Event-Listener vorhanden sind, lösche sie erst.
el.removeEventListener('mousedown', el._press);
el.removeEventListener('mouseup', el._release);
el.removeEventListener('mouseleave', el._release);
el.removeEventListener('touchstart', el._press);
el.removeEventListener('touchend', el._release);
el.removeEventListener('touchcancel', el._release);
el._press = press;
el._release = release;
// Event-Listener für Klick/Touch
el.addEventListener('mousedown', press);
el.addEventListener('mouseup', release);
el.addEventListener('mouseleave', release);
el.addEventListener('touchstart', press);
el.addEventListener('touchend', release);
el.addEventListener('touchcancel', release);
return '';
]]]
Falls Du ein Feedback möchtest bitte noch ergänzen:
- background: |
[[[
return variables.is_pressed
? "linear-gradient(130deg, #2E6A89 0%, #24556F 100%)"
: "linear-gradient(130deg, #4398C3 0%, #3880A5 100%)";
]]]
Gruß