Ich habe meinen Gaszähler mit einem Reed-Kontakt nachgerüstet. Dieser gibt bei jedem Hunderstel Kubikmeter einen Impuls ab. Den Kontakt habe an einem ESP den ich mittels ESPHome Integration im HA hab. Mit folgendem Code befüttere ich den Zählerstand, sowie das Energy Dashboard:
Nun habe ich das Problem das ich den Initialwert anpassen wollte, aber anschließend immer falsche Verbrauchswerte angezeigt bekomme:
Ich vermute das der im ESP (Flash) gespeicherte Zähler hier alte Werte liefert?
Diese YAML ist ja für ESPHome, oder gilt die auch für HA? Liefert der ESPHome hier nicht einfach nur Sensorwerte per MQTT? Wo wirken die "globals"? Nur innerhalb es ESP oder sind die "geteilt" mit der HA-Instanz über eine API? Was bedeutet "restore_value" in den blöcken? Setze ich den vom "total_pulses" auf "false" dann bekomme ich die richtigen Werte, aber warum? und wie könnte ich den im Flash des ESP gespeicherten Sensors zurücksetzen?
YAML:
esphome:
name: "esphome-gas-meter"
esp8266:
board: d1_mini
restore_from_flash: true
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esphome-Web-...."
password: "....."
captive_portal:
globals:
- id: total_pulses
type: int
restore_value: true
initial_value: '0'
- id: imp_ratio
type: float
restore_value: false
initial_value: '0.01' # vom Gaszaehler
- id: Zustandszahl
type: float
restore_value: false
initial_value: '0.9037' # aus der Gasrechnung
- id: Brennwert
type: float
restore_value: false
initial_value: '11.511' # aus der Gasrechnung
- id: initial_consumption
type: float
restore_value: false
initial_value: '96651.90' # Initialer Gaszählerstand inkl. 2 Nachkommastellen
- id: initial_energy_consumption
type: float
restore_value: false
initial_value: id(initial_consumption) * id(Brennwert) * id(Zustandszahl)
binary_sensor:
- platform: gpio
id: internal_pulse_counter
pin:
number: GPIO5 # "D1"
mode: INPUT_PULLUP
name: gas-meter-impulse
filters:
- delayed_on: 100ms
on_press:
then:
- lambda: id(total_pulses) += 1;
sensor:
- platform: template
name: "Gasverbrauch"
device_class: gas
update_interval : 10s
unit_of_measurement: "m³"
state_class: "total_increasing"
icon: "mdi:fire"
accuracy_decimals: 2
lambda: return id(initial_consumption) + (id(total_pulses) * id(imp_ratio));
- platform: template
name: 'Gasverbrauch Energy'
device_class: energy
update_interval : 10s
icon: 'mdi:fire'
accuracy_decimals: 1
unit_of_measurement: "kWh"
lambda: return id(initial_energy_consumption) + (id(total_pulses) * id(imp_ratio));
- platform: template
name: 'Gasverbrauch Impulszähler'
update_interval : 10s
icon: "mdi:counter"
accuracy_decimals: 0
unit_of_measurement: "pulses"
lambda: return id(total_pulses);
- platform: pulse_counter
pin: D2
name: "Pulse Counter"
icon: "mdi:pulse"
Nun habe ich das Problem das ich den Initialwert anpassen wollte, aber anschließend immer falsche Verbrauchswerte angezeigt bekomme:
Ich vermute das der im ESP (Flash) gespeicherte Zähler hier alte Werte liefert?
Diese YAML ist ja für ESPHome, oder gilt die auch für HA? Liefert der ESPHome hier nicht einfach nur Sensorwerte per MQTT? Wo wirken die "globals"? Nur innerhalb es ESP oder sind die "geteilt" mit der HA-Instanz über eine API? Was bedeutet "restore_value" in den blöcken? Setze ich den vom "total_pulses" auf "false" dann bekomme ich die richtigen Werte, aber warum? und wie könnte ich den im Flash des ESP gespeicherten Sensors zurücksetzen?
Zuletzt bearbeitet: