Rotary Encoder Zweck
Drehgeber für präzise Wert-Eingabe, Lautstärke-Regelung, Menü-Navigation oder Dimmer-Steuerung. Anschluss (KY-040 Module) Funktionen
Rotation: Erkennt Drehrichtung und Schritte
Push Button: Integrierter Taster mit Click-Erkennung Position Tracking: Absolute Position mit Min/Max-...
Code-Vorschau
Haupt-Konfiguration
Tipp: Markieren & ⌘/Ctrl + C zum Kopieren
configuration.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Rotary Encoder (KY-040 oder ähnlich)# Bietet Rotationserkennung und Drucktasten-Funktionalitätsensor:-platform: rotary_encoder
name:"${friendly_name} Rotary Position"id: rotary_encoder
pin_a:number: GPIO18
mode: INPUT_PULLUP
pin_b:number: GPIO19
mode: INPUT_PULLUP
resolution:4# Impulse pro Schritt (1, 2, oder 4)min_value:-100max_value:100publish_initial_value:truerestore_mode: RESTORE_DEFAULT_VALUE
filters:-multiply:1.0# Skalierungsfaktor für Feinabstimmungon_value:then:-logger.log:format:"Rotary encoder: %.1f"args:['x']on_clockwise:then:-logger.log:"Clockwise rotation detected"on_anticlockwise:then:-logger.log:"Counter-clockwise rotation detected"# Drucktaste des Rotary Encodersbinary_sensor:-platform: gpio
pin:number: GPIO5
mode: INPUT_PULLUP
inverted:truename:"${friendly_name} Rotary Button"id: rotary_button
filters:-delayed_on: 50ms # Entprellen-delayed_off: 50ms
on_press:then:-logger.log:"Rotary button pressed"# Encoder bei Tastendruck auf Null zurücksetzen-sensor.rotary_encoder.set_value:id: rotary_encoder
value:0on_click:-min_length: 50ms
max_length: 1s
then:-logger.log:"Short click detected"on_double_click:-min_length: 50ms
max_length: 1s
then:-logger.log:"Double click detected"on_multi_click:-timing:- ON for at most 1s
- OFF for at most 1s
- ON for at most 1s
- OFF for at least 0.2s
then:-logger.log:"Triple click detected"# Optional: Number-Komponente für Home Assistant Steuerungnumber:-platform: template
name:"${friendly_name} Volume"id: volume_control
min_value:0max_value:100initial_value:50step:1unit_of_measurement:"%"mode: slider
optimistic:truelambda:|- // Encoder-Wert (-100 bis 100) auf Lautstärke (0 bis 100) mappen
float encoder_val = id(rotary_encoder).state;
return (encoder_val + 100) / 2.0;
set_action:then:# Lautstärke zurück auf Encoder-Bereich mappen-sensor.rotary_encoder.set_value:id: rotary_encoder
value:!lambda'return (x * 2.0) - 100;'# Optional: Licht-Dimmer Beispiellight:-platform: monochromatic
output: dimmer_output
name:"${friendly_name} Dimmer"id: rotary_light
restore_mode: RESTORE_DEFAULT_OFF
output:-platform: ledc
id: dimmer_output
pin: GPIO23
frequency: 1000Hz
# Script zum Aktualisieren der Lichthelligkeit basierend auf Encoderscript:-id: update_light_brightness
then:-lambda:|- float encoder_val = id(rotary_encoder).state;
float brightness = (encoder_val + 100) / 200.0; // Auf 0.0-1.0 mappen
brightness = max(0.0f, min(1.0f, brightness)); // Auf gültigen Bereich begrenzen
auto call = id(rotary_light).turn_on();
call.set_brightness(brightness);
call.perform();
# Licht aktualisieren wenn Encoder sich änderton_boot:then:-script.execute: update_light_brightness