Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. Strommessung E-Herd

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Strommessung E-Herd

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Andersmacher @mcm1957 last edited by

      @mcm57 Tatsächlich kenne ich die EM gar nicht und habe meine Erläuterungen ganz "allgemein" auf ein-/mehrphasige Messungen bezogen.
      Wenn die EM aber sogar den Phasenwinkel zwischen Strom und Spannung "ignorieren", sind das ja gar keine Wirkleistungsmeßgeräte. Dann kommt noch genau das Problem hinzu, das Du beschreibst:
      Die korrekte (Wirk)leistung kann nur ermittelt werden, wenn (zufällig oder weil es eben "normale" Heizplatten und z. B. kein Induktionsherd ist) der Phasenwinkel 0, der cos(phi) also 1 ist. Und das ganze auch nur dann, wenn nur eine Phase durch den Wandler geführt wird oder die beiden anderen Null sind!

      Ich bin jetzt zu faul zu überlegen ob dieser "Fehler" des EM hier von Nutzen ist.

      Ist er nicht.

      Dass das Messverfahren prinzipiell geeignet wäre bezweifle ich aber seeeeehr stark. Sonst würden EVUs wohl kaum 3 Wandler einbauenw enn einer auch genügt :-).

      Genau! Denn eine etwaige Phasenverschiebung zwischen Strom und Spannung in einer Phase ist erst einmal vollkommen unabhängig von der Phasenverschiebung der drei Spannungen im Drehstromsystem.
      Ersteres kann "zufällig" ein korrektes Meßergebnis bringen, nämlich wenn rein ohmsche Last vorliegt und damit die Phasenverschiebung 0 ist.
      Die 3 Phasenspannungen des Drehstromsystems haben hingegen immer 120° Verschiebung und die daraus resultierende Ströme werden, wenn ich sie zusammen durch einen Wandler führe, daher keinen Meßwert ergeben, aus dem die Gesamtleistung ermittelt werden kann. Ausnahme: Nur einer dieser Ströme ist größer als 0 (siehe meinen 2. Post).

      mcm1957 1 Reply Last reply Reply Quote 0
      • mcm1957
        mcm1957 @Andersmacher last edited by

        @andersmacher

        KORREKTUR:

        Ich muss ein Korrektur zum EM anbringen.

        Der Shelly EM misst den Phasenwinkel und zeigt ihn auch an.
        Ich habe das mit der Messung der PM verwechselt. Dieser misst nur Spannung und Strom (lt. Diskussion im shelly Forum)
        Der Shelly 3EM misst ebenfalls den Phasenwinkel.

        Ob die Plugs den Phasenwinkel messen weiß ich nicht. Ebenso weiß ich nicht ob es mit der 2er Serie da Änderungen gab.

        1 Reply Last reply Reply Quote 0
        • Basti97
          Basti97 Most Active last edited by

          Alternative wäre auch 3 PZEM004 Module funktoniert bei mir prima zusammen.

          1 Reply Last reply Reply Quote 0
          • M
            ManfredHi last edited by

            Ich dachte es gebe hier eine einfache Möglichkeit, einfach den tatsächlichen Stromverbrauch des E-Herdes zu messen.

            Homoran 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @ManfredHi last edited by

              @manfredhi sagte in Strommessung E-Herd:

              Ich dachte es gebe hier eine einfache Möglichkeit, einfach den tatsächlichen Stromverbrauch des E-Herdes zu messen.

              was willst du uns damit sagen?

              M 1 Reply Last reply Reply Quote 0
              • M
                ManfredHi @Homoran last edited by

                @homoran sagte in Strommessung E-Herd:

                was willst du uns damit sagen?

                naja das hört sich alles ziemlich kompliziert an, was hier so geschrieben wird. Dachte es gibt etwas, was in den Zählerkasten eingebaut wird und einfach den Strom misst, der vom E-Herd (über die 3 Phasen) verbraucht wird.

                Homoran mcm1957 A 3 Replies Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @ManfredHi last edited by

                  @manfredhi sagte in Strommessung E-Herd:

                  Dachte es gibt etwas, was in den Zählerkasten eingebaut wird und einfach den Strom misst, der vom E-Herd (über die 3 Phasen) verbraucht wird.

                  @homoran sagte in Strommessung E-Herd:

                  Da kannst du dir vom Elektriker einen SDM72 einbauen lassen und per modbus auslesen.

                  1 Reply Last reply Reply Quote 0
                  • mcm1957
                    mcm1957 @ManfredHi last edited by mcm1957

                    @manfredhi
                    Ok ja gibt es natürlich.
                    Shelly 3EM tut das z.B. Detto 3EM pro.
                    Ebenso jeder 3 Phasenzähler mit Schnittstelle.
                    Da ich hier keine Erfahrung habe will ich keine Typen nennen.

                    Einbau im Verteilerkasten sollte durch Elektriker erfolgen.

                    Nachtrag Shrllies haben wlan. Aber wo wlan ist gibts im Bedarfsfall auch kabel via repeater.

                    1 Reply Last reply Reply Quote 0
                    • A
                      Andersmacher @ManfredHi last edited by

                      @manfredhi Ich bin davon ausgegangen, daß Du mit Stromverbrauch (eher ein umgangssprachlicher Ausdruck) eigentlich (Wirk)energieverbauch (eher der Fachbegriff) gemeint hast, also das, was der Zähler auch mißt und anzeigt. Tut mir leid, wenn ich da ´was "losgetreten habe", was Dich nun "frustriert", aber es ist ja auch nicht hilfreich, etwas zu messen, was eigentlich nicht das ist, was man will. Darauf wollte ich nur hinweisen. Was Du willst, ist nicht kompliziert zu messen (siehe @Homoran ´s SDM72-Vorschlag), aber Du brauchst dazu eben ein Meßgerät, das dazu auch in der Lage ist. Für Wirkleistung/-energie muß im allgemeinen Fall da leider Strom und Spannung inkl. des Phasenwinkels der beiden zueinander und dann im Drehstromnetz das ganze auch noch dreiphasig gemessen werden. Einfacher ginge das eben leider nur, wenn man sicher wüßte, daß es sich nur um rein ohmsche Last handelt (dann braucht man den Phasenwinkel nicht messen, weil der dann immer 0 wäre) oder wenn der Verbraucher symmetrisch ist (dann braucht man nur eine Phase messen und mit 3 multiplizieren).

                      1 Reply Last reply Reply Quote 0
                      • Basti97
                        Basti97 Most Active last edited by

                        Kann man ohne großen Aufwand in der Tasmota Seite für den 630 die Anzeige Voltage in Spannung( Current in Strom usw ändern. Ich habe es bereits probiert das ganze zu ersetzen aber da bekomme ich immer beil kompilieren einen Fehler.

                        /*
                          xnrg_10_sdm630.ino - Eastron SDM630-Modbus energy meter support for Tasmota
                        
                          Copyright (C) 2021  Gennaro Tortone and Theo Arends
                        
                          This program is free software: you can redistribute it and/or modify
                          it under the terms of the GNU General Public License as published by
                          the Free Software Foundation, either version 3 of the License, or
                          (at your option) any later version.
                        
                          This program is distributed in the hope that it will be useful,
                          but WITHOUT ANY WARRANTY; without even the implied warranty of
                          MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                          GNU General Public License for more details.
                        
                          You should have received a copy of the GNU General Public License
                          along with this program.  If not, see <http://www.gnu.org/licenses/>.
                        */
                        
                        #ifdef USE_ENERGY_SENSOR
                        #ifdef USE_SDM630
                        /*********************************************************************************************\
                         * Eastron SDM630-Modbus energy meter
                         *
                         * Based on: https://github.com/reaper7/SDM_Energy_Meter
                        \*********************************************************************************************/
                        
                        #define XNRG_10             10
                        
                        // can be user defined in my_user_config.h
                        #ifndef SDM630_SPEED
                          #define SDM630_SPEED      9600    // default SDM630 Modbus address
                        #endif
                        // can be user defined in my_user_config.h
                        #ifndef SDM630_ADDR
                          #define SDM630_ADDR       1       // default SDM630 Modbus address
                        #endif
                        
                        #include <TasmotaModbus.h>
                        TasmotaModbus *Sdm630Modbus;
                        
                        const uint16_t sdm630_start_addresses[] {
                                   // 3P4 3P3 1P2 Unit Description
                          0x0000,  //  +   -   +   V    Phase 1 line to neutral volts
                          0x0002,  //  +   -   -   V    Phase 2 line to neutral volts
                          0x0004,  //  +   -   -   V    Phase 3 line to neutral volts
                          0x0006,  //  +   +   +   A    Phase 1 current
                          0x0008,  //  +   +   -   A    Phase 2 current
                          0x000A,  //  +   +   -   A    Phase 3 current
                          0x000C,  //  +   -   +   W    Phase 1 power
                          0x000E,  //  +   -   +   W    Phase 2 power
                          0x0010,  //  +   -   -   W    Phase 3 power
                          0x0018,  //  +   -   +   VAr  Phase 1 volt amps reactive
                          0x001A,  //  +   -   -   VAr  Phase 2 volt amps reactive
                          0x001C,  //  +   -   -   VAr  Phase 3 volt amps reactive
                          0x001E,  //  +   -   +        Phase 1 power factor
                          0x0020,  //  +   -   -        Phase 2 power factor
                          0x0022,  //  +   -   -        Phase 3 power factor
                          0x0046,  //  +   +   +   Hz   Frequency of supply voltages
                          0x0160,  //  +   +   +   kWh  Phase 1 export active energy
                          0x0162,  //  +   +   +   kWh  Phase 2 export active energy
                          0x0164,  //  +   +   +   kWh  Phase 3 export active energy
                        //#ifdef SDM630_IMPORT
                          0x015A,  //  +   +   +   kWh  Phase 1 import active energy
                          0x015C,  //  +   +   +   kWh  Phase 2 import active energy
                          0x015E,  //  +   +   +   kWh  Phase 3 import active energy
                        //#endif  // SDM630_IMPORT
                          0x0156   //  +   +   +   kWh  Total active energy
                        };
                        
                        struct SDM630 {
                          uint8_t read_state = 0;
                          uint8_t send_retry = 0;
                        } Sdm630;
                        
                        /*********************************************************************************************/
                        
                        void SDM630Every250ms(void)
                        {
                          bool data_ready = Sdm630Modbus->ReceiveReady();
                        
                          if (data_ready) {
                            uint8_t buffer[14];  // At least 5 + (2 * 2) = 9
                        
                            uint32_t error = Sdm630Modbus->ReceiveBuffer(buffer, 2);
                            AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, Sdm630Modbus->ReceiveCount());
                        
                            if (error) {
                              AddLog(LOG_LEVEL_DEBUG, PSTR("SDM: SDM630 error %d"), error);
                            } else {
                              Energy->data_valid[0] = 0;
                              Energy->data_valid[1] = 0;
                              Energy->data_valid[2] = 0;
                        
                              //  0  1  2  3  4  5  6  7  8
                              // SA FC BC Fh Fl Sh Sl Cl Ch
                              // 01 04 04 43 66 33 34 1B 38 = 230.2 Volt
                              float value;
                              ((uint8_t*)&value)[3] = buffer[3];   // Get float values
                              ((uint8_t*)&value)[2] = buffer[4];
                              ((uint8_t*)&value)[1] = buffer[5];
                              ((uint8_t*)&value)[0] = buffer[6];
                        
                              switch(Sdm630.read_state) {
                                case 0:
                                  Energy->voltage[0] = value;
                                  break;
                        
                                case 1:
                                  Energy->voltage[1] = value;
                                  break;
                        
                                case 2:
                                  Energy->voltage[2] = value;
                                  break;
                        
                                case 3:
                                  Energy->current[0] = value;
                                  break;
                        
                                case 4:
                                  Energy->current[1] = value;
                                  break;
                        
                                case 5:
                                  Energy->current[2] = value;
                                  break;
                        
                                case 6:
                                  Energy->active_power[0] = value;
                                  break;
                        
                                case 7:
                                  Energy->active_power[1] = value;
                                  break;
                        
                                case 8:
                                  Energy->active_power[2] = value;
                                  break;
                        
                                case 9:
                                  Energy->reactive_power[0] = value;
                                  break;
                        
                                case 10:
                                  Energy->reactive_power[1] = value;
                                  break;
                        
                                case 11:
                                  Energy->reactive_power[2] = value;
                                  break;
                        
                                case 12:
                                  Energy->power_factor[0] = value;
                                  break;
                        
                                case 13:
                                  Energy->power_factor[1] = value;
                                  break;
                        
                                case 14:
                                  Energy->power_factor[2] = value;
                                  break;
                        
                                case 15:
                                  Energy->frequency[0] = value;
                                  break;
                        
                                case 16:
                                  Energy->export_active[0] = value;
                                  break;
                        
                                case 17:
                                  Energy->export_active[1] = value;
                                  break;
                        
                                case 18:
                                  Energy->export_active[2] = value;
                                  break;
                        
                                case 19:
                                  Energy->import_active[0] = value;
                                  break;
                        
                                case 20:
                                  Energy->import_active[1] = value;
                                  break;
                        
                                case 21:
                                  Energy->import_active[2] = value;
                                  break;
                        
                                case 22:
                        //          Energy->import_active[0] = value;
                                  EnergyUpdateTotal();
                                  break;
                              }
                        
                              Sdm630.read_state++;
                              if (sizeof(sdm630_start_addresses)/2 == Sdm630.read_state) {
                                Sdm630.read_state = 0;
                              }
                            }
                          } // end data ready
                        
                          if (0 == Sdm630.send_retry || data_ready) {
                            Sdm630.send_retry = 5;
                            Sdm630Modbus->Send(SDM630_ADDR, 0x04, sdm630_start_addresses[Sdm630.read_state], 2);
                          } else {
                            Sdm630.send_retry--;
                          }
                        }
                        
                        void Sdm630SnsInit(void)
                        {
                          Sdm630Modbus = new TasmotaModbus(Pin(GPIO_SDM630_RX), Pin(GPIO_SDM630_TX), Pin(GPIO_NRG_MBS_TX_ENA));
                          uint8_t result = Sdm630Modbus->Begin(SDM630_SPEED);
                          if (result) {
                            if (2 == result) { ClaimSerial(); }
                            Energy->phase_count = 3;
                            Energy->frequency_common = true;             // Use common frequency
                          } else {
                            TasmotaGlobal.energy_driver = ENERGY_NONE;
                          }
                        }
                        
                        void Sdm630DrvInit(void)
                        {
                          if (PinUsed(GPIO_SDM630_RX) && PinUsed(GPIO_SDM630_TX)) {
                            TasmotaGlobal.energy_driver = XNRG_10;
                          }
                        }
                        
                        /*********************************************************************************************\
                         * Interface
                        \*********************************************************************************************/
                        
                        bool Xnrg10(uint32_t function)
                        {
                          bool result = false;
                        
                          switch (function) {
                            case FUNC_EVERY_250_MSECOND:
                              SDM630Every250ms();
                              break;
                            case FUNC_INIT:
                              Sdm630SnsInit();
                              break;
                            case FUNC_PRE_INIT:
                              Sdm630DrvInit();
                              break;
                          }
                          return result;
                        }
                        
                        #endif  // USE_SDM630
                        #endif  // USE_ENERGY_SENSOR
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        652
                        Online

                        31.9k
                        Users

                        80.3k
                        Topics

                        1.3m
                        Posts

                        7
                        20
                        3045
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo