Apropos Gasboykott – wie hoch ist eigentlich mein Gasverbrauch?

Den Gasverbrauch zu reduzieren wäre nun auch aus aktuellen politischen Gründen sinnvoll. Allerdings müsste man dafür den Verbrauch verstehen und nicht nur einmal im Jahr ablesen…

Katapult auf Twitter https://twitter.com/Katapultmagazin/status/1502327030150533125

Nachdem es mit etwas Computerkenntnissen möglich ist, einen Stromzähler mit einem Raspberry PI auszulesen, müsste die Methode auch beim Gaszähler funktionieren. Die “Gasuhr” funktioniert dabei so, dass zwei Balgen wechselseitig gefüllt werden und die Füllung einer Kammer über eine Kurbelmechanik ein Zählrad antreibt.

 

Auf dem vorletzten Zählrad des BK-G4 Zählers sitzt ein Magnet. Damit können im Prinzip über ein Reedschalter die Umdrehungen ausgelesen werden. Nach diversen Foreneinträgen funktioniert das allerdings nicht besonders zuverlässig. Magnetfeldchips sind universeller, da sie in allen Raumrichtungen das Feld messen. Ich habe daher einen zweiten Pi Zero WH besorgt (15€)  an den ich über den I2C Bus (QWiic pHat 6€) ein Magnetometer MLX90393 (15€) angeschlossen habe . Die Idee stammt von kompf.de wobei ich allerdings Hard- und Software modifizieren musste, da es die dort benutzte Hardware nicht mehr gibt und ich auch die Round Robin Datenbank Lösung zu kompliziert fand.

Pi Zero WH, QWiic pHat und Magnetometer MLX90393 an einem elster BK-G4M provisorisch befestigt. Später soll das Case mit Klettband befestigt werden.

Die Idee ist jedenfalls gleich, jede Sekunde das Magnetfeld zu bestimmen.  Das IC2 Protokoll  wird softwaremässig von Python unterstützt, während es mit PHP nur ansatzmässig funktioniert..

import time
import math
import csv
from datetime import date
import smbus
bus = smbus.SMBus(1)
out_file = open('/home/pi/www/mag.log', 'a+')
tsv_writer = csv.writer(out_file, delimiter='\t')
while True:
    config = [0x00, 0x5C, 0x00]
    bus.write_i2c_block_data(0x0C, 0x60, config)
    data = bus.read_byte(0x0C)
    config = [0x02, 0xB4, 0x08]
    bus.write_i2c_block_data(0x0C, 0x60, config)
    data = bus.read_byte(0x0C)
    bus.write_byte(0x0C, 0x3E)
    data = bus.read_byte(0x0C)
    time.sleep(1)
    data = bus.read_i2c_block_data(0x0C, 0x4E, 7)
    try:
        xMag = data[1] * 256 + data[2]
        if xMag>32767:
            xMag -= 65536
        yMag = data[3] * 256 + data[4]
        if yMag>32767:
            yMag -= 65536
        zMag = data[5] * 256 + data[6]
        if zMag>32767:
            zMag -= 65536
        F = round(math.sqrt( xMag**2 + yMag**2 + zMag**2 ),1)
        dt = time.strftime('%Y-%m-%d %H:%M:%S')
        tsv_writer.writerow([dt,xMag,yMag,zMag,F])
    except Exception as e:
        print(e)
out_file.close()
Die d3.js Grafik zeigt kurzfristige Umdrehungen des Zählrades um 11:00 und 13:00 am Gasherd (die Heizung war ausgestellt). Dazu gibt es längere Aktivität um 14:30, 19:00 und 6:00 durch den Warmwasserboiler. Warum sich die Null-Linie so sehr verschiebt weiss ich nicht, vermutlich weil das Zählrad in unterschiedlichen Positionen stehen bleibt.
Die letzte Aktion in höherer Auflösung zeigt exakt definierbare Nulll-Linien Durchgänge die den einzelnen Zählradumdrehungen entsprechen.

Bei jedem Aufruf des eigentlichen Verbrauchs werden die sinusartigen Änderungen der Feldstärke nun als Impulse gezählt, in eine neue Datei geschrieben und die bisherigen Messdaten des Magnetfelds überschrieben.

$file = file("mag.log");
$i=0;
$last=0;
$upstart=0;
$out="";
foreach($file as $line){
  $l = preg_split("/\t+/", substr($line,0,-1));
  $l[4] = number_format( floatval($l[4]), 3,".","" );
  if ($l[4]>$last+100 & $upstart==0) {
    $i++;
    $upstart=$l[4];
    $out .= $l[0].PHP_EOL;
  }
  if ($l[4]<$upstart) {
    $upstart=0;
  }
  $last=$l[4];
}
file_put_contents("gas.log",$out,FILE_APPEND);
unlink("mag.log");
Gasverbrauch. 1 Einheiten entspricht (wie auch auf dem Zähler aufgedruckt) 0,01 m3. Die höchsten Anstiege kommen über den Wasserboiler der nur zwischen 6:00 und 20:00 anspringen kann. A, B, C, D ist dabei Boiler Erhaltungstemperatur auf 45 Grad ohne Entnahme, E Inbetriebnahme der Heizung nachdem die RT bei 17o lag. F Heizung und Boiler mit Entnahme.

Funktioniert perfekt, nur ein Problem hat sich dabei ziemlich schnell herausgestellt: Ich bekomme mit der Messung immer nur relative Werte, nicht absolute wie an am Wechselrichter oder am Stromzähler. Ein Stromausfall heisst dabei Datenverlust wobei auch immer der Ausgangswert korrigiert werden muss.

Was sagen uns aber nun die Daten? Den Gasverbrauch durch abgesenkte Raumtemperatur auf 18 Grad zu optimieren, ist nicht allzu schwer. Verblüffend war für mich der hohe Gasverbrauch um 150 l Wasser ständig heiss zu halten bzw regelmässig furch das Haus zu pumpen was ca 1/3 meines Verbrauchs ausmacht, Die Legionellen Story müsste man mal genauer ansehen ob sie wirklich auch für Ein- oder Zweifamilienhäuser so gültig ist…

Es sieht danach aus, dass der Boiler besser mit einer elektrischen Zusatzheizstab betrieben wird, der bei Stromüberschuss anschaltet, der Warmwasserkessel ist ansonsten gut gedämmt. Vielleicht ist auch ein Zirkulationsregler sinnvoll, der nach dem Speicher in die Warmwasserleitung eingebaut wird. Er reagiert auf das Öffnen eines Warmwasserhahnes, setzt kurzzeitig die Zirkulationspumpe in Betrieb, die nach  2 Minuten warmes Wasser liefert.