[Modul] SML-Counter zur Integration der Infrarotschnittstelle von Haushaltszählern

Mag sein, dass bei dir die Datensätze gut durchlaufen, aber du hast halt nur einen Zähler.
Jeder Zähler ist etwas anderes. Ruhe kehrt nur ein, wenn wir uns wirklich penibel an den Standard halten. Sonst wird das eine Dauerbaustelle…

Ich selber lese seit 10 Jahren die Zähler aus. Bisher mit dem ASCII D0-Protokoll (Klartext).
Da gibt es leider keine Checksumme. Ich habe ständig Probleme mit den Übertragungsfehlern.
Jede Paar Wochen lösche ich fehlerhafte Werte im Archiv.
Mittlerweile habe ich mein Dekodierscript soweit verfeinert, dass ungültige Werte erkannt werden (über einen Zeitfaktor und den letzten Variablenwert).
CRC MUSS daher funktionieren. Das ist aber meine Baustelle. Du bekommst das von mir fertig geliefert.

Übrigends:
Der Modulname SML-Couter ist sehr unglücklich gewählt.
Besser wäre „SML Parser“ oder ähnlich. Schließlich liefern die Zähler auch viele andere Werte.
Aktuell habe ich meinen Zähler noch nicht per Pin freigeschaltet. Der Pin ist im Zulauf.
Dann habe ich ca. 15 Parameter, die ich weiterverarbeiten will. Von Spannungen, Ströme, Phasenwinkel etc…
Bin mal gespannt, ob das alles korrekt dekodiert wird.

Grüße
Michael

Fehlt hier eventuell das demaskieren der Nutzdaten, falls die Escape Sequenz in den Nutzdaten vorkommt?

Dann könnte dadurch auch die CRC Prüfung beeinflusst werden.

Hatte ein ähnliches Thema schon mit anderen Protokollen. Nur selten ist dann gut beschrieben in welcher Reihenfolge etwas erfolgen muss.

Hat das Protokoll kein Längen Feld?
Dann könnte man nach dem Header einfach die Bytes zählen.
Wobei da auch das Problem ist, ob Escape, CRC oder füllbytes mitgezählt werden, oder auch nicht :laughing:
Michael

Ich habe jetzt viele Stunden mit dem Lesen der CRC verbracht und @mischo22 ganz sicher auch. Mein persönliches Fazit ist, dass es bisher noch niemand stabil für alle Zähler geschafft hat, die Checksumme zu bilden.

Ich lasse das Thema deshalb erstmal ruhen und führe Basis-Tests ein, welche die Datensätze absichern. Dann sehen wir mal weiter, was die Erfahrungen hier mit dem Modul ergeben. Wenn es zu häufigen Problemen kommt, müssen wir weitere Maßnahmen ergreifen, sonst nicht.

Grüße
Jürgen

V1.05 Neu: Basis-Prüfung des Datensatzes, Prüfungen abschaltbar

Ich habe die neue Beta gerade online gestellt. Hierin gibt es jetzt Experteneinstellungen, bei denen man die CRC-Prüfung einschalten und eine neue Basis-Prüfung abschalten kann.

In der Basis-Prüfung wird das Ende des Datensatzes geprüft.

Grüße
Jürgen

nein, demaskieren muss man nur die Escapesequenz.
Die hab ich hier bei meinem Zähler nicht im stream.

Die BSI Spezifikation sagt auch eindeutig:

Die Prüfsumme ist nach CCITT-CRC16 zu berechnen. Sie wird über alle Bytes des
Datenstroms im SML-Transportprotokoll mit Ausnahme der letzten beiden Bytes (und damit ohne die Bytes der Prüfsumme selber) berechnet.

Soll heißen: Prüfsumme wird gebildet über die Rohdaten, die empfangen wurden.

Habe nun auf v1.05 aktualisiert.
Daten kommen nun, aber folgendes musst du ändern:

  1. Bei den Zählerständen fehlen die Nachkommastellen (sind immer 0 bei mir)
  2. Alle Variablen nur aktualisieren, wenn diese sich gegenüber dem gespeicherten Wert geändert haben
  3. Den ident ändern auf die OBIS-Kennung (1.8.0)

Ach, sorry. Habe es wohl übersehen. Es steht da doch schon bei Punkt 7.

Und cool das es mir den CRC gut beschrieben ist.

Warum?
Symcon loggt eh nur Änderungen. Warum also nicht immer die Variablen aktualisieren?
Michael

ja, du hast recht, wusste ich nicht. Ich dachte das wird immer geloggt bei Aktualisierung.
Aber das regelmäßige Aktualisieren verursacht Last im System, Einträge im Log, im Webfront etc.
Muss ja nicht sein.

Bis auf das Log ist das aber vernachlässigbar. Immerhin wird Modbus auch mit 500ms gepollt.
Paresy schrieb Mal dass es egal ist.
Wenn es nicht immer gleich 500kb String Variablen sind, merkt das niemand.
Wie häufig kommen die Werte den rein?
Alle 1-5 Sekunden?
Michael
PS: Und Wert HTML-BOXen benutzt schaltet eh das VariableWatch im Log ab :smiley:

Die Häufigkeit ist einstellbar. Damit kann man die Last auf das Erträgliche dimmen. Da das Modul in den Zeiten, wo keine Daten gewünscht sind, auch den Datenstrom per ReceiveDataFilter blockt, ist die Last des Systems minimiert.
Grüße
Jürgen

Wenn es um den Zähler geht, von dem Du mir den Datenstrom geschickt hast, dann kann es auch keine Nachkommastellen geben. Der angegebene Faktor ist 1000, also 1 Digit = 1 kWh.

Wenn der Faktor 1000 ist, dann sollten ja 3 Nachkommastellen vorhanden sein…

wie das denn? Die kleinste Einheit sind 1000Wh = 1kWh. Woher sollen die Nachkommastellen kommen?

War es nicht so, dass im SML die Werte mit einer Zahl dargestellt werden und einem Teilfaktor?
da steht dann z.B. 33512 als Wert, was durch den angegebenen Faktor geteilt werden muss, was dann 33,512 entspricht.

Oder irre ich mich da gerade?

Das ist fast richtig. Du hast einen sogenannten Scaler. Der kann positive und negative Werte annehmen und bestimmt als Potenz von 10 den Faktor. Dazu kommt dann noch die Einheit. Diese ist typischerweise und bei Dir auch Wh. Die Darstellung in Symcon ist in kWh, wodurch sich schon ein Grundfaktor von 0,001 ergibt. Mein Hauszähler hat einen Scaler von -1. Damit habe ich 4 Nachkommastellen. Dein Zähler hat einen Scaler von 3, also einen Faktor von 1000. Dadurch hast Du keine Nachkommastellen.

Wenn ich bedenke, dass mein vorheriger Zähler 3 Nachkommastellen hatte,
ist das schon ein Rückschritt.

Sobald ich die PIN habe, berichte ich, ob sich was geändert hat.

Hi…
Ich habe mir heute Abend das Modul auch mal installiert. Aber irgendwie funktioniert mein Setup noch nicht richtig.

Mein Setup sieht wie folgt aus:

  • Zähler → EMH IW8E2A
  • Lesekopf → Weidmann

Unter der Instanz des Moduls werden keine Variablen angelegt.

Weiterhin bekomme ich immer folgende Fehlermeldung:

Im Debug der Modulinstanz sehe ich, dass folgende Daten empfangen weren:

03.02.2022, 21:37:21 |             Received | 76 07 00 19 03 9D 4C D9 62 00 62 00 72 63 01 01 76 01 01 07 00 19 10 FA 6E F3 0B 06 45 4D 48 01 04 C5 6C B5 7A 01 01 63 C3 10 00 76 07 00 19 03 9D 4C DA 62 00 62 00 72 63 07 01 77 01 0B 06 45 4D 48 01 04 C5 6C B5 7A 07 01 00 62 0A FF FF 72 62 01 65 10 FA CA 3E 7A 77 07 81 81 C7 82 03 FF 01 01 01 01 04 45 4D 48 01 77 07 01 00 00 00 09 FF 01 01 01 01 0B 06 45 4D 48 01 04 C5 6C B5 7A 01 77 07 01 00 01 08 00 FF 64 01 01 82 01 62 1E 52 FF 56 00 11 92 E5 E4 01 77 07 01 00 02 08 00 FF 64 01 01 82 01 62 1E 52 FF 56 00 17 CB F0 65 01 77 07 01 00 01 08 01 FF 01 01 62 1E 52 FF 56 00 11 92 E5 E4 01 77 07 01 00 02 08 01 FF 01 01 62 1E 52 FF 56 00 17 CB F0 65 01 77 07 01 00 01 08 02 FF 01 01 62 1E 52 FF 56 00 00 00 00 00 01 77 07 01 00 02 08 02 FF 01 01 62 1E 52 FF 56 00 00 00 00 00 01 77 07 01 00 10 07 00 FF 01 01 62 1B 52 FF 55 00 00 14 37 01 77 07 81 81 C7 82 05 FF 01 72 62 01 65 10 FA CA 3E 01 01 83 02 45 AA 56 AF E7 6D 88 14 AA 7B 1D EC 95 51 AE AF 39 03 E0 23 16 1F 19 10 94 82 D8 26 18 F3 C7 07 C0 72 6A DB 8B 96 6E C5 24 EE 68 72 04 B0 76 70 01 01 01 63 0A 06 00 76 07 00 19 03 9D 4C DD 62 00 62 00 72 63 02 01 71 01 63 38 45 00 00 1B 1B 1B 1B 1A 01 3F 8E 

Hat einer von Euch eine Idee was das Problem sein könnte?

Schon mal Danke und viele Grüße
Jochen

Hallo Jochen,
ich gucke mir das morgen mal an. Ich gehe davon aus, dass Du die Stable-Version installiert hast, richtig?
Grüße
Jürgen

1 „Gefällt mir“

Hi Jürgen.

Ja, ist die Stable. Hatte es aber auch mal mit der Beta versucht. Ergebnis war aber das gleiche. Habe von daher wieder zurück auf die Stable Version umgestelt.

Schon mal Danke für Deine Hilfe! :+1:

Grüße und schönen Abend
Jochen

V1.06 Fix: Modulo-Fehler auf 32-bit-Systemen

Auf 32-bit-Systemen konnte es bei der Umwandlung von HEX in signed Integer dazu kommen, dass die Berechnung mit einer Fehlermeldung abbricht. Dieser Fehler ist in der neuen Version behoben.

Die Version ist wie immer zunächst als Beta verfügbar.

Grüße
Jürgen

1 „Gefällt mir“