SML Stromzähler per USB Schreib-Lesekopf?

Begonnen von matzefisi, 04 August 2013, 14:14:48

Vorheriges Thema - Nächstes Thema

matzefisi

Hallo zusammen,

ich habe gerade schon lange im Forum gesucht, aber bislang nichts gefunden.

Hat schon jemand einen SML Stromzähler (EHZ/ED300/ACE 3000) direkt per USB-Schreiblesekopf (Von Udo vom Volkszählerprojekt) an FHEM angebunden, bzw. gibts da evtl. schon ein fertiges Modul? Das vorhandene SML Modul liest ja erstmal nur einen Webserver aus und nicht die USB Schnittstelle.

Ansonsten würde ich mich selbst dran machen und eines zusammenschreiben oder vielleicht auch das SML Modul zu erweitern.. Ich müsste dann allerdings noch wissen, ob ich dafür DevIo und das Blocking Modul benutzen sollte / muss.

Ein Perlscript welches den Stromzähler unabhängig vom FHEM ausliest und in einer RRD Datenbank ablegt habe ich schon zusammengeschrieben, aber ich hätte es gerne direkt im FHEM.

Bei Bedarf kann ich das Script hier gerne bereitstellen.

Danke schon mal für Eure Infos.

MfG
Matthias

Dennis D.

Hi Matthias,

den IR-Schreiblesekopf von Udo (allerdings die TTY-Version) habe ich an meinem EHZ EDL21. Dazu habe ich noch 4 S0-Stromzähler. Sowohl den IR-Schreiblesekopf, als auch die S0 Zähler habe ich an der Raspberry-Erweiterung angeschlossen, welche es ebenfalls bei Udo gibt. Vorteil an der Erweiterung ist neben den S0- und dem D0-Eingängen, dass noch 4 1-Wire Busmaster dabei sind.

Die Zähler werden aktuell über das Volkszähler-Projekt geloggt und ausgewertet. Die Einbindung in FHEM erfolgt dann über das Volkszaehler.pm-Modul Link.

Allerdings sehe ich das für mich nur als Zwischenlösung. Ich würde eine direkte Anbindung an FHEM bevorzugen. Also quasi ein Modul, welches die Daten der Zähler direkt loggt und auswertet, sodass man nicht parallel den Volkszähler laufen lassen muss. Leider kenn ich mich in Sachen Programmierung nicht aus, um hier selber was zu schreiben. Solltest Du dich da mal dran begeben, dann stehe ich aber als Tester gerne zur Verfügung. :-)

VG,
Dennis
FHEM 5.5 auf RPi Rev. B 512 mit HMLAN (HM-CFG-LAN)

CUL_HM: HM-LC-Bl1PBU-FM,HM-LC-SW1-BA-PCB,HM-LC-SW4-SM,HM-LC-Sw1PBU-FM,HM-OU-LED16,HM-PB-2-WM55,HM-RC-KEY3-B,HM-SEC-KEY,HM-SEC-RHS,HM-SEC-SC,HM-SEC-SD,HM-WDS10-TH-O,HM-WDS40-TH-I

OWDevice: DS18B20,DS2438

matzefisi

Hi Dennis,

danke für Deine Rückmeldung. Genau das gleiche Problem habe ich mit dem Volkszähler Projekt auch. Tolle Software, aber für mich einfach zu viel. Und mein RPi war mit dem Volkszähler Projekt etwas überfordert. Daher werde ich mich dann demnächst mal an ein Modul für den USB-Lesekopf machen und vielleicht können wir dann zusammen die TTY Version noch mit integrieren. Melde mich dann wieder, sobald ich was zeigbares habe.

MfG
Matthias

Dennis D.

Den Eindruck habe ich auch. FHEM + Volkszähler + SQL alles aufm Pi ist was viel. Will den kompletten Volkszähler Part runterwerfen, sodass entweder ein Daemon die Zähler in ne SQL-Db oder ein txt-log ausliest und ein FHEM-Modul dieses Log auswertet, berechnet und visualisiert, oder aber (wäre mir fast noch lieber) ein FHEM-Modul liest die Zähler aus, loggt die Daten und visualisiert sie. Dabei wäre mir ein txt-log fast am liebsten.

Ja, mach das. bin schon gespannt. Wäre nämlich echt mal ne grandiose Sache, wenn Du das hinbekommen würdest.

Gruß,
Dennis
FHEM 5.5 auf RPi Rev. B 512 mit HMLAN (HM-CFG-LAN)

CUL_HM: HM-LC-Bl1PBU-FM,HM-LC-SW1-BA-PCB,HM-LC-SW4-SM,HM-LC-Sw1PBU-FM,HM-OU-LED16,HM-PB-2-WM55,HM-RC-KEY3-B,HM-SEC-KEY,HM-SEC-RHS,HM-SEC-SC,HM-SEC-SD,HM-WDS10-TH-O,HM-WDS40-TH-I

OWDevice: DS18B20,DS2438

Hungry

Hallo,

da hätte ich auch Interesse daran.
Habe zwei USB-Köpfe von Volkszähler.
Habe auch die Software von Volkszähler ausprobiert aber
läuft nicht stabil.
Außerdem wenn alles in FHEM läuft, wäre das echt gut.

Gruß
Hungry

chrischan

Hallo zusammen,
... als hätte jemand meine Gedanken gelesen.
Ich bin auch sehr an einem direkten Auslesen in FHEm mit Udo's USB-IR-Lesekopf interessiert.
Im Moment kann ich auf einem Raspberry mittels Script einzelne Register oder den kompletten Inhalt des Zählers auslesen.
Leider reichen meine Kenntnisse nicht, um das in FHEM zu verwenden.
Wäre schön, wenn sich jemand dessen annehmen würde

Gruß Chrischan

matzefisi

Hallo zusammen,

so ich habe gestern abend mal die Anfänge für ein Modul gebastelt. Aktueller Stand ist, dass von meinem Zähler(ED300L) sämtliche Leistungswerte ausgelesen, geparst und im FHEM Log dargestellt werden.
Nächster Schritt ist es jetzt für die Werte eigene Reading zu erstellen und diese dann befüllen zu lassen.

Könntet Ihr mir evtl. noch kurz mitteilen, welche Zähler Ihr im Einsatz habt?

MfG
Matthias

chrischan

Moin Matthias,
bei mir ist ein Elster AS1440 installiert und jetzt bekomme ich so langsam Sorgenfalten auf der Stirn.
Ich muss gerade feststellen, dass der Zähler anscheinend kein SML spricht. Die Ausgabe erfolgt nach Protokoll EN 62056-21, das wird wohl auch als D0 Protokoll bezeichnet.
Geht da vielleicht trotzdem was...?

Wenn es hilft, kann ich gerne schildern, wie ich den ausgelesen bekomme. Aber den Programmierern hier erzähle ich sicher nichts Neues. Bei der Aufforderungssequenz und Baudratenumschaltung ist auf das Timing zu achten.

Gruß

Chrischan

matzefisi

Hi Christian,

damit habe ich schon fast gerechnet. Ich habe selbst auch einen ähnlichen Zähler für meine Wärmepumpe im Einsatz (ace 3000 typ 110), der wird aber wahrscheinlich bald rausfliegen. Daher habe ich mich bislang nur auf SML und den ED300L konzentriert. Hast Du mal versucht, ob Du den Zähler über den vzlogger vom Volkszählerprojekt ans laufen bekommst? Ich bin daran und auch an einem eigenen Perlscript bei ersten Tests gescheitert und hatte dann irgendwann einfach keine Lust mehr, bzw. ich weiß auch nicht ob die IR Schnittstelle bei mir vom Versorger überhaupt freigegeben ist.

Was wir machen können ist: Entweder Deinen Code mit in das Modul einbinden und das Modul nicht nur auf SML sonder auch auf das andere Protokoll ummünzen, oder wir nutzen als Leseintelligenz wirklich den vzlogger und wir bauen das Modul so um, dass es so tut als wäre es die Volkszähler Middleware. Das wird dann aber wahrscheinlich eine größere Angelegenheit.

Ich denke wir erschlagen mit Deinem Code und meinem schon fast sämtliche Zähler und können auf den vzlogger verzichten und das eigene Modul weiter bauen.

Kannst Du mir dann mal beschreiben, wie Du die Daten bei Dir ausliest und evtl. auch eine Beispielausgabe mitschicken? Ich schaue dann mal, ob ich das sinnvoll integrieren kann.

MfG
Matthias

chrischan

Hallo Matthias,
das Volkszählerfrontend habe ich bei mir installieren können, den vzlogger hatte ich am laufen, aber mir war nicht klar, wie ich einen Kanal mit meinem EHZ anlege. Ich bin hier an der UUID gescheitert glaube ich... Es soll für meinen EHZ einen vzlogger von Peter E. geben, der auch die Baudratenumschaltung kann. Hier hat mir aber die vzlogger.conf zu schaffen gemacht.
So, genug von dem was ich nicht kann...
Sobald ich von der Arbeit zu Hause bin schicke ich Dir zwei Bash-Scripte mit ein wenig Erklärung.
Eine Beispielausgabe gibt es dann natürlich auch.
Vorab schon mal aus dem Gedächnis....
Ich habe ein Script welches den Zähler auffordert den gesamten Inhalt samt Lastgang, aktueller Verbrauch etc. auszugeben.

Die Ausgabe sieht dann so ähnlich aus wie hier:

/ESY5Q3DA1002 V3.021-
0:0.0.0*255(54920)
1-0:1.8.0*255(00003984.9338242*kWh)
1-0:21.7.255*255(000176.85*W)
1-0:41.7.255*255(001025.66*W)
1-0:61.7.255*255(002529.68*W)
1-0:1.7.255*255(003732.19*W)
1-0:96.5.5*255(82)
0-0:96.1.255*255(1ESY0943000XXX)!

Mit einem zweiten Script kann ich ein Einzelnes Register auslesen. Es muss jeweils noch ein Kontroll-Byte berechnet werden. ( BCC-Byte )

Die Sequenzen zum Auslesen habe ich mir überwiegend hier zusammengelesen. Hier ist auch das ,,BCC-Byte" erklärt.

http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/elster_as1440

Ich schicke Dir dann später noch was...

Gruß

Chrischan

Dennis D.

Zitat von: matzefisi schrieb am Mi, 11 September 2013 08:54...
Könntet Ihr mir evtl. noch kurz mitteilen, welche Zähler Ihr im Einsatz habt?
...

Hi,

also bei mir ist ein EHZ EDL21 vom EMH installiert.

Also, die meisten elektronischen Zähler sprechen entweder SML ODER D0. Mir ist bisher nicht bekannt, dass noch andere Protokolle verwendet werden.

Logisch betrachtet würde ich auch ein FHEM-Modul bevorzugen, welches die Zähler direkt ausliest und idealerweise SML und D0 kann; also vzlogger als Leseintelligenz nicht gebraucht wird.

LG,
Dennis
FHEM 5.5 auf RPi Rev. B 512 mit HMLAN (HM-CFG-LAN)

CUL_HM: HM-LC-Bl1PBU-FM,HM-LC-SW1-BA-PCB,HM-LC-SW4-SM,HM-LC-Sw1PBU-FM,HM-OU-LED16,HM-PB-2-WM55,HM-RC-KEY3-B,HM-SEC-KEY,HM-SEC-RHS,HM-SEC-SC,HM-SEC-SD,HM-WDS10-TH-O,HM-WDS40-TH-I

OWDevice: DS18B20,DS2438

Hungry

Also bei mir sind zwei Hager EHZ363W5 installiert.
Diese sprechen SML und ich habe diese auch schon "erfolgreich" in Volkszähler eingelesen.
Wäre echt super, wenn ich die in FHEM einlesen könnte.

matzefisi

Ok, dann bleibe ich bei dem normalen Modul. Ich bastel dann erstmal mit SML weiter und wenn das läuft, kümmer ich mich um das DIN EN 62056-21 Protokoll.
Melde mich dann wieder sobald ich was zeigbares habe.
MfG
Matthias

ritchie

Hi,

 könnt Ihr testweise mal den angehangen Script bei Euch starten.

Ich habe die folgende Ausgabe bei mir.

Die Protokoll länge von 224 Zeichen ist ein Hinweise auf die Protokoll-Länge.
Ich habe das kurze Protokoll in meinem Zähler und der gibt nur den Zählerstand und die ID zurück.


pi@fhem2 ~ $ perl Ehzscript.pm
Schnittstellenlesefehler redu = 0 ; count = 0 <>
read 224 chars
Wert Wirkleistung L2 key=0100150700FF, pos=20, len=10   Value : 0
Wert Spannung L3 key=0100480700FF, pos=20, len=10   Value : 0
Wert Spannung L2 key=0100340700FF, pos=20, len=10   Value : 0
Wert Strom L3 key=0100470700FF, pos=20, len=10   Value : 0
Wert Aktuelle Chiptemperatur key=010060320002, pos=20, len=10   Value : 0
Wert Zählerstand Tarif 2 key=0100010802FF, pos=20, len=10   Value : 0
Wert Wirkleistung L1 key=0100150700FF, pos=20, len=10   Value : 0
Wert Hersteller-Identifikation key=8181C78203FF, pos=20, len=10   Value : 199694771.2
Wert Strom L2 key=0100330700FF, pos=20, len=10   Value : 0
Wert Zählerstand Totalregister key=0100010800FF, pos=20, len=10   Value : 3433
Wert Maximale Chiptemperatur key=010060320004, pos=20, len=10   Value : 0
Wert Spannungsmaximum key=010060320304, pos=20, len=10   Value : 0
Wert Gemittelte Chiptemperatur key=010060320005, pos=20, len=10   Value : 0
Wert Minimale Chiptemperatur key=010060320003, pos=20, len=10   Value : 0
Wert Wirkleistung L3 key=0100290700FF, pos=20, len=10   Value : 0
Wert Geräteeinzelidentifikation / Server-ID key=0100000009FF, pos=20, len=10   Value : 0
Wert Spannungsminimum key=010060320303, pos=20, len=10   Value : 0
Wert öffentlicher Schlüssel key=8181C78205FF, pos=20, len=10   Value : 0
Wert Strom L1 key=01001F0700FF, pos=20, len=10   Value : 0
Wert Zählerstand Tarif 1 key=0100010801FF, pos=20, len=10   Value : 0
Wert Spannung L1 key=0100200700FF, pos=20, len=10   Value : 0
Wert aktuelle Wirkleistung key=01000F0700FF, pos=20, len=10   Value : 0
pi@fhem2 ~ $


Der Code steht zur freien Verfügung, aber ihr sollte das hier veröffentlichen. Vielleicht habe ich ja einen Softwarefehler drin.
Das Teil ist mit der "heiss" Nadel gestrickt um schnell eine Antwort zu bekommen.

Der Ursprung ist von Volkszähler.org, welchen ich leicht angepasst habe.


Wenn Ihr diese Zeilen frei schaltet, wird ein Hex Dump ausgegeben.

#                print  "$count <> $x\n";  # gibt die empfangenen Daten in Hex aus
#               hdump($x);



Viele Grüße

R.
IPU662  Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv

matzefisi

Cool, danke. Mein Script, welches ich bislang nutze sieht ähnlich aus. Besonders die Funktion hexstr_to_signed32int kommt mir sehr bekannt vor. Die habe ich auch genutzt. :-)

MfG
Matthias