Hallo, ich habe div. ESP32 mit ESPHome in Home-Assistant eingebunden die als Ablesegerte dienen. Alle haben dasselbe Problem: nach einem Neustart (z.B. Stromausfall/FW-Update) liefern sie alte Werte und bringen meine ganzen Statistiken durcheinander.
Wenn ich es richtig verstanden habe dann liefern die ESPs immer absolute Werte. Der Inkrement findet im ESP statt. Folglich müsste der ESP, ähnlich wie ein Tacho im Auto, sich den letzten geänderten Wert immer merken. Im Tacho verwendet man aufgrund der begrenzten Anzahl von Schreibzyklen auf EEPROM/Flashs dazu oft ein rollierendes Verfahren in dem nicht immer dieselbe Speicherstelle genutzt wird, aber das wäre erstmal nur ein Detail. Wenn so ein ESP32 nach ein paar Jahren auszutauschen wäre, wäre das auch kein Beinbruch.
Hier mein ESPHome YAML vom Stromzähler-Sensor, vielleicht hat ja jemand einen Verbesserungsvorschlag für mich?
Wenn ich es richtig verstanden habe dann liefern die ESPs immer absolute Werte. Der Inkrement findet im ESP statt. Folglich müsste der ESP, ähnlich wie ein Tacho im Auto, sich den letzten geänderten Wert immer merken. Im Tacho verwendet man aufgrund der begrenzten Anzahl von Schreibzyklen auf EEPROM/Flashs dazu oft ein rollierendes Verfahren in dem nicht immer dieselbe Speicherstelle genutzt wird, aber das wäre erstmal nur ein Detail. Wenn so ein ESP32 nach ein paar Jahren auszutauschen wäre, wäre das auch kein Beinbruch.
Hier mein ESPHome YAML vom Stromzähler-Sensor, vielleicht hat ja jemand einen Verbesserungsvorschlag für mich?
YAML:
esphome:
name: "esphome-power-meter"
esp8266:
board: d1_mini
#restore_from_flash: true
# Enable logging
logger:
api:
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
captive_portal:
globals:
- id: pulse_counter_power
type: float
initial_value: 63443.5 * 75 # Strom Zählerstand (ganzzahlig) * 75
switch:
- platform: gpio
id: power_meter_led
name: power-meter-led
pin:
number: 2
mode: output
inverted: true
binary_sensor:
- platform: gpio
id: energy_meter_counter
pin:
number: GPIO5 # "D1"
mode: INPUT_PULLUP
inverted: true
name: power-meter-impulse
filters:
- delayed_on: 50ms
on_press:
then:
- lambda: id(pulse_counter_power) += 1;
- switch.turn_on: power_meter_led
on_release:
then:
- switch.turn_off: power_meter_led
sensor:
- platform: template
name: "Stromverbrauch"
device_class: energy
unit_of_measurement: "kWh"
state_class: "total_increasing"
icon: "mdi:fire"
accuracy_decimals: 1
lambda: |-
return id(pulse_counter_power) / 75;