Mehr Daten via Altsoftserial auslesen

Hallo an alle Forummitglieder

Dank eurer Hilfe kann ich nun seit Jahren meinen Stromzähler auslesen. Nun möchte ich neben dem Überschüssigen Strom (1-0:2.7.0) auch den Stromverbrauch (1-0:1.7.0) auswerten.

Leider gibt mir der folgende Sketch keinen Wert für 1-0:1.7.0 aus.

Wird die Auslesung vielleicht von altsoftserial zeitlich begrenzt oder mit was könnte das zu tun haben?

#include <AltSoftSerial.h>

#include <AltSoftSerial.h>
// AltSoftSerial always uses these pins:
//
// Board          Transmit  Receive   PWM Unusable
// -----          --------  -------   ------------
// Teensy 2.0         9        10       (none)
// Teensy++ 2.0      25         4       26, 27
// Arduino Uno        9         8         10
// Arduino Mega      46        48       44, 45
// Wiring-S           5         6          4
// Sanguino          13        14         12
 
AltSoftSerial altSerial;
char c;

    
void setup() {
    Serial.begin(115200);
    altSerial.begin(115200);
}
 
void loop() {

    
    if (altSerial.available()) {
        c = altSerial.read(); 
       
        // --- 7 bits instelling ---
        c &= ~(1 << 7);
        char inChar = (char)c;

    Serial.print(c);

}
}

Char-Datensatz:

1-3:0.2.8(50)
0-0:1.0.0(211211164814W)
0-0:96.1.1(3230333830333738)
1-0:1.8.1(003107.883kWh)
1-0:1.8.2(001105.053
kWh)
1-0:2.8.1(007040.886kWh)
1-0:2.8.2(000052.335
kWh)
1-0:32.7.0(236.5V)
1-0:52.7.0(233.2
V)
1-0:72.7.0(234.5V)
1-0:31.7.0(001
A)
1-0:51.7.0(009A)
1-0:71.7.0(004
A)
1-0:2.7.0(00.000*kW)
1-0:1.7.0()
!4781

Ich hoffe ihr könnt mir weiterhelfen.
Grüße

Dein Stromzähler liefer anscheinen die Daten nicht.

... sieht tatsächlich etwas angefressen aus. Weiß aber nicht, ob das so gesendet wird. Normale Smartmeter senden Binärdaten in SML. Wer ist der Sender?

Serial.print verzögert, wenn der Ausgabepuffer voll ist. Da beide mit der gleichen Geschwindigkeit laufen, kann das kaum passieren ?

Ändert sich was, wenn du etwas weniger sendest:

void loop() { 
    if (altSerial.available()) {
        char c = altSerial.read(); 
        if ( c != ')' ) Serial.write(c);
   }
}

Auf die Klammer am Zeilenende kann man zum Test verzichten ...

Der Sender ist ein Semax Smartmeter mit DMSR v5.0.2- Protokll

Mit deiner Änderung hat sich am Datensatz nichts geändert.

Ich hatte gehofft, dass der Fehler bei mir liegt.

Vermutlich muss dein Netzprovider die Daten erst freischalten ... Datenschutz und so, "Die Daten müssen vor dem Besitzer versteckt werden"

Was ist das für ein Zähler?
Kannst Du mal den Typ und Deinen Netzbetreiber kund tun?

Hallo
der OBIS Code kommt ja nur die Klammer ist leer. Und dahinter kommt dann noch was.
Könnte es sein das der Eingangspuffer von der AltSoftSerial voll gelaufen ist ?

eigentlich sollte man ja eine lib nicht ändern , aber ich hab das gefunden im code.

#define RX_BUFFER_SIZE 80
static volatile uint8_t rx_buffer[RX_BUFFER_SIZE];

Versuchsweise würde ich das mal auf 120 ändern.

Gruß Heinz

Das Kommunikationsmodul ist ein Seemax Am110. Der Netzbetreiber Repower.

1 Like

danke.
Der Seemax ist nur das Gateway.
Es braucht die Zählerbezeichnung, da in dem die entsprechenden Daten generiert werden.

elster as3000

Dazu muss ich einen Editor verwenden, richtig?

Richtig
Kannst du die Geschwindigkeit von dem Kommunikationsmodul nicht runter setzten auf 9600

@my_xy_projekt Du denkst das Gateway liest den Zähler da falsch aus deshalb steht nichts drin ?

Das muss ich revidieren, nachdem ich deinen Link zu DSMR angeguckt habe.
! und crc Wert sind am Ende wohl so vorgesehen.

Das hat auch @zwieblum schon vermutet.

Die Geschwindigkeit 115200 ist auch fest vorgegeben.

Bliebe noch, 1.8.1, 1.8.2 und 2.8.1, 2.8.2 auszuwerten und Differenzen zu alten Werten zu bilden...

Danke mal vorerst für eure Hilfe.

Den Eingangspuffer von Altsoftserial zu ändern und integrieren übersteigt meine momentanen Fähigkeiten.

Stimmt das macht ja auch Sinn. Dann scheint es so zu sein das der Zähler den Wert nicht zur Verfügung stellt. Das Gateway aber eigentlich schon , nur ist kein Eintrag enthalten. Darum auch die leere Klammer.

Nein.
Der Gateway ist ein Gateway.
Der bekommt die Daten und reicht die 1:1 weiter auf dem vorgesehenen Kommunikationskanal.
An dem können nur mehrere Sender gleichzeitig betrieben werden, die alle den selben Empfänger auf der anderen Seite haben.
Und: das Gateway ist dafür da, die Vorgaben zur Aggregation einzuhalten.

Darum wollte ich wissen, was das für ein Zähler ist. Dann kann man ggfls nachsehen, ob und was da ausgegeben wird. (Ggfls auch mit erweiterterfreischsltung)

Der gibt Deinen Wert nicht aus.