{% set devicename = "esphome_status"  %}

{% include "/includes/ansible.inc.yaml" %}
{% include "/includes/board.d1_mini.inc.yaml" %}
{% include "/includes/common.inc.yaml" %}

sensor:
  # Das pulse_meter liefert uns die Frequenz der Impulse pro Minute am GPIO2 zu Gnd.
  # Das Eltako Strommessgerät besitzt zwei potentialfreie S0 - Impulsausgänge.
  # Diese werden durch einen Optokoppler jede 0.00125kWh (800 Impulse / kWh) für ca. 30ms zueinander leitend.
  # Hier schließen wir an den einen Kontakt GPIO2 und an den anderen Gnd an.
  - platform: pulse_meter
    pin: 
      number: GPIO13
      mode:
        input: true
        pullup: true
    unit_of_measurement: 'kW'
    device_class: "power"
    name: esphome_status_Power
    # Herausfilterung von fehlerhaften Impulsen < 20ms
    internal_filter: 20ms
    # Genauigkeit auf 1 Watt
    accuracy_decimals: 3
    filters:
      # (800 Impulse / kWh)^-1 * (60 min / h) * (Impulse / min) = 0.075 kW
      - multiply: 0.075
    # Totaler Stromverbrauch seitdem der ESP läuft
    # Eventuell noch abändern auf Stromverbrauch Heute / Woche / Monat und reset durch time (sntp?)
    total:
      device_class: "energy"
      name: esphome_status_Energy
      unit_of_measurement: "kWh"
      # Genauigkeit auf 1 Watt
      accuracy_decimals: 3
      filters:
        # (800 Impulse / kWh)^-1 = 0.00125kWh
        - multiply: 0.00125

binary_sensor:
  - platform: gpio
    pin: 
      number: GPIO12
      mode:
        input: true
        pullup: true
      inverted: true
    filters:
      - delayed_on_off: 500ms
    name: "esphome_status_Hauptschalter"
    device_class: presence
