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. Idee zum ablesen des Stromzählers.

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.7k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    678

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

Idee zum ablesen des Stromzählers.

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
mqttstromzähler auslesen
12 Beiträge 3 Kommentatoren 718 Aufrufe 2 Beobachtet
  • Ä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.
  • jmeister79J Offline
    jmeister79J Offline
    jmeister79
    schrieb am zuletzt editiert von jmeister79
    #1

    Halli Hallo,
    ich nutze einen MQTT Adapter um meinen Ferraris Zähler abzufragen bin aber nicht ganz zufrieden mit dem Ergebnis.

    Die Tatsächliche kWH und die gezählten driften mit der Zeit sehr auseinander und ich kriege es nicht wirklich hin.
    Die Erfassung des Striches ist m.E. nach in Ordnung.

    Letztendlich fehlt eine Überprüfung auf den tatsächlichen Wert. Hat jemand sowas schonmal mit OCR via Webcam versucht?

    Ansonsten anbei mein Code für evtl. Zerfetzen:

    createState("javascript.0.EnergyCounter.Zaehlerstand", 0.0, {name: "Zaehlerstand Stromzähler", type: 'number', unit: 'kWh'});
    
    on({id: 'mqtt.0.Stromzaehler.Zaehlerdiode.Total', change: "ne"}, function (obj) {
    
        //MQTT schickt alle 60s einen Zählerstand, je anchdem wie oft die scheibe gedreht hat ist das mehr oder weniger 
        //2 Impulse sind eine Umdrehung. bei 1kWh/120U muss ich 240 Impulse haben bis ich eine kWh hochzähle
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      var diff = 205;
      if (getState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable").val < diff) {
        setState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable"/*Arbeitsvariable*/, (getState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable").val + getState("mqtt.0.Stromzaehler.Zaehlerdiode.Count").val));
      } else {
        var temp = getState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable").val + getState("mqtt.0.Stromzaehler.Zaehlerdiode.Count").val; // unbedignt nochmal aufaddieren
        var howMany = Math.floor(temp/diff);  // so oft ist er schon über 240 gelaufen\
        temp = temp % diff;   //rest
        setState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable"/*Arbeitsvariable*/, temp);
        setState("mqtt.0.Stromzaehler.Zaehlerdiode.Zaehlerstand"/*Zaehlerstand*/, (parseFloat(getState("mqtt.0.Stromzaehler.Zaehlerdiode.Zaehlerstand").val) + howMany));
      }
    //alternative berechnungsformel
    
    // dritter versuch, jedesmal wenn er größer als letztes erkennt, dann muss ich nicht auf 240 warten, jeder durchgang wird nur einmal erkannt
      
        var counter = 210* getState("javascript.0.EnergyCounter.Zaehlerstand").val;
        counter = counter+getState("mqtt.0.Stromzaehler.Zaehlerdiode.Count").val;
        var zaehlervalue = Math.round(100*counter/210)/100;
    
        setState("javascript.0.EnergyCounter.Zaehlerstand", (parseFloat(zaehlervalue)));
    });
    

    LG
    Nils

    paul53P 2 Antworten Letzte Antwort
    0
    • jmeister79J jmeister79

      Halli Hallo,
      ich nutze einen MQTT Adapter um meinen Ferraris Zähler abzufragen bin aber nicht ganz zufrieden mit dem Ergebnis.

      Die Tatsächliche kWH und die gezählten driften mit der Zeit sehr auseinander und ich kriege es nicht wirklich hin.
      Die Erfassung des Striches ist m.E. nach in Ordnung.

      Letztendlich fehlt eine Überprüfung auf den tatsächlichen Wert. Hat jemand sowas schonmal mit OCR via Webcam versucht?

      Ansonsten anbei mein Code für evtl. Zerfetzen:

      createState("javascript.0.EnergyCounter.Zaehlerstand", 0.0, {name: "Zaehlerstand Stromzähler", type: 'number', unit: 'kWh'});
      
      on({id: 'mqtt.0.Stromzaehler.Zaehlerdiode.Total', change: "ne"}, function (obj) {
      
          //MQTT schickt alle 60s einen Zählerstand, je anchdem wie oft die scheibe gedreht hat ist das mehr oder weniger 
          //2 Impulse sind eine Umdrehung. bei 1kWh/120U muss ich 240 Impulse haben bis ich eine kWh hochzähle
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        var diff = 205;
        if (getState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable").val < diff) {
          setState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable"/*Arbeitsvariable*/, (getState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable").val + getState("mqtt.0.Stromzaehler.Zaehlerdiode.Count").val));
        } else {
          var temp = getState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable").val + getState("mqtt.0.Stromzaehler.Zaehlerdiode.Count").val; // unbedignt nochmal aufaddieren
          var howMany = Math.floor(temp/diff);  // so oft ist er schon über 240 gelaufen\
          temp = temp % diff;   //rest
          setState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable"/*Arbeitsvariable*/, temp);
          setState("mqtt.0.Stromzaehler.Zaehlerdiode.Zaehlerstand"/*Zaehlerstand*/, (parseFloat(getState("mqtt.0.Stromzaehler.Zaehlerdiode.Zaehlerstand").val) + howMany));
        }
      //alternative berechnungsformel
      
      // dritter versuch, jedesmal wenn er größer als letztes erkennt, dann muss ich nicht auf 240 warten, jeder durchgang wird nur einmal erkannt
        
          var counter = 210* getState("javascript.0.EnergyCounter.Zaehlerstand").val;
          counter = counter+getState("mqtt.0.Stromzaehler.Zaehlerdiode.Count").val;
          var zaehlervalue = Math.round(100*counter/210)/100;
      
          setState("javascript.0.EnergyCounter.Zaehlerstand", (parseFloat(zaehlervalue)));
      });
      

      LG
      Nils

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @jmeister79 sagte:

      //MQTT schickt alle 60s einen Zählerstand,

      Was genau beinhaltet der Datenpunkt "mqtt.0.Stromzaehler.Zaehlerdiode.Total" (History-Tabelle) ?

      @jmeister79 sagte in Idee zum ablesen des Stromzählers.:

      setState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable"/Arbeitsvariable/, temp);

      Keine eigenen Datenpunkte unter "fremdem" Namensraum ("mqtt.0") verwenden !

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

      jmeister79J 2 Antworten Letzte Antwort
      0
      • paul53P paul53

        @jmeister79 sagte:

        //MQTT schickt alle 60s einen Zählerstand,

        Was genau beinhaltet der Datenpunkt "mqtt.0.Stromzaehler.Zaehlerdiode.Total" (History-Tabelle) ?

        @jmeister79 sagte in Idee zum ablesen des Stromzählers.:

        setState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable"/Arbeitsvariable/, temp);

        Keine eigenen Datenpunkte unter "fremdem" Namensraum ("mqtt.0") verwenden !

        jmeister79J Offline
        jmeister79J Offline
        jmeister79
        schrieb am zuletzt editiert von
        #3

        @paul53 Total wird noch nicht aufgezeichnet. Habe das jetzt mal gemacht und melde mich dann.

        Ich habe den Eindruck, dass in Abhänigkeit von der Geschwindigkeit ab und an Drehungen verschluckt werden.

        So ein verhalten kenne ich von Gyros wenn man versucht Lagen aufgrund von Differenzen zu berechnen.
        Da braucht man dafür einen Beschleunigungssensor um Absolutwerte zu berechnen.

        Den richtigen Zählerstand kann ich nicht erfassen da ich n Zähler von 1800 habe.
        Würde auch gerne meinen Gaszähler ablesen, da stehe ich vor dem selben Problem.

        Nils

        paul53P 1 Antwort Letzte Antwort
        0
        • jmeister79J jmeister79

          Halli Hallo,
          ich nutze einen MQTT Adapter um meinen Ferraris Zähler abzufragen bin aber nicht ganz zufrieden mit dem Ergebnis.

          Die Tatsächliche kWH und die gezählten driften mit der Zeit sehr auseinander und ich kriege es nicht wirklich hin.
          Die Erfassung des Striches ist m.E. nach in Ordnung.

          Letztendlich fehlt eine Überprüfung auf den tatsächlichen Wert. Hat jemand sowas schonmal mit OCR via Webcam versucht?

          Ansonsten anbei mein Code für evtl. Zerfetzen:

          createState("javascript.0.EnergyCounter.Zaehlerstand", 0.0, {name: "Zaehlerstand Stromzähler", type: 'number', unit: 'kWh'});
          
          on({id: 'mqtt.0.Stromzaehler.Zaehlerdiode.Total', change: "ne"}, function (obj) {
          
              //MQTT schickt alle 60s einen Zählerstand, je anchdem wie oft die scheibe gedreht hat ist das mehr oder weniger 
              //2 Impulse sind eine Umdrehung. bei 1kWh/120U muss ich 240 Impulse haben bis ich eine kWh hochzähle
            var value = obj.state.val;
            var oldValue = obj.oldState.val;
            var diff = 205;
            if (getState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable").val < diff) {
              setState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable"/*Arbeitsvariable*/, (getState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable").val + getState("mqtt.0.Stromzaehler.Zaehlerdiode.Count").val));
            } else {
              var temp = getState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable").val + getState("mqtt.0.Stromzaehler.Zaehlerdiode.Count").val; // unbedignt nochmal aufaddieren
              var howMany = Math.floor(temp/diff);  // so oft ist er schon über 240 gelaufen\
              temp = temp % diff;   //rest
              setState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable"/*Arbeitsvariable*/, temp);
              setState("mqtt.0.Stromzaehler.Zaehlerdiode.Zaehlerstand"/*Zaehlerstand*/, (parseFloat(getState("mqtt.0.Stromzaehler.Zaehlerdiode.Zaehlerstand").val) + howMany));
            }
          //alternative berechnungsformel
          
          // dritter versuch, jedesmal wenn er größer als letztes erkennt, dann muss ich nicht auf 240 warten, jeder durchgang wird nur einmal erkannt
            
              var counter = 210* getState("javascript.0.EnergyCounter.Zaehlerstand").val;
              counter = counter+getState("mqtt.0.Stromzaehler.Zaehlerdiode.Count").val;
              var zaehlervalue = Math.round(100*counter/210)/100;
          
              setState("javascript.0.EnergyCounter.Zaehlerstand", (parseFloat(zaehlervalue)));
          });
          

          LG
          Nils

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @jmeister79
          Es gab schon mal einen Vorschlag: Einfach die Impulse zählen.

          <xml xmlns="https://developers.google.com/blockly/xml">
           <variables>
             <variable id="b?sP!eLU8R[m;e1E!]}:">zaehler</variable>
           </variables>
           <block type="variables_set" id="}{bk!ZEe2lfP;?Bi9J:*" x="62" y="37">
             <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
             <value name="VALUE">
               <block type="math_arithmetic" id="DX[`4M8Phef;?t%`Aw*o">
                 <field name="OP">MULTIPLY</field>
                 <value name="A">
                   <shadow type="math_number" id="a(U^tWWHNbkkB(})ElC.">
                     <field name="NUM">120</field>
                   </shadow>
                 </value>
                 <value name="B">
                   <shadow type="math_number" id="b:]?^c,h}^3r[%CNOxcz">
                     <field name="NUM">1</field>
                   </shadow>
                   <block type="get_value" id="#^$Wxrs*b)9XSWCFX#!j">
                     <field name="ATTR">val</field>
                     <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                   </block>
                 </value>
               </block>
             </value>
             <next>
               <block type="comment" id="/1!9gj-b?qdn,_`EvyJy">
                 <field name="COMMENT">120 Zählimpulse / kWh</field>
                 <next>
                   <block type="on_ext" id="@I`y^)e9;Pf3JVeYk*[+">
                     <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                     <field name="CONDITION">gt</field>
                     <field name="ACK_CONDITION"></field>
                     <value name="OID0">
                       <shadow type="field_oid" id="Sc$t7j^Yj1-(VfBj|vu_">
                         <field name="oid">default</field>
                       </shadow>
                     </value>
                     <statement name="STATEMENT">
                       <block type="math_change" id="V%CoR.Qwx9Zfqv2MfQ$p">
                         <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                         <value name="DELTA">
                           <shadow type="math_number" id="P51nz@|0;T$Sn0JCo61Y">
                             <field name="NUM">1</field>
                           </shadow>
                         </value>
                         <next>
                           <block type="update" id="#~i7UOh((^dAb22T+.t_">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                             <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="math_rndfixed" id="*#^aguW_V@]XEDT`M=Sb">
                                 <field name="n">2</field>
                                 <value name="x">
                                   <shadow type="math_number" id="WJcmAXN*0Yod#;6!kdC|">
                                     <field name="NUM">3.1234</field>
                                   </shadow>
                                   <block type="math_arithmetic" id="-^^1+c-.Cq(E_t4?6!mM">
                                     <field name="OP">DIVIDE</field>
                                     <value name="A">
                                       <shadow type="math_number" id="}VYUz#+6K9`+%KpuPINd">
                                         <field name="NUM">1</field>
                                       </shadow>
                                       <block type="variables_get" id="v;@E70f3]?OSr?m-11Bd">
                                         <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                                       </block>
                                     </value>
                                     <value name="B">
                                       <shadow type="math_number" id="v5rj*k+J`:;LMOu|t4Hv">
                                         <field name="NUM">120</field>
                                       </shadow>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </next>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
             </next>
           </block>
          </xml>
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

          TheBamT 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @jmeister79
            Es gab schon mal einen Vorschlag: Einfach die Impulse zählen.

            <xml xmlns="https://developers.google.com/blockly/xml">
             <variables>
               <variable id="b?sP!eLU8R[m;e1E!]}:">zaehler</variable>
             </variables>
             <block type="variables_set" id="}{bk!ZEe2lfP;?Bi9J:*" x="62" y="37">
               <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
               <value name="VALUE">
                 <block type="math_arithmetic" id="DX[`4M8Phef;?t%`Aw*o">
                   <field name="OP">MULTIPLY</field>
                   <value name="A">
                     <shadow type="math_number" id="a(U^tWWHNbkkB(})ElC.">
                       <field name="NUM">120</field>
                     </shadow>
                   </value>
                   <value name="B">
                     <shadow type="math_number" id="b:]?^c,h}^3r[%CNOxcz">
                       <field name="NUM">1</field>
                     </shadow>
                     <block type="get_value" id="#^$Wxrs*b)9XSWCFX#!j">
                       <field name="ATTR">val</field>
                       <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                     </block>
                   </value>
                 </block>
               </value>
               <next>
                 <block type="comment" id="/1!9gj-b?qdn,_`EvyJy">
                   <field name="COMMENT">120 Zählimpulse / kWh</field>
                   <next>
                     <block type="on_ext" id="@I`y^)e9;Pf3JVeYk*[+">
                       <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                       <field name="CONDITION">gt</field>
                       <field name="ACK_CONDITION"></field>
                       <value name="OID0">
                         <shadow type="field_oid" id="Sc$t7j^Yj1-(VfBj|vu_">
                           <field name="oid">default</field>
                         </shadow>
                       </value>
                       <statement name="STATEMENT">
                         <block type="math_change" id="V%CoR.Qwx9Zfqv2MfQ$p">
                           <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                           <value name="DELTA">
                             <shadow type="math_number" id="P51nz@|0;T$Sn0JCo61Y">
                               <field name="NUM">1</field>
                             </shadow>
                           </value>
                           <next>
                             <block type="update" id="#~i7UOh((^dAb22T+.t_">
                               <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                               <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                               <field name="WITH_DELAY">FALSE</field>
                               <value name="VALUE">
                                 <block type="math_rndfixed" id="*#^aguW_V@]XEDT`M=Sb">
                                   <field name="n">2</field>
                                   <value name="x">
                                     <shadow type="math_number" id="WJcmAXN*0Yod#;6!kdC|">
                                       <field name="NUM">3.1234</field>
                                     </shadow>
                                     <block type="math_arithmetic" id="-^^1+c-.Cq(E_t4?6!mM">
                                       <field name="OP">DIVIDE</field>
                                       <value name="A">
                                         <shadow type="math_number" id="}VYUz#+6K9`+%KpuPINd">
                                           <field name="NUM">1</field>
                                         </shadow>
                                         <block type="variables_get" id="v;@E70f3]?OSr?m-11Bd">
                                           <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                                         </block>
                                       </value>
                                       <value name="B">
                                         <shadow type="math_number" id="v5rj*k+J`:;LMOu|t4Hv">
                                           <field name="NUM">120</field>
                                         </shadow>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </next>
                         </block>
                       </statement>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
            </xml>
            

            TheBamT Offline
            TheBamT Offline
            TheBam
            schrieb am zuletzt editiert von
            #5

            Hallo schaut euch mal diesen Post an.

            Damit kann man nicht nur Wasser zähler auch elektro und Gas ablesen.

            https://forum.iobroker.net/topic/36622/wasserzähler-version-2-all-in-device/141

            jmeister79J 1 Antwort Letzte Antwort
            0
            • jmeister79J jmeister79

              @paul53 Total wird noch nicht aufgezeichnet. Habe das jetzt mal gemacht und melde mich dann.

              Ich habe den Eindruck, dass in Abhänigkeit von der Geschwindigkeit ab und an Drehungen verschluckt werden.

              So ein verhalten kenne ich von Gyros wenn man versucht Lagen aufgrund von Differenzen zu berechnen.
              Da braucht man dafür einen Beschleunigungssensor um Absolutwerte zu berechnen.

              Den richtigen Zählerstand kann ich nicht erfassen da ich n Zähler von 1800 habe.
              Würde auch gerne meinen Gaszähler ablesen, da stehe ich vor dem selben Problem.

              Nils

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @jmeister79
              Kann es sein, dass nicht jeder Impuls gesendet wird, sondern die Zahl der Impulse (x 2) innerhalb des Sendezyklus (60 s) ? Dann muss man auf "wurde aktualisiert" triggern, da die Zahl der Impulse von Zyklus zu Zyklus gleich bleiben kann (wenn die Leistung konstant ist). Das Blockly dazu sollte dann so funktionieren:

              Blockly_temp.JPG

              <xml xmlns="https://developers.google.com/blockly/xml">
               <variables>
                 <variable id="b?sP!eLU8R[m;e1E!]}:">zaehler</variable>
               </variables>
               <block type="variables_set" id="}{bk!ZEe2lfP;?Bi9J:*" x="62" y="37">
                 <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                 <value name="VALUE">
                   <block type="math_arithmetic" id="DX[`4M8Phef;?t%`Aw*o">
                     <field name="OP">MULTIPLY</field>
                     <value name="A">
                       <shadow type="math_number" id="a(U^tWWHNbkkB(})ElC.">
                         <field name="NUM">240</field>
                       </shadow>
                     </value>
                     <value name="B">
                       <shadow type="math_number" id="b:]?^c,h}^3r[%CNOxcz">
                         <field name="NUM">1</field>
                       </shadow>
                       <block type="get_value" id="#^$Wxrs*b)9XSWCFX#!j">
                         <field name="ATTR">val</field>
                         <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                       </block>
                     </value>
                   </block>
                 </value>
                 <next>
                   <block type="comment" id="/1!9gj-b?qdn,_`EvyJy">
                     <field name="COMMENT">count (2 Impulse) pro Zyklus</field>
                     <next>
                       <block type="on_ext" id="@I`y^)e9;Pf3JVeYk*[+">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                         <field name="CONDITION">any</field>
                         <field name="ACK_CONDITION"></field>
                         <value name="OID0">
                           <shadow type="field_oid" id="Sc$t7j^Yj1-(VfBj|vu_">
                             <field name="oid">default</field>
                           </shadow>
                         </value>
                         <statement name="STATEMENT">
                           <block type="math_change" id="V%CoR.Qwx9Zfqv2MfQ$p">
                             <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                             <value name="DELTA">
                               <shadow type="math_number" id="P51nz@|0;T$Sn0JCo61Y">
                                 <field name="NUM">1</field>
                               </shadow>
                               <block type="on_source" id="JiW9c=mSn![QI/)lvwtb">
                                 <field name="ATTR">state.val</field>
                               </block>
                             </value>
                             <next>
                               <block type="update" id="#~i7UOh((^dAb22T+.t_">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                 <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                                 <field name="WITH_DELAY">FALSE</field>
                                 <value name="VALUE">
                                   <block type="math_rndfixed" id="*#^aguW_V@]XEDT`M=Sb">
                                     <field name="n">2</field>
                                     <value name="x">
                                       <shadow type="math_number" id="WJcmAXN*0Yod#;6!kdC|">
                                         <field name="NUM">3.1234</field>
                                       </shadow>
                                       <block type="math_arithmetic" id="-^^1+c-.Cq(E_t4?6!mM">
                                         <field name="OP">DIVIDE</field>
                                         <value name="A">
                                           <shadow type="math_number" id="}VYUz#+6K9`+%KpuPINd">
                                             <field name="NUM">1</field>
                                           </shadow>
                                           <block type="variables_get" id="v;@E70f3]?OSr?m-11Bd">
                                             <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                                           </block>
                                         </value>
                                         <value name="B">
                                           <shadow type="math_number" id="v5rj*k+J`:;LMOu|t4Hv">
                                             <field name="NUM">240</field>
                                           </shadow>
                                         </value>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </next>
                           </block>
                         </statement>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
              </xml>
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

              jmeister79J 1 Antwort Letzte Antwort
              0
              • TheBamT TheBam

                Hallo schaut euch mal diesen Post an.

                Damit kann man nicht nur Wasser zähler auch elektro und Gas ablesen.

                https://forum.iobroker.net/topic/36622/wasserzähler-version-2-all-in-device/141

                jmeister79J Offline
                jmeister79J Offline
                jmeister79
                schrieb am zuletzt editiert von
                #7

                @ThaBam das ist n krasses ding. danke

                1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @jmeister79 sagte:

                  //MQTT schickt alle 60s einen Zählerstand,

                  Was genau beinhaltet der Datenpunkt "mqtt.0.Stromzaehler.Zaehlerdiode.Total" (History-Tabelle) ?

                  @jmeister79 sagte in Idee zum ablesen des Stromzählers.:

                  setState("mqtt.0.Stromzaehler.Zaehlerdiode.Arbeitsvariable"/Arbeitsvariable/, temp);

                  Keine eigenen Datenpunkte unter "fremdem" Namensraum ("mqtt.0") verwenden !

                  jmeister79J Offline
                  jmeister79J Offline
                  jmeister79
                  schrieb am zuletzt editiert von
                  #8

                  @paul53 hier jetzt einmal die Wertetabelle des letzten Tages von mqtt.0.Stromzaehler.Zaehlerdiode.Count:

                  6	true		2020-09-29 09:47:28.456	
                  7	true		2020-09-29 09:46:28.396	
                  7	true		2020-09-29 09:44:29.069	
                  6	true		2020-09-29 09:43:28.210	
                  6	true		2020-09-29 09:42:28.149	
                  5	true		2020-09-29 09:41:27.976	
                  6	true		2020-09-29 09:40:27.915	
                  5	true		2020-09-29 09:39:27.856	
                  5	true		2020-09-29 09:38:27.811	
                  6	true		2020-09-29 09:37:27.732	
                  5	true		2020-09-29 09:36:27.650	
                  5	true		2020-09-29 09:33:27.466	
                  4	true		2020-09-29 09:32:27.403	
                  5	true		2020-09-29 09:31:27.343	
                  5	true		2020-09-29 09:29:27.224	
                  4	true		2020-09-29 09:28:27.164	
                  5	true		2020-09-29 09:27:27.098	
                  5	true		2020-09-29 09:25:27.004	
                  6	true		2020-09-29 09:24:26.919	
                  6	true		2020-09-29 09:22:26.798	
                  7	true		2020-09-29 09:21:26.731	
                  6	true		2020-09-29 09:20:27.408	
                  7	true		2020-09-29 09:19:26.612	
                  7	true		2020-09-29 09:17:26.492	
                  6	true		2020-09-29 09:16:26.431	
                  7	true		2020-09-29 09:15:26.372	
                  7	true		2020-09-29 09:14:26.338	
                  6	true		2020-09-29 09:13:27.892	
                  7	true		2020-09-29 09:12:27.239	
                  6	true		2020-09-29 09:11:26.132	
                  6	true		2020-09-29 09:09:26.011	
                  5	true		2020-09-29 09:08:28.776	
                  6	true		2020-09-29 09:07:29.121	
                  6	true		2020-09-29 09:06:25.831	
                  5	true		2020-09-29 09:05:25.833	
                  5	true		2020-09-29 08:57:25.257	
                  4	true		2020-09-29 08:56:25.195	
                  5	true		2020-09-29 08:55:25.157	
                  5	true		2020-09-29 08:50:24.833	
                  4	true		2020-09-29 08:49:24.774	
                  5	true		2020-09-29 08:48:25.479	
                  6	true		2020-09-29 08:47:24.652	
                  5	true		2020-09-29 08:46:24.630	
                  5	true		2020-09-29 08:35:23.913	
                  6	true		2020-09-29 08:34:23.853	
                  5	true		2020-09-29 08:33:23.793	
                  5	true		2020-09-29 08:26:23.353	
                  7	true		2020-09-29 08:25:23.285	
                  6	true		2020-09-29 08:24:23.224	
                  7	true		2020-09-29 08:23:23.161
                  
                  1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @jmeister79
                    Kann es sein, dass nicht jeder Impuls gesendet wird, sondern die Zahl der Impulse (x 2) innerhalb des Sendezyklus (60 s) ? Dann muss man auf "wurde aktualisiert" triggern, da die Zahl der Impulse von Zyklus zu Zyklus gleich bleiben kann (wenn die Leistung konstant ist). Das Blockly dazu sollte dann so funktionieren:

                    Blockly_temp.JPG

                    <xml xmlns="https://developers.google.com/blockly/xml">
                     <variables>
                       <variable id="b?sP!eLU8R[m;e1E!]}:">zaehler</variable>
                     </variables>
                     <block type="variables_set" id="}{bk!ZEe2lfP;?Bi9J:*" x="62" y="37">
                       <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                       <value name="VALUE">
                         <block type="math_arithmetic" id="DX[`4M8Phef;?t%`Aw*o">
                           <field name="OP">MULTIPLY</field>
                           <value name="A">
                             <shadow type="math_number" id="a(U^tWWHNbkkB(})ElC.">
                               <field name="NUM">240</field>
                             </shadow>
                           </value>
                           <value name="B">
                             <shadow type="math_number" id="b:]?^c,h}^3r[%CNOxcz">
                               <field name="NUM">1</field>
                             </shadow>
                             <block type="get_value" id="#^$Wxrs*b)9XSWCFX#!j">
                               <field name="ATTR">val</field>
                               <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <next>
                         <block type="comment" id="/1!9gj-b?qdn,_`EvyJy">
                           <field name="COMMENT">count (2 Impulse) pro Zyklus</field>
                           <next>
                             <block type="on_ext" id="@I`y^)e9;Pf3JVeYk*[+">
                               <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                               <field name="CONDITION">any</field>
                               <field name="ACK_CONDITION"></field>
                               <value name="OID0">
                                 <shadow type="field_oid" id="Sc$t7j^Yj1-(VfBj|vu_">
                                   <field name="oid">default</field>
                                 </shadow>
                               </value>
                               <statement name="STATEMENT">
                                 <block type="math_change" id="V%CoR.Qwx9Zfqv2MfQ$p">
                                   <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                                   <value name="DELTA">
                                     <shadow type="math_number" id="P51nz@|0;T$Sn0JCo61Y">
                                       <field name="NUM">1</field>
                                     </shadow>
                                     <block type="on_source" id="JiW9c=mSn![QI/)lvwtb">
                                       <field name="ATTR">state.val</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="update" id="#~i7UOh((^dAb22T+.t_">
                                       <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                       <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                                       <field name="WITH_DELAY">FALSE</field>
                                       <value name="VALUE">
                                         <block type="math_rndfixed" id="*#^aguW_V@]XEDT`M=Sb">
                                           <field name="n">2</field>
                                           <value name="x">
                                             <shadow type="math_number" id="WJcmAXN*0Yod#;6!kdC|">
                                               <field name="NUM">3.1234</field>
                                             </shadow>
                                             <block type="math_arithmetic" id="-^^1+c-.Cq(E_t4?6!mM">
                                               <field name="OP">DIVIDE</field>
                                               <value name="A">
                                                 <shadow type="math_number" id="}VYUz#+6K9`+%KpuPINd">
                                                   <field name="NUM">1</field>
                                                 </shadow>
                                                 <block type="variables_get" id="v;@E70f3]?OSr?m-11Bd">
                                                   <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                                                 </block>
                                               </value>
                                               <value name="B">
                                                 <shadow type="math_number" id="v5rj*k+J`:;LMOu|t4Hv">
                                                   <field name="NUM">240</field>
                                                 </shadow>
                                               </value>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                               </statement>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                    </xml>
                    

                    jmeister79J Offline
                    jmeister79J Offline
                    jmeister79
                    schrieb am zuletzt editiert von jmeister79
                    #9

                    @paul53 said in Idee zum ablesen des Stromzählers.:

                    @jmeister79
                    Kann es sein, dass nicht jeder Impuls gesendet wird, sondern die Zahl der Impulse (x 2) innerhalb des Sendezyklus (60 s) ? Dann muss man auf "wurde aktualisiert" triggern, da die Zahl der Impulse von Zyklus zu Zyklus gleich bleiben kann (wenn die Leistung konstant ist). Das Blockly dazu sollte dann so funktionieren:

                    Blockly_temp.JPG

                    <xml xmlns="https://developers.google.com/blockly/xml">
                     <variables>
                       <variable id="b?sP!eLU8R[m;e1E!]}:">zaehler</variable>
                     </variables>
                     <block type="variables_set" id="}{bk!ZEe2lfP;?Bi9J:*" x="62" y="37">
                       <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                       <value name="VALUE">
                         <block type="math_arithmetic" id="DX[`4M8Phef;?t%`Aw*o">
                           <field name="OP">MULTIPLY</field>
                           <value name="A">
                             <shadow type="math_number" id="a(U^tWWHNbkkB(})ElC.">
                               <field name="NUM">240</field>
                             </shadow>
                           </value>
                           <value name="B">
                             <shadow type="math_number" id="b:]?^c,h}^3r[%CNOxcz">
                               <field name="NUM">1</field>
                             </shadow>
                             <block type="get_value" id="#^$Wxrs*b)9XSWCFX#!j">
                               <field name="ATTR">val</field>
                               <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <next>
                         <block type="comment" id="/1!9gj-b?qdn,_`EvyJy">
                           <field name="COMMENT">count (2 Impulse) pro Zyklus</field>
                           <next>
                             <block type="on_ext" id="@I`y^)e9;Pf3JVeYk*[+">
                               <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                               <field name="CONDITION">any</field>
                               <field name="ACK_CONDITION"></field>
                               <value name="OID0">
                                 <shadow type="field_oid" id="Sc$t7j^Yj1-(VfBj|vu_">
                                   <field name="oid">default</field>
                                 </shadow>
                               </value>
                               <statement name="STATEMENT">
                                 <block type="math_change" id="V%CoR.Qwx9Zfqv2MfQ$p">
                                   <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                                   <value name="DELTA">
                                     <shadow type="math_number" id="P51nz@|0;T$Sn0JCo61Y">
                                       <field name="NUM">1</field>
                                     </shadow>
                                     <block type="on_source" id="JiW9c=mSn![QI/)lvwtb">
                                       <field name="ATTR">state.val</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="update" id="#~i7UOh((^dAb22T+.t_">
                                       <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                       <field name="OID">javascript.0.EnergyCounter.Zaehlerstand</field>
                                       <field name="WITH_DELAY">FALSE</field>
                                       <value name="VALUE">
                                         <block type="math_rndfixed" id="*#^aguW_V@]XEDT`M=Sb">
                                           <field name="n">2</field>
                                           <value name="x">
                                             <shadow type="math_number" id="WJcmAXN*0Yod#;6!kdC|">
                                               <field name="NUM">3.1234</field>
                                             </shadow>
                                             <block type="math_arithmetic" id="-^^1+c-.Cq(E_t4?6!mM">
                                               <field name="OP">DIVIDE</field>
                                               <value name="A">
                                                 <shadow type="math_number" id="}VYUz#+6K9`+%KpuPINd">
                                                   <field name="NUM">1</field>
                                                 </shadow>
                                                 <block type="variables_get" id="v;@E70f3]?OSr?m-11Bd">
                                                   <field name="VAR" id="b?sP!eLU8R[m;e1E!]}:">zaehler</field>
                                                 </block>
                                               </value>
                                               <value name="B">
                                                 <shadow type="math_number" id="v5rj*k+J`:;LMOu|t4Hv">
                                                   <field name="NUM">240</field>
                                                 </shadow>
                                               </value>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                               </statement>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                    </xml>
                    

                    ich werte aber ja den totalstand aus und nicht die anzahl der impulse, total wird im mqtt inkrementiert. gute idee, hatte auch kurz mich gefreut

                    1 Antwort Letzte Antwort
                    0
                    • jmeister79J Offline
                      jmeister79J Offline
                      jmeister79
                      schrieb am zuletzt editiert von
                      #10

                      Hi,
                      ich werde mal an der Wurzel anfangen.

                      Mal sehen ob der Sensor überhaupt tut was er soll. Schließlich kann da ja auch ein Sfotware oder ableseproblem sein.
                      Ich habe mal den Stand von Total aufgeschrieben und den aktuellen tatsächlichen Zählerstand.

                      Ichw erde das mal n paar tage laufen lassen.

                      Die Differenz muss ja wie folg berechnet sein

                      Diff(zähler) = Zählerstand(neu)-Zählerstand(alt)
                      Diff(mqtt) = [total(neu)-total(alt)]/(2*120U/kWh)

                      die Zahlen müssten dann identisch sein. Wenn nicht, dann erfasse ich nicht richtig oder der Zähler ist nicht geeicht.
                      Letzteres kann man durch mehrmalige versuche ausschließen.

                      Das hatte ich schonmal softwareseitig versucht aber dabei nicht auf total geachtet. Da waren die abwichungen total invariabel.

                      Ich habe die Vermutung, dass der Sensor bei sehr schnell drehender Scheibe ab und zu entweder beide oder eine Flanke verpasst, weil er den Roten Strich nicht sieht.

                      Nils

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • jmeister79J jmeister79

                        Hi,
                        ich werde mal an der Wurzel anfangen.

                        Mal sehen ob der Sensor überhaupt tut was er soll. Schließlich kann da ja auch ein Sfotware oder ableseproblem sein.
                        Ich habe mal den Stand von Total aufgeschrieben und den aktuellen tatsächlichen Zählerstand.

                        Ichw erde das mal n paar tage laufen lassen.

                        Die Differenz muss ja wie folg berechnet sein

                        Diff(zähler) = Zählerstand(neu)-Zählerstand(alt)
                        Diff(mqtt) = [total(neu)-total(alt)]/(2*120U/kWh)

                        die Zahlen müssten dann identisch sein. Wenn nicht, dann erfasse ich nicht richtig oder der Zähler ist nicht geeicht.
                        Letzteres kann man durch mehrmalige versuche ausschließen.

                        Das hatte ich schonmal softwareseitig versucht aber dabei nicht auf total geachtet. Da waren die abwichungen total invariabel.

                        Ich habe die Vermutung, dass der Sensor bei sehr schnell drehender Scheibe ab und zu entweder beide oder eine Flanke verpasst, weil er den Roten Strich nicht sieht.

                        Nils

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von paul53
                        #11

                        @jmeister79 sagte:

                        Diff(mqtt) = [total(neu)-total(alt)]/(2*120U/kWh)

                        Bei der Verwendung von "count" kann man sich das Merken des alten Wertes sparen (s. Script).

                        @jmeister79 sagte in Idee zum ablesen des Stromzählers.:

                        die Wertetabelle des letzten Tages von mqtt.0.Stromzaehler.Zaehlerdiode.Count:

                        Aus der Tabelle kann man entnehmen, dass die maximale Leistung ca. 1,6 kW (6 bis 7 counts / min) beträgt. Kann das passen ?

                        EDIT: Auffällig ist, dass nicht jede Minute ein Wert aufgezeichnet wird und dass Werte von 0 ... 3 nicht vorkommen. Hast Du etwa "Nur Änderungen aufzeichnen" aktiviert ?

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                        jmeister79J 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @jmeister79 sagte:

                          Diff(mqtt) = [total(neu)-total(alt)]/(2*120U/kWh)

                          Bei der Verwendung von "count" kann man sich das Merken des alten Wertes sparen (s. Script).

                          @jmeister79 sagte in Idee zum ablesen des Stromzählers.:

                          die Wertetabelle des letzten Tages von mqtt.0.Stromzaehler.Zaehlerdiode.Count:

                          Aus der Tabelle kann man entnehmen, dass die maximale Leistung ca. 1,6 kW (6 bis 7 counts / min) beträgt. Kann das passen ?

                          EDIT: Auffällig ist, dass nicht jede Minute ein Wert aufgezeichnet wird und dass Werte von 0 ... 3 nicht vorkommen. Hast Du etwa "Nur Änderungen aufzeichnen" aktiviert ?

                          jmeister79J Offline
                          jmeister79J Offline
                          jmeister79
                          schrieb am zuletzt editiert von
                          #12

                          @paul53 das kann durchaus sein, da ich unseren Pool geheizt haben. (Fuck erschreckend)

                          Ich zeichne alle Werte auf, auch gleiche.

                          Nils

                          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

                          491

                          Online

                          32.9k

                          Benutzer

                          83.0k

                          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