Erstmal Danke an @andy4711 .
Hab heute alles auf eine Platine gelötet, da ja alles noch im Versuchsaufbau war. Anschliessend Batterie ran - läuft. Dann habe ich noch an den Zeiten „geschraubt“ , dann auf „Install“ gedrückt. Hab nicht mitbekommen das ESPHome auf eine neue Version geupdatet hat. Sah schon komisch aus bei flashen, so viele neu Sachen geladen. Und am Ende „nur“ gemeckert, das der Speicher recht gut gefüllt ist. Jetzt habe ich aber im DeepSleep ein merkwürdiges Verhalten: er geht in den DeepSleep, allerdings (wie schon erwähnt) b leibt die rote LED auf dem Board an, am „Sensor-Board“ blinkt die blaue LED wie wild solange er im DeepSleep ist. Wenn er dann wieder aufwacht, blinkt sie wieder im 5s Takt (so wie eingestellt, das ist die Meßzeit). So wird die Batterie wohl nicht entlastet, da wird sie nicht lange halten. Kann sich das einer erklären??
Nachtrag: die Spannungsmessung wird jetzt bei jedem Aufwachen ausgeführt. Warum kann ich allerdings auch nicht sagen (habe den Code nicht geändert).
Hallo, habe mal den Freundlichen von „Fernost“ befragt. Dieser meint, dass die rote LED immer leuchtet, weil er an der Batterie/Strom hängt und das nicht geändert werden kann.
Die blaue LED (die scheinbar immer blinkt) kann aber geändert werden. Hier die Vorschläge:
esphome:
name: voltsensor-rangerover
esp8266:
board: d1_mini
# ... deine bestehende Konfiguration ...
deep_sleep:
run_duration: 90s
sleep_duration: 30min
# GPIO-Konfiguration für die blaue LED
output:
- platform: gpio
pin: GPIO2 # Blaue LED am D1 Mini
id: blue_led
inverted: true # Weil die LED bei LOW aktiv ist
automation:
- trigger: on_boot
then:
- output.turn_off: blue_led # LED ausschalten nach dem Start
- trigger: on_shutdown # Wird vor Deep-Sleep ausgeführt
then:
- output.turn_off: blue_led # LED sicher ausschalten
- delay: 100ms
- deep_sleep.enter: deep_sleep_1
....
Viel Spass. Gruss
output:
- platform: gpio
pin: GPIO2 # Blaue LED am D1 Mini
id: blue_led
inverted: true # Weil die LED bei LOW aktiv ist
automation:
- trigger: on_boot
then:
- output.turn_off: blue_led # LED ausschalten nach dem Start
- trigger: on_shutdown # Wird vor Deep-Sleep ausgeführt
then:
- output.turn_off: blue_led # LED sicher ausschalten
- delay: 100ms
- deep_sleep.enter: deep_sleep_1
Der obere Teil wird akzeptiert, den Begriff „automation“ kennt er nicht. Hab aber auch rausgefunden, das die rote Lampe immer leuchtet, ist so eine Art Anzeige der Stromzufuhr.
Und auch das Problem der schnell blinkenden blauen LED auf den Board des Ultraschallsensors JSN-SR04T habe ich ergründet: wenn man den DeepSleep benutzen will, sollte man die folgenden Pin´s benutzen:
Habe mal Goggle befragt:
„esphome battery voltage to percent“
KI hat dann geantwortet, mit Blabla
Aber ein Teil passt zu meiner Meinung
Mach das mal
KI Code ungetestet:
# In your ESPHome config under 'sensor:'
sensor:
- platform: adc
pin: A0
id: raw_voltage
name: "Battery Raw Voltage"
accuracy_decimals: 2
filters:
- multiply: 2.0 # Adjust for your voltage divider if needed [5]
- calibrate_linear:
method: exact
datapoints:
- 3.00 -> 0.0 # Adjust these to your battery's actual 0% and 100% points [4, 9]
- 4.20 -> 100.0
# Add more datapoints for better accuracy if needed
- platform: template
name: "Battery Percentage"
id: battery_percentage
icon: mdi:battery-medium
unit_of_measurement: "%"
accuracy_decimals: 0
lambda: |-
float voltage = id(raw_voltage).state;
if (voltage <= 0) {
return 0;
}
if (voltage >= 100) {
return 100;
}
return voltage; # This will return the calculated percentage directly [2]
# Apply the battery device class in Home Assistant if available [2]
# <<!nav>>device_class: battery<<!/nav>>
- platform: adc
pin: A0
id: raw_voltage
name: "Battery Raw Voltage"
accuracy_decimals: 2
filters:
- multiply: 2.0 # Adjust for your voltage divider if needed [5]
- calibrate_linear:
method: exact
datapoints:
- 3.00 -> 0.0 # Adjust these to your battery's actual 0% and 100% points [4, 9]
- 4.20 -> 100.0
# Add more datapoints for better accuracy if needed
- platform: template
name: "Battery Percentage"
id: battery_percentage
icon: mdi:battery-medium
unit_of_measurement: "%"
accuracy_decimals: 0
lambda: |-
float voltage = id(raw_voltage).state;
if (voltage <= 0) {
return 0;
}
if (voltage >= 100) {
return 100;
}
return voltage; # This will return the calculated percentage directly [2]
Funktioniert leider nicht, beim Kompilieren kommt folgender Fehler:
/config/esphome/h2o-zisterne-d1-mini.yaml:74:23: error: stray '#' in program
74 | return voltage; # This will return the calculated percentage directly [2]