Gasverbrauch Gaskosten

Installation, Konfiguration


Antworten
olaf008
Beiträge: 5
Registriert: Mi 1. Nov 2023, 09:50

Gasverbrauch Gaskosten

Beitrag von olaf008 »

Hallo

ich habe angefangen mein gas und strom mit home assistant mitzuloggen
strom mit ein Shelly 3EM und gas mit ein ESP32 das funktioniert auch
und leuft auch soweit
könnt ihr da mal drüberschauen
ob da fehler drin sind
was man verbässern kann
und ob das so richtig ist ?

Gruß und Danke Olaf :)

Code: Alles auswählen

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: gas_price
    type: float
    restore_value: false
    initial_value: '0.0992'  # Gaspreis von 9,92 Cent/kWh
  - id: initial_energy_consumption
    type: float
    restore_value: false
    initial_value: '0'  # hier wird die Variable korrekt initialisiert

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))) * id(gas_price);

  - 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: 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: ""

  - platform: template
    name: "Gasverbrauch Täglich"
    device_class: gas
    update_interval: 1d  # täglich aktualisieren
    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 Täglich'
    device_class: energy
    state_class: total_increasing
    update_interval: 1d  # täglich aktualisieren
    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))) * id(gas_price);

  - platform: template
    name: "Gasverbrauch Wöchentlich"
    device_class: gas
    update_interval: 7d  # wöchentlich aktualisieren
    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 Wöchentlich'
    device_class: energy
    state_class: total_increasing
    update_interval: 7d  # wöchentlich aktualisieren
    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))) * id(gas_price);

  - platform: template
    name: "Gasverbrauch Monatlich"
    device_class: gas
    update_interval: 30d  # monatlich aktualisieren
    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 Monatlich'
    device_class: energy
    state_class: total_increasing
    update_interval: 30d  # monatlich aktualisieren
    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))) * id(gas_price);

  - platform: template
    name: "Gaspreis"
    unit_of_measurement: "€/kWh"
    accuracy_decimals: 4
    lambda: return id(gas_price);

  - platform: template
    name: "Gaskosten"
    unit_of_measurement: "€"
    accuracy_decimals: 2
    lambda: return (id(total_pulses) * id(imp_ratio) * id(Brennwert) * id(Zustandszahl) * id(gas_price)) / 100.0;

  - platform: template
    name: "Gaskosten Täglich"
    unit_of_measurement: "€"
    accuracy_decimals: 2
    update_interval: 1d  # Täglich aktualisieren
    lambda: return (id(total_pulses) * id(imp_ratio) * id(Brennwert) * id(Zustandszahl) * id(gas_price)) / 100.0;

  - platform: template
    name: "Gaskosten Wöchentlich"
    unit_of_measurement: "€"
    accuracy_decimals: 2
    update_interval: 7d  # Wöchentlich aktualisieren
    lambda: return (id(total_pulses) * id(imp_ratio) * id(Brennwert) * id(Zustandszahl) * id(gas_price)) / 100.0;

  - platform: template
    name: "Gaskosten Monatlich"
    unit_of_measurement: "€"
    accuracy_decimals: 2
    update_interval: 30d  # Monatlich aktualisieren
    lambda: return (id(total_pulses) * id(imp_ratio) * id(Brennwert) * id(Zustandszahl) * id(gas_price)) / 100.0;
Benutzeravatar
Osorkon
Administrator
Beiträge: 1951
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 530 times
Kontaktdaten:

Re: Gasverbrauch Gaskosten

Beitrag von Osorkon »

Hallo @olaf008

Habe das ganze mal in die ESPHome Rubrik verschoben.

Du schreibst, das alles so tut wie es soll?!

Nach was soll man jetzt schauen, bzw. wo bist Du Dir jetzt unsicher, wo noch ein Fehler drin sein könnte?

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
olaf008
Beiträge: 5
Registriert: Mi 1. Nov 2023, 09:50

Re: Gasverbrauch Gaskosten

Beitrag von olaf008 »

Ja, als Anfänger tut man sich schon schwer mit den ganzen GeYAML :D. Ich habe mir das alles auch nur zusammenkopiert. Ein Experte sieht auch gleich, was man verbessern kann und wo es hacken könnte.

Gruß Olaf ;)

Antworten