[vz-users] Gaszähler BK-G4 möglichst einfach auslesen

Alex sokoloff at e-mail.de
Mo Jan 1 16:57:01 CET 2024


Hallo Julian,

die Crimpverbindungen sehen gut aus, vom Löten würde ich eher abraten.
Zum einen wegen möglicher Hitzeschäden (ich weiß nicht wie geübt Du
bist), zum anderen wegen möglicher Kurzschlüsse - verbinde einen 5V Pin
mit GND und der Raspi ist für immer tot... bei den preiswerten ESPs
habe ich der Einfachheit halber auch schon gelötet, beim Raspi ist mir
das Risiko zu groß.

Also: Es gibt zwei GPIO Pins, die mit einem 4K7 Hardware Pull-Up fest
verdrahtet sind. Eigentlich sind sie für I2C gedacht, der Einfachkeit
halber kannst Du sie aber auch für S0 verwenden. Es handelt sich um die
Pins 3 und 5. Wichtig ist, sicherzustellen, dass Du kein I2C in
Benutzung hast. "i2cdetect -l" sollte keinen Bus anzeigen, auch darfst
Du keine Hardware-Clock über Overlay konfiguriert haben, ich habe auf
meinem Desktop z.B.  dtoverlay=i2c-rtc,ds3231 im /boot/config.txt. 

Siehst Du doch einen Bus, hast Du vielleicht im /etc/modules die Zeile
"i2c-dev" drin. Einfach auskommentieren und neu starten, dann dürften
die beiden GPIO Pins frei sein.

Zu Beginn (bei mir im Jahr 2019) hatte ich zur Vermeidung von
Falschimpulsen selbst unschön im vzlogger-code herumgebastelt, aber:
das ist nicht mehr nötig, denn es gibt seit geraumer Zeit eine vzlogger
Version als Pull-Request, der zwar noch nicht gemerged wurde aber voll
funktionsfähig ist und heruntergeladen werden kann. 

https://github.com/volkszaehler/vzlogger/pull/525
https://github.com/wrichter/vzlogger/tree/gpiod

Dieser benutzt, wenn man will, nicht mehr mmap oder /sysfs als Zugriff,
sondern /dev/gpiochip (deshalb hatte ich gefragt) und hat eine schöne
Erfindung namens "State Engine". Kommt z.B. ein "raising edge", obwohl
der Status schon "high" ist, wird dieser ignoriert, ebenso andersrum.
Die Logik ist noch um einiges komplexer und wirklich recht ausgefeilt.

Zudem kann man zusätzlich zum "debounce_delay" einen Wert für die
Mindestimpulslänge angeben ("high_wait"). Bei Original-Sensoren findet
sich dieser Wert in der Doku, oder man tastet sich einfach nach oben.
Bei mir läuft es mit "debounce_delay": 10 und "high_wait": 80.

Beides zusammen führt bei mir in der Tat dazu, dass bei voll
aufgedrehtem Logging sichtbare Interferenzen *nicht* als Impuls
gewertet werden. Ich habe es damals ein paar Tage lang beobachtet und
wirklich keine falschen Readings mehr gefunden, die nicht von der
State-Engine abgefangen wurden.

Deshalb kann ich diese Software gerade bei elektronisch nicht ganz
einwandfreien Umgebungen nur empfehlen.

Also: Du schliesst deinen Sensor an Pin 3 und einen der Ground-Pins,
z.B. 6 oder 9 an.

Dann brauchst Du noch die GPIOD Client und Library Programme. Schau mal
ob Du "gpioinfo" findest, andernfalls das Paket "gpiod" und Dependenzen
nachinstallieren.

alex at avz:~:(7)> gpioinfo
gpiochip0 - 54 lines:
	line   0:      unnamed       unused   input  active-high 
	line   1:      unnamed       unused   input  active-high 
	line   2:      unnamed       unused   input  active-high 
	line   3:      unnamed "vzlogger-s0" input active-low [used]
	line   4:      unnamed       unused   input  active-high 
	line   5:      unnamed       unused   input  active-high 
	line   6:      unnamed       unused   input  active-high 
	line   7:      unnamed   "spi0 CS1"  output   active-low
[used]
	line   8:      unnamed   "spi0 CS0"  output   active-low
[used]
	line   9:      unnamed       unused   input  active-high 
	line  10:      unnamed       unused   input  active-high 
	line  11:      unnamed       unused   input  active-high 
usw.

Wie Du siehst hat sich mein vzlogger da schon angemeldet. Dazu dann
beispielhaft ein Auszug aus meiner vzlogger.conf:

    "meters": [
        {
            // S0 meter

            "protocol": "s0",
            "enabled": true,
            "skip": false,
            "allowskip": false,   
            "interval": -1,
            "aggtime": -1,
            "aggfixedinterval": false, 
            "gpio": 1003,
            "gpio_dir": -1,
            "configureGPIO": true,
            "send_zero": false,
            "debounce_delay": 10,
            "high_wait": 80,

            "channel": {
                "identifier": "Impulse",
                "api": "volkszaehler",
                "uuid": "b12dfd80-111c-11ea-8e1a-c9616b442377",
                "middleware": "http://avz/middleware",
                "type": "device",
                "aggmode": "none",
                "duplicates": 0
            }
        },
    ]

Bei gpio muss es für Pin 3 wirklich 1003 heissen, damit der Zugriff
über GPIOD erfolgt und nicht über mmap und sysfs. "configure_gpio"
setzt "active_low" quasi als Inversion, da Du ja sonst mit einem Pull-
Up nicht die (positiven) Impulse, sondern die Zeit dazwischen loggen
würdest.

Hast Du die Pins 3 und 5 schon anderweitig belegt, z.B. für eine I2C
Uhr, kannst Du auch die Softresistors verwenden. Da muss dann nur eine
Kleinigkeit im Code geändert werden, dann läuft das genauso gut und wie
gesagt, bei mir fehlerfrei.

Lass' mich wissen wenn Du noch Fragen hast.

Grüße,
Alex

On Sat, 2023-12-30 at 09:23 +0100, Julian Sikorski wrote:
> Hallo Alex,
> 
> auf dem Raspberry läuft Kernel 6.1.21+, /dev/gpiochip0 und 
> /dev/gpiochip1 gibt es.
> 
> LG,
> Julian
> 
> Am 29.12.23 um 15:28 schrieb Alex:
> > Hallo Julian,
> > 
> > eine Frage zu Deinem Raspberry... welche Linux-Kernel Version hast
> > Du
> > und gibt es schon ein gpiochip device?
> > 
> > So sieht es bei mir aus...
> > 
> > alex at avz:~:(10)> uname -r
> > 5.10.110-v8
> > alex at avz:~:(11)> ls -la /dev/gpiochip*
> > crw-rw---- 1 root gpio 254, 0 Dec 22 10:26 /dev/gpiochip0
> > crw-rw---- 1 root gpio 254, 1 Dec 22 10:26 /dev/gpiochip1
> > 
> > Gruß,
> > Alex
> > 
> > On Wed, 2023-12-27 at 20:01 +0100, Julian Sikorski wrote:
> > > Hallo Alex,
> > > 
> > > danke im Voraus. Kein Stress, ich werde erstmal mit dem PIN und
> > > Docker
> > > genug zu tun haben.
> > > 
> > > LG,
> > > Julian
> > > 
> > > Am 27.12.23 um 18:53 schrieb Alex:
> > > > Hallo Julian,
> > > > 
> > > > seit einem dreiviertel Jahr habe ich einen Metrix Impulsnehmer
> > > > NI-3
> > > > für
> > > > Metrix/Apator Gaszähler am laufen, davor war's ein Cyble
> > > > Sensor,
> > > > der
> > > > streng genommen kein Reed-Kontakt ist, sondern ein
> > > > elektronischer
> > > > Open-Collector. Beide der Einfachkeit halber direkt am GPIO.
> > > > 
> > > > Das Hauptproblem war bei mir nie, dass die Impulse nicht oder
> > > > nicht
> > > > sauber gezählt werden, sondern Interferenzen, sprich falsche
> > > > Impulse,
> > > > die entweder over the air oder via Netzteil kommen können.
> > > > Schleudernde
> > > > Wasch- oder pumpende Spülmaschinen z.B. machen da viel
> > > > Freude....
> > > > 
> > > > Ich schreibe mal mein Setup zusammen und schicke es Dir... kann
> > > > aber ein
> > > > zwei Tage dauern. Aber wie gesagt, nicht die reine Lehre, die
> > > > USB
> > > > Lösung
> > > > ist da sicherlich besser.
> > > > 
> > > > Grüße,
> > > > Alex
> > > > 
> > > > On Wed, 2023-12-27 at 14:34 +0100, Julian Sikorski wrote:
> > > > > Hallo,
> > > > > 
> > > > > danke für eure Meinungen. Mein Gaszähler wäre der BK-G4 von
> > > > > Kromschröder, entschuldigt bitte den falschen Betreff.
> > > > > Baujahr
> > > > > scheinbar
> > > > > 2001, die Aussparung für Reed Sensor gibt es aber. Ich hätte
> > > > > eigentlich
> > > > > gedacht, dass dieser längst wegen abgelaufener Eichung
> > > > > ausgetauscht
> > > > > werden müsste, es ist aber scheinbar nicht der Fall (oder
> > > > > Syna
> > > > > hat uns
> > > > > vergessen).
> > > > > An der Erfahrungen hätte ich definitiv Interesse :)
> > > > > Ich hätte nichts gegen bisschen mehr Geld für den
> > > > > "originalen"
> > > > > Sensor
> > > > > auszugeben, zumal meine Elektronik-Fähigkeiten schnell an
> > > > > ihre
> > > > > Grenzen
> > > > > kommen :( 10k Resistor zu verbauen kriege ich aber noch hin
> > > > > (hoffentlich). Lesekopf von Tilman wäre wahrscheinlich zu
> > > > > viel
> > > > > verlangt.
> > > > > Es wurde von manchen von Prellen berichtet, kriegt man das
> > > > > mit
> > > > > dem
> > > > > debounce_delay Parameter in Griff?
> > > > > Funktioniert der IN-Z62 dann auch direkt mit 3.3V von GPIO?
> > > > > Wenn
> > > > > nicht,
> > > > > was wäre der "MVP"?
> > > > > Wegen der Anbindung an die Pins, wäre so was in Ordnung:
> > > > > https://www.berrybase.de/dupont-crimpkontakt-fuer-kabel-awg-
> > > > > 22-
> > > > > 28-female?number=DUPCP-F <https://www.berrybase.de/dupont-
> > > > > crimpkontakt-fuer-kabel-awg-22-28-female?number=DUPCP-F>
> > > > > Danke!
> > > > > 
> > > > > LG,
> > > > > Julian
> > > > > 
> > > > > Am 26.12.23 um 19:29 schrieb Alex:
> > > > > > Meiner Erfahrung nach funktionieren die "originalen", also
> > > > > > vom
> > > > > > Hersteller des Zählers vertriebenen Kontakte reibungslos,
> > > > > > weil
> > > > > > ja auch
> > > > > > getestet und zertifiziert. Dafür in der Anschaffung halt
> > > > > > ein
> > > > > > bisschen
> > > > > > teurer... und exakt passend mit Befestigung.
> > > > > > 
> > > > > > On Tue, 2023-12-26 at 19:25 +0100, Tilman Glötzner wrote:
> > > > > > > 
> > > > > > > Hallo Julian
> > > > > > > 
> > > > > > > Ich lese bei Klaus etwas von einen ziemlichen Kampf. Das
> > > > > > > war
> > > > > > > bei dem
> > > > > > > BK-G4M, den wir im Keller hängen haben, genauso.
> > > > > > > 
> > > > > > > Für einen Reedkontakt war der Magnet zu schwach. Auch für
> > > > > > > einem
> > > > > > > Hallsensor hat es nicht gereicht. Erfolg hatte ich dann
> > > > > > > erst
> > > > > > > mit einem
> > > > > > > Magnetfeldsensor. Dokumentiert habe ich die Lösung im
> > > > > > > Wiki:
> > > > > > > 
> > > > > > > https://wiki.volkszaehler.org/hardware/controllers/bk-
> > > > > > > g4m_lesekopf
> > > > > > > <https://wiki.volkszaehler.org/hardware/controllers/bk-
> > > > > > > g4m_lesekopf>
> > > > > > > 
> > > > > > > Gruß
> > > > > > > 
> > > > > > > Tilman
> > > > > > > 
> > > > > > > On 26.12.23 18:54, Klaus Reichenecker wrote:
> > > > > > > 
> > > > > > > > Ich logge meinen Gaszähler direkt mit ESPEasy in den
> > > > > > > > VZ-
> > > > > > > > ganz ohne
> > > > > > > > Raspi, GPIO usw
> > > > > > > > 
> > > > > > > > Es war aber Hardwareseitig ein ziemlicher Kampf – der
> > > > > > > > Magnet viel zu
> > > > > > > > schwach für einen Reedkontakt
> > > > > > > > 
> > > > > > > > Ich nutze jetzt einen Hallsensor, selbst das ist schon
> > > > > > > > grenzwertig
> > > > > > > > 
> > > > > > > > *Von:* volkszaehler-users
> > > > > > > > <volkszaehler-users-
> > > > > > > > bounces at demo.volkszaehler.org <mailto:volkszaehler-
> > > > > > > > users-
> > > > > > > > bounces-yskvAw7G+nS0hMEFegDhsw at public.gmane.orger.org>>
> > > > > > > > *Im
> > > > > > > > Auftrag von *Alex
> > > > > > > > *Gesendet:* Dienstag, 26. Dezember 2023 16:32
> > > > > > > > *An:* volkszaehler.org - users
> > > > > > > > <volkszaehler-
> > > > > > > > users at demo.volkszaehler.org <mailto:volkszaehler-users-
> > > > > > > > yskvAw7G+nQK+z9GoqpW2mui9UKz+5OX at public.gmane.org>>;
> > > > > > > > volkszaehler-users-fIHz4KgiBUEiDHdcnmzpoUzrnptfnCPw-
> > > > > > > > XMD5yJDbdMReXY1tMh2IBg at public.gmane.org <mailto:volksza
> > > > > > > > ehle
> > > > > > > > r-users-fIHz4KgiBUEiDHdcnmzpoUzrnptfnCPw-
> > > > > > > > XMD5yJDbdMReXY1tMh2IBg at public.gmane.org>
> > > > > > > > *Betreff:* Re: [vz-users] Gaszähler EG-BK4 möglichst
> > > > > > > > einfach auslesen
> > > > > > > > 
> > > > > > > > Hallo Julian,
> > > > > > > > 
> > > > > > > > um es kurz zu sagen: prinzipiell geht es, ist aber
> > > > > > > > störanfällig. Mit
> > > > > > > > ein paar Tricks kann man es weitestgehend in den Griff
> > > > > > > > bekommen,
> > > > > > > > zumindest bei einem Gaszähler, der ja vergleichsweise
> > > > > > > > wenig
> > > > > > > > Impulse
> > > > > > > > sendet. Wenn Du möchtest, kann ich ein paar Erfahrungen
> > > > > > > > weitergeben,
> > > > > > > > auch, was die internen Widerstände betrifft (es gibt
> > > > > > > > hard
> > > > > > > > und soft
> > > > > > > > resistors on board). Wirklich empfehlenswert ist diese
> > > > > > > > Vorgehensweise
> > > > > > > > jedoch nicht.
> > > > > > > > 
> > > > > > > > Viele Grüße,
> > > > > > > > 
> > > > > > > > Alex
> > > > > > > > 
> > > > > > > > On Tue, 2023-12-26 at 10:57 +0100, Julian Sikorski
> > > > > > > > wrote:
> > > > > > > > 
> > > > > > > > 
> > > > > > > > > Hallo zusammen,
> > > > > > > > > 
> > > > > > > > > ich bin vor einigen Tagen auf volkszähler drauf
> > > > > > > > > gestoßen
> > > > > > > > > und direkt
> > > > > > > > > 
> > > > > > > > > begeistert geworden. Ich habe mir ein IR Lesekopf für
> > > > > > > > > mein Iskra
> > > > > > > > > 
> > > > > > > > > Stromzähler besorgt und den PIN bestellt. So weit, so
> > > > > > > > > gut. Sobald ich
> > > > > > > > > 
> > > > > > > > > mein uraltes Raspberry Pi 1B an das Heimnetz
> > > > > > > > > anschließen
> > > > > > > > > kann, werde
> > > > > > > > > ich
> > > > > > > > > 
> > > > > > > > > middleware und frontend auf Docker container
> > > > > > > > > umziehen,
> > > > > > > > > der auf meinem
> > > > > > > > > 
> > > > > > > > > Odroid HC1 NAS läuft.
> > > > > > > > > 
> > > > > > > > > Jetzt zum eigentlichen Thema: ich würde gerne mein
> > > > > > > > > Gaszähler auch
> > > > > > > > > gerne
> > > > > > > > > 
> > > > > > > > > mit auslesen. Entweder mit dem offiziellen IN-Z62
> > > > > > > > > oder
> > > > > > > > > mit dem reed
> > > > > > > > > 
> > > > > > > > > sensor von Reichelt. Dazu hätte ich folgende Fragen:
> > > > > > > > > 
> > > > > > > > > - da die Erweiterungsboard momentan nicht lieferbar
> > > > > > > > > ist,
> > > > > > > > > geht es auch
> > > > > > > > > 
> > > > > > > > > direkt über GPIO?
> > > > > > > > > 
> > > > > > > > > - wenn ja, wie schließt man die Kabel am besten an
> > > > > > > > > die
> > > > > > > > > GPIO pins?
> > > > > > > > > Löten
> > > > > > > > > 
> > > > > > > > > oder mit Dupont Crimp?
> > > > > > > > > 
> > > > > > > > > - funktioniert es auch mit den internen Widerständen
> > > > > > > > > oder
> > > > > > > > > ist ein
> > > > > > > > > 
> > > > > > > > > externes 10k zwingend erforderlich?
> > > > > > > > > 
> > > > > > > > > Danke für die Infos im Voraus.
> > > > > > > > > 
> > > > > > > > > Liebe Grüße,
> > > > > > > > > 
> > > > > > > > > Julian
> > > > > > > > > 
> > > > > > 
> > > > > 
> > > > > 
> > > > 
> > > 
> > > 
> > 
> > 
> > 
> 
> 




Mehr Informationen über die Mailingliste volkszaehler-users