Elster AS1440

Moderator: Mod-Team

 

0.00 (0 Bewertungen)

Re: Elster AS1440

Beitragvon andy_k » 26.03.2018, 18:57

gibt es ein Kommando um den Output anzuhalten? Irgendwie läuft er seit heute wieder in eine Schleife rein.
Code: Alles auswählen
F.F(00000000)<\r><\n>0.0.0(0000000)<\r><\n>0.0.1( 0000000)<\r><\n>0.0.2(00000000)<\r><\n>0.1.0(14)<\r><\n>0.1.2*14(1803010000)<\r><\n>0.1.2*13(1802010000)<\r><\n>0.1.2*12(1801010000)<\r><\n>0.1.2*11(1712010000)<\r><\n>0.1.2*10(1711010000)<\r><\n>0.1.2*09(1710010000)<\r><\n>0.1.2*08(1709010000)<\r><\n>0.1.2*07(1708010000)<\r><\n>0.1.2*06(1707010000)<\r><\n>0.1.2*05(1706010000)<\r><\n>0.1.2*04(1705010000)<\r><\n>0.1.2*03(1704010000)<\r><\n>0.1.2*02(1703010000)<\r><\n>0.1.2*01(1702151410)<\r><\n>0.1.2*00(0000000000)<\r><\n>0.2.0(2A07)<\r><\n>0.2.1(11646471)<\r><\n>0.2.2(00000002)<\r><\n>0.9.1(174701)<\r><\n>0.9.2(180326)<\r><\n>1.8.0(00006705*kWh)<\r><\n>1.8.0*14(00006150)<\r><\n>1.8.0*13(00005227)<\r><\n>1.8.0*12(00004486)<\r><\n>1.8.0*11(00003654)<\r><\n>1.8.0*10(00003106)<\r><\n>1.8.0*09(00002906)<\r><\n>1.8.0*08(00002718)<\r><\n>1.8.0*07(00002542)<\r><\n>1.8.0*06(00002208)<\r><\n>1.8.0*05(00001934)<\r><\n>1.8.0*04(00001809)<\r><\n>1.8.0*03(00001517)<\r><\n>1.8.0*02(00000716)<\r><\n>1.8.0*01(00000000)<\r><\n>1.8.0*00(00000000)<\r><\n>1.8.1(00003515*kWh)<\r><\n>1.8.1*14(00003180)<\r><\n>1.8.1*13(00002650)<\r><\n>1.8.1*12(00002259)<\r><\n>1.8.1*11(00001786)<\r><\n>1.8.1*10(00001488)<\r><\n>1.8.1*09(00001422)<\r><\n>1.8.1*08(00001344)<\r><\n>1.8.1*07(00001287)<\r><\n>1.8.1*06(00001172)<\r><\n>1.8.1*05(00001072)<\r><\n>1.8.1*04(00001013)<\r><\n>1.8.1*03(00000847)<\r><\n>1.8.1*02(00000379)<\r><\n>1.8.1*01(00000000)<\r><\n>1.8.1*00(00000000)<\r><\n>1.8.2(00003190*kWh)<\r><\n>1.8.2*14(00002970)<\r><\n>1.8.2*13(00002576)<\r><\n>1.8.2*12(00002227)<\r><\n>1.8.2*11(00001868)<\r><\n>1.8.2*10(00001618)<\r><\n>1.8.2*09(00001484)<\r><\n>1.8.2*08(00001374)<\r><\n>1.8.2*07(00001254)<\r><\n>1.8.2*06(00001035)<\r><\n>1.8.2*05(00000861)<\r><\n>1.8.2*04(00000795)<\r><\n>1.8.2*03(00000669)<\r><\n>1.8.2*02(00000336)<\r><\n>1.8.2*01(00000000)<\r><\n>1.8.2*00(00000000)<\r><\n>2.8.0(00000000*kWh)<\r><\n>2.8.0*14(00000000)<\r><\n>2.8.0*13(00000000)<\r><\n>2.8.0*12(00000000)<\r><\n>2.8.0*11(00000000)<\r><\n>2.8.0*10(00000000)<\r><\n>2.8.0*09(00000000)<\r><\n>2.8.0*08(00000000)<\r><\n>2.8.0*07(00000000)<\r><\n>2.8.0*06(00000000)<\r><\n>2.8.0*05(00000000)<\r><\n>2.8.0*04(00000000)<\r><\n>2.8.0*03(00000000)<\r><\n>2.8.0*02(00000000)<\r><\n>2.8.0*01(00000000)<\r><\n>2.8.0*00(00000000)<\r><\n>2.8.1(00000000*kWh)<\r><\n>2.8.1*14(00000000)<\r><\n>2.8.1*13(00000000)<\r><\n>2.8.1*12(00000000)<\r><\n>2.8.1*11(00000000)<\r><\n>2.8.1*10(00000000)<\r><\n>2.8.1*09(00000000)<\r><\n>2.8.1*08(00000000)<\r><\n>2.8.1*07(00000000)<\r><\n>2.8.1*06(00000000)<\r><\n>2.8.1*05(00000000)<\r><\n>2.8.1*04(00000000)<\r><\n>2.8.1*03(00000000)<\r><\n>2.8.1*02(00000000)<\r><\n>2.8.1*01(00000000)<\r><\n>2.8.1*00(00000000)<\r><\n>2.8.2(00000000*kWh)<\r><\n>2.8.2*14(00000000)<\r><\n>2.8.2*13(00000000)<\r><\n>2.8.2*12(00000000)<\r><\n>2.8.2*11(00000000)<\r><\n>2.8.2*10(00000000)<\r><\n>2.8.2*09(00000000)<\r><\n>2.8.2*08(00000000)<\r><\n>2.8.2*07(00000000)<\r><\n>2.8.2*06(00000000)<\r><\n>2.8.2*05(00000000)<\r><\n>2.8.2*04(00000000)<\r><\n>2.8.2*03(00000000)<\r><\n>2.8.2*02(00000000)<\r><\n>2.8.2*01(00000000)<\r><\n>2.8.2*00(00000000)<\r><\n>F.F.1(02010000)<\r><\n>C.7.0(
andy_k
Neu hier
Neu hier
 
- Threadstarter -
 
Beiträge: 9
Registriert: 17.03.2018, 16:06
Info: Interessent

Re: Elster AS1440

Beitragvon JAU » 26.03.2018, 20:59

Das ist Lastgang, nicht Momentanwerte. Sieht man an den *nn hinterm OBIS Code.
Bei 300bd kann das schonmal ne Weile dauern bis der Zähler damit fertig ist.


mfg JAU
No Shift - No Service
Benutzeravatar
JAU
Forumsinventar
Forumsinventar
 
Beiträge: 1580
Registriert: 01.12.2012, 11:04
Wohnort: 74632
PV-Anlage [kWp]: 12,8
Info: Betreiber

Re: Elster AS1440

Beitragvon Paul_S » 26.03.2018, 21:55

andy_k hat geschrieben:spuckt er mir weder noch aus :/
gibt es noch einen andern Weg um an die Momentanleistung zu kommen?
Und hat jemand von euch schon die Daten über ein python Script oder Ähnliches geparst?

Ich lese den AS1440 mit einem C-Programm.
Ich nutze das Kommando
Code: Alles auswählen
    sprintf (&s_buf[0], "/2!\r\n") ;

Dann mache ich zur Auswertung das hier (gekürzt):
Code: Alles auswählen
    do{
        anz = read(ser_fd, (void*)&dummy, 1);  // Ende eines Strings suchen
    }while(dummy != 0x0A);

    do{
      anz = read(ser_fd, (void*)&e_buf[byte], 1);  // ein Zeichen lesen
      byte++;
      if(e_buf[byte-1] == 0x0A){
      a = e_buf[0] - '0';
      b = e_buf[2] - '0';
      c = e_buf[4] - '0';
      if(e_buf[5] == '*') 
        num = 10 * (e_buf[6] - '0') + e_buf[7] - '0';
      else
        num = -1;
      abc = a*10000 + b*100 +c;
      e_buf[byte-2] = '\0'; // CR-LF entfernen
//      printf("\nString %d: %s (num=%d)", abc,e_buf,num);
      switch(abc){     
    case 901:  // 0.9.1 = akt. Zeit
        pStart = 1 + strstr(&e_buf[0], "(");
        pEnd = strstr(&e_buf[0], ")");
        len = pEnd - pStart;
        strncpy(ergebnis, pStart, len);
        sprintf(zeit,"%.2s:%.2s:%.2s", &ergebnis[0], &ergebnis[2], &ergebnis[4]);  // 23:59:59 Doppelpunkte einfügen
        printf("\nZeit: %s", zeit);
        break;
    case 902:  // 0.9.2 = akt. Datum
        pStart = 1 + strstr(&e_buf[0], "(");
        pEnd = strstr(&e_buf[0], ")");
        len = pEnd - pStart;
        strncpy(ergebnis, pStart, len);
        monat = 10 * (ergebnis[2]-'0') + (ergebnis[3]-'0'); // Monat extrahieren
        sprintf(datum,"%.2s.%.2s.%.2s", &ergebnis[4], &ergebnis[2], &ergebnis[0]);  // deutsches Datumformat
        printf(" - Datum: %s", datum);
        break;
 ...    case 10800:  // 1.8.0
        pStart = 1 + strstr(&e_buf[0], "(");
        pEnd = strstr(&e_buf[0], ")");
        len = pEnd - pStart - 4;
        strncpy(stand180, pStart, len);
        stand180[len] = '\0';
        printf("\nBezogen   : %s kWh", stand180);
        break;
    case 20800:  // 2.8.0
        pStart = 1 + strstr(&e_buf[0], "(");
        pEnd = strstr(&e_buf[0], ")");
        len = pEnd - pStart - 4;
            strncpy(stand280, pStart, len);
            stand280[len] = '\0';
            printf("\nGeliefert : %s kWh", stand280);
         break;
    case 10700:  // 1.7.0 = Leistung 1
        pStart = 1 + strstr(&e_buf[0], "(");
        pEnd = strstr(&e_buf[0], ")");
        len = pEnd - pStart - 3;
        strncpy(ergebnis, pStart, len);
        ergebnis[len] = '\0';
        sscanf(ergebnis, "%lf", &b_leistung);
        leistung = e_leistung - b_leistung;
        printf("\nNetzleistung   : %5.3f kW", b_leistung);
        if (leistung != 0.0)
        {  // nur wenn hier schon das Ergebnis feststeht:
          pwm_leistung = leistung;
          if(pwm_leistung < -6.0)
            pwm_leistung = -6.0;
          if(pwm_leistung > 6.0)
            pwm_leistung = 6.0;
          pwmVal = (pwm_leistung + 6.0) * 21;
          pwmWrite (1, pwmVal);  // PWM ausgeben
        }
        break;
    case 20700:  // 2.7.0 = Leistung 2
        pStart = 1 + strstr(&e_buf[0], "(");
        pEnd = strstr(&e_buf[0], ")");
        len = pEnd - pStart - 3;
        strncpy(ergebnis, pStart, len);
        ergebnis[len] = '\0';
        sscanf(ergebnis, "%lf", &e_leistung);
        leistung = e_leistung - b_leistung;
        printf("\nEinspeiselst.  : %5.3f kW  -> Saldo:  %5.3f kW", e_leistung,  leistung);
        // Skalierung: PWM 250 = Vollausschlag, also 0 kW = PWM-Wert 125
        // Skala von -6 kW...0...+6kW
        // 6kW = 125 Ticks, also
          pwm_leistung = leistung;
          if(pwm_leistung < -6.0)
            pwm_leistung = -6.0;
          if(pwm_leistung > 6.0)
            pwm_leistung = 6.0;
          pwmVal = (pwm_leistung + 6.0) * 21;
          pwmWrite (1, pwmVal);  // PWM ausgeben
        break;
    default:
//        if(string%20 == 0)
//          printf(".\n");
        break;
      }
      string++;
      byte = 0;

    }

Die Hilfsvariable abc wird nur benutzt um ein bequemeres switch/case machen zu können - das ginge sicherlich auch anders.
pwmWrite() steuert übrigens den Zeiger in meinem Avatar-Bild...
Vielleicht bringt Dich das weiter.

Paul
8 kW: 33 x Isofoton ISF-245 black (Ost, 23°), KACO 10.0 TL3
Benutzeravatar
Paul_S
Stammmitglied
Stammmitglied
 
Beiträge: 59
Registriert: 24.10.2011, 14:08
PV-Anlage [kWp]: 8,085
Info: Betreiber

Re: Elster AS1440

Beitragvon andy_k » 27.03.2018, 06:11

das spuckt er mir aber aus wenn ich zuerst 2F 3F 21 0D 0A
und dann
06 30 30 30 0D 0A
übergebe.
andy_k
Neu hier
Neu hier
 
- Threadstarter -
 
Beiträge: 9
Registriert: 17.03.2018, 16:06
Info: Interessent

Re: Elster AS1440

Beitragvon andy_k » 27.03.2018, 18:39

also die Momentanleistung bekomme ich über /2! raus
in folgenden Dokumenten ist die Rede von einem Break Command welches die Kommunikation stoppt, weiß wer wie man das verwendet?
<SOH>B0<ETX><BCC><CR><LF> (hex 01 42 30 03 71 0D 0A) funkt auch nicht
http://www.emsycon.de/downloads/LH2127B3.pdf
http://www.mayor.de/lian98/doc.de/html/g_iec62056_struct.htm
andy_k
Neu hier
Neu hier
 
- Threadstarter -
 
Beiträge: 9
Registriert: 17.03.2018, 16:06
Info: Interessent

Re: Elster AS1440

Beitragvon JAU » 27.03.2018, 23:21

andy_k hat geschrieben:gibt es ein Kommando um den Output anzuhalten? Irgendwie läuft er seit heute wieder in eine Schleife rein.

Stolperst du da vielleicht über diese Funktion:
Wenn innerhalb von 1,5s keine weiteren Befehle gesendet werden, gibt der Zähler die aktuellen Messwerte aus und meldet sich ab.

Das ließe sich nämlich unterbinden wenn du die Kommunikation mit <SOH>B0<ETX><BCC><CR><LF> von deiner Seite aus für beendet erklärst.

andy_k hat geschrieben:also die Momentanleistung bekomme ich über /2! raus

Anstatt /?!\r\n ?

andy_k hat geschrieben:in folgenden Dokumenten ist die Rede von einem Break Command welches die Kommunikation stoppt, weiß wer wie man das verwendet?

Ein Break in serieller Kommunikation wird durch setzen der TXD-Leitung erreicht. Das ist dann auch was in dem Dokument als "statisches Signal" bezeichnet wird. Es ist eigentlich keine Zeichenfolge die man senden kann.
Ich fürchte da gehen dann zweierlei Funktionen durcheinander die leider ähnlich bezeichnet werden.


mfg JAU
No Shift - No Service
Benutzeravatar
JAU
Forumsinventar
Forumsinventar
 
Beiträge: 1580
Registriert: 01.12.2012, 11:04
Wohnort: 74632
PV-Anlage [kWp]: 12,8
Info: Betreiber

Re: Elster AS1440

Beitragvon andy_k » 28.03.2018, 09:30

JAU hat geschrieben:Stolperst du da vielleicht über diese Funktion:

Nein. Der Output erfolgt ganz gezielt nachdem ich das Kommando absetze

Das ließe sich nämlich unterbinden wenn du die Kommunikation mit <SOH>B0<ETX><BCC><CR><LF> von deiner Seite aus für beendet erklärst.

Habe bis jetzt nur den Output von /2! versucht zu beenden und das hat nicht funktioniert.

Anstatt /?!\r\n ?

Ja. Über /2! bekomme ich sämtliche X.7.0 Werte heraus. Einzelne Phasen sowie gesamt - jedoch keinen 1.8.0 Wert

Ein Break in serieller Kommunikation wird durch setzen der TXD-Leitung erreicht. Das ist dann auch was in dem Dokument als "statisches Signal" bezeichnet wird. Es ist eigentlich keine Zeichenfolge die man senden kann.
Ich fürchte da gehen dann zweierlei Funktionen durcheinander die leider ähnlich bezeichnet werden.

Gibt es sonst irgendeine Möglichkeit? Der Output womit ich den 1.8.0 Wert bekomme läuft einfach zu lange. Ich möchte das Parsen der Werte in einem kürzeren Intervall realisieren
andy_k
Neu hier
Neu hier
 
- Threadstarter -
 
Beiträge: 9
Registriert: 17.03.2018, 16:06
Info: Interessent

Re: Elster AS1440

Beitragvon Paul_S » 03.04.2018, 21:57

andy_k hat geschrieben:Ja. Über /2! bekomme ich sämtliche X.7.0 Werte heraus. Einzelne Phasen sowie gesamt - jedoch keinen 1.8.0 Wert

Find' ich ja bemerkenswert. Mein Elster AS1440 gibt bei /2! alle Werte aus die ich brauche - auch den 1.8.0 (siehe mein Programmcode oben).
Es scheint also so zu sein, dass man sich auf nichts wirklich verlassen kann, weil die Messstellenbetreiber vieles konfigurieren können. Bei meinem bin ich daran gescheitert die Baudrate zu wechseln, weil mir ein Passwort dafür fehlt. Aber mit /2! schaffe ich wenigstens eine Auslesung pro Minute.

Viel Erfolg weiterhin...
Paul
8 kW: 33 x Isofoton ISF-245 black (Ost, 23°), KACO 10.0 TL3
Benutzeravatar
Paul_S
Stammmitglied
Stammmitglied
 
Beiträge: 59
Registriert: 24.10.2011, 14:08
PV-Anlage [kWp]: 8,085
Info: Betreiber

Vorherige

Zurück zu volkszaehler.org



Ähnliche Beiträge


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste