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

Julian Sikorski belegdol at gmail.com
Mo Jan 1 19:33:22 CET 2024


Hallo Alex,

vielen Dank für die ausführliche Infos. Ich probiere es aus und berichte 
wie es lief. Wenn es nicht klappt versuche ich die S0 USB Schnittstelle 
nachzubauen.

LG,
Julian

Am 01.01.24 um 16:57 schrieb Alex:
> 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