NEWS
Gelöst: Gaszähler-Ersatz für vorhandene vzlogger-Anbindung
-
Hallo allseits,
aktuell lese ich meinen Gaszähler wie folgt aus:
Hardware:-
USB-Lesekopf mit Reed-Kontakt am Gaszähler
-
Raspi-4 im Heizraum an dem der USB-Lesekopf angeschlossen ist
Auf dem Raspi-4 im Heizraum läuft folgende Software
-
Volkzähler mit vzlogger der die Impulse des Lesekopfes übernimmt
-
vzpush - Service im Volkszäher / vzlogger aktiviert. Der Push-Service stellt die Daten für Node-red bereit.
Die Daten werden von meinem ioBroker per node-red übernommen und in eigene Datenpunkte unter 0_userdata.0 geschrieben und mit Blockly - Skripten weiterverarbeitet.
Das ganze funktioniert auch alles soweit. Das Problem ist, dass der Raspi-4 im Heizungsraum immer wieder mal den USB-Lesekopf "vergisst" und keine Daten aufzeichnet bzw. sich immer wieder mal der WLAN - Netzwerstack aufhängt und das Gerät im Netzt nicht mehr erreichbar ist und keine Daten sendet. Damit gehen mir immer wieder Impulse verloren und die Zählerwerte passen nicht und müssen manuell korrigiert werden. Das nervt mit der Zeit...
Deshalb suche ich nach einer stabileren Alternative.
Als mögliche Alternative bin ich über den ELV HM-ES-TX-WM gestolpert. Wenn ich das richtig verstehe benötige ich neben der Hardware auch eine HomeMatic Instanz (HomeMatic selbst oder eine Raspi-Matic?) mit der dann der HM-ES-TX-WM verbunden wird. Die HomeMatic Instanz wird per Adapter an den ioBroker angebunden?
Oder gibt es eine bessere Alternative?
Vielen Dank im Voraus
DatzerF
-
-
@datzerf Kannst du denn kein Netzwerkkabel zu deinem Raspi ziehen? Und weshalb ein USB Lesekopf für einen Reed-Kontakt an einem Raspi?
Mein Vorschlag wäre: ioBroker Slave auf dem Raspi installieren und an deinen bestehenden ioBroker anhängen (Stichwort: Multihost). Hier wäre es aber wichtig, ein LAN Kabel zu haben - darf auch ein vieradriges Cat.5 sein, wenn nur der Raspi dran hängt. Einen Reed-Kontakt kannst du ja ganz einfach mit dem rpi2 Adapter an einem GPIO auslesen. Mit einem kleinen Skript (zB Blockly) kannst du dann aus den Impulsen einen Datenpunkt füllen.
-
@datzerf sagte in Frage: Gaszähler-Ersatz für vorhandene vzlogger-Anbindung:
Oder gibt es eine bessere Alternative?
Wie ich finde: JUPP!
https://forum.iobroker.net/topic/36622/wasserzähler-version-2-all-in-device
Damit wird die Anzeige direkt vom Gaszähler abgelesen, sieht bei mir so aus:
Das landet dann per MQTT im ioBroker:
Und kann dann z.B. mit dem SourceAnalyticx-Adapter verarbeitet werden:
Die V-Monat (Vor-Monat) Werte sind noch nicht richtig, so lange läuft das bei mir noch nicht.
Wie du siehst nutze ich das für Strom, Gas und Wasser.
Selbst wenn der mal eine Zahl falsch abliest, so korrigiert er sich dann wieder selbst.Kosten: ESP32-CAM MB -Variante um die 10 bis 18 Euro (ich würde mit Antenne nehmen) + MicroSD karte 16GB + USB-Netzteil und Kabel. Gehäuse kann auch aus Pappe oder Holz gebaut werden, die Kamera sollte um die 8cm von der zu lesenden Zahl entfernt sein. Man kann also so um die 25 Euro hinkommen pro Messstelle
-
@unclesam Netzwerkkabel haut leider nicht hin. Im Heizraum steht schon ein Raspi, halt mit WLAN der ist auch mit iOBroker versorgt und ein Slave meiner Master-Instanz.
Der USB-Lesekopf ist folgender:
https://wiki.volkszaehler.org/hardware/controllers/gaszaehler_lesekopf
Hatte das Glück noch einen zu bekommen.
Allerdings bin ich kein Elektriker / Elektrotechniker, als dass ich das Ding einfach mal so zerlege und dann den Reed-Kontakt samt Kabel an die GPIO-PINS ranzwirble.....
An welche PINS müsste ich den Reed-Kontakt mit seinen zwei Kabeln anschließen? -
@datzerf
Hi
grundsätzlich bin ich ja großer Freund der volkszähler Hardware und finde, was dort entwickelt wurde und zeitweise sogar zu selbstlosen Preisen verkauft wurde echt supi.Kenne die Lösung jetzt nicht im Deatil (keinen Gasanschluß) aber sieht so aus, als wenn der Kopf, der den Reed-Kontakt enthält losgelöst nutzbar wäre (S0+ und S0-).
Für mich auch ein Teil der Fummellei, so einen Kontakt richtig zu positionieren (Fehlerquelle). Allerdings spricht dagegen (Wiederverwendung), dass dir jetzt auch Pulse teilweise fehlen (Grund offen könnte auch am Reed Kontakt liegen).Aber allgemein könntest Du den S0+ und S0- doch recht einfach an einen D1 Mini hängen (oder an den RPI wenn er dort bleiben soll) und dann per ESPEasy an den IOBroker schicken. Die Auswertung der Pulse macht ESPEasy, deswegen ist die Übertragung für mich auch weniger sensitiv, als wenn Du direkt die S0 Impulse überträgst:
https://waschto.eu/2018/01/15/verbrauchs-messwerte-ueber-die-s0-schnittstelle-auslesen/
Allgemein um wieder zum Anfang zu kommen, bin ich normal davon überzeugt, dass der S0 Anschluß der Hardware ein richtiger S0 Anschluß nach Norm ist der entsprechend universell funktioniert. Löst Du jetzt das weieße Gehäuse also nur den Reed-Kontakt dort heraus, benutzt Du einfach nur einen Kontakt und gibst da "Irgendwas" von GPIO-Kontakten drauf. Am Ende zählt das Ergebnis aber daher meine Wertschätzung für die stets sauber Umsetzung der volkszähler hardware.
-
@Pete0815 sagt eigentlich schon alles.
Einen Reed Kontakt per USB anzuhängen und dafür noch einen ESP zu verwenden, finde ich etwas Overkill.
An einen Reed Kontakt kannst du auch 10m Kabel hängen, das ist überhaupt kein Problem. Dann hängst du ein Ende an GND und das andere an einen der GPIOs des Raspi. Mit dem rpi2 Adapter kannst du dann diesen GPIO auf Input mit pull-up konfigurieren und dann solltest du den Zustand des Reed Kontaktes im entsprechenden Datenpunkt sehen. Zu testen wäre das ja einfach mit einem Magneten.
-
@unclesam
genau hinschauen hilft . Ich habe den s0 Ausgang mit dem Anschluß des Reed Kontaktes verwechselt :
Wenn ich aber jetzt richtig sehe, dann wäre dies der Reed Kontakt (weißes Kabel):
Nun einfach diese 2 Adern auf 3,3V/GND und einen GPIO legen. Ob diese GPIO von einem RPI oder von einem ESP stammen ist ja von der Funktion erst einmal unabhängig. Aus der HomeMatic Lösung deute ich, dass @DatzerF den RPI für nichts anderes benutzt und er auch bei voller Funktion des ReedKontaktes auf ihn verzichten könnte. Somit finde ich ein ESP8266 (1W vs 5W) keine schlechte Option um einfach den Kontakt auszuwerten und per Wifi zum IOBroker zu schicken.
zB wie hier: https://forum.iobroker.net/topic/27923/anleitung-gaszähler-mit-nodemcu-espeasy -
@pete0815 der Volkszähler Lesekopf mit der (eigentlich ist es eine) Erweiterung um dem Reed-Kontoakt macht genau was er soll.
Der vzlogger verwendet den Reed-Kontakt als S0 - Device, zählt Impulse und liefert je Impuls eine 1. Der Lesekopf ist eigentlich ein IR-Lesekopf für Stromzähler und wurde um die Reed-Kontakt erweitert, so mein Verständnis.
Mit der Positionierung habe ich keinerlei Probleme, das passt. Der Zählt genau das was er soll.Das Kernproblem ist in meinen Worten als Nicht-Techniker, dass immer wieder mal (sporadisch) die WLAN-Verbindung abkackt, oder vom vzlogger das usb-device nicht mehr erkannt wird.
Ist die WLAN - Verbindung weg, zählt der vzlogger zwar weiter, die Daten kommen aber nicht mehr am ioBroker an. Das lässt sich (vermute ich) dadurch beheben, dass ich die notwendigen Daten nur auf dem ioBroker - Slave im Heizraum speichere und dort auch die notwendigen Blockly zur Berechnung des Gas-Verbrauches laufen lasse.
Das zweite Problem, das immer wieder mal auftritt ist, das Problem, dass der vzlogger, der Raspi oder was auch immer den USB-Anschluss nicht mehr erkennt und die S0-Impulse nicht mehr zählt.Wenn ich Dich und @UncleSam richtig verstehe, dann müsste ich eigentlich "nur" den Reed vom Lesekopf trennen und die zwei Adern mit (welchen gleich nochmal?) GPIO - Pins verbinden. Auf der lokalen iOBroker - Instanz (Slave) des Raspi im Heizraum den Adapter RPI2 installieren und passend konfigurieren um die Impulse abzugreifen und als Datenpunkt zu speichern?
-
@pete0815 sagte in Frage: Gaszähler-Ersatz für vorhandene vzlogger-Anbindung:
Aus der HomeMatic Lösung deute ich, dass @DatzerF den RPI für nichts anderes benutzt und er auch bei voller Funktion des ReedKontaktes auf ihn verzichten könnte.
Leider nein, an dem Raspi im Heizraum hängt auch noch der Gaskessel und wird per fhem ausgewertet und geloggt.
-
@datzerf said in Frage: Gaszähler-Ersatz für vorhandene vzlogger-Anbindung:
@pete0815 der Volkszähler Lesekopf mit der (eigentlich ist es eine) Erweiterung um dem Reed-Kontoakt macht genau was er soll.
Der vzlogger verwendet den Reed-Kontakt als S0 - Device, zählt Impulse und liefert je Impuls eine 1. Der Lesekopf ist eigentlich ein IR-Lesekopf für Stromzähler und wurde um die Reed-Kontakt erweitert, so mein Verständnis.
Mit der Positionierung habe ich keinerlei Probleme, das passt. Der Zählt genau das was er soll.Wenn Du dir dort 100% sicher bist ok. Durch nicht 100%tigen Sitz oder ggf. auch Verschleiß des Kontaktes könnte ich mir auch eine entsprechende Fehlfunktion erklären.
Das Kernproblem ist in meinen Worten als Nicht-Techniker, dass immer wieder mal (sporadisch) die WLAN-Verbindung abkackt, oder vom vzlogger das usb-device nicht mehr erkannt wird.
Ist die WLAN - Verbindung weg, zählt der vzlogger zwar weiter, die Daten kommen aber nicht mehr am ioBroker an. Das lässt sich (vermute ich) dadurch beheben, dass ich die notwendigen Daten nur auf dem ioBroker - Slave im Heizraum speichere und dort auch die notwendigen Blockly zur Berechnung des Gas-Verbrauches laufen lasse.Prinzipiell bin ich da voll bei Dir. Wie die Slavefunktion von iobroker arbeitet bzw. mit Pufferung und Verbindungsabbrücken umgeht, kann ich aber nicht sagen. Eine einfache Softwarelösung die keine Impulse sondern ausgewertete Zählerstände per Wifi schickt sollte hier etwas tolleranter gegen Ausfälle sein. Wenn der Zählerstand mal flöten geht, nicht schlimm dann kommt er halt in den nächsten paar Sekunden....
Das zweite Problem, das immer wieder mal auftritt ist, das Problem, dass der vzlogger, der Raspi oder was auch immer den USB-Anschluss nicht mehr erkennt und die S0-Impulse nicht mehr zählt.
Klingt komisch für mich. Das steckt simple/bewährte Technik aus heutiger Sicht hinter und der entsprechende Chip sollte gerade an einem RPI total stabil laufen, aber wie auch immer.
Wenn ich Dich und @UncleSam richtig verstehe, dann müsste ich eigentlich "nur" den Reed vom Lesekopf trennen und die zwei Adern mit (welchen gleich nochmal?) GPIO - Pins verbinden. Auf der lokalen iOBroker - Instanz (Slave) des Raspi im Heizraum den Adapter RPI2 installieren und passend konfigurieren um die Impulse abzugreifen und als Datenpunkt zu speichern?
Ja, den GPIO kannst Du Dir aussuchen und im Adaptermenü entsprechend konfigurieren bzw. aktiv schalten:
Den Rest würde ich hierraus entnehmen(Video):
https://haus-automatisierung.com/software/iobroker/2021/02/28/iobroker-gaszaehler-reed-kontakt.html -
@pete0815 sagte in Frage: Gaszähler-Ersatz für vorhandene vzlogger-Anbindung:
Den Rest würde ich hierraus entnehmen(Video):
https://haus-automatisierung.com/software/iobroker/2021/02/28/iobroker-gaszaehler-reed-kontakt.htmlDas hab ich auf dem ioBroker - Master bereits in einer für mich passenden Variante umgesetzt
Auf dem Master speichere ich die per Node-Red vom vzlogger auf dem Slave generierten Impulse. Berechne die Verbrauchten Kubikmeter und berechne Preise und kWh.Vielen Dank für die Tips und Hinweise, werde mal den Lesekopf „zerlegen“ und den Reed-Kontakt direkt per GPIO an den Slave anschließen...
-
Hallo allseits,
jetzt habe ich den Lesekopf doch nicht zerlegt, da dieser einen S0 - Ausgang mit Waco-Klemmen beschaltet hat.
Hier der Stromlauf- / Bestückungsplan des Lesekopfes.
Statt dessen habe ich den +S0 an der Wago-Klemme des Lesekopfes mit dem als Eingang konfigurierten GPIO-Port 22 (PIN 15) des Raspi verbunden. -S0 an der Wago-Klemme des Lesekopfes mit GND (PIN 6).
Der Lesekopf ist auch weiterhin per USB verbunden.
Meine Idee war, dass ich damit auch die Signale abgreifen kann. Das funktioniert soweit auch, am GPIO 22 sehe ich Statusänderungen / Impulse, die passen von der Anzahl und der Zeit aber nicht zu den Impulsen die von vzlogger gezählt werden.
Habe ich da einen Gedankenfehler, oder einfach nur was falsch konfiguriert oder zusammengesteckt?
Statusänderungen am GPIO 22:
Impulse die der vzlogger gezählt hat, die Anzahl der Impulse passen:
Viele Grüße
Franz -
der S0 Ausgang hat derzeit keine Spannungversorgung, somit der RPI auch keine true Werte ....
In der Angabe zur Hardware steht, dass die Spannungversorgung über die USB-Wandwarze zu erfolgen hat. Was das bedeutet klicke ich gerade noch fröhlich zusammen
Edit: Die Verdrahtung ist wie folgt zu änden:
S0+ an Pin 1 des RPI (3,3V) und S0- an GPIO22 (zum detektieren).
-
@pete0815
wollte gerade schreiben, dass der USB - Anschluss nach wie vor gesteckt ist....
Vielen Dank, ändere ich gleich mal ab. -
@pete0815
kaum steckt man richtig an kommt auch was an....
-
@datzerf
Ja, die Versorgung des S0 Ausgangs hat losgelöst davon zu erfolgen.
"Wandwarze" habe ich nur ewig nicht gehört und klingt erstmal komischWie oben beschrieben, gibst Du jetzt mit PIN1 aktiv 3,3V auf den S0 Ausgang und er schaltet das bei einem Impuls auf Deinen GPIO22/s0-/PIN15.
Hoffe das klappt so, da der s0 mit 5V-20V spezifiziert ist. Wir geben da gerade aber nur 3,3V drauf(könnte etwas wenig sein). Ich bin da aber lieber vorsichtig, da der GPIOs des RPI nur 3,3V verträgt. Erhöhen und 5V mit PIN2 da drauf geben geht immer noch.
-
@pete0815 sagte in Frage: Gaszähler-Ersatz für vorhandene vzlogger-Anbindung:
Hoffe das klappt so, da der s0 mit 5V-20V spezifiziert ist. Wir geben da gerade aber nur 3,3V drauf(könnte etwas wenig sein). Ich bin da aber lieber vorsichtig, da der GPIOs des RPI nur 3,3V verträgt. Erhöhen und 5V mit PIN2 da drauf geben geht immer noch.
Und wenn das nicht geht, nimmst du dann z.B. einen PCF8574, den du mit den 5V des Raspi speist (und natürlich am I2C des Raspi anhängst) - der liefert dann auch auf seinem Output 5V. Under PCF8574 kann mit dem i2c Adapter in ioBroker eingebunden werden. Läuft bei mir einwandfrei.
-
So, habe den Lesekopf wie von @Pete0815 vorgeschlagen von der Wago-Klemme direkt mit PIN 1 (3,3V) und PIN 15 (GPIO 22) verbunden und diese Woche laufen lassen.
Das gute Stück zählt, jedoch werden zu Viele Impulse gezählt. Neben den echten Impulsen, die auch vom noch laufenden VZ-Logger registriert werden kommen wahllos weitere Impulse an, die auch registriert werden. Das können auch keine Impulse sein, die vom "Prellen" kommen.
Gestern hab ich mir ein Breadboard bestellt um die Schaltung wie von Matthias Kleine aufzubauen und dann mal zu sehen ob dann nur die "echten" Impulse gezählt werden.
Hätte nie gedacht, dass ich mal (wenn man das schon so nennen darf) Schaltungen zusammenstecke -
@datzerf
Nur als Idee. Der vzlogger ist konfigurierbar wie er die Impulse zählt. Hab das mal vor Jahren von steigende auf fallende Flanke geändert oder umgekehrt.Was ich damit sagen möchte, hast Du mal die Impulse (die Gezählten) geprüft, ob es zusätzliche Impulse z.B. durch die fallende Flanke des Kontaktes sind? Da der Gaszähler nicht konstant dreht (zum Glück ) dürfte solche Impulse auch unterschiedliche Abstände zueinander haben. Grob dürften es dann aber die doppelte Menge sein.
-
@pete0815 die vzlogger.conf lässt soweit ich weis (auch mit dem vzlogger.conf editor) die Einstellung nicht her.
Es ist aber tatsächlich so, dass die Anzahl grob doppelt so hoch ist.
vzlogger zählt um 12:12:37 / 12:00:40 / 11:53:12 / 11:43:09
GPIO zählt um 12:12:37 / 12:10:42 / 12:00:40 / 11:57:58 / 11:53:11 / 11:50:20 / 11:43:08Der vzlogger registriert und speichert den Impuls dann wenn der Magnet aus der Zählwalze am Reed - Kontakt "Eintrifft". Um 12:12:37 kommt also dann die 7 der zweiten Nachkommastelle der Zählwalze zum Kontakt.
Dann liefert auch der GPIO einen Impuls. Zusätzlich aber auch ca. 2 Minuten vorher. Da war aber scheinbar nix los. Vor allem dauert es keine 2 Minuten bis 0,1 Kubikmeter Gas verbrannt sind, die Zählwalze also einmal vollständig durchgelaufen ist.Womit ich bereits experimentiert habe, sind die Einstellungen für den GPIO direkt am RasPi. Habe mit
raspi-gpio set 22 ip pu
bzw.
raspi-gpio set 22 ip pd
die Einstellung geändert ob der Port auf Pull-Up bzw. Pull-Down reagieren soll.
Aber das Ergebnis war identisch.Gezählte Impulse des vzlogger - 18 Impulse
Gezählte Impulse des GPIO - 32 Impulse