martinbulinski.de

Gaszähler auslesen am PC Drucken E-Mail
  
Mittwoch, 12. November 2008 um 08:34

Seit etwa Mitte Januar 2007 lese mich meinen Gasverbrauch mit dem PC aus. Klappt ungemein gut.

  

Die Idee

Da im Keller sowieso ein Server läuft, der den ganzen Tag nichts zu tun hat, ausser Faxe und Anrufe anzunehmen und ab und zu ein paar MP3-Files zu liefern, habe ich nach Möglichkeiten gesucht, den Gasverbrauch per PC auszulesen.
Nach einiger Sucherei bin ich auf einen Thread gestossen im EIB-Userclub

Der Kontakt zum Zähler

Da ich auch einen Gaszähler der Firma KROM-SCHROEDER besitze und tatsächlich eine Aussparung unter dem Zähler ist, um einen Abnehmer eben oben genannter Firma anzuschliessen (ca. 30EUR), habe ich mir anstelle dessen bei Reichelt einen REED-Kontakt Nr. MK471 B bestellt (ca. 2.50EUR). Meine vorhergehenden Versuche mit anderen REED-Kontakten sind allesamt misslungen.

Den Reedkontakt, den ich nun gekauft habe, mußte ich nicht einmal einkleben: Wenn er an der einen Fläche ein wenig befeilt wird, kann man ihn sehr gut in die Aussparung “einklemmen”. Kurz und gut, der Zähler zählt auf 10Liter genau, da der Magnetkontakt in der Drehscheibe der zweiten Stelle hinter dem Komma bei jeder Umdrehung den Kontakt auslöst (und der Gaszähler ja den Verbrauch in Kubikmeter zeigt).

 

Der Anschluss am Gameport

Da mir meine serielle Schnittstelle zu kostbar war für so ein einfaches Auslösen und Zählen, habe ich den Gameport verwendet.
Die Beschaltung des Gameport sieht so aus:

Also anschliessen an Pin 4 (Masse) und einen der Button-Pins 2,7,10 oder 14. Polung ist ja egal, weil es sich einfach nur um einen Schalter handelt.
Ein kleines C-Programm, dass den Fire-Button des Ports prüft, war schnell geschrieben und seitdem wird jede Zählerumdrehung protokolliert. Hier ein kleiner Auszug (Adresse 0×201 ist der Gameport). In der Variablen i steht das Bit des geschlossenen Pins. Ich prüfe hier pauschal, ob irgendein Schalter geschlossen ist.

...  
if (ioperm(0x201, 1, 1))
{ perror("ioperm");
exit(1);
}
while (1) /* Schleife */
{ i = inb(0x201);
/* shift to lower nibble */
i = i >> 4;
if ((i != 15 ) )
{ time(&uhrzeit);
aktuhrzeit = localtime(&uhrzeit);
strftime(buff1,80,"%d.%m.%Y %H:%M:%S",aktuhrzeit);
puts(buff1);
}
}
...

Um Mitternacht wird das Protokoll in eine mySQL-Datenbank übertragen, dort auf Verbrauch pro Stunde “gestaucht” (genauer brauch ich es wirklich nicht…) und dann im Webbrowser grafisch präsentiert.

Das Ergebnis

Hier z.B. ein Auszug aus dem täglichen Verbrauch im Februar (vom 6.- 9.2. hatte ich leider einen kleinen Serverausfall wg. einer defekten Platte :-( ). Der Screenshot ist vom 7.4., der März ist eigentlich der erste Monat, in dem ohne Ausfall durchgemessen wurde. Ich verbrauche im Jahr ca. 1200 Kubikmeter Gas.

Tja, und da die Aussage über den Gasverbrauch natürlich wenig wert ist, wenn man das nicht ins Verhältnis mit der Aussentemperatur setzt, war das nächste ein PT1000-Temperatursensor am Gameport. Dazu später mehr…

HIer gehts zu den Verbrauchswerten

Aktualisiert ( Donnerstag, 10. September 2009 um 09:57 )
 
Benutzerbewertung: / 5
SchwachPerfekt 

Anmeldung



Wer ist online

Wir haben 6 Gäste online