Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. Praktische Anwendungen (Showcase)
  4. Ströme im Schaltschrank induktiv messen und ESP an iobroker übergeben

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Ströme im Schaltschrank induktiv messen und ESP an iobroker übergeben

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
8 Beiträge 5 Kommentatoren 7.3k Aufrufe 2 Watching
  • Ä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.
  • hg6806H Offline
    hg6806H Offline
    hg6806
    Most Active
    schrieb am zuletzt editiert von
    #1

    Schönen guten Tag zusammen,

    hier wollte ich mal mein nächstes Projekt vorstellen.

    Und zwar habe ich schon immer eine Möglichkeit gesucht im Schaltschrank (Sicherungskasten), bzw. andere Leitungen strommässig, und somit auch leistungsmässig zu erfassen und zu loggen.

    Erst dachte ich an einen ACS712, hierfür muss aber die Leitung aufgetrennt werden, da der ACS712 eher als Shunt fungiert.

    Somit bin ich auf die induktiven Stromsensoren SCT013 gestoßen. Die werden wie eine Stromzange um die Leitung geklappt.

    Die man aber hier AC hat, kann man das nicht einfach mit dem ADC Eingang des ESP messen, da zu langsam, sondern muss es öfters samplen und eben einen Wert daraus bilden.

    Das schafft aber locker der Arduino.

    Hier gibt es schon dafür einen fertige Doku:

    http://www.homautomation.org/2013/09/17 … d-arduino/

    Das Ding habe ich mit einem 15A Typ nachgebaut und hat erstaunlich gut und genau funktioniert.

    Jetzt die Frage wie man das über den ESP an ioBroker übergibt.

    Hier bietet sich I2C an.

    Also alles verdrahtet, 2k2 PullUp an 3V3 des ESP gehängt und an den Arduino angeschlossen.

    In EasyESP gibt es unter Devices "ProMiniExtender" mit dem man I2C Daten ausgeben kann.

    Den Arduino Code habe ich wie folgt verändert:

    
    #include "EmonLib.h"                   // Include Emon Library
    #include <wire.h>EnergyMonitor emon1;                   // Create an instance
    
    void setup()
    {  
      Serial.begin(9600);
      Wire.begin(2);
      emon1.current(1, 15);             // Current: input pin, calibration.
    }
    
    void loop()
    {
      int Irms = emon1.calcIrms(1480);  // Calculate Irms only
    
      Serial.print(Irms*230.0);         // Apparent power
      Serial.print(" ");
      Serial.println(Irms);          // Irms
    
      Wire.beginTransmission(2);//Start des Master mit dem Sende an Adresse 2
      Wire.write(Irms);
      Wire.endTransmission();
    
    }</wire.h> 
    

    Leider kann man keine double Variable per I2C übergeben, aber dazu später.

    Ein I2C Scan hat mit die Adresse 2 bestätigt, Daten müssten also ankommen, aber leider kann ich keinen Daten an dem Device ProMiniExtender sehen. Weiß jemand wie man den einstellt? Ist "Port" die I2C Adresse?

    Wenn alles läuft würde ich auf den ADS1115 gehen, da dieser genauer misst. Aber dazu auch später.

    1 Antwort Letzte Antwort
    0
    • hg6806H Offline
      hg6806H Offline
      hg6806
      Most Active
      schrieb am zuletzt editiert von
      #2

      So, hab's hinbekommen.

      Für den PME (ProMiniExtender) muss man die Adresse 0x7F nehmen, dann erkennt EasyESP auch einen PME.

      Ich habe mir von hier:

      http://www.letscontrolit.com/forum/view … 0-%20p6463

      ..den Code genommen und entsprechend den Code für den CT implementiert und etwas abgespeckt, soweit ich den Code verstanden habe.

      Dabei ist folgendes herausgekommen:

      /********************************************************************************************************************\
       * Arduino project "ESP Easy" Copyright www.esp8266.nu
       *
       * 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 received a copy of the GNU General Public License along with this program in file 'License.txt'.
       *
       * IDE download    : https://www.arduino.cc/en/Main/Software
       * ESP8266 Package : https://github.com/esp8266/Arduino
       *
       * Source Code     : https://sourceforge.net/projects/espeasy/
       * Support         : http://www.esp8266.nu
       * Discussion      : http://www.esp8266.nu/forum/
       *
       * Additional information about licensing can be found at : http://www.gnu.org/licenses
      \******************************************************************************************************************/
      // This file is to be loaded onto an Arduino Pro Mini so it will act as a simple IO extender to the ESP module.
      // Communication between ESP and Arduino is using the I2C bus, so only two wires needed.
      // It is possible to run the Pro Mini on 3V3, although the 16MHz versions do not officially support this at 16MHzl 
      // By working on 3.3volt  you can skip levelconverters on I2C, but no guarantee that it will work stable.
      // Arduino Mini Pro uses A4 and A5 for I2C bus. ESP I2C can be configured but they are on GPIO-4 and GPIO-5 by default.
      
      #include <wire.h>#include "EmonLib.h"
      
      #define I2C_MSG_IN_SIZE    4
      #define I2C_MSG_OUT_SIZE   4
      
      #define CMD_ANALOG_READ    4
      
      volatile uint8_t sendBuffer[I2C_MSG_OUT_SIZE];
      int ESPrms;                                                          // value to be sent over I2C to ESP
      
      EnergyMonitor emon1;                   // Create an instance
      
      void setup()
      {
        Serial.begin(9600);
        emon1.current(1, 15);             // Current: input pin, calibration.
      
        Wire.begin(0x7f);
        Wire.onReceive(receiveEvent);
        Wire.onRequest(requestEvent);
      }
      
                                    // relative zero of the ACS712 for me 514 was best.  511 
      int valueRead;                                                 // value read on ADC
      
      void loop()
      {
      
      int Irms = emon1.calcIrms(1480)*1000;  // Calculate Irms only
      
        Serial.print(Irms*230.0);         // Apparent power
        Serial.print(" ");
        Serial.println(Irms);          // Irms
      
       unsigned int count = 0;
      
        ESPrms = Irms;            // conversion of float Ampere into integer milliAmpere needed for I2C communication
      }
      
      void receiveEvent(int count)
      {
        if (count == I2C_MSG_IN_SIZE)
        {
          byte cmd = Wire.read();
          byte port = Wire.read();
          int value = Wire.read();
          value += Wire.read()*256;
          switch(cmd)
            {      
              case CMD_ANALOG_READ:
                clearSendBuffer();
                if (port <= 4) valueRead = ESPrms*230/1000;  // port <=4 to read analog value A0,A1,A2,A3 - A4 & A5 are I2C
                if (port == 100) valueRead = ESPrms;           // port is any number >4 up to 255
                sendBuffer[0] = valueRead & 0xff;
                sendBuffer[1] = valueRead >> 8;
                break;
            }
        }
      }
      
      void clearSendBuffer()
      {
        for(byte x=0; x < sizeof(sendBuffer); x++)
          sendBuffer[x]=0;
      }
      
      void requestEvent()
      {
        Wire.write((const uint8_t*)sendBuffer,sizeof(sendBuffer));
      }</wire.h> 
      

      Damit funktioniert es. Über den MQTT Adapter wird sauber der Datenpunkt von EasyESP eingetragen, ich habe nun auf meinem VIS einen Wert (Strom oder Leistung)

      Jetzt habe ich erst einmal einen ADS1115 bestellt und auch weitere SCT und mache auch erst einmal die HW schön.

      Ach ja, wer das nachbauen möchte. Aufpassen mit der I2C. Hier sollte man, wie schon geschrieben die PullUps an die 3V3 des ESP hängen.

      Somit sollte auch ein Power Sequencing stattfinden. Arduino zuerste bzw. zusammen mit dem ESP. Nicht dass der ESP zuerst gepowert wird und dann den Arduino über die PullUps mit 3V3 versorgt.

      Ich weißt nicht ob die Ports das aushalten.

      Bei Fragen einfach melden.

      Viele Grüße

      1 Antwort Letzte Antwort
      0
      • G Offline
        G Offline
        galferiz
        schrieb am zuletzt editiert von
        #3

        Interessanter Ansatz, und sicher eine kostengünstigere Lösung als diverse Stromzähler ;-)

        Nach Weihnachten ist vor Weihnachten

        1 Antwort Letzte Antwort
        0
        • DutchmanD Offline
          DutchmanD Offline
          Dutchman
          Developer Most Active Administrators
          schrieb am zuletzt editiert von
          #4

          absolut, die frage kommt dan aber bei mir hoch ob man mehrere sensoren verbouwen kan oder dafuer von allem doppelte hardware braucht ?

          1 Antwort Letzte Antwort
          0
          • hg6806H Offline
            hg6806H Offline
            hg6806
            Most Active
            schrieb am zuletzt editiert von
            #5

            Der Sensor hängt momentan an einem Arduino nano, der hat 8 analoge Inputs. Die I2C Schnittstelle ist allerdings auch an diesen Ports angeschlossen, wären also noch 6 übrig, wobei man I2C evtl. auch auf anderen Ports laufen lassen kann.

            In der SW braucht man da nicht viel ändern, wenn man mehrere Sensoren ausließt

            Später würde ich das Ganze an einen ADS1115 anschließen, der hat 4 ADCs. Hiervon kann man aber auch wiederum mehrere an den Arduino anschließen.

            Kosten:

            Sensor 7,- und in China 4-5,-

            ADS1115 5-6,- und in China 2-3,-

            1 Antwort Letzte Antwort
            0
            • ChaotC Offline
              ChaotC Offline
              Chaot
              schrieb am zuletzt editiert von
              #6

              Hast du die Version immer noch in Betrieb?

              Lässt sich das auch mit 3 Phasen verwirklichen oder brauche ich dafür 3 solche Aufbauten?

              ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

              1 Antwort Letzte Antwort
              0
              • P Offline
                P Offline
                ple
                schrieb am zuletzt editiert von
                #7

                Würde mich auch interessieren. Bräuchte so 10 Messstellen.

                Intel Nuc + Proxmox

                1 Antwort Letzte Antwort
                0
                • hg6806H Offline
                  hg6806H Offline
                  hg6806
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  Hatte mir für meine 2 Stromzähler zwei IR Köpfe bestellt und diese per USB mit dem Pi verbunden. Hier sehe ich den genauen Stromverbrauch der Wärmepumpe und des Allgemeinstroms.

                  Zudem habe ich einen Wemos D1 mit einem Arduino und 4 verschiedene (5A/30A/10A/15A) Stromklemmen aufgebaut um einzelne Stränge zu messen, mehr geht wohl pro Arduino nicht.

                  Leider ist das Ganze nicht ganz genau, da hier eigentlich auch die Phase gemessen werden müsste wegen der Blindleistung.

                  Es gibt aber bestimmt auch dafür Lösungen im Netz.

                  Habe aber im Moment andere wichtigere Baustellen zumal mir diese Genauigkeit eigentlich reicht.

                  Wer wegen dem 4-fach Aufbau mehr Infos braucht kann mich ja gerne anschreiben oder ich poste das hier bei Interesse.

                  1 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  330

                  Online

                  32.5k

                  Benutzer

                  81.7k

                  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