Praxisnahe Tutorials, auf die du zählen kannst.
Einsteiger Guide für Home Assistant

Home Assistant Ferraris Stromzähler auslesen & Verbrauchszähler (HT NT)

Erfahre, wie du mit Home Assistant, und ESPHome deinen Ferraris Stromzähler auslesen kannst.

Dafür benötigst du einen ESP8266 (Wemos D1 Mini) & eine TCRT5000, um mithilfe eines Pulse Counter Sensors die Umdrehungen der Stromzähler-Scheibe zu zählen 🙌

Inhaltsverzeichnis

Voraussetzungen

Home Assistant muss bereits installiert sein, auf welcher Hardware spielt keine Rolle.

ESPHome sollte bereits als Add-on im Add-on Store heruntergeladen und gestartet sein

Benötigte Gadgets

Wie im Video angesprochen, benötigst du eine ESP8266 wie den Wemos D1 Mini und eine TCRT5000. Ein ESP32 sollte natürlich auch gehen & selbstredend wäre noch ein Ferraris-Zähler zum Auslesen von Vorteil 😁

ESP-Board

Zuletzt aktualisiert am 25.05.2024 um 14:40 . Wir weisen darauf hin, dass sich hier angezeigte Preise inzwischen geändert haben können. Alle Angaben ohne Gewähr.

Alternativ: ESP32 NodeMCU Module*

TCRT5000

Zuletzt aktualisiert am 25.05.2024 um 14:40 . Wir weisen darauf hin, dass sich hier angezeigte Preise inzwischen geändert haben können. Alle Angaben ohne Gewähr.

Zubehör

Werkzeug

Zuletzt aktualisiert am 25.05.2024 um 14:41 . Wir weisen darauf hin, dass sich hier angezeigte Preise inzwischen geändert haben können. Alle Angaben ohne Gewähr.

3D-Druck Gehäuse

ESPHome

Schaltplan

TCRT5000 WemosD1Mini Schaltplan Steckplatine

Konfiguration des Wemos D1 Mini

Hier die Konfiguration meines Wemos D1 Mini mit TCRT5000 zum Digitalisieren des Ferraris-Stromzählers.

[wpdiscuz-feedback id=”6k027g2yv6″ question=”Wenn du weist, ob das eine gute oder schlechte Idee ist oder was genau das bewirkt, lass mir gerne ein Kommentar da!” opened=”0″]Inzwischen habe ich den <code>mode: INPUT_PULLUP</code> Teil des Pins wieder auskommentiert, da dieser zumindest scheinbar nichts ändert.[/wpdiscuz-feedback]

Bitte nicht den API-Key oder das ota-Passwort mit kopieren, dient nur der vollständigkeit.

esphome:
  name: stromzkeller

esp8266:
  board: d1_mini

# Enable logging
logger:
  level: WARN

# Enable Home Assistant API
api:
  encryption:
    key: "d1PSXQiuCd2Fs+ln8row5R1sfLMzAhWca3vk6rx3FtQ="

ota:
  password: "2a3ae77f0c354x140094009f37547801"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Stromzkeller Fallback Hotspot"
    password: "QrcqnXLMQKWT"

captive_portal:

sensor:
  # The Pulse-Sensor is initiated and used indecritly via Copy-Platform (There is no other way if you want 2 Value Pairs from one Sensor/Pin)
  # Source: https://github.com/esphome/issues/issues/3364#issuecomment-1153246628
  # Begin Pulse Meter Sensor
  - platform: pulse_counter
    pin: 
      number: D5
      # mode: INPUT_PULLUP
      # Falls du Probleme hast mit nicht korrekt gezählten Impulsen, kannst du abgesehen von einer sauberen Platzierung der Diode versuchen, die Zeile hier oben drüber einzukommentieren, indem du die Raute davor entfernst.
    id: powermeter_pulse
    # Bei 50 ms wurden scheinbar zu wenige Pulse gezählt. Offset nach 3 Stunden war z.B. 1ne kWh
    # Geändert auf 15ms von 20ms am 15.12.2022 um 22:09 Uhr, da noch 0,5 kWh gefehlt haben
    # 17.12.2022 13:01 Uhr: Geändert auf 20ms, da bei 15ms insgesamt 15 kWh in 36 Stunden zu viel gezählt wurden.
    # 18.12.2022 22:53 Uhr: Gändert auf 25ms von 20ms, da in 24H insgesamt 1ne kWh zu viel gezählt wurde
    # Nach einem erneuten einstellen des Poti am Board und einer verschiebung des TCRT5000 um 1 mm nach oben brachten 100ms ein exaktes Ergebnis.
    internal_filter: 100ms
    update_interval: 60s
    count_mode: 
      falling_edge: INCREMENT
      rising_edge: DISABLE
    total:
      id: powermeter_total
  - platform: adc
    pin: A0
    name: "Analog Voltage Signal"
    accuracy_decimals: 4
    update_interval: 120s

  # Used for Energy Measuring
  - platform: copy
    source_id: powermeter_pulse
    unit_of_measurement: 'kW'
    name: 'Aktuelle Leistung Wärmepumpe'
    accuracy_decimals: 3
    filters:
      - multiply: 0.8  # (60s/75 pulses per kWh)
  - platform: copy
    source_id: powermeter_total
    unit_of_measurement: 'kWh'
    name: 'Stromzähler Wärmepumpe Total'
    accuracy_decimals: 3
    filters:
      - multiply: 0.01333333 # (1/75 pulses per kWh)

  # Used for Testing and Validation Purposes
  - platform: copy
    source_id: powermeter_pulse
    name: "Pulse-Counter Raw"
  - platform: copy
    source_id: powermeter_total
    name: "Pulse-Counter Total Raw"
      
  - platform: uptime
    name: Uptime

Code-Snippets

Hier die versprochenen Abschnitte aus meiner Configuration.yaml sowie die Automation

Verbrauchszähler (Utility Meter)

Definition verschiedene “Zeitperioden-“Zähler mit HT/NT Tarif

utility_meter:
  daily_energy:
    source: sensor.stromzahler_warmepumpe_total
    name: Heizstromzähler täglich
    cycle: daily
    tariffs:
      - HT
      - NT
  weekly_energy:
    source: sensor.stromzahler_warmepumpe_total
    name: Heizstromzähler wöchentlich
    cycle: weekly
    tariffs:
      - HT
      - NT
  monthly_energy:
    source: sensor.stromzahler_warmepumpe_total
    name: Heizstromzähler monatlich
    cycle: monthly
    tariffs:
      - HT
      - NT
  overall_energy:
    source: sensor.stromzahler_warmepumpe_total
    name: Heizstromzähler gesamt
    tariffs:
      - HT
      - NT

Automation zum Umschalten der Tarife

Schaltet die Zählertarife im Utility Meter nach Definition von Bayernwerk auf HT oder NT. Deine eigenen Umschaltzeiten findest du meistens auf der Internetseite des Netzbetreibers oder in den Details deines Stromtarifes.

alias: Time - Set Utility Meter Tarrif
description: ""
trigger:
  - platform: time
    at: "06:00:00"
    variables:
      tariff: HT
    id: HTWeekdaysAndSaturday
  - platform: time
    at: "22:00:00"
    variables:
      tariff: NT
    id: NTWeekdays
  - platform: time
    at: "13:00:00"
    variables:
      tariff: NT
    id: NTSaturday
action:
  - choose:
      - conditions:
          - condition: and
            conditions:
              - condition: time
                weekday:
                  - mon
                  - tue
                  - wed
                  - thu
                  - fri
              - condition: or
                conditions:
                  - condition: trigger
                    id: HTWeekdaysAndSaturday
                  - condition: trigger
                    id: NTWeekdays
        sequence:
          - service: select.select_option
            target:
              entity_id: select.daily_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.weekly_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.monthly_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.overall_energy
            data:
              option: "{{ tariff }}"
      - conditions:
          - condition: and
            conditions:
              - condition: time
                weekday:
                  - sat
              - condition: or
                conditions:
                  - condition: trigger
                    id: HTWeekdaysAndSaturday
                  - condition: trigger
                    id: NTSaturday
        sequence:
          - service: select.select_option
            target:
              entity_id: select.daily_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.weekly_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.monthly_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.overall_energy
            data:
              option: "{{ tariff }}"

Angelegte Input-Numbers

Die oberen beiden sind zum Setzen des Zählerstandes, falls die getrackten Entitäten von der Realität abweichen (Siehe Automation direkt darunter)

Die unteren beiden dienen zur Eingabe des aktuell gültigen Strompreises für HT und NT & gehören zu den Template-Entitäten für die aktuellen Kosten und später auch zu einer “Aktueller Preis”-Entität für das Energiedashboard.

Automation zum Setzen des Utility-Meters für den Gesamtverbrauch

Wenn die obern beiden Input-Numbers (Zähler-Eingabe) geändert werden, setzt diese Automation den eingegebenen Wert beim Utility Meter. Sehr praktisch am Anfang, wenn man noch beim Positionieren der Diode ist und die Werte ein paar mal ändern muss.

Alternativ zu dieser Automation & den beiden obigen Input-Helfern kannst du auch einfach den Dienst utility_meter.calibrate aufrufen und den aktuellen Zählerstand als Nummer übergeben.

alias: Helper - Calibrate Power Meter
description: ""
trigger:
  - platform: state
    entity_id:
      - input_number.heizstrom_nt_zahler_eingabe
    id: NT
  - platform: state
    entity_id:
      - input_number.heizstrom_ht_zahler_eingabe
    id: HT
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: HT
        sequence:
          - condition: numeric_state
            entity_id: input_number.heizstrom_ht_zahler_eingabe
            above: 100
          - service: utility_meter.calibrate
            data:
              value: "{{ states('input_number.heizstrom_ht_zahler_eingabe') }}"
            target:
              entity_id: sensor.overall_energy_ht
      - conditions:
          - condition: trigger
            id: NT
        sequence:
          - condition: numeric_state
            entity_id: input_number.heizstrom_nt_zahler_eingabe
            above: 100
          - service: utility_meter.calibrate
            data:
              value: "{{ states('input_number.heizstrom_nt_zahler_eingabe') }}"
            target:
              entity_id: sensor.overall_energy_nt
mode: single

Template-Entitäten zum Anzeigen der aktuellen Kosten

Das Ganze ist natürlich sehr ungenau, da eine Preisänderung in den zugehörigen Input-Numbers, die den aktuellen Preis widerspiegeln, sich auch auf die Vergangenheit auswirken. Aber für das Live-Dashboard hat mir das erst mal so gereicht.

template:
  - sensor:
    # Preis HT täglich
      - name: Preis HT täglich
        unique_id: "PriceHTdaily"
        unit_of_measurement: 'EUR'
        state: >-
            {{ ((float(states('sensor.daily_energy_ht'))) * (float(states('input_number.ht_preis')))) | round(2) }}
  - sensor:
    # Preis NT täglich
      - name: Preis NT täglich
        unique_id: "PriceNTdaily"
        unit_of_measurement: 'EUR'
        state: >-
            {{ ((float(states('sensor.daily_energy_nt'))) * (float(states('input_number.nt_preis')))) | round(2) }}
  - sensor:
    # Preis HT wöchentlich
      - name: Preis HT wöchentlich
        unique_id: "PriceHTweekly"
        unit_of_measurement: 'EUR'
        state: >-
            {{ ((float(states('sensor.weekly_energy_ht'))) * (float(states('input_number.ht_preis')))) | round(2) }}
  - sensor:
    # Preis NT wöchentlich
      - name: Preis NT wöchentlich
        unique_id: "PriceNTweekly"
        unit_of_measurement: 'EUR'
        state: >-
            {{ ((float(states('sensor.weekly_energy_nt'))) * (float(states('input_number.nt_preis')))) | round(2) }}
  - sensor:
    # Preis HT Monatlich
      - name: Preis HT monatlich
        unique_id: "PriceHTMonthly"
        unit_of_measurement: 'EUR'
        state: >-
            {{ ((float(states('sensor.monthly_energy_ht'))) * (float(states('input_number.ht_preis')))) | round(2) }}
  - sensor:
    # Preis NT Monatlich
      - name: Preis NT monatlich
        unique_id: "PriceNTMonthly"
        unit_of_measurement: 'EUR'
        state: >-
            {{ ((float(states('sensor.monthly_energy_nt'))) * (float(states('input_number.nt_preis')))) | round(2) }}

Die genauen Kosten (historisch) verfolge ich im Energie-Dashboard.

Gesamtverbrauch des Stromzählers

Dieser Sensor summiert die HT & NT Werte des Gesamtzählers, praktisch zur Auswertung oder zum Vergleich des Tagesverbrauchs.

template:
   - sensor:
    # Gesamtverbrauch Wärmepumpe
      - name: Gesamtverbrauch Wärmepumpe
        unique_id: "GesamtverbrauchWarmepumpe"
        unit_of_measurement: 'kWh'
        device_class: "energy"
        state_class: "total_increasing"
        state: >-
            {{ ((float(states('sensor.overall_energy_ht'))) + (float(states('sensor.overall_energy_nt')))) | round(3) }}

Aktuell gültiger Strompreis für das Energiedashboard

Um nun auch im Energiedashboard die Kosten korrekt verfolgen zu können, habe ich noch 2 zusätzliche Helfer angelegt & die Automation zum Setzen des HT oder NT Tarifes etwas erweitert:

Helfer

Aktuell geltender Tarif
Jetziger Strompreis HT NT

Ablauf: Der Helfer aktuell geltender Tarrif wird nun zusätzlich über die Automation für den HT/NT Tarrif gesetzt 👇. Wenn sich dieser ändert, triggert eine 2te Automation, welche den Strompreis entsprechend des eingegebenen HT oder NT Preises in den obigen Helfern setzt.

Erweiterte Automation zum Umschalten der Tarife

alias: Time - Set Utility Meter Tarrif
description: ""
trigger:
  - platform: time
    at: "06:00:00"
    variables:
      tariff: HT
    id: HTWeekdaysAndSaturday
  - platform: time
    at: "22:00:00"
    variables:
      tariff: NT
    id: NTWeekdays
  - platform: time
    at: "13:00:00"
    variables:
      tariff: NT
    id: NTSaturday
action:
  - choose:
      - conditions:
          - condition: and
            conditions:
              - condition: time
                weekday:
                  - mon
                  - tue
                  - wed
                  - thu
                  - fri
              - condition: or
                conditions:
                  - condition: trigger
                    id: HTWeekdaysAndSaturday
                  - condition: trigger
                    id: NTWeekdays
        sequence:
          - service: select.select_option
            target:
              entity_id: select.daily_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.weekly_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.monthly_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.overall_energy
            data:
              option: "{{ tariff }}"
          - service: input_text.set_value
            data:
              value: "{{ tariff }}"
            target:
              entity_id: input_text.aktuell_geltender_tarif
      - conditions:
          - condition: and
            conditions:
              - condition: time
                weekday:
                  - sat
              - condition: or
                conditions:
                  - condition: trigger
                    id: HTWeekdaysAndSaturday
                  - condition: trigger
                    id: NTSaturday
        sequence:
          - service: select.select_option
            target:
              entity_id: select.daily_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.weekly_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.monthly_energy
            data:
              option: "{{ tariff }}"
          - service: select.select_option
            target:
              entity_id: select.overall_energy
            data:
              option: "{{ tariff }}"
          - service: input_text.set_value
            data:
              value: "{{ tariff }}"
            target:
              entity_id: input_text.aktuell_geltender_tarif

Automation zum setzen der Entität mit dem aktuellen Strompreis

alias: Helper - Set Current Valid Energy Price HT NT
description: ""
trigger:
  - platform: state
    entity_id:
      - input_text.aktuell_geltender_tarif
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_text.aktuell_geltender_tarif
            state: HT
        sequence:
          - service: input_number.set_value
            data:
              value: "{{ states('input_number.ht_preis') }}"
            target:
              entity_id: input_number.jetziger_strompreis_ht_nt
      - conditions:
          - condition: state
            entity_id: input_text.aktuell_geltender_tarif
            state: NT
        sequence:
          - service: input_number.set_value
            data:
              value: "{{ states('input_number.nt_preis') }}"
            target:
              entity_id: input_number.jetziger_strompreis_ht_nt
mode: single

Dieser Helfer (Jetziger Strompreis HT NT) wird dann im Energiedashboard als aktueller Strompreis für den Stromzähler hinterlegt. Somit werden die tatsächlichen Kosten immer über den aktuell gültigen Preis berechnet und das Energiedashboard stimmt genau 🙌

Fazit

Jetzt hast du das nötige Handwerkszeug, um deinen Ferraris-Stromzähler mit Home Assistant auszulesen und den Verbrauch im Blick zu behalten.

Wenn dir das Einstellen der Diode zu fummelig ist, gäbe es als Alternative ebenfalls noch AI-On-The-Edge, wozu ebenfalls dieses Jahr ein Video folgen wird 🙌

Wenn du Fragen oder Anmerkungen hast, zögere nicht, sie mir unten in den Kommentaren mitzuteilen und ich werde mein Bestes tun, um dir zu helfen. Vielen Dank fürs Zuschauen!

HomeKit Geräte Übersicht

smarte News

Erfahre als Erster, wenn wir neue Artikel zu Smart Home oder anderen interessanten Themen veröffentlichen!

Wir senden keinen Spam und verkaufen keine Daten! Erfahre mehr in unserer Datenschutzerklärung.

Transparenz: In diesem Artikel sind Partnerlinks enthalten. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhalte ich ei­ne kleine Provision. Für euch ändert sich am Preis nichts & Partnerlinks haben keinerlei Einfluss auf meine Berichterstattung. Vielen Dank für deine Unterstützung!

Gründer von simon42. Schreibt hier ehrlich und leidenschaftlich über Smart Home und Technik Themen, denn das Zuhause wurde bereits von Sprachassistenten übernommen und die Kontrolle abgegeben 😁

Beginnen die Diskussion unter community.simon42.com

60 Gedanken zu „Home Assistant Ferraris Stromzähler auslesen & Verbrauchszähler (HT NT)“

  1. Hallo Gemeinde,

    ich war froh meinem TCRT5000 soweit ausgerichtet zu bekommen, dass die LED auch wirklich ausgeht wenn der roter Bereich der Scheibe kommt.
    Im Normalfall funktioniert das sehr stabil, wenn sich die Scheibe sehr langsam dreht. Die LED bleibt dann ca. 4-5 Sek. aus bis rot auch wirklich vorbei gelaufen ist.
    Jetzt habe ich aber leider festgestellt, dass die LED leuchten bleibt wenn der rote Bereich deutlich schneller vorbei zieht (unter 1 Sek), weil gerade ein starker Verbraucher Strom zieht.
    D.h da wird nix gemessen, was meine gesamte Messung deutlich verzerrt.
    Was mache ich falsch?
    Ist es ein Konfig-Problem? (selbe Konfig wie Simons habe ich) oder eher ein Hardware -Problem, z.b Dioden nicht 100% akkurat ausgerichtet?

  2. Hallo Simon,

    erstmal ein super was du da zusammengeschriben bzw gemacht hast. hab soweit alles nachgebaut, nur bis auf das die gemessenen Werte nicht auf den Zählerstand aufaddiert werden. somit werden keine täglichen usw Werte dargestellt. Live Werte funktionieren.

    Gruß Thorsten

  3. Hi,
    vielen dank für diese “Anleitung” bzw das Video. Ich habe einen einzigen Ferraris Zähler (75U/Kwh) und möchte einfach nur den Jahresverbrauch, Monatsverbrauch, Wochenverbrauch, Tagesverbrauch und aktuellen Zählerstand anzeigen lassen. Aber ich breche mir wirklich einen ab um das ganze für einen einfachen Stromzähler anzupassen 😉
    Kannst du da vielleicht helfen? ich habe in den Kommentaren auch gelesen dass ich nicht der einzige bin, der daran interessiert wäre 🙂 das wäre echt super Klasse!
    Viele Grüße Christian

  4. Ich wollte Dir einen Super Thanks dalassen, aber ich habe kein VISA etc.
    Gibt es da auch was mit PayPal??

    Gruß Peter

  5. Hallo

    Danke erst mal für deine tollen und hilfreichen Video`s echt Top !

    Meine Frage bin in dem ganzen Thema noch nicht so bewandert min Problen ich habe einen ESP 32 und ich muss die GPIO verwenden anstatt D1 usw. Die GPIO können aber deinen angegebenen Zeiten nicht internal_filter: 100ms
    da gehen nur 13 us und das bringt nix hast du eine gute idee was ich da machen kann außer einen anderen Mikrokontroller zu kaufen .

    Der Rest geht mal aber die werte stimmen natürlich nicht wil er immer zu viele Störimpulse dazu zählt
    Rückmeldung wäre toll danke

  6. Ein Ferraris-Zähler kann auch rückwärts zählen, wenn z. B. eine Solaranlage hinter dem Zähler installiert ist.
    Die eine LED wird eine Drehrichtungsänderung nicht erkennen können und im Fall einer Einspeisung alle Drehimpulse als Verbrauchswerte werten.

    Das stellt, aus meiner Sicht das hier vorgestellte System komplett in Frage

  7. Hallo

    Ich bin etwas verwirrt:
    #
    – platform: adc
    pin: A0
    name: “Analog Voltage Signal”
    accuracy_decimals: 4
    update_interval: 120s
    #
    Der Pin A0 ist doch gar nicht verwendet. Wofür steht dieser Code-Schnipsel?

  8. Hallo Simon,
    zunächst einmal große große Anerkennung für Dein Engagement. “Deinetwegen” bin ich von FHEM auf HA umgestiegen und Deine guten und klaren Erklärungen haben mich bereits in kurzer Zeit viel weiter mit HA gebracht, als ich mit FHEM je war. DANKE dafür!!!

    Ich habe mich vor einigen Tagen mal an die Ferraris-Auslesung gemacht.
    Habe die Teile nach Deiner Liste eingekauft, habe den Zusammenbau geschafft, Gehäuse drucken lassen und ESP-Home installiert. Erster Flash des ESP8266 (via USB über den Raspberry 4) hat geklappt. Nun will ich Deine Codes in die yaml einfügen (ab “Sensor”).

    Allerdings bekomme ich folgende Fehlermeldung:

    INFO Reading configuration /config/esphome/stromzkeller.yaml…
    Failed config

    sensor.pulse_counter: [source /config/esphome/stromzkeller.yaml:34]
    platform: pulse_counter
    pin:

    Cannot resolve pin name ‘D5’ for board esp01_1m.
    number: D5
    id: powermeter_pulse
    internal_filter: 100ms
    update_interval: 60s
    count_mode:
    falling_edge: INCREMENT
    rising_edge: DISABLE
    total:
    id: powermeter_total

    Zunächst dachte ich Übertragungsfehler, also nochmal mit Reboot von allen beteiligten Geräten, dann habe ich gesehen, dass mir das Kabel vom D5 abgerissen war, dann neu gelötet… Fehler tritt immernoch auf.
    Hast Du vielleicht eine Idee, was ich falsch gemacht habe / zu dieser Fehlermeldung führt und wie Abhilfe aussehehen könnte?
    Besten Dank und viele Grüße
    Eric

    • Hallo Eric,

      falls es sich nicht schon erledigt hat. Hatte mit dem gleichen Problem zu kämpfen. Die Lösung war das “richtige” esp8266 board beim einrichten auszuwählen. Aus dem Namen “esp01_1m” vermute ich dass wie bei mir das “generic esp” board ausgewählt wurde. Die interne Bezeichnung der Pins ist bei manchen Boards anders. Hab einfach das Modell des Boards in der .yaml Datei von “esp01_1m” in “nodemcuV2” geändert. Dieses verwendet die Bezeichnung D5 des Pins D5 auch genau so und dann ging es.

    • Herzlichen Dank für Deine Antwort Kosta, ja genau wie Du schreibst…
      die Boardbezeichnung war das Problem. Vielen Dank für Deine Antwort und Idee!

  9. Ich hab es auch erst mit dem pulse_counter versucht. Der war bei mir aber extrem unzuverlässig. Zu Beginn bekam ich doppelte Pulse, nach einer Neuausrichtung waren es dann zu wenig Pulse. War dann so genervt davon, dass ich alles wieder zerlegt hatte. Wenig später hab ich einen Reed-Sensor an meinem Gaszähler mit ESPhome montiert und dabei festgestellt, das es auch hier doppelte Pulse gab, obwohl der Magnet ja nur einmal dran vorbeigelaufen war. Bin dann auf den binary_sensor in ESPhome gestoßen. Dieser zählte dann die Pulse absolut korrekt. Den hab ich dann auch nochmal am Stromzähler versucht, absolut fehlerfrei! Einziger Nachteil, man hat keinen “momentanen Verbrauch”. Der ist ja aber eh zu ungenau, wenn sich die Scheibe sehr langsam dreht.

    Wer also auch Probleme mit dem pulse_counter hat, sollte es mal stattdessen mit dem binary_sensor versuchen und hier die Pulse hochzählen.

    Gruß Marko

    • Danke für den Hinweis, Marko!

      Nur als Hinweis für andere: Eigentlich sollte das durch die beiden Codezeilen oben ohnehin kein Thema sein:

      count_mode:
      falling_edge: INCREMENT
      rising_edge: DISABLE

      Somit wird nur das “Falling-Edge” (kein Pulse, LED ist aus) gezählt (also 1x pro Zustandsänderung).

    • Hallo Simon,

      so hatte ich es auch drin im Code und so wird es ja auch auf der offiziellen Seite bei ESPHome zum pulse_counter angegeben, nur hatte er trotzdem die Pulse doppelt gezählt. Keine Ahnung warum. Und als ich den Sensor etwas nach unten versetzt hatte, waren es dann wie bereits erwähnt zu wenig. Jedenfalls läuft es jetzt bei mir seit 4 Tagen mit dem binary_sensor absolut korrekt ohne Abweichung. Hatte erst bedenken, da bei meinem Zähler die Drehscheibe sehr weit hinter der Kunststoffscheibe im Gehäuse sitzt, aber klappt prima. Diese Lösung ist jedenfalls sehr preiswert und man freut sich doch wenn es klappt 😄

      Übriges leistest du hier tolle Arbeit und du hast mir schon sehr viel bei meinem Home Assistant geholfen. Da merkt man erstmal, was man alles so für Möglichkeiten mit HA hat, wenn man vorher nur HomeKit benutzt hat.

      Gruß Marko

  10. Moin!
    Zunächst einmal: tolle und verständliche Anleitung!
    Ich versuche einen Ferrariszähler auszulesen, der meinen ins Netz gespeisten Strom unserer PV Anlage Bj. 2008 (deshalb kein Zugriff auf die Gleichrichter) zählt. Die Diode zeigt endlich die Durchläufe an (Fummelei!). Aber – erst waren es zu wenig Pulse. Mit Änderung der ms änderte sich gefühlt gar nichts. Dann die Diode etwas versetzt. Jetzt sind es zuviel Pulse. Frage: wird das überhaupt funktionieren? Das Rädchen dreht sicht ja abhängig vom Sonnenlicht in extrem unterschiedlichen Geschwindigkeiten. Ich habe mal vermutet, dass die Filterangabe in ms sich irgendwie auf die “Aufensthaltsdauer” des dunklen Radbereichs vor der Diode bezieht. Aber die schwankt ja extrem. Ich bin zielich ratlos.

  11. Ich raff gerade etwas nicht.
    Ich habe nur einen Zähler. Was kann ich ambesten dafür nutzen bzw. kannst du den Code für einen Zähler anpassen? Habe auch kein Tag oder Nachtstrom. Stinknormal 😉 Danke!

    • Naja, du benötigst dann einfach HT oder NT nicht, den Rest kann man eigentlich so übernehmen abgesehen von der Automation zum Umschalten der Tarife 😉

    • Also brauche ich die Code-Snippets fürs HA nicht?
      Somit wäre “powermeter_total” mein Zählerstand?
      Wo kann ich meinen Zählerstand initialsieren, der startet ja nicht bei null 😉

    • Also brauche ich die Code-Snippets fürs HA nicht?
      Somit wäre “powermeter_total” mein Zählerstand?
      Wo kann ich meinen Zählerstand initialsieren, der startet ja nicht bei null ;-).

  12. Hi Simon, Nachdem ich lange die Schaltzeiten von Netze-BW recherchiert habe, habe ich nun noch eine Frage. Wie kann ich Feiertage in der Tarif-Berechnung berücksichtigen. Bei mir ist es tatsächlich so, dass an Sonn und Feiertagen ganztägig der NT Tarif zählen würde. Sonntage ist nun kein Problem, aber die Feiertage. Hast du eine Idee, gern auch was mit manuell gepflegten Datümern für das nächste Jahr.
    Danke Adrian

  13. Hallo Simon, versuche Deine Skripte auf einen Standard-Stromtarif anzupassen. Dabei die Frage wo bei Dir die ‘sensor.daily_energy_ht’ definiert werden, die hier in der Berechnung gebraucht werden?:
    – sensor: # Preis HT täglich – name: Preis HT täglich unique_id: “PriceHTdaily” unit_of_measurement: ‘EUR’ state: >- {{ ((float(states(‘sensor.daily_energy_ht’))) * (float(states(‘input_number.ht_preis’)))) | round(2) }}

    Nach meinem Verständnis müssen die doch irgendwo vorher angelegt werden, oder? Danke für einen Hinweis,
    Jens

    • OK, aber müsste ich nicht dort einen ‘daily_energie_ht’ als Ausdruck finden?
      Bei der Entitätensuche in HA wird mir dieser auch nicht angezeigt.
      Frage deshalb weil ich im HA Log u.a. diese Fehlermeldung angezeigt bekommen:
      homeassistant.exceptions.TemplateError: ValueError: Template error: float got invalid input ‘unknown’ when rendering template ‘{{ ((float(states(‘sensor.overall_energy_ht’)))) | round(3) }}’ but no default was specified
      2023-02-26 22:29:32.019 ERROR (MainThread) [homeassistant.helpers.template_entity] TemplateError(‘ValueError: Template error: float got invalid input ‘unknown’ when rendering template ‘{{ ((float(states(‘sensor.overall_energy_ht’)))) | round(3) }}’ but no default was specified’) while processing template ‘Template(“{{ ((float(states(‘sensor.overall_energy_ht’)))) | round(3) }}”)’ for attribute ‘_attr_native_value’ in entity ‘sensor.gesamtverbrauch_strom’
      2023-02-26 22:29:32.021 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template(“{{ ((float(states(‘sensor.daily_energy_ht’))) * (float(states(‘input_number.strompreis’)))) | round(2) }}”)

    • Den hatte ich mal umbenannt, sorry das ich es nicht mit dazu geschrieben habe. Du müsstest also schauen, welchen Namen die Entitäten von “Täglicher Verbrauch HT” sowie “NT” bekommen haben und diese anschließend im Code gegen deine eigenen Entitäten tauschen 😅

    • 🙂 Wie sagtest Du schon weiter unten… ‘NamensMessi’.
      Kann ich verstehen bei der Menge an Projekten, die du unter HA einstellst und dokumentierst. Aber Du hast ja auch einen hohen Anspruch und eine aufmerksame Community.
      Ist es viel Arbeit, Deine Skripte auf dieser Seite nochmals korrigiert einzustellen?
      Danke für Deine Unterstützung bisher, Jens

    • Ich habe das eben noch mal nachgespielt, der Code sollte genau so passen, wie er ist. Hast du denn in den Entwicklerwerkzeugen die Entität Overall_energy_ht sowie nt & haben beide auch Werte?

  14. Hallo Simon,
    wäre es auch möglich über einen Wemos gleich drei Zähler (Strom, Wärmepumpe, PV) mit drei TCRT5000-Sensoren auszuzählen? Die Zähler sind alle im gleichen Verteilerschrank
    Dazu müsste man doch nur zwei weitere PIN’s beschalten und im yaml angeben, oder?
    Danke und Gruß

    • Hast du ein paar Tipps, wenn man mit HA anfangt wie ich, wie man am besten die Devices, Helper, Sensoren uvm. mit einer einheitlichen Namensvonvention versieht? Oder auch die Configurationsdatei strukturiert. An diesem Projekt sieht man schnell welche Grösse die Dateien bekommen und es kann schnell unübersichtlich werden.
      Wäre bestimmt ein eigenes Video wert.
      Dank Deiner Videos hast mich vom Umstieg auf HA überzeugt.
      Danke
      Adrian

    • Naja, eigentlich nicht wirklich. Ich bin so ein kleiner Namens-Messi 😂

      Eines Tages (wenn ich das mal selbst schaffe sauber zu halten) kommt da mal ein Video zu, aber aktuell würde ich da allen etwas vormachen, wenn ich sage, ich hätte da ein gutes Konzept. (Und das geht gegen mein Konzept) 😁

  15. Mal wieder ein total super Video von Dir. Muss jetzt nur noch den Zähler justieren.
    Aber, mir werden momentan nur 1 Entität angezeigt (update.stromzkeller_firmware’. Werden die anderen Entitäten erst angezeigt, wenn auch wirklich Daten empfangen werden? Ich verwende Dein Skript ohne Änderungen. Danke, Jens

  16. Danke fuer die ausführliche Anleitung!
    Auf welchen sensor bezieht sich sensor.stromzahler_warmepumpe_total in der configuration.yaml? Diesen Bezeichner finde ich in der ESPHome yaml nicht wieder?

  17. Wie habt ihr das ganze mit der Stromversorgung geregelt. Ich hab dort keine Steckdose? Powerbank?

    • Mittels Powerbank wirst du nicht glücklich, ich hab das mal an meinem Gaszähler mit einer 10.000 mAh Powerbank getestet.
      Ich habe mir ein 10m Micro-USB Kabel bestellt und das bis zum Stromkasten verlegt.
      Alternativ kannst du dir vom Elektriker deines Vertrauens eine Dose da hinlegen lassen, Strom sollte da ja vorhanden sein 😉

    • Leider ein Mehrfamilienhaus und Stromzähler im Hausflur. Sicherungskasten dann in der Wohnung. Hab es jetzt mal mit einer 20k mAh Powerbank probiert. Denk, die muss ich dann wöchentlich laden.

  18. mein TCRT5000 prellt total, wie hast du das in den griff bekommen? Oder ist das reine einstellungssache vom Sensor?

    • Bei mir war es eine Einstellungssache, aber extrem fummelig (Gefühlt im Nanometer-Bereich muss die Schraube verstellt werden).

      Außerdem musste ich meine Diode gefühlt 1-2 MM weiter oben (nicht direkt gegenüber) des Rades anbringen, dann hat alles geklappt 👍

    • Ich kämpfe auch noch mit dem TCRT5000.

      Müssen den beiden Leuchten angehen wenn der rote Streifen unter dem Sensor ist oder wenn er nicht sichtbar ist?

      Vg
      Andre

Kommentare sind geschlossen.

Send this to a friend