Hallo,
ich habe ein komisches Verhalten mit meinem ESP32 (AZDelivery ESP32 NodeMCU Module WLAN WiFi Dev Kit C Development Board mit CP2102).
Ich zähle meinen Gasverbrauch mit Home Assistant und einem ESP32. Das funktioniert auch und läuft soweit. Die Impulse kommen von einem Reed-Schalter am Gaszähler, angeschlossen an GPIO21 und GND. Der Puls wird mit einer LED an GPIO23 und GND angezeigt. Aber auf einmal fängt die LED vollkommen unkontrolliert an zu blinken und zählt auch Pulse hoch im Home Assistant, obwohl der Gaszähler steht.
Das Verhalten ist zum zweiten Mal aufgetreten. Ich habe dann den ESP getauscht, und es ging wieder, aber das kann doch nicht die Lösung sein.
Der ESP hängt am Raspberry 4 wo auch Home Assistant drauf läuft .
Hier ist der Code vom ESP:
Gruß olaf
ich habe ein komisches Verhalten mit meinem ESP32 (AZDelivery ESP32 NodeMCU Module WLAN WiFi Dev Kit C Development Board mit CP2102).
Ich zähle meinen Gasverbrauch mit Home Assistant und einem ESP32. Das funktioniert auch und läuft soweit. Die Impulse kommen von einem Reed-Schalter am Gaszähler, angeschlossen an GPIO21 und GND. Der Puls wird mit einer LED an GPIO23 und GND angezeigt. Aber auf einmal fängt die LED vollkommen unkontrolliert an zu blinken und zählt auch Pulse hoch im Home Assistant, obwohl der Gaszähler steht.

Das Verhalten ist zum zweiten Mal aufgetreten. Ich habe dann den ESP getauscht, und es ging wieder, aber das kann doch nicht die Lösung sein.
Der ESP hängt am Raspberry 4 wo auch Home Assistant drauf läuft .
Hier ist der Code vom ESP:
Gruß olaf
YAML:
captive_portal:
globals:
- id: total_pulses
type: int
restore_value: false
initial_value: '0' # startet mit 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.9643' # aus der Gasrechnung
- id: Brennwert
type: float
restore_value: false
initial_value: '10.276' # aus der Gasrechnung
- id: initial_consumption
type: float
restore_value: false
initial_value: '0' # hier kann der Gaszählerstand initialisiert werden (Faktor 1000 um einen genaueren Wert zu erzeugen)
- id: initial_energy_consumption
type: float
restore_value: false
initial_value: id(initial_consumption) * id(Brennwert) * id(Zustandszahl) / 1000.0
- id: gas_price
type: float
restore_value: false
initial_value: '0.0992' # Gaspreis in Euro pro kWh
binary_sensor:
- platform: gpio
id: internal_pulse_counter
pin:
number: GPIO21 # Pin, an dem der Reed-Kontakt hängt
mode: INPUT_PULLUP
name: "Live-Impuls"
filters:
- delayed_on: 100ms
on_press:
then:
- lambda: id(total_pulses) += 1;
- output.turn_off: led # optional: für eine LED, die den Gaszählerpuls visualisiert
on_release:
then:
- output.turn_on: led # optional: für eine LED, die den Gaszählerpuls visualisiert
## Optional: Diese LED soll blinken, sobald ein Signal vom Gaszähler erkannt wird
output:
- platform: gpio
pin: GPIO23
id: 'led'
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)/1000.0) + (id(total_pulses) * id(imp_ratio));
- platform: template
name: 'Gasverbrauch Energy'
device_class: energy
state_class: total_increasing
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) * id(Brennwert) * id(Zustandszahl));
- platform: template
name: 'Pulse Counter total'
update_interval : 10s
icon: "mdi:counter"
accuracy_decimals: 0
unit_of_measurement: "pulses"
lambda: return id(total_pulses);
- platform: template
name: 'Gasverbrauch Kosten'
update_interval: 10s
icon: 'mdi:cash'
unit_of_measurement: "€"
accuracy_decimals: 2
lambda: return (id(initial_energy_consumption) + (id(total_pulses) * id(imp_ratio) * id(Brennwert) * id(Zustandszahl))) * id(gas_price);
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
device_class: ""
Zuletzt bearbeitet: