HowTo - SML-Stromzähler mit IPS Auslesen

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

Guten Morgen Jürgen,

dafür ist mein Wissen leider nicht groß genug, oder mein Unwissen einfach zu groß.
Wo und wie soll ich den Code bei mir einbauen?
Kannst du mich dabei unterstützen?

Vielen Dank und viele Grüße
Marc

Wenn du wenig Wissen hast, dann solltest du das Modul nutzen. Das funktioniert ohne eigene Programmierung.
Grüße
Jürgen

Da hast du auf den ersten Blick bestimmt recht, auf den Zweiten Hilft das beim „Wissen“ aufbauen aber halt leider auch nicht weiter.
Und ich will ja nicht für ewig „unwissend“ bleiben. :grinning:

bei mir läuft das ganze jetzt soweit ganz ordentlich. Das Problem mit der Schnittstelle existiert zwar weiterhin, aber ich lese die Werte nicht sekündlich aus und so kommen keine fehlerhaften Werte mehr rein.

Hallo @Maze77 ,
ich habe den gleichen Zähler und auch die PIN dazu erhalten. Trotzdem bekomme ich es nicht hin, die erweiterten Daten freizuschalten. wie gehst du da vor? Wenn ich nach PIN-eingabe irgendwann den Menüpunkt PIN ON/OFF erreiche und dann 5sec leuchte, lande ich wie zum Hohn wieder bei der PIN Eingabe. leuchte ich kürzer verlasse ich das Menü.
BG

Sorry, eben erst entdeckt. @te0007

Pin On Off ging bei mir.
Wichtig ist, die erweiterten Infos unter INF zu aktivieren.

Hab gemerkt, dass die Einstellungen alle bei nem Stromausfall zurück gesetzt werden.

Gruß
Maze