Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fehlendes Schaltbild bei Gasverbrauchsmessung #6

Open
felix-wa opened this issue Sep 8, 2021 · 16 comments
Open

Fehlendes Schaltbild bei Gasverbrauchsmessung #6

felix-wa opened this issue Sep 8, 2021 · 16 comments

Comments

@felix-wa
Copy link

felix-wa commented Sep 8, 2021

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

@Xrlwyzz
Copy link

Xrlwyzz commented Dec 4, 2021

Hi, die Ergänzung zum Schaltbild wäre Klasse. Würde das auch gerne realisieren.
VG

@Johnnyyr
Copy link

Johnnyyr commented Jan 2, 2022

Eine Seite vom Reed an D1 die andern an G(ground).

@ha-es13
Copy link

ha-es13 commented Jan 18, 2022

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?

@dj-at-work
Copy link

dj-at-work commented Jan 23, 2022

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.

@GG-Style
Copy link

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?

@dj-at-work
Copy link

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.

@GG-Style
Copy link

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

@andre68723
Copy link

ich hatte das damals ebenfalls, über einen Zeitraum von 24h wurde das doppelte gezählt.
Daher einfach total_value += x * 0.5 * 0.01;

@Johnnyyr
Copy link

Meiner zählt nicht genau doppelt sonder quasi wild :-) ich teste das auch mal mit widerstand. danke

@ha-es13
Copy link

ha-es13 commented Jan 31, 2022

Ich habe die Lösung:
Benutzt das Modul KY-025 und den internen Pull-Up Widerstand von D4.

binary_sensor:

  • platform: gpio
    pin:
    number: D4
    mode:
    input: true
    pullup: true
    name: Reed-Kontakt

sensor:

  • platform: pulse_counter
    pin:
    number: D4
    mode:
    input: true
    pullup: true
    name: "Gasverbrauch"
    filters:
    • lambda: |-
      static float total_value = 0.0;
      total_value += x * 0.1;
      return total_value;
      unit_of_measurement: "m³"
      accuracy_decimals: 2
      icon: 'mdi:fire'

@dj-at-work
Copy link

@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?

@ha-es13
Copy link

ha-es13 commented Feb 3, 2022

Ich habe mir beim örtlichen Energieversorger den original Reedkontakt für meinen Gaszähler besorgt.

@GG-Style
Copy link

GG-Style commented Feb 3, 2022

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?

@tunnulik
Copy link

tunnulik commented Feb 5, 2022

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)

Anmerkungen zur Konfiguration:

Die Lösung findet sich in der Doku zum "Pulse Count Sensor"
(siehe https://esphome.io/components/sensor/pulse_counter.html)

internal_filter

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

count_mode

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

filters -> multiply

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 

mode

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)

@tunnulik
Copy link

tunnulik commented Feb 5, 2022

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.

1. Umrechnungsfaktor bestimmen

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

2. m³ in kWh umrechnen

# m³ * Umrechnungsfaktor = kWh
5 * 10,9238808 = 54,619404

3. Preis in EUR/m³ berechnen

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

Integration in HA

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

@ThreeSixty123
Copy link

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants