NEWS
Strommessung E-Herd
-
Hallo.
Ich möchte gerne den Stromverbrauch des E-Herdes überwachen und mir im Energieflussdiagramm im ioBroker anzeigen lassen.
Der Herd benötigt ja alle 3 Phasen. Brauch ich dazu im Zählerschrank z.B. den Shelly Pro 3EM zur Strommessung?
Wie gesagt, es soll nur der E-Herd überwacht werden, nicht der gesamte Stromverbrauch vom Haus. -
@manfredhi sagte in Strommessung E-Herd:
es soll nur der E-Herd überwacht werden, nicht der gesamte Stromverbrauch vom Haus.
der e-Herd wird ja eohl einzeln abgesichert sein.
Da kannst du dir vom Elektriker einen SDM72 einbauen lassen und per modbus auslesen.
Falls da noch mehr zukommen sollten
ist das vielleicht die bessere Alternative.Oder eben den Shelly
-
@homoran sagte in Strommessung E-Herd:
ist das vielleicht die bessere Alternative.
Ich hab im Zählerkasten im Keller, dort ist die Sicherung für den E-Herd nur WLAN zur Verfügung (event. auch LAN). Gibts da auch was passendes?
-
@manfredhi sagte in Strommessung E-Herd:
Gibts da auch was passendes?
ja modbus2eth Konverter
da kenne ich mich aber nicht mit aus -
@manfredhi sagte in Strommessung E-Herd:
Der Herd benötigt ja alle 3 Phasen. Brauch ich dazu im Zählerschrank z.B. den Shelly Pro 3EM zur Strommessung?
Ja. Nein.
Ich habe einen Shelly EM genommen. Und eine der beiden Klammern einfach um alle 3 Phasen "geschlungen", Werte scheinen zu stimmen.
Dann hättest du noch eine Klemme über und bist Kostenmäßig bei der HälfteIch hatte auch einfach mal Shelly 1 PM mit eingeschliffen (also in den Phasen in Reihe geschaltet), das ging so lange gut bis ich den Grill im Backofen mit angemacht hatte ...
Nachtrag: Der E-Herd bzw. bei mir der Backofen ist übrigens mein "Endgegner". Den ganzen Tag mit Solar und Batterie Strom gespart ... und dann wird Abends der Backofen angemacht. Der läuft dank Familie fast jeden Tag ...
-
Ergänzend zur SDM72 Lösung von @Homoran kannst Du auch den S0 Ausgang nutzen und den auf einen WT32-ETH01 legen. Diesen wiederum mit Tasmota bestücken um die Daten ins Netzwerk/an den Iobroker zu schicken.
Der Umweg über S0 wäre zu gehen, aber keine Ahnung wieviel Aufwand und Kosten so ein Modbus2Ethernet Konverter bedeutet. Die S0 Lösung ist recht überschaubar und gut im Netz zu finden.
-
@bananajoe sagte in Strommessung E-Herd:
Ich habe einen Shelly EM genommen. Und eine der beiden Klammern einfach um alle 3 Phasen "geschlungen", Werte scheinen zu stimmen
Das kommt mir sehr seltsam vor, denn Du mißt ja mit der einen "Klammer" dann die Summe der Ströme der drei Phasen und die ist bei Drehstromverbrauchern (zumindest, wenn sie symmetrisch sind und kein (signifikanter) Nullleiterstrom fließt) immer Null (wegen der Phasenverschiebung von 120° der drei Phasen zueinnander).
-
@andersmacher sagte in Strommessung E-Herd:
@bananajoe sagte in Strommessung E-Herd:
Ich habe einen Shelly EM genommen. Und eine der beiden Klammern einfach um alle 3 Phasen "geschlungen", Werte scheinen zu stimmen
Das kommt mir sehr seltsam vor, denn Du mißt ja mit der einen "Klammer" dann die Summe der Ströme der drei Phasen und die ist bei Drehstromverbrauchern (zumindest, wenn sie symmetrisch sind und kein (signifikanter) Nullleiterstrom fließt) immer Null (wegen der Phasenverschiebung von 120° der drei Phasen zueinnander).
Naja, es fängt damit an das ein E-Herd nicht symmetrisch an allen 3 Phasen den Strom verbraucht.
Und meine Strommesszange kann auch 1 oder 3 Phasen. Allerdings muss ich dann dazwischen umschalten. -
@bananajoe sagte in Strommessung E-Herd:
Naja, es fängt damit an das ein E-Herd nicht symmetrisch an allen 3 Phasen den Strom verbraucht.
Das macht Deine Messung aber nur in dem einen sehr speziellen Fall richtig, in dem der Herd nur Strom über eine Phase zieht. Sowie eine zweite Phase an der Leistung des Herdes beteiligt ist, mißt Du nicht mehr die wirkliche Leistung.
Wenn Du die drei Phasen mit einer "Klammer" (in Wahrheit ist das ja eine Stromzange / ein Stromwandler in Klappbauform) umschließt, bildet sich eben automatisch die (Phasenverschiebung berücksichtigende) Summe der Ströme. Wenn ich schrieb, "die ist bei Drehstromverbrauchern (zumindest, wenn sie symmetrisch sind und kein (signifikanter) Nullleiterstrom fließt) immer Null", dann heißt das:
Bei Asymmetrie bleibt bei der Summenbildung ein "Reststrom" übrig, der sich als Nulleiterstrom bemerkbar macht und nur diesen Rest mißt Du.
Im Falle, daß nur eine Phase Strom liefert, ist der Reststrom gleich diesem einen Phasenstrom. In allen anderen Fällen mißt Du nicht die wirkliche Leistung.Und meine Strommesszange kann auch 1 oder 3 Phasen. Allerdings muss ich dann dazwischen umschalten.
Aber diese Umschaltung erzeugt keine andere/bessere Messung, sondern geht eben nur davon aus, daß in den drei Phasen der gleiche Strombetrag (über die Phasenlage in den anderen beiden Phasen kann die Zange ja keine Aussage treffen, weil sie dort nicht mißt) fließt, wie in der gemessenen Phase und multipliziert dann eben mit Wurzel 3. Das ist aber dann keine Messung, sondern eben nur eine rechnerische Annahme und schreibst ja selber:
das ein E-Herd nicht symmetrisch an allen 3 Phasen den Strom verbraucht
Also ist das Ergebnis dann nicht korrekt, kann aber natürlich größer als Null sein.
Ich möchte Deine Messung damit aber nicht kritisieren, sondern wollte Dir nur die Problematik einer einphasigen Messung bei mehrphasigen Netzen/Verbrauchern aufzeigen.
-
@andersmacher
Was bei dieser "Messung" noch zu beachten wäre ist die Tatsache, dass die Spannung ja nur von einer Phase genommen wird. Damit wird die Phasenlage nicht (richtig) berücksichtigt.Andrerseits misst der EM nur ohmsche Last richtig, dass heißt er ignoriert eine Phasenverschiebung da er nur Stromstärke und Spannung misst und diese multipliziert.
Ich bin jetzt zu faul zu überlegen ob dieser "Fehler" des EM hier von Nutzen ist.
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 :-).
Ein einfacher Test sollte es aber grob prüfen lassen.
Jede Kochstelle hat eine gewisse Leistung. Einfach mal
a) jede Kochstelle EINZELN einschalten und Messwert feststellen
b) ALLE Kochstellen gleichzeitig einschalten und Messwert feststellenStimmen die Werte ?
-
@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). -
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.
-
Alternative wäre auch 3 PZEM004 Module funktoniert bei mir prima zusammen.
-
Ich dachte es gebe hier eine einfache Möglichkeit, einfach den tatsächlichen Stromverbrauch des E-Herdes zu messen.
-
@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?
-
@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.
-
@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.
-
@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.
-
@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).
-
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