Mit der Hilfe eines ESP8266 und eines einfachen IR Modules kann am Stromzähler der aktuelle Stromverbrauch ausgelesen werden ohne das man den Stromzähler PIN benötigt. Die ausgelesenen Werte können dann mittels Home Assistant HASSIO grafisch dargestellt werden.

Das ganze ist entstanden aufgrund meines Balkonkraftwerkes. Ich wollte einfach wissen was ich aktuell einspeise und was ich verbrauche. Bei einem Balkonkraftwerk sollte man vor dem Kauf wissen welchen Grundverbrauch man hat damit man ermitteln kann ob es sich überhaupt lohnt ein doppeltes Solarmodul mit 600W zu kaufen oder doch lieber ein einzelnes mit 300W. Aktuell habe ich ein 300W Solarmodul am EG Stromzähler und ein doppeltes Modul mit 600W am OG Stromzähler hängen. Dadurch ist der Grundbedarf gedeckt und die Solarmodule sollten sich nach ca. 4-5 Jahren amortisiert haben.

Hier geht es zu meiner Standalone Lösung ohne Home Assistant.

Digitaler Stromzähler

Benötigte Hardware

Benötigte Software

3D Gehäuse Tinkercad

Aufbau

IR Modul TCRT5000 modifikation

Auf dem TCRT5000 befindet sich eine Lesediode und eine Schreibdiode. Die Schreibdiode wird auch als Näherungssensor verwendet wodurch es zu Problemen kommen kann beim Ablesen des Stromzählers.

In meinem Fall habe ich die hellere (weiße Diode) einfach ausgelötet. In anderen Beiträgen habe ich gesehen das auch nur der Vorwiderstand entfernt wird.

Den TCRT5000 habe ich am Nodemcuv2 an den Pins D5, 3V3 und GND angeschlossen die direkt nebeneinander liegen.

eHz Elektronischer Haushaltszähler

eHz Digitaler Stromzähler (ESP8266)

Das Gehäuse aus dem 3D Drucker passt beim eHz Elektronischen Haushaltszähler. Mit zwei Magneten wird das Gehäuse am Zähler befestigt da der Stromzähler Eigentum des Netzbetreibers ist!

Die rechten beiden IR Dioden werden beim IR Lese-Schreibekopf verwendet (Volkszähler). Dabei wird permanent zwischen den Unterschiedlichen zur verfügung stehenden Zählerständen geschalten und diese ausgelesen (PIN muss beim jeweiligen Energiekonzern angefragt werden).

In unserem Fall benutzen wir die mittlere IR-Diode zum auslesen des aktuellen Stromverbrauchs am Zähler. Zum testen einfach den IR Sensor mit der Hand an die zu testende IR-Diode halten und in den ESP-Home live loggs schauen ob sich der Wert verändert. Ich hatte noch einen Baustrahler im Keller angeschlossen um zu schauen ob die Werte plausibel sind.

Ein Sensor am ESP8266

ESP Home ein Sensor config.yaml

Update Intervall ist hier in der yaml auf 60s eingestellt. Alle 60s sollte sich der aktuelle Stromverbrauch ändern.

esphome:
  name: strom
  platform: ESP8266
  board: nodemcuv2
  
# Sensor configuration
sensor:
  - platform: pulse_counter
    pin: D5
    name: "Energieverbrauch"
    unit_of_measurement: 'W'
    update_interval: 60s
    filters:
      - multiply: 6
    accuracy_decimals: 0
    icon: 'mdi:flash'
    id: energieverbrauch_w
    
  - platform: total_daily_energy
     name: "Tagesverbrauch"
     power_id: energieverbrauch_w

time:
  - platform: sntp
    id: my_time

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: „xxxxxxxxxx“

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

captive_portal:

Home Assistant grafische Darstellung

Spannungsversorgung Verteilerkasten

Aktuell habe ich im Haus an jedem meiner Zähler einen Sensor mit Magnet befestigt. Die Sensoren sind an einem ESP8266 nodemcuv2 angeschlossen (Spannung, Masse, D5 und D6).

Die Zählerschranksteckdose die den Nodemcuv2 betreibt habe ich mir extra dafür eingebaut

ESP Home Logs

INFO Reading configuration /config/esphome/strom.yaml...
INFO Detected timezone 'CET' with UTC offset 1 and daylight saving time from 27 March 02:00:00 to 30 October 03:00:00
INFO Starting log output from strom.local using esphome API
INFO Successfully connected to strom.local
[19:32:31][I][app:102]: ESPHome version 2021.9.3 compiled on Oct 10 2021, 21:35:03
[19:32:31][C][wifi:501]: WiFi:
[19:32:31][C][wifi:361]:   SSID: 'xxxxxxxxxxxxxxx'[redacted]
[19:32:31][C][wifi:362]:   IP Address: xxx.xxx.xxx.xx
[19:32:31][C][wifi:364]:   BSSID: xx:xx:xx:xx:xx:xx[redacted]
[19:32:31][C][wifi:365]:   Hostname: 'strom'
[19:32:31][C][wifi:369]:   Signal strength: -51 dB ▂▄▆█
[19:32:31][C][wifi:373]:   Channel: 6
[19:32:31][C][wifi:374]:   Subnet: 255.255.255.0
[19:32:31][C][wifi:375]:   Gateway: xxx.xxx.xxx.x
[19:32:31][C][wifi:376]:   DNS1: xxx.xxx.xxx.x
[19:32:31][C][wifi:377]:   DNS2: (IP unset)
[19:32:31][C][logger:193]: Logger:
[19:32:31][C][logger:194]:   Level: DEBUG
[19:32:31][C][logger:195]:   Log Baud Rate: 115200
[19:32:31][C][logger:196]:   Hardware UART: UART0
[19:32:31][C][pulse_counter:147]: Pulse Counter 'Energieverbrauch'
[19:32:31][C][pulse_counter:147]:   State Class: 'measurement'
[19:32:31][C][pulse_counter:147]:   Unit of Measurement: 'W'
[19:32:31][C][pulse_counter:147]:   Accuracy Decimals: 0
[19:32:31][C][pulse_counter:147]:   Icon: 'mdi:flash'
[19:32:31][C][pulse_counter:148]:   Pin: GPIO14 (Mode: INPUT)
[19:32:31][C][pulse_counter:149]:   Rising Edge: INCREMENT
[19:32:31][C][pulse_counter:150]:   Falling Edge: DISABLE
[19:32:31][C][pulse_counter:151]:   Filtering pulses shorter than 13 µs
[19:32:31][C][pulse_counter:152]:   Update Interval: 60.0s
[19:32:31][C][total_daily_energy:024]: Total Daily Energy 'Tagesverbrauch'
[19:32:31][C][total_daily_energy:024]:   Device Class: 'energy'
[19:32:31][C][total_daily_energy:024]:   State Class: 'total_increasing'
[19:32:31][C][total_daily_energy:024]:   Unit of Measurement: 'Wh'
[19:32:31][C][total_daily_energy:024]:   Accuracy Decimals: 2
[19:32:31][C][total_daily_energy:024]:   Icon: 'mdi:flash'
[19:32:31][C][captive_portal:148]: Captive Portal:
[19:32:31][C][ota:029]: Over-The-Air Updates:
[19:32:31][C][ota:030]:   Address: strom.local:8266
[19:32:31][C][ota:032]:   Using Password.
[19:32:31][C][api:135]: API Server:
[19:32:31][C][api:136]:   Address: strom.local:6053
[19:32:31][C][api:140]:   Using noise encryption: NO
[19:32:31][C][sntp:044]: SNTP Time:
[19:32:31][C][sntp:045]:   Server 1: '0.pool.ntp.org'
[19:32:31][C][sntp:046]:   Server 2: '1.pool.ntp.org'
[19:32:31][C][sntp:047]:   Server 3: '2.pool.ntp.org'
[19:32:31][C][sntp:048]:   Timezone: 'CET-1CEST-2,M3.4.0/2,M10.5.0/3'
[19:32:32][D][pulse_counter:159]: 'Energieverbrauch': Retrieved counter: 68.00 pulses/min
[19:32:32][D][sensor:121]: 'Energieverbrauch': Sending state 408.00000 W with 0 decimals of accuracy
[19:32:32][D][sensor:121]: 'Tagesverbrauch': Sending state 6002.70361 Wh with 2 decimals of accuracy
[19:32:32][D][pulse_counter:159]: 'Energieverbrauch': Retrieved counter: 68.00 pulses/min
[19:32:32][D][sensor:121]: 'Energieverbrauch': Sending state 408.00000 W with 0 decimals of accuracy
[19:32:32][D][sensor:121]: 'Tagesverbrauch': Sending state 6002.70361 Wh with 2 decimals of accuracy
[19:33:32][D][pulse_counter:159]: 'Energieverbrauch': Retrieved counter: 67.00 pulses/min
[19:33:32][D][sensor:121]: 'Energieverbrauch': Sending state 402.00000 W with 0 decimals of accuracy
[19:33:32][D][sensor:121]: 'Tagesverbrauch': Sending state 6009.40381 Wh with 2 decimals of accuracy

Zwei Sensoren an einem ESP8266

Natürlich kann man auch zwei Stromzähler mit einem ESP8266 betreiben.

An den grün markierten Stellen haben ich die Jumper wire eingesteckt.

ESP Home zwei Sensoren config.yaml

esphome:
  name: strom
  platform: ESP8266
  board: nodemcuv2
  
# Stromzähler OG
sensor:
  - platform: pulse_counter
    pin: D5
    name: "Energieverbrauch_OG"
    unit_of_measurement: 'W'
    update_interval: 60s
    filters:
    # RL = 10000 Imp./kWh 
      - multiply: 6    
    accuracy_decimals: 0
    icon: 'mdi:flash'
    id: energieverbrauch_og
    
  # Dieser Sensor errechnet die Wh aus den aktuellen Verbrauchswerten in W  
  - platform: total_daily_energy
    name: "Tagesverbrauch_OG"
    power_id: energieverbrauch_og

# Stromzähler EG    
  - platform: pulse_counter
    pin: D6
    name: "Energieverbrauch_EG"
    unit_of_measurement: 'W'
    update_interval: 60s
    filters:
    # RL = 10000 Imp./kWh 
      - multiply: 6
    accuracy_decimals: 0
    icon: 'mdi:flash'
    id: energieverbrauch_eg
    
  # Dieser Sensor errechnet die Wh aus den aktuellen Verbrauchswerten in W  
  - platform: total_daily_energy
    name: "Tagesverbrauch_EG"
    power_id: energieverbrauch_eg    
    
time:
  - platform: sntp
    id: my_time

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"

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

captive_portal:

ESP Home Logs zwei Sensoren

[11:22:17][D][pulse_counter:159]: 'Energieverbrauch_EG': Retrieved counter: 2.00 pulses/min
[11:22:17][D][sensor:121]: 'Energieverbrauch_EG': Sending state 12.00000 W with 0 decimals of accuracy
[11:22:17][D][sensor:121]: 'Tagesverbrauch_EG': Sending state 146.35190 Wh with 2 decimals of accuracy

[11:22:17][D][pulse_counter:159]: 'Energieverbrauch_OG': Retrieved counter: 96.00 pulses/min
[11:22:17][D][sensor:121]: 'Energieverbrauch_OG': Sending state 576.00000 W with 0 decimals of accuracy
[11:22:17][D][sensor:121]: 'Tagesverbrauch_OG': Sending state 516.67249 Wh with 2 decimals of accuracy

[11:23:17][D][pulse_counter:159]: 'Energieverbrauch_EG': Retrieved counter: 0.00 pulses/min
[11:23:17][D][sensor:121]: 'Energieverbrauch_EG': Sending state 0.00000 W with 0 decimals of accuracy
[11:23:17][D][sensor:121]: 'Tagesverbrauch_EG': Sending state 146.35190 Wh with 2 decimals of accuracy

[11:23:17][D][pulse_counter:159]: 'Energieverbrauch_OG': Retrieved counter: 98.00 pulses/min
[11:23:17][D][sensor:121]: 'Energieverbrauch_OG': Sending state 588.00000 W with 0 decimals of accuracy
[11:23:17][D][sensor:121]: 'Tagesverbrauch_OG': Sending state 526.47168 Wh with 2 decimals of accuracy

Wie man dem Log entnehmen kann ist im unteren Abschnitt bei EG 0.00 Pulses zu sehen, bitte nicht verwundern das liegt an meinem Balkonkraftwerk was gerade mehr Leistung generiert als verbraucht wird.

Wemos D1 mini

Das ganze kann auch mit einem Wemos D1 mini realisiert werden. Der einzige Unterschied besteht darin das die Software unter ESPHome richtig kompiliert werden muss. Dazu muss die Board Version geändert werden. Wenn ihr den Sensor am Board angeschlossen habt könnt ihr euren Aufbau mittels einer einfachen Taschenlampe testen. Einfach mit der Taschenlampe über die Diode am TCRT fahren. Dabei sollte die LED am TCRT blinken. In den Logs solltet dann auch der Counter ansteigen.

......

esp8266:
  board: d1_mini

......

Bei weiteren Fragen einfach schreiben.

38 thoughts on “ESP8266 – Digitaler Stromzähler auslesen

  1. Hi,

    wie oft ändert sich dein Tagesverbrauch?`

    Meiner bleibt die ganze Zeit gleich.

    Hast du die LED abgeklebt? Bei mir spinnt der Zähler wenn ich die “Sende LED” Anlasse.

    Gruß und Danke
    Carsten

    • Hey,

      ich hab meine Beschreibung mal aktualisiert. Hatte das auf die schnelle online gestellt und vergessen zu ergänzen.
      Bei mir wird jede Minute der Werte aktualisiert. Die hellere Diode sollte am besten ausgelötet werden um Probleme zu vermeiden.
      Sorry für die Fehlerhafte Anleitung.

    • Hallo Carsten, ich glaube du hast den Leser auf der falschen Diode. Wenn du anhand der Pulsfrequenz messen willst, dann sind die zwei Dioden die du am rechten Rand hast, die Falschen. Probier mal die dritte von rechts, an der IR steht.

  2. Tolles Projekt! Ich würde es gerne nachbauen, könntest du einen Thingiverse Link zur Verfügung stellen für das Gehäuse? 🙂

    Gruß
    Chris

  3. Moin,
    Danke für das Teilen deines Projektes, habe jetzt aufjedenfall den Dran das ganze nachzubauen.
    Wie hast du die Stromversorgung gelöst? In meinem Verteilerkasten gibt es leider keine Steckdose für ein Netzteil.

    Ich hätte jetzt z.B das ins Auge gefasst: https://www.roboter-bausatz.de/p/2x-aa-batterie-gehaeuse-3v

    Wie lange würde sowas halten, bis die Battereien getauscht werden müssen?
    Wie viel Leistung wird konstant verbraucht, geht der ESP8266 in den Deep-Sleep? Powerbanks schalten leider bei geringer Leistung ab (EU Richtlinie)

    Gruß
    Lucas

    • Hey Lucas,
      Ich habe meine Seite schnell aktualisiert zu dem Thema Spannungsversorgung. Da kannst du dir anschauen wie ich das gemacht habe.
      Mit einer Batterie / Akku wird dir recht schnell der Saft ausgehen. Ich hatte mal eine Powerbank am ESP8266 dran und das hat 5 Tage gehalten. Mit dem Deep Sleep habe ich auch mal rumgespielt aber du benötigst irgend etwas was den WeMos wieder aufweckt. Da bin ich bei anderen Projekten noch zu keiner vernünftigen Lösung gekommen.
      Das mit der Abschaltung der Powerbanks wäre ein weiteres Projekt was ich angehen will, ich habe mir da extra so kleine USB Platinen bestellt die dann zyklisch Spannung verbrauchen mit die Powerbank nicht abschaltet :D.
      Es gibt ein fertiges Produkt was ein bekannter von mir hat mit Akku das wunderbar funktioniert: Link hier.

      Grüße
      Simon

      • Danke für die schnelle Antwort 🙂

        Ich wohne in unserem Haus leider nur zur Miete, deshalb ist das Nachrüsten einer Steckdose im Zählerschrank nicht ganz so unkompliziert 🙁

        Wie groß war die Powerbank, die du im Einsatz hattest? Ggf. wird durch die dauerhafte Verbindung mit dem WLAN Netzwerk und dem Update alle 60 Sekunden zu Home Assistant genug Strom verbraucht, dass die Powerbank an bleibt?
        Falls nein: Du hast geschrieben, dass du dir “USB Platinen” bestellt hast, um die Powerbank am leben zu halten. Ist das ein Fertiges Produkt, oder musstest du dir da nochwas zusammen löten?

        Gruß
        Lucas

        • Hey Lucas,
          ich habe mir heute für die große Powerbank eine Art keep alive Platine gebastelt. Jetzt bleibt die Powerbank immerhin am Leben. Mir fehlt jetzt nur noch der passende Widerstand damit das ganze auch einigermaßen effizient läuft und nicht zu viel Strom verbraten wird. Ich werde so schnell es geht hier einen Artikel dazu posten. Meine Lösung besteht aus einer kleine Platine von Amazon die dann nur noch einen Widerstand braucht. Muss das ganze natürlich auch noch testen ob Theorie und Praxis sich bewähren. Das ganze Timing löse ich mit ein paar Zeilen Code und kann somit an jede Powerbank angepasst werden.

          Bei dir ist dann trotzdem noch die Frage wie lange der WeMos mit Wifi an der Powerbank durch hält.

          Grüße
          Simon

  4. Hallo Simon,
    ich habe diesen Artikel gefunden und war echt begeistert.

    Ich habe das gleiche Szenario wie du, zwei Zähler nebeneinander. Nun habe ich es bei dir so verstanden, dass du zwei ESP8266 mit jeweils einem IR-Sensor (2 gesamt) dran hast.
    Hattest du schon mal versucht beide IR-Sensoren an ein ESP8266 zu verbinden? Damit würdest du den Stromverbrauch für die Datenerfassung (etwas) reduzieren und auch ein paar Euro bei der Beschaffung der Hardware sparen, und ggf auch weniger Platz im Schrank benötigen.

    Grüße,
    Niko

    • Hey Niko,
      da war die Faulheit größer! Habe es gerade geändert und werde das ganze demnächst online stellen.
      Ein ESP8266 -> eine yaml -> zwei Sensoren dran.

      Danke für deine Nachricht ohne die wäre das wahrscheinlich laaaange so geblieben 😀

      Grüße
      Simon

  5. Mal ne blöde Frage:

    1000 pulses/kWh = 1 pulse/Wh

    Der Filter müsste dann doch “multiply: 60” sein, nicht “multiply: 6”?

    Wie auch im Kommentar zu erkennen: multiply: 0.06 in kWh => * 1000 = multiply: 60 in Wh

    • Hey,

      vielen Dank für deine Nachricht. Ich habe ganz vergessen darauf genauer einzugehen. Auf meinem digitalen Stromzähler steht folgendes:
      RL = 10000 Imp./kWh

      60s/10000 pulses per kWh = 0.006kWh

      multiply: 6 <= 0.006 kWh * 1000 Bei google Bilder habe ich tatsächlich auch digitale Stromzähler mit der Aufschrift 1000 Imp./kWh gefunden.

  6. Hallo,

    Erstmal Danke für die gute Beschreibung des Projektes. Habe das Ganze mit einem D1 Mini nachgebaut aber bekomme aber keine Daten. Muss für die Funktion der Stromzähler mit der PIN freigeschaltet sein ?

    • Hey,
      den PIN für den Stromzähler brauchst du für diese einfache Lösung nicht. Die wird nur benötigt um noch mehr Daten aus dem Zähler zu bekommen. Ich habe meinen Blog aktualisiert und vermute das du die Board Variante nicht angepasst hast und dadurch die Firmware für das falsche Board kompiliert wurde. Falls es doch an etwas anderem liegt dann melde dich einfach nochmal.

  7. Hey, Vielen Dank für das Super Projekt.

    Eine Frage, ich habe einen Zähler ED300L. der ist für die Einspeisung und für den Bezug. Dieser sendet 2 Werte über die IR-Diode.
    Hast Du eine Idee, wie beide Werte in HA ausgewertet werden können?

    [21:10:20][D][pulse_counter:162]: ‘Energieverbrauch’: Retrieved counter: 120.00 pulses/min
    [21:10:20][D][sensor:124]: ‘Energieverbrauch’: Sending state 360.00000 W with 0 decimals of accuracy
    [21:10:20][D][sensor:124]: ‘Tagesverbrauch’: Sending state 23.60858 Wh with 2 decimals of accuracy
    [21:10:21][D][pulse_counter:162]: ‘Energieverbrauch’: Retrieved counter: 60.00 pulses/min
    [21:10:21][D][sensor:124]: ‘Energieverbrauch’: Sending state 180.00000 W with 0 decimals of accuracy
    [21:10:21][D][sensor:124]: ‘Tagesverbrauch’: Sending state 23.65853 Wh with 2 decimals of accuracy
    [21:10:22][D][pulse_counter:162]: ‘Energieverbrauch’: Retrieved counter: 0.00 pulses/min
    [21:10:22][D][sensor:124]: ‘Energieverbrauch’: Sending state 0.00000 W with 0 decimals of accuracy
    [21:10:22][D][sensor:124]: ‘Tagesverbrauch’: Sending state 23.65853 Wh with 2 decimals of accuracy
    [21:10:23][D][pulse_counter:162]: ‘Energieverbrauch’: Retrieved counter: 59.94 pulses/min
    [21:10:23][D][sensor:124]: ‘Energieverbrauch’: Sending state 179.82018 W with 0 decimals of accuracy
    [21:10:23][D][sensor:124]: ‘Tagesverbrauch’: Sending state 23.70853 Wh with 2 decimals of accuracy
    [21:10:24][D][pulse_counter:162]: ‘Energieverbrauch’: Retrieved counter: 60.06 pulses/min
    [21:10:24][D][sensor:124]: ‘Energieverbrauch’: Sending state 180.18018 W with 0 decimals of accuracy
    [21:10:24][D][sensor:124]: ‘Tagesverbrauch’: Sending state 23.75853 Wh with 2 decimals of accuracy
    [21:10:25][D][pulse_counter:162]: ‘Energieverbrauch’: Retrieved counter: 0.00 pulses/min
    [21:10:25][D][sensor:124]: ‘Energieverbrauch’: Sending state 0.00000 W with 0 decimals of accuracy

    • Hey Peter,
      wenn ich das jetzt richtig sehe laut dem Log ist das nur “ein Wert” (Tagesverbrauch, Energieverbrauch). In der yaml ist es so konfiguriert das jede Minute der Verbrauch (Energieverbrauch) hochgemeldet wird und der Tagesverbrauch (Tagesverbrauch). Es wird also der Energieverbrauch immer zum Tagesverbrauch addiert.
      Um einen Anderen Wert aus dem Zähler zu bekommen müsste man diesen per LED umschalten. Das kann meine Lösung aber nicht.
      Schreib mir einfach nochmal falls ich deine Frage falsch verstanden habe. Aktuell hatte ich wenig Zeit da ich an einer Stromzähler Standalone Lösung arbeite ohne Hassio 🙂

  8. Hallo,

    hab noch ne kurze Frage, will über den pulse counter auch den Zählerstand(Gesamtverbrauch) erfassen (hab ich mit offset(aktueller Stand) und total gemacht)

    Leider scheint er mir um Mitternacht alles wieder zurückgesetzt zuhaben, beim total daily energy passt alles

    Viele Grüße
    Sebastian

    • Hallo Sebastian,

      soweit ich weiß muss man das nicht direkt in der sensor.yaml angeben. Du kannst in der /config/configuration.yaml folgendes eintragen damit du die Werte bekommst.

      utility_meter:
      stromverbrauch:
      source: sensor.stromverbrauch
      cycle: daily
      gasverbrauch_weekly:
      source: sensor.stromverbrauch
      cycle: weekly
      gasverbrauch_monthly:
      source: sensor.stromverbrauch
      cycle: monthly
      gasverbrauch_yearly:
      source: sensor.stromverbrauch
      cycle: yearly

      Sensorname anpassen und Neustarten.

      Grüße
      Simon

  9. Hallo, besten Dank für die Beschreibung. Ich benutze einen TCRT5000 mit entfernter SendeLED und habe einen Holley Zähler. Beim Sensor benutze ich den digitalen Ausgang. Die Filterung habe ich auf 30us eingestellt (entsprechend der S0-Signalbeschreibung auf Wikipedia).
    Oftmals klappt das alles ganz gut, meist aber nicht. Ich habe versucht mit dem Trimmer (annehmend, dass dies die Empfindlichkeit ändert) den richtigen Punkt zu finden, knapp bevor die grüne Status LED leuchtet. Allerdings ändert sich die Empfindlichkeit innerhalb von Minuten und die Impulse werden nicht mehr erkannt.
    ;ache ich etwas falsch? Hat jemand einen Tipp?

    • Hey Rob,

      vielleicht kannst du mir die ganze Bezeichnung deines Holley Zählers schicken (TYP: DTZ541-ZDBA).
      Du musst den Sensor an das einzelne Diodenloch zum Rekorden hängen (meiste steht Imp/kWh direkt daneben/drüber).
      Auf google habe ich ein Bild gesehen bei dem Typ DTZ541-ZDBA. Dort werden auch nur 500Imp/kWh geschickt. Bei meinem Setup sind es 10000Imp/kWh.

      Grüße
      Simon

      • Hi Simon, der Zähler ist ein Holley DTZ541-ZEBA. Ich habe des Sensor am linken LED-Loch gehabt. Meine Vermutung ist jetzt, dass die LED dort kein IR-Signal ausgibt, sondern nur das rote sichtbare Licht (bisher bin ich davon ausgegangen, dass es zwei LEDs dort gäbe). Entsprechend wären meine bisherigen Messungen nur Zufälle im Grenzbereich der Empfindlichkeit. Wenn ich den Sensor auf den Ausgang rechts vom Display klebe, kommt auch jede Sekunde ein Datenpaket an.
        Ich sehe jetzt 2 Lösungen: Einen Sensor im sichtbaren Spektrumbereich versuchen (habe ich vorhin schon bestellt, da ich keine normale Fotodiode mehr gefunden habe. UND/ODER der Ausgang recht mit der sog. Kundenschnittstelle auswerten. Der müßte wohl jede Sekunde die Zählerstände ausgeben (in meinem Falle ein Zweirichtungszähler, also Up- und Downstream). Leider habe ich nirgends gefunden, wie ich die Zählerstände aus den IR Signalen ableiten kann.
        Macht das Sinn? Was würdest Du machen?
        Besten Dank für Deine Hilfe!

        • Problem mit der einfachen Zählung ist gelöst: In der Tat wird das Signal auf der linken Seite des Holley DTZ541 (der einfache Pulsausgang) nur über die einfache rote LED 8im sichtbaren Spektrum) ausgegeben, also ohne eine weitere IR-LED. Dort habe ich es nun zum Laufen gebracht.

          Auf der rechten Seite (die Kundenschnittstelle) wird der Datenstrom über eine IR-LED ausgegeben. Falls mir jemand einen Tipp geben könnte, wie man das Signal von dort einfach dekodiert und somit die Zählerstände in beide Richtungen einfach auslesen kann, würde ich mich freuen.

          Besten Dank!

  10. Hallo,

    jetzt muss ich doch einen Kommentar schreiben.
    Ich habe Dein Projekt nachgebaut und es funktioniert soweit.
    Ich logge über ein Python-Script die Daten in eine InfluxDB und lasse es mir in Grafana anzeigen.

    Mein Imker Stromzähler hat PL = 10000Imp/kWh
    Wenn ich die YAML-Datei auf 60s mit multiple 6 einstelle habe ich einen generellen Offset von 1kwh in den Messwerten.

    Gehe ich auf 300s mit multiple 30 habe ich einen Offset von um die 10kWh.

    Mit ist nicht klar wie die Berechnung hier funktioniert.

    Im YAML-File habe ich ein Update-Intervall von 300s und ein Multiple von 30 angegeben.
    Da bekomme ich Werte in der Höhe von 10kWh und größer.

    Hier ein Screenshot:
    https://www.dropbox.com/s/80pfcgxevef9czn/Bildschirmfoto%202022-05-03%20um%2011.37.46.png?dl=0

    Vielleicht habt Ihr ja noch einen Tipp für mich…

      • Hey Kai,
        ich habe mir ein Bild bei google von deinem Zähler angeschaut. Dort sehe ich neben der Bezeichnung RL=10000 Imp/kWh eine Aussparung hinter der sich die einzelne Sendediode befinden müsste. Bei der optischen Taste kannst du den Zähler per IR Schreib-/Lesekopf auslesen. Vielleicht kannst du das ja mal ausprobieren, das ist eigentlich bei allen Zählern gleich.
        Grüße
        Simon

        • Ok diese Aussparung ist mir entgangen.
          Danke für deine Antwort!

          Noch habe ich keinen Erfolg mit der seriellen IR-Schnittstelle gehabt.

          Aber mit dieser Aussparung neben der Inpulsangabe / kWh sehe ich nun sofort passende werte wenn ich auf ein 60s Intervall gehe mit multiplicity = 6.

          Super, danke!

  11. Hi, ich habe das ganze auch nachgebaut, bisher aber ohne Gehäuse. Die Helle Diode habe ich auch ausgebaut. bzw. die Beinchen durchtrennt. Ich benutze ein Wemos D1 als Board. Die dunkele Diode funktioniert auch wenn ich mit der Taschenlampe auf die Diode strahle. Leider spuckt meine mittlere IR Diode auf dem Zähler keine Daten aus, habe den gleichen Zähler wie in deiner Beschreibung im Unterverteiler. Die einzige Diode, die Daten ausspuckt, ist die ganz rechts (Volkszähler) Die Werte sind aber komplett falsch, denke das liegt daran, dass es bisher nicht freigeschaltet wurde. Der mittlere IR ist bei mir irgendwie tot. Gibt es da irgendwie einen Trick diesen freizuschalten?

  12. Hi Isibizi,
    der IR-Lesekopf wird aus meiner Sicht beim iskra MT681 oben rechts angebracht. Aus meiner Sicht sind dort 2 IR-Dioden. Eine lesende und eine ausgebende.
    Die Ausgebende kann ich mit meinem Home Assistant auslesen, allerdings ergeben die Werte aus meiner Sicht keinen Sinn und es wiederholen sich auch regelmäßig Werte. Hat jemand einen Tipp? Anbei mein Log und die Config.

    Danke

    sensor:
    – platform: pulse_meter
    pin: D1
    unit_of_measurement: W
    name: ‘Energieverbrauch Alle (Aktuell)’
    accuracy_decimals: 0
    device_class: “power”
    filters:
    – multiply: 0.06 # (60s/10000 pulses per kWh)
    # – multiply: 6
    – heartbeat: 10s
    icon: ‘mdi:flash’
    id: energieverbrauch_komplett_w

    – platform: total_daily_energy
    name: “Energieverbrauch Alle (Tag)”
    filters:
    – multiply: 0.001
    unit_of_measurement: ‘kWh’
    power_id: energieverbrauch_komplett_w

    # – platform: pulse_counter
    # pin: D1
    # name: “Pulse Counter”

    time:
    – platform: homeassistant
    id: homeassistant_time

    LOG

    [20:32:35][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.84451 kWh with 2 decimals of accuracy
    [20:32:45][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 225.00000 W with 0 decimals of accuracy
    [20:32:45][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.84514 kWh with 2 decimals of accuracy
    [20:32:55][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 360.00000 W with 0 decimals of accuracy
    [20:32:55][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.84614 kWh with 2 decimals of accuracy
    [20:33:05][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 720.00000 W with 0 decimals of accuracy
    [20:33:05][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.84814 kWh with 2 decimals of accuracy
    [20:33:15][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 1200.00000 W with 0 decimals of accuracy
    [20:33:15][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.85147 kWh with 2 decimals of accuracy
    [20:33:25][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 276.92307 W with 0 decimals of accuracy
    [20:33:25][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.85224 kWh with 2 decimals of accuracy
    [20:33:35][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 171.42856 W with 0 decimals of accuracy
    [20:33:35][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.85272 kWh with 2 decimals of accuracy
    [20:33:45][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 276.92307 W with 0 decimals of accuracy
    [20:33:45][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.85349 kWh with 2 decimals of accuracy
    [20:33:55][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 225.00000 W with 0 decimals of accuracy
    [20:33:55][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.85411 kWh with 2 decimals of accuracy
    [20:34:05][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 225.00000 W with 0 decimals of accuracy
    [20:34:05][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.85474 kWh with 2 decimals of accuracy
    [20:34:15][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 360.00000 W with 0 decimals of accuracy
    [20:34:15][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.85574 kWh with 2 decimals of accuracy
    [20:34:25][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 225.00000 W with 0 decimals of accuracy
    [20:34:25][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.85636 kWh with 2 decimals of accuracy
    [20:34:35][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 1200.00000 W with 0 decimals of accuracy
    [20:34:35][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.85970 kWh with 2 decimals of accuracy
    [20:34:45][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 399.99997 W with 0 decimals of accuracy
    [20:34:45][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.86081 kWh with 2 decimals of accuracy
    [20:34:55][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 360.00000 W with 0 decimals of accuracy
    [20:34:55][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.86181 kWh with 2 decimals of accuracy
    [20:35:05][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 327.27271 W with 0 decimals of accuracy
    [20:35:05][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.86272 kWh with 2 decimals of accuracy
    [20:35:15][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 1200.00000 W with 0 decimals of accuracy
    [20:35:15][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.86605 kWh with 2 decimals of accuracy
    [20:35:25][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 327.27271 W with 0 decimals of accuracy
    [20:35:25][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.86696 kWh with 2 decimals of accuracy
    [20:35:35][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 225.00000 W with 0 decimals of accuracy
    [20:35:35][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.86758 kWh with 2 decimals of accuracy
    [20:35:37][D][pulse_meter:061]: No pulse detected for 4294s, assuming 0 pulses/min
    [20:35:45][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 225.00000 W with 0 decimals of accuracy
    [20:35:45][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.86821 kWh with 2 decimals of accuracy
    [20:35:55][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 360.00000 W with 0 decimals of accuracy
    [20:35:55][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.86921 kWh with 2 decimals of accuracy
    [20:36:05][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 225.00000 W with 0 decimals of accuracy
    [20:36:05][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.86983 kWh with 2 decimals of accuracy
    [20:36:15][D][sensor:124]: ‘Energieverbrauch Alle (Aktuell)’: Sending state 225.00000 W with 0 decimals of accuracy
    [20:36:15][D][sensor:124]: ‘Energieverbrauch Alle (Tag)’: Sending state 16.87046 kWh with 2 decimals of accuracy

    • Hi Juschua, du scheinst an der falschen Diode zu hängen. Da wo du dran hängst benötigst du den PIN für den Zähler von den Stadtwerken. Des weiteren brauchst du einen Lese/Schreib Sensor um den Zähler umzuschalten. Ich habe mir das aus Zeitgründen noch nicht angeschaut. Meine Projekte beziehen sich aktuell nur auf das Auslesen des aktuellen Stromverbrauchs an der Single Diode.

      Grüße
      Simon

  13. Danke für dein Engagement und die Veröffentlichung, Simon. Ich hatte mir im Voraus schon zwei einfache Boards zur Lichtmessung bestellt, deren Empfindlichkeit man mit einem Poti einstellen kann. Mit diesen ist es mir nicht gelungen sinnvolle Werte aus meinem EasyMeter abzulesen. Daraufhin habe ich mir die Infrarotentfernungsmesser vom „mxyershop“ aus Mainz bestellt. Mit diesen habe ich das Projekt nach einiger Fummelei zum Laufen gebracht. Es hat mich einige Zeit und viel Feingefühl gekostet, die richtige Potieinstellung herauszufinden.
    Was mich aber noch stört, ist, dass ständig in den Flashspeicher geschrieben wird:

    [16:23:18][D][pulse_counter:162]: ‘Stromverbrauch’: Retrieved counter: 20.00 pulses/min
    [16:23:18][D][sensor:125]: ‘Stromverbrauch’: Sending state 120.00401 W with 0 decimals of accuracy
    [16:23:18][D][sensor:125]: ‘Stromverbrauch-Tag’: Sending state 196020.04688 Wh with 2 decimals of accuracy
    [16:23:19][D][pulse_counter:162]: ‘Solarstrom’: Retrieved counter: 209.98 pulses/min
    [16:23:19][D][sensor:125]: ‘Solarstrom’: Sending state 1259.85303 W with 0 decimals of accuracy
    [16:23:19][D][sensor:125]: ‘Solarstrom-Tag’: Sending state 51556.42578 Wh with 2 decimals of accuracy
    [16:23:34][D][esp32.preferences:114]: Saving preferences to flash…

    Hat jemand eine Idee, was dieses Speichern auslöst? Ich kann im Programmcode nichts finden…

    • Hey,
      du benutzt also ein anderes Sensorboard am ESP8266 (mit espHome geflashed)? Ich wüsste nicht das bei mir irgend welche Werte in den Flash geschrieben werden, da diese ja direkt an den HASSIO geschickt und verarbeitet werden.
      Vielleicht kannst du mir noch mehr Details zu deinem Aufbau zukommen lassen.

      Grüße
      Simon

  14. Hallo beim kompilieren startet mein HA immer neu. Gibt es eine andere Möglichkeit die Hardware in HA einzubinden?

    • Hi,
      ich habe gerade neu kompiliert und es hat funktioniert:
      Building /data/strom/.pioenvs/strom/firmware.bin
      ======================== [SUCCESS] Took 158.36 seconds ========================

      Man könnte die kompilierte SW auch ohne Hassio auf den ESP via Terminal flashen.
      Jedoch wie man das ganze ohne Hassio kompiliert weiß ich aktuell nicht.

      Grüße
      Simon

Leave a Reply

Your email address will not be published.