-
-
Save djmaze/852c27c37f4f223f346782635b93b1ae to your computer and use it in GitHub Desktop.
globals: | |
- id: total_pulses | |
type: int | |
restore_value: true | |
initial_value: '0' # startet mit 0 | |
- id: imp_ratio | |
type: float | |
restore_value: false | |
initial_value: '0.01' # vom Gaszaehler | |
- id: Zustandszahl | |
type: float | |
restore_value: false | |
initial_value: '0.9643' # aus der Gasrechnung | |
- id: Brennwert | |
type: float | |
restore_value: false | |
initial_value: '10.276' # aus der Gasrechnung | |
- id: initial_consumption | |
type: float | |
restore_value: false | |
initial_value: '19967086' # hier kann der Gaszählerstand initialisiert werden (Faktor 1000 um einen genaueren Wert zu erzeugen) | |
- id: initial_energy_consumption | |
type: float | |
restore_value: false | |
initial_value: id(initial_consumption) * id(Brennwert) * id(Zustandszahl) / 1000.0 | |
binary_sensor: | |
- platform: gpio | |
id: internal_pulse_counter | |
pin: | |
number: GPIO5 # Pin, an dem der Reed-Kontakt hängt | |
mode: INPUT_PULLUP | |
name: "Live-Impuls" | |
filters: | |
- delayed_on: 100ms | |
on_press: | |
then: | |
- lambda: id(total_pulses) += 1; | |
#- light.turn_on: | |
# id: led # optional: für eine LED, die den Gaszählerpuls visualisiert | |
#on_release: | |
# then: | |
# - light.turn_off: status # optional: für eine LED, die den Gaszählerpuls visualisiert | |
## Optional: Diese LED soll blinken, sobald ein Signal vom Gaszähler erkannt wird | |
#output: | |
#- platform: gpio | |
#pin: GPIO0 | |
#id: 'led' | |
sensor: | |
- platform: template | |
name: "Gasverbrauch" | |
device_class: gas | |
update_interval : 10s | |
unit_of_measurement: "m³" | |
state_class: total_increasing | |
icon: "mdi:fire" | |
accuracy_decimals: 2 | |
lambda: return (id(initial_consumption)/1000.0) + (id(total_pulses) * id(imp_ratio)); | |
- platform: template | |
name: 'Gasverbrauch Energy' | |
device_class: energy | |
state_class: total_increasing | |
update_interval : 10s | |
icon: 'mdi:fire' | |
accuracy_decimals: 1 | |
unit_of_measurement: "kWh" | |
lambda: return id(initial_energy_consumption) + (id(total_pulses) * id(imp_ratio) * id(Brennwert) * id(Zustandszahl)); | |
- platform: template | |
name: 'Pulse Counter total' | |
update_interval : 10s | |
icon: "mdi:counter" | |
accuracy_decimals: 0 | |
unit_of_measurement: "pulses" | |
lambda: return id(total_pulses); |
Hallo, vielen Dank für den Code. Ich habe manchmal negative Werte, hast du eine Idee woran das liegen kann? Viele Grüße
Nein, das Problem hatte ich noch nie.
Wie in den Kommentaren im Blogpost diskutiert gibt es bei dir evtl. eine Nachtabschaltung des WLANs?
Alternativ: kann es sein, dass dein ESP (aus welchem Grund auch immer) regelmäßig crasht und dabei der letzte Stand nicht sauber gespeichert wird? So oder so wäre es wohl sinnvoll, wenn du auf einer Maschine mal die Logs des ESPs verfolgst / wegspeicherst, bis das Problem wieder auftritt.
Hi,
Kannst du mit dem Code (den ich übrigens auch nutze) den Flash resetten?
ich pack es nicht. Entweder ich deaktiviere den Flash und habe den aktuellen Wert oder er nutzt immer den letzten WErt. ich würde gerne erstmal den richtigen WErt haben :-)
DAnke
Hi @CoolyMcCool ,
das habe ich tatsächlich noch nie probiert. (Bei mir lief das Ganze von Beginn an problemlos und mit 100% Uptime, so dass ich es nie wieder anfassen musste.)
Meinst du tatsächlich einen kompletten Flash-Reset oder nur das Ändern der initial_consumption
?
Hi
Sorry hatte keine Benachrichtigung bekommen dass du mir geantwortet hattest...
Ich zumindest der Verbrauch der auf der Anzeige steht wäre nett wenn ich ihn zurücksetzen könnte.
Hab bspw. Letztens einen neuen Zähler eingebaut bekommen...
Eventuell reicht es, wenn du einmal die Firmware neu deployst mit restore_value: false
bei total_pulses
. (Also Zeile 4 im obigen Code.) Und direkt danach wieder mit restore_value: true
. Habe das aber noch nicht ausprobiert.
Hi,
Danke. Da es derzeit aber läuft fass ich es grade nicht an. Beim letzten mal hab ich ne ganze weile per Magneten Pulse hinzuaddiert :-D bzw. des ganze eine bestimmte Weile abgesteckt gelassen. Aber vielleicht brauche ich es nochmal dann versuche ich es bestimmt. ich hatte schon mit den Werten rumgespielt, aber nichts sinnvolles erreicht.
Danke auf jeden Fall.
Hallo,
ich habe mir den Gaszähler nachgebaut. Funktioniert soweit einwandfrei. Vielen Dank für den Code!
Einen Schönheitsfehler habe ich jedoch entdeckt. Beim übertragen zu HomeAssistant werden immer 5 Nachkommastellen im Log angezeigt, jedoch nicht wie erwartet 15494,86000 m3 sondern 15494,86035m3. Ich kann mir nicht erklären wie das zu Stande kommt.
Wenn ich die Formel im Code mit dem Taschenrechner nachrechne komme ich auf die richtigen werte.
Hast du eine Idee was das Problem sein könnte?
Mhh, kann ich mir so direkt nicht erklären.
Das ist nur der spezifische Ausschnitt für die Gastherme. Zusätzlich braucht es natürlich noch mindestens die Sektionen
esphome
,wifi
undmqtt
(oderapi
).