HowTo - SML-Stromzähler mit IPS Auslesen

Ich wurde hier im Forum immer wieder angeschrieben um bei der Integration eines SML-Stromzählers zu helfen. Dies war Grund für mich eine kleine Anleitung hierfür zu schreiben damit auch andere User eine kleine Hilfestellung haben.

Insbesondere möchte ich mich bei Stromer bedanken welcher die Daten im dem Beispiel des HowTo’s zur Verfügung gestellt hat und die erste Anleitung schon mal reviewed hatte.

Das HowTo ist als Hilfestellung anzusehen und kann leider nicht auf sämtliche SML-Varianten (Mehrtarifzähler, Zweirichtungszähler, …) eingehen. Grundkenntnisse im Umgang mit IPS sollten in jedem Fall vorhanden sein.

Hinweise zur Verbesserung des HowTo sind jederzeit herzlich willkommen.
Das HowTo ist in Form einer PDF-Datei im angehängten RAR-Archiv enthalten um die Darstellung mit Bildern und Hinweisen besser als im Forumtext darstellen zu können.

Gruß
Christian

Wichtiger Hinweis zu diesem HowTo !!!
Einbau darf nur von Elektrofachkraft erfolgen und sollte mit EVU abgesprochen werden !!!
Ich übernehme keine Haftung für Schäden welche durch diese Anleitung entstehen könnten.
Verwendung auf eigene Gefahr!

HowTo_SML-Zähler_mit_IP-Symcon_Auslesen_v1.0.rar (852 KB)

Hallo Christian,

tolle Anleitung! Hätte nicht gedacht, das mein seit Ewigkeiten genutztes Ultraedit das kann.

Danke und Gruß,
Axel

Hallo Christian,

fantastische Anleitung. Mit einer Sache habe ich allerdings noch Probleme: Die Länge des SML-Frames und daraus abgeleitet die anderen Werte. Das scheint noch nicht zu stimmen, da ich keine Werte bekomme.

Vom Socket bekomm ich folgenden Stream:

mac=XX:XX:xx:xx:xx:xx
boot=1
fw=02.00
time=1260470329
zpb=DE0000000000000000000000000000001
SML(1B1B1B1B0101010176070012003A4CF76200620072630101760101070012031B6EFD0D3139303030303032393632360101639CAA0076070012003A4CF8620062007263070177010D3139303030303032393632360172620165031BF5497577078181C78203FF0101010104454D480177070100000000FF010101010D3139303030303032393632360177070100010801FF628201621E52FF560006DE708201770700006001FFFF010101010B303030323236323733390177070100010700FF0101621B52FF55000026FB01010163358B0076070012003A4CF96200620072630201710163949800001B1B1B1B1A011398)

Mit dem Vergleichen zweier Datenpunkte habe ich erkannt, dass die rot markierten die Werte sind.

Desweiteren hätte ich daraus gelesen:
Cutter-Eingabelänge: 240
Sync-Zeichen: 1B 1B 1B 1B 01 01 01 01 (HEX)

und das Skript dazu:

SetValueFloat(33216 /[Strom-Zählerstand]/ ,(hexdec(substr(bin2hex($IPS_VALUE), 153, -82)))/10000);

Hast du eine Idee, wo der Fehler liegt?

Danke und Grüße

Michael

Hallo Michael,

aufgrund Deiner Daten sollte als Beispiel für den ersten Datensatz „0006DE7082“ folgendes richtig sein:

SetValueFloat(33216 /[Strom-Zählerstand]/ ,(hexdec(substr(bin2hex($IPS_VALUE), 306, -164)))/10000);

Wichtig! Im Skript müssen die Anzahl der Zeichen und nicht Bytes angegeben werden!!!
… das musst Du ändern!!!

Erklärung:
153 Bytes vom Anfang des Frames bis zum Beginn der Datenbytes „0006DE7082“ => 153x2 = 306 Zeichen
82 Bytes vom Ende der Datenbytes „0006DE7082“ bis zum Ende des SML-Frames => 82x2 = 164 Zeichen (negativer Wert im Skript)

Es scheint als verwendest Du den EDL LAN-Adapter???
So wie es aussieht werden bei Dir die Daten nicht direkt als HEX übertragen was beim Auslesen mit einem IR-COM-Adapter der Fall ist. Deine Daten sind zwar Hexadezimal, werden jedoch in ASCII übertragen. Wenn das der Fall ist, dann darfst Du im Cutter KEINEN Haken bei Hex setzen.

Bitte posten ob’s geklappt hat.
Gruß
Christian

Hi,
danke für die Hnweise.
Der Cutter liefert nun gute Daten, der Tipp mit dem Hex war gut. Außerdem musste ich die Cutter-Länge auch noch anpassen auf 480 Zeichen.
Allerdings lieferte dann das Skript ein „INF“. Dann hab’ ich noch mal nachgedacht bzgl. des HEX Strings und da ist mir die Idee gekommen, dass ich ja evtl. die bin2hex Funktion weglassen könnte.
Und das war die Lösung.

Jetzt funkioniert es einwandfrei.

Grüße,

Michael

Richtig, hatte ich vergessen zu erwähnen. Bei ASCII-Verarbeitung werden die Anzahl der Zeichen angegeben und bei Hex-Verarbeitung wird in Bytes gezählt.

Es gibt scheinbar immer mehr User mit Datenlogger welche die Daten per ASCII Stream übertragen. Kannst Du mir die genaue Bezeichnung Deines Loggers (evtl. mit Foto) zusenden und den dafür angepassten Skript-Code als Beispiel?? Ich würde dann diese Information in das HowTo einarbeiten.

Viel Spaß beim Smart Meter’n. :slight_smile:

Hallo zusammen,

erstmal Danke auch von mir an Christian. Die Anlaitung hat bestens geholfen um auch meine Daten aus dem Zähler per SML-Protokoll zu bekommen. Für mich als neuling im IPS, der in seinem Neubau mit KNX-System gerade die ersten Dinge erfolgreich eingerichtet hat sind solche Anleitungen Gold wert und ohne diese währe ein Einstig in das System glaube ich nicht zu schaffen. Mein Elektriker ist ebenfalls begeister, was heutzutage alles machbar ist… :slight_smile:

Per Serieller Schnittstelle und COM Port klappt das einwandfrei. Nur habe ich jetzt das Problem, das der IPS Server gar keine Serielle Schnittstelle hat. Mit einem USB to Seriel Adapter konnte ich die Daten auslesen und verarbeiten.

Nun meine Frage geht das auch auch mit einem USB-Schnittstellenadapter?

Denn eigentlich brauche ich meine serielle schnittstelle für einen älteren DENON Verstärker der ebenfalls nur Seriell kann. Anleitungen aus dem Forum warenebenfalls super!!

Ich habe da mal ein Foto eingestellt, mit den beiden Adaptern die ich gekauft habe. Der teurere (USB Variante) weis ich nicht wie einbinden, bzw. ansprechen?

Wüste hier ggf. jemand wie man einen solchen Adapter ansprechen kann, damit er Daten über USB an IPS liefert?

Vielen Dank schon mal und ich freue mich auf noch so viele Projekte mit IPS und dem neuen Haus…
Grüße Helmut

Schnittstellenadapter.JPG

Also ein USB-Schnittstellenadapter wird normalerweise als Datenlogger für bestimmte Hardware verwendet. Der Adapter ist meist direkt auf das Datenprotokoll des Gerätes (z.B. Digitalmultimeter) abgestimmt. Somit kann ich mir das nicht vorstellen das es funktioniert.

Aber warum nimmst Du nicht einfach einen zweiten USB-Seriell Adapter??? Ist doch viel einfacher und günstiger … noch dazu funktionierts auf jeden Fall.

Vielen Dank für die Info. Habe am Wochenende noch einen zweiten USB-Seriell Adapter besorgt, es klappt prima Stromzähler und Denon Steuerung laufen jetzt gleichzeitig.

Guten Tag aus Berlin ,

ich habe nach eurer Anweisung alle Einstellungen vorgenommen , es kommen Daten an , leider weiß ich nicht wie ich die Zuordnung der werte hinbekomme.

ich hänge ein Dump mit dran, vielleicht hat jemand den gleich Zähler MT681 im Einsatz ?

dump.txt (16.7 KB)

hallo Marcel,

manchmal hilft es, wenn man die angekommenen Daten als ANSI (ASCII) vorliegen hat und den Zählerstand kennt.

Gruß, Peter

Moin Moin,

ich lese meinen MT681 ebenfalls mit dem Script aus , das läuft nun aber dauerhaft , was muss ich im Script ändern das er nur alle 5 min Werte einholt ? Lesekopf ausschalten oder Register Variable ausschalten ?

ich hab zusätzliche variablen, welche alle 5min und einmal täglich die livevariablen von dem Skript abfragen. diese werden dann geloggt. das ist geschickter als die Regvar ein/aus zu schalten.

Zeig mal wie du das gemacht hast :slight_smile:

Gesendet von meinem iPhone mit Tapatalk

  1. Neue Variablen anlegen
  2. ein Skript erstellen mit GetVariable und SetRealVariable (oder so ähnlich)
  3. Zeit Ereignis für Skript anlegen

Fertig :slight_smile:

Supi Anleitung :frowning:

Gesendet von meinem iPhone mit Tapatalk

?

Das heißt?

Das man damit nix anfangen kann , ein bisschen genauer wär schön. So hätten alle was von

Gesendet von meinem iPhone mit Tapatalk

Wenn ich mal nicht vom Handy aus tippe, dann kann ich das gerne machen. Das kann aber dauern.

Gruß
Maze

Das hört sich gut an :slight_smile:

Gesendet von meinem iPhone mit Tapatalk