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
- Benötigte Gadgets
- ESPHome
- Code-Snippets
- Verbrauchszähler (Utility Meter)
- Gesamtverbrauch des Stromzählers
- Aktuell gültiger Strompreis für das Energiedashboard
- Automation zum setzen der Entität mit dem aktuellen Strompreis
- Fazit
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
Alternativ: ESP32 NodeMCU Module*
TCRT5000
Zubehör
Werkzeug
3D-Druck Gehäuse
- Für den ESP8266 (Gehäuse gedruckt bei 102 %, Gehäusedeckel bei 100 %)
- Für den TCRT5000
- Alternative für den TCRT5000 (scheint mir sinnvoller, habe ich inzwischen eingesetzt)
ESPHome
Schaltplan
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
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!
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?
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
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
Ich wollte Dir einen Super Thanks dalassen, aber ich habe kein VISA etc.
Gibt es da auch was mit PayPal??
Gruß Peter
Entschuldige die späte Antwort, hier ist ein Link: https://paypal.me/simon42official
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
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
das sehe ich auch so, komplett sinnlos für fortgeschrittene!
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?
Das habe ich mich auch gerade gefragt.
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!
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
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.
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 ;-).
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
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
Danke für die Frage Jens, ist der Tägliche Zähler aus diesem Code-Snippet:
https://www.simon42.com/home-assistant-ferraris-zahler-ht-nt-tarif/#verbrauchszaehler-utility-meter
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?
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ß
Genau so ist es, sollte problemlos funktionieren 👍
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) 😁
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
Update: Wie immer, ‘Have you turned if off and on?’. Ein reboot hat das Problem gelöst.
Ich sage nur: Ich hab da auf’n Knopf jedrückt und er geeeeeht 😂
Danke für die Rückmeldung 💙
Sehe ich das richtig, wenn mein Zähler 150 U / KW hat das ich die Zahl Multiply ändern muss?
Genau, also 1 geteilt durch 150, steht so auch im Kommentar vom ESPHome-Code 🙂
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?
Das ist GesamtverbrauchWarmepumpe (Name wurde geändert) 😅
1
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.
Hi, kennst Du einen 3D-Druckservice, der günstg mir das Gehäuse deucken kann?
Hier 😁
Hi,
wo ist hier?
also ich hab ein 3D Drucker und könnte dir ein Halter drucken 🙂
Hi, das hört sich gut an. Ich warte noch auf einzelne Teile. Wenn ich alles zusammengebastelt habe und es funktioniert, komme ich gerne auf das Angebot zurück.🙂
Hey Pascal, würdest du mir das auch in schwarz wie bei Simon drucken? Preis inklusive Versand ?
Gruss Jens
Geld ist so ne Sache, ich hatte lieber etwas Filament 😉
Ne 500g Rolle würde mir reichen.
Okay, ist für mich auch kein Problem, wie kommen wir am besten in Kontakt?
Schreib mir ne Mail an beyer-pascal@web.de
Hoffe das ist ok für den Ersteller dieses Themas 🙂
Habe dir geschrieben
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 👍
Danke dir für den Tipp ich werde dann Mal weiter rumspielen.
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
Das sollte man eigentlich im Video sehen 😀
Geht bei mir aus, wenn der rote Teil sichtbar wird
Das „Fazit“ scheint aus einem andern Projekt
Danke für den Hinweis, das war noch vom Kopieren des Beitrags 😅