Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 284
» Latest member: branko
» Forum threads: 104
» Forum posts: 395

Full Statistics

Online Users
There are currently 18 online users.
» 0 Member(s) | 18 Guest(s)

Latest Threads
Datenbank wird nicht mehr...
Forum: SmartPi - Deutsch
Last Post: jens
11 hours ago
» Replies: 1
» Views: 6
Grid frequency
Forum: SmartPi - English
Last Post: jhardy
Yesterday, 17:49
» Replies: 1
» Views: 776
Verwendung von mqtt
Forum: SmartPi - Deutsch
Last Post: ecgtach
29.11.2018, 19:59
» Replies: 15
» Views: 6.197
Smart Pi Einrichten,Daten...
Forum: SmartPi - Deutsch
Last Post: Golimar
27.10.2018, 23:38
» Replies: 0
» Views: 1
Datenbank konnte nicht er...
Forum: SmartPi - Deutsch
Last Post: jens
22.10.2018, 08:29
» Replies: 4
» Views: 2.423
RS485 nutzen
Forum: SmartPi - Deutsch
Last Post: chille
21.09.2018, 07:55
» Replies: 4
» Views: 879
SmartPi Genauigkeit?
Forum: SmartPi - Deutsch
Last Post: jens
13.09.2018, 09:35
» Replies: 1
» Views: 737
Access-Control-Allow-Orig...
Forum: SmartPi - Deutsch
Last Post: jens
13.09.2018, 09:32
» Replies: 3
» Views: 888
Node-RED
Forum: SmartPi - Deutsch
Last Post: bksolo
04.09.2018, 15:54
» Replies: 0
» Views: 511
SmartPi Daten
Forum: SmartPi - Deutsch
Last Post: bksolo
02.09.2018, 18:35
» Replies: 2
» Views: 909

 
  Current transformer
Posted by: Jonny - 26.01.2018, 23:57 - Forum: SmartPi - English - Replies (3)

Hi

I got mine smartpi today, its upp running and everything works except that i do have have 375 A current transformer mounted in my grid connection, how can i change it? is there any dokumentation, thanks for a lovely produkt!


Best regards Jonny

Print this item

  Connection
Posted by: Kemcomm - 24.01.2018, 11:30 - Forum: SmartPi - English - Replies (15)

Hello

i have smartpi2.
My electricty network consist of 3 phase and no Neutral conductor.
So onliy L1 L2 and L3.  3 times 230 Volt
How do i proceed for the connection to measure the voltage?
Also the values that i measure seems to be to high

Thanks

Print this item

  SmartESP - SmartPi mit einem ESP32 auslesen
Posted by: clemens - 16.01.2018, 16:05 - Forum: Projekte - No Replies

Hallo,

hier ist ein kleines Projekt, bei dem ich den SmartPi mit einem ESP32 NodeMCU auslese und diese Daten dann über MQTT verteile. Es werden keine Daten gespeichert.

Als Grundlage wird das Projekt Basecamp von der Zeitschrift ct genommen. Bei diesen Projekt hat man bereits eine Weboberfläche für die W-LAN und für die MQTT Einstellungen.

https://github.com/merlinschumacher/Basecamp

Benötigte Hardware

1 x SmartPi: https://shop.enerserve.eu/smartpi/262/smartpi-2.0
1 x ESP32 NodeMCU (oder ähnliches) https://www.amazon.de
2 x 3 kOhm Widerstand

IDE

Als IDE wird die Arduino IDE benutzt: https://www.arduino.cc/en/Main/Software
Die Desktop Version runterladen und installieren. 

Im nächsten Schritt muss noch die Informationen für den ESP32 ins Arduino geladen werden. Dazu folgen Sie bitte diese Anleitung: https://github.com/espressif/arduino-esp32

Nun können Sie in der Arduino IDE unter "Werkzeuge" => "Board" das "ESP32 Dev Module" auswählen.

Bibliotheken laden

Es gibt die Möglichkeit die Bibliotheken direkt über die Arduino IDE runter zu laden. Allerdings sind diese nicht immer auf den aktuellsten Stand. Daher empfehle ich die Bibliotheken von Hand runter zu laden und dann in die Arduino IDE hinzuzufügen.

Dazu bitte bei folgenden Bibliotheken wir folgt vorgehen:
- Bei GitHub auf "Clone or download" klicken und als ZIP Datei runter laden
- In der Arduino IDE "Sketch" => "Bibliotheken einbinden" => ".ZIP Bibliothek hinzufügen .." und die Datei auswählen

https://github.com/merlinschumacher/Basecamp
https://github.com/me-no-dev/ESPAsyncWebServer
https://github.com/bblanchon/ArduinoJson
https://github.com/marvinroger/async-mqtt-client
https://github.com/me-no-dev/AsyncTCP

SmartPi mit dem ESP32 verbinden

Die PINs +5V, GND, SCL und SDA müssen mit verbunden werden.
   

Zusätzlich benötigen die I2C Leitungen jeweils noch einen 3 kOhm PullUp Widerstand zu 3,3V da die PullUp Widerstände auf dem SmartPi zu groß sind für den ESP32.
   

Software

Erstelle ein neues Arduino Projekt und füge den Code ein.

Hier kann man den Topic Namen für MQTT anpassen
#define TOPIC "SmartESP" 

Intervall zum Auslesen des SmartPi. Angabe in ms 
#define DELAY 5000

Überprüfen und Hochladen:

Code:
#include <Basecamp.hpp>
#include <Wire.h>

Basecamp iot;

#define TOPIC "SmartESP"
#define DELAY 5000

#define ADE_ADDRESS  0x38
#define BUFSIZE 4
#define PI 3.141592654
#define ADE7878_CLOCK   256000
#define FACTOR_CIRCLE   360
#define   FACTOR_1   256
#define   FACTOR_2   65536
#define   FACTOR_3   16777216
#define   RMS_FACTOR_VOLTAGE   2427873
#define   CURRENT_RESISTOR_A   7.07107
#define   CURRENT_RESISTOR_B   7.07107
#define   CURRENT_RESISTOR_C   7.07107
#define   CURRENT_RESISTOR_N   7.07107
#define   CURRENT_CLAMP_FACTOR_A   0.05
#define   CURRENT_CLAMP_FACTOR_B   0.05
#define   CURRENT_CLAMP_FACTOR_C   0.05
#define   CURRENT_CLAMP_FACTOR_N   0.05
#define   OFFSET_CURRENT_A   0.97129167
#define   OFFSET_CURRENT_B   0.97129167
#define   OFFSET_CURRENT_C   0.97129167
#define   OFFSET_CURRENT_N   0.97129167
#define   OFFSET_VOLTAGE_A   1.0
#define   OFFSET_VOLTAGE_B   1.0
#define   OFFSET_VOLTAGE_C   1.0
#define  POWER_CORRECTION_FACTOR_A   0.019413
#define   POWER_CORRECTION_FACTOR_B   0.019413
#define   POWER_CORRECTION_FACTOR_C   0.019413

int write_i2c(char data[],unsigned char length)
{
  unsigned char i;
  Wire.beginTransmission(ADE_ADDRESS);
  for(i=0;i<length;i++)
  {
    Wire.write(data[i]);
  }
  Wire.endTransmission();
  return i;
}

int read_i2c(char * data, int length)
{
 unsigned char i;
 unsigned char ret;
 Wire.requestFrom(ADE_ADDRESS,length);
 ret=Wire.available();
 if(ret!=length) return -1;

 for(i=0;i<ret;i++)
   data[i] = Wire.read();
 
 return ret;
}

void mqtt_publish(char name[],double data)
{
   char string[20];
   char topic[100];
   sprintf(string,"%.4f",data);
   sprintf(topic,"%s/%s",TOPIC,name);
   iot.mqtt.publish(topic, 1, true, string);
}

int init_ade7878()
{
 Wire.begin();
 Serial.println("init");
 char data[10];
 int i;

 data[0] = 0xEC;//0xEC01 (CONFIG2-REGISTER)
 data[1] = 0x01;
 data[2] = 0x02;//00000010 --> Bedeutet I2C-Lock (I2C ist nun die gewählte Übertragungsart)
 if(write_i2c( data, 3) != 3)  return -1;

 data[0] = 0xEC;//0xEC01 (CONFIG2-REGISTER)
 if(write_i2c( data, 1) != 1) return -1;

 data[0] = 0xE7;//0xE7FE writeprotection
 data[1] = 0xFE;
 data[2] = 0xAD;
 if(write_i2c( data, 3) != 3) return -1;
 
 data[0] = 0xE7;//0xE7E3 writeprotection OFF
 data[1] = 0xE3;
 data[2] = 0x00;
 if(write_i2c( data, 3) != 3) return -1;
 
 data[0] = 0xE6;//0xE60E (COMPMODE-REGISTER)
 data[1] = 0x0E;
 data[2] = 0x01;//50HZ 0x60 60HZ
 data[3] = 0xFF;
 if(write_i2c( data, 4) != 4) return -1;

 data[0] = 0x43;//0x43B5 (DICOEFF-REGISTER)
 data[1] = 0xB5;
 data[2] = 0xFF;
 data[3] = 0x80;
 data[4] = 0x00;
 if(write_i2c( data, 5) != 5) return -1;
 
 data[0] = 0x43;//0x43AB (WTHR1-REGISTER)
 data[1] = 0xAB;
 data[2] = 0x00;
 data[3] = 0x00;
 data[4] = 0x00;
 data[5] = 0x17;
 if(write_i2c( data, 6) != 6) return -1;
 
 data[0] = 0x43;//0x43AC (WTHR0-REGISTER)
 data[1] = 0xAC;
 data[2] = 0x00;
 data[3] = 0x85;
 data[4] = 0x60;
 data[5] = 0x16;
 if(write_i2c( data, 6) != 6) return -1;
 
 data[0] = 0x43;//0x43B3 (VLEVEL-REGISTER)
 data[1] = 0xB3;
 data[2] = 0x00;
 data[3] = 0x0C;
 data[4] = 0xEC;
 data[5] = 0x85;
 if(write_i2c( data, 6) != 6) return -1;
 
 delay(875);
 
 data[0] = 0x43;//0x4381 (AVGAIN-REGISTER)
 data[1] = 0x81;
 data[2] = 0xFF;
 data[3] = 0xFC;
 data[4] = 0x1C;
 data[5] = 0xC2;
 if(write_i2c( data, 6) != 6) return -1;
 
 data[0] = 0x43;//0x4383 (BVGAIN-REGISTER)
 data[1] = 0x83;
 data[2] = 0xFF;
 data[3] = 0xFC;
 data[4] = 0x1C;
 data[5] = 0xC2;
 if(write_i2c( data, 6) != 6) return -1;
 
 data[0] = 0x43;//0x4385 (CVGAIN-REGISTER)
 data[1] = 0x85;
 data[2] = 0xFF;
 data[3] = 0xFC;
 data[4] = 0x1C;
 data[5] = 0xC2;
 if(write_i2c( data, 6) != 6) return -1;
 
 data[0] = 0xE7;//0xE702 LCYCMODE
 data[1] = 0x02;
 data[2] = 0x0F;
 if(write_i2c( data, 3) != 3) return -1;
 
 data[0] = 0xE6;//0xE60C LINECYC
 data[1] = 0x0C;
 data[2] = 0xC8;
 if(write_i2c( data, 3) != 3) return -1;
 
 data[0] = 0xE7;//0xE7FE writeprotection
 data[1] = 0xFE;
 data[2] = 0xAD;
 if(write_i2c( data, 3) != 3) return -1;
 
 data[0] = 0xE7;//0xE7E3 writeprotection
 data[1] = 0xE3;
 data[2] = 0x80;
 if(write_i2c( data, 3) != 3) return -1;
 
 data[0] = 0xE2;//0xE228 (RUN-Register)
 data[1] = 0x28;
 data[2] = 0x00;
 data[3] = 0x01;
 if(write_i2c( data, 4) != 4) return -1;
 
 return 0;
}

int read_ade7878()
{
   Serial.println("read");
   double ua=230,ub=230,uc=230,ia=0,ib=0,ic=0,pa=0,pb=0,pc=0,pac=0,cosa=1,cosb=1,cosc=1,hza=50,hzb=50,hzc=50,pfa,pfb,pfc;
   double awatt,ava,avar,bwatt,bva,bvar,cwatt,cva,cvar;
   char data[30],data_out[20];
   float ergebnis;
   double VAL = PI / 180.0;
   double rms_factor_current = 4191910;
   double ia_corr=1,ib_corr=1,ic_corr=1;
   char ua_gemessen=1,ub_gemessen=1,uc_gemessen=1;
   char string[100];

   ua_gemessen=1;
   ub_gemessen=1;
   uc_gemessen=1;
   //0 current phase a
   data_out[0] = 0x43;//0x43C0 (AIRMS; Current rms an A)
   data_out[1] = 0xC0;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, 4) != 4) return -1;
   ergebnis=(double) (FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];

   ia=((((ergebnis * 0.3535) / rms_factor_current) / CURRENT_RESISTOR_A) / CURRENT_CLAMP_FACTOR_A) * 100.0 * OFFSET_CURRENT_A;

   //1 current phase b
   data_out[0] = 0x43;//0x43C2 (BIRMS; Current rms an B)
   data_out[1] = 0xC2;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(double) (FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   ib=((((ergebnis * 0.3535) / rms_factor_current) / CURRENT_RESISTOR_B) / CURRENT_CLAMP_FACTOR_B) * 100.0 * OFFSET_CURRENT_B;

   //2 current phase c
   data_out[0] = 0x43;//0x43C4 (CIRMS; Current rms an C)
   data_out[1] = 0xC4;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(double) (FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   ic=((((ergebnis * 0.3535) / rms_factor_current) / CURRENT_RESISTOR_C) / CURRENT_CLAMP_FACTOR_C) * 100.0 * OFFSET_CURRENT_C;
   
   //3 current phase n
   
   //4 voltage phase a
   data_out[0] = 0x43;//0x43C1 (AVRMS; Voltage rms an A)
   data_out[1] = 0xC1;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   if( ergebnis/10000 > 100) ua=ergebnis/10000;
   else ua_gemessen=0;
   
   //5 voltage phase b
   data_out[0] = 0x43;//0x43C3 (BVRMS; Voltage rms an B)
   data_out[1] = 0xC3;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   if( ergebnis/10000 > 100) ub=ergebnis/10000;
   else ub_gemessen=0;

   //6 voltage phase c
   data_out[0] = 0x43;//0x43C5 (CVRMS; Voltage rms an C)
   data_out[1] = 0xC5;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   if( ergebnis/10000 > 100) uc=ergebnis/10000;
   else uc_gemessen=0;
   
   //7  Phase A total active power.
   data_out[0] = 0xE5;//0xE513 (AWATT total active power an A)
   data_out[1] = 0x13;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_3*data[0])+(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   if( ua_gemessen) awatt=(ergebnis*POWER_CORRECTION_FACTOR_A);
   else awatt=ia*ua;
   
   //8  Phase B total active power.
   data_out[0] = 0xE5;//0xE514 (BWATT total active power an B)
   data_out[1] = 0x14;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_3*data[0])+(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   if( ub_gemessen) bwatt=(ergebnis*POWER_CORRECTION_FACTOR_B);
   else bwatt=ib*ub;
   
   //9  Phase C total active power.
   data_out[0] = 0xE5;//0xE515 (CWATT total active power an C)
   data_out[1] = 0x15;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_3*data[0])+(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   if( uc_gemessen) cwatt=(ergebnis*POWER_CORRECTION_FACTOR_C);
   else cwatt=ic*uc;

   //10 cosphi phase a
   data_out[0] = 0xE6;//0xE601 (ANGLE0 cosphi an A)
   data_out[1] = 0x01;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, 2) != 2) return -1;
   ergebnis=(FACTOR_1*data[0])+data[1];
   if( ua_gemessen) cosa=cos(ergebnis * FACTOR_CIRCLE * 50 / ADE7878_CLOCK * VAL);
   else cosa=1;

   //11 cosphi phase b
   data_out[0] = 0xE6;//0xE601 (ANGLE1 cosphi an B)
   data_out[1] = 0x02;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, 2) != 2) return -1;
   ergebnis=(FACTOR_1*data[0])+data[1];
   if( ub_gemessen) cosb=cos(ergebnis * FACTOR_CIRCLE * 50 / ADE7878_CLOCK * VAL);
   else cosb=1;

   //12 cosphi phase c
   data_out[0] = 0xE6;//0xE601 (ANGLE2 cosphi an C)
   data_out[1] = 0x03;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, 2) != 2) return -1;
   ergebnis=(FACTOR_1*data[0])+data[1];
   if( uc_gemessen) cosc=cos(ergebnis * FACTOR_CIRCLE * 50 / ADE7878_CLOCK * VAL);
   else cosc=1;

   //13 frequency phase a
   data_out[0] = 0xE7;//MMODE-Register measure frequency at VA
   data_out[1] = 0x00;
   data_out[2] = 0x1C;
   if(write_i2c(data_out, 3) != 3) return -1;
   delay(50);
   data_out[0] = 0xE6;//0xE607 (PERIOD)
   data_out[1] = 0x07;
   if(write_i2c(data_out, 2) != 2) return -1;
   if (read_i2c(data, 2) != 2) return -1;
   ergebnis=(FACTOR_1*data[0])+data[1];
   hza=(double) ADE7878_CLOCK / (ergebnis +1 );
   
   //14 frequency phase b
   data_out[0] = 0xE7;//MMODE-Register measure frequency at VB
   data_out[1] = 0x00;
   data_out[2] = 0x1D;
   if(write_i2c(data_out, 3) != 3) return -1;
   delay(50);
   data_out[0] = 0xE6;//0xE607 (PERIOD)
   data_out[1] = 0x07;
   if(write_i2c(data_out, 2) != 2) return -1;
   if (read_i2c(data, 2) != 2) return -1;
   ergebnis=(FACTOR_1*data[0])+data[1];
   hzb=(double) ADE7878_CLOCK / (ergebnis +1 );
   
   //15 frequency phase c
   data_out[0] = 0xE7;//MMODE-Register measure frequency at VC
   data_out[1] = 0x00;
   data_out[2] = 0x1E;
   if(write_i2c(data_out, 3) != 3) return -1;
   delay(50);
   data_out[0] = 0xE6;//0xE607 (PERIOD)
   data_out[1] = 0x07;
   if(write_i2c(data_out, 2) != 2) return -1;
   if (read_i2c(data, 2) != 2) return -1;
   ergebnis=(FACTOR_1*data[0])+data[1];
   hzc=(double) ADE7878_CLOCK / (ergebnis +1 );
   
   //16 Phase A total apparent power.
   data_out[0] = 0xE5;//0xE519 (AVA total apparent power an A)
   data_out[1] = 0x19;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_3*data[0])+(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   ava=ergebnis;
   
   //17 Phase B total apparent power.
   data_out[0] = 0xE5;//0xE519 (BVA total apparent power an B)
   data_out[1] = 0x1A;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_3*data[0])+(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   bva=ergebnis;
   
   //18 Phase C total apparent power.
   data_out[0] = 0xE5;//0xE519 (CVA total apparent power an C)
   data_out[1] = 0x1B;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_3*data[0])+(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   cva=ergebnis;
   
   //19 Phase A total reactive power.
   data_out[0] = 0xE5;//0xE516 (AVAR total reactive power an A)
   data_out[1] = 0x16;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_3*data[0])+(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   avar=ergebnis;
   
   //20 Phase A total reactive power.
   data_out[0] = 0xE5;//0xE516 (AVAR total reactive power an B)
   data_out[1] = 0x17;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_3*data[0])+(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   bvar=ergebnis;
   
   //21 Phase A total reactive power.
   data_out[0] = 0xE5;//0xE516 (AVAR total reactive power an C)
   data_out[1] = 0x18;
   if(write_i2c(data_out, 2) != 2) return -1;
   if(read_i2c(data, BUFSIZE) != BUFSIZE) return -1;
   ergebnis=(FACTOR_3*data[0])+(FACTOR_2*data[1])+(FACTOR_1*data[2])+data[3];
   cvar=ergebnis;

   pa=awatt*(-1.0);
   pb=bwatt*(-1.0);
   pc=cwatt*(-1.0);

   if( ua_gemessen)
   {
     if(avar<0)
       pfa=awatt/POWER_CORRECTION_FACTOR_A/ava;
     else
       pfa=awatt/POWER_CORRECTION_FACTOR_A/ava*(-1.0);
     ia=ia*fabs(pfa);
   }

   if( ub_gemessen)
   {
     if(bvar<0)
       pfb=bwatt/POWER_CORRECTION_FACTOR_B/bva;
     else
       pfb=bwatt/POWER_CORRECTION_FACTOR_B/bva*(-1.0);
     ib=ib*fabs(pfb);
   }

   if( uc_gemessen)
   {
     if(cvar<0)
       pfc=cwatt/POWER_CORRECTION_FACTOR_C/cva;
     else
       pfc=cwatt/POWER_CORRECTION_FACTOR_C/cva*(-1.0);
     ic=ic*fabs(pfc);
   }

   pac=pa+pb+pc;
   
   if(pac>=0)
   {
     sprintf(string,"BEZUG: %f",pac);
     Serial.println(string);
   }
   else
   {
     sprintf(string,"EINSPEISUNG: %f",pac);
     Serial.println(string);
   }

   mqtt_publish("P0",pac);
   mqtt_publish("P1",pa);
   mqtt_publish("P2",pb);
   mqtt_publish("P3",pc);
   
   mqtt_publish("COS1",cosa);
   mqtt_publish("COS2",cosb);
   mqtt_publish("COS3",cosc);
   
   mqtt_publish("I1",ia);
   mqtt_publish("I2",ib);
   mqtt_publish("I3",ic);

   mqtt_publish("U1",ua);
   mqtt_publish("U2",ub);
   mqtt_publish("U3",uc);

   mqtt_publish("HZ1",hza);
   mqtt_publish("HZ2",hzb);
   mqtt_publish("HZ3",hzc);

   mqtt_publish("PF1",pfa);
   mqtt_publish("PF2",pfb);
   mqtt_publish("PF3",pfc);

   mqtt_publish("VAR1",avar);
   mqtt_publish("VAR2",bvar);
   mqtt_publish("VAR3",cvar);

   mqtt_publish("VA1",ava);
   mqtt_publish("VA2",bva);
   mqtt_publish("VA3",cva);
   
   sprintf(string,"Leistung : %.4f %.4f %.4f = %.4f W",pa,pb,pc,pac);
   Serial.println(string);
   sprintf(string,"Cos Phi  : %.4f %.4f %.4f",cosa,cosb,cosc);
   Serial.println(string);
   sprintf(string,"PF     : %.4f %.4f %.4f",pfa,pfb,pfc);
   Serial.println(string);
   sprintf(string,"VAR    : %.4f %.4f %.4f",avar,bvar,cvar);
   Serial.println(string);
   sprintf(string,"VA     : %.4f %.4f %.4f",ava,bva,cva);
   Serial.println(string);
   sprintf(string,"Strom    : %.4f %.4f %.4f A",ia,ib,ic);
   Serial.println(string);
   sprintf(string,"Spannung : %.4f %.4f %.4f V",ua,ub,uc);
   Serial.println(string);
   sprintf(string,"Frequenz : %.4f %.4f %.4f Hz",hza,hzb,hzc);
   Serial.println(string);
   delay(DELAY);
}


void setup() {
 iot.begin();
 init_ade7878();
 Serial.println(WiFi.localIP());
}

void loop() {
  read_ade7878();
}

MQTT

Gesamtleistung [W]: P0
Leistung L1 [W]: P1
Leistung L2 [W]: P2
Leistung L3 [W]: P3

Cos L1 []: COS1
Cos L2 []: COS2
Cos L3 []: COS3

Strom L1 [A]: I1
Strom L2 [A]: I2
Strom L3 [A]: I3

Spannung L1 [V]: U1
Spannung L2 [V]: U2
Spannung L3 [V]: U3
   
Frequenz L1 [Hz]: HZ1
Frequenz L2 [Hz]: HZ2
Frequenz L3 [Hz]: HZ3

Power Faktor L1 [Hz]: PF1
Power Faktor L2 [Hz]: PF2
Power Faktor L3 [Hz]: PF3

Blindleistung L1 [Hz]: VAR1
Blindleistung L2 [Hz]: VAR2
Blindleistung L3 [Hz]: VAR3

Scheinleistung L1 [Hz]: VA1
Scheinleistung L2 [Hz]: VA2
Scheinleistung L3 [Hz]: VA3

Stromversorgung

Variante 1: Stromversorgung über den ESP32
Wenn man nur die Stromklemmen anschließen möchte, ohne die Spannung anschließen zu wollen, kann man das ganze über ein 5V Netzteil versorgen

Variante 2: Stromversorgung über den SmartPi
Man kann den ESP32 auch über den SmartPi mit 230V versorgen. Dazu müssen 230V an L und N angeschlossen werden. Siehe Handbuch: https://shop.enerserve.eu/media/pdf/8b/8...Pi-2-0.pdf

Inbetriebnahme

Nachdem der SmartPi und der ESP32 mit Strom versorgt sind, baut der ESP32 ein W-LAN Access Point auf.
Verbinden Sie sich z.B. mit Handy mit dem WLAN Netzwerk "ESP32".
Rufen Sie die Webseite "192.168.4.1" auf.
Hier können Sie die SSID und Passwort Ihres W-LAN Netzwerkes einstellen, sowie den MQTT Broker.
Nach dem Speichern wird der ESP32 neu gestartet und das System ist fertig eingerichtet.

Print this item

  Messproblem Raspi
Posted by: admins - 12.01.2018, 22:11 - Forum: SmartPi - Deutsch - Replies (7)

Hallo zusammen
Ich habe den SmartPi 2.0 zusammengebaut und die Updates eingespielt.
Ich habe jetzt mal zum testen den Messfühler SCT013 beim + Kabel von L1 umklammert und bei L1 am Raspi angehängt.
Bei L1 im Webinterface zeigt es jetzt 75A an. Beim P1 jedoch 0. Was muss ich noch machen, dass P1 auch noch anzeigt?

Sorry bin Anfänger.

Gruss
admins

Print this item

  SmartPi 2.0 VDR entfernt?
Posted by: Feinwerk - 10.01.2018, 16:55 - Forum: SmartPi - Deutsch - Replies (3)

Danke für dir Aufnahme im Forum.
Das SmartPi wurde gestern geliefert und ist schon im Probebetrieb. Aufbau ist leicht und geht flott.
Beim Aufbau ist mir aufgefallen das die VDR's mit einem Seitenschneider entfernt wurden hat das einen bestimmten Grund?

Ich hab das das ganze mit Raspbian stretch lt. Anleitung installiert. (welche für Rasbian jessie optimiert ist)
Soweit ich gestern testen konnte hat alles soweit funktioniert.
Sollte ich dennoch Raspbian jessie verwenden?

Danke

Alex

Print this item

  Connectivity issues
Posted by: zague - 10.01.2018, 15:36 - Forum: SmartPi - English - Replies (5)

Hello

I recently got my smartpi 2.0 and have some issues trying to set it up:

First, I cannot make a stable connection with the smartpi, it just randomly allowed me to be connected (through ethernet connection).
Another problem I have is that the AC fuse is blowing. I noticed that it's a 125mA fuse and I changed it, but keep blowing.
Do you have any idea what is wrong?
I made connections for single Phase: one ct and the voltage direct connection.
https://drive.google.com/open?id=17q8_F4...0dXNmS-rb_ 
The voltage input is 238VRMS @50Hz

Regards

Print this item

  Probleme mit Weboberfläche
Posted by: moeti - 05.01.2018, 19:21 - Forum: SmartPi - Deutsch - Replies (8)

Hallo!

Ich möchte über ein paar Probleme mit der Weboberfläche (Vers 0.7.0) berichten:

Im schwarzen Menü links oben führt das Schaltersymbol nicht mehr wie früher zu den Einstellungen, sondern ins Nichts.
Das Warenkorbsymbol, wofür das auch immer gedacht ist, führt zu den Einstellungen.

Neu ist auch das rechte Sidepanel mit der Überschrift Graph und den beiden Links Dashboard und Chart, das auf kleinen Bildschirmen responsive weggeblendet wird und als kleines Menü dargestellt wird. Der Nutzen dafür erschließt sich mir nicht ganz. Die aktuellen Werte für Leistung und Stromstärke sollte zumindest auf jeder Seite, zB im Kopf, angezeigt werden.

Beim Chart, bei der Anzeige der Daten des aktuellen Tages, ist schwer ersichtlich welcher Button "Power", "Energy Consumption", "Energy Production", "Current" und "Voltage" gerade aktiv ist. Unter Umständen werden mir die Power-Werte zweimal oder mehrmals angezeigt (zB durch mehrmaliges Klicken auf "Chart"). Die Buttons "Day Back", "Day Forward", "Add Day Back" und "Remove Day Back" funktionieren unzuverlässig, oft wird nur "No Data Available" angezeigt.

Im Dashboard passt der angezeigte Wert für "Consumption today" links oben nicht mit dem Wert zusammen, der über dem Balken des aktuellen Tages angezeigt wird. Das dürften auf unterschiedliche Zeitzonenangaben zurückzuführen sein. In Raspian hab ich auf jeden Fall die richtige Zeitzone eingestellt. (Dieses Problem wurde aber schon in anderen Foreneinträgen berichtet).
Hier wäre übrigens ein Umstellen auf vergangene Wochen oder ein Einstellen eines bestimmten Monates oder eines anderen Zeitraumes wünschenswert.

Vielleicht sind hier Anpassungen für zukünftige Versionen möglich.

Danke
Michael

Print this item

  Red Jumper & Relay question
Posted by: luisgepeto - 04.01.2018, 19:19 - Forum: SmartPi - English - Replies (3)

Hello all
I have just received my smart pi and reading through the manual I see there is no documentation regarding the red jumper provided in the assembly kit. I also notice that there are two pins that face outward next to the RS485 connection. I guess that the red jumper should go installed here, however I do not know what it is for. 

Another question I have is, what is the relay connection for? 
Greetings
Luis.

Print this item

  Neue Raspbian version stretch
Posted by: fighterzg6 - 12.12.2017, 15:12 - Forum: SmartPi - Deutsch - Replies (5)

hallo, habe jetzt auf Stretch aktuallisiert,

gibt es da auch eine repo bzw listeneintrag für die automatische aktuallisierung via sudo apt-get update????

mfg

Print this item

  New softwareversion as package
Posted by: jens - 06.12.2017, 15:57 - Forum: SmartPi - English - Replies (2)

Hello,

there is a new software version for the SmartPi.

The most important changes in brief:
Integration of Node-Red for control and measured value acquisition

The package is only available as beta and can be downloaded here:
files.enerserve.eu/smartpi/smartpi_0.6.7.deb

installation with sudo dpkg -i smartpi_0.6.7. deb

We would be happy to receive feedback on whether the installation works.
Especially with regard to the node-red installation via script at Jessie.

Greetings Jens

Print this item