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
    227

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    222

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

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.
  • 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

                      589

                      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