configuration.yaml
1# Batteriespannung Überwachung
2sensor:
3 - platform: adc
4 pin: A0
5 name: "${friendly_name} Battery Voltage"
6 id: battery_voltage
7 attenuation: 11db
8 update_interval: 10s
9 accuracy_decimals: 3
10 filters:
11 - multiply: 2.0 # Spannungsteiler-Korrektur (R1=R2)
12 - sliding_window_average:
13 window_size: 3
14 send_every: 3
15
16 # Batterie-Prozentsatz (für LiPo 3.7V)
17 - platform: template
18 name: "${friendly_name} Battery Level"
19 id: battery_level
20 unit_of_measurement: "%"
21 device_class: battery
22 state_class: measurement
23 accuracy_decimals: 0
24 lambda: |-
25 float voltage = id(battery_voltage).state;
26 float percentage;
27
28 // LiPo Entladekurve (3.7V nominal)
29 if (voltage >= 4.15) {
30 percentage = 100.0;
31 } else if (voltage >= 4.0) {
32 percentage = 90.0 + (voltage - 4.0) / 0.15 * 10.0;
33 } else if (voltage >= 3.8) {
34 percentage = 70.0 + (voltage - 3.8) / 0.2 * 20.0;
35 } else if (voltage >= 3.7) {
36 percentage = 40.0 + (voltage - 3.7) / 0.1 * 30.0;
37 } else if (voltage >= 3.6) {
38 percentage = 20.0 + (voltage - 3.6) / 0.1 * 20.0;
39 } else if (voltage >= 3.4) {
40 percentage = 5.0 + (voltage - 3.4) / 0.2 * 15.0;
41 } else {
42 percentage = 0.0;
43 }
44 return max(0.0f, min(100.0f, percentage));
45 update_interval: 10s