Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Gaszähler

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    234

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    9
    1
    229

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    897

Gaszähler

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
11 Beiträge 4 Kommentatoren 4.3k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • N Offline
    N Offline
    noxx
    schrieb am zuletzt editiert von
    #1

    Hallo,

    danke der Hilfe kommen nun Daten von meinem ESP im ioBroker an.

    Unter FHEM hatte ich mir mit Hilfe diese Seite

    https://voizchat.de/gaszaehler-verbrauc … erry-gpio/

    meinen Gaszähler eingerichtet um den Gasverbrauch zu ermitteln.

    Wie lässt sich das gleiche mit ioBroker am einfachsten realisieren?

    Oder, vielleicht hat sowas schon einer gemacht...

    Gruß
    2880_1.png

    1 Antwort Letzte Antwort
    0
    • arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      klar geht das.. super idee werde ich mal in angriff nehmen

      du kannst mit dem rpi adapter die gpio's abgreifen und mit javascript den rest..

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      1 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        noxx
        schrieb am zuletzt editiert von
        #3

        @arteck:

        klar geht das.. super idee werde ich mal in angriff nehmen `

        schon was erreicht?

        1 Antwort Letzte Antwort
        0
        • K Offline
          K Offline
          knopers1
          schrieb am zuletzt editiert von
          #4

          @noxx,

          fange gerade damit an…

          Die Werte vom Pulse Counter bekomme ich richtung IOBroker über den MQTT Adapter.

          Allrdings habe jetzt keine Idee wie ich den Stromverbrauch daraus ermitteln soll...

          0.01 m³ (=10l) pro Schaltvorgang. Da wird wohl ein script benötigt glaube ich... Kammst Du weiter mit dem Projekt?

          Ich würde gerne aktuellen Gasverbrauch, gesamten Gasverbrauch und Gesamtkosten errechnen Wollen....

          HP Microserver Gen8, RPI-4, IoBroker,

          1 Antwort Letzte Antwort
          0
          • N Offline
            N Offline
            noxx
            schrieb am zuletzt editiert von
            #5

            Ja, habs fast.

            ESPeasy habe ich runtergemacht und dafür folgendes Script verwendet:

            (Reed Schalter hängt am GND und GPIO-2 (D4)

            ! ````
            #include <esp8266wifi.h>#include <esp8266webserver.h>IPAddress ip(192,168,X,Y); //Node static IP
            IPAddress gateway(192,168,X,1);
            IPAddress subnet(255,255,255,0);
            ! ESP8266WebServer server(80); //Web server object. Will be listening in port 80 (default for HTTP)
            ! #define ledPin 0
            #define inPin 2
            #define ssid "YourSSID"
            #define password "YourPassword"
            ! int actual = 1;
            int prev = 1;
            long int value = 0;
            ! // ****************************************************************
            ! void tohex(unsigned char * in, size_t insz, char * out, size_t outsz)
            {
            unsigned char * pin = in;
            const char * hex = "0123456789ABCDEF";
            char * pout = out;
            for(; pin < in+insz; pout +=3, pin++){
            pout[0] = hex[(*pin>>4) & 0xF];
            pout[1] = hex[ pin & 0xF];
            pout[2] = ':';
            if (pout + 3 - out > outsz){
            /
            Better to truncate output string than overflow buffer /
            /
            it would be still better to either return a status /
            /
            or ensure the target buffer is large enough and it never happen /
            break;
            }
            }
            pout[-1] = 0;
            }
            ! // ****************************************************************
            ! void handleAll() { //Handler
            ! String message = "";
            byte MAC[6];
            enum {insz = 6, outsz = 3
            insz};
            char MACStr[outsz];
            char * pout = MACStr;

            message += "<myhome>\n<esp8266_gasmeter>\n";
            message += "<data name="&quot;SSID&quot;" value="&quot;"" +/wifi.ssid()/""/valueunit="&quot;&quot;/">\n";
            message += "<data name="&quot;IP&quot;" value="&quot;"" +/wifi.localip().tostring()/""/valueunit="&quot;xxx.xxx.xxx.xxx&quot;/">\n";
            message += "<data name="&quot;help&quot;" value="&quot;use" setvalue?value="xx" to/set/new/value"/valueunit="&quot;text&quot;/">\n";
            WiFi.macAddress(MAC);
            tohex(MAC, insz, MACStr, outsz);
            message = message + "<data name="&quot;MAC&quot;" value="&quot;"" +/macstr/""/valueunit="&quot;AA:BB:CC:DD:EE:FF&quot;/">\n";
            message += "<data name="&quot;GasMeter&quot;" value="&quot;"" +/string(float(value)/100)/""/valueunit="&quot;m^3&quot;/">\n";
            message += "</data></data></data></data></data></esp8266_gasmeter>\n</myhome>";

            server.send(200, "text/plain", message); //Response to the HTTP request
            }

            ! // ****************************************************************
            ! void handleGenericArgs() { //Handler
            ! String message = "Number of args received:";
            message += server.args(); //Get number of parameters
            message += "\n"; //Add a new line
            ! for (int i = 0; i < server.args(); i++) {

            message += "Arg no" + (String)i + " –> ";   //Include the current iteration value
            message += server.argName(i) + ": ";     //Get the name of the parameter
            message += server.arg(i) + "\n";              //Get the value of the parameter
            

            }
            server.send(200, "text/plain", message); //Response to the HTTP request
            }

            ! // ****************************************************************
            ! void handleSetValue() {
            ! String message = "";
            String valuestr = "";
            ! if (server.arg("Value")== ""){ //Parameter not found
            ! message = "Value Argument not found";
            ! } else { //Parameter found
            ! message = "New Value = ";
            message += server.arg("Value"); //Gets the value of the query parameter
            valuestr = server.arg("Value");
            value = valuestr.toFloat() * 100;
            ! }
            server.send(200, "text/plain", message); //Returns the HTTP response
            }
            ! // ****************************************************************
            ! void setup() {
            ! Serial.begin(115200);
            WiFi.mode(WIFI_STA);
            WiFi.begin(ssid, password); //Connect to the WiFi network
            WiFi.config(ip, gateway, subnet);
            ! while (WiFi.status() != WL_CONNECTED) { //Wait for connection
            ! delay(500);
            Serial.println("Waiting to connect...");
            }
            ! Serial.print("WIFI connected to: ");
            Serial.println(WiFi.SSID());
            Serial.print("IP address: ");
            Serial.println(WiFi.localIP());
            ! server.on("/genericArgs", handleGenericArgs);
            server.on("/SetValue", handleSetValue);
            server.on("/", handleAll);
            ! server.begin(); //Start the server
            Serial.println("Server listening");
            Serial.println("use /SetValue?Value=xx to set new value");
            actual = digitalRead(inPin);
            ! pinMode(ledPin, OUTPUT);
            }
            ! // ****************************************************************
            ! void loop() {
            ! server.handleClient(); //Handling of incoming requests
            actual = digitalRead(inPin);
            ! if (actual == 1 && actual != prev) {
            value++;
            Serial.println(value);
            }
            ! if (actual == 1) {
            digitalWrite(ledPin, HIGH);
            } else {
            digitalWrite(ledPin, HIGH);
            delay(10);
            digitalWrite(ledPin, LOW);
            }

            prev = actual;
            delay(980);

            ! }</esp8266webserver.h></esp8266wifi.h>

            
            Die Ausgabe sieht dann so aus:
            

            <myhome><esp8266_gasmeter><data name="SSID" value="FRITZ!Box Fon WLAN 7390" valueunit=""><data name="IP" value="192.168.1.43" valueunit="xxx.xxx.xxx.xxx"><data name="help" value="use /SetValue?Value=xx to set new value" valueunit="text"><data name="MAC" value="11:F1:31:E1:11:31" valueunit="AA:BB:CC:DD:EE:FF"><data name="GasMeter" value="26456.91" valueunit="m^3"></data></data></data></data></data></esp8266_gasmeter></myhome>

            
            Den Wert lese ich mit folgendem JS Script ein:
            

            var request = require('request');
            var parseString = require('xml2js').parseString;

            var url="http://192.168.1.43"; // hier die Adresse der Webseite eintragen

            var GaszaehlerId = "Gaszaehler.Wert"; // Der Wert steht in "javascript.0."

            function processData(body){
            parseString(body, function (err, result) {
            // log(JSON.stringify(result.MyHome.ESP8266_GasMeter[0].data[4].$.value));
            if (!err)
            setState(GaszaehlerId,result.MyHome.ESP8266_GasMeter[0].data[4].$.value);
            });
            }

            createState(GaszaehlerId,
            0,
            false,
            {
            type:"number",
            unit:"m³"
            });

            schedule ("* * * * *", function(){ // alle 3 Minuten aufrufen
            request({
            uri: url,
            method: "GET",
            timeout: 10000,
            followRedirect: true,
            maxRedirects: 10
            }, function(error, response, body) {
            if (!error) {
            if (response.statusCode == 200) {
            processData(body);
            }
            } else log("Fehler: "+error);
            });
            })

            
            Die Auswertung versuche ich gerade mit dem Betriebsstundenzaehler (Script im Forum)
            
            zu realisieren.
            1 Antwort Letzte Antwort
            0
            • K Offline
              K Offline
              knopers1
              schrieb am zuletzt editiert von
              #6

              Danke Noxx,

              ganz kurz zum Verständniss…

              Das Sketch für ESP8266 liest den Readkontakt aus und stellt den Wert auf dem Webserver zur Verfügung.

              Das JS-Script angelt den Counter-Wert aus der Webanwendung heraus und stellt unter javascript.0

              den Wert zur Verfügung... bei Dir sah es so aus 26456.91

              Erste Frage:

              Wie oder wo gleiche ich meinen Zählerstand bei dem Script an?

              Du bekommst folgende Ausgabe. Das Script wird jedoch von Null anfangen wollen richtig?

              <data name="GasMeter" <color/color="#FF0000">value="26456.91" valueunit="m^3"/>

              Geht es hier weiter?

              http://forum.iobroker.net/viewtopic.php?t=2175

              Ich baue heute die Schaltung auf.

              Du schreibst dass der Magnetschalter am GND und GPIO-2 (D4) hängt. Hast Du irgenwelche Bauteile noch für die Entprellung eingebaut? (zB Kondi mit nem Widerstand?) oder hängt dein Reedschalter wirklich zwischen GPIO und GND ???

              Das JS Script kann ich auch schon mal installieren.

              Gruß Lukas</data>

              HP Microserver Gen8, RPI-4, IoBroker,

              1 Antwort Letzte Antwort
              0
              • N Offline
                N Offline
                noxx
                schrieb am zuletzt editiert von
                #7

                den wert kannst du mit

                192.168.XXX.YYY/SetValue?Value=1234.5

                anpassen

                1 Antwort Letzte Antwort
                0
                • N Offline
                  N Offline
                  Nepomukl
                  schrieb am zuletzt editiert von
                  #8

                  Hallo in die Runde,

                  habe jetzt erst diesen Fred gesehen, muss ihn noch einmal hoch holen.

                  Ich hoffe es läuft noch alles ;)

                  Warum hast du die Espeasy runter gemacht? Das geht doch super mit der.

                  Das Entprellen kann man auch Softwareseitig konfigurieren.

                  Ich habe das auch im Einsatz und lass es über MQTT an den Broker senden. Dazu brauch man

                  sich nicht zu verbiegen.

                  Das einzige was man da anpassen muss ist ein Script was die doppelten Counts runter rechnet

                  und dem gespeicherten Zählerstand zuschlägt.

                  Gruß Andreas

                  1 Antwort Letzte Antwort
                  0
                  • K Offline
                    K Offline
                    knopers1
                    schrieb am zuletzt editiert von
                    #9

                    das Script ist klasse… Nutze es einmal für Gas & Stromzähler. Ich habe keine Probleme mit Prellen, dank der guten Schaltung.

                    Jetzt bin ich aber neugierig, wie Du unter Espeasy die Softwarseitige Entprellung eingestellt hast. Kannst Du es verraten?

                    Doppelten Counts gibt es nicht, und wenn es sie geben sollte, dann ist die Schaltung doch nicht entprellt.

                    HP Microserver Gen8, RPI-4, IoBroker,

                    1 Antwort Letzte Antwort
                    0
                    • N Offline
                      N Offline
                      Nepomukl
                      schrieb am zuletzt editiert von
                      #10

                      Moin moin,

                      beim Espeasy stellst du doch die Entprellzeit mit "Debounce Time (mSec):" ein.

                      Da brauchst du nix mit weiterer Software machen.

                      Und die 2 Counts sind Sicherheit bei mir. Er zählt einmal wenn der Reed anzieht und

                      einmal wenn er wieder abfällt.

                      Auch werte ich nicht die Counts aus, sondern die Totale. Die werden immer hoch gezählt.

                      So ein Count kann schon mal verloren gehen, wenn z.B. das WLan spinnt oder der Broker.

                      Der letzte Total Wert wird bei mir im Broker abgelegt. Kommt jetzt ein neuer Wert vom Zähler

                      wird die Differenz berechnet. Da spielt es keine Rolle ob eine Komponente mal nicht online war.

                      Wenn jetzt der Esp mal Stromlos war ist das auch nicht so schlimm.

                      Dann wird die Differenz von 0 genommen und von vorn gezählt. Klappt Super.

                      Habe keine Differenzen mehr drin.

                      Das gleiche mache ich auch beim Strom. Das war nur etwas frickeliger, weil der TCRT5000

                      der die Umdrehungen zählt sich nicht gescheit einstellen ließ.

                      Da habe ich dann einfach das 10k Einstellpoti gegen ein Präzisionspoti ausgetauscht und

                      schon klappte die Einstellung.

                      Gruß Andreas
                      847_gas.jpg

                      1 Antwort Letzte Antwort
                      0
                      • K Offline
                        K Offline
                        knopers1
                        schrieb am zuletzt editiert von
                        #11

                        sehr schön…

                        HP Microserver Gen8, RPI-4, IoBroker,

                        1 Antwort Letzte Antwort
                        0

                        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                        Registrieren Anmelden
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        648

                        Online

                        32.8k

                        Benutzer

                        82.8k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe