HowTo - SML-Stromzähler mit IPS Auslesen

Hallo Peter,
vielen Dank ich zähl das gleich mal durch, ich habe mich nur über die Längenangaben auf der rechten Seite des Debug Fensters gestört, dachte da muss immer der gleiche Wert auftauchen…

Du hast recht! wenn ich die Zahlen rechts ab der Eröffnung bis zur nächsten addiere komme ich immer auf 260 oh je… das ist mir nicht in den Sinn gekommen.
Vielen Dank, klasse…jetzt bastele ich mal an dem Extrahieren der Werte denk ich komme nun weiter

Gruß
Jürgen

So, etwas weiter bin ich
aber es kommen keine vernünftigen Zahlen… wo liegt mein Fehler?

Ich habe die Beschreibung zu meinem Zähler, und wollte mit der aktuelle Wirkleistung mal anfangen…

Kennung 01 00 10 07 00 FF nach dieser Kennung hatte ich Daten vermutete, aber nix wars…
wenn ich einen 1. Frame mit einem 2. Frame 30 Minuten später verglichen hatte,
bemerkte ich, dass nach der OBIS Kennung fixe Daten wohl kommen…

Und selbst wenn ich nach diesen fixen Daten irgendwie dann lese siehe Bild unten ändern sich zwar die Zahlen, aber ich kann keinen Sinn sehen…

Bitte nochmals um Anschubhilfe…
Hier ein 1. Frame und ein 2. Frame mit meiner Abzählung…

Hallo Jürgen,

schau mal auf folgende Seite (weiter unten):

http://www.stefan-weigert.de/php_loader/sml.php

Hier wird das SML-Protokoll sehr gut erklärt.

(FE F2 und 02 21 müssten die Werte sein)

Viele Grüße

Rudi

Hallo Rudi,

zunächst es ist so wie von dir angegeben, die aktuelle Wirkleistung funktioniert, perfekt.
Vielen Dank!!

Nun habe ich versucht mir die SML Doku heute Abend reinzuziehen…
leider versteh ich es nicht wirklich…, wollte eigentlich nur den positiven Zählerstand auslesen
ich habe hin und her probiert, es aber nicht geschafft… evtl. habe ich etwas übersehen…

Evtl. siehst du auf Anhieb wo konkret die Daten stehen?

Gruß
Jürgen

Leider stimmen die Zahlen nicht immer, ich vermute es liegt am Zweirichtungszähler wegen der Einspeisung der PV Leistung… die Werte sind in aller Regel 3 stellig, also 350 Watt oder 700 Watt, bzw. wenn ich den Heizlüfter anmache auch über 2000 Watt . Aber dann kommt es plötzlich vor, dass die Wirkleistung 5 stellig wird…25689, 35369 usw. ich versteh das nicht…

Ich vermute es muss noch irgendwo ein Vorzeichen geben, das auszuwerten ist… aber ich finde es adhoc nicht…

Hat jemand einen Zweirichtungszähler und weiß ob es ein Vorzeichen gibt?

Gruß
Jürgen

Schau mal unter SML Stromzähler - falsche Werte Wirkleistung wenn PV Einspeisung - 4er HEX Gruppe - IP-Symcon 4.x/5.x / Skripte, PHP, SQL (Fragen) - IP-Symcon Community meinen Beitrag vor 11 Tagen. Eventuell musst du mit der Funktion hexdecs umwandeln, damit das Vorzeichen berücksichtigt wird.

Hallo Jürgen,
nachdem ich diesen Thread vor zig Jahren aboniert hatte und deswegen schon etliche Notifications bekommen habe dachte ich es wäre gut mal hier vorbei zu schauen.

Hier sind Deine Zählerstände:

Bei der Leistung wird üblicherweise der Bezug mit „0“ und Lieferung mit „F“ signalisiert.
Ob das bei Dir auch so ist müsstest Du für beide Fälle einfach mal prüfen.
Ansonsten kannst Du die Leistung auch aus den Zählerständen und dem Zeitintervall (üblicherweise 2s) berechenen.

Gruß
Christian

Hi Christian, ich glaub ich träume… Wahnsinn, das sind sie in der Tat, vielen vielen Dank!!

Ich schau mir das nun mal genau an, damit ich versteh wo mein Fehler lag, aber das sind die Stände 100 % !!

Danke
Gruß
Jürgen

1 „Gefällt mir“

Hi Rudi, vielen Dank schaue ich mir auch an.

An Alle herzlichen Dank, ohne Euch wäre ich nicht weitergekommen.

LG
Jürgen

Hallo Jürgen,

der Wert ist in der Zeile 59 00 00 … a7.
die erste Stelle (5) gibt die Type der „Datenzeile“ an. Die zweite Stelle (9) gibt die Länge der „Datenzeile“ an. 9 Bytes incl. der 59. Die Daten stehen dann in 00 00 00 00 01 C9 0C a7.

Viele Grüße

Rudi

Hallo Rudi,

da die direkte Antwort auf deine PM über normalem Mail aktuell im neuen Forum noch nicht möglich ist (Info von Paresy) würde ich gerne Dein Angebot annehmen…
juwo1811ATgmail"PUNKT"com
LG
Jürgen

Sodele,

bei mir gabs heute auch nen neuen Zähler und nun passe ich die Skripte von den Alten (EMH eHz) auf den Neuen (Itron Typ e.HZ-BC-D4-A1-11, Zweirichtungszähler) an.

Die Hauptfunktionen der Zähler gehen schon, für die anderen muss ich noch ein paar Tage warten, damit ich die benötigte PIN beantragen kann. Dauert wohl noch bis der neue Zähler im System ist.

Wenn wer den gleichen Zähler hat und mal Hilfe braucht, einfach melden.

Gruß
Maze

@Silberstreifen : dann mache ich hier mal weiter.

Das aktuelle Log-File von der Seriellen Schnittstelle. Baudrate hatte ich auf dem Raspi soweit auf 9600 eingestellt. Auch mit 300 bringt er solche Meldungen. Es ist der IR Schreib/Lesekopf USB von Weidmann Elektronik.

dump (4).txt (18,1 KB)

Und der Dump aus dem Log von der SML-Schnittstelle ist im dump (5).txt
dump (5).txt (55,2 KB)

das sieht soweit alles gut aus. D.h. wenn die Daten durchkommen, dann sind sie auch in Ordnung. So weit so gut.

Wenn die Serielle Schnittstelle fehlerhaft ist, dann liegt es an falschen Einstellungen.

  • Als erstes musst du rausfinden, auf welcher Baudrate dein Zähler arbeitet.
  • Wenn du diese kennst, dann den Raspi auf diese Baudrate einstellen.
  • Danach dann IPS auf die gleiche Baudrate einstellen.
  • Sollte es immer noch zu Fehlern kommen, dann bitte prüfen ob Datenbits, Stopbits und Parität stimmen.

Grüße
Jürgen

wie bekomme ich denn heraus, auf welcher Baudrate der Zähler arbeitet? Mit dem MT681 habe ich bisher immer nur die 9600 er Einstellung vorgefunden.

entweder beim Hersteller anfragen oder probieren.
Ich habe aber auch noch nicht verstanden, was der Raspi bei dir macht und wie du ihn mit IPS verbunden hast. Ggf. liegt da das Problem.

Hallo,

ich habe leider auch das Problem beim Zweirichtungszähler mit der falschen Wirkleistung.
Aber das mit hexdecs klappt bei mir nicht, dann arbeitet mein Cutter ab der Zeile nicht mehr weiter.

Kann mir hier vielleicht jemand helfen?

So ist der Code im Moment…


// 01 00 10 07 00 FF - aktuelle Wirkleistung
SetValueFloat(32378 ,(hexdec(substr(bin2hex($IPS_VALUE), 554, -738))));

Viele Grüße
Marc

Hallo Marc,

nutzt du bereits mein Modul?

Damit sollte das Problem behoben sein.
Grüße
Jürgen

Hallo Jürgen,

nein noch nicht, da ich das Skript hier jetzt bereits seit Jahren verwende und nach dem Motto „Never Change a Running System“ gehofft habe bekomme es so auch wieder zum laufen… :grinning:

Hallo Marc,
ich nehme an, dass es sich um einen signed Value, also einen vorzeichbehafteten Wert handelt. Dann solltest du mit folgender Vorgehensweise weiterkommen.

    function Value($string, $signed)
    {
        if($signed){
            for($i = 0; $i < strlen($string); $i+=2){
                if(substr($string, $i, 2) != 'FF'){
                    if($i > 0)$string = substr($string, $i -2);
                    break;
                }
            }
            $ref = '7';
            for($i = 1; $i < strlen($string); $i++)$ref .='F';
        }
        if($signed && (hexdec($ref) - hexdec($string)) < 0){
            $ref = str_replace('7', 'F', $ref);
            return hexdec($string) - hexdec($ref) - 1;
        }else{
            return hexdec($string);
        }
    }

Grüße
Jürgen