Gaszähler mittels Fensterkontakt auslesen?

  • Hallo zusammen. Ich überlege, ob es möglich ist, einen Balgen-Gaszähler mittels innogy-Smarthome auszulesen.

    Folgendes habe ich mir überlegt: ich klebe einen Reed-Kontakt unter das Zählwerk, welches bei jeder vollständigen Umdrehung ein Magnetfeld erzeugt und den Reedkontakt schliesst. Die Kabel des Reedkontakts löte ich an einen Fenstersensor, so dass dieser nach einer Umdrehung kurz zu- und dann wieder aufmacht (oder umgekehrt...egal). Damit lege ich dann ein Szenario an, welches beim "schliessen" einen http-request auf meinen Server abfeuert, auf dem ich per php-Script einen Eintrag mit Zeitstempel und dem Wert 1 in eine Datenbank schreibe. Die kann ich dann ja wiederum auslesen.

    Frage 1: könnte das mit dem an einen Fenstersensor angelöteten Reedkontakt funktionieren? Frage 2: gibt's ne bessere Lösung? :)

    Viele Grüsse Ralf

  • Go to Best Answer
  • Hi. Das mit dem abgesetzten Reedkontakt hat funktioniert. Habe ihn ähnlich wie bei Umbau für den wassermelder angelötet. Jede vollständige Umdrehung liefert nun ein geschlossen-Signal. Darüber feuere ich über ein Szenario einen http-Request ab, der einen Eintrag in einer MySQL-Datenbank mit timestamp und dem Wert 0.01 erzeugt. Schön wäre jetzt noch, wenn ich die Werte wieder per DB-Abfrage auslesen könnte und analog zu energy-Control anzeigen. Das scheint aber nicht möglich zu sein oder hat jemand ne Idee?

  • Hi. Das mit dem abgesetzten Reedkontakt hat funktioniert. Habe ihn ähnlich wie b...

    Hi, eventuell ist ja iobroker als System eine Lösung? Denn ein Impuls bedeutet ja nicht immer gleich ein Wert von 0,01 oder so. Meist steht auf dem Zähler drauf wieviel das ist. Ich habe nen reed Kontakt bei mir oben drüber geklebt und er sendet an ein Bus System das dann von iobroker historisiert und ausgewertet wird. So kann ich auch am Ende des Jahres auch mal sehen wo mal eine Spitze war oder den gesamter rauch zum Vorjahr einsehen.

    • Best Answer

    Also: Ich hab's hinbekommen.

    Systemaufbau wie folgt:

    a) Fensterkontakt mit abgesetztem Reedkontakt (Typ MK471B) an den Gaszähler gehängt.

    b) http-Gerät mit einem Szenario eingebunden, welches mit jedem "Schliessen" ein php-Script auf meinem lokal laufenden Webserver triggered, welches einen Eintrag von 0.01 in eine mysql-Datenbank auf meinem Server erzeugt.

    c) Die Datenbanktabelle ist ganz doof aufgebaut:

    1. Spalte = ID mit autoincrement
    2. Spalte = Wert (decimal 17,3)
    3. Spalte = Datum des Verbrauchs (Datetime)
    4. Spalte = Auslesedatum (Datetime)

    Beim Insert wird die ID automatisch hochgezählt, der Wert fix mit 0.01 reingeschrieben, das Datum des Verbrauchs mit dem aktuellen Timestamp belegt und das Auslesedatum auf NULL gesetzt

    d) Da es noch keine Möglichkeit gibt, einen Wert in innogy irgendwo anzeigen zu lassen, habe ich mir mit dem permanent laufenden PRTG-Network Monitor beholfen. Dort habe ich einen sog. EXEXML-Sensor eingebunden, der jede Minute die mysql Tabelle abfragt. Einerseits wird der aktuelle Verbrauchswert (mit der where-Bedingung auf "Auslesedatm = NULL") ausgegeben, andererseits noch zusätzlich der kummulierte Gasverbrauch. Nach dem Auslesen dieser beiden Werte wird das Feld "Auslesedatum" wiederum mit dem aktuellen timestamp upgedatet.

    So sieht die Tabelle aus:

    Code
      CREATE TABLE `gasverbrauch` (  `idgasverbrauch` int(11) NOT NULL AUTO_INCREMENT,  `datum` datetime DEFAULT NULL,  `wert` decimal(17,3) DEFAULT NULL,  `ausgelesen` datetime DEFAULT NULL,  PRIMARY KEY (`idgasverbrauch`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;@@@WCF_PRE_LINEBREAK@@@

    Das ist der insert, der durch den http-request ausgelöst wird:

    Code
    insert into gasverbrauch (idgasverbrauch, datum, wert, ausgelesen) values (NULL, now(), 0.010, NULL);@@@WCF_PRE_LINEBREAK@@@

    Und das sind die statements, die beim Auslesen abgefeuert werden (die XML-Struktur ist von PRTG so vorgegeben, dass der XML-Sensor was damit anfangen kann; aus Faulheit habe ich diese Struktur gleich mit in den select eingebaut)::

    Code
    select CONCAT('<prtg><result><channel>Gasverbrauch</channel><float>1</float><value>' , coalesce(sum(wert),0)  ,'</value></result>') as '' from gasverbrauch where ausgelesen is null; select CONCAT('<result><channel>Gasverbrauch kumuliert</channel><float>1</float><value>' , coalesce(sum(wert),0) ,'</value></result></prtg>') as '' from gasverbrauch;update gasverbrauch set ausgelesen = now() where ausgelesen is null;@@@WCF_PRE_LINEBREAK@@@

    Vielleicht hilft das ja dem ein oder anderen. Jetzt muss es nur noch kälter werden, damit ich das ganze dann auch im Livebetrieb sehen kann :)

    Gruss Ralf

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!