Gaszähler mit Reedrelais

Gaszähler Verbrauch erfassen mit FHEM und Raspberry GPIO

Heute will ich euch kurz und einfach zeigen wie Ihr euren Gasverbrauch mit FHEM erfassen könnt.

Ein paar Voraussetzungen müssen dafür erfüllt sein:

  1. FHEM muss auf einem RaspberryPI laufen
  2. Der Gaszähler gibt Impulse rauß (Wie man das erkennt, kommt gleich)
  3. Man kann/will ein Kabel vom Raspberry zum Gaszähler verlegen
  4. Ein wenig Bastelgeschick

Zuerst solltet ihr schauen ob der Gaszähler überhaupt Impulse ausgibt. Meist ist dies an einer kleinen Aufschrift unterhalb des Zählers zu sehen. Dort sollte dann in etwa stehen „1 imp = 0,01m3″

Impuls Häufigkeit
Impuls Häufigkeit

 

Der Gaszähler gibt den Impuls über einen Magneten im Zählwerk aus. Also immer wenn 10 Liter Gas verbraucht wurden gibt es einen Impuls. 1 m3 Gas sind dementsprechend 100 Impulse, oder bei meinem Anbieter derzeit auch ca. 77 Cent… 🙂

Mit einem Reedrelais kann man die Impulse abgreifen. Dafür ist meistens irgendwo im Gehäuse eine Einbuchtung in der man das Reedrelais einkleben kann. (Bitte so kleben das es Rückstandsfrei wieder entfernbar ist! Der Gaszähler ist nicht euer Eigentum!) Ich habe dazu Panzertape Heißkleber verwendet.

Als Reedrelais verwende ich diesen:

Meder MK14-1A66B
Meder MK14-1A66B

TIPP: Um zu überprüfen ob der Reedkontakt richtig sitzt und bei der Umdrehung schließt, kann man an die beiden offenen Enden einfach ein Multimeter anschließen und dieses auf Durchgangsprüfung stellen. Mit jeder Umdrehung des Zählers muss das Multimeter nun einen Durchgang anzeigen.

 

Gaszähler mit Reedrelais
Gaszähler mit Reedrelais

 

Nun muss das eine Kabelende des Reedrelais mit dem GPIO Port des Raspberry verbunden werden. Ich nutze für den Gaszähler GPIO23. GPIO23 ist PIN 16 bei der B Revision des PI.

Das andere Kabelende geht an GND (Masse). Dies ist PIN 6 bei der B Revision.

GPIO Ports des RaspberryPI
GPIO Ports des RaspberryPI

Zieht das Reedrelais nun an, bekommt der Raspberry über den GPIO einen Impuls.

 

Soweit die technische Seite zum Herstellen der Verbindung. Nun folgt der Softwareteil.

 

Der PI bzw. das Linux System muss wie in der FHEM Reference hier beschrieben vorbereitet werden.

Wir sind auf der Shell des PI eingeloggt. (Lokal oder per SSH spielt keine Rolle)

Der Benutzer „fhem“ muss der Gruppe „gpio“ hinzugefügt werden, damit FHEM später auch Zugriff auf die GPIO Ports hat.

 

Da wir später ein bestimmtes Attribute setzen wollen, brauchen wir noch wiringPi. Das bekommen wir durch folgende Kommandos:

 

Bei älteren Linux Distributionen müssen außerdem die Rechte korrekt gesetzt werden. Dies muss bei jedem Start des System passieren. Fügt dazu einfach in der /etc/rc.local folgende Zeilen hinzu.

 

Durch ein abschließendes

beenden wir unsere Arbeit in der Konsole und widmen uns FHEM.

 

In FHEM müssen wir zuerst den GPIO Port als Device definieren. Wir verwenden GPIO Port 23.

Das Device wird zuerst mit dem State ??? angelegt. Dieser State muss sich nach der ersten Umdrehung des Zählers verändern (Kurz auf ON danach auf OFF) Tut er das nicht, fehlen dem Linux Benutzer „fhem wahrscheinlich die Zugriffsrechte auf die GPIO-Ports. Löst das Rechte Problem und kontrolliert ob Ihr die Schritte in der Shell korrekt durchgeführt habt.

So muss der funktionierende Port aussehen
So muss der funktionierende Port aussehen

 

Danach geht es weiter mit dem Modul „HourCounter“. HourCounter ist ein mächtiges Modul zum Zählen verschiedener Zustände. Es werden auch Pausen zwischen den Zuständen gezählt. Wir wollen erstmal nur zählen um den Gasverbrauch zu plotten.

Das Device „Gasverbrauch“ muss nun mit jeder Umdrehung des Gaszählers seinen State um 1 erhöhen.

HouerCounter hat schon ein wenig was gezählt
HouerCounter hat schon ein wenig was gezählt

 

Als nächstes erstellen wir eine LogFile um den Verbrauch aufzuzeichnen. Ich speichere meine Logfiles immer Monatsweise. Außerdem reichen uns hier die Readings „countsOverall“  und „countsPerDay“ aus dem HourCounter.

* Alles in eine Zeile!

 

Sobald ein paar Daten im Log stehen, können wir einen SVG Plot erstellen. So kann es aussehen:

Gasverbrauch Plot
Gasverbrauch Plot

 

Zum Abschluss noch 3 Tipps:

  1. Mit „set Gasverbrauch countsOverall 374317″ könnt ihr den aktuellen Zählerstand eingeben. Dies würde einem realen Zählerstand von 3743,17 m3 entsprechen.
  2. Mit „addLog“ lassen sich Plot Abrisse vermeiden, dadurch sieht es später schöner aus. Wie das funktioniert, könnt Ihr hier nachlesen.
  3. Mit folgendem kleinen Notify könnt ihr euch den aktuellen Verbrauch in m3/Std. in einen Dummy schreiben lassen.

Zuerst muss der Dummy definiert werden:

Danach das Notify:

Der Dummy heißt dann GasverbrauchStd und zeigt den aktuellen Verbrauch an. Wenn der Zähler aufhört sich zu drehen, wird der Verbrauch auf 0 gesetzt. Das ganze lässt sich natürlich auch loggen und anschließend plotten.

Damit der Dummy das Logfile nicht mit Einträgen zuspammt, bitte noch folgenden Befehl in der FHEM Eingabezeile ausführen:

 

Hier noch ein kurzes Video um auch den Einsteigern zu zeigen wie man Dummys konfiguriert und dort dann Werte schreiben lässt.

Ich hoffe Euch hat dieser Beitrag gefallen und Ihr könnt etwas damit anfangen. Natürlich würde ich mich auch über ein kleines Feedback in den Kommentaren freuen!

 

 

VN:F [1.9.22_1171]
Rating: 4.6/5 (23 votes cast)
Gaszähler Verbrauch erfassen mit FHEM und Raspberry GPIO, 4.6 out of 5 based on 23 ratings

211 Kommentare

  1. Hallo, danke für die Anleitung. Ich habe eigentlich auch fast alles zum Laufen bekommen. Nur das Notify will irgendwie nicht auslösen. Im Log steht nichts. Ich habe auch die Leerzeichen am Ende der Zeilen überprüft. Gibt es da noch irgendeinen Trick, den ich nicht beachtet habe? Im Event Monitor kommen auch alle Daten brav an:

    2017-11-29 09:40:05 HourCounter Gasverbrauch countsPerDay: 387
    2017-11-29 09:40:05 HourCounter Gasverbrauch countsOverall: 28147
    2017-11-29 09:40:05 HourCounter Gasverbrauch pulseTimeIncrement: 6
    2017-11-29 09:40:05 HourCounter Gasverbrauch pulseTimeEdge: 6
    2017-11-29 09:40:05 HourCounter Gasverbrauch pulseTimePerDay: 5051
    2017-11-29 09:40:05 HourCounter Gasverbrauch pulseTimeOverall: 6847
    2017-11-29 09:40:05 HourCounter Gasverbrauch pauseTimeIncrement: 0
    2017-11-29 09:40:05 HourCounter Gasverbrauch pauseTimeEdge: 493
    2017-11-29 09:40:05 HourCounter Gasverbrauch pauseTimePerDay: 29647
    2017-11-29 09:40:05 HourCounter Gasverbrauch pauseTimeOverall: 39377
    2017-11-29 09:40:05 HourCounter Gasverbrauch value: 0
    2017-11-29 09:40:05 HourCounter Gasverbrauch 387
    2017-11-29 09:40:05 HourCounter Gasverbrauch tickUpdated: 57
    2017-11-29 09:40:05 HourCounter Gasverbrauch tickChanged: 3
    2017-11-29 09:40:05 RPI_GPIO GPIOGaszaehler Pinlevel: low
    2017-11-29 09:40:05 RPI_GPIO GPIOGaszaehler off
    2017-11-29 09:40:05 RPI_GPIO GPIOGaszaehler Longpress: off

    Bin über jeden Ratschlag dankbar.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Kannst du bitte einmal den Inhalt deines Notify posten?
      EDIT: Zu spät gesehen, dass sich dein Problem durch einen Neustart behoben hat. 😉

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  2. Hallo 🙂

    Leider gibt es diesen Sensor aus dem Beitrag nicht mehr bei Conrad. Nur noch die „C“ Version. Welche Alternative gibt es und funktioniert?

    Vielen Dank!

    VA:F [1.9.22_1171]
    Rating: +1 (from 1 vote)
  3. Hallo,
    grundsätzlich zählt das System meinen Gasverbrauch. Danke für die sehr tolle Anleitung!

    Leider werden bei mir nicht immer alle Impulse erfasst. Es fehlen hin und wieder mal welche. Gerade in den Sommermonaten, wo nur sehr selten Gas verbraucht wurde, sind diese wenigen Impulse nicht erfasst worden.
    Hat hier evtl. jemand eine Idee warum das sein könnte?
    Mein Reed Kontakt: MK04-1A66B-500W (passt ohne Hilfsmittel wunderbar in die Öffnung)

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hi Manuel
      probiere doch mal ob du das Reedrelais zuverlässig mit z.B. einem Kühlschrankmagneten schalten kannst. Wie lang ist die Zuleitung vom Reedrelais zum Raspberry?

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
    2. Hallo,

      bisher hat meine Gaszählererfassung super funktioniert.
      Vor kurzen hatten wir einen Stromausfall, dadurch ist die Erfassung durcheinandergekommen.
      Es wurde ein Wert als neue Grundlage genommen, der falsch ist.

      2017-11-02_13:20:52 Gasverbrauch countsPerDay: 270
      2017-11-02_13:20:52 Gasverbrauch countsOverall: 854090 —-richtiger Wert—-
      2017-11-02_13:26:32 Gasverbrauch countsPerDay: 407
      2017-11-02_13:26:32 Gasverbrauch countsOverall: 830201 —– falscher Wert nach Ausfall—–

      Kann man jemand helfen, das wieder zu korrigieren?

      Danke

      Homerunner

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hi Sven!

        Führe mal folgenden Befehl in der FHEM Kommandozeile aus:

        set Gasverbrauch countsOverall 854090

        Damit setzt du den countsOverall auf den bestimmten Wert!

        VN:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Hallo zusammen,
          ich würde gern ein paar Auswertungen haben, weiß aber leider nicht wie das geht. Wie kann man sich die Tages-,Wochen-,Monats-und Jahresverbräuche darstellen lassen? Die Werte sind ja im Logfile und auch unter „Gasverbrauch“ vorhanden. Kann mir einer helfen, das zu programmieren?

          Danke
          Sven

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
  4. Hallo,

    zuerst einmal herzlichen Dank für die tolle Beschreibung, wie mit einfachen Mitteln eine Ablesung stattfinden kann. Ich habe mich in den letzten Tagen auch daran versucht und aber gänzlich daran gescheitert.
    Problem ist, dass die Werte in Fhem nicht angezeigt werden. Zwischen Gaszähler und Raspi 3 sind ca. 10m Strecke zu überwinden. Mit dem Multimeter können am Raspi aber Signale empfangen werden nach jeder Umdrehung des Zählers.

    Die Anzeige in FHEM ist „GPIOGaszaehler ???“. Ich dachte dabei sofort an ein Rechteproblem. Als Betriebssystem verwende ich „Jessie“. Dort gibt es die oben beschriebene Verzeichnisstruktur nicht:
    ————-
    echo 23 > /sys/class/gpio/export
    chown -R fhem:root /sys/devices/virtual/gpio/*
    chown -R fhem:root /sys/class/gpio/*
    ——-
    Ich habe schon verschiedene GPIO Ports versucht. 23 ging nicht, aktuelle steckt der PIN auf GPIO29 (Pin 40 und 34GND). Die Konfiguration wurde entsprechend den richtigen GPIOs wiederholt.

    Es wäre schön, wenn jemand eine Idee/Anregung für mich hätte.
    Besten Dank schon vorab.

    Grüße,
    Alex

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  5. Hallo an alle Gasverbrauchszähler,

    ich bin leider programmiermässig leider nicht gut aufgestellt.
    Ich möchte gern eine Auflistung der Tages-, Wochen-, Monats- und Jahresverbrauch angezeigt bekommen. In dem obigen Video im Livebetrieb war so etwas zu sehen.
    Ich habe soweit alles nach der Anleitung gemacht, nichts an den Daten geändert. Kann mir jemand ein Script zur Verfügung stellen, um es bei FHEM einzubinden?
    Wäre echt super

    Danke Sven

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  6. Hallo,

    ich binde gerade den ersten meiner s0 Zähler an.
    Per SSH sehe ich in WiringPi die eingehenden Impulse.

    In der Demo-Datei isr.c habe ich PIN 9 definiert, physikalisch ist das PIN 5.

    Wenn ich deiner Anleitung folge, nehme ich GPIO 3 – in FHEM kommt aber nichts an. Was mache ich falsch?

    Du nimmst in WiringPi keine Einstellungen vor?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Nein, Wiringpi muss nur vorhanden und installiert sein. Pin5 kann auch als SCL konfiguriert sein. Der einfachheit halber würde ich einen reinen GPIO Port wählen (17,27,22,23,24,25)

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Danke, hat geklappt! Jetzt noch von 800 Impulsen auf kWh umrechnen, auf Azure speichern und dann plotten 🙂

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
      2. Hallo, ich will ja meinen s0-Stromzähler auslesen, aber irgendwie stimmen die Werte nicht.
        Der Zähler zeigt aktuell 63 Watt an, FHEM behauptet es seien knapp 28.

        So sieht mein DEF-Code aus:

        GPIO_Zaehler_Lueftung {
        my $Impuls_Zaehler_Lueftung=ReadingsVal(„Verbrauch_Lueftung“,“pauseTimeEdge“,“0″)+ReadingsVal(„Verbrauch_Lueftung“,“pulseTimeEdge“,“0″);
        my $Verbrauch_Lueftung_Strom_pro_Stunde=36/$Impuls_Zaehler_Lueftung;
        my $Verbrauch_Lueftung_Strom_pro_Stunde_gerundet=int(2000 * $Verbrauch_Lueftung_Strom_pro_Stunde + 0.5) / 100;

        fhem(„set Verbrauch_Lueftung_pro_Stunde $Verbrauch_Lueftung_Strom_pro_Stunde_gerundet“);;
        fhem(„defmod tmp_time_Strom_Lueftung at +00:02:00 set Verbrauch_Lueftung_pro_Stunde 0“);;
        }

        Der Zähler liefert 2000 Impulse pro kWh.

        Was ist denn hier falsch? Danke für deine Hilfe!

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Hallo Peter, sorry für die späte Rückmeldung.
          Deaktiviere den GPIO mal innerhalb von FHEM und schau dir den GPIO Port über SSH an.
          Werden alle Impulse zuverlässig erfasst? Bei sehr niedrigem Verbrauch von < 100 Watt würde ich nicht mehr auf die Genauigkeit vertrauen. Wird dort auch nur ein Impuls nicht erfasst, weicht der gemessene Verbrauch extrem ab.

          VN:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
          1. Sorry, wie geht das genau? Bin Einsteiger… Hm, die Lüftung zieht auf jeden Fall unter 100 Watt, da läuft also wenig auf. Die Wärmepumpe ist im Sommer auch nur im Standby, da passiert auch nicht viel. Gibt es eine genauere Möglichkeit?

            VA:F [1.9.22_1171]
            Rating: 0 (from 0 votes)
            1. Meines Wissens wirst du das bei so einem geringen Verbrauch nicht genauer hinbekommen. Eine Möglichkeit wäre die Erfassung mit Homematic zu machen. Der Sensor liefert direkt einen errechneten Wert in W/h zurück und protokolliert den Gesamtverbrauch.

              VN:F [1.9.22_1171]
              Rating: 0 (from 0 votes)
  7. Hallo super Seite hab mir schon viele Anregungen geholt,
    komme aber irgendwie mit dem Gaszähler nicht weiter.
    Es wird zu viel gezählt, hab schon verschieden Einstellungen durch probiert, aber kein Erfolg. Und auch die Sache mit dem Notify funktioniert nicht, im Dummy werden zwar Werte angezeigt aber in der Log stehen jede menge Fehler Meldungen.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  8. Habe mit Begeisterung die Anleitung ausprobiert. Alles super!
    Zwei Probleme habe ich noch:
    1. Der Gesamtverbrauch wird bei mir nicht mit der richtigen Dezimalstelle angezeigt. Anstatt 3511,17 habe ich 351117. Auch beim Setzen des Wertes wenn ich ich wie in der Anleitung 351117 eintippe zeigt er 351117 an. Nicht mit der entsprechenden Dezimalstelle wie in der Anleitung beschrieben.
    2. GPIOGaszähler steht bei mir auf on und bei jeden Count geht er kurz auf off.
    Wäre nett wenn ihr einem nicht Softwareentwickler helfen könntet, so dass ich es versteht. LOL

    Vielen Dank

    VA:F [1.9.22_1171]
    Rating: -1 (from 1 vote)
    1. Zu 2. Probiere mal attr GPIOGaszaehler active_low no
      Zu 1. Der Gesamtverbrauch wird ja nicht als echter Verbrauch vom Hourcounter angezeigt, sondern als „gezählte Umdrehungen“ des Gaszählers. Ist lediglich ein Schönheitsfehler. Beheben könnte man dies, indem man den State vom Hourcounter durch 100 dividiert und in einen Dummy schreiben lässt.

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  9. Hallo und danke für die super Anleitung!
    Leider hab ich ncoh probleme mit der Berechnung des Stundenverbrauchs.
    Bekomme immer folgende Nachricht im LogFile:
    GasverbrauchStdNoti return value: Illegal division by zero at (eval 100925) line 4.
    Hab die definition oben 1:1 rauskopiert. Hast du einen Tip wo ich suchen kann?

    VA:F [1.9.22_1171]
    Rating: +1 (from 3 votes)
    1. Hallo Dennis,

      ich habe den Code minimal überarbeitet und setze ihn exakt so bei mir im Live-System ein.

      Bitte oben aus dem Beitrag kopieren oder hier aus dem Comment:

      GPIOGaszaehler {

      my $GasUmlaufzeit=ReadingsVal("Gasverbrauch","pauseTimeEdge","0")+ReadingsVal("Gasverbrauch","pulseTimeEdge","0");
      my $GasProStd=36/$GasUmlaufzeit;
      my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;

      fhem("set GasverbrauchStd $GasProStdRounded");;
      fhem("defmod tmp_time_gas at +00:02:00 set GasverbrauchStd 0");;
      }

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  10. Hallo,
    vielen Dank erst einmal für diesen super Blog. Läuft bei mir super. Nur bekomme ich das nicht gebacken, mit dem Stundenverbrauch im Plot.
    Wäre echt dankbar für eine kurze Anleitung.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  11. du schreibst: „Der Dummy heißt dann GasverbrauchStd und zeigt den aktuellen Verbrauch an. Wenn der Zähler aufhört sich zu drehen, wird der Verbrauch auf 0 gesetzt. Das ganze lässt sich natürlich auch loggen und anschließend plotten.“

    Kannst du bitte noch kurz dazu schreiben wie ich das loggen kann?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. hab es hinbekommen.
      Im Logfile selber kann man einfach den neuen Dummywert dem Logfile zuodnen 🙂 Danke für die Anleitung.

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  12. Hallo,
    ich habe eine Frage zur Anbindung des GPIOs

    In deiner Anleitung schreibst du:

    Bei älteren Linux Distributionen müssen außerdem die Rechte korrekt gesetzt werden. Dies muss bei jedem Start des System passieren. Fügt dazu einfach in der /etc/rc.local folgende Zeilen hinzu.

    echo 23 > /sys/class/gpio/export
    chown -R fhem:root /sys/devices/virtual/gpio/*
    chown -R fhem:root /sys/class/gpio/*

    Wenn ich einen weiteren Gaszähler über GPIO 24 auswerden möchte, muss ich dann einfach in der rc.local eine zusätzliche Zeile

    echo 24 > /sys/class/gpio/export hinzufügen?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  13. Ich Brauch wieder mal Hilfe 🙁
    Hab mein System neu aufsetzen müssen und hab mir mein fhem Backup draufgespielt.
    Soweit alles wieder da, nur fehlt der Zähler.. wenn ich define GPIOGaszaehler RPI_GPIO 23 eingebe kommt: failed to export pin gpio23
    Fhem ist der Gruppe GPOI hinzugefügt und die Zugriffsrechte hab ich auch gesetzt, was mache ich falsch???
    Hoffe jemand hat eine Lösung

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. OK, hab es hinbekommen, hatte vergessen wiring pi zu installieren …
      Aber jetzt hab ich das Problem, dass ich kein Zugriff mehr auf meine Logdateien habe.. kommt immer: Permission denied

      Hat hier jemand eine Lösung

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  14. Hallo Jan,
    Du schreibst:

    Heißt das, nach jedem Stopp auf ? Wenn ja; läuft denn Dein Gaszähler eine Stund durch? Und macht dann erst eine Pause?
    Meine Welle stoppt je nach Vorgabe des Controllers zu unterschiedlichen Zeiten bzw. unterschiedlich lange.
    Ich kann leider noch nicht testen, da ich noch dabei bin den 1. Sack umdrehungsmäßig zu erfassen. (25Kg = ? Umdrehungen)
    Gruß Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  15. Hallo Jan,
    Danke für Deine Nachricht.
    Hardware wurde installiert und angeschlossen.
    Software ist bis zur Anzeige des Zählers in Fhem implementiert und funktioniert vorzüglich.
    Ein dickes Lob!!!!
    Jetzt habe ich etwas Zeit, da der Brennstoffvorrat im Bunker erst mal aufgebraucht werden muss. Dann werde ich den Zähler auf 0 setzen und einen Sack einfüllen. Wenn der verbraucht ist habe ich dazu die Umdrehungen. Verbrauch durch Umdrehungen ergibt dann die Menge pro Umdrehung
    Das dann in Deinen Code eingesetzt, solle meinen Verbrauch abbilden.
    Oder habe ich da etwas nicht bedacht?
    Danke weiter so!!!!
    Gruß Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  16. Hallo,
    Wieder eine super Anleitung. Ich bin auf der suche nach einer Lösung zur Zählung von Umdrehungen die dann über den PI in Fhem ausgegeben werden sollen. So wie Du den Gasverbrauch zählst möchte ich die Umdrehungen einer Welle von einer Förderschnecke zählen. Ich denke das entspricht Deinem Projekt. In meiner Überlegung bin ich auf folgenden Punkt gestoßen der mich nachdenklich macht und der bei Deiner Installation ebenfalls eintreten kann. Was ist wenn kein Gasverbrauch erfolgt und die Scheibe so ungünstig steht, das der Kontakt geschlossen ist und sagen wir erst in einer Stunde wieder geöffnet wird, da dann der Zähler weiter läuft.
    Gruß Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Michael50,

      das hat keinen Einfluss auf die Zählung. Höchstens der aktuelle Verbrauch pro Stunde wird beeinflusst, da die Gesamtzeit bis zum nächsten On länger wird.
      Ansonsten wird eine Umdrehung zuverlässig zwischen einem On-off-on gezählt.

      Gruß
      Jan

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  17. Hallo,

    Danke für den tollen Beitrag.
    Ich kämpfe derzeit noch mit zu vollen logs. Obwohl ich bei beiden dummys das event-on-change – attribut gesetzt habe, werden unnötige Einträg generiert. Das sieht dann z.B. so aus:

    2016-02-16_06:25:41 Gasverbrauch countsPerDay: 260
    2016-02-16_06:25:41 Gasverbrauch countsOverall: 35271
    2016-02-16_06:25:41 GasverbrauchStd 1.2
    2016-02-16_06:25:44 Gasverbrauch countsPerDay: 260
    2016-02-16_06:25:44 Gasverbrauch countsOverall: 35271
    2016-02-16_06:25:56 Gasverbrauch countsPerDay: 260
    2016-02-16_06:25:56 Gasverbrauch countsOverall: 35271
    2016-02-16_06:26:11 Gasverbrauch countsPerDay: 261
    2016-02-16_06:26:11 Gasverbrauch countsOverall: 35272
    2016-02-16_06:26:14 Gasverbrauch countsPerDay: 261
    2016-02-16_06:26:14 Gasverbrauch countsOverall: 35272
    2016-02-16_06:26:36 Gasverbrauch countsPerDay: 261
    2016-02-16_06:26:36 Gasverbrauch countsOverall: 35272
    2016-02-16_06:26:41 Gasverbrauch countsPerDay: 262
    2016-02-16_06:26:41 Gasverbrauch countsOverall: 35273
    2016-02-16_06:26:44 Gasverbrauch countsPerDay: 262
    2016-02-16_06:26:44 Gasverbrauch countsOverall: 35273
    2016-02-16_06:26:47 Gasverbrauch countsPerDay: 262
    2016-02-16_06:26:47 Gasverbrauch countsOverall: 35273
    2016-02-16_06:26:56 Gasverbrauch countsPerDay: 262
    2016-02-16_06:26:56 Gasverbrauch countsOverall: 35273
    2016-02-16_06:27:12 Gasverbrauch countsPerDay: 263
    2016-02-16_06:27:12 Gasverbrauch countsOverall: 35274

    Was ich so garnicht verstehe: Ab und zu läuft es auch weitgehend so wie es sein soll und es werden nur Einträge generiert, wenn sich Werte tatsächlich geändert haben.

    Kann es grundsätzlich auch damit zu tun haben, daß ja das Schließen sowie das Öffnen jeweils ein Ereignis darstellen, daß dann jeweils zu einem Logeintrag führt?

    VA:F [1.9.22_1171]
    Rating: +1 (from 1 vote)
  18. Nach einer Kabelverlängerung habe ich folgendes Problem:
    im Logfile werden die Events erkannt, allerdings zählt der Hourcounter nicht hoch:
    2016-01-31_23:17:40 Gasverbrauch countsPerDay: 6
    2016-01-31_23:17:40 Gasverbrauch countsOverall: 16
    2016-01-31_23:17:40 Gasverbrauch countsPerDay: 6
    2016-01-31_23:17:40 Gasverbrauch countsOverall: 16
    2016-01-31_23:18:19 Gasverbrauch countsPerDay: 6
    2016-01-31_23:18:19 Gasverbrauch countsOverall: 16
    2016-01-31_23:18:31 Gasverbrauch countsPerDay: 6
    2016-01-31_23:18:31 Gasverbrauch countsOverall: 16
    2016-01-31_23:18:50 Gasverbrauch countsPerDay: 6
    2016-01-31_23:18:50 Gasverbrauch countsOverall: 16
    2016-01-31_23:20:04 Gasverbrauch countsPerDay: 6
    2016-01-31_23:20:04 Gasverbrauch countsOverall: 16
    2016-01-31_23:20:04 Gasverbrauch countsPerDay: 6
    2016-01-31_23:20:04 Gasverbrauch countsOverall: 16
    2016-01-31_23:21:57 Gasverbrauch countsPerDay: 6
    2016-01-31_23:21:57 Gasverbrauch countsOverall: 16
    2016-01-31_23:21:59 Gasverbrauch countsPerDay: 6
    2016-01-31_23:21:59 Gasverbrauch countsOverall: 16
    2016-01-31_23:24:57 Gasverbrauch countsPerDay: 6
    2016-01-31_23:24:57 Gasverbrauch countsOverall: 16
    2016-01-31_23:26:16 Gasverbrauch countsPerDay: 6
    2016-01-31_23:26:16 Gasverbrauch countsOverall: 16

    Jemand eine Idee woran das liegt, bzw. wie ich es beheben kann?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  19. Hi,

    Klasse Anleitung.
    ich möchte, statt des GPIO, einen Funkempfänger anschiessen.
    Mit Hilfe eines SIGNALDuinos werte ich das Funksignal aus.
    Dabei sieht das Def des DoIF erstmal so aus:
    ([sduino:&DMSG] =~“u30#6A1″) (set Wohnzimmer_Lampe_Boardlampe on)
    Nun soll statt „Wohnzimmer_Lampe_Boardlampe“ der Gaszähler hochgezählt werderden.
    Hast Du einen Tip?

    Gruß

    Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hi Michael,

      Richte einen Dummy ein und ein DOIF oder Notify.
      Der Dummy wird vom Signalduino ein und wieder ausgeschalten.

      Auf diesen Dummy kannst du dann wie Oben beschrieben, die Werte auslesen.

      Dummy sollte im fhem wiki zu finden sein.

      Gruß Robert

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Ich dachte ich müsste hinter Set nur die Lampe gegen Gaszähler austauschen. Da fehlt mir aber der richtige Name.

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
  20. Hallo wie machst du das Kleine Fenster ( Gas )über dem SVG Plot, und woher kommt der wert 36 und 0,5
    my $GasProStd=36/$GasUmlaufzeit;
    my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;

    Vielen DANK im Voraus

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo zusammen,
      ich habe den Gaszähler nach dieser tollen Anleitung auch installiert. Funktionierte auf Anhieb. Allerdings verwende ich einen IR Reflexkoppler mit nachgeschaltetem Komperator. Damit erkenne ich die ausgefüllte „6“ und erhalte einen Impuls pro 0,01m^3. Über einen Reedkontakt würde ich bei meinem Gaszähler ansonsten nur 0,1,^3 erkennen können. Das gleiche wende ich auch für den Wasserzähler an, hier erhalte ich einen Impuls pro Liter.
      Über die 36 im notify bin ich dann auch gestolpert. Der Dummy soll ja den Wert m^3/Stunde erhalten. Dazu muss die Zeit eines Impulses auf eine Stunde hoch gerechnet werden, also 3600/(ImpulsZeit). Dann noch durch 100 teilen um auf m^3 zu kommen. Das kombiniert ergibt die 36. Ich rechne mit 3600 und konvertiere bei der Anzeige des Dummys. Damit erhalte ich gleiche Einheiten beim state des HourCounter und beim Dummy.
      Die 0.5 ist zum runden auf den nächst höheren Integer Wert.
      Grüße
      Ralf

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hallo Ralf,
        die Lösung mit. dem IR Reflexkoppler finde ich Klasse.
        Gibt es darüber einen Stromlaufplan oder Bauanleitung?
        Ein Foto wäre auch hilfreich.
        Klaus aus Köln

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Hallo Klaus,
          ja, gibt es. Die Schaltung ist aber nur handgezeichnet, kann ich Einscannen. Ich muss nur schauen, wo ich die ablege damit Du drauf zugreifen kannst.
          Grüße
          Ralf

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
  21. Hat das ganze schon mal jemand mit einem Arduino und Firmata nachgebaut?
    Habt Ihr hiermit prellen von Reed Kontakten?

    Gruß Robert

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Robert,

      ich habe mit Firmata & Arduino bisher kein Prellen des Redekontaktes bemerkt. Aber vielleicht liegt das am sampling-intervall von 350ms.
      Gruß
      Uli

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Ich hab das ganze vorsichthalber per Hardware Entprellt.

        Bin aber am überlegen ob ich auf Arducounter wechsel.
        Das hätte den Vorteil, wenn man FHEM am neustarten ist, dass immer noch gezählt wird.

        Bin mir da aber nicht sicher, muss ich mal testweise aufbauen.

        Gruß Robert

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
  22. Hi,
    Danke für die Anleitung, klappt hervorragend, nun folgendes Problem:

    Ich möchte von einem momentan laufenden System auf ein neues umziehen, in dem die FHEM konfiguration genau gleich ist. Wie kann ich die gesammelten Daten importieren, sodass auch die svg plots die alten daten miteinbeziehen?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  23. Mal eine Frage, welche mich nun seit Wochen neben andren Projekten beschäftigt. Ich würde die Daten gerne weiter Auswerten. Allerdings habe ich, auch mit adaptierten Beispielen aus dem FHEM Forum, noch nichts realisieren können.

    Raffe das an machen Stellen anscheinend nicht ^^ <– bin aber auch nicht vom Fach. Evtl. kann einer der schon was weiter ist mal einen Schritt vorstellen um ein wenig anzuschieben.

    Ziel wäre Tages, Wochen, Monats, Jahresverbrauch und eine Kostenberechnung.

    Danke und Gruß

    VA:F [1.9.22_1171]
    Rating: 0 (from 2 votes)
    1. Ich würde entweder das RRD-tool benutzen oder würde mir mithilfe der gpio library nur diese Events rausschreiben und dann mit Python (miniconda package für raspbian) ein Skript schreiben. Ob es auch direkt mit Fhem geht, weiss ich nicht.

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  24. Kurze Frage, ich habe alles nach Anleitung gemacht… Nur leider sehen die Events so aus:

    2016-01-01 15:52:21 RPI_GPIO Keller_Gaszaehler Pinlevel: low
    2016-01-01 15:52:21 RPI_GPIO Keller_Gaszaehler off
    2016-01-01 15:52:21 RPI_GPIO Keller_Gaszaehler Longpress: off
    2016-01-01 15:52:21 RPI_GPIO Keller_Gaszaehler Pinlevel: low
    2016-01-01 15:52:21 RPI_GPIO Keller_Gaszaehler off
    2016-01-01 15:52:21 RPI_GPIO Keller_Gaszaehler Longpress: off

    Der toggeltostate geht irgendwie nie auf on und somit zählt der HourCounter auch nicht :-/

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Stefan,

      du hast nicht zufällig einen Raspberry Pi 2 oder B+?
      Ich habe heute mein Produktivsystem auf den RPI 2 geupgradet und seitdem auch das Problem das der State auf Off bleibt.

      Gibts ne Lösung die ich oben mit einbauen kann? 😉

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hallo Jan,

        ja ich habe einen B+ und bis jetzt leider noch keine Lösung gefunden an was es liegen kann.
        Evtl. liegt es an den Rechten, da die Einträge in der rc.local nur manchmal greifen und manchmal die active_low dennoch als root:root erstellt wird.
        Habe jetzt unten den Vorschlag der Rechteverwaltung über udev gemacht und seitdem sieht es so aus als würde das mit den Rechten alles stimmen, jedoch bleibt bei mir der State weiterhin auf off.
        Wenn ich eine Lösung habe melde ich mich.

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Könnte dies ein B+ bzw. RPI 2 spezifisches Problem sein? Schließlich haben diese Modelle einen geänderten, bzw. erweiterten GPIO Port. Vor dem Upgrade funktionierte alles ohne Probleme. Ich konnte leider in diesem Zusammenhang auch noch nichts neues recherchieren.

          VN:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
        2. Hallöchen,

          ich hatte vor ca. 1/2 Jahr das selbe Problem. Nach jedem Neustart hat der Raspberry die Rechte der GPIOs wieder auf root:root gesetzt, so dass fhem nicht mehr darauf zugreifen konnte. Ich habe das dann so gelöst, dass ich dem Raspberry mal das neues Raspbian (jessie) verpasst habe. Seit dem funktioniert es einwandfrei. Die Lösung über udev habe ich später im Netz auch gefunden, da war der Drops aber schon gelutscht. Das Systemupgrade war bei mir insofern unkritisch, da ich noch nicht so viel im Fhem konfiguriert hatte. Der Aufwand fürs Neuanlegen hielt sich also in Grenzen und war definitiv geringer, als stundenlang nach workarounds zu suchen.

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
        3. Hallo Mario Cremer,

          ich weiß nicht ob das mit den Rechten das einzige Problem ist. Denn auch wenn ich die Rechte nach dem Neustart manuell anpasse und dann fhem starte bekomme ich keine On – Off Statusänderungen, sondern nur Off-Off wie in meinem obigem logfile.
          Ich denke da gibt es irgendwo ein Problem mit fhem und wiring Pi.

          @Jan: Wenn ich eine Lösung finde, melde ich mich natürlich dann hier wieder.

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
        4. Hallo Stefan und alle anderen mit dem „off-off“ Problem.
          Ich habe heute mal wiring Pi aktualisiert und das Problem ist gegessen.

          In der Shell vom Pi einfach folgendes machen (wenn ihr die ersten Schritte laut meiner Anleitung vollzogen habt)

          cd wiringPi
          git pull origin
          ./build
          sudo reboot

          Seit dem läuft die Verbrauchszählung wieder auf dem Pi2

          VN:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
        5. Hallo Jan,

          danke für den Tipp, aber bei mir sagt er nur, dass die Version aktuell ist :-/ Also leider kein Update für mich.

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
    2. Hi,

      ich betreibe das ganze an einem RPi 2 seit nun über einem halben Jahr… leider logge ich das GPIO Int nicht mit. Was ich euch aber mitgeben kann ich ein Auszug meines Counters:

      DEF GPIOGaszaehler:on GPIOGaszaehler:off
      NAME Gasverbrauch
      NR 28
      NTFY_ORDER 50-Gasverbrauch
      STATE 352
      TYPE HourCounter
      VERSION 1.0.1.2 – 24.12.2014
      CHANGETIME:
      Readings:
      2015-06-18 22:45:30 clearDate 2015-06-18 22:45:30
      2016-01-08 10:51:36 countsOverall 1456274
      2016-01-08 10:51:36 countsPerDay 352
      2016-01-08 10:51:36 pauseTimeEdge 4
      2016-01-08 10:51:36 pauseTimeIncrement 4
      2016-01-08 10:51:36 pauseTimeOverall 13609771
      2016-01-08 10:51:36 pauseTimePerDay 4921
      2016-01-08 10:51:36 pulseTimeEdge 29
      2016-01-08 10:51:36 pulseTimeIncrement 0
      2016-01-08 10:51:36 pulseTimeOverall 3715251
      2016-01-08 10:51:36 pulseTimePerDay 34172
      2016-01-08 10:51:36 state 352
      2016-01-08 10:51:36 tickChanged 469
      2016-01-08 00:00:00 tickDay 1
      2016-01-08 10:00:00 tickHour 19
      2016-01-07 15:59:14 tickMonth 0
      2016-01-08 10:51:36 tickUpdated 71
      2016-01-07 15:59:14 tickWeek 0
      2016-01-07 15:59:14 tickYear 0
      2016-01-08 10:51:36 value 1
      Helper:
      OFF_Regexp GPIOGaszaehler:off
      ON_Regexp GPIOGaszaehler:on
      calledByEvent
      changedTimestamp 2016-01-08 10:51:36
      forceClear
      forceDayChange
      forceHourChange
      forceMonthChange
      forceWeekChange
      forceYearChange
      isFirstRun
      sdRoundHourLast 1452243600
      value 1
      cmdQueue:
      Attributes:
      DbLogExclude .*
      disable 0
      room 3.1_HausAnschluss

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Zeig doch mal bitte dein Device“ GPIOGaszaehler“ und ob du am Linux des Raspberry noch etwas anders gemacht hast.

        VN:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Sorry da stand ich auf dem Schlauch ^^^
          Internals:
          DEF 23
          EXCEPT_FD 13
          NAME GPIOGaszaehler
          NR 27
          RPI_pin 23
          STATE on
          TYPE RPI_GPIO
          CHANGETIME:
          Readings:
          2016-01-08 12:28:14 Longpress on
          2016-01-08 13:01:23 Pinlevel high
          2016-01-08 12:28:13 state on
          Fhem:
          interfaces switch
          Attributes:
          DbLogExclude .*
          active_low yes
          devStateIcon .*:icoHEIZUNG
          direction input
          interrupt both
          pud_resistor up
          room 9.4_GPIO
          toggletostate yes

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
  25. Hallo nisi80, ich habe das gleiche Problem mit dem ständigen Polling. Hast du schon eine Lösung?
    Ich tippe auf meine Kabelverbindung. Ich nutze zwei Adern eines zehn paaringen Kabels, über dem auch mein DSL Anschluss (natürlich ein anderes Paar) läuft. Vielleicht hat es mit der Verbindung zu tun. Wie ist es bei dir?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo wolfdell, ich denke nicht, dass es an der Verkabelung liegt.
      Ich habe auf der Verbindung vom Reed-Kontakt zum Pi keine weiteren benachbarten Leitungen, die ein Signal übertragen. Dabei würde sich ja der Zustand ständig ändern und der Hourcounter immer weiter zählen.
      Eher liegt es meiner Meinung daran, dass der Zustand der GPIOs per Polling abgefragt wird und nicht per Interrupt an FHEM gemeldet wird. Somit wird immer nachgeschaut, ob der Zustand high/low ist, was meiner Meinung nach die erhebliche Last erzeugt (ca. 50%).
      Das zweite Problem der Last ist der Hourcounter, der die Ticks im low-, wie auch im high-Zustand zählt um die Verbräuche auszurechnen. Diese Ticks werden nicht mehr inkrmentiert, wenn man das Attribut event-on-change-reading auf dem GPIO setzt. Dann zählen die Ticks nicht mehr und die Last ist deutlich niedriger, jedoch zählt der Counter dann nicht mehr richtig.
      Das war mit meiner ersten FHEM-Version ohne diese Ticks nicht so, jedoch nach einem Update gab es mehr Funktionen in diesem Modul.

      Hoffe, wir bekommen das Lastproblem in den Griff, ich wollte eigentlich keinen Piv2 mit 4 Kernen kaufen, damit das richtig funktioniert 🙂

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  26. Hallo zusammen,
    das mit dem Gasverbrauch per Redekontakt für wenig Geld hat mich dazu bewegt die Bastelanleitung umzusetzen. Was aber nicht ganz hervorgeht, ist der GPIO auf high oder auf low zu konfigurieren? Ich habe ihn im Moment auf high, und bei RPI_GPIO werden auch die Zustände verändert beim Gasverbrauch. Leider werden bei mir im Gasverbrauch die Umdrehungen nicht in STATE hochgezählt, auch bei countsOverall tut sich nix. Kann mir da jemand einen Denkanstoß geben?

    Gruß Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  27. Hallo allerseits,

    der Gaszähler (und ein auf 3 Phasen erweiterter Stromzähler) läuft auf meinem FHEM mittlerweile seit etlichen Monaten sehr stabil.

    Kurze Frage:
    Gibt es inzwischen eine Lösung für das Problem der „delete tmp_time_gas“-Zeilen im LOG?

    ==> („2015.01.14 19:12:30 3: delete tmp_time_gas : Please define tmp_time_gas first“)

    So langsam würde ich diese überflüssigen Zeilen doch aus meinem Log entfernen wollen… zumal es derer (durch die 3-Phasen-Stromüberwachung) sehr viele Einträge pro Tag gibt.

    In der FHEM reference habe ich leider nichts entdecken können, um ein bereits vorhandenes AT abzufragen.

    Gruß,
    Axel

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo, ich hatte es vor längerer Zeit schon mal gepostet. Hier noch mal meine Lösung, die soweit auch klasse funktioniert und nur noch wenig tmptimegas erzeugt.

      Gasverbrauch:value.* {

      my $GasUmlaufzeit=ReadingsVal(„Gasverbrauch“,“pauseTimeEdge“,“0″)+ReadingsVal(„Gasverbrauch“,“pulseTimeEdge“,“0″);
      my $GasProStd=36/$GasUmlaufzeit;
      my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;

      fhem(„set GasverbrauchStd $GasProStdRounded“);;

      if(defined($defs{‚tmp_time_gas‘})) { fhem „modify tmp_time_gas +00:02:00“ } else
      { fhem „define tmp_time_gas at +00:02:00 set GasverbrauchStd 0“ };;

      }

      Gruß Michael

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hallo Michael,

        tatsächlich, Deine vorige Antwort hatte ich (trotz aufmerksamer Suche) überlesen!
        Habe deine Variante eben versucht zu implementieren, aber die innerhalb dieses Ausdrucks $defs{‚tmp_time_gas‘} verwendeten Anführungszeichen bereiteten mir ein paar Probleme. Mein Browser (Mac Safari) zeigt mir halbe Anführungszeichen unten und oben. Mit Copy&Paste konnte ich diese jedoch nicht verwenden, ich musste 2x das“Hochkomma“ verwenden (‚), ein Zeichen, das sich nochmal von den Deinen unterscheidet.
        Wie auch immer, so scheint es zu gehen. 🙂
        Des Weiteren hat mich gewundert, dass Du hinter den hem-Befehlen innerhalb der IF-Then-Else-Bedingung keine runden Klammern verwendest (so wie bspw. beim hem-Befehl vor dem IF). Scheint aber zu klappen.

        Kurz: TASUSEND DANK! Es scheint so zu funktionieren! :))

        Gruß,
        Axel

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
  28. Vielen Dank für die gute Anleitung.

    Ich habe mich daran gehalten und mit einem Reed-Kontakt für €0,77 einen funktionierenden Gaszähler.

    Leider will das notify zur Ermittlung des pro-h-Verbrauchs nicht richtig funktionieren: Ich lasse ihn plotten und in idle-Phasen (d.h. KEIN Gasverbrauch – das habe ich übrigens in den logs kontrolliert) springt dieser zwischen 0 und 1.

    Ist das so gewollt oder unvermeidlich oder wo könnte der Fehler liegen?

    Vielen Dank & Grüße

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo zusammen,
      ich kämpfe momentan auch noch mit dem stündlich wiederkehrenden Peak beim Stundenverbrauch. Der Hourcounter erzeugt stündlich (einstellbar von 5min bis 60min.) ein Event und aktualisiert die Readings. Dadurch wird stündlich ein Verbrauch simuliert. Da habe ich auch noch keine Lösung gefunden, das zu unterbinden. Hat das schon jemand gelöst?
      Danke und Grüße
      Ralf

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Kann das sein das du das selbe Problem hast wie ich? Mein heizkessel ist von 23-4 Uhr morgens aus. Aber habe seit ca 1-2 Monaten in dieser Zeit readings. Dachte schon ich hab irgendwo ein kleines Leck oder keine Ahnung. Weil in dieser Zeit dürfte ich keine einzigste Umdrehung am Zähler haben.

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Ich denke schon das wir den gleichen Effekt haben. Wie ich schon schrieb, der Hourcounter aktualisiert alle 60 Minuten seine Readings, damit wird das notify getriggert, die Puls-/Pausendauer vom letzten Impuls ausgelesen und damit der Stundenverbrauch berechnet. Man müßte prüfen, ob sich der Verbrauch geändert hat, und nur dann den Stundenverbrauch berechnen. Oder andere Ideen?
          Grüße
          Ralf

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
        2. Hallo Markus,
          erst habe ich über ein event-on-change beim Hourcounter nachgedacht, dann kommt aber über lange Zeit kein Wert mehr und im Plot wird nichts dargestellt. Ein event-min-time führt dann aber auch wieder zu dem erwähnten Effeket. Ich habe nun das notify modifiziert und zumindestens bis jetzt kann ich keine Nachteile festgestellt:
          Gasverbrauch {
          my $GasUmlaufzeit=ReadingsVal(„Gasverbrauch“,“pauseTimeEdge“,“0″)+ReadingsVal(„Gasverbrauch“,“pulseTimeEdge“,“0″);
          my $GasProStd=0;
          if ($GasUmlaufzeit > 0) {$GasProStd=3600/$GasUmlaufzeit;}
          my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;

          fhem(„set d_GasverbrauchStd $GasProStdRounded“);
          if(defined($defs{„tmp_time_gas“})) {
          fhem(„modify tmp_time_gas +00:02:00“);
          } else {
          fhem(„define tmp_time_gas at +00:02:00 set d_GasverbrauchStd 0;; setreading Gasverbrauch pauseTimeEdge 0;;
          setreading Gasverbrauch pulseTimeEdge 0“);
          }
          }
          Wird ein Verbrauch erkannt, wird aus der Pulszeit der Stundenverbrauch berechnet, also wie bisher. Kommt nach 2 min. kein Impuls mehr, wird der Stundenverbrauch auf 0 gesetzt und !zusätzlich! pauseTimeEdge und pulseTimeEdge im Hourcounter. Im notify frage ich dann ab, ob diese Werte 0 sind. Dann bleibt der Stundenverbrauch auch null. Wichtig ist im define des at die doppelten Semikolon damit die nachfolgenden sets auch mit in das at kommen.
          Schau doch mal ob Du damit auch klar kommst.

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
  29. Hallo miteinander,

    vielen Dank für deinen Beitrag, ich habe ihn so wie du es beschrieben hast erfolgreich umgesetzt und kann nun den Gasverbrauch wunderschön aufzeichnen und visualisieren.

    Leider habe ich ein kleines Problem: Der GPIO-Wert wird ca 10 mal pro Sekunde aktualisiert und liefert einen Wert an den Hourcounter, der widerum seine Ticks erhöht, was wir ja brauchen um den Verbrauch pro Stunde zu erfassen.

    Jedoch erzeugt das GPIO-Polling ca 50% CPU-Last und der HourCounter weitere 50%. Somit habe ich enorme Last auf dem Raspi und die FHEM-Seite kommt nur noch recht träge.

    Wenn ich nun die Event-On-Update usw. einrichte, dann wird nicht mehr korrekt gezählt, ich nehme an, dass dann die Ticks nicht mehr korrekt beim HourCounter ankommen.

    Hat jemand von euch auch diese Probleme? Wie kann ich das Verhalten etwas optimieren?

    Vielen Dank!

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  30. Hallo Leute,

    ich verzweifle bald an den Zgriffsrechten für den GPIO.
    die Eintragungen in der /etc/rc.local werden anscheinend völlig ignoriert. Nach jedem Neustart sind die Zugriffsrechte wieder auf root und FHEM meckert, dass er nicht auf active_low zugreifen kann.
    wenn ich die Rechte dann auf der Konsole mit :
    sudo chown -R fhem:root * manuell ändere und einen fhem shutdown mache geht alles und er zählt fleißig drauf los. Echt super —- bis zum nächsten Neustart

    groups fhem ergibt: fhem : dialout tty gpio

    habe auch mal mit „gpio unexport“ das entsprechend gpio-verzeichnis entfernt und nach dem Neustart war Das Verzeichnis wieder da (obwohl ich die Eintragungen in rc.local testweise auskommentiert hatte).

    als ob FHEM es beim Start selber anlegt, sich aber nicht die notwendigen Rechte gibt.
    Irgendwo habe ich anscheinend noch etwas grundsätzliches nicht verstanden.

    Kann jemand helfen?
    Mario

    VA:F [1.9.22_1171]
    Rating: +1 (from 1 vote)
    1. Hatte die gleichen Probleme. Liegt an der neuen WHEEZY-Version. Habe auf die aktuelle Jessie-Version gewechselt. Damit gibt es keine Problem mehr!!!

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
    2. Ich habe von einer anderen Seite folgenden Eintrag in /etc/udev/rules.d/99-gpio.rules übernommen und damit klappt es super:

      SUBSYSTEM==“gpio“, KERNEL==“gpiochip*“, ACTION==“add“, PROGRAM=“/bin/sh -c ‚chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport'“
      SUBSYSTEM==“gpio“, KERNEL==“gpio*“, ACTION==“add“, PROGRAM=“/bin/sh -c ‚chown root:gpio /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value ; chmod 660 /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value'“

      IMHO ist udev eh das bessere Instrument.

      VG
      Olaf

      BTW Vielen Dank für die tolle Beschreibung. Funktioniert mit einem Redekontakt und einem Pi A ganz wunderbar.

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
    1. Moin Jan, die Idee ist nicht schlecht, aber du wirst das read relais nicht in den Zähler bekommen. Also bei meinem Zähler muss das relais ziemlich tief in die dafür vorgesehene Öffnung.
      Ansonsten würde es denke gehen.
      Ich zähle z.b. auch an einer Tür wie oft diese geöffnet wird – und Werte dies mit einen Plot aus. (Fragt nicht warum man das macht..ist halt so 🙂

      Schönen Start in die Woche

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Moin Markus!

        Die Idee läuft seit nun mehr einem Jahr im Dauerbetrieb völlig fehlerfrei.
        Das Relais ist ein recht kleines welches nach genauer Positionierung die Umdrehungen sehr exakt weitergibt.

        VN:F [1.9.22_1171]
        Rating: +1 (from 1 vote)
    2. Hi!

      Das geht auch mit dem Fensterkontakt wunderbar, allerdings wirst du dann ziemlich häufig die Batterien wechseln müssen.
      Alleine heute bis jetzt hat der Zähler bei mir 211 Umdrehungen gemacht, das wären 211 mal Daten die der Fensterkontakt senden müsste.

      Die Idee würde ich verwerfen und ein Kabel verlegen… 😉

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hi Jan!

        Das hatte ich auch schon überlegt. Da müsste man wahrscheinlich den Fensterkontakt mit einem Netzteil verbinden. Für mich auf jeden Fall einfacher als ein Kabel quer durch das Haus in ein anderes Geschoss zu legen… 🙂

        Falls der Fensterkontakt nicht passen sollte (s. Kommentar von Markus), kann man vielleicht mit einem Reed-Kontakt, wie Du ihn verwendest, überbrücken (so wie im Video-Link von mir dargestellt)? Oder gibt es da Inkompatibilitäten z.B. wg. unterschiedlicher Spannung?

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
  31. Würde die Konfiguration für einen Reedschliesskontakt (keine induzierte spannung, sondern schliesskontakt des Stromkreises) an gpio 5 (RPi2) gleich, bzw. folgendermassen aussehen:

    define GPIOGaszaehler RPI_GPIO 5
    attr GPIOGaszaehler direction input
    attr GPIOGaszaehler active_low yes
    attr GPIOGaszaehler interrupt both
    attr GPIOGaszaehler pud_resistor up
    attr GPIOGaszaehler toggletostate yes

    Könnte es ein Problem sein, dass ich gleichzeitig noch ein weiteres Skript auf den selben gpio laufen lasse, das ebenfalls zählt?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  32. Hat jemand das Notify für den Gasverbrauch in Euro und Gasverbrauch KW/h …So wie im Video zu sehen.
    Wäre ganz lieb wenn mir das einer zur Verfügung stellt 🙂

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  33. Kann mir mal bitte jemand sagen wie ich das logfile wieder leere..am besten dass die letzten paar Zeilen stehen bleiben.
    Danke

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  34. Ich habe Probleme eine Bezugsquelle für den Meder MK14-1A66B 500W zu finden. Wo habt ihr das gekauft und was habt ihr incl. Versandkosten dafür bezahlt?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Moin,
      ich habe an meinem Gaszähler (Typ kromschröder BK4 G4) einen Sensor von Conrad: „Reed-Sensor MS-332 PIC MS-332-3 1 Schließer 1 A 200 V/DC/140 V/AC 10 W“ (503544 – 62) á 2,77€. Funktioniert – nach einmaliger, richtiger Positionierung – tadellos.
      Hatte mir auch noch eine Alternative von Reichelt bestellt, aber am Zähler selbst nicht ausprobiert (MK 471B :: Reed-Sensor, 1 Schließer, I=0,5A, Montagelöcher, á 2,95€).
      Gruß,
      Axel

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hallo Axel,
        vielen Dank für deine Antwort. Ich werde diesen Reed-Sensor kaufen. Bei Reichelt gibt’s den nicht mehr, aber bei Conrad und bei Voelkner bin ich fündig geworden.
        Hast du noch einen Tip für mich, wo ich den genau am Gaszähler anbringen muss, d.h. in welcher Einbaulage und Position. Kannst evtl. ein Foto oder eine Skizze posten, falls das technisch möglich ist?
        Ich bin mir nicht sicher, ob ich ein passendes Messgerät habe, um den richtigen Einbau zu verifizieren.
        Ansonsten schom mal herzlichen Dank.

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Hallo Axel,
          hab gerade gesehen, dass du den verbauten Sensor bei Conrad und nicht bei Reichelt gekauft hast – wer lesen kann, ist klar im Vorteil 🙂

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
      2. Hallo Axel,
        danke für das Foto. Ich werde mich dann ans Werk begeben, sobald der Reed-Sensor eintrifft.

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Du musst ein wenig aufpassen beim MK4, wenn unten die Einbuchtung vorhanden ist kommt dort der Reed Sensor rein, wenn diese Einbuchtung nicht vorhanden ist, dann hat er wahrscheinlich keinen Magneten am Zählwerk. Ich glaube das Umstellungsjahr war 1996, bin mir aber nicht mehr sicher.

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
  35. Ich nochmal, komme mit dem Plot nicht so klar. Habe bei gesamt Verbrauch „Gasverbrauch overall“ und bei aktuell „Gasverbrauch perday “ wie habt ihr eure plots eingestellt??? Bringt mir zware eine schöne Grafik, aber lesen kann ich die nicht wirklich gut.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  36. @Heinz.. nochmals danke. Aber steh grad irgendiw auf dem Schlauch was mir das bringt. Weil erstelle ja damit einen neuen dummy?? Im FileLog gibt es unteranderen eine Zeile wo man eine Funktion eintragen kann – möchte das der mir im SVG PLOT die genaue m3 anzeigt. Und nicht wie bisher die 0,01

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. und nochwas, hab nicht gespeichert, und einen restart gemacht, jetzt kommt immer:

      Error messages while initializing FHEM:
      statefile: Please define GasGesamtNotify first
      Please define GasGesamtNotify first
      Please define SVG_FileLog_Gasverbrauch_2 first

      wie bekomm ich die Meldung weg

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  37. Hi, kleiner Tipp… Es handelt sich ja um einen Kontakt, welcher auf Magnet reagiert. Einfach mal einen anderen Magneten nehmen (Kühlschrank, Tafel o.ä.) dann ist das testen nicht so kompliziert. Hast du denn einen Öffner oder Schließer?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  38. Kann mir kaum vorstellen das der Zähler einen weg hat. Ich hab bei meinen unten eine Kappe drauf, die hab ich abgemacht (leider zerbrochen dabei.. aber spielt ja keine Rolle – war schon so wenn mal was ist 🙂 ) dann hab ich das readrelais schön weit hoch. Und mit Isoband festgemacht. Außen am Deckel hatte ich auch keine Impulse empfangen. Vlt hilft dir das

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  39. Super funktioniert alles wie erhofft.
    Kann mir jemand eine Formel geben um den gesamt Verbrauch nicht auf 0,01m3 anzuzeigen, sondern auf 1 m3??

    @Michael, glaube ich kaum, teste doch mal mit nen multimeter, ob bei ner Umdrehungen ein Impuls kommt??

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. define GasGesamtQm dummy
      attr GasGesamtQm room Gas
      define GasGesamtNotify notify Gasverbrauch {my $temp = ReadingsVal(„Gasverbrauch“,“countsOverall“,“0″);;fhem(„set GasverbrauchGesamt $temp“);;my $GasQm=$temp/100;;fhem(„set GasGesamtQm $GasQm“);;}

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  40. Hallo,

    ich bekomme seit ein paar tagen keinerlei Signal mehr. Habe schon einen anderen Reedkontakt versucht. Ohne Erfolg.
    Könnte der Magnet im Zähler defekt sein?

    Gruß,
    Micha

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  41. Hey Christian, dann interessiert dich bestimmt auch die App von thinstuff (RDC). Kannst auch wunderbar von unterwegs auf den Desktop via Dyndns vom Smartphone.
    Hoffe meine Teile kommen morgen langsam mal, am Wochenende wollte ich anfangen mit basteln, kann es kaum erwarten.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  42. Hallo Christian, danke für die Antwort und toll das du soweit bist. Hab eben erstmal Projekt 1 im Angriff einen Touch dran zu machen. Nur Problem das der sich nicht kalibrieren lässt.
    Zum Thema zurück, ich hab zufälliger Weise einen Elster IN-Z61 hier rumliegen. Der ist direkt für gaszähler. Ob der auch gehen würde. Ende der Woche bekomme ich alle Sachen wie jumperwires usw. Dann mach ich mich mal drüber

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. …der müßte gehen, die beiden mittleren Anschlüsse (grün/braun) müssten der Impulsgeber sein, wenn ich das Datenblatt richtig lese… Polung müßte egal sein… Viel Spaß beim basteln… Bei mir läuft das suuuper 🙂

      VA:F [1.9.22_1171]
      Rating: +1 (from 1 vote)
    2. ich hab bei mir den TightVNC-Server auf dem Raspi laufen, so kann ich mich auf dem Laptop direkt auf den Desktop vom Raspi einloggen und alles so machen, als ob das Dinge direkt am Monitor / Fernseher dran hängt 🙂

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  43. Hat sich erledigt, hab das Notify hinbekommen 🙂 Jetzt muss der Zähler sich nur mal wieder drehen 😉

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  44. Noch eine Frage vorab. Muss beim GPOI nicht auch von 3,3V ein Abgang zum readrelais gehen??

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo raspi,

      nein, es ist kein Reedrelais, nur ein Reedkontakt, d.h. das ist ein zweipoliger Schalter, der durch das Magnetfeld des Zählwerks geschaltet wird. Ein Ende kommt am GPIO an Masse (Minus) und der zweite an den GPIO23, wie im Bild oben beschrieben. Am besten Kabel mit Pfostenbuchse(n) anlöten, die kannst Du dann auf die Pins stecken. Kannst Du vor dem Ankleben am Zähler mit einem Magneten testen, weil mein Zähler läuft wegen Solaranlage grad gar nicht… Klappt wie tüt, nur das mit dem Notify will bei mir nicht.

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  45. Danke für die super schnelle Antwort. Werde mich sicherlich in ein paar Tagen melden wenn ich es installiert habe.
    Danke

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  46. Hallo,

    @raspi: Ich hab einen von Reichelt.de genommen: MK 1471B, kost 2,20€

    @Jan:
    ich nehme an, das notify kommt in die fhem.cfg hinein oder ? Dann bekomme ich nach dem Speichern den ERROR:
    Unknown command my, try help. Unknown command my, try help. Unknown command my, try help. Unknown command fhem(„set, try help. Unknown command fhem(„delete, try help. Unknown command fhem(„define, try help. Unknown command }, try help.

    Was mach ich falsch ?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  47. Hallo… Genau das was ich vor habe.
    Kannst du mir evtl einen passenden Link vom readrelais – am besten aus der bucht geben, welcher kompatibel ist. Weil einen mk14 finde ich nicht.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  48. Ich hatte vor ca 1h was über entprellen des Reedkontakts geschrieben.

    Jetzt habe ich Jan’s Gaszähler implementiert, ich simuliere den Reedkontakt mit einem Schalter.
    Bei meinen eigenen Versuchen (C program mit interrupt) hat der Schalter geprellt. (3 -4 Interrupts / Schaltvorgang)
    Aber mit FHEM ist das kein Problem mehr.
    Ein erneuter Beweis für die das unglaublich gute FHEM und Jan’s super Beiträge.

    MFG
    Heinz

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  49. Liebe FHEM Gemeinde,
    erstmal dickes Lob für Jan !!

    ich vermisse eine Diskussion über das „Entprellen“ (debouncing) des reed- kontakts, oder ist das kein Problem ?

    Ich habe gerade mein IN-Z61 am Gaszähler montiert, aber noch nicht getestet.

    MFG
    Heinz

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  50. Hallo,

    Super Anleitung, habe aber trotzdem noch mal ein Frage.

    Da ich noch keine Reedrelais habe löse ich den Zählimpuls über eine Taster aus. Es wir auch pro Impuls im „HourCounter“ immer eins hochgezählt aber im „dummy GasverbrauchStd“springt der Wert extrem. Was auch schon im LOG_Gasverbrauch zu sehen ist.

    2015-05-05_12:24:15 Gasverbrauch countsPerDay: 135
    2015-05-05_12:24:15 Gasverbrauch countsOverall: 415
    2015-05-05_12:24:15 GasverbrauchStd 0.08
    2015-05-05_12:24:22 Gasverbrauch countsPerDay: 135
    2015-05-05_12:24:22 Gasverbrauch countsOverall: 415
    2015-05-05_12:24:22 Gasverbrauch countsPerDay: 136
    2015-05-05_12:24:22 Gasverbrauch countsOverall: 416
    2015-05-05_12:24:22 GasverbrauchStd 5.14
    2015-05-05_12:24:29 Gasverbrauch countsPerDay: 136
    2015-05-05_12:24:29 Gasverbrauch countsOverall: 416
    2015-05-05_12:24:29 Gasverbrauch countsPerDay: 137
    2015-05-05_12:24:29 Gasverbrauch countsOverall: 417
    2015-05-05_12:24:34 Gasverbrauch countsPerDay: 137
    2015-05-05_12:24:34 Gasverbrauch countsOverall: 417
    2015-05-05_12:24:34 GasverbrauchStd 7.2
    2015-05-05_12:24:35 Gasverbrauch countsPerDay: 138
    2015-05-05_12:24:35 Gasverbrauch countsOverall: 418
    2015-05-05_12:24:35 GasverbrauchStd 6
    2015-05-05_12:24:40 Gasverbrauch countsPerDay: 138
    2015-05-05_12:24:40 Gasverbrauch countsOverall: 418
    2015-05-05_12:24:44 Gasverbrauch countsPerDay: 139
    2015-05-05_12:24:44 Gasverbrauch countsOverall: 419
    2015-05-05_12:24:44 GasverbrauchStd 4
    2015-05-05_12:24:48 Gasverbrauch countsPerDay: 139
    2015-05-05_12:24:48 Gasverbrauch countsOverall: 419
    2015-05-05_12:24:48 GasverbrauchStd 4.5
    2015-05-05_12:24:49 Gasverbrauch countsPerDay: 140
    2015-05-05_12:24:49 Gasverbrauch countsOverall: 420
    2015-05-05_12:24:49 GasverbrauchStd 7.2

    Musste er nicht pro Impuls nur 0.1 hoch Zählen ?

    Was mir noch aufgefallen ist das im gesamten Logfile immer:

    2015.05.05 12:24:14 3: delete tmp_time_gas : Please define tmp_time_gas first

    Was habe ich nur falsch gemacht…

    Gruß Ole

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  51. Hi alle Gaszähler,

    da ich letzte Woche über eine Mio „tmp_time_gas“ aus der DB gelöscht habe und das FHEM Filelog auch immer voll davon stand, habe ich mir das Notify mal etwas genauer angschaut.

    Wenn ihr beim at für das addlog auch noch ein attr dblogExclude .* hinzufügt, wird in die DB nur noch der Wert des Dummys, sprich „GasverbrauchStd“ geschrieben.

    Auch sind durch die Triggerung auf :Value.* die lästigen „zwischendurch“ Events vorbei.

    Hier das modifizierte Notify

    Gasverbrauch:value.* {

    my $GasUmlaufzeit=ReadingsVal(„Gasverbrauch“,“pauseTimeEdge“,“0″)+ReadingsVal(„Gasverbrauch“,“pulseTimeEdge“,“0″);
    my $GasProStd=36/$GasUmlaufzeit;
    my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;

    fhem(„set GasverbrauchStd $GasProStdRounded“);;

    if(defined($defs{‚tmp_time_gas‘})) { fhem „modify tmp_time_gas +00:02:00“ } else
    { fhem „define tmp_time_gas at +00:02:00 set GasverbrauchStd 0“ };;

    }

    Mit dem definded defs$ wird geprüft ob es das Define bereits gibt, wenn ja, dann wird es mit dem modify aktualisiert, wenn nein, neu angelegt.

    Bei mir spielt das seit ne Woche einwandfrei. Bitte aber testen.

    Beste Grüße
    Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. ganz sicher hatte ich das in einer Zeile, Habe nun alles gelöscht und neu eingegeben. Selbe effekt.

      danke für die schnelle antwort.

      habe natürlich auch die modifizierung angewandt, da kommen aber fehlermeldungen , die ein if(defined($defs{‘tmp_time_gas’})) nicht kennen

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
    2. Hallo Michael, habe nun alles , was mit dem Gaszähler zu tun hatte gelöscht (über fhem.cfg). Danach alles neu eingegeben und dabei deine Modifikation von heute mit berücksichtigt. Diesmal ohne Fehlermeldungen. Leider habe ich unter GasverbrauchStd immer noch 3 ? stehen. Habe meiner bescheidenen Meinung nach nun alles berücksichtigt, sowohl das leerzeichen als auch die Anführungsstriche und natürlich auch den einen Bef.Satz in nur einer Zeile.
      weeß nimmer weiter.
      Dank dir trotz allem……..ich will und muss da noch richtig reinarbeiten.
      P.S. : das mit dem addlog raffe ich leider auch nicht. Wie und wo wird das gemacht ?
      Wie du siehst, bin ich blutiger Anfänger und für jede Hilfe Dankbar.
      gruss Karsten

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hi Karsten,

        geht zwischenzeitlich. Der Eintrag im log deutet auf einen Schreibfehler hin. Musste „Punkt und Komma“ genau checken.

        Zum Thema des addlog einfach das attr dblogExclude .* eintragen.

        Ich bin auch erst vor kurzem mit fhem gestartet. Ist alles kein Hexenwerk.

        Gruß Michael

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Hi Michael
          was sind das für Zeichen bei tmp_time_gas davor und danach ? ich glaube es liegt daran.

          gruß karsten

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
    3. Hi Michael und alle anderen,
      habe diesen Eintrag in der Log gefunden, taucht immer wieder auf :2015.04.18 04:52:54 3: GasverbrauchStdNoti return value: Illegal division by zero at (eval 4437) line 3, line 3.

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hallo SmartFan,

        ich habe versucht deinen Vorschlag bezüglich der “tmp_time_gas” Probleme zu übernehmen. Bin nun leider daran gescheitert, dass es nicht funktioniert. Ich muss / habe es versucht für normales Datenlogging (Log Dateien) um zu schreiben. Analog zum notify von Jan

        Dabei wurde aus:

        fhem(„delete tmp_time_gas“);;
        fhem(„define tmp_time_gas at +00:02:00 set GasverbrauchStd 0“);;
        }

        Dein Vorschlag:

        if(defined($defs{‘tmp_time_gas’})) { fhem “modify tmp_time_gas +00:02:00″ } else
        { fhem “define tmp_time_gas at +00:02:00 set GasverbrauchStd 0″ };;
        }

        hast du eine Idee, warum das so nicht funktioniert ?

        Gruß

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Hi,

          nein konkret nicht. Bitte genau auf die Syntax achten. Hier habe ich die meinsten Fehler gemacht.

          Hier mein komplettes Notify als Auszug aus der fhem.cfg

          define GasverbrauchStdNoti notify Gasverbrauch:value.* {\
          \
          my $GasUmlaufzeit=ReadingsVal(„Gasverbrauch“,“pauseTimeEdge“,“0″)+ReadingsVal(„Gasverbrauch“,“pulseTimeEdge“,“0″);; \
          my $GasProStd=36/$GasUmlaufzeit;; \
          my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;; \
          \
          fhem(„set GasverbrauchStd $GasProStdRounded“);;;;\
          \
          if(defined($defs{‚tmp_time_gas‘})) { fhem „modify tmp_time_gas +00:02:00“ } else\
          { fhem „define tmp_time_gas at +00:02:00 set GasverbrauchStd 0“ };;;; \
          \
          }
          attr GasverbrauchStdNoti DbLogExclude tmp_time_gas
          attr GasverbrauchStdNoti room Gasverbrauch

          Gruss Michael

          VA:F [1.9.22_1171]
          Rating: +1 (from 1 vote)
  52. Hallo und erstmal Danke für Dein Tutorial,
    bis auf den Gasstundenverbrauch habe ich (Laie) auch alles soweit hinbekommen. Was aber daran nicht stimmt , kann ich mir nicht erklären. Bei mir habe ich als State immer nur ???
    GasverbrauchStd ???
    Anbei meine Eingaben, vielleicht seht ihr Profis da genauer etwas.

    define GPIOGaszaehler RPI_GPIO 23
    attr GPIOGaszaehler active_low yes
    attr GPIOGaszaehler direction input
    attr GPIOGaszaehler interrupt both
    attr GPIOGaszaehler pud_resistor up
    attr GPIOGaszaehler room Gaszähler
    attr GPIOGaszaehler toggletostate yes
    define Gasverbrauch HourCounter GPIOGaszaehler:on GPIOGaszaehler:off
    define FileLog_Gasverbrauch FileLog ./log/Gasverbrauch-%Y-%m.log Gasverbrauch:countsOverall:.*|Gasverbrauch:countsPerDay:.*|Gasverbrauch:state:.*
    attr FileLog_Gasverbrauch room Gaszähler
    define GasverbrauchStd dummy
    attr GasverbrauchStd event-on-change-reading .*
    define GasverbrauchStdNoti notify Gasverbrauch { \
    my $GasUmlaufzeit=ReadingsVal(„Gasverbrauch“,“pauseTimeEdge“,“0″)+ReadingsVal(„Gasverbrauch“,“pulseTimeEdge“,“0″);; \
    my $GasProStd=36/$GasUmlaufzeit;; \
    my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;; \
    \
    fhem(„set GasverbrauchStd $GasProStdRounded“);;;; \
    fhem(„delete tmp_time_gas“);;;; \
    fhem(„define tmp_time_gas at +00:02:00 set GasverbrauchStd 0“);;;; \
    }

    Also , bis dann (natürlich versuche ich was auch immer)

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  53. Hallo Jan,

    ich bekomme das nicht hin das er den wert GasverbrauchStd in das logfile schreibt wo dran liegt das hier mal meine cfg

    attr global userattr devStateIcon devStateStyle fp_My_Home icon sortby webCmd widgetOverride
    attr global autoload_undefined_devices 1
    attr global latitude 53.552
    attr global logfile ./log/fhem-%Y-%m.log
    attr global longitude 9.962
    attr global modpath .
    attr global motd Error messages while initializing FHEM:\
    configfile: addRegexpPart needs 2 parameter(s)
    attr global sendStatistics onUpdate
    attr global statefile ./log/fhem.save
    attr global uniqueID ./FHEM/FhemUtils/uniqueID
    attr global verbose 3

    define telnetPort telnet 7072 global

    define WEB FHEMWEB 8083 global
    attr WEB stylesheetPrefix dark
    define My_Home FLOORPLAN

    define WEBphone FHEMWEB 8084 global
    attr WEBphone stylesheetPrefix smallscreen

    define WEBtablet FHEMWEB 8085 global
    attr WEBtablet stylesheetPrefix touchpad

    # Fake FileLog entry, to access the fhem log from FHEMWEB
    define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

    define autocreate autocreate
    attr autocreate autosave 1
    attr autocreate device_room %TYPE
    attr autocreate filelog ./log/%NAME-%Y.log
    attr autocreate weblink 1
    attr autocreate weblink_room Plots

    # Disable this to avoid looking for new USB devices on startup
    define initialUsbCheck notify global:INITIALIZED usb create

    # If the above notify did not helped, then you probably have to enable some of
    # the following lines. Verify first that /dev/xxx ist correct.

    #define FHZ FHZ /dev/USB0
    #define CUL CUL /dev/ttyACM0@9600 1234
    #attr CUL rfmode HomeMatic

    #define EUL TCM 310 /dev/ttyACM0@57600
    #define BscBor TCM 120 /dev/ttyUSB0@9600
    #define BscSmartConnect TCM 310 /dev/ttyUSB0@57600

    ### Temperatur

    define Temperatursensoren GPIO4 BUSMASTER

    #####

    ### Wetter
    define Wetter Weather 656958 600 de
    attr Wetter event-on-change-reading forecast_date,fc0_condition
    attr Wetter event-on-update-reading wind,humidity,temperature
    attr Wetter group Wetter
    attr Wetter room Wohnzimmer
    #attr Wetter device_timeout 240
    define w_Wetter weblink htmlCode { WeatherAsHtml(„Wetter“) }
    attr w_Wetter htmlattr width_“220″ height=“330″ frameborder=“0″ marginheight=“0″ marginwidth=“0″
    attr w_Wetter room Wohnzimmer

    define FileLog_Wetter FileLog ./log/Wetter-%Y.log Wetter
    attr FileLog_Wetter logtype temp4hum6:wind|humidity|temperature,text
    attr FileLog_Wetter room Logs
    ###

    define GPIO4_DS1820_000802906585 GPIO4 10-000802906585
    attr GPIO4_DS1820_000802906585 alias Wohnzimmer_Temp
    attr GPIO4_DS1820_000802906585 group Temperatur
    attr GPIO4_DS1820_000802906585 model DS1820
    attr GPIO4_DS1820_000802906585 room Wohnzimmer
    define weblink_GPIO4_DS1820_000802906585 SVG FileLog_GPIO4_DS1820_000802906585:temp4:CURRENT
    attr weblink_GPIO4_DS1820_000802906585 label „GPIO4_DS1820_000802906585 Min data{min1}, Max $data{max1}, Last $data{currval1}“
    attr weblink_GPIO4_DS1820_000802906585 room Wohnzimmer

    define Schrank_an at *{sunset(0,“22:15″,“22:40″)} set Schrank on
    define Schrank_aus at *22:45:30 set Schrank off
    define Schrank dummy
    attr Schrank group Licht
    attr Schrank icon icoBELEUCHTUNG
    attr Schrank room Wohnzimmer, Licht
    attr Schrank setList on off
    define on_Schrank notify Schrank:on „sudo ./send 11111 3 1“
    define off_Schrank notify Schrank:off „sudo ./send 11111 3 0“

    define Aquarium_an at *14:30:00 set Aquarium on
    define Aquarium_aus at *22:15:30 set Aquarium off
    define Aquarium dummy
    attr Aquarium group Licht
    attr Aquarium icon icoBELEUCHTUNG
    attr Aquarium room Wohnzimmer, Licht
    attr Aquarium setList on off
    define on_Aquarium notify Aquarium:on „sudo ./send 11111 4 1“
    define off_Aquarium notify Aquarium:off „sudo ./send 11111 4 0“

    define Aquariumpumpe_an at *14:30:20 set Aquariumpumpe on
    define Aquariumpumpe_aus at *15:15:30 set Aquariumpumpe off
    define Aquariumpumpe dummy
    attr Aquariumpumpe group Pumpe
    attr Aquariumpumpe icon icoZirkulationAn
    attr Aquariumpumpe room Wohnzimmer
    attr Aquariumpumpe setList on off
    define on_Aquariumpumpe notify Aquariumpumpe:on „sudo ./send 11111 5 1“
    define off_Aquariumpumpe notify Aquariumpumpe:off „sudo ./send 11111 5 0“

    define Hauptschalter dummy
    attr Hauptschalter group Licht
    attr Hauptschalter icon icoBELEUCHTUNG
    attr Hauptschalter room Wohnzimmer, Licht
    attr Hauptschalter setList on off
    define on_Hauptschalter notify Hauptschalter:on set Aquarium on
    define off_Hauptschalter notify Hauptschalter:off set Aquarium off;; sleep 1;; set Schrank off

    define Multimedia dummy
    attr Multimedia group Multimedia
    attr Multimedia room Wohnzimmer
    attr Multimedia setList on off
    define on_Multimedia notify Multimedia:on „sudo ./send 10000 1 1“
    define off_Multimedia notify Multimedia:off „sudo ./send 10000 1 0“

    define Flurlicht dummy
    attr Flurlicht group Licht
    attr Flurlicht icon icoBELEUCHTUNG
    attr Flurlicht room Flur, Licht
    attr Flurlicht setList on off
    define on_Flurlicht notify Flurlicht:on „sudo ./send 11111 2 1 r3“
    define off_Flurlicht notify Flurlicht:off „sudo ./send 11111 2 0 r3“

    define Maxi_Nachtlicht dummy
    attr Maxi_Nachtlicht group Licht
    attr Maxi_Nachtlicht icon icoBELEUCHTUNG
    attr Maxi_Nachtlicht room Kinderzimmer, Licht
    attr Maxi_Nachtlicht setList on off
    define on_Maxi_Nachtlicht notify Maxi_Nachtlicht:on „sudo ./send 11111 1 1“
    define off_Maxi_Nachtlicht notify Maxi_Nachtlicht:off „sudo ./send 11111 1 0“

    define Moritz_Nachtlicht dummy
    attr Moritz_Nachtlicht group Licht
    attr Moritz_Nachtlicht icon icoBELEUCHTUNG
    attr Moritz_Nachtlicht room Kinderzimmer, Licht
    attr Moritz_Nachtlicht setList on off
    define on_Moritz_Nachtlicht notify Moritz_Nachtlicht:on „sudo ./send 10111 1 1“
    define off_Moritz_Nachtlicht notify Moritz_Nachtlicht:off „sudo ./send 10111 1 0″

    define Nachtlicht dummy
    attr Nachtlicht group Licht
    attr Nachtlicht icon icoBELEUCHTUNG
    attr Nachtlicht room Kinderzimmer, Licht
    attr Nachtlicht setList on off
    define on_Nachtlicht notify Nachtlicht:on set Flurlicht on;; sleep 1;; set Maxi_Nachtlicht on;; sleep 1;; set Moritz_Nachtlicht on
    define off_Nachtlicht notify Nachtlicht:off set Flurlicht off;; sleep 1;; set Maxi_Nachtlicht off;; sleep 1;; set Moritz_Nachtlicht off
    define Nachtlicht_an at *{sunset(0,“20:00″,“23:59″)} set Flurlicht on;; sleep 1;; set Maxi_Nachtlicht on;; sleep 1;; set Moritz_Nachtlicht on
    define Nachtlicht_aus at *{sunrise(0,“05:00″,“07:30“)} set Flurlicht off;; sleep 1;; set Maxi_Nachtlicht off;; sleep 1;; set Moritz_Nachtlicht off

    define GPIOGaszaehler RPI_GPIO 23
    attr GPIOGaszaehler active_low yes
    attr GPIOGaszaehler direction input
    attr GPIOGaszaehler interrupt both
    attr GPIOGaszaehler pud_resistor up
    attr GPIOGaszaehler room Gaszähler
    attr GPIOGaszaehler toggletostate yes
    define Gasverbrauch HourCounter GPIOGaszaehler:on GPIOGaszaehler:off
    attr Gasverbrauch room Gaszähler
    define FileLog_Gasverbrauch FileLog ./log/Gasverbrauch-%Y-%m.log Gasverbrauch:countsOverall:.*|Gasverbrauch:countsPerDay:.*|Gasverbrauch:state:.*|GasverbrauchStd:state:.*
    attr FileLog_Gasverbrauch room Gaszähler
    define GasverbrauchStd dummy
    attr GasverbrauchStd event-on-change-reading .*
    attr GasverbrauchStd room Gaszähler
    define GasverbrauchStdNoti notify Gasverbrauch|GasverbrauchStd:.* {\
    my $GasUmlaufzeit=ReadingsVal(„Gasverbrauch“,“pauseTimeEdge“,“0″)+ReadingsVal(„Gasverbrauch“,“pulseTimeEdge“,“0″);; \
    my $GasProStd=36/$GasUmlaufzeit;; \
    my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;; \
    \
    fhem(„set GasverbrauchStd $GasProStdRounded“);;;; \
    fhem(„delete tmp_time_gas“);;;; \
    fhem(„define tmp_time_gas at +00:02:00 set GasverbrauchStd 0“);;;; \
    }
    attr GasverbrauchStdNoti room Gaszähler
    define et eventTypes %L/eventtypes.log

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  54. Hi alle,
    hatte ein Verbindungsstück welche Probleme gemacht hat. Zählen funktioniert nun soweit. Ich versuche gerade einen Counter zu basteln, der mir den Verbrauch für eine abrechnungsperiode beim lieferanten zeigt. Also dem qm3 Verbrauch für das Jahr zählt. Hat da einer eine Idee? Muss ich dafür den log vergrößern? Oder kann ich Dummywerte addieren? Habe hier leider kaum Erfahrung.

    Gruß

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  55. Hallo Jan,

    erst einmal herzlichen Dank für die tolle Seite und die Tutorials!
    Meinen RPi B+ habe ich nach Deinem Tut1 auf einem frischen RASPBIAN aufgesetzt und mit FHEM gefüttert. Hat alles auf Anhieb funktioniert (hatte mit dem Dpi bereits ein paar Tage Erfahrung gesammelt).

    Nun ging es an den Gaszähler, auch hier konnte ich Dank Deiner Anleitung erstmalig alles in FHEM richtig einrichten. Mein Reed-Sensor ist mit einem 1kOhm Vorwiderstand an GPIO.3 (BCM 22) und an Masse angeschlossen. Das funktioniert soweit alles prima.

    Diese Eingangskombi habe ich außerdem für 3 weitere Eingänge vorgesehen: 17, 18, 27 (GPIO.0-.2), um damit S0-Signale von drei Stromzählern (http://swissnox.de/stromzahler/swissnox-digitaler-wechselstromzahler-230v-5-50-a-1-phasig-fur-hutschienen-35mm-lcd.html) zu erfassen (Impulslänge: 90ms, Zählimpulse 2000imp/kWh).

    Zu diesem Zweck habe ich mir Deine Variante „vervielfacht“ und die Variablen entspr. mit _L1 bis _L3 gekennzeichnet. Rein von der Eingabe her funktionierte das alles ohne Fehlermeldungen und läuft prinzipiell auch.
    Nun allerdings zu meinem Problem:
    Es werden nicht alle Signale gezählt. Ich habe über zwei Tage mehrere Zeitfenster gehabt und die Impulse (vorher/hinterher) mit den Verbrauchswerten der jeweiligen Zähler (Faktor 20!) verglichen. Im Ergebnis hat FHEM nur etwa 50-80% der Impulse gezählt.

    Habe ich beim Anpassen eine Fehler gemacht? Oder einen logischen Fehler, so dass man die Notify und HourCounter vielleicht gar nicht auf diese Art und Weise verwenden kann?
    Oder ist das System bereits mit dem Interrupt-Handling von 4 Sensoren in dieser Frequenz überlastet? BTW: in den Logfiles kommt ja einiges zusammen an Einträgen… das müsste ich später vermutlich noch etwas aufräumen…

    Hier mal meine FHEM.cfg, ich hoffe, das ist ok:
    [code]
    attr global userattr devStateIcon devStateStyle icon sortby webCmd widgetOverride
    attr global autoload_undefined_devices 1
    attr global logfile ./log/fhem-%Y-%m.log
    attr global modpath .
    attr global motd SecurityCheck:\
    \
    telnetPort has no password/globalpassword attribute.\
    \
    Restart FHEM for a new check if the problem is fixed,\
    or set the global attribute motd to none to supress this message.\

    attr global statefile ./log/fhem.save
    attr global updateInBackground 1
    attr global verbose 3

    define telnetPort telnet 7072 global

    define WEB FHEMWEB 8083 global
    attr WEB basicAuth ******************************

    define WEBphone FHEMWEB 8084 global
    attr WEBphone basicAuth ******************************
    attr WEBphone stylesheetPrefix smallscreen

    define WEBtablet FHEMWEB 8085 global
    attr WEBtablet basicAuth ******************************
    attr WEBtablet stylesheetPrefix touchpad

    # Fake FileLog entry, to access the fhem log from FHEMWEB
    define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

    define autocreate autocreate
    attr autocreate filelog ./log/%NAME-%Y.log

    define eventTypes eventTypes ./log/eventTypes.txt

    # Disable this to avoid looking for new USB devices on startup
    define initialUsbCheck notify global:INITIALIZED usb create
    define GPIOGaszaehler RPI_GPIO 22
    attr GPIOGaszaehler active_low yes
    attr GPIOGaszaehler direction input
    attr GPIOGaszaehler interrupt both
    attr GPIOGaszaehler pud_resistor up
    attr GPIOGaszaehler room Gas
    attr GPIOGaszaehler toggletostate yes
    define Gasverbrauch HourCounter GPIOGaszaehler:on GPIOGaszaehler:off
    attr Gasverbrauch room Gas
    define FileLog_Gasverbrauch FileLog ./log/Gasverbrauch-%Y-%m.log Gasverbrauch:countsOverall:.*|Gasverbrauch:countsPerDay:.*|Gasverbrauch:state:.*|GasverbrauchStd:.*
    attr FileLog_Gasverbrauch room Gas
    define GasverbrauchStd dummy
    attr GasverbrauchStd event-on-change-reading .*
    attr GasverbrauchStd room Gas
    define GasverbrauchStdNoti notify Gasverbrauch {\
    \
    my $GasUmlaufzeit=ReadingsVal(„Gasverbrauch“,“pauseTimeEdge“,“0″)+ReadingsVal(„Gasverbrauch“,“pulseTimeEdge“,“0″);; \
    my $GasProStd=36/$GasUmlaufzeit;; \
    my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;; \
    \
    fhem(„set GasverbrauchStd $GasProStdRounded“);;;; \
    fhem(„delete tmp_time_gas“);;;; \
    fhem(„define tmp_time_gas at +00:02:00 set GasverbrauchStd 0“);;;; \
    }
    attr GasverbrauchStdNoti room Gas
    define GPIOStromzaehler_L1 RPI_GPIO 17
    attr GPIOStromzaehler_L1 active_low yes
    attr GPIOStromzaehler_L1 direction input
    attr GPIOStromzaehler_L1 interrupt both
    attr GPIOStromzaehler_L1 pud_resistor up
    attr GPIOStromzaehler_L1 room Strom
    attr GPIOStromzaehler_L1 toggletostate yes
    define Stromverbrauch_L1 HourCounter GPIOStromzaehler_L1:on GPIOStromzaehler_L1:off
    attr Stromverbrauch_L1 room Strom
    define FileLog_Stromverbrauch_L1 FileLog ./log/Stromverbrauch_L1-%Y-%m.log Stromverbrauch_L1:countsOverall:.*|Stromverbrauch_L1:countsPerDay:.*|Stromverbrauch_L1:state:.*
    attr FileLog_Stromverbrauch_L1 room Strom
    define StromverbrauchStd_L1 dummy
    attr StromverbrauchStd_L1 event-on-change-reading .*
    attr StromverbrauchStd_L1 room Strom
    define StromverbrauchStdNoti_L1 notify Stromverbrauch_L1 {\
    \
    my $Strom_L1_Umlaufzeit=ReadingsVal(„Stromverbrauch_L1″,“pauseTimeEdge“,“0″)+ReadingsVal(„Stromverbrauch_L1″,“pulseTimeEdge“,“0″);; \
    my $Strom_L1_ProStd=36/$Strom_L1_Umlaufzeit;; \
    my $Strom_L1_ProStdRounded=int(100 * $Strom_L1_ProStd + 0.5) / 100;; \
    \
    fhem(„set StromverbrauchStd_L1 $Strom_L1_ProStdRounded“);;;; \
    fhem(„delete tmp_time_Strom_L1“);;;; \
    fhem(„define tmp_time_Strom_L1 at +00:02:00 set StromverbrauchStd_L1 0“);;;; \
    }\

    attr StromverbrauchStdNoti_L1 room Strom
    define GPIOStromzaehler_L2 RPI_GPIO 18
    attr GPIOStromzaehler_L2 active_low yes
    attr GPIOStromzaehler_L2 direction input
    attr GPIOStromzaehler_L2 interrupt both
    attr GPIOStromzaehler_L2 pud_resistor up
    attr GPIOStromzaehler_L2 room Strom
    attr GPIOStromzaehler_L2 toggletostate yes
    define Stromverbrauch_L2 HourCounter GPIOStromzaehler_L2:on GPIOStromzaehler_L2:off
    attr Stromverbrauch_L2 room Strom
    define FileLog_Stromverbrauch_L2 FileLog ./log/Stromverbrauch_L2-%Y-%m.log Stromverbrauch_L2:countsOverall:.*|Stromverbrauch_L2:countsPerDay:.*|Stromverbrauch_L2:state:.*
    attr FileLog_Stromverbrauch_L2 room Strom
    define StromverbrauchStd_L2 dummy
    attr StromverbrauchStd_L2 event-on-change-reading .*
    attr StromverbrauchStd_L2 room Strom
    define StromverbrauchStdNoti_L2 notify Stromverbrauch_L2 {\
    \
    my $Strom_L2_Umlaufzeit=ReadingsVal(„Stromverbrauch_L2″,“pauseTimeEdge“,“0″)+ReadingsVal(„Stromverbrauch_L2″,“pulseTimeEdge“,“0″);; \
    my $Strom_L2_ProStd=36/$Strom_L2_Umlaufzeit;; \
    my $Strom_L2_ProStdRounded=int(100 * $Strom_L2_ProStd + 0.5) / 100;; \
    \
    fhem(„set StromverbrauchStd_L2 $Strom_L2_ProStdRounded“);;;; \
    fhem(„delete tmp_time_Strom_L2“);;;; \
    fhem(„define tmp_time_Strom_L2 at +00:02:00 set StromverbrauchStd_L2 0“);;;; \
    }\

    attr StromverbrauchStdNoti_L2 room Strom
    define GPIOStromzaehler_L3 RPI_GPIO 27
    attr GPIOStromzaehler_L3 active_low yes
    attr GPIOStromzaehler_L3 direction input
    attr GPIOStromzaehler_L3 interrupt both
    attr GPIOStromzaehler_L3 pud_resistor up
    attr GPIOStromzaehler_L3 room Strom
    attr GPIOStromzaehler_L3 toggletostate yes
    define Stromverbrauch_L3 HourCounter GPIOStromzaehler_L3:on GPIOStromzaehler_L3:off
    attr Stromverbrauch_L3 room Strom
    define FileLog_Stromverbrauch_L3 FileLog ./log/Stromverbrauch_L3-%Y-%m.log Stromverbrauch_L3:countsOverall:.*|Stromverbrauch_L3:countsPerDay:.*|Stromverbrauch_L3:state:.*
    attr FileLog_Stromverbrauch_L3 room Strom
    define StromverbrauchStd_L3 dummy
    attr StromverbrauchStd_L3 event-on-change-reading .*
    attr StromverbrauchStd_L3 room Strom
    define StromverbrauchStdNoti_L3 notify Stromverbrauch_L3 {\
    \
    my $Strom_L3_Umlaufzeit=ReadingsVal(„Stromverbrauch_L3″,“pauseTimeEdge“,“0″)+ReadingsVal(„Stromverbrauch_L3″,“pulseTimeEdge“,“0″);; \
    my $Strom_L3_ProStd=36/$Strom_L3_Umlaufzeit;; \
    my $Strom_L3_ProStdRounded=int(100 * $Strom_L3_ProStd + 0.5) / 100;; \
    \
    fhem(„set StromverbrauchStd_L3 $Strom_L3_ProStdRounded“);;;; \
    fhem(„delete tmp_time_Strom_L3“);;;; \
    fhem(„define tmp_time_Strom_L3 at +00:02:00 set StromverbrauchStd_L3 0“);;;; \
    }\

    attr StromverbrauchStdNoti_L3 room Strom
    define SVG_FileLog_Stromverbrauch_L1_1 SVG FileLog_Stromverbrauch_L1:SVG_FileLog_Stromverbrauch_L1_1:CURRENT
    attr SVG_FileLog_Stromverbrauch_L1_1 room charts
    define SVG_FileLog_Gasverbrauch_1 SVG FileLog_Gasverbrauch:SVG_FileLog_Gasverbrauch_1:CURRENT
    attr SVG_FileLog_Gasverbrauch_1 room charts

    [/code]

    Gruß,
    Axel

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Axel,

      mach doch mal aus den ganzen Notifys ein AT und lasse dies nur alle 10 Minuten laufen.

      Stell dir mal vor, da läuft ein Backofen und zieht gerade 5KW. Das wären, nur für den einen Zähler, ein Input von 10.000 Signalen pro Stunde. Also in der Minute 166, in der Sekunde immernoch 3. Das Notify arbeitet nach jedem Input einmal komplett durch. Das ganze mal 4 und der Pi fängt an zu kochen. 🙂

      Dadurch könntest du das wahrscheinlich ein wenig entzerren.

      Der Gaszähler funktioniert bei mir mit einer Abwecihung von 20-30 Umdrehungen pro Monat. Das entspricht 0,3m3 Gas. Sehr akzeptabel wie ich finde.

      Feedback wird erwünscht!

      Gruß
      Jan

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hallo Ja,

        danke für deine Antwort. Somit bestätigst Du meine Vermutung.

        Ich bin bzgl. FHEM-Programmierung noch etwas unerfahren, wie genau könnte die Variante mit dem AT-Befehl aussehen?

        define StromverbrauchStdAT_L3 AT 00:10:00 {\
        \
        my $Strom_L3_Umlaufzeit=ReadingsVal(“Stromverbrauch_L3″,”pauseTimeEdge”,”0″)+ReadingsVal(“Stromverbrauch_L3″,”pulseTimeEdge”,”0″);; \
        my $Strom_L3_ProStd=36/$Strom_L3_Umlaufzeit;; \
        my $Strom_L3_ProStdRounded=int(100 * $Strom_L3_ProStd + 0.5) / 100;; \
        \
        fhem(“set StromverbrauchStd_L3 $Strom_L3_ProStdRounded”);;;; \
        fhem(“delete tmp_time_Strom_L3″);;;; \
        fhem(“define tmp_time_Strom_L3 at +00:10:00 set StromverbrauchStd_L3 0″);;;; \
        }\

        Gruß,
        Axel

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
  56. Hallo Jan,
    Danke für den schönen Beitrag, hat auf Anhieb funktioniert. Ich habe nur eine Frage, Wie kann ich mir am einfachsten die Werte, z.B. Gasverbrauch gesamt und pro Tag in qbm anzeigen lassen, wie es bei dir zu sehen ist? Kannst du vielleicht den Code mal posten?

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  57. Hi,

    Danke für das Feedback. Ich werde die Leitung mal messen. Habe aktuell nur eine „fliegende“ Verkabelung. Werde berichten, wenn ich was herausgefunden habe. Komme aber erst am Wochenende dazu.

    Gruß

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  58. Hi Jan,

    Danke für die klasse Anleitung. Ich habe es so auch umgesetzt, leider komme ich zu keinem positiven Ergebnis. Mein Verdacht, ist dass ich eine zu lange Leitung zwischen Reed und Gpio Ports habe. ca. 2 Meter. Ich habe ein Telefonkabel zur Verlängerung genommen.

    Was Hast du benutzt, wie lang ist deine verwendete Leitung und konntest du Abhängigkeiten zur Länge feststellen ?

    Gruß Jan

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Jan,

      ich habe ca. 9m Lautsprecherkabel genommen. (0,75mm²)
      Funktioniert tadellos.
      Vielleicht ist das Kabel irgendwo gebrochen!? Hast du mal gemessen ob das Kabel „durchgang“ hat?

      Gruß
      Jan

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  59. Hallo,
    deine Anleitung ist echt Super allerdings habe ich ein kleines Problem.

    Wenn ich den notify anlege und dann den Code reinkopiere, geht es auch zunächst aber nach einem Neustart von fhem ist der notify weg.
    Ich kann diesen Irgendwie nicht dauerhaft speichern.

    Kannst du mir vielleicht einen Tipp geben?

    Gruß
    Aser

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Dazu habe ich leider keine Lösung parat. Tut mir leid.
      Oben links auch Speichern wirst du ja sicherlich klicken…

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  60. Hallo Jan,
    erst einmal vielen Dank für diese interessanten Seiten. Ich habe mich nun auch an das Thema mit dem Gaszähler gewagt: Reed-Relais bestellt, FHEM läuft ja bereits. Das Reed-Relais habe ich nach Erhalt mal schnell an den Zähler mit einem Multimter herangehalten und der Qicktest ergab, dass es funktioniert. Heute (nach ein paar Tagen) habe ich dasgleiche probiert und nichts get mehr. Ich habe hier zwei verschiedene Reed-Relais ausprobiert: MS-214-3 und MS-213-3 und beide zeigen derzeit am Multimeter keinen Durchgang. Gibt es da eine bestimmte Stelle in der Mulde, wo man die befestigen muss? Bin schon am Verzweifeln!
    Vielen Dank im voraus!
    Rainhard

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Bei mir reagierte das Reed Relais am besten ganz vorne in der Mulde. Mein erster Versuch war ja mit Panzertape fixiert, das löste sich allerdings nach einem Tag minimal, so dass dann ebenfalls keine Zählung mehr stattfand.

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
    2. Hallo Rainhard,

      ich habe selber gerade etwas mit meinem Reed-Kontakt rumgefriggelt.
      Mein Sensor (C*nrad, MS-332-3-1) passt genau in die vorgesehene Mulde, allerdings auf viele Arten. Bei mir funktioniert er allerdings nur genau in einer Position. Offensichtlich ist der Sensor an der flachen, langen Seite, an der das Kabel in das Gehäuse führt, am empfindlichsten (im obersten Bild dieser Spec ist es die Unterseite http://www.pic-gmbh.com/files/ms3323_ds_d_1.3.pdf).
      Das hat den Vorteil, dass ich den Sensor auf diese Art mit leicht abgeknickten Kabel etwas „unter Spannung“ in die Mulde drücken kann. Werde ich dann in Kürze noch mit einem kleinen Tropfen Heisskleber fixieren.

      Gruß,
      Axel

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  61. Hallo Jan,
    danke für die hilfreichen Scripts und Videos. Meinen Gasverbrauch habe ich jetzt unter Kontrolle !
    Da ich nicht ganz durch deine Codierung durchsteige würde ich mich über einen Hinweis freuen wie ich auch noch den Jahresverbrauch anzeigen und die Kosten entsprechend darstellen kann. Viele Grüße Kajo

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hi Kajo,

      das funktioniert nicht so einfach, da HourCounter diese Funktion nicht stellt.

      Als Tipp: Setze den Jahresstartwert manuell in ein Dummy und subtrahiere dann einfach den Dummy-Wert vom aktuellen Zählerstand den HourCounter liefert.
      Dann hast du den Jahreswert.
      Die Kosten kann man dann durch Multiplikation mit dem Gaspreis ausrechnen.

      Oder willst du eine Hochrechnung für das Jahr machen?

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hallo Jan, ich denke wenn man den Hourcounter-Wert countoverall am 1. Januar auf null stellt sollte das damit funktioniert können. Unterjährig könnte man das Delta zur letzten Jahresabrechnung einstellen als Wert. Z.B. Verbrauch = 500qm wären bei dem entsprechenden Zähler 50000 counts. Ich versuche es mal so. Gruß KaJo

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
  62. Lieber Jan, ich bekomme die GPIO Ports nicht ans Laufen.
    ob es an der rc.local liegt ?
    sieht bei mir nun so aus:
    #!/bin/sh
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will „exit 0“ on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    # Print the IP address
    _IP=$(hostname -I) || true
    if [ „$_IP“ ]; then
    printf „My IP address is %s\n“ „$_IP“
    fi
    echo 23 > /sys/class/gpio/export
    chown -R fhem:root /sys/devices/virtual/gpio/*
    chown -R fhem:root /sys/class/gpio/*
    exit 0

    Hab auch schon mit sh -e laufen lassen.
    alle Dateien sind drin.
    Ich komme nicht weiter.

    Viele Grüße !
    Daniel

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Daniel,

      sorry für die späte Antwort.

      Das sieht korrekt aus.
      Kannst du den GPIO Port nur in FHEM nicht nutzen oder generell nicht? Wie testest du den GPIO Port?

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hallo Jan,

        ich hab auch Probleme mit den GPIOs (zumindest denke ich das). Ich hab noch kein FHEM installiert, sondern wollte erstmal den MK14 -1A66B testen. Dazu hab ich folgendes gemacht:

        1) MK14-1A66B an Pin 6 und Pin 16 angeschlossen
        2) echo „23“ > /sys/class/gpio/export
        3) while true; do cat /sys/class/gpio/gpio23/value; done
        4) Magnet an MK14-1A66B gehalten
        5) geschaut, ob sich der Wert aus 3) ändert.

        Tut er aber leider nicht. Mach ich was falsch?

        Gruß Jörn

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Ich hatte zum testen ein kleines Script ergoogelt was die Änderung direkt anzeigt.

          „Raspberry GPIO Test Script“ oder so ähnlich sollte dich weiterbringen.

          Ansonsten versuche es erstmal mit zwei Drähten am GPIO, die du aneinander hältst um den Kontakt zu schließen und wieder öffnest um Durchgang zu haben.

          Sobald das funktioniert, kannst du mit dem Reed Relais weiter machen.

          VN:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
  63. Hallo Jan,

    funktioniert super. Fettes Mercy dafür.

    Habe trotzdem „delete tmp_time_gas : Please define tmp_time_gas first“ im Log stehen. Was hat es damit aufsich?

    Gruß,
    Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  64. Hallo Michael,

    tolle Videos, helfen mir total bei der Einrichtung. Aber hier eine Frage, ich habe irgendwo gelesen das auch ein owserver (owfs) mit fhem benutzt werden kann. ich betreibe schon
    längere zeit einen owserver in meinem Netzwerk und würde gern die Sensoren in fhem einbinden. Kannst Du vielleicht zu dieser Situation ebenfalls ein Video bereitstellen??

    Liebe Grüße,
    Mario

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  65. Hallo Jan.

    Dickes Lob von mir.

    Konnte alles problemlos einrichten.
    Trotzdem eine Frage: Was muss ich im notify ändern, um den Verbrauch pro Tag zu erfassen?

    Danke und Grüße,
    Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Michael.

      Vielen Dank für das Lob!
      Eigentlich muss du nichts ändern. Wenn du alles wie oben beschrieben durchgeführt hast, ist der Wert aus „Gasverbrauch“ dein Tagesverbrauch.

      Grüße
      Jan

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Ok, vielleicht habe ich mich falsch ausgedrückt 🙂

        Ich möchte einen Dummy Tagesverbrauch erstellen.
        Kann ich denn das notify dafür 1zu1 übernehmen?

        Gruß,
        Michael

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Nicht so ohne Weiteres… 🙂

          Du möchtest den Tadesverbrauch in KW/h angezeigt bekommen?

          Schau dir mal dieses Skript an:

          +*00:10:00 {
          my $GasverbrauchM3=ReadingsVal("Gasverbrauch","countsPerDay","0")/100;
          my $GasverbrauchKwh=$GasverbrauchM3*0.9636*11.2;
          my $GasverbrauchKwhRounded=int(100 * $GasverbrauchKwh + 0.5) / 100;

          fhem("set GasverbrauchKwh $GasverbrauchKwhRounded");;

          }

          Du brauchst die Zustandszahl und den Brennwert des Gases welches dir geliefert wird, dann müssen diese Zahlen oben in der Formel entsprechend geändert werden.

          Mein Gaslieferer teilt mir folgendes mit:
          Zustandszahl: 0,9636
          Brennwert: 11,2

          Der dann in dem Dummy „GasverbrauchKwh“ angezeigte Werte, ist der Tagesverbrauch in KWh.

          EDIT: Das ist ein AT, welches alle 10 Minuten läuft. Siehe Videotutorial 03, da erkläre ich das ausführlicher.

          VN:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
  66. Hallo,

    ich habe 2 S0 Stromzähler und möchte die in einem HourCounter zusammenfassen. Mir fehlt aber im Moment der Ansatz wie ich das machen könnte. Beide S0 auf einen GPIO ist glaube ich nicht so das wahre. Hast Du da einen Ansatz für mich?

    Danke

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Jeden Zähler an einen GPIO Port. Innerhalb von FHEM dann eine kleine Funktion die beide Werte addiert und in einen Dummy „StromZaehlerGesamt“ schreibt.

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  67. Ist ja genau das was ich suche. Bin da noch nicht so fit. Ich habe 2 1w-counter für Strom und Gas im Einsatz. Da bekomme ich Werte übermittelt und kein on/off. Geht das damit auch?

    Danke
    Joachim

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Joachim.

      1-Wire geht auch. Auch mit dem HourCounter Modul welches hier eingesetzt wird. Wie du den GPIO Port konfigurieren musst um die Daten, die deine Sensoren liefern, dann auch in FHEM zu haben entzieht sich allerdings meiner Kenntnis.

      Schau dir mal folgenden FHEM-Wiki Eintrag an: http://www.fhemwiki.de/wiki/Raspberry_Pi_und_1-Wire#GPIO4-Port

      Ansonsten im FHEM-Forum mal nach 1-Wire suchen. Irgendwer wird da mit Sicherheit was laufen haben.

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  68. Hallo Allerseits,

    vielen Dank für die super Arbeit. Bei mir läuft alles gut. Habe nur ein Probelm, dass mit das Logfile vollläuft:

    2015.01.14 19:12:30 3: delete tmp_time_gas : Please define tmp_time_gas first

    Kann man das noch irgendwie abstellen oder bin nur ich zu blöd?

    Danke und Gruß
    Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Das lässt sich mit Sicherheit abstellen, allerdings habe ich da derzeit leider keine Lösung zu.
      tmp_time_gas wird benötigt um den Wert auf 0 zu setzen wenn kein Verbrauch statt findet. Bei jeder Umdrehung des Zähler wird dieser „Timer“ neu gestartet, damit nach einem Stillstand des Zählers der aktuelle Verbrauch auf 0 gesetzt werden kann. Vorher muss tmp_time_gas allerdings gelöscht werden, da sonst eine Fehlermeldung kommt, dass tmp_time_gas schon vorhanden ist. Bei der ersten Umdrehung des Zählers nach längerem Stillstand wird versucht tmp_time_gas zu löschen, obwohl es nicht vorhanden ist. Das führt zu dem Logeintrag. Bisher habe ich noch keine Lösung erarbeitet um das „schöner“ zu gestalten. Vor dem löschen müsste überprüft werden, ob tmp_time_gas überhaupt existiert. FHEM bietet allerdings keine Hauseigene Möglichkeit zur Überprüfung an (oder ich habe diese Möglichkeit noch nicht gefunden).

      In PERL lässt sich da mit Sicherheit auch was schreiben. Mich hat es bisher nicht sonderlich gestört, so dass ich es nicht als Priorität angesehen habe den Fehler zu beseitigen.

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  69. Hallo Jan und alle Gaszähler!
    (natürlich war das „Jaaaaa!“ auch ironisch gemeint).
    Ich habe noch ein Vollschreibproblem, vielleicht lässt es sich genauso schnell lösen, wie das Vorige.
    Im Logfile (fhem) wird bei jeder Umdrehung 10 mal
    „… 3: delete tmp_time_gas : Please define tmp_time_gas first“ eingetragen.
    Lässt sich das durch ein zusätzliches „attr …“ vermeiden?
    Und. Im Event Monitor wird pro Umdrehung 27 mal
    „…Global global DEFINED tmp_time_gas
    … Global global DELETED tmp_time_gas“ geschrieben.
    Habe ich irgendwo einen Schreibfehler gemacht.
    Sonst läuft dank Deiner Beschreibung alles prima.
    Viele Grüße
    Wolfgang

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  70. Hallo Jan,

    die Installation hat super geklappt. Vielen Dank!!!

    FHM2FHEM steht zwar noch aus, aber das eilt im Moment nicht. Könntest du evtl. deine gplot-Dateien veröffentlichen?

    Gruß Jörn

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  71. Hallo Jan,
    ich nochmal.
    Es funktioniert alles sehr gut. Nur bei einem Problemen bitte ich nochmal um Hilfe (falls Sie Zeit haben):
    Das FileLog-Gasverbrauch (nachdem ich GasverbrauchStd eigefügt habe) wird bei mir riesig aufgebläht indem pro detektierte Umdrehung sehr viele Einträge „Std“ eingefügt werden. Etwa so:
    2015-01-08_11:32:42 Gasverbrauch countsPerDay: 217
    2015-01-08_11:32:42 Gasverbrauch countsOverall: 14306
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:42 GasverbrauchStd 1.2
    2015-01-08_11:32:43 GasverbrauchStd 1.2
    2015-01-08_11:32:43 GasverbrauchStd 1.2
    2015-01-08_11:32:43 GasverbrauchStd 1.2
    2015-01-08_11:32:45 Gasverbrauch countsPerDay: 217
    2015-01-08_11:32:45 Gasverbrauch countsOverall: 14306
    2015-01-08_11:32:45 GasverbrauchStd 1.2
    2015-01-08_11:32:45 GasverbrauchStd 1.2
    2015-01-08_11:32:45 GasverbrauchStd 1.2
    und so weiter.
    Das File ist inzwischen so riesig geworden (etwa 9Mb), so dass die Darstellung des Plots mehrere Minuten dauert.
    Wie könte ich das denn in den Griff kriegen?

    Viele Grüße
    Wolfgang

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Musste gleich mal schauen.
      Die vielfachen Logeinträge, zur gleichen Uhrzeit, habe ich auch.

      Auch ist die Ladezeit sehr lang. Eine Darstellung > einem Tag ist nicht möglich, da der Browser vorher abbricht.

      @Jan: Könntest Du bitte noch mal Helfen?

      Gruss

      Michael

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
    2. Mein Fehler. Habe in meinem Dummy noch das Attribut event-on-change-reading, da ich auch das Problem hatte. Hätte ich das erwähnen sollen? 😉

      Oben in die FHEM Eingabezeile, dann hört das auf:
      attr GasverbrauchStd event-on-change-reading .*

      EDIT: Kurz zur Erklärung was das Attribut macht: Dadurch wird nur bei Änderung ein Event erzeugt. FHEM loggt Events. Wenn sich der Wert nicht ändert wird nach dem Setzen kein Event mehr erzeugt und somit auch nichts in das Logfile geschrieben.
      EDIT2: Mein Gasverbrauch Log ist stand heute für Januar ca. 2,5MB groß.
      Ist es bei euch auch (neuerdings) so, dass der Stundenverbrauch angezeigt wird, im Plot, ohne das ein Verbrauch da ist?

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Hallo Jan und die anderen,
        Jan plapperte:
        >Hätte ich das erwähnen sollen?
        jaaaaaa!!
        Berücksichtige bitte die Fhemkenntisferne einiger Mitleser! Aber vielen Dank.
        Funktioniert jetzt hervorragend.
        Wolfgang

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Hallo Wolfgang,

          die Frage war eher ironisch gemeint. 🙂

          Habe es schlicht weg und ergreifend vergessen mit aufzunehmen. Artikel ist entsprechend geändert.
          Vielen Dank für das „Bug“ finden! 🙂

          VN:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
  72. Hallo Jan,

    das hört sich sehr spannend an. Mein Reedrelaise befindet sich leider noch bei der Post. Aber sobald er da ist, lege ich los. 😉

    Aber eine Frage habe ich scho . Wie gehe ich vor, wenn sich Reedrelaise und FHEM auf unterschiedlichen RPI’s befinden?

    Gruß Jörn

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  73. Hallo Jan,

    set FileLog_Gasverbrauch addRegexpPart GasverbrauchStd:.* hat auch bei mir nur über den Editor funktioniert. –> ?!?!

    Aber egal, es läuft jetzt und ich freue mich sehr.

    Vielen Dank!!!!

    Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  74. Hallo Jan,
    auch von mir Lob für die schöne Anleitung.
    Leider habe auch ich Probleme mit dem Notify und der stundenweisen Auswertung.
    Meinem Dummy wird leider kein Wert übergeben (bleibt bei ???).
    Was mir aufgefallen ist das dem Notify nicht der Wert „tmp_time_gas“ zugeordnet ist wie in deinem Echt-System.
    Deutet das darauf hin das das Script noch nicht läuft?

    frohes neues Jahr!
    Gruß
    Frank

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Frank,

      vielen Dank für das Lob!

      tmp_time_gas sorgt nur dafür, dass die VerbrauchStd Anzeige auf 0 geht wenn kein Verbrauch da ist.

      Funktioniert der Hauptteil denn? Wird generell ein Verbrauch erfasst?

      Was steht im Logfile? Werden dort irgendwelche Fehler angezeigt?

      Gruß
      Jan

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
      1. Moin Jan,
        der Hauptteil funktioniert prima.
        Aber der Hinweis mit dem Log war gut.
        Das wird gerade zugeschüttet mit:

        2015.01.02 09:46:57 3: GasverbrauchStdNoti return value: Illegal division by zero at (eval 20673) line 4, line 2644.

        Eine Idee?

        Gruß
        Frank

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Guck mal in den „HourCounter“. (Gasverbrauch)
          Schau dort mal nach ob du in den Readings „pauseTimeEdge“ hast. Der Wert wurde mit einem der letzten Updates hinzugefügt.

          Sollte das Reading nicht da sein, musst du in die FHEM Eingabezeile „update“ schreiben um das Modul auf den aktuellen Stand zu bringen.

          Danach ein „shutdown restart“ um FHEM neu zu starten. Danach sollte das Notify ohne Fehler funktionieren.

          Falls nicht, nochmal melden!

          VN:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
        2. ahhhh!
          Das update hat geholfen!
          Ich warte jetzt mal ab bis ein paar Stundenwerte gesammelt sind um zu schauen ob der Plot funktioniert.
          Vielleicht habe ich dann dazu noch eine Frage.
          Aber bis hierhin läuft das erst mal super und das bei minimalen Aufwand.
          Danke und Gruß

          Frank

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
      2. Hallo Jan,
        der Wert für GasverbrauchStd wird jetzt regelmäßig aktualisiert. Allerdings bekomme ich diesen Wert nicht geloggt.
        Wie löst du das bei dir?

        Gruß
        Frank

        VA:F [1.9.22_1171]
        Rating: 0 (from 0 votes)
        1. Wenn du wie oben beschrieben den FileLog für den Gesamtverbrauch angelegt hast, kannst du den Stundenverbrauch mit folgendem FHEM Befehl in das gleiche Logfile schreiben lassen:
          set FileLog_Gasverbrauch addRegexpPart GasverbrauchStd:.*

          Danach dann nur den Plot um den Wert erweitern. Screenshot

          VN:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
        2. Hm,
          hatte genau das schon per editieren vom FHEM.cfg versucht. Auch das Erstellen eines eigenen FileLogs für GasverbrauchStd zeigte keinen Erfolg.
          Das hinzufügen über set… bringt diese Meldung:
          addRegexpPart needs 2 parameter(s)

          Gruß
          Frank

          VA:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
        3. Noch ne Idee: Klick mal im FileLog auf „DEF“ und ändere den Inhalt auf dieses ab:
          ./log/Gasverbrauch-%Y-%m.log Gasverbrauch:countsOverall:.*|Gasverbrauch:countsPerDay:.*|Gasverbrauch:state:.*|GasverbrauchStd:.*

          Was passiert dann?

          VN:F [1.9.22_1171]
          Rating: 0 (from 0 votes)
        4. Hallo Jan,
          ich habe jetzt einen Hinweis aus dem FHEM Forum bekommen:

          define et eventTypes %L/eventtypes.log

          hat das Problem gelöst. Jetzt wird auch der GasverbrauchStd geloggt.

          Gruß
          Frank

          VA:F [1.9.22_1171]
          Rating: -1 (from 1 vote)
  75. Hi Jan,
    schönes Tutorial (Gaszähler), habe es die Tage schön Punkt für Punkt aufmerksam gelesen und eingerichtet
    Funktioniert auch prima.
    Nur bei Einrichtung des Dummy strauchel ich an der Stelle:
    „Danach das Notify: ….“ wohin wird dieser Text geschrieben? (oute mich hier als blutigerAnfänger, Fhem betreffend) Gibt es ein File diese Namens? Wo? Kommandozeile?

    Danke für die Hilfe.
    Wolfgang

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Wolfgang,

      ich werde mal jetzt über die Feiertage ein kleines Video Tutorial machen. Das sollte einiges verdeutlichen! 😉

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  76. Vielen Dank Jan!
    Hat mir sehr geholfen. Hat funktioniert. Bin da leider noch nicht ganz durch :-).
    Einzig ein Problem mit Einbindung des Notifiy (Verbrauch in m3/Std) habe ich noch so meine Schwierigkeiten.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Jetzt weiß ich auch was Michael meinte, als er sagte er versteht das mit Dummys nicht… 🙂

      Bevor ihr das Notify erstellt muss der Dummy erstellt werden.
      Macht das mal mit:
      define GasverbrauchStd dummy

      Nachdem dann das Notify erstellt ist, schreibt dieses den aktuellen Verbrauch pro Std in m3 in den Dummy, der dann Werte wie 0,8 oder beim Wasser aufheizen von 2,6 oder so hat.

      Werde das oben gleich mal korrigieren.

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  77. Hallo!

    Super klasse ist Deine Anleitung. Hab ich fast so umgesetzt und es läuft super.

    Mit fast meine ich den GND Pin.
    Pin. 14 ist diret neben Pin 16. Da passte der Stecker am ReadkontaktKabel super drauf.

    Was mir als Anfänger den Einstieg erleichtern würde, wäre noch das How To zum plot.

    Danke und Gruß aus Hamburg

    Michael

    VA:F [1.9.22_1171]
    Rating: +1 (from 1 vote)
    1. Hallo Michael!

      Vielen Dank für das Lob.
      Den Plot zu erstellen finde ich mit dem Plot Tool innerhalb von FHEM recht easy und wollte es deshalb nicht in diesem Tutorial mit aufnehmen.

      Hast du es denn zwischenzeitlich hinbekommen, oder soll ich nochmal die Feder schwingen um zu erklären? 🙂

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.