Open felix-wa opened 3 years ago
Hi, die Ergänzung zum Schaltbild wäre Klasse. Würde das auch gerne realisieren. VG
Eine Seite vom Reed an D1 die andern an G(ground).
Ich habe es nachgebaut mit einem Wemos D1 mini auf GPIO D1 mit einem externen 10k Pullup Widerstand, aber es werden mehr Impulse gezählt, wie der Gaszähler wirklich ausgibt. Bisher habe ich keine Lösung. Wo ist der Fehler? Entprellen, wie?
Habe es mit den hier beschriebenen Teilen (ESP8266 NodeMCU + Reed-Sensor MK-471B) nachgebaut. Es führt zum gleichen Fehlerbild wie bei den anderen: es werden zu viele Impulse gezählt. Wo der reale Verbrauch bei 0,21 m³ lag, meldet der Sensor satte 0,54 m³.
Wo liegt die Ursache? Ist der Sensor zu empfindlich, bräuchte man einen Pull-Down-Widerstand o.ä. oder müsste man im Controller die Signale irgendwie bereinigen (z.B. könne man nur ein Impuls innerhalb eines Zeitraums von bspw. 5 Sekunden berücksichtigen).
Ich habe nur keine Ahnung wo und wie man das anstellen könnte.
Falls ich was herausfinde werde ich es hier schreiben, wäre aber aktuell auch über jeden Tipp dankbar.
Weitere Infos wären echt Top. Wollte da jetzt auch mal dran. Habe aber 0 Plan vom ESP Programmieren. Bin mal gespannt ob ich das irgendwie hinkriege. Wer Infos zum Programmieren hat gerne her damit. Reicht das Bruchstücke der Programmierung von der Website? Brauche ich noch einen Wiederstand?
Ich habe recherchiert und mit einem Freund gesprochen, der beruflich etwas von dem Thema versteht. Es ist wie @ha-es13 bereits gesagt hat. Man benötigt einen Pullup Widerstand (er empfahl ebenfalls 10k). Die Bestellung trifft heute ein, sobald es läuft (die Hoffnung stirbt zuletzt) teile ich die Details.
Ich habe recherchiert und mit einem Freund gesprochen, der beruflich etwas von dem Thema versteht. Es ist wie @ha-es13 bereits gesagt hat. Man benötigt einen Pullup Widerstand (er empfahl ebenfalls 10k). Die Bestellung trifft heute ein, sobald es läuft (die Hoffnung stirbt zuletzt) teile ich die Details.
Top. Wiederstand habe ich da. Dann würde ich mich freuen wenn du deine Infos teilst
ich hatte das damals ebenfalls, über einen Zeitraum von 24h wurde das doppelte gezählt.
Daher einfach total_value += x * 0.5 * 0.01;
Meiner zählt nicht genau doppelt sonder quasi wild :-) ich teste das auch mal mit widerstand. danke
Ich habe die Lösung: Benutzt das Modul KY-025 und den internen Pull-Up Widerstand von D4.
binary_sensor:
sensor:
@ha-es13 vielen Dank! Werde das mal mit meinem Reed-Sensor ausprobieren. Wie hast du dein Modul am Gaszähler angebracht? Hast du dir etwas per 3D-Drucker erstellt oder es einfach mit Klebeband befestigt?
Ich habe mir beim örtlichen Energieversorger den original Reedkontakt für meinen Gaszähler besorgt.
Meins läuft auch. Mit dem Reed Kontakt aus der Beschreibung. Bin mir nur noch nicht sicher ob die Werte passen (edit= mit den Werten von andre68723 sieht es sehr gut aus) Wie habt ihr die Daten in HA integriert? Ausserdem muss es ja noch in kwh umgerechnet werden um den Preis auch passend einzutragen, da man ja beim Gasnbieter in Kwh zahlt. Hat da jemand ein paar Infos?
Ich habe mir auch noch mal die ESPHome Dokumentation gelesen und dort ein paar interessante Stellen gefunden. Dadurch war es möglich ausschließlich durch Anpassen der Konfiguriation und ohne die Verwendung eines externen Widerstands den Gaszähler zum korrekten Zählen zu bewegen.
Meine Konfiguration des Gaszählers in ESPHome:
sensor:
- platform: pulse_counter
name: "Gasverbrauch"
update_interval: 60s
unit_of_measurement: "m³"
accuracy_decimals: 2
icon: 'mdi:fire'
pin:
number: GPIO5
mode:
input: true
pullup: true
count_mode:
rising_edge: DISABLE
falling_edge: INCREMENT
internal_filter: 50ms
filters:
- multiply: 0.01 # (1/100 pulses per kWh)
Die Lösung findet sich in der Doku zum "Pulse Count Sensor" (siehe https://esphome.io/components/sensor/pulse_counter.html)
Mit dem Parameter internal_filter
ist es möglich den Filter für die Länge das Signals zu beeinflussen. Standardwert sind hier 13 Mikrosekunden. Mit einem Wert von 50 ms fahre ich aktuell sehr gut.
internal_filter: 50ms
Um den internal_filter
verwenden zu können, muss der count_mode
definiert werden. In der Doku wird empfohlen falling_edge
zu verwenden. Mit der folgenden Einstellung zählt der Sensor den Impuls nur bei Signalende, der wg. der Einstellung bei internal_filter
mindestes 50ms dauern muss.
count_mode:
rising_edge: DISABLE
falling_edge: INCREMENT
Die Verwendung einer anonyme Funktion (lambda
) ist für diesen Zweck möglich, aber nicht nötig. Es reicht völlig die Anzahl der gezählten Impulse/Umdrehungen per Multiplikation mit 0.01 auf die gewünschte Nachkommastelle zu verschieben (1 Umdrehung entspricht 0.01 kWh), dafür gibt es den multiply
-Filter:
filters:
- multiply: 0.01
Die Schreibweise mode: INPUT_PULLUP
ist eine alternative Kurzform für
mode:
input: true
pullup: true
(siehe https://esphome.io/guides/configuration-types.html?highlight=input_pullup)
Meins läuft auch. Mit dem Reed Kontakt aus der Beschreibung. Bin mir nur noch nicht sicher ob die Werte passen (edit= mit den Werten von andre68723 sieht es sehr gut aus) Wie habt ihr die Daten in HA integriert? Ausserdem muss es ja noch in kwh umgerechnet werden um den Preis auch passend einzutragen, da man ja beim Gasnbieter in Kwh zahlt. Hat da jemand ein paar Infos?
@GG-Style Ich bin wie folgt vorgegangen, vielleicht hilft dir das ja auch.
Der Umrechnungsfaktor setzt sich aus Brennwert und Zustandszahl zusammen: Der Brennwert gibt an wieviel Energie das Gas abgibt und die Zustandszahl berücksichtigt Temperaturunterschiede zwischen Norm- und Betriebszustand.
Die Werte für Brennwert
und Zustandzahl
habe ich in der Abrechnung meines Gasversorgers gefunden.
Brennwert: 11,292
Zustandszahl: 0,9674
# Brennwert * Zustandzahl = Umrechnungsfaktor
11,292 * 0,9674 = 10,9238808
# m³ * Umrechnungsfaktor = kWh
5 * 10,9238808 = 54,619404
1 kWh: 12,30 Cent # (Stand: 23.01.2022)
# m³ * Umrechnungsfaktor * EUR/kWh
1 * 10,9238808 kWh * 0,123 EUR = 1,3436373384 EUR/m³
Preis pro m³: 1,3436373384 EUR
Für die Messung unter Energie habe ich in der configuration.yaml
den folgenden Eintrag hinzugefügt:
homeassistant:
customize:
sensor.gasverbrauch:
device_class: gas
state_class: total_increasing
Um mir separat verschiedene Werte anzeigen zu lassen, ist in der configuration.yaml
noch der folgende Eintrag hinzugekommen:
# The utility meter integration provides functionality to track consumptions
# of various utilities (e.g., energy, gas, water, heating)
utility_meter:
gasverbrauch_daily:
source: sensor.gasverbrauch
cycle: daily
gasverbrauch_weekly:
source: sensor.gasverbrauch
cycle: weekly
gasverbrauch_monthly:
source: sensor.gasverbrauch
cycle: monthly
gasverbrauch_yearly:
source: sensor.gasverbrauch
cycle: yearly
Hallo zusammen,
mein D1 Mini NodeMcu mit ESP8266-12F zählt immer 12 Pules/min ...
[13:53:20][D][pulse_counter:162]: 'Gasverbrauch': Retrieved counter: 0.00 pulses/min [13:53:20][D][sensor:124]: 'Gasverbrauch': Sending state 0.90012 m³ with 2 decimals of accuracy
egal welche Möglichkeit ich neme .... aktuell die von @ha-es13 ....
sensor:
- platform: pulse_counter name: "Gasverbrauch" update_interval: 60s unit_of_measurement: "m³" accuracy_decimals: 2 icon: 'mdi:fire' pin: number: GPIO5 mode: input: true pullup: true count_mode: rising_edge: DISABLE falling_edge: INCREMENT internal_filter: 50ms filters:
- multiply: 0.01 # (1/100 pulses per kWh)
auch wenn ich Pin 1-4 testweise auf Ground kurzschließe bekomme ich immer 12 Pulse/min oder halt eine Abwandlung dessen (1,2 - 12,0 - 0,12 - 0,012 )
Einmal Magnetkontakt berühren ergibt halt die Zahl auf der Basis von 12.... Zweimal Magnetkontakt berühren ergibt halt die Zahl 24 Dreimal Magnetkontakt berühren ergibt halt die Zahl 36
So langsam habe ich keinen Rat mehr . Könnt ihr mir da helfen?
Hallo @saruter, ich überlege gerade mir auch diesen Sensor zu bauen. Kannst du deinem Artikel noch ein Schaltbild hinzufügen, so dass man sieht wie der Reed Sensor an das Board angeschlossen werden muss? Viele Grüße