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

Julian Sikorski belegdol at gmail.com
Di Jan 9 14:54:45 CET 2024


Hallo,

weiteres update: state machine hilft mir momentan leider noch nicht. Mit 
debounce_delay von 30 ms, high_wait von 1000 ms und active_high (sodass 
ich den gleichen GPIO pin nutzen kann) ist eine Leuchtröhrenlampe direkt 
daneben ein Killer :( Würde S0-an-USB hier helfen? Oder soll ich eher 
die Lampe auf LED umbauen?
Ich kann auch noch versuchen über active_low auszuwerten, was denkt ihr? 
Oder anstelle eines ungeschirmtes Klingeldrahtes ein S/FTP Kabel verwenden.

LG,
Julian

Am 08.01.24 um 16:50 schrieb Julian Sikorski:
> Hallo,
> 
> update: die Teile sind gekommen und alles ist angeschlossen. Erster 
> versuch ohne State Engine, mit GPIO auf Pulldown. Sieht gar nicht so 
> schlecht aus (siehe Anhang). Ein paar wilde Impulse habe ich händisch 
> aus der DB gelöscht, State Engine werde ich wohl einstellen müssen. Hier 
> die Konfiguration:
> 
>        "protocol" : "s0",
>           "enabled" : true,
>           "gpio" : 24,
>           "configureGPIO" : true,
>           "debounce_delay" : 30,
>           "channels": [{
>                   "uuid" : "918f7ff0-ae33-11ee-9c97-b19e2a89dc6a",
>                   "middleware" : "http://odroidxu4.local:8080",
>                   "identifier" : "Impulse"
> 
> Die größte Enttäuschung: der Befestigungsklip von dem IN-Z62 ist viel zu 
> locker :( Da kauft man sich extra die offizielle Teil sodass alles top 
> sitzt und dann so was.
> 
> LG,
> Julian
> 
> Am 01.01.24 um 19:33 schrieb Julian Sikorski:
>> 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