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
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 (http://forum.fhem.de/index.php?topic=11298.0).
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
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
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
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
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
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
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
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
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 (//wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/elster_as1440)
Ich schicke Dir dann später noch was...
Gruß
Chrischan
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
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.
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
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.
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
Hallo Hungery,
ich schreibe die Antwort hier, da sich diese Frage wohl andere auch stellen.
Den Script kann man in jedem Verzeichnis ablegen. Ich habe diesen Script im Home-Verzeichnis von pi abgelegt, also "/home/pi".
Wichtig ist jedoch, das man den USB Port in der Datei entsprechend anpasst.
Da ich einen USB Hub angeschlossen habe, verwendet der Script /dev/ttyUSB4.
Dies ist mir leider zu spät aufgefallen. Hier müsste man wohl auf /dev/ttyUSB0 oder /dev/ttyUSB1
für einen Standard Raspberry PI die Datei ändern.
Bin jetzt längere Zeit offline, hoffe aber, das andere hier auch Hilfestellung geben können, da
diese Script eine Abwandung des Volkszähler Script ist.
Viele Grüße
R.
Zitat von: ritchie schrieb am Mi, 11 September 2013 20:10Hi,
könnt Ihr testweise mal den angehangen Script bei Euch starten....
Hi ritchie,
leider hab ich es erst heute geschafft wieder was zu machen. Habe gerade mal Dein Script ausprobiert. Habe den Lesekopf jedoch an /dev/ttyAMA0" angeschlossen. Funktioniert trotzdem *g* Hier das Ergebnis:
root@raspberrypi:/home# perl Ehzscript.pm
Schnittstellenlesefehler redu = 0 ; count = 0 <>
read 312 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 : 9600.7
Wert Wirkleistung L1 key=0100150700FF, pos=20, len=10 Value : 0
Wert Hersteller-Identifikation key=8181C78203FF, pos=20, len=10 Value : 2578658099.2
Wert Strom L2 key=0100330700FF, pos=20, len=10 Value : 0
Wert Zählerstand Totalregister key=0100010800FF, pos=20, len=10 Value : 1434094464.1
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 : 32614540939.9
Wert Spannungsminimum key=010060320303, pos=20, len=10 Value : 0
Wert öffentlicher Schlüssel key=8181C78205FF, pos=20, len=10 Value : 47453752429.6
Wert Strom L1 key=01001F0700FF, pos=20, len=10 Value : 0
Wert Zählerstand Tarif 1 key=0100010801FF, pos=20, len=10 Value : 86092293504.7
Wert Spannung L1 key=0100200700FF, pos=20, len=10 Value : 0
Wert aktuelle Wirkleistung key=01000F0700FF, pos=20, len=10 Value : 101363685977.7
root@raspberrypi:/home#
Gruß,
Dennis
Hallo,
stimmen Deine Werte mit dem Zählerstand überein?
Habe mir bisher keinen Reim daraus machen können.
Hier meine Daten:
root@raspberrypi:/opt/fhem/FHEM# perl Ehzscript.pm
read 324 chars
Wert Wirkleistung L2 key=0100150700FF, pos=20, len=10 Value : 0
Wert Spannung L3 key=0100480700FF, pos=20, len=10 Value : 0
Wert Z√§hlerstand Tarif 1 key=0100010801FF, pos=20, len=10 Value : 22765784448.1
Wert Spannung L2 key=0100340700FF, pos=20, len=10 Value : 0
Wert Z√§hlerstand Tarif 2 key=0100010802FF, pos=20, len=10 Value : 37798169984.1
Wert Strom L3 key=0100470700FF, pos=20, len=10 Value : 0
Wert Aktuelle Chiptemperatur key=010060320002, pos=20, len=10 Value : 0
Wert Wirkleistung L1 key=0100150700FF, pos=20, len=10 Value : 0
Wert Z√§hlerstand Totalregister key=0100010800FF, pos=20, len=10 Value : 57144141451.9
Neee, übereinstimmen tun die nicht. Die müssen noch irgendwie umgerechnet werden. Auch bei vzlogger waren die Ergebnisse nicht mit den Werten auf dem Zähler-Display identisch. Habe aber auch noch nicht herausgefunden wie.
Ja, ich habe auch schon die Erfahrung gemacht, dass die Werte unterschiedliche Faktoren haben Und ich weiß auch noch nicht, wie ich das im Modul abbilden soll. Bin gerade dabei nochmal das SML Protokoll auseinander zu nehmen. Ich meine ich hätte da ein Feld names Faktor oder so gesehen. Bei mir (ED300L) muss ich durch 1000 und den aktuellen Verbrauchswert durch 10 teilen.
MfG
Matthias
Ja, bei dem eHZ ist das ähnlich. Ausgelesener Wert durch 10000 um auf kWh zu kommen! Laut Spezifikationen hat der Zähler eine Auflösung von 100mWh. Also durch 10 teilen um auf Wh zu kommen und dann halt durch 1000 um auf kWh zu kommen. Bei der Wirkleistung muss glaub ich nur durch 10 geteilt werden.
Habe aber schon eine Erklärung für die abweichenden Werte bei mir: Das Script ist ja fürn Easymeter-Zähler. Der hat aber andere Channel-ids als der EMH-Zähler. Muss das Script also dementsprechend anpassen. Die IDs für Deinen ED300L und meinen eHZ müssten identisch sein. Probier mal in dem Ehzscript.pm folgende Zeilen (68-71)zu ändern:
'Zählerstand Totalregister' => ['0100010800FF',20,10],
'Zählerstand Tarif 1' => ['0100010801FF',20,10],
'Zählerstand Tarif 2' => ['0100010802FF',20,10],
'aktuelle Wirkleistung' => ['01000F0700FF',20,10],
in
'Zählerstand Totalregister' => ['070100010800FF',20,10],
'Zählerstand Tarif 1' => ['070100010801FF',20,10],
'Zählerstand Tarif 2' => ['070100010802FF',20,10],
'aktuelle Wirkleistung' => ['0701000F0700FF',14,8],
Alle Werte des EMH-Zählers (eHz und ED300L) müssten dann in Wattstunden (Wh) korrekt angezeigt werden.
Ich weiß zwar nicht wie das umzusetzen wäre, aber in einem FHEM-Modul müsste man irgendwie alle Channel-ids hinterlegen und dann halt im define die Channels für den eigenen Zähler filtern. Z.B. so:
define [Zählername] MODULNAME <Zählertyp> <Adresse>
bzw.
define MeinZaehler EHZ_SML EMH /dev/ttyAMA0
oder
define MeinZaehler EHZ_SML Easymeter /dev/ttyUSB1
Gruß,
Dennis
Hallo Dennis,
habe das Script geändert.
Ausgabe jetzt:
root@raspberrypi:/opt/fhem/FHEM# perl Ehzscript.pm
Schnittstellenlesefehler redu = 0 ; count = 0 <>
read 324 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=070100010802FF, pos=20, len=10 Value : 98786705587.3
Wert Wirkleistung L1 key=0100150700FF, pos=20, len=10 Value : 0
Wert Strom L2 key=0100330700FF, pos=20, len=10 Value : 0
Wert Zählerstand Totalregister key=070100010800FF, pos=20, len=10 Value : 57695692427.9
Wert Zählerstand Tarif 1 key=070100010801FF, pos=20, len=10 Value : 44240620928.1
Mein Zählerstand ist bei Tarif 1 Obis 1.8.1 - 3.416 Kwh
und bei Tarif 2 Obis 1.8.2 - 5.859 Kwh
macht zusammen 9.275 Kwh.
Passt also von der Umrechnung immer noch nicht.
Gruß
Hungry
Da habe ich gleich noch eine Frage,
was hat es denn mit dem Key auf sich,
bzw. was wird damit definiert?
Durch Änderung am Script hat sich bei mir der Wert geändert.
Ist das also der Faktor?
Hi zusammen,
nein, key pos und length werden für die Perl Funktion substr() benutzt. Also um aus einer ganzen SML Datei bestimmte Teile auszuschneiden. Und da ist anscheinend wieder jeder Zähler und teilweise auch jede Variable anders.
Das hier ist z.B. eine RAW Ausgabe von meinem Leser:
1B1B1B010101017607000A026BF23F620062007263010176010107000A01D4A61509080C2AEE2D4C4FB20101635B1E007607000A026BF2406200620072630701
770109080C2AEE2D4C4FB2070100620AFFFF7262016501D49D2C7A77078181C78203FF0101010104454D4801
77070100000009FF0101010109080C2AEE2D4C4FB201
77070100010800FF6401018201621E52FF560001890D2A01
77070100020800FF6401018201621E52FF560002AB146F01
77070100010801FF0101621E52FF560001890D2A01
77070100020801FF0101621E52FF560002AB146F01
77070100010802FF0101621E52FF56000000000001
77070100020802FF0101621E52FF56000000000001
770701000F0700FF0101621B52FF650000071401
77078181C78205FF017262016501D49D2C01018302B129F735283A1BDE947854998A99985F91CF8C227D56885A7C54ED898B6BA534930154A11599F522F3DC0080223AC
77A010101633F15007607000A026BF24362006200726302017101632F21000000001B1B1B1B1A033187
Wobei dann
77070100010800FF6401018201621E52FF560001890D2A01
der Teil für den Wert 1.0.8 ist. Und der eigentliche Wert ist: 1890D2A. Irgendwo in dieser Zeile müsste aber auch ein Faktor zu finden sein. Der Wert 82 gehört z.B. zum Statuswort und bedeutet, dass mein Zähler gerade im Bezugmodus arbeitet. Also ich speise zur Zeit nichts ein.
Siehe dazu auch:
http://de.wikipedia.org/wiki/Smart_Message_Language (//de.wikipedia.org/wiki/Smart_Message_Language)
http://wiki.volkszaehler.org/software/sml (//wiki.volkszaehler.org/software/sml)
Wer schon mal mit den Anfängen vom Modul rumspielen möchte kann das hier tun:
https://github.com/matzefisi/fhem-modules (//github.com/matzefisi/fhem-modules)
Wichtig! Das Modul ist noch im absoluten Bastelzustand. Es legt aktuell noch keine Readings an, sonder gibt nur Rohdaten im FHEM Log aus!
Und es werden noch massive Änderungen am Modul passieren, was das Parsing angeht. Aber so könnt Ihr ja schon mal draufschauen.
MfG
Matthias
Hab die Seite wiedergefunden:
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/emh-ehz-h1 (//wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/emh-ehz-h1)
Da wird beschrieben, dass es je zwei Byte für die Einheit und den Scaler, also den Faktor, gibt:
07 01 00 01 08 00 FF objName 1-0:1.8.0*255
Wirkarbeit Bezug total
63 01 82 status = unsigned 16
01 valTime
62 1E unit (unsigned8) 1E = Wh
52 FF scaler (int8) -1 = *10^-1 = /10
56 00 01 29 71 4F value 19493967/10 = 1949396,7 Wh = 1949,3967 kWh
01 valueSignature (leer)
So, die erste Version mit neuem parsing und funktionierenden Readings ist online.
https://github.com/matzefisi/fhem-modules (//github.com/matzefisi/fhem-modules)
Das Modul wird demnächst nochmal umbenannt um auch den anderen Standard abbilden zu können.
(siehe Anhang / see attachement)
WOW! Das ging ja jetzt mal schnell! Habs gleich mal ausprobiert. Et löööpt!
(siehe Anhang / see attachement)
Momentanleistung wird korrekt ausgelesen.
Zählerstand Bezug Tarif 1 wird korrekt ausgelesen und entspricht dem aktuellen Zählerstand.
Mit den restlichen Werten kann ich nichts anfangen. Ist kein Zweirichtungszähler und es wird auch nix eingespeist. Ist quasi ein 08-15 Haushaltszähler.
Soweit sieht das aber echt brauchbar aus. Wünschenswert wäre nun die Rundung (oder das Abschneiden) der Werte auf nur noch eine Nachkommastelle.
Ne Frage nebenbei: Wie realisier ich nun, dass man vom Zählerstand den Tagesverbrauch ableiten kann. Kann man das im Logfile machen?
Gruß,
Dennis
Hi Dennis,
ZitatMomentanleistung wird korrekt ausgelesen.
Zählerstand Bezug Tarif 1 wird korrekt ausgelesen und entspricht dem aktuellen Zählerstand.
Sehr gut :)
ZitatMit den restlichen Werten kann ich nichts anfangen. Ist kein Zweirichtungszähler und es wird auch nix eingespeist. Ist quasi ein 08-15 Haushaltszähler.
Kann es sein, dass Du zwei unterschiedliche Tarife hast? Nachtstrom z.B.? Bei mir springt der Zähler im Display alle X Sekunden von Bezug auf Einspeiseanzeige um. Soweit ich weiß können die Zähler aber auch zwei unterschiedliche Strompreise (Tarife) abbilden. Mein Zähler für die Wärmepumpe macht das zum Beispiel. Es sind bei Dir aber valide Werte. Das heißt: Das Script funktioniert nur der Zähler liefert dann entsprechend etwas komisches.
Um das zu debuggen könntest Du mal das Modul wie folgt abändern:
if ($usbdatastore =~ m/1B1B1B1B1A[0-9A-F]{6}$/) {
SMLUSB_Parse($hash, $usbdata);
$usbdatastore = "";
} else {
$usbdata .= $mybuf;
$usbdatastore = $usbdata;
}
Ersetzten durch (Oder die Loggingzeile hinzufügen)
if ($usbdatastore =~ m/1B1B1B1B1A[0-9A-F]{6}$/) {
SMLUSB_Parse($hash, $usbdata);
Log 1, "SMLUSB RAW: $usbdata";
$usbdatastore = "";
} else {
$usbdata .= $mybuf;
$usbdatastore = $usbdata;
}
Dann sollte ein ganzer Haufen an HEX-Zahlen im FHEM Log erscheinen. Das ist dann ein komplettes SML File von Deinem Zähler und das könnten wir dann hier mal auseinandernehmen.
Wichtig! Wenn Du ein paar Files hast, das logging unbedingt wieder auskommentieren! Ansonsten läuft irgendwann Dein Log voll.ZitatSoweit sieht das aber echt brauchbar aus. Wünschenswert wäre nun die Rundung (oder das Abschneiden) der Werte auf nur noch eine Nachkommastelle.
Ne Frage nebenbei: Wie realisier ich nun, dass man vom Zählerstand den Tagesverbrauch ableiten kann. Kann man das im Logfile machen?
Rundung, Tagesverbrauchswerte usw. kommen noch. Ich bin erstmal froh, dass ich gestern soweit gekommen bin. Problem ist auch noch, dass meine Readings keine Events erzeugen und somit noch nichts in irgendwelche Logs geschrieben wird.
Wenn Ihr wollt, könnt Ihr Ideen oder auch Fehler gerne hier mit angeben https://github.com/matzefisi/fhem-modules/issues (//github.com/matzefisi/fhem-modules/issues)
MfG
Matthias
Hi Matthias,
ne, habe nur einen Tarif. Wie gesagt, nur Haushaltsstrom. Heizung läuft über Gas. Für Wärmepumpen wird vom Netzbetreiber aus meist ein separater Zähler verwendet.
Das nur Zählwerk 1 aktiv ist sieht man ja, dass er bei "Zählerstand Tarif 2 Bezug" ne "0" stehen hat.
Debuggen kann ich erst heut Abend. Vorschläge werde ich mal bei github schreiben. (muss ich mich dafür da registrieren oder kann man da einfach so seinen senf dazugeben?).
Gruß,
Dennis
Hi Dennis,
mmmh ok, das ist komisch. Keine Ahnung wo dann die anderen Werte herkommen. Müssen wir mal beobachten ob das evtl. auch bei anderen Leuten auftritt.
Gerade gesehen, dass schon jemand bei Github aktiv war :). Ja man muss sich dort registrieren. Wer das nicht möchte, kann aber auch gerne hier posten, ich werde das dann entsprechend übertragen.
MfG
Matthias
jep, hab mich gerade mal angemeldet. Eingereichte Vorschläge sind aber nicht gleich ersichtlich, sondern müssen von Dir freigegeben/angenommen werden?
bzgl. der ausgelesenen Werte werde ich mal auf die Suche gehen ;)
Hi,
ich bin auch interesiert meinen Itron ACE3000 Typ260 direkt in FHEM auszulesen.Allerdings befinde ich mich dabei noch ganz am Anfang. Unsere PV Anlage ist vor 8Wochen in Betrieb gegangen, und nun hätte ich gerne alle Daten in FHEM geloggt.
Welchen IR Schreib Lesekopf empfhelt ihr?
Das Raspberry ist ca. 7m vom Zähler entfernt und kann nicht näher heran. Kann man hier noch den USB Lesekopf verwenden, mit aktivem HUB im Zählerschrank? Oder empfiehlt sich hier ein anderer?
Ich wollte den Zwischenschritt des YPORT-Node vermeiden und den Lesekopf direkt an das Raspberry anschließen.
Vielen Dank für die Hilfe.
MfG matze
Also ich habe wie bereits erwähnt zwei Zähler,
die beide zwei Tarife haben (NT + HT).
Bei mir kommt nachdem ich mit define StromWP SMLUSB /dev/ttyUSB0
den USB-Kopf in FHEM angelegt habe folgende Ausgabe:
(siehe Anhang / see attachement)
Die Werte stimmen bei mir nicht.
Ich habe HT 5868 Kwh
und NT 3416 Kwh
Gruß
Hungry
Hi Hungry,
das kann an deinem Zählertyp liegen. Die im Modul verwendeten OBIS-Codes passen bisher auf die EMH-Zähler (EDL21, ED300L, eHZ).
Es kann sein, dass die ersten vier Ziffern für Zähler von Hager anders sein müssen oder nicht benötigt werden. Matthias wird weitere bestimmt noch einbauen, wenn das Modul erst mal richtig läuft.
Am besten wird es sein, wenn wir von unseren Zählern erst mal ein reines SML-Dump erzeugen und hier posten.
@matze:
Beim itron ACE3000 weiß ich nicht ob der auch SML sendet. Ich kann den Schreib-Lese-Kopf von Udo aus dem volkszähler-projekt empfehlen. den gibts einmal als USB- und einmal als TTY-Version. Die TTY-Version kannst Du auf dem D0-Eingang der RaspberryPi-Erweiterung (//wiki.volkszaehler.org/hardware/controllers/raspberry_pi_erweiterung_rev1) (ebenfalls von Udo aus dem Volkszähler-Projekt) anschließen. Die USB-Version halt direkt an den RPi. Der USB-Lesekopf müsste eigentlich mit ner 5-Meter-USB-Verlängerung direkt anschließbar sein. Zur not halt ein aktives USB-Kabel nehmen.
Bei mir sieht das ganze so aus:
(siehe Anhang / see attachement)
Gruß,
Dennis
Hi Hungry,
es wundert mich, dass bei dir dann überhaupt etwas herauskommt. Aber ich werde es mal checken.
Das mit dem SML Dump's finde ich eine gute Idee. Aber teilweise gibt es die auch schon in anderen Foren oder auf der Volkszähler Seite.
Der Itron itron ACE3000 sendet definitiv kein SML. Der muss auch über eine gesendete Sequenz erst mal zum senden überredet werden. Den habe ich nämlich auch noch im Schrank hängen.
Und ja, den USB-Schreib/Lesekopf von Udo und seinen Lötservice kann ich nur empfehlen.
MfG
Matthias
Hallo zusammen,
ja der itron kann kein sml. Allerdings lässt et sich beim volkszähler Projekt ebenfalls auslesen lässt.
So wie sich das anhört, wird es jedoch schwieriger den in fhem einzubinden.
Wie funktioniert das mit dem lötservice? Ich habe im volkszähler Chat schon zwei mal ohne Erfolg versucht Kontakt aufzunehmen .
Gibt es sammelbestellungen für die Platinen. Kann man die schon bestückt bekommen? Habe hierzu leider auf volkszähler.org nichts gefunden .
Mfg matthes
Hi Matze :)
das mit der Bestellung / Lötservice ist relativ einfach. Auf der Seite http://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-usb-ausgang (//wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-usb-ausgang) findest Du die E-Mail Adresse von Udo und da schickst Du einfach ne Mail hin. Alles weitere kannst Du mit Ihm direkt klären. Ich habe dort meinen Lesekopf komplett fertig bestellt.
Mit dem Itron wird es nicht ganz einfach, aber auch nich unmöglich. Ich lege halt aktuell den Focus auf die entwicklung des SML Moduls (weil standartisiert) und werde mich dann um dieses komische Itron/D0/wasauchimmer Protokoll kümmern. Kennt eigentlich jemand für diese Ausgabeart einen richtigen Namen? Ich habe dazu bislang nichts gefunden.
MfG
Matthias
Zitat von: Dennis D. schrieb am Mi, 18 September 2013 07:21Hi Hungry,
das kann an deinem Zählertyp liegen. Die im Modul verwendeten OBIS-Codes passen bisher auf die EMH-Zähler (EDL21, ED300L, eHZ).
Es kann sein, dass die ersten vier Ziffern für Zähler von Hager anders sein müssen oder nicht benötigt werden. Matthias wird weitere bestimmt noch einbauen, wenn das Modul erst mal richtig läuft.
Am besten wird es sein, wenn wir von unseren Zählern erst mal ein reines SML-Dump erzeugen und hier posten.
Gruß,
Dennis
Also mein Zähler ist ein EHZ363WA.
Müsste da das Modul nicht funktionieren?
Gruß
Hungry
Hi Hungry,
ja das Modul sollte auch mit deinem Zähler funktionieren.
Um herauszufinden, warum es nicht geht bräuchte ich von Dir eine RAW SML Datei.
Wie das geht und was zu beachten ist habe ich hier schon beschrieben:
Link (http://forum.fhem.de/index.php?topic=14117.msg94902#msg94902)
Dann sollte soetwas herauskommen wie:
1B1B01010101
7607000A027929496200620072630101
76010107000A01D90DC309080C2AEE2D4C4FB2010163C2CF00
7607000A0279294A6200620072630701
770109080C2AEE2D4C4FB2070100620AFFFF7262016501D921BE7A77078181C78203FF0101010104454D4801
77070100000009FF0101010109080C2AEE2D4C4FB20177070100010800FF6401018201621E52FF5600018AFBB301
77070100020800FF6401018201621E52FF560002B28E8C0177070100010801FF0101621E52FF5600018AFBB301
77070100020801FF0101621E52FF560002B28E8C0177070100010802FF0101621E52FF56000000000001
77070100020802FF0101621E52FF56000000000001770701000F0700FF0101621B52FF650000033B01
77078181C78205FF017262016501D921BE01018302B129F735283A1BDE947854998A99985
F91CF8C227D56885A7C54ED898B6BA534930154A11599F522F3DC0080223AC
77A010101630080007607000A0279294D6200620072630201710163025800000000
1B1B1B1B1A038B68
Für alle zur Info im Moment kämpfe ich gerade mit einer Plausibilitätsprüfung für die SML Datei. Manchmal kommt es bei mir vor, dass total vermüllte Werte erzeugt werden. Aktueller Stand meiner ermittlungen ist, dass wohl nicht alle Daten der seriellen Schnittstelle gelesen werden und am Anfang jeder SML Datei ca. 2-3 byte (oder manchmal auch mehr) fehlen. Normalerweise fängt eine SML Datei ja mit 1B1B1B1B01010101 an.
MfG
Matthias
2013.09.20 16:17:29 1: SMLUSB RAW:
1B1B1B01010101
76090000000003787BB36201620072630101
7601010900000000012828FE0B090148414700000370270101636A9700
76090000000003787BB46201620072630701
77010B09014841470000037027070100620AFFFF7262016501D945D77
777078181C78203FF010101010448414701
77070100000009FF010101010B0901484147000003702701
77070100010800FF63028201621E52FF55058D9E0201
77070100010801FF0101621E52FF55020B969B01
77070100010802FF0101621E52FF5503820
7660177070100100700FF0101621B520053006001
77078181C78205FF01010101830215F0C14CCDD90D672023953F58F7E880879AC86A0CCBA59A715B783CB880969C
2BC9A36E23096B10F37A777C528AA4F6010101637F370076090000000003787BB56
2016200726302017101636AC6001B1B1B1B1A008B02
Das ist mein Log.
Laut Volkszähler sollte am Anfang 4 x 1B stehen, aber der Script sucht sich ja die richtige Stelle,
wo er anfängt und aufhört oder?
Hi Hungry,
ich gucke mir dein Log heute abend mal an. Mein Modul sucht im Moment nur nach einem Ende. Also 1B1B1B1B1A008B02. Daher kommt es auch ab un zu noch zu fehlerhaften Werten.
MfG
Matthias
Hallo Hungry,
es ist wirklich so, dass die OBIS Ziffern bei deinem Zähler anders sind als bei meinem. Ich habe jetzt mal eine Modellunterscheidung zwischen EDL und EHZ Zählern eingebaut. Ab sofort muss dann noch der Zählertyp angegeben werden:
define power_Zaehler SMLUSB /dev/usbsml@9600 EDL
oder
define power_Zaehler SMLUSB /dev/usbsml@9600 EHZ
Die aktuelle Entwicklerversion kann hier heruntergeladen werden: https://github.com/matzefisi/fhem-modules/blob/develop/70_SMLUSB.pm (//github.com/matzefisi/fhem-modules/blob/develop/70_SMLUSB.pm)
Viel Spaß beim Testen
MfG
Matzefisi
Nachdem ich den Define-Befehl so "/dev/ttyUSB0@9600 EHZ" für mich angepasst habe,
hat es funktioniert!
Super!
Werde morgen mal noch den zweiten IR-Kopf anlegen.
Gruß
Hungry
Also ich habe den ersten Kopf am ersten Zähler mit:
define WP SMLUSB /dev/ttyUSB0@9600 EHZ
und den Zweiten mit:
define HH SMLUSB /dev/ttyUSB1@9600 EHZ
angelegt.
Jetzt bekomme ich wechselseitig Werte vom ersten und vom zweiten Zähler
im gleichen Device angezeigt.
Ist das Script momentan nur für einen Zähler gedacht
oder mache ich was falsch?
Oh mist, ich befürchte das liegt an meiner sehr globalen Variablen definition (our). Gib mir 15 minuten :)
MfG
Matthias
UPDATE:
Neue, reparierte Version online: https://github.com/matzefisi/fhem-modules/blob/develop/70_SMLUSB.pm (//github.com/matzefisi/fhem-modules/blob/develop/70_SMLUSB.pm)
Sollte jetzt gehen.
Jetzt startet FHEM nicht mehr.
Fehlermeldung nun:
Undefined subroutine &main::DevIo_CloseDev called at ./FHEM/70_SMLUSB.pm line 88 , <$sfh> line 213
Mmmh das ist sehr komisch. Ich habe schon vor bestimmt 3 Versionen auf das globale FHEM DevIo umgestellt und bei mir geht alles.
Welche Versionen der Module / FHEM setzt Du ein? Kannst Du mal einfach über das Webinterface oben in der Befehlszeile --> version <-- eingeben?
MfG
Matthias
Edit: Ich habe gerade noch mal die Änderungen von gestern Abend gecheckt. (https://github.com/matzefisi/fhem-modules/commits/develop/70_SMLUSB.pm (//github.com/matzefisi/fhem-modules/commits/develop/70_SMLUSB.pm)) Ich habe nur zwei mal das Wort 'our' durch 'my' ersetzt. Daran kann es also nicht gelegen haben.
Fhem startet leider nicht mehr.
Kann ich im Terminal sehen welche Version ich einsetze?
Woran es noch liegen kann, habe vorhin Dein Script angepasst, auf die aktuelle Version.
Davor habe ich die Devices mit save.cfg in FHEM gespeichert.
Evtl. hat er Probleme damit und es lief soweit, bis ich jetzt halt gespeichert habe.
Du kannst Dein FHEM ja problemlos wieder zum laufen bringen, wenn Du die "define" Einträge für die SMLUSB Devices aus der Datei fhem.cfg und log/fhem.save manuell entfernst.
Was heißt Du hast das Script angepasst? Hast Du es einfach heruntergeladen und in das entsprechende Verzeichnis bei Dir gespeichert? Oder hast Du selbst die 70_SMLUSB.pm editiert?
Das mit dem Speichern sollte eigentlich kein Problem sein. Ich würde wirklich vorschlagen, alles was mit SMLUSB zu tun hat aus der fhem.cfg und log/fhem.save entfernen und dann nochmal neu versuchen.
Entschuldigung aber wenn ich die Error-Zeile von Anfang an getippt hätte, dann wäre es klarer gewesen:
Starting 1-Wire FTP server: owftpdUndefined subroutine &main::DevIo_CloseDev called at ./FHEM/70_SMLUSB.pm line 88, <$fh> line 214.
Die Fehlermeldung taucht auch in Deinem alten Script auf, auch wenn an anderer Stelle.
Ich habe auch noch einen OneWire-Hostadapter am Raspberry betrieben.
Zur Zeit aber abgesteckt.
Wie kann ich diesen Konflikt lösen.
Hi Hungry,
ok, ich habe anscheinend was wichtiges vergessen:
require "$attr{global}{modpath}/FHEM/DevIo.pm";
Damit wird der Code aus DevIo.pm mit in das Modul geladen. Da ich aber schon ein anderes Modul im Einsatz habe, welches DevIo verwendet, war es bei mir im FHEM schon geladen und daher hat es bei mir funktioniert. Ich habe die Änderung hinzugefügt und Du kannst sie hier herunterladen:
https://github.com/matzefisi/fhem-modules/blob/develop/70_SMLUSB.pm (//github.com/matzefisi/fhem-modules/blob/develop/70_SMLUSB.pm)
MfG
Matthias
Hallo matzefisi,
habe Dein Script vollständig so übernommen.
Stürtzt jetzt nicht mehr ab.
Habe vorher die fhem.save geleert
und auch in der fehm.cfg die zwei Eintragungen:
define WP SMLUSB /dev/ttyUSB0@9600 EHZ
attr WP event-min-interval *:30
define HH SMLUSB /dev/ttyUSB1@9600 EHZ
attr HH event-min-interval *:30
gelöscht und wieder neu angelegt.
Leider habe ich jetzt wieder das Problem,
dass immer wieder Werte von einem Zähler und dann vom anderen Zähler angezeigt werden.
Der Define-Befehl stimmt doch oder?
Habe sicherheitshalber die zwei USB-Köpfe direkt an die zwei USB-Anschlüsse des Raspberrys gehängt.
Nachtrag: Es ist nur bei WP (USB0) so, dass er ab und zu die Werte vom USB1 anzeigt. Der HH zeigt nur Werte vom Zahler Haushalt also USB1 an und funktioniert also!
Außerdem stimmen die Werte beim WP ab und zu nicht.
Hallo Matthias und all die anderen,
ich muss mich hier auch mal mit dazwischen schalten.
ZitatDer Itron itron ACE3000 sendet definitiv kein SML.
Ich habe auch diesen ACE3000 und diesen Artikel darüber gefunden:
http://kuehnast.com/s9y/archives/460-stromzaehler-auslesen.html (//kuehnast.com/s9y/archives/460-stromzaehler-auslesen.html)
Würde diese im Artikel genannte Konstellation mit fhem und dem 70_SML.pm Modul funktionieren? Kennt sich damit jemand aus? Also mal unabhängig vom Preis der Komponenten wäre dies ja die einfachste Möglichkeit, zumindest für mich ;-)
Danke
Gruß,
Tino
Hi Hungry,
komisch. Aber ich gucke es mir heute Abend nochmal an. Ich habe da schon eine Ahnung. An dieser Stelle nochmal: Ich bin ein absoluter Perlneuling! :)
@oniT: Das was Du da verlinkt hast ist aber leider SML und es geht auch nicht um den ACE 3000 sondern um einen EHZ/EHL der SML spricht.
Der ACE 3000 gibt soetwas wie das hier aus:
/ACE0\3k260V01.18
F.F(00)
C.1(1234567890123456)
C.5.0(00)
1.8.0(000285.4*kWh)
2.8.0(000120.1*kWh)
!
Vorher muss man den ACE 3000 aber noch zum senden überreden. Und zwar mit folgender Zeichenkette:
/?!
Die Geräte, die in Deiner verlinkten Seite erwähnt werden, sind nichts anderes als ein USB(RS485)-Lesekopf und ein umsetzer von RS485 auf Netzwerk.
Die Antwort auf Deine Frage also: Für den ACE 3000 leider nein.
ABER: Den ACE 3000 habe ich noch nicht von der Featureliste gestrichen. Wenn SML erstmal sauber läuft, dann kümmere ich mich auch um solche Zähler.
MfG
Matthias
Hallo Hungry,
dank justme1968 habe ich jetzt hoffentlich das Problem gelöst.
Neue Version steht im Development Branch im GitHub bereit. Einfach wie gehabt dort runterladen und dann per "reload 70_SMLUSB" das Modul neu im FHEM laden.
MfG
Matthias
Hallo Matthias,
es funktioniert!!!
Super und Danke!
Habe jetzt noch ein Logfile für jeden Zähler angelegt.
Welches Plot-File verwendest Du?
Was mir noch aufgefallen ist, State steht auf Einspeisen.
(siehe Anhang / see attachement)
Und folgendes erscheint noch im Log:
2013.10.02 18:59:30 0: Server started with 52 defined entities (version Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3008 2013-04-01 11:19:27Z rudolfkoenig $, pid 18407)
Use of uninitialized value in pattern match (m//) at ./FHEM/70_SMLUSB.pm line 201.
Use of uninitialized value in pattern match (m//) at ./FHEM/70_SMLUSB.pm line 201.
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at fhem.pl line 3226.
Update:
Die Fehlermeldung erscheint im Log von FHEM nicht mehr, weiß nicht warum.
Wenn der Raspberry bootet erscheint diese Meldung aber weiterhin im Bootlog.
Das bezieht sich ja auf diese Zeile:
if ($hash->{helper}{PARTIAL} =~ m/1B1B1B1B1A[0-9A-F]{6}$/)
Hallo Matthias,
ZitatDie Antwort auf Deine Frage also: Für den ACE 3000 leider nein.
ABER: Den ACE 3000 habe ich noch nicht von der Featureliste gestrichen. Wenn SML erstmal sauber läuft, dann kümmere ich mich auch um solche Zähler.
Ok. Danke für die Info.
Gruß,
Tino
Also ich bekomme nun leider keine korrekten Werte mehr. Angeblich habe ich nun bei meinem EHZ einen Zählerstand von 29 und eine Momentanleistung von 19558 Watt.
LG,
Dennis
Hallo zusammen,
ich habe gerade die aktuellste Version vom SMLUSB Modul veröffentlicht.
https://github.com/matzefisi/fhem-modules/releases/tag/v0.1
Das Parsing wurde komplett geändert, so dass SML jetzt (zumindest zum größten Teil) intelligent ausgelesen wird. Vorher wurde es mehr oder weniger statisch und unnötig kompliziert ausgelesen.
@Dennis: Damit sollte sich dein Problem eigentlich auch erledigt haben.
Bitte sichert Euch Eure lokale 70_SMLUSB vorher nochmal.
Ach ja und der Wert DeviceType ist nicht länger nötig. Also einfach "define NAME SMLUSB /dev/usbsml@9600"
Über Rückmeldungen würde ich mich sehr freuen!
MfG
Matthias
Also irgendwie wird mir jetzt die momentane Leistung nicht mehr angezeigt.
Außerdem steht im Terminal:
^* matches null string many times in regex: marked by <--HERE$/ at fhem.pl line 3423.
Der Schriftsatz ist im Log verfälscht:
2013-10-26_15:56:30 HH Momentanleistung: 497.00
2013-10-26_15:56:30 HH Zählerstand Bezug Total: 4322.07
2013-10-26_15:56:30 HH Zählerstand Tarif 1 Bezug: 2305.47
2013-10-26_15:56:30 HH Zählerstand Tarif 2 Bezug: 2016.60
2013-10-26_15:57:23 HH Z√§hlerstand-Bezug-Total: 4322.07
2013-10-26_15:57:23 HH Z√§hlerstand-Tarif-1-Bezug: 2305.48
Da ist jetzt ein Paragraphenzeichen und eine Wurzel drin.
Bei mir sind die Werte jetzt wieder korrekt. Jedoch wurde nur einmal ausgelesen, danach kamen keine Aktualisierungen mehr.
Das mit den Zeichen kann ich auch bestätigen.
Gruß,
Dennis
Hallo,
ich arbeite als Projektmanager bei einem Versorger.
Ich könnte zur Implementierung des IEC1107 Protokolls einen As1440 Stromzähler zur Verfügung stellen. Den hätte ich Privat gerne eingebunden...
Hallo Leute,
sorry, dass ich so spät antworte. Irgendwie habe ich keine Mitteilung über neue Nachrichten bekommen. Sorry.
Das mit den Zeichen schaue ich mir diese Woche mal an. Kann ich mir aber noch nicht wirklich erklären.
@AbeamStart: IEC1107 ist dann das Protokoll was auch der ACE3000 macht? Irgendwie komme ich mit den ganzen Normen und Standards nicht so zu recht. Wäre schön wenn mir das mal jemand erklären könnte.
MfG
Matthias
Hi Matthias,
hast Du denn auch eine Idee, warum nur einmal ein Wert ausgelesen wird? Bekomme immer nur einen Wert kurz nachdem ich FHEM gestartet hab. Es kommen jedoch keine neuen Werte. Hab den EHZ wie folgt definiert:
define EHZ_P SMLUSB /dev/ttyAMA0@9600
attr EHZ_P alias Momentanleistung
attr EHZ_P event-min-interval *:30
attr EHZ_P group Stromzähler (EHZ)
attr EHZ_P icon measure_power
attr EHZ_P room Energie
attr EHZ_P stateFormat {no warnings 'numeric' ;;;; sprintf((ReadingsVal("EHZ_P","Momentanleistung", 0)))." Watt"}
Des Weiteren: Gibt es bereits eine Möglichkeit den Tages-/ Wochen-/ Monats und Jahresverbrauch anzeigen zu lassen?
Viele Grüße,
Dennis
Hi Dennis,
ne, da habe ich leider noch keine Antwort drauf. Bei mir läuft das Modul jetzt perfekt. Ich habe auch keine Probleme mit den Umlauten im Filelog. Aber wie gesagt, ich suche da heute abend nochmal ein bisschen weiter nach. Was Du mir noch verraten könntest, wäre auf welchem System Du FHEM laufen lässt. Fritzbox, RPi?
Tages, Wochen und Monatswerte stehen noch auf meiner ToDo Liste. Kommen dann, wenn das Modul stabil läuft :)
MfG
Matthias
ah, ok. hmmm vielleicht liegt es auch an meiner config.
habe das auf nem rpi am laufen.
Hi Dennis,
dass es an Deiner Config liegt kann ich mir auch nicht vorstellen. Ich habe noch die Vermutung, dass bei Dir der Anfang der SML Datei gar nicht mitkommt. (Bei mir fehlen immer nur die ersten 3 - 4 bytes). Ich stelle morgen mal eine neue Version mit aktivierbarem Logging (das fehlt aktuell noch) online. Und dann können wir nochmal weiter debuggen.
MfG
Matthias
Hi zusammen,
so die neue Version (mit Logging) liegt jetzt im Github im Masterbranch. Um das Logging zu aktivieren bitte einfach das Attribut "verbose" auf 5 setzen. Danach sollte das Modul im fhem log sehr gesprächig werden.
Zu dem Problem mit den Umlauten im Namen: Könntet Ihr bitte mal auf einer Konsole (SSH/Telnet) den Befehl "locale" eingeben? Danach wird die Encoding Einstellung euerer Shell angezeigt. Es sollte auf LANG=de_DE.UTF-8
stehen.
UPDATE: Der Fehler:
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at fhem.pl line 3427
tritt jetzt nicht mehr auf. Problem war, dass ich beim Attribut "event-min-interval" einen Punkt vergessen habe.
Bitte fügt den Punkt bei Eurer bestehenden Installation manuell hinzu.
event-min-interval .*:30
MfG
Matthias
Also wenn ich das richtig sehe, hast Du das mit dem fehlenden Punkt schon korrigiert, oder?
Leider habe ich jetzt in der Übersicht keine Leistungswerte mehr.
Zeichensatz stimmt jetzt auf einmal???
Update: Habe die SML entsprechend meines EHZ so angepasst, jetzt klappt es auch mit dem Leistungswert:
'77070100100700FF' => 'Momentanleistung',
Gruß
Hungry
Hi Hungry,
ZitatLeider habe ich jetzt in der Übersicht keine Leistungswerte mehr.
Gar keine? Was sagt denn das Log? Hast Du mal versucht das Attribut Verbose auf den Wert 5 zu setzen? Dann sollte im FHEM Log eigentlich sehr viel vom SML Modul erscheinen.
ZitatZeichensatz stimmt jetzt auf einmal???
Aussage oder Frage? :) Ein mögliche Erklärung wäre, dass ich einmal eine Änderung unter Windows (mit Notepad++) vorgenommen habe und da der Zeichensatz evtl. geändert wurde. Die letzten Änderungen habe ich wieder mit Linux gemacht.
Zitat'77070100100700FF' => 'Momentanleistung',
Das ist sehr komisch. Die Obis Zahlen sollten für jeden Zähler gleich sein. Ich guck mir das nochmal an.
UPDATE: Hier die Erklärung http://www.vde.com/de/fnn/arbeitsgebiete/messwesen/documents/edl_errata_2011-09-12.pdf
ZitatUm künftig Systemen der Home-Automation eine einfache Datenrepräsentation zu ermöglichen, wurde
die bisher gewählte Darstellung aus Betrag (gekennzeichnet durch OBIS-Kennzahl 1.0.15.7) und
Richtung (Statusbit zum Energiefluss) durch die Benutzung der OBIS-Kennzahl 1.0.16.7 (Zahlenwert mit
Vorzeichen) ersetzt.
Im Modul werden jetzt erstmal beide OBIS Kennzahlen als "Momentanleistung" erkannt. Die Änderung werde ich dann demnächst mal sauber (also nach VDE Standard) mit einpflegen.
MfG
Matthias
Das Log stellte auch keine Leistungswerte mehr zur Verfügung.
Verbose brachte nichts.
Ich habe mir dann deine alte Datei, mit der es funktionierte angeschaut.
Da waren unterschiedliche Sequenzen (hexadezmal) bei EDL und EHZ.
Ich habe dann die zu meinem Zähler passende ausgetauscht.
Bei EDL steht in der alten Datei 770701000F0700FF
und bei EHZ 77070100100700FF.
Sind also unterschiedlich.
Das mit dem Zeichensatz war eine Aussage
Gruß
Hungry
Hi,
ZitatDas Log stellte auch keine Leistungswerte mehr zur Verfügung. Verbose brachte nichts.
Gar nichts? Bei mir sieht das Log dann so aus:
2013.10.30 11:44:32 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2013.10.30 11:44:33 5: SMLUSB: End of SML found. Looking for a beginning.
2013.10.30 11:44:33 5: SMLUSB: Started parsing
2013.10.30 11:44:33 5: SMLUSB: SML Telegram found: 77070100010800FF
2013.10.30 11:44:33 5: SMLUSB: Reading BulkUpdate. Value > 0
2013.10.30 11:44:33 5: SMLUSB: Setting state
2013.10.30 11:44:33 5: SMLUSB: SML Telegram found: 77070100020800FF
2013.10.30 11:44:33 5: SMLUSB: Reading BulkUpdate. Value > 0
2013.10.30 11:44:33 5: SMLUSB: Setting state
2013.10.30 11:44:33 5: SMLUSB: SML Telegram found: 77070100010801FF
2013.10.30 11:44:33 5: SMLUSB: Reading BulkUpdate. Value > 0
2013.10.30 11:44:33 5: SMLUSB: Setting state
2013.10.30 11:44:33 5: SMLUSB: SML Telegram found: 77070100020801FF
2013.10.30 11:44:33 5: SMLUSB: Reading BulkUpdate. Value > 0
2013.10.30 11:44:33 5: SMLUSB: Setting state
2013.10.30 11:44:33 5: SMLUSB: SML Telegram found: 77070100010802FF
2013.10.30 11:44:33 5: SMLUSB: Setting state
2013.10.30 11:44:33 5: SMLUSB: SML Telegram found: 77070100020802FF
2013.10.30 11:44:33 5: SMLUSB: Setting state
2013.10.30 11:44:33 5: SMLUSB: SML Telegram found: 770701000F0700FF
2013.10.30 11:44:33 5: SMLUSB: Reading BulkUpdate. Value > 0
2013.10.30 11:44:33 5: SMLUSB: Setting state
2013.10.30 11:44:33 5: SMLUSB: Parsing ended]
ZitatDas mit dem Zeichensatz war eine Aussage
Sehr gut. Dann war das wohl nur ein blöder Fehler meinerseits. ;)
MfG
Matthias
Ach so!
Started parsing
2013.10.31 18:01:00 5: SMLUSB: SML Telegram found: 77070100010800FF
2013.10.31 18:01:00 5: SMLUSB: Reading BulkUpdate. Value > 0
2013.10.31 18:01:00 5: SMLUSB: Setting state
2013.10.31 18:01:00 5: SMLUSB: SML Telegram found: 77070100010801FF
2013.10.31 18:01:00 5: SMLUSB: Reading BulkUpdate. Value > 0
2013.10.31 18:01:00 5: SMLUSB: Setting state
2013.10.31 18:01:00 5: SMLUSB: SML Telegram found: 77070100010802FF
2013.10.31 18:01:00 5: SMLUSB: Reading BulkUpdate. Value > 0
2013.10.31 18:01:00 5: SMLUSB: Setting state
2013.10.31 18:01:00 5: SMLUSB: SML Telegram found: 77070100100700FF
2013.10.31 18:01:00 5: SMLUSB: Reading BulkUpdate. Value > 0
2013.10.31 18:01:00 5: SMLUSB: Setting state
2013.10.31 18:01:00 5: SMLUSB: Parsing ended
2013.10.31 18:01:00 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2013.10.31 18:01:02 5: SMLUSB: End of SML found. Looking for a beginning.
2013.10.31 18:01:02 5: SMLUSB: No beginning of SML File found. Discarded -> C86A0CCBA59A715B783CB880969C2BC9A36E23096B10F37A77
2013.10.31 18:01:03 5: SMLUSB: End of SML found. Looking for a beginning.
2013.10.31 18:01:03 5: SMLUSB: No beginning of SML File found. Discarded -> B202573ABCE5A2AC9F29E58B6A6FA6E775C2EE0919E4A992B4
Hi Matthias,
also bei mir funktioniert die aktuelle Version leider weiterhin nicht. Bei Verbose 5 bekomme ich folgendes Meldungen im Log:
2013.11.02 10:14:58 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:14:58 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACB162006200726301017601010700140391E4
2013.11.02 10:14:59 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:14:59 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACB762006200726301017601010700140391E4
2013.11.02 10:15:01 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:01 5: SMLUSB: No beginning of SML File found. Discarded -> 8181C78203FF0101010104454D480177070100000009FF0101
2013.11.02 10:15:03 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:03 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACC362006200726301017601010700140391E4
2013.11.02 10:15:05 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:05 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACC962006200726301017601010700140391E4
2013.11.02 10:15:06 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:06 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACCF62006200726301017601010700140391E4
2013.11.02 10:15:08 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:08 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACD562006200726301017601010700140391E4
2013.11.02 10:15:09 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:09 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACDB62006200726301017601010700140391E4
2013.11.02 10:15:11 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:11 5: SMLUSB: No beginning of SML File found. Discarded -> 2D4CEFC80177070100010800FF63018201621E52FF560004A7
2013.11.02 10:15:12 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:12 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACE762006200726301017601010700140391E4
2013.11.02 10:15:14 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:14 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACED62006200726301017601010700140391E4
2013.11.02 10:15:15 5: SMLUSB: End of SML found. Looking for a beginning.
2013.11.02 10:15:15 5: SMLUSB: No beginning of SML File found. Discarded -> 760700140008ACF362006200726301017601010700140391E4
Viele Grüße,
Dennis
Hallo
Würde meinen easymeter Q3DB1024 auch auslesen... Sofern dieser Unterstützt wird....
Aber im moment bekomme ich das 70_SMLUSB.pm nicht mal zum laufen.
-Jungfreulicher RPi auf aktuellem Stand
-FHEM 5.5
-Lesekopf laut dmsg auf ttyUSB0
-70_SMLUSB aus GitHUB
Den Aufruf habe ich mit "define Strom SMLUSB /dev/ttyUSB0@9600" gemacht - Rückmeldung laut log...
2013.11.02 14:38:32 1: reload: Error:Modul 70_SMLUSB deactivated:
Search pattern not terminated at ./FHEM/70_SMLUSB.pm line 263, <> line 20.
2013.11.02 14:38:32 0: Search pattern not terminated at ./FHEM/70_SMLUSB.pm line 263, <> line 20.
2013.11.02 14:38:32 3: Please define Strom first
2013.11.02 14:38:32 3: Please define Strom first
2013.11.02 14:38:32 3: Please define Strom first
2013.11.02 14:38:32 3: Opening FB_Monitor_Tankstelle device 192.168.10.1:1012
2013.11.02 14:38:32 3: FB_Monitor_Tankstelle device opened
2013.11.02 14:38:32 1: Including /opt/fhem/FHEM/barometer.cfg
2013.11.02 14:38:33 1: configfile: Cannot load module SMLUSB
Please define Strom first
Please define Strom first
Please define Strom first
2013.11.02 14:38:33 1: Including ./log/fhem.save
Was mache ich falsch?
So. Ich weis zwar nicht warum aber jetzt startet zumindestens das Gerät.
Ich habe das verbose und das log herraufgesetz aber werte erhalte ich immer noch nicht....
define Strom SMLUSB /dev/ttyUSB0@9600
attr Strom event-min-interval *:30
attr Strom loglevel 5
attr Strom room 91-Sensoren
attr Strom verbose 5
define FileLog_Strom FileLog ./log/Strom-%Y-%m.log Strom
attr FileLog_Strom room 91-Sensoren
define FileLog_Strom FileLog ./log/Strom-%Y-%m.log Strom
attr FileLog_Strom room 91-Sensoren
In den Logs habe ich keine Daten enthalten....
Hallo Stenny73,
meine config sieht so aus:
define HH SMLUSB /dev/ttyUSB0@9600 EHZ
attr HH event-min-interval *:30
define FileLog_HH FileLog ./log/HH-%Y-%m.log HH
attr FileLog_HH logtype power4:power,text
define weblink_HH SVG FileLog_HH:power4:CURRENT
attr weblink_HH label "HH Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_HH room Plots
Was sagt denn dein FHEM-Logfile?
Hallo
Bei mir habe ich
define Strom SMLUSB /dev/ttyUSB0@9600
attr Strom event-min-interval *:30
attr Strom loglevel 6event-on-change-reading
attr Strom room 91-Sensoren
attr Strom verbose 5
define FileLog_Strom FileLog ./log/Strom-%Y-%m.log Strom
Der Typ wird ja wohl nicht mehr angegeben - wenn ich das richtig versatnden habe ......
So, ich glaube der/die EasyMeter werden wohl noch nicht gehen....
Die nutzen DIN EN 62056-21
Dann warte und hoffe ich.....
Hallo zusammen,
mal wieder keine Benachrichtigung vom Forum bekommen. Ich muss mal meine Einstellungen prüfen.
Bzgl. Eurer Probleme melde ich mich heute Abend wieder.
MfG
Matthias
Hallo nochmal,
@stenny73: Richtig. Der Q3DB1024 macht nicht SML im hex format, sondern das hier beschriebene Protokoll. http://wiki.volkszaehler.org/software/obis Steht noch bei mir auf der ToDo Liste. Aber wie immer: Zu wenig Zeit.
@Dennis: Bei dir fängt das Modul DevIO noch später an zu lesen, als bei mir und bei Hungry. (Eigentlich fängt eine SML Datei mit 1B1B1B1B an) Warum weiß ich noch nicht, aber ich lade nacher mal eine Übergangslösung hoch, so dass auch Du wieder Werte empfangen kannst. Das Ursächliche Problem werde ich dann mal bei den DevIo Entwicklern erfragen.
Bis später
UPDATE: Neue Version im MasterBranch online. @Dennis, könntest Du es bitte mal testen?
MfG
Matthias
Hi zusammen,
sorry Matthias, hatte bisher keine Zeit zum testen und hatte darüber hinaus auch keine Benachrichtigung erhalten. *g*
Hab Dein Modul gerade angetestet. Nun werden die Werte wieder aktualisiert und auch korrekt ausgelesen. SUPER! :-) Klasse Arbeit!
Vielen Dank!
Dennis
Ich habe ein fhem-Modul geschrieben, um meinen Hager EHZ361Z5 Zweirichtungszähler (Für Eigenverbrauch Solaranlage) in fhem zu integrieren.
http://www.hager.de/files/download/0/651_1/0/6EHZ0300E.PDF
Dieser arbeitet vorne für den IR-optischen Lesekopf nach DIN EN 62056-21 (Obis? Also nicht im SML Hexformat) und liefert die Summenwerte in kWh mit vier Nachkommastellen. In Intervallen von 120 Sekunden berechne ich daraus die Momentanleistung.
Elektrisch genügt ein Fototransistor, ein Widerstand und eine (USB) Serielle Schnittstelle.
define zaehler USBEHZ /dev/ttyUSB1
attr zaehler interval 120
attr zaehler intervalReading 480
attr zaehler room PV
define FileLog_zaehler FileLog ./log/zaehler-%Y-%m.log zaehler
attr FileLog_zaehler room PV
Zitat von: thd am 26 Dezember 2013, 08:42:52
Ich habe ein fhem-Modul geschrieben, um meinen Hager EHZ361Z5 Zweirichtungszähler (Für Eigenverbrauch Solaranlage) in fhem zu integrieren.
Hallo thd!
FHEM auf der Fritzbox stürzt bei Aufruf des Moduls reproduzierbar ab. Letzter Log-Eintrag ist jeweils "USBEHZ could not set handshake". Hast Du eine Idee woran das liegen könnte? Auf welchem System läuft es bei Dir?
Danke, Christian
Zitat von: krikan am 28 Dezember 2013, 04:49:32
FHEM auf der Fritzbox stürzt bei Aufruf des Moduls reproduzierbar ab. Letzter Log-Eintrag ist jeweils "USBEHZ could not set handshake". Hast Du eine Idee woran das liegen könnte?
An einem Fehler meinerseits. Die Zeile
$po->error_char(1);
entfernen oder auskommentieren...
Im Anhang meine aktuelle Version des Moduls. Die erste Fassung hat für meinen Geschmack zu viel Rechenzeit verbraucht, der Zähler schickt schließlich Tag und Nacht alle 4 Sekunden Daten. Ich habe ausgetüftelt, wie man mit geeigneten stty Parametern unter Linux den fhem-Prozess erst aufweckt wenn eine komplette Zeile übertragen wurde. Dadurch sinkt der CPU-Bedarf auf ca 1/10. Könnte sein, dass das so unter Windows nicht funktioniert. Sie Anmerkungen am Ende der Datei.
Gibt es auf der Fritz Box "stty"?
@matzefisi
Hallo. Tut sich noch was mit dem Modul?
Hoffe irgendwann meinen easymeter anbinden zu können.
stenny73
@thd
Hallo
Habe dein Modul bei mir auf dem RPi aufgespielt
gestartet mit
define zaehler USBEHZ /dev/ttyUSB0
attr zaehler interval 120
attr zaehler intervalReading 480
attr zaehler room PV
define FileLog_zaehler FileLog ./log/zaehler-%Y-%m.log zaehler
attr FileLog_zaehler room PV
bekomme folgende Fehler
2014.01.03 14:56:43 3: USBEHZ opening zaehler device /dev/ttyUSB0
2014.01.03 14:56:43 2: USBEHZ opened device /dev/ttyUSB0
2014.01.03 14:56:44 1: Including ./log/fhem.save
2014.01.03 14:56:44 1: statefile: Usage: setstate <name> <state>
where <name> is either:
- a single device name
- a list separated by komma (,)
- a regexp, if it contains one of the following characters: *[]^$
- a range separated by dash (-)
2014.01.03 14:56:44 2: SecurityCheck: WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute. Restart fhem for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2014.01.03 14:56:44 0: Server started with 18 defined entities (version $Id: fhem.pl 4519 2014-01-01 15:43:32Z rudolfkoenig $, os linux, user fhem, pid 2973)
2014.01.03 14:56:51 1: zaehler => No Get function (?) implemented
2014.01.03 14:56:56 1: OWX: No answer to CUL_0 device search
2014.01.03 14:56:56 1: OWX: 1-Wire devices found on bus OWio ()
Ich habe den USB Schreiblese Kopf vom Volkszähler
stenny73
Zitat von: stenny73 am 03 Januar 2014, 14:25:02
@thd
Habe dein Modul bei mir auf dem RPi aufgespielt
bekomme folgende Fehler
2014.01.03 14:56:43 3: USBEHZ opening zaehler device /dev/ttyUSB0
2014.01.03 14:56:43 2: USBEHZ opened device /dev/ttyUSB0
2014.01.03 14:56:44 1: Including ./log/fhem.save
2014.01.03 14:56:44 1: statefile: Usage: setstate <name> <state>
where <name> is either:
- a single device name
- a list separated by komma (,)
- a regexp, if it contains one of the following characters: *[]^$
- a range separated by dash (-)
Ich habe den USB Schreiblese Kopf vom Volkszähler
[/quote]
Das sieht mir nicht wie ein Fehler aus, der von meinem Modul kommt. Ich tippe mal darauf, dass der Syntax der statefile-Anweisung sich in FHEM geändert hat und Du hast noch eine alte Anweisung in fhem.cfg, also nichts was mit meinem Modul zu tun hätte.
Der USB Schreiblese Kopf vom Volkszähler müsste meines Wissens geeignet sein.
Bei der neueren Variante von 70_USBEHZ.pm sind die stty-Einstellungen erforderlich, sonst funktioniert sie nicht!
/bin/stty -F /dev/ttyUSB0 9600 evenp crtscts cs7 inpck parmrk eol 10 icanon
@stenny73:
Ja, irgendwann schon. Aber momentan habe ich diverse andere Dinge zu tun, daher kann es sich noch etwas hinziehen. Ich werde mir aber auf jeden Fall mal das Modul von thd anschauen.
Mfg
Matthias
@thd
Hallo
Wo muss ich denn das
/bin/stty -F /dev/ttyUSB0 9600 evenp crtscts cs7 inpck parmrk eol 10 icanon
einfügen?
stenny73
Zitat von: thd am 31 Dezember 2013, 16:34:06
An einem Fehler meinerseits. Die Zeile
$po->error_char(1);
entfernen oder auskommentieren...
Habe es so auch nicht ans laufen auf der Fritzbox bekommen. Nach Austausch Deiner Schnittstellenintialisierung durch Nachfolgendes läuft es mit meinen Hager und EMH-Zählern:
$po->reset_error() || Log 1, "USBEHZ reset_error";
$po->baudrate(9600) || Log 1, "USBEHZ could not set baudrate";
$po->databits(7) || Log 1, "USBEHZ could not set databits";
$po->parity('even') || Log 1, "USBEHZ could not set parity";
$po->stopbits(1) || Log 1, "USBEHZ could not set stopbits";
$po->lookclear || Log 1, "USBEHZ could not set lookclear";
$po->dtr_active(1) || Log 1, "USBEHZ could not set dtr";
$po->rts_active(0) || Log 1, "USBEHZ could not set rts";
$po->write_settings || Log 1, "USBEHZ could not write_settings $dev";
Zitat von: thd am 31 Dezember 2013, 16:34:06
Im Anhang meine aktuelle Version des Moduls. Die erste Fassung hat für meinen Geschmack zu viel Rechenzeit verbraucht, der Zähler schickt schließlich Tag und Nacht alle 4 Sekunden Daten. Ich habe ausgetüftelt, wie man mit geeigneten stty Parametern unter Linux den fhem-Prozess erst aufweckt wenn eine komplette Zeile übertragen wurde. Dadurch sinkt der CPU-Bedarf auf ca 1/10. Könnte sein, dass das so unter Windows nicht funktioniert. Sie Anmerkungen am Ende der Datei.
Gibt es auf der Fritz Box "stty"?
Auf der Fritzbox scheint es stty grds. zu geben: http://www.wehavemorefun.de/fritzbox/Stty
Habe den entsprechenden Aufruf mal in startfhem aufgenommen, aber kann keine Änderung mit Deinem ersten angepassten Modul feststellen. Fritzbox ist zu über 90% ausgelastet. Dein neues Modul habe ich noch nicht ausprobieren können, da es ohne Anpassung auf der Fritzbox nicht läuft.
Zitat von: krikan am 08 Januar 2014, 17:36:49
Habe den entsprechenden Aufruf mal in startfhem aufgenommen, aber kann keine Änderung mit Deinem ersten angepassten Modul feststellen. Fritzbox ist zu über 90% ausgelastet. Dein neues Modul habe ich noch nicht ausprobieren können, da es ohne Anpassung auf der Fritzbox nicht läuft.
Das Problem mit der ursprünglichen Version war, dass FHEM für jedes einzelne Byte "aufgeweckt" wird und dann USBEHZ_Read nur ein Byte abholt (auch wenn mehr da sind) und wieder zurückkehrt. Das ist ein sehr ineffizientes Verfahren und hatte mein NAS zu ca. 50% ausgelastet.
Ich nehme an, dass einige FHEM-Module diese nachteilige Eigenschaft haben, aber wenn wie bei 70_USBWX.pm nur gelegentlich mal eine Zeile kommt, dann stört das nicht, aber bei einem Datensatz alle 4 Sekunden ist das was anderes.
Die neuere Fassung liest die Daten per "$po->streamline" zeilenweise ein und die stty-Einstellungen sorgen dafür, dass FHEM erst aufgeweckt wird, wenn eine komplette Zeile zum Lesen bereit ist. Aber ohne die richtigen stty-Einstellungen funktioniert der Code dann leider nicht mehr. Ich habe nicht leicht finden können, wie man die Einstellungen für den "Cooked"-Modus im Perl-Code vornehmen könnte.
Zitat von: thd am 08 Januar 2014, 18:11:32
Die neuere Fassung liest die Daten per "$po->streamline"
Danke, das war der entscheidende Hinweis! Habe es jetzt auch auf der Fritzbox ans Laufen bekommen. Auslastung sinkt direkt um ca. 25%.
Der stty Aufruf in der startfhem ist nicht so dolle. Mal schauen ob ich da noch was finden kann; sollte sich doch durch Perl ersetzen lassn. Oder kann hier noch jemand helfen?
Hallo,
morgen sollte auch mein USB Sensor kommen. Nun will ich den an die Fritzbox packen und per FHEM2FHEM mit meinem Rasbpi verbinden. Kann ich das letzte Modul so nehmen oder was für Veränderungen müssen auf der Fritz!Box stattfinden?
Danke schon mal an alle für das Modul, bin sehr gespannt.
Grüße
strauch
An diejnigen die USBEHZ mit der Fritzbox nutzen, ist es bei euch auch so das die Fritzbox unbekanntest Gerät zeigt? Bei mir findet FHEM auch kein USB Gerät. Habt ihr noch irgendwas an der Fritzbox gemacht?
Zitat von: strauch am 19 Januar 2014, 16:41:01
An diejnigen die USBEHZ mit der Fritzbox nutzen, ist es bei euch auch so das die Fritzbox unbekanntest Gerät zeigt? Bei mir findet FHEM auch kein USB Gerät. Habt ihr noch irgendwas an der Fritzbox gemacht?
USBEHZ braucht als Software-Schnittstelle die Emulation einer seriellen Schnittstelle. Ich habe keine Ahnung von der FritzBox. Gewöhnlich erscheint nach Einstecken des Geräts beim Aufruf von dmesg eine Zeile mit dem Gerätenamen, z.B. ttyUSB0. Vielleicht hat die Fritz Box keinen Gerätetreiber für Deine Hardware. Vielleicht kannst Du mit
"lsusb" oder
"mora /dev/bus/usb/devices" oder
"dmesg"
oder einem anderen Werkzeug die VID / PID des USB-Geräts ausfindig machen, z.B.: 067b:2303?
Hallo thd,
danke für die Infos.... lsusb habe ich auch schon gemacht, da kommen folgende 3 Geräte, aber so richtig interpretieren konnte ich es nicht (Ist eine Fritzbox 7390):
BUS=002
DEV=001
VID=1d6b
PID=0001
CLS=09
SCL=00
SPEED='full'
VER='1.1'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00
BUS=002
DEV=002
VID=10c4
PID=ea60
CLS=00
SCL=00
SPEED='full'
VER='2.0'
ISOC=0
INUM=1
ICLS1=255
ISCL1=00
BUS=001
DEV=001
VID=1d6b
PID=0002
CLS=09
SCL=00
SPEED='hi'
VER='2.0'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00
Ich muss das Ding mal rausziehen und das noch mal machen, kommen nur gerade nicht ran :-). Wenn ich den USB Fernanschluss aktiviere, kann er mir den Namen und Chipsatz des Geräts nennen ( Silicon Labs CP2104 USB to UART Bridge Controller ). Wobei die Frage ist ob man dafür einen passenden Treiber brauchen. Sonst habe ich da auch noch einen MacMini mit VMware stehen, nur die kann ja eigtl. kein USB.
Bei dmesg steht ja ne Menge interessant ist das:
Serial: 8250/16550 driver1 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0xb90a0000 (irq = 29) is a 16450
muss ich das Gerät einfach als ttyS0 ansprechen und gar nicht als USB Gerät?
Edit: Ok das hier ist der Schreib-Lesekopf:
BUS=002
DEV=002
VID=10c4
PID=ea60
CLS=00
SCL=00
SPEED='full'
VER='2.0'
ISOC=0
INUM=1
ICLS1=255
ISCL1=00
Aber wie komme ich damit darauf ob ein Treiber fehlt oder wie die Adresse ist?
Zitat von: stenny73 am 08 Januar 2014, 15:06:44
Wo muss ich denn das
/bin/stty -F /dev/ttyUSB0 9600 evenp crtscts cs7 inpck parmrk eol 10 icanon
Das muss einfach z.B. beim Rasbpi einfach per ssh in die commandozeile eingetragen werden. stty istein Programm um die serielle Schnittstelle zu konfigurieren. Ich hab es soweit hinbekommen das unter einem normalen debian der Schreib/Lesekopf funktioniert. Wird auch von fhem erkannt und als "connected" in der Log Datei angegeben. Mehr konnte ich noch nicht entlocken. Jetzt muss ich erstmal rausfinden ob der Kopf vom Zähler überhaupt irgendwas an Daten empfängt und dann mal schauen das ich es richtig in fhem eingebunden bekomme.
Beim rumexperimentieren der Adresse (um zu schauen ob er connected oder disconnected) hab ich folgenden Fehler erhalten (ich nutze die letzte Version von thd):
Can't call method "close" on an undefined value at ./FHEM/70_USBEHZ.pm line 176.
Ich hab es dann auch zum laufen bekommen, allerdings dann doch mit dem SMLUSB Modul. Dachte erst ich brauch für den emh ehz auch das ehz Modul, aber dem ist nicht so.
Zitat von: Dennis D. am 28 Oktober 2013, 19:58:05
Hi Matthias,
hast Du denn auch eine Idee, warum nur einmal ein Wert ausgelesen wird? Bekomme immer nur einen Wert kurz nachdem ich FHEM gestartet hab. Es kommen jedoch keine neuen Werte. Hab den EHZ wie folgt definiert:
Hast du da schon eine Lösung dazu, bei mir bleibt das Logging manchmal ganz unvermittelt stehen und geht erst nach einem shutdown restart weiter. Überlege gerade ob ich mit einem Watchdog fhem auch neustarten kann, wenn an den Werten nix passiert.
Des weiteren steht bei mir auch alle Werte im fhem log ist das normal, kann ich das abschalten, das bläht die ganze Geschichte ja unnötig auf.
Zitat von: strauch am 21 Januar 2014, 09:14:56
Ich hab es dann auch zum laufen bekommen, allerdings dann doch mit dem SMLUSB Modul. Dachte erst ich brauch für den emh ehz auch das ehz Modul, aber dem ist nicht so.
Guter Hinweis :)
Muss ich auch mal testen.
Hallo,
ich habe einen emh ehz und diesen mittels SMLUSB eingebunden. Das funktioniert für die Bezugsrichtung auch gut, allerdings geht das reading "Momentanleistung" bei Einspeisung auf Werte über 300000 W.
Ich nehme an, das liegt daran, dass mit der signed/unsigned integer konvertierung beim Einlesen etwas schieg geht.
Ich bin leider völliger Neuling bei fhem und auch Perl gehört leider nicht zu den Programmier-/Skriptsprachen die ich beherrsche. Das werde ich ändern, aber momentan hätte ich gerne eine schnelle Lösung.
Hat jemand einen Tipp für mich?
MfG, Thomas
Hallo zusammen,
ich bin vor kurzem zum ersten Mal Vater geworden. Daher ist meine Zeit für fhem nun leider noch begrenzter. Aber ich versuche trotzdem mal zu helfen.
@Tom0711: Welchen Zähler hast Du genau? Also Typenbezeichnung...
MfG
Matzefisi
Zitat von: matzefisi am 07 März 2014, 08:06:08
Hallo zusammen,
ich bin vor kurzem zum ersten Mal Vater geworden.
Herzlichen Glückwunsch, ich kann das gerade gut nachvollziehen, ich bin in der gleichen Situation. Aber wenn die kleine mich anlacht ist FHEM auch ganz schnell vergessen ;-).
Hallo, danke im voraus.
EMH eHZ-IW8E2A5L0EQ2P
Meine Tochter ist 4, aber die braucht auch Zeit
Hallo zusammen,
Mein Problem ist gelöst.
Das 70_SMLUSB.pm-Modul hatte einen Fehler. Die "hexstr_to_signed32int" hatte einen Fehler bei derUmrechnung von negativen Zahlen.
Außerdem wurde inder Parse-Funktion geprüft, ob die Zahl positiv ist, sonst als unplausibel eingestuft.
Werde meine Änderungen noch etwas aufräumen und dann hier veröffentlichen.
Gruß, Thomas
P.S.: Perl ist furchtbar.....
Hi Tom,
danke für den Hinweis.
Ich hatte gestern leider auch einen Fehler mit dem Modul, den ich noch verifizieren muss:
Use of uninitialized value $scaler in division (/) at ./FHEM/70_SMLUSB.pm line 292.
Illegal division by zero at ./FHEM/70_SMLUSB.pm line 292.
Dadurch ist mein ganzer FHEM Prozess gestorben. Also das schon mal als Hinweis an alle die diese Modul produktiv nutzen.
Mal sehen, vielleicht habe ich diese Woche nochmal etwas Zeit....
MfG
Matthias
Hallo,
ich würde das Modul auch gerne verwenden. Ich lese meinen EDL 300 mit einem VOLTCRAFT-RS-232-Schnittstellenadapter aus. Damit ich Pakete empfangen kann benötige ich 12V zwischen DTR und RTS. In der DevIO.pm gibt es sub DevIo_SetHwHandshake. Wäre es damit irgendwie möglich DTR anzusprechen?
Servus,
Also ich habe versucht dein Script auf meinen Zähler hinzuzufügen.
Aber leider ohne erfolg.
Ich habe unter Windows den Zähler zum quatschen bekommen. aber unter Linux nicht:
wie hier beschrieben
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/iskra_mt372
was mache ich falsch damit ich unter Linux den zähler auslesen kann ?
Gruß Gerd
Hallo Zusammen.
Würde das USBSML Modul auch gerne nutzen - und zwar an einer FritzBox. Habe dazu eine 7390 zu Testzwecken komplett neu mit FHEM aufgesetzt. Also clean install. Der USB IR-Schreib-Lesekopf kommt vom Volkszaehler Projekt und funktioniert auch soweit (getestet mit der Installation unter Debian nach Anleitung des Volkszaehler Projektes). Allerdings hab ich bei der FritzBox unter dev ja leider keine ttyUSBx devices. In diesem Thread habe steht ja ein paar Seiten vorher, dass es an fehlenden Treibern liegen könnte. Also gleiches Problem wie beim User strauch.
Das mit dem "/bin/stty -F /dev/ttyUSB0 9600 evenp crtscts cs7 inpck parmrk eol 10 icanon" ist mir in dem Zusammenhang auch nicht klar.
Da ich noch nicht so weit in der Materie drin bin, wäre ich über jede Hilfe Dankbar.
Danke :)
Servus ,
Mein Stromzähler habe ich jetzt schon überreden können zu arbeiten.
Aber leider versteht mein Zähler nicht SML.
Habe mit eine Script den Zähler ausgelesen.
Jetzt muss ich nur noch versuchen ihn in Fhem zu integrieren
['datum & tijd', 'meter ID', 'Datum', 'Uhr', 'Verbrauch total[kWh]', 'Verbrauch tarif1[kWh]', 'Verbrauch tarif2[kWh]']
['2014-04-22_23:04:04', '12345678', '140422', '230036', '25949.873', '15820.091', '10129.782']
['2014-04-22_22:24:03', '12345678', '140422', '222035', '25949.637', '15820.091', '10129.546']
['2014-04-22_22:25:55', '12345678', '140422', '222227', '25949.646', '15820.091', '10129.555']
['2014-04-22_22:26:08', '12345678', '140422', '222240', '25949.648', '15820.091', '10129.557']
['2014-04-22_23:01:21', '12345678', '140422', '225753', '25949.855', '15820.091', '10129.764']
Hallo zusammen,
ich hab einen Volkszähler-USB-Lesekopf den ich mit SMLUSB eingebunden hab. Das funktioniert zwar, aber das Modul zieht wahnsinnig viel Rechenleistung und treibt meine Load nach oben.
Habt ihr ein ähnliches Verhalten? Kann man das irgendwie optimieren?
Hier mal ein Auszug aus "apptime" nach ca. 60 Sekunden:
name function max count total average maxDly
CUL CUL_Read 305 3 726 242.00 0 HASH(0x21e1d8)
HH SMLUSB_Read 40 3273 535 0.16 0 HASH(0xbf9d30)
tmr-SYSMON_Update HASH(0x152d8a8) 481 1 481 481.00 4 HASH(0x152d8a8)
Wieso wird die Funktion SMLUSB_Read 3200 Mal pro Minute aufgerufen?
Gruß
Leo
Hallo zusammen,
ich versuch es nochmal anders: Ist es möglich, die neue Einlesetechnik von USBEHZ auch ins SMLUSB Modul einzubauen? Dadurch müsste man doch von der großen CPU-Last herunterkommen. Ein paar schnelle Versuche haben bei mir leider nicht zum Erfolg geführt. Darum würde ich die Idee gerne zuerst bestätigt haben, bevor ich weiter herumprobiere.
Ansonsten würde ich mal probieren, die Fileende-Erkennung so abzuändern, dass man nicht bei jedem einzelnen Zeichen die RegEx durchlaufen muss. Hilft vielleicht auch schon ein wenig.
Gruß
Leo
Also ich komme auf ein Count von 260 ich hab aber auch ein event-min-interval .*:240
so das nur alle 4min Daten fließen. Das Teil selber schickt ja alle paar Sekunden Daten.
Hallo zusammen,
nach langer Zeit mal wieder ein Lebenszeichen von mir. Ich bin jetzt angefangen das Modul im Wiki zu dokumentieren:
http://www.fhemwiki.de/wiki/SmlUsb
Der nächste Schritt soll dann das einpflegen in das SVN Repository sein. Mal sehen wann ich das schaffe.
MfG
Matthias
Zitat von: dh4736 am 22 April 2014, 17:16:35
und zwar an einer FritzBox. Der USB IR-Schreib-Lesekopf kommt vom Volkszaehler Projekt und funktioniert auch soweit dass es an fehlenden Treibern liegen könnte. Also gleiches Problem wie beim User strauch.
Hallo,
ich bin "der" Udo von VZ.
Bitte beachtet den Hinweis bezüglich der Linux-Version auf der VZ-Seite zu dem USB-IR-Kopf: http://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-usb-ausgang
Der CP2104 wird zwar von der FritzBox erkannt, aber die Baudratenumschaltung etc. funktioniert aufgrund eines Treiberfehlers der FritzBox nicht.
Ich kann den USB-IR-Kopf auch mit einem FTDI FT232-Chip bauen. Ich muss es nur bei der Bestellung wissen.
Gruß
Udo
Hallo Udo :)
am RPi laufen deine Koepfe dagegen immer noch super!
Hallo Udo,
vielen Dank für den Hinweis! Ich werde den Hinweis gleich mit im Wiki aufnehmen.
MfG
Matthias
Hallo zusammen,
ich versuch es nochmal. Bin ich wirklich der einzige, der Probleme mit der Prozessorlast hat (siehe mein Post vom 27.5.)?
Das Setzen des event-min-interval bringt bei mir nichts. Ist aber irgendwie auch logisch, da die Aufrufe von SMLUSB_Read ja schon beim Zusammenbauen der Nachricht kommen.
Scheinbar wird SMLUSB_Read wirklich für jedes Zeichen einzeln aufgerufen. Gibt es keine einfache Möglichkeit, den Schnittstellentreiber oder FHEM so zu konfigurieren, dass er zumindest ein wenig puffert und nur jede Sekunde Daten von der Schnittstelle erhält?
Gruß
Leo
Hi Leo,
ich habe bislang noch keine Prozesserlast Probleme bei mir erkennen können. (FHEM läuft bei mir auf nem Raspberry Pi Model B).
Ich habe bei mir Apptime mal nachgeladen und komme auf folgende Werte (Ausschnitt).
tmr-HTTPMOD_GetUpdate HASH(0x2aa73d0) 44 1 44 44.00 HASH(0x2aa73d0)
power_Zaehler SMLUSB_Read 24 715 192 0.27 HASH(0x2689280)
tmr-Jabber_PollMessages HASH(0x2a4c908) 15 6 79 13.17 HASH(0x2a4c908)
Wenn ich wieder Zeit habe (evtl. nächste Woche) werde ich mir den Code nochmal in ruhe anschauen. Es gibt sicherlich massives Optimierungspotential, da ich A: Kein Programmierer bin und B: Das die erste funktionierende Version des Moduls ist. :)
MfG
Matthias
Moin Leute,
ich hab mich mal mit dem Modul an meinen beiden Easymeter Q3B via Volkszähler Lesekopf an der vorderen Infoschnittstelle versucht (Null Perl-Kenntnisse ... Ergebnis: Fhem stürzte ab...
Wat hat gehelft??
1. cat /dev/ttyUSBx | od -tx1 >> zweiwege.txt dat wat der Zähler raushaut speichern.
2. Das Ergebnis als $smlfile = "......." in 70_SMLUSB_parsertest.pl eintragen.
3. ausführen perl 70_SMLUSB_parsertest.pl (Windows) siehe da 0 Divisionsfehler mit $scaler
Hinter
$scaler=10 if (substr($telegramm,$length_all,4) eq "52FF");
$scaler=1 if (substr($telegramm,$length_all,4) eq "5200");
$scaler=1 if (substr($telegramm,$length_all,4) eq "5201");
einfach dies noch eingefügt
$scaler=1;
Keine Abstürze von FHEM mehr... :)
Für den Bezug kommt dann auch ein Wert raus, den man als stimming bezeichnen kann.
Beim Rest sieht das n büschen anders aus. ;)
Beim Q3B sieht die Ausgabe ungefähr so aus:
1B1B1B1B01010101760551EEEFCF62006200726500000101760101074553595133420B0645535901071BB1430F010163A9AC00760551EEEFD06200620072650000070177010B0645535901071BB1430F01726201650027E3237977078181C78203FF01010101044553590177070100010800FF0101621E52FC690000000063A6A6480177070100020800FF0101621E52FC6900000000AF8A98FE0177070100010801FF0101621E520165000040C60177070100010802FF0101621E520165000000880177070100020801FF0101621E520165000072870177070100020802FF0101621E520165000000830177070100010700FF0101621B52FE55FFFD57F00177070100600505FF010101016301A00101016360D700760551EEEFD1620062007265000002017101630A8200001B1B1B1B1A01A3FF
Und der Raspi meckert im Augenblick darüber:
0xffffffff non-portable at ./FHEM/70_SMLUSB.pm line 346
Ende mit dem Zwischenbericht...
Und noch mal meinen Dank an matzefisi für die Arbeit. :)
Und Tschüß
Voller
Hi Voller,
danke für Deinen Input. Da ist eine neue Obiskennzahl dabei und auch neue Werte für den Scaler usw. Ich werde mir die Daten in den nächsten Tage mal in ruhe angucken und in meinen Code mit einbauen.
BTW: Ich habe deine Werte mal in den Parsertest mit aufgenommen. Neuste Version liegt gleich auf Github.
@Tom0711: Den Fehler in hexstr_to_signed32int hab ich nun wahrscheinlich auch gefunden. Anstatt **30 müsste es **32 heißen. Allerdings funktioniert dann die Anzeige der Momentanleistungen nicht mehr. SML gibt an welchen Datentyp es im Feld verwendet (int8, int16, in32 usw.) Daher werde ich die Funktion noch auf hexstr_to_signed(X)int umändern müssen. Oder kennt jemand noch einen besseren Weg in perl aus HEX ein signed INT zu bauen?
MfG
Matthias
Hi Voller,
ich bin etwas weitergekommen und habe durch Deinen Input wieder was zum SML Protokoll dazugelernt.
Header - OK
77070100010800FF 0101 621E 52FC 69 0000000063A6A64801 Zählerstand Bezug Total : 167186.59 kW/h
77070100020800FF 0101 621E 52FC 69 00000000AF8A98FE01 Zählerstand Lieferung Total : 187135.41 kW/h
77070100010801FF 0101 621E 5201 65 000040C601 Zählerstand Tarif 1 Bezug : 1.66 kW/h
77070100010802FF 0101 621E 5201 65 0000008801 Zählerstand Tarif 2 Bezug : 1360.00 W/h
77070100020801FF 0101 621E 5201 65 0000728701 Zählerstand Tarif 1 Lieferung : 2.93 kW/h
77070100020802FF 0101 621E 5201 65 0000008301 Zählerstand Tarif 2 Lieferung : 1310.00 W/h
77070100010700FF 0101 621B 52FE 55 FFFD57F001 Momentanleistung Bezug - Voller : 322105.14 kW/h
Ich habe jetzt ein Hauptproblem identifiziert. Und zwar ist das die Behandlung der verschiedenen Datentypen. Bislang nutzte mein Modul nur signed integer 32, aber dein (und auch andere) Zähler nutzen auch z.B. signed integer 8, 16 oder auch unsigned. Z.B. ist der Wert 77070100010700FF bei Dir ein signed integer 32, aber durch einen Fehler in dem Modul mit der hex2integer Funktion wird der Wert nicht korrekt umgerechnet. Das ist bislang noch nicht aufgefallen. Ich bin aber weiterhin dran.
MfG
Matthias
Moin Matthias,
ich hab da mal ein büschen an der Routine zum Parsen rumgeschraubt. So sieht sie jetzt bei mir aus:
sub
SMLUSB_Parse($$)
{
my ($hash,$rmsg) = @_;
my $telegramm;
my $scaler;
my $unit;
my $direction = "Bezug";
my $bzt = 0;
my $lzt = 0;
my $length_all = 0;
my $length_value = 0;
my $smlfile = $rmsg;
# Try to find a SML telegramm in the SML file
# Log3 $hash, 5, "SMLUSB: Started parsing".$smlfile ;
readingsBeginUpdate($hash);
$bzt = hex(substr($smlfile,244,16));
$lzt = hex(substr($smlfile,292,16));
readingsBulkUpdate($hash, $obiscodes{'77070100010800FF'}, sprintf("%.6f",($bzt/10000000)));
readingsBulkUpdate($hash, $obiscodes{'77070100020800FF'}, sprintf("%.6f",($lzt/10000000)));
readingsBulkUpdate($hash, $obiscodes{'77070100010801FF'}, sprintf("%.3f",(hex(substr($smlfile,340,8)))/100));
readingsBulkUpdate($hash, $obiscodes{'77070100010802FF'}, sprintf("%.3f",(hex(substr($smlfile,380,8)))/100));
readingsBulkUpdate($hash, $obiscodes{'77070100020801FF'}, sprintf("%.3f",(hex(substr($smlfile,420,8)))/100));
readingsBulkUpdate($hash, $obiscodes{'77070100020802FF'}, sprintf("%.3f",(hex(substr($smlfile,460,8)))/100));
if (substr($smlfile,500,2) eq "FF")
{
$direction = "Lieferung";
readingsBulkUpdate($hash, $obiscodes{'770701000F0700FF'}, sprintf("%.3f", -((4294967295 - hex(substr($smlfile,500,8)))/100)));
}
else
{
$direction = "Bezug";
readingsBulkUpdate($hash, $obiscodes{'770701000F0700FF'}, sprintf("%.3f",(hex(substr($smlfile,500,8)))/100));
}
readingsEndUpdate($hash, 1);
return undef;
}
Ist sehr statisch für den Easymeter QBAxxxxx aber funktioniert. Das kommt als Readings raus, die auch mit den Zählerständen übereinstimmen (Zählerstände in kW/h Leistung in W - ist Einspeisung + ist Bezug)..
2014-08-07 12:32:03 SMLUSB powerZaehler Zählerstand-Bezug-Total: 193.569644
2014-08-07 12:32:03 SMLUSB powerZaehler Zählerstand-Lieferung-Total: 321.626311
2014-08-07 12:32:03 SMLUSB powerZaehler Zählerstand-Tarif-1-Bezug: 192.200
2014-08-07 12:32:03 SMLUSB powerZaehler Zählerstand-Tarif-2-Bezug: 1.360
2014-08-07 12:32:03 SMLUSB powerZaehler Zählerstand-Tarif-1-Lieferung: 320.310
2014-08-07 12:32:03 SMLUSB powerZaehler Zählerstand-Tarif-2-Lieferung: 1.310
2014-08-07 12:32:03 SMLUSB powerZaehler Momentanleistung: -1179.450
2014-08-07 12:32:06 SMLUSB powerZaehler1 Zählerstand-Bezug-Total: 15.152566
2014-08-07 12:32:06 SMLUSB powerZaehler1 Zählerstand-Lieferung-Total: 3325.614691
2014-08-07 12:32:06 SMLUSB powerZaehler1 Zählerstand-Tarif-1-Bezug: 13.820
2014-08-07 12:32:06 SMLUSB powerZaehler1 Zählerstand-Tarif-2-Bezug: 1.330
2014-08-07 12:32:06 SMLUSB powerZaehler1 Zählerstand-Tarif-1-Lieferung: 3324.290
2014-08-07 12:32:06 SMLUSB powerZaehler1 Zählerstand-Tarif-2-Lieferung: 1.320
2014-08-07 12:32:06 SMLUSB powerZaehler1 Momentanleistung: -1701.240
Ich hab da mal ne steile These alle Zähler des gleichen Typs haben die selbe Position der interessanten Werte im Telegramm. Sprich wenn man den Anfang des Telegramms gefunden hat kann genau bestimmt werden, welche Werte für die Position und Länge der substr-Funktion zählerspezifisch gewählt werden muss. Somit könnte man es sich sparen die weiteren OBIS-Codes im Telegramm zu finden. In Anlehnung an 21_VBUSDEV.pm
my %VBUS_devices = (
"7751" => {"name" => "DiemasolC", "cmd" => "0100", "fields" => [
{ "offset" => 0,"name" => "temperature_T01","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 2,"name" => "temperature_T02","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 4,"name" => "temperature_T03","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 6,"name" => "temperature_T04","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 8,"name" => "temperature_T05","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 10,"name" => "temperature_T06","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 12,"name" => "temperature_T07","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 14,"name" => "temperature_T08","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 16,"name" => "temperature_T09","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 18,"name" => "temperature_T10","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 20,"name" => "temperature_T11","bitSize" => 15,"factor" => 0.1,"unit" => "°C" },
{ "offset" => 22,"name" => "volumeflow", "bitSize" => 15,"factor" => 0.1,"unit" => "l/min"},
{ "offset" => 24,"name" => "speed_R01", "bitSize" => 8, "unit" => "%"},
{ "offset" => 25,"name" => "speed_R02", "bitSize" => 8, "unit" => "%"},
{ "offset" => 26,"name" => "speed_R03", "bitSize" => 8, "unit" => "%"},
{ "offset" => 27,"name" => "relais_R04", "bitPos" => 0, "bitSize" => 1 },
{ "offset" => 27,"name" => "relais_R05", "bitPos" => 1, "bitSize" => 1 },
{ "offset" => 27,"name" => "relais_R06", "bitPos" => 2, "bitSize" => 1 },
{ "offset" => 27,"name" => "relais_R07", "bitPos" => 3, "bitSize" => 1 },
{ "offset" => 27,"name" => "relais_R08", "bitPos" => 4, "bitSize" => 1 },
{ "offset" => 27,"name" => "relais_R09", "bitPos" => 5, "bitSize" => 1 },
{ "offset" => 28,"name" => "heatquantity", "bitSize" => 32, "factor" => 0.001,"unit" => "kWh" },
]},
könnte man versuchen eine Typenliste für die einzelnen Zählertypen, die die Werte beinhaltet. (Mit dem VBUS an USB muss ich mich auch noch auseinandersetzen ;)
Auf http://wiki.volkszaehler.org/software/sml sind ja schon paar Telegramme zerlegt.
Ich weiß es nicht, bin wie gesagt Perl-Dummi, aber die Funktion hex( ) scheint einen Hex-String in unsigned Integer umzuwandeln.
Mal gucken wie motiviert ich bin an der Lösung mit der Telegrammparameterliste weiter zu feilen... jetzt läufts ja bei mir. ;D
MfG
Volker
Hallo Volker,
vorsicht! Die Länge eines Telegramms ist nicht immer gleich! Sie wird durch mehrere Type Length Felder innerhalb eines Telegramms verändert.
Und auch der Scaler (10 hoch X) sowie die Unit (Watt, W/h, Ampere usw) werde mit im Type Length Feld übergeben. Daher wird dein Code auch nur für deinen Zählertyp funktionieren. Bzw. sobald dein Zähler z.B. meint er müsste den Scaler ändern, weil er die Werte nicht mehr korrekt Darstellen kann, könnte es ebenfalls passieren, dass Dein Code nicht mehr passt.
Ich versuche das Type Length Feld und alle anderen Variablem im Moment in meinem Parsertest vernüftig auszulesen, brauche dafür aber noch Zeit.
Mein großes Ziel ist es irgendwann alle Zähler zu unterstützen, indem ich das SML Protokoll zu 100% abbilde. Aber dazu muss ich es erstmal selbst ganz verstehen.
BTW: Ob vom Zähler ein signed oder unsigned Integer (oder anderer Variablentyp) übergeben wird, steht ebenfalls im Type Length Field.
Etwas Background: http://www.emsycon.de/downloads/SML_081112_103.pdf (Ab Seite 35 von 42 werden die Datentypen des TL-Feldes beschrieben)
77 Liste mit 7 Einträgen (Type Length Feld)
07 01 00 01 08 00 FF objName 1-0:1.8.0*255 (Total Active Energy+ = Bezugsrichtung) OBIS Code
63 01 80 status
01 valTime (leer)
62 1E unit (unsigned8) 1E = Wh --62 Ist hier z.B. das Type Length Feld und 1E der Wert
52 FF scaler (int8) -1 = *10^-1 = /10 -- Hier ist 52 das Type Length Feld 52 = 8 bit signed integer.
59 00 00 00 00 01 91 F2 60 value (1*16^6+9*16^5+1*16^4+15*16^3+2*16^2+6*16^1+0*16^0)/10 = 26341984/10 = 2634198,4 Wh = 2634,1984 kWh
01 valueSignature (leer)
Quelle: http://volkszaehler.org/pipermail/volkszaehler-dev/2012-September/002002.html
MfG
Matthias
Moin Matthias,
ok, das SML-Protokoll vollständig auswerten ist schlußendlich der richtige Ansatz. :)
Für meinen Quick & Dirty-Ansatz muss sich jeder User erstmal die Telegramme selber anschauen um die Werte zu extrahieren.
Ausgehend von der Vermutung, dass ein Zählertyp eines Herstellers während der Einsatzzeit nicht sein Telegrammstil ändert, wäre das ein einmaliger Aufwand die passenden Werte für das Parametrisierungs-Array zusammen zu suchen. Die nächste Vermutung wäre, dass jemand, der sich die Arbeit gemacht hat, dies mitteilen würde um das Array typenspezifisch zu erweitern. ;)
Anderer Ansatz, das Array wird während der Initialisierungphase aufgebaut, in dem man das Telegramm Byte für Byte auswertet. Dann sollte nach jedem neu laden des Moduls eine Anpassung auf den Zähler erfolgen. Mal gucken ob ich in die Richtung was machen will. Aber ich denke mal nicht so bald. Ich brauch noch ne VBUS-Auswertung (USB RS 232 Resol), n Kaco usb rs232 Modul, AEconversion Auswertung und Parametrisierung (usb RS485), ne S0 Auswertung via (Firmata ?) und ne Buderus-Auswertung (I2C via Firmata ?). Hab ich bis jetzt noch alles noch nicht. Deshalb gibt sich der alte Mann erstmal mit Quick & Dirty zufrieden, so lange die Ergebnisse stimmen. :-[
Aber Deine Anregungen waren Gold wert für die Auswertung der USB-Leseköpfe. ;D
MfG
Volker
Moin Matthias,
isch hab mir mal paar Gedanken übers Protokoll gemacht. Die Annahme ist wie folgt:
Das TL-Feld ist das Low-Level-Protokoll (Transport Layer) mit dem der String bzw. das Telegramm in Werte zerlegt werden kann. Die möglichen Werte und deren Bedeutung:
Merkmal weiteres Byte: 8-Fx #Das nächste Byte gehört mit zum TL Feld
Merkmal kein weiteres Byte: 0-7x #Dies ist das einzige TL-Byte
Octet String: 0x oder 8x #Die nächsten x Byte (bei 0x) sind ein Octet-String bei 8x geht die Definition mit dem nächsten Byte weiter
Boolean: 4x #Die nächsten x Byte sind ein Boolean-Wert
Integer: 5x oder Dx #Die nächsten x Byte (bei 0x) sind ein Integer bei Dx geht die Definition mit dem nächsten Byte weiter
unsigned: 6x oder Ex #Die nächsten x Byte (bei 0x) sind ein unsigned bei Ex geht die Definition mit dem nächsten Byte weiter
List of: 7x oder Fx #Die nächsten x Byte (bei 0x) sind ein unsigned bei Fx geht die Definition mit dem nächsten Byte weiter
weiters Byte mit typdef : Cx #
reserviert: 1x oder 9x # z.Z. keine Verwendung
reserviert: 2x oder Ax # z.z. keine Verwendung
reserviert: 3x oder BX # z.Z. keine Verwendung
Die x die Länge wird bei mehreren Byte für die Definiton durch hex ( x(1).x(2)....x(n)) ermittelt.
Beispiel:
0000 1B1B1B1B # ESC-Sequenz Start Telegramm
0008 01010101 # Protokolversion 1
0010 76 # List of 5 Byte
0011 0551F414BD # Irgendwas
0016 62 # int Byte
0017 00 # Wert 0
0018 62 # int Byte
0019 00 # Wert 0
001a 72 # List of 2 Bytes
.........
wenn man das Telegramm bis zum nächsten "1B1B1B1B" nach diesem Motto zerlegt wird man am Ende ein Array von Werten haben deren Bedeutung man an Hand folgender Bedingung aufschlüsseln muss (ständiges senden über die Info Schnittstelle ist ein "Response without Request"):
Zum Einsatz von SML über Transportmedien mit geringer Performance1, können
SML-Nachrichten ohne den Rahmen einer SML-Datei und ausschließlich als
,,Response without Request" versendet werden. Dieser Anwendungsfall ist explizit
von der Applikation zu definieren.
Diese Bedingung lässt erahnen, dass jeder Zählerhersteller im weiteren sein eigenes Süppchen kocht. >:(
Das macht eine universelle Auswertung zumindest schwierig. :o
Ich hoffe ich hab da keinen Denkfehler.... ;)
MfG
Volker
Hallo zusammen,
ich bin ein begeisterter Nutzer von FHEM und habe bereits viele Beiträge über Leistungsmessung gelesen. Primär ging es dabei um Strom oder Gas/Wasserzähler.
Ich habe hier aber einen Wärmemengenzähler ultraheat xs der mit einer optischen Schnittstelle nach IEC 870 ausgestattet ist. Jetzt war die Idee über lirc die Signale des Wärmemengenzählers analog der von Euch in dem Forum diskutierten USB IR Schnittstelle standardisiert zu übertragen. Somit müsste der Datentransfer ja möglich sein.
Somit meine Frage:
Gibt es in Modul das nach IEC870 Daten auswerten kann?
Hat es in dieser Richtung bereits Erfahrungen im Forum- ich habe bisher nichts gefunden- Habe aber das Gefühl das Ihr thematisch am nächsten seit.
Gruß und schönes WE
SK
Hardware: RPI mit über GPIO Pin 18 angeschlossenen IR Empfänger. Die Signale kommen bereits mode2... an.
Hallo zusammen,
@Volker: Bislang ist mir noch kein Zähler untergekommen, der sein eigenes Süppchen kocht. Bislang konnte ich noch jeden Zähler anhand der SML Dokumentation sauber auswerten. In meinem Modul fehlt bislang nur das korrekte Interpretieren des TL Feldes. Das war nur sehr statisch geregelt. In dem Parsertest Script habe ich das jetzt schon etwas besser gelöst, bin aber noch nicht fertig.
@SK: Die IEC870 kenne ich bislang nocht nicht. Das Modul 70_SMLUSB versteht bislang nur SML im Binärformat per serieller Infrarotschnittstelle. Also z.B. /dev/ttyUSB0. Hast Du denn schon Daten über die Infrarotschnittstelle auslesen können? Wenn ja, kannst Du hier mal ein Beispiel posten? Theoretisch kann SML auch Gas, Wasser und Wärmewerte weitergeben.
MfG
Matthias
Hallo,
diesen Fehler
Use of uninitialized value $scaler in division (/) at ./FHEM/70_SMLUSB.pm line 292.
Illegal division by zero at ./FHEM/70_SMLUSB.pm line 292.
hatte ich auch gelegentlich, als ich Anfang des Jahres meinen Zähler eHZ EDL21 eingebunden habe.
Ich nahm an das Lesefehler von der Schnittstelle daran Schuld waren.
Darum habe ich die Variable mit einem Wert initialisiert.
228| my $scaler = 10;
Wahrscheinlich wäre eine Checksummenprüfung vor der Auswertung gut, doch das wird nicht so einfach sein.
Man müßte erst alles von ersten 1b 1b 1b 1b 01 01 01 01 bis zum nächsten in eine Puffer schreiben, wobei die Länge nicht vorhersehbar ist (Zählerabhängig).
Meine "Bemühungen" sind unter "Tarifumschaltung HT/NT erkennen - eHZ EDL21 - SMLUSB.pm - USB-IR-Lesekopf" zu sehen.
http://forum.fhem.de/index.php/topic,20525.msg140618.html#msg140618 (http://forum.fhem.de/index.php/topic,20525.msg140618.html#msg140618)
Und dann habe ich da noch eine Informationsquelle zu SML-Protokoll und OBIS-Kennzahlen, zwar V1.2, aber meiner Meinung nach gut dokumentiert.
http://www.itrona.ch/downloads.html (http://www.itrona.ch/downloads.html)
MfG
Frieder
Moin Frieder
ZitatUnd dann habe ich da noch eine Informationsquelle zu SML-Protokoll und OBIS-Kennzahlen, zwar V1.2, aber meiner Meinung nach gut dokumentiert.
http://www.itrona.ch/downloads.html
Jupp, is endlich mal wat womit ich wat anfangen kann... :-[
Die vielen "Dieses Telegramm kann im SMART METER unterdrückt we
rden. " darin sind aber böse... >:(
Aber immerhin kann ich meine gesammelten Message-Strings an Hand der Doku erfolgreich händisch auswerten. ;D
MfG
Voller
Moin,
leider funtkioniert dass bei mir nur sporadisch...oder besser gesagt nur nach Shutdown Restart. Ich benutze die einfache Schaltung mit einer Fotodiode und einem Wiederstand. Das ganze wird über ein EXsys 6030 seriel to Ethernet konvertiert und in Linux per Socat als Device eingebunden. Am Terminal sehe ich das SML-Telegramm schön, nur FHEM liest es nicht. Hab auch schon versucht die Zeiten zu verändern, oder den buffer von Socat zu verändern, aber er liest es nur am Anfang und im Logfile steht danach
Zitat2014.09.05 21:15:27 5: SMLUSB: End of SML found. Looking for a beginning.
2014.09.05 21:15:27 5: SMLUSB: Started parsing
2014.09.05 21:15:27 5: SMLUSB: SML Telegram found: 77070100010800FF
2014.09.05 21:15:27 5: SMLUSB: Reading BulkUpdate. Value > 0
2014.09.05 21:15:27 5: SMLUSB: SML Telegram found: 77070100020800FF
2014.09.05 21:15:27 5: SMLUSB: Reading BulkUpdate. Value > 0
2014.09.05 21:15:27 5: SMLUSB: SML Telegram found: 77070100010801FF
2014.09.05 21:15:27 5: SMLUSB: Reading BulkUpdate. Value > 0
2014.09.05 21:15:27 5: SMLUSB: SML Telegram found: 77070100020801FF
2014.09.05 21:15:27 5: SMLUSB: Reading BulkUpdate. Value > 0
2014.09.05 21:15:27 5: SMLUSB: SML Telegram found: 77070100010802FF
2014.09.05 21:15:27 5: SMLUSB: SML Telegram found: 77070100020802FF
2014.09.05 21:15:27 5: SMLUSB: SML Telegram found: 770701000F0700FF
2014.09.05 21:15:27 5: SMLUSB: Reading BulkUpdate. Value > 0
2014.09.05 21:15:27 5: SMLUSB: Setting state
2014.09.05 21:15:27 5: SMLUSB: Parsing ended
2014.09.05 21:15:27 5: SMLUSB: Beginning of SML File found start parsing
2014.09.05 21:15:28 5: SMLUSB: End of SML found. Looking for a beginning.
2014.09.05 21:15:29 5: SMLUSB: End of SML found. Looking for a beginning.
2014.09.05 21:15:31 5: SMLUSB: End of SML found. Looking for a beginning.
2014.09.05 21:15:33 5: SMLUSB: End of SML found. Looking for a beginning.
2014.09.05 21:15:35 5: SMLUSB: End of SML found. Looking for a beginning.
2014.09.05 21:15:36 5: SMLUSB: End of SML found. Looking for a beginning.
2014.09.05 21:15:38 5: SMLUSB: End of SML found. Looking for a beginning.
2014.09.05 21:15:40 5: SMLUSB: End of SML found. Looking for a beginning.
weiß jemand Rat?? Die Werte (wenn sie denn gelesen werden) sind übrigens korrekt. Der Zähler ist ein EDL-300 Zweirichtungszähler.
Hallo zusammen,
ausgehend vom SMLUSB-Modul (Danke an @matzefisi) habe ich für mich einige Anpassungen vorgenommen.
Ich besitze den EMH eHZ-H-Zweirichtungszähler und eine PV-Anlage mit einem elektronischen Zähler, den ich über S0 an einen umgebauten EM-1000 von ELV angeschlossen habe. Der EMH eHZ-H sendet im Sekundentakt, dadurch ist der serielle Puffer regelmäßig übergelaufen, so dass ich ein reopen einbauen musste (System läuft unter Windows). Auch mit der Momentan-Leistung konnte ich für die Plots wenig anfangen. Dann wollte ich die beiden Zähler synchronisieren, damit saubere Logs über Produktion, Einspeisung, Bezug und Eigenverbrauch zustande kamen. Herausgekommen ist ein rudimentäres Teil, welches ereignisgesteuert funktioniert und so aussieht (siehe Anhänge).
Bei Interesse hier melden.
Gruß
Damian
Hallo,
bin gerade dabei meine FHEM Installation im Hinblick auf Performance zu optimieren.
Dabei ist mir mit Hilfe von apptime aufgefallen, dass die Funktion SMLUSB_Read
pro Minute fast 3000 mal aufgerufen wird. Das erscheint mir etwas hoch ...
name function max count total average maxDly
Strom SMLUSB_Read 161 509659 70227 0.14 0 HASH(Strom)
Die CPU-Load liegt bei durchschnittlich 0.25 obwohl auf der FHEM-Installation (Test-RasPi ) ausser dem Stromzähler nix läuft.
Als Attribute habe ich gesetzt :
event-min-interval .*:30
event-on-change-reading Zählerstand-Bezug-Total
Hat jemand eine Idee, wie ich das optimiert bekomme?
Hallo,
ich habe meinen Volkszähler (UDO) USB Schreibkompf zum Anzeigen gebracht.
Da ich einen 2009 eHz FW8 habe, liefert der nur den Zählerstand. Leider keinen Momentanverbauch oder Tagesverbrauch.
define zaehler USBEHZ /dev/ttyUSB0
attr zaehler interval 120
attr zaehler intervalReading 300
attr zaehler room IR-Sensor
define FileLog_power1 FileLog ./log/power1-%Y-%m.log FileLog_power1:zaehler|power1
attr FileLog_power1 room IR-Sensor
define SVG_power1 SVG FileLog_power1:power4
attr SVG_power1 label "power1 Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_power1 room IR-Sensor
Ich schreibe also alle 5 Minuten einen Wert weg, der in ein monatslog geht.
Ich suche nach einer Möglichkeit, dass er einerseits alle 300 Sekunden UND alle 24 Std einen Wert wegschreibt. Ein zweites define "Tag USBEHZ /dev/ttyUSB0" führte zu einem Fehler
Dann suche ich nach einer Möglichkeit, dass er den "aktuellen" Verbauch (errechent aus (wert-vorwert)/5*60 ) errechnet. So möchte ich sehen, was ich in den 5 Minuten als durchschnitts/aktueller Verbrauch so genutzt habe.
Bin am Verzweifeln, da ich es nicht hinbekomme.
Danke für die Hilfe.
Jörg
Hallo zusammen,
kurze Zwischenfrage: der vzlogger aus dem volkszähler-Projekt ist sehr ressourcenschonend und kennt schon jede Menge Zähler und deren Eigenheiten. Wie könnte man den mit FHEM nutzen?
Gruß
optimizer
Hi,
besteht die Chance, dass SMLUSB erweitert wird um einen Easymeter Q3D auslesen zu können?
Hier hab ich ein funktionierendes Skript gefunden, mit dem sich der Zähler auslesen lässt, die Daten konnte ich bisher leider nicht verwerten.
https://github.com/jschanz/easymeter
Greetz
Eldrik
Hi,
ich habe jetzt mit Hilfe des einen Beitrag weiter oben erwähnten Skriptes die bisherige Ausgabe von einer Kommagetrennten CSV Datei, in das JSON Format umgestellt und lese dieses mit 70_JSONMETER.pm aus, funktioniert wunderbar :)
Greetz
Eldrik
Zitat von: eldrik am 19 November 2014, 12:33:54
Hi,
ich habe jetzt mit Hilfe des einen Beitrag weiter oben erwähnten Skriptes die bisherige Ausgabe von einer Kommagetrennten CSV Datei, in das JSON Format umgestellt und lese dieses mit 70_JSONMETER.pm aus, funktioniert wunderbar :)
Greetz
Eldrik
Kannst du bitte mal beschreiben wie du es eingestellt hast?
stenny
klar,
im Skript diese Codezeile suchen und auskommentieren oder löschen:
# write csv stream to filehandle
print FILEHANDLE "$datetime;$ownershipNumber;$importCounter;$exportCounter;$powerL1;$powerL2;$powerL3;$powerOverall;$state;$serialNumber;$consumption;$generation;$export\n";
und durch diese ersetzen
# write csv stream to filehandle
print FILEHANDLE qq({ "billingData:" : { "assignment" :[ { "obis":"0100000000FF","value":"$serialNumber"}, { "obis":"010000090B00","value":"$datetime"}], "values" : [ {"obis":"0101010800FF","value":$importCounter,"unit":"kWh" }, {"obis":"0100010700FF","value":$powerOverall,"unit":"W"}, {"obis":"0100150700FF","value":$powerL1,"unit":"W"}, {"obis":"0100290700FF","value":$powerL2,"unit":"W"}, {"obis":"01003D0700FF","value":$powerL3,"unit":"W"}, ] }}\n);
jetzt ensteht keine easymeter.csv Datei mit komma getrennten Werten mehr sondern eine easysmeter.csv Datei mit einem gültigen JSON Format, welche sich über 70_JSONMETER auslesen lässt!
Die weiteren Optionen des Skriptes (mysql Anbindung, Daten für einen PV Webdienst etc.) habe ich komplett rausgeworfen, so dass nur noch der Serielle bzw. USB Port geöffnet werden und die easymeter.csv geschrieben wird, wer sich mit Modulen auskennt könnte hieraus wahrscheinlich schon ein mehr oder weniger fertiges Modul schreiben.
Greetz
Eldrik
Super.
Dann hab ich ja für das Wochenende doch was zum basteln......
@eldrik
Danke für die Erklärung
Vieleicht kannst du mir (oder auch andere) vielleicht noch bei einem weiteren Punkt helfen?
Welchen Zähler habt ihr? Ich habe eine Q3D - da kommen nur sehr wenig Daten zurück...
Die Rückgabe des Script sind:
{ "billingData:" : { "assignment" :[ { "obis":"0100000000FF","value":"82"}, { "obis":"010000090B00","value":"21.11.14;18:44"}], "values" : [ {"obis":"0101010800FF","value":5634340.0521,"unit":"kWh" }, {"obis":"0100010700FF","value":00017484.4897313,"unit":"W"}, {"obis":"0100150700FF","value":0,"unit":"W"}, {"obis":"0100290700FF","value":0,"unit":"W"}, {"obis":"01003D0700FF","value":0,"unit":"W"}, ] }}
wie oben erwähnt habe ich einen Q3D!
Am besten du schaust dir den Output einmal "nackt" an und schaust was er überhaupt ausgibt, dann kann man vl. besser nachvollziehen was er derzeit überhaupt ausgibt und dies auf den notwendigen Obis Code matchen!
Gute Links:
Q3d auslesen:
http://www.s-jordan.de/index.php?page=easymeter_raspberrypi (http://www.s-jordan.de/index.php?page=easymeter_raspberrypi)
Q3d Datenblatt, letzte Seite Übersetzung der Werte:
http://www.easymeter.com/fileadmin/bilder/downloads/Q3D_Betriebsanleitung.pdf (http://www.easymeter.com/fileadmin/bilder/downloads/Q3D_Betriebsanleitung.pdf)
Umsetzung in Json Seite 10:
http://www.sev-soemmerda.de/de/Strom/Smart-Meter-/Smart-Meter-/Bedienungsanleitung-Smart-Grid-Hub.pdf (http://www.sev-soemmerda.de/de/Strom/Smart-Meter-/Smart-Meter-/Bedienungsanleitung-Smart-Grid-Hub.pdf)
Viel Erfolg.
Greetz
Eldrik
Danke
Eine Sache hab ich noch vergessen, ich habe noch folgende Zeile abgeändert, damit die Daten in der csv nicht mehr an bestehende angehängt werden!
# open filehandle for writing
open (FILEHANDLE, ">>$csv_file") or
# open filehandle for writing
open (FILEHANDLE, ">$csv_file") or
Greetz
Eldrik
Hallo,
ich habe ein seltsames Verhalten mit dem smlusb, manchmal (3-5x pro Tag) werden extreme Werte zwischen 322122,xy und - 322122,xy gelesen bei der Momentanleistung.
Ich verwende einen rpi mit "voltcraft rs232 schnittstellen adapter" + usb-rsr232 adapter an einem ehz Stromzähler.
Ich habe selbe Kombination wochenlang Fehlerlos mit dem volkszähler betrieben, mit fhem bin ich ganz neu unterwegs und habe keinen Ahnung, wo ich suchen soll?
Schonmal danke für Tips
Hi fdisk,
könntest Du mal bitte das logging aktivieren?
verbose = 5
MfG
Matthias
Hab ich gemacht. Es geht Stundenlang gut, plötzlich kommt so etwas (kann da auch keine Regelmäßigkeit erkennen):
2015.01.13 10:06:26 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2015.01.13 10:06:31 5: SMLUSB: End of SML found. Looking for a beginning.
2015.01.13 10:06:31 5: SMLUSB: Started parsing
2015.01.13 10:06:31 5: SMLUSB: SML Telegram found: 77070100010800FF
2015.01.13 10:06:31 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.01.13 10:06:31 5: SMLUSB: SML Telegram found: 77070100020800FF
2015.01.13 10:06:31 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.01.13 10:06:31 5: SMLUSB: SML Telegram found: 77070100010801FF
2015.01.13 10:06:31 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.01.13 10:06:31 5: SMLUSB: SML Telegram found: 77070100020801FF
2015.01.13 10:06:31 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.01.13 10:06:31 5: SMLUSB: SML Telegram found: 77070100010802FF
2015.01.13 10:06:31 5: SMLUSB: SML Telegram found: 77070100020802FF
2015.01.13 10:06:31 5: SMLUSB: SML Telegram found: 77070100100700FF
2015.01.13 10:06:31 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.01.13 10:06:31 5: SMLUSB: Setting state
2015.01.13 10:06:31 5: SMLUSB: Parsing ended
2015.01.13 10:06:31 5: Triggering Power (5 changes)
2015.01.13 10:06:31 5: Notify loop for Power Zählerstand-Bezug-Total: 2288.94
2015.01.13 10:06:31 5: statistics statisticsPower: DoStatistics.418 Assigned reading 'Zählerstand-Tarif-1-Bezug' from attribute 'deltaReadings' to statistic type 2.
2015.01.13 10:06:31 5: statistics statisticsPower: DoStatistics.418 Assigned reading 'Zählerstand-Tarif-1-Lieferung' from attribute 'deltaReadings' to statistic type 2.
2015.01.13 10:06:31 5: statistics statisticsPower: DoStatistics.418 Assigned reading 'Momentanleistung' from attribute 'minAvgMaxReadings' to statistic type 5.
2015.01.13 10:06:31 4: statistics statisticsPower: doStatisticMinMax.497 Calculating min/avg/max statistics for 'Power:Momentanleistung = 322122.49'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticMinMaxSingle.562 Set 'statMomentanleistungHour'='Min: 222.40 Avg: 253.13 Max: 322122.49 (since: 2015-01-13_10:02:50 )'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticMinMaxSingle.582 Set '.Power:MomentanleistungHour'='Sum: 55940.7 Time: 221 LastValue: 322122.49 LastTime: 1421139991 ShowDate: 1 DecPlaces: 2'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticMinMaxSingle.562 Set 'statMomentanleistungDay'='Min: 222.40 Avg: 253.13 Max: 322122.49 (since: 2015-01-13_10:02:50 )'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticMinMaxSingle.582 Set '.Power:MomentanleistungDay'='Sum: 55940.7 Time: 221 LastValue: 322122.49 LastTime: 1421139991 ShowDate: 1 DecPlaces: 2'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticMinMaxSingle.562 Set 'statMomentanleistungMonth'='Min: 222.40 Avg: 253.13 Max: 322122.49 (since: 2015-01-13_10:02:50 )'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticMinMaxSingle.582 Set '.Power:MomentanleistungMonth'='Sum: 55940.7 Time: 221 LastValue: 322122.49 LastTime: 1421139991 ShowDate: 1 DecPlaces: 2'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticMinMaxSingle.562 Set 'statMomentanleistungYear'='Min: 222.40 Avg: 253.13 Max: 322122.49 (since: 2015-01-13_10:02:50 )'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticMinMaxSingle.582 Set '.Power:MomentanleistungYear'='Sum: 55940.7 Time: 221 LastValue: 322122.49 LastTime: 1421139991 ShowDate: 1 DecPlaces: 2'
2015.01.13 10:06:31 4: statistics statisticsPower: doStatisticDelta.674 Calculating delta statistics for 'Power:Zählerstand-Tarif-1-Bezug = 2288.94'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticDelta.760 Set '.Power:Zählerstand-Tarif-1-Bezug'='LastValue: 2288.94 ShowDate: 8 DecPlaces: 2'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticDelta.766 Set 'statZählerstand-Tarif-1-Bezug'='Hour: 0.02 Day: 0.02 Month: 0.02 Year: 0.02 (since: 2015-01-13_10:02:50 )'
2015.01.13 10:06:31 4: statistics statisticsPower: doStatisticDelta.674 Calculating delta statistics for 'Power:Zählerstand-Tarif-1-Lieferung = 900.74'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticDelta.760 Set '.Power:Zählerstand-Tarif-1-Lieferung'='LastValue: 900.74 ShowDate: 8 DecPlaces: 2'
2015.01.13 10:06:31 5: statistics statisticsPower: doStatisticDelta.766 Set 'statZählerstand-Tarif-1-Lieferung'='Hour: 0.00 Day: 0.00 Month: 0.00 Year: 0.00 (since: 2015-01-13_10:02:50 )'
2015.01.13 10:06:31 5: Triggering statisticsPower (1 changes)
2015.01.13 10:06:31 5: Notify loop for statisticsPower Updated stats for: Power
2015.01.13 10:06:31 5: statistics statisticsPower: Notify.253 Notifications of myself received.
2015.01.13 10:06:31 4: eventTypes: statistics statisticsPower Updated stats for: Power -> Updated stats for: Power
2015.01.13 10:06:31 4: eventTypes: statistics statisticsPower state: Updated stats for: Power -> state: Updated stats for: Power
2015.01.13 10:06:31 5: statistics statisticsPower: Notify.276 Notification of 'Power' received. Update statistics.
2015.01.13 10:06:31 4: eventTypes: SMLUSB Power Zählerstand-Bezug-Total: 2288.94 -> Zählerstand-Bezug-Total: .*
2015.01.13 10:06:31 4: eventTypes: SMLUSB Power Zählerstand-Lieferung-Total: 900.74 -> Zählerstand-Lieferung-Total: .*
2015.01.13 10:06:31 4: eventTypes: SMLUSB Power Zählerstand-Tarif-1-Bezug: 2288.94 -> Zählerstand-Tarif.*-Bezug: .*
2015.01.13 10:06:31 4: eventTypes: SMLUSB Power Zählerstand-Tarif-1-Lieferung: 900.74 -> Zählerstand-Tarif.*-Lieferung: .*
2015.01.13 10:06:31 4: eventTypes: SMLUSB Power Momentanleistung: 322122.49 -> Momentanleistung: .*
2015.01.13 10:06:31 4: eventTypes: SMLUSB Power statZählerstand-Tarif-1-Bezug: Hour: 0.02 Day: 0.02 Month: 0.02 Year: 0.02 (since: 2015-01-13_10:02:50 ) -> statZählerstand-Tarif.*-Bezug: Hour: .* Day: .* Month: .* Year: .* (since: .*.*-13_10:.*:.* )
2015.01.13 10:06:31 4: eventTypes: SMLUSB Power statZählerstand-Tarif-1-Lieferung: Hour: 0.00 Day: 0.00 Month: 0.00 Year: 0.00 (since: 2015-01-13_10:02:50 ) -> statZählerstand-Tarif.*-Lieferung: Hour: .* Day: .* Month: .* Year: .* (since: .*.*-13_10:.*:.* )
2015.01.13 10:06:31 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
Mich wurdert es, warum die Ausreisser immer die Werte +/-322122.xy haben :o
Hi fdisk,
ich hab da schon eine Idee wo der Fehler liegen könnte. Und zwar am scaler. Ich werde heute Abend nochmal eine Erweiterte Logging Funktion einbauen und mich dann nochmal melden.
Mfg
Matze
Hi fdisk,
ich habe mal das ganze Telegram ins logging aufgenommen. Könnte also jetzt deutlich mehr geloggt werden. Kannst Du diese Version mal installieren und dann solange laufen lassen, bis der Fehler dann nochmal auftritt?
https://github.com/matzefisi/fhem-modules/blob/master/70_SMLUSB.pm
MfG
Matthias
Vielen Dank schonmal!
Da ich mir nicht sicher bin, was du alles für Infos brauchst, hier mal etwas mehr Logfile mit ein paar Zeilen Vorlauf (hoffe, das ist ok):
2015.01.14 11:35:02 5: SMLUSB: SML Telegram found: 77070100020801FF0101621E52FF56000089B58D0177070100010802FF0101621E52FF5600000000000177070100020802FF0101621E52FF5600000000000177070100100700FF0101621B52FF55FFFFFFD50177078181C78205FF017262016501DE9C1201018302072CF3A1B5BB83264B3B58C71E967A792592C10FF5175CA357130A52846662A7843267B467B4DA77249C01E432F7373B0101016386D30076070009054CC454620062007263020171016333CC00001B1B1B1B1A015F39 - Scaler: 52FF
2015.01.14 11:35:02 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.01.14 11:35:02 5: SMLUSB: SML Telegram found: 77070100010802FF0101621E52FF5600000000000177070100020802FF0101621E52FF5600000000000177070100100700FF0101621B52FF55FFFFFFD50177078181C78205FF017262016501DE9C1201018302072CF3A1B5BB83264B3B58C71E967A792592C10FF5175CA357130A52846662A7843267B467B4DA77249C01E432F7373B0101016386D30076070009054CC454620062007263020171016333CC00001B1B1B1B1A015F39 - Scaler: 52FF
2015.01.14 11:35:02 5: SMLUSB: SML Telegram found: 77070100020802FF0101621E52FF5600000000000177070100100700FF0101621B52FF55FFFFFFD50177078181C78205FF017262016501DE9C1201018302072CF3A1B5BB83264B3B58C71E967A792592C10FF5175CA357130A52846662A7843267B467B4DA77249C01E432F7373B0101016386D30076070009054CC454620062007263020171016333CC00001B1B1B1B1A015F39 - Scaler: 52FF
2015.01.14 11:35:02 5: SMLUSB: SML Telegram found: 77070100100700FF0101621B52FF55FFFFFFD50177078181C78205FF017262016501DE9C1201018302072CF3A1B5BB83264B3B58C71E967A792592C10FF5175CA357130A52846662A7843267B467B4DA77249C01E432F7373B0101016386D30076070009054CC454620062007263020171016333CC00001B1B1B1B1A015F39 - Scaler: 52FF
2015.01.14 11:35:02 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.01.14 11:35:02 5: SMLUSB: Setting state
2015.01.14 11:35:02 5: SMLUSB: Parsing ended
2015.01.14 11:35:02 5: Triggering Power (5 changes)
2015.01.14 11:35:02 5: Notify loop for Power Zählerstand-Bezug-Total: 2296.83
2015.01.14 11:35:02 5: statistics statisticsPower: DoStatistics.418 Assigned reading 'Zählerstand-Tarif-1-Bezug' from attribute 'deltaReadings' to statistic type 2.
2015.01.14 11:35:02 5: statistics statisticsPower: DoStatistics.418 Assigned reading 'Zählerstand-Tarif-1-Lieferung' from attribute 'deltaReadings' to statistic type 2.
2015.01.14 11:35:02 5: statistics statisticsPower: DoStatistics.418 Assigned reading 'Momentanleistung' from attribute 'minAvgMaxReadings' to statistic type 5.
2015.01.14 11:35:02 4: statistics statisticsPower: doStatisticMinMax.497 Calculating min/avg/max statistics for 'Power:Momentanleistung = 322122.54'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticMinMaxSingle.562 Set 'statMomentanleistungHour'='Min: 10.90 Avg: 214.12 Max: 322122.54'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticMinMaxSingle.582 Set '.Power:MomentanleistungHour'='Sum: 450929.9 Time: 2106 LastValue: 322122.54 LastTime: 1421231702 ShowDate: 0 DecPlaces: 2'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticMinMaxSingle.562 Set 'statMomentanleistungDay'='Min: 5.30 Avg: 299.03 Max: 322122.54'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticMinMaxSingle.582 Set '.Power:MomentanleistungDay'='Sum: 12470110.1 Time: 41702 LastValue: 322122.54 LastTime: 1421231702 ShowDate: 0 DecPlaces: 2'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticMinMaxSingle.562 Set 'statMomentanleistungMonth'='Min: 5.30 Avg: 280.86 Max: 322122.54 (since: 2015-01-13_22:22:09 )'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticMinMaxSingle.582 Set '.Power:MomentanleistungMonth'='Sum: 13359762.2 Time: 47567 LastValue: 322122.54 LastTime: 1421231702 ShowDate: 1 DecPlaces: 2'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticMinMaxSingle.562 Set 'statMomentanleistungYear'='Min: 5.30 Avg: 280.86 Max: 322122.54 (since: 2015-01-13_22:22:09 )'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticMinMaxSingle.582 Set '.Power:MomentanleistungYear'='Sum: 13358810.2 Time: 47564 LastValue: 322122.54 LastTime: 1421231702 ShowDate: 1 DecPlaces: 2'
2015.01.14 11:35:02 4: statistics statisticsPower: doStatisticDelta.674 Calculating delta statistics for 'Power:Zählerstand-Tarif-1-Bezug = 2296.83'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticDelta.760 Set '.Power:Zählerstand-Tarif-1-Bezug'='LastValue: 2296.83 ShowDate: 5 DecPlaces: 2'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticDelta.766 Set 'statZählerstand-Tarif-1-Bezug'='Hour: 0.10 Day: 3.41 Month: 3.41 Year: 3.41 (since: 2015-01-14 )'
2015.01.14 11:35:02 4: statistics statisticsPower: doStatisticDelta.674 Calculating delta statistics for 'Power:Zählerstand-Tarif-1-Lieferung = 902.49'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticDelta.760 Set '.Power:Zählerstand-Tarif-1-Lieferung'='LastValue: 902.49 ShowDate: 5 DecPlaces: 2'
2015.01.14 11:35:02 5: statistics statisticsPower: doStatisticDelta.766 Set 'statZählerstand-Tarif-1-Lieferung'='Hour: 0.00 Day: 0.00 Month: 0.00 Year: 0.00 (since: 2015-01-14 )'
2015.01.14 11:35:02 5: Triggering statisticsPower (1 changes)
2015.01.14 11:35:02 5: Notify loop for statisticsPower Updated stats for: Power
2015.01.14 11:35:02 5: statistics statisticsPower: Notify.253 Notifications of myself received.
2015.01.14 11:35:02 4: eventTypes: statistics statisticsPower Updated stats for: Power -> Updated stats for: Power
2015.01.14 11:35:02 4: eventTypes: statistics statisticsPower state: Updated stats for: Power -> state: Updated stats for: Power
2015.01.14 11:35:02 5: statistics statisticsPower: Notify.276 Notification of 'Power' received. Update statistics.
2015.01.14 11:35:02 4: eventTypes: SMLUSB Power Zählerstand-Bezug-Total: 2296.83 -> Zählerstand-Bezug-Total: .*
2015.01.14 11:35:03 4: eventTypes: SMLUSB Power Zählerstand-Lieferung-Total: 902.49 -> Zählerstand-Lieferung-Total: .*
2015.01.14 11:35:03 4: eventTypes: SMLUSB Power Zählerstand-Tarif-1-Bezug: 2296.83 -> Zählerstand-Tarif.*-Bezug: .*
2015.01.14 11:35:03 4: eventTypes: SMLUSB Power Zählerstand-Tarif-1-Lieferung: 902.49 -> Zählerstand-Tarif.*-Lieferung: .*
2015.01.14 11:35:03 4: eventTypes: SMLUSB Power Momentanleistung: 322122.54 -> Momentanleistung: .*
2015.01.14 11:35:03 4: eventTypes: SMLUSB Power statZählerstand-Tarif-1-Bezug: Hour: 0.10 Day: 3.41 Month: 3.41 Year: 3.41 (since: 2015-01-14 ) -> statZählerstand-Tarif.*-Bezug: Hour: .* Day: .* Month: .* Year: .* (since: .*.*.* )
2015.01.14 11:35:03 4: eventTypes: SMLUSB Power statZählerstand-Tarif-1-Lieferung: Hour: 0.00 Day: 0.00 Month: 0.00 Year: 0.00 (since: 2015-01-14 ) -> statZählerstand-Tarif.*-Lieferung: Hour: .* Day: .* Month: .* Year: .* (since: .*.*.* )
2015.01.14 11:35:03 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2015.01.14 11:35:07 5: SMLUSB: End of SML found. Looking for a beginning.
2015.01.14 11:35:07 5: SMLUSB: Started parsing
2015.01.14 11:35:07 5: SMLUSB: SML Telegram found: 77070100010800FF6401018001621E52FF5600015E780A0177070100020800FF6401018001621E52FF56000089B58D0177070100010801FF0101621E52FF5600015E780A0177070100020801FF0101621E52FF56000089B58D0177070100010802FF0101621E52FF5600000000000177070100020802FF0101621E52FF5600000000000177070100100700FF0101621B52FF55FFFFFFB20177078181C78205FF017262016501DE9C1701018302072CF3A1B5BB83264B3B58C71E967A792592C10FF5175CA357130A52846662A7843267B467B4DA77249C01E432F7373B0101016324890076070009054CC45A6200620072630201710163EE8500001B1B1B1B1A015779 - Scaler: 52FF
Was mit noch aufgefallen ist: wenn mal ein Ausreißér kommt, folgen i.d.R: gleiche mehrere Andere.
Gruß
fdisk
Hi,
ich habe SMLUSB heute auf meinem Mac zum Laufen bekommen, genial. Werte kommen an, Logfile und Plots funktionieren auch. Jetzt eine banale Frage: wie bekomme ich das Reading "Zählerstand-Bezug-Total" in einen Dummy, so dass ich ihn anzeigen kann? Drei Dummies habe ich dazu angelegt, aber ich frage mich gerade, wie ich das Reading aus dem SMLUSB-Device in diesen Dummy zur Darstellung bekomme.
Gruß,
Sascha
Dafür musst du ein notify verwenden. Mit $EVENT oder $EVPART musst mal in die commandref oder in das AnfängerPDF schauen.
Danke, hab's hinbekommen!
...
define ZaehlerWP_Total dummy
define setze_ZaehlerWP_Total notify ZaehlerWP set ZaehlerWP_Total $EVTPART1
...
Grüße,
Sascha
Hi fdisk,
ich habe aus deinen Logs den folgenden Fehlerhaften Eintrag extrahiert:
77070100100700FF 0101 621B 52FF 55 FFFFFFD501 Momentanleistung : 322122542.90 W
Dabei ist FFFFFFD501 der Wert für die Momentanleistung als signed 32 bit integer. Und dabei habe ich einen Fehler in der Funktion hexstr_to_signed32int entdeckt.
sub hexstr_to_signed32int {
my ($hexstr) = @_;
die "Invalid hex string: $hexstr"
if $hexstr !~ /^[0-9A-Fa-f]{1,8}$/;
my $num = hex($hexstr);
return $num >> 31 ? $num - 2 ** [b]32[/b] : $num;
}
Ich habe den Code im Git nochmal aktualisiert. Kannst Du es damit bitte einmal testen? Allerdings übernehme ich keine garantie, dass es funktioniert. Ich komme aktuell nicht an mein FHEM heran, da ich unterwegs bin und mein Internet zuhause (VPN) nicht geht. Daher kann ich es gerade selbst nicht testen.
MfG
Matthias
Hallo,
nach der SML Beschreibung von der von mir schon mal angegebenen Adresse:
http://www.itrona.ch/downloads.html (http://www.itrona.ch/downloads.html)
würde ich das so interpretieren:
8.32 Wirkleistung Total
OBIS Kennzahl = 1-0:16.7.0*255 -> OBIS Kennzahl in HEX: 01 00 10 07 00 FF
77 | valListEntry (sequence)
07 | objName (TL[1] + octet_string[6])
01 00 10 07 00 FF | objName 1-0:16.7.0*255
01 | status = not set
01 | valTime = not set
62 | unit (TL[1] + unsigned[1])
1B | unit = W
52 | scaler (TL[1] + integer[8])
FF | scaler = -1
55 | value (TL[1] + integer[32])
FF FF FF D5 | value -> FF FF FF D5h -> -43 W
01 | valueSignature = not set
Ob der Faktor dann noch in die Berechnung eingehen muss, also -43 W * -1, ist mir allerdings auch nicht ganz klar.
Der Faktor ist scaler = -1 entspricht *10^-1 = /10 also -4,3W.
Gruß Frieder
@matzefisi: Läuft jetzt seit über 24h und bisher keine Ausreißer! Danke für die schnelle Hilfe!
Hallo zusammen,
als Quereinsteiger in fhem habe ich eine Frage:
Ich habe einen IR Lesekopf aus dem VZ Forum und diesen mit einer kostenpflichtigen Software (Solarview) auch am laufen.
Nun wollte ich auf fhem umsteigen und habe es auf meinem Raspi auch schnell installiert bekommen.
Danach habe ich Dein Skript herunter geladen und in den FHEM Ordner gepackt, alles wunderbar.
Define (wie in Deiner Anleitung) ausgeführt und auch das Attribut gesetzt. Passt. Mein IR Kopf hängt an /dev/ttyUSB0
Jetzt meine Frage:
Im Log sehe ich folgende Zeilen:
2015.01.23 20:44:07 1: Including fhem.cfg
2015.01.23 20:44:08 3: telnetPort: port 7072 opened
2015.01.23 20:44:10 3: WEB: port 8083 opened
2015.01.23 20:44:10 3: WEBphone: port 8084 opened
2015.01.23 20:44:10 3: WEBtablet: port 8085 opened
2015.01.23 20:44:10 2: eventTypes: loaded 2 events from ./log/eventTypes.txt
2015.01.23 20:44:11 3: Opening TCM_ESP2_0 device /dev/ttyUSB0
2015.01.23 20:44:11 3: Setting TCM_ESP2_0 baudrate to 9600
2015.01.23 20:44:11 3: TCM_ESP2_0 device opened
2015.01.23 20:44:11 3: Opening stromzaehler device /dev/ttyUSB0
2015.01.23 20:44:11 3: Setting stromzaehler baudrate to 9600
2015.01.23 20:44:11 3: stromzaehler device opened
Danach kommt irgendwann:
2015.01.23 20:44:59 1: /dev/ttyUSB0 disconnected, waiting to reappear (TCM_ESP2_0)
2015.01.23 20:44:59 3: Setting TCM_ESP2_0 baudrate to 9600
TCM_ESP2_0 habe ich nicht definiert, da ich keinen CUL oder sowas angeschlossen habe - am Raspi hängt lediglich der IR Kopf am USB
Was mache ich falsch?
Vielen Dank für eure Hilfe zu dieser bestimmt dämlichen Frage...
Gruß
Heiko
Da hab ich wohl zu schnell "geschossen" ;o)
Scheinbar wurde TCM_ESP2_0 automatisch konfiguriert - zumindest stand es in der fhem.cfg drin
define TCM_ESP2_0 TCM ESP2 /dev/ttyUSB0@9600
Wenn Beide auf ttyUSB0 liegen ist es ja klar das es nicht funzt.
Ich hatte eine anleitung gefunden über die Seriennummer des USB Geräts einen eindeutigen Namen über udev zuzuweisen, das hat leider nicht geklappt, an der Stelle werd ich dann nochmal weiter suchen, es soll ja nicht das einzige USB gerät bleiben. Hat jemand einen Tipp wie das auf Raspbian eingerichtet wird?
So dann suche ich jetzt erstmal wie man einen Graphen aus den Werten generiert - (bekommt man das Sonderzeichen im "Zähler" eigentlich weg?)
Sorry das ich die Anfängerfrage hier gestellt habe.
VG
Heiko
Zitat von: fhem-raspi-newbie am 24 Januar 2015, 08:21:40
(bekommt man das Sonderzeichen im "Zähler" eigentlich weg?)
Ich habe die Möglichkeiten für den Graphen gefunden ;o) Das Logfile ist eingerichtet und sammelt auch ordentlich die Werte
2015-01-24_09:47:28 stromzaehler Zählerstand-Bezug-Total: 972.59
2015-01-24_09:47:28 stromzaehler Zählerstand-Tarif-1-Bezug: 971.59
2015-01-24_09:47:28 stromzaehler Zählerstand-Tarif-2-Bezug: 1000.00
2015-01-24_09:47:28 stromzaehler Zählerstand-Lieferung-Total: 3946.47
2015-01-24_09:47:28 stromzaehler Zählerstand-Tarif-1-Lieferung: 3945.47
2015-01-24_09:47:28 stromzaehler Zählerstand-Tarif-2-Lieferung: 1000.00
2015-01-24_09:47:28 stromzaehler Momentanleistung: 568.00
Leider schaffe ich es nur eine ordentliche Anzeige für die Momentanleistung hin zu bekommen.
Auf der SVG Seite sieht man:
2015-01-24_09:48:32 stromzaehler Z�hlerstand-Bezug-Total: 972.60
2015-01-24_09:48:32 stromzaehler Z�hlerstand-Lieferung-Total: 3946.47
2015-01-24_09:48:32 stromzaehler Z�hlerstand-Tarif-1-Bezug: 971.60 Ich kann dann zwar eine dieser Zeilen als Datenquelle auswählen, bekomme im Plot aber immer alle Werte, auch die der anderen Zeilen, geplottet.
Meiner Vermutung nach liegt das an dem Sonderzeichen... oder mache ich prinzipiell etwas falsch?
Beim Start von fhem bekomme ich auch folgende Ausgabe:
Subroutine SMLUSB_Initialize redefined at ./FHEM/70_SMLUSB.pm line 440, <$fh> line 35.
Subroutine SMLUSB_Define redefined at ./FHEM/70_SMLUSB.pm line 459, <$fh> line 35.
Subroutine SMLUSB_Ready redefined at ./FHEM/70_SMLUSB.pm line 493, <$fh> line 35.
Subroutine SMLUSB_SetState redefined at ./FHEM/70_SMLUSB.pm line 503, <$fh> line 35.
Subroutine SMLUSB_Clear redefined at ./FHEM/70_SMLUSB.pm line 510, <$fh> line 35.
Subroutine SMLUSB_DoInit redefined at ./FHEM/70_SMLUSB.pm line 529, <$fh> line 35.
Subroutine SMLUSB_Undef redefined at ./FHEM/70_SMLUSB.pm line 542, <$fh> line 35.
Subroutine SMLUSB_Read redefined at ./FHEM/70_SMLUSB.pm line 558, <$fh> line 35.
Subroutine SMLUSB_Shutdown redefined at ./FHEM/70_SMLUSB.pm line 606, <$fh> line 35.
Subroutine SMLUSB_Get redefined at ./FHEM/70_SMLUSB.pm line 615, <$fh> line 35.
Subroutine SMLUSB_Parse redefined at ./FHEM/70_SMLUSB.pm line 628, <$fh> line 35.
Subroutine hexstr_to_signed32int redefined at ./FHEM/70_SMLUSB.pm line 745, <$fh> line 35.
Subroutine SMLUSB_Disconnected redefined at ./FHEM/70_SMLUSB.pm line 756, <$fh> line 35.
Schau mal ins Wiki:
http://www.fhemwiki.de/wiki/LinuxDeviceNaming (http://www.fhemwiki.de/wiki/LinuxDeviceNaming)
Gruß Frieder
Zitat von: Omega-5 am 24 Januar 2015, 11:16:41
Schau mal ins Wiki:
http://www.fhemwiki.de/wiki/LinuxDeviceNaming (http://www.fhemwiki.de/wiki/LinuxDeviceNaming)
Gruß Frieder
Danke Frieder!
Das bezieht sich auf Suse - bei Raspian ist es anders.
Vielleicht finde ich noch was im Raspi Forum - schönen Abend!
btw: ich habe das script angepasst und aus Zähler - Zaehler gemacht. Danach funktioniert auch die Graphen ausgabe korrekt.
Hatte noch niemand das Problem?
Hallo zusammen,
ich nutze das SMLUSB-Modul zusammen mit einem USB-IR-Lese-Kopf des Volkszähler-Projekts, um die Daten eines 2-Wege-Stromzählers (MT681) auszulesen, der vom Netzanbieter Syna installiert wurde. Das SML-Protokoll liefert die Momentanleistung bei mir als Nettoleistung mit Vorzeichen (d.h. >0 ist Bezug, <0 ist Einspeisung). Als heute bei strahlendem Sonnenschein die Anzeige der Momentanleistung in FHEM nicht mehr aktualisiert wurde, habe ich mich auf die Suche nach der Ursache gemacht und folgendes Problem identifiziert.
Das SMLUSB-Modul geht davon aus, dass die Momentanleistung immer als positiver Wert geliefert wird und loggt die Daten nur, wenn der Wert positiv ist. Anschließend wird ggf. das Vorzeichen durch Multiplikation mit -1 adjustiert:
if (sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler) > 0) {
...
if ($direction eq "Einspeisung") {readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler*-1));}
Ich habe das jetzt bei mir wie folgt angepasst:
if (abs(sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler)) > 0) {
...
if ($direction eq "Einspeisung") {readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler));}
Der If-Else-Block ist in meinem Fall eigentlich ganz überflüssig, aber ich wollte den ursprünglichen Code nicht zu sehr verändern.
Ist die Vorzeichen-Problematik eine spezifische Eigenschaft meines Zählers resp. meines Netzanbieters? Falls nicht, dann wäre es hilfreich, das SMLUSB-Modul anzupassen.
Außerdem möchte ich anregen, die Bezeichner der Readings im Hinblick auf die nicht deutschsprachigen Nutzer ins Englische zu übersetzen oder zumindest die 'ä' in 'ae' umzuwandeln.
Hallo zusammen,
kann es sein, dass im Modul bei der Auswertung der Momentanleistung hier noch ein Dreher drinnen ist ??? ?
Ich habe einen EMH EDL21 eHz und bekommen lt. attr verbose 5 folgende Kennung im Logfile angezeigt:
'77070100010700FF' statt wie im original Modul '77070100100700FF' .
Gebe ich die geloggte Kennung ins Modul ein bekommen ich in den Readings nun auch die Momentanleistung angezeigt. :)
Des Weiteren bekomme ich noch diese Kennung '770700006001FF' , welche ich nicht zuordnen kann. :o
'770701000F0700FF' => 'Momentanleistung',
'77070100010700FF' => 'Momentanleistung',
'77070100100700FF' => 'Momentanleistung');
Mfg. Herti 8)
Hallo,
ich habe eine Siemens TD-3511. Damit dieser Daten ausgibt muss eine Startsequenz gesendet werden, dabei kann auch eine andere Baudrate als die vorgegebenen 300 eingestellt werden. Das Perlscript funktioniert auf meinem Raspberry Pi. Wie kann dieses jetzt ins Modul eingebaut werden ? Oder gibt es ein anderes Modul das dieses schon so macht ? Ich brauche da etwas Hilfe.
Es muß ja erst etwas gesendet werden und dann kann gelesen werden. Wie steuert man dieses. Als Anlage sende ich mal ein Log, das Perlscript und die Beschreibung vom TD-3511. Perlscript TD3511 noch geändert und neu angehangen.
Tschüs Jörg
Habe noch die Dateien angehangen.
Ich habe einen SML Stromzähler und lese ihn mit Hilfe eines co.met IR-Lesekopfes und einem COM1-Wandler aus (also LAN und nicht USB). Auf meinem Raspberry Pi 2 kann ich den Zählerstand aus dem SML-Telegramm extrahieren und in eine rrd-Datenbank schreiben und grafisch auswerten. Soweit ganz ok. Nun läuft aber auch fhem auf dem raspi und da würde ich das doch gerne integrieren. Ein Weg scheint mir über das fhem-SML-Modul zu gehen, das ich anpassen müsste, der andere über das fhem-Volkszähler-Modul, aber dazu müsste ich dann die Volkszähler-Middleware installieren (die scheint aber noch ein Problem mit dem neuen Raspi 2 zu haben und mein co.met COM habe ich dort auch nicht als Channel gefunden). Gibt es irgendwelche Ratschläge von Euch?
Hallo zusammen,
ich hab mir jetzt auch einen Sensor zusammengelötet und erstmal per dump der seriellen Schnittstelle geschaut, ob da halbwegs sinnvolle Daten rauskommen:passt!
Dann nix wie rein ins FHEM:
define Stromzaehler SMLUSB /dev/ttyAMA0@9600
(ja, ich benutze die interne UART vom Raspberry2)
Das Device wird auc angelegt und ich bekomme Readings für
- Momentanleistung
- Zählerstand-Bezug-Total
- Zählerstand-Tarif-1-Bezug
mit brauchbaren Werten.
Das wars dann aber auch: keine Updates mehr. Im Log (verbose 5) stapeln sich die:
2015.04.12 20:06:51 5: SMLUSB: End of SML found. Looking for a beginning.
2015.04.12 20:06:53 5: SMLUSB: End of SML found. Looking for a beginning.
2015.04.12 20:06:54 5: SMLUSB: End of SML found. Looking for a beginning.
2015.04.12 20:06:56 5: SMLUSB: End of SML found. Looking for a beginning.
2015.04.12 20:06:58 5: SMLUSB: End of SML found. Looking for a beginning.
2015.04.12 20:07:00 5: SMLUSB: End of SML found. Looking for a beginning.
Der erste erfolgreiche Versuch sah so aus:
2015.04.12 20:05:41 5: SMLUSB: End of SML found. Looking for a beginning.
2015.04.12 20:05:41 5: SMLUSB: Started parsing
2015.04.12 20:05:41 5: SMLUSB: SML Telegram found: 7777[gekürzt]1B1B - Scaler: 52FF
2015.04.12 20:05:41 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.04.12 20:05:41 5: SMLUSB: SML Telegram found: 77[gekürzt]1B - Scaler: 52FF
2015.04.12 20:05:41 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.04.12 20:05:41 5: SMLUSB: SML Telegram found: 7777[gekürzt]1B1B - Scaler: 52FF
2015.04.12 20:05:42 5: SMLUSB: SML Telegram found: 7777[gekürzt]1B1B - Scaler: 5200
2015.04.12 20:05:42 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.04.12 20:05:42 5: SMLUSB: Setting state
2015.04.12 20:05:42 5: SMLUSB: Parsing ended
2015.04.12 20:05:42 5: SMLUSB: Beginning of SML File found start parsing
Das tut auch nach jedem
shutdown restart
von FHEM exat 1x (reproduzierbar)
sieht für mich nach nem Bug aus.
Achja: Zähler ist ein ISKRA MT681 (EnBW)
Gruß Dek
Zitat von: tommi am 05 September 2014, 21:28:31
Moin,
leider funtkioniert dass bei mir nur sporadisch...oder besser gesagt nur nach Shutdown Restart. Ich benutze die einfache Schaltung mit einer Fotodiode und einem Wiederstand. Das ganze wird über ein EXsys 6030 seriel to Ethernet konvertiert und in Linux per Socat als Device eingebunden. Am Terminal sehe ich das SML-Telegramm schön, nur FHEM liest es nicht. Hab auch schon versucht die Zeiten zu verändern, oder den buffer von Socat zu verändern, aber er liest es nur am Anfang und im Logfile steht danach
weiß jemand Rat?? Die Werte (wenn sie denn gelesen werden) sind übrigens korrekt. Der Zähler ist ein EDL-300 Zweirichtungszähler.
Das scheint das selbe Thema wie bei mir zu sein
Hallo Dek,
mit der internen UART meines Raspberry B+ hab ich es auch nicht zum Laufen gebracht.
Hab mir dann einen PL2303 USB to serial controller gekauft.
Damit läuft es schon seit einigen Wochen.
Gruß
Runkel
Zitat von: hartenthaler am 12 April 2015, 00:14:59
aber dazu müsste ich dann die Volkszähler-Middleware installieren (die scheint aber noch ein Problem mit dem neuen Raspi 2 zu haben ...snip
Hi,
kannst du mal näher erklären was es da für Probleme geben soll?
Hier läuft die Volkszaehler-Software einwandfrei auf einem Raspi 2.
Gruß
Udo
Hallo zusammen,
Das scheint mir ein Timing-Problem zwischen Zähler und FHEM zu sein,
Ich hab mir die UART mal mitgetracet
(siehe Anhang)
Zwischen dem "1B1B1B1B01010101" und dem Start des eigentlichen Payloads liegen 200 ms.
Vermutlich füllt die Präambel den buffer, FHEM liest das aus und das Modul interpretiert es, findet logischerweise keinen Payload. Beim darauffolgenden Payload findet es keine Präambel, denn die ist ja schon ausgelesen...
Beim initalen Start liegt ein längerer String im Buffer, sodass das erstmalige auslesen klappt.
Das Timing ist vermutl. bei jedem Zähler anders.
Ist das Modul denn eigentlich noch "in Entwicklung"? Sodass es lohnt hier Beiträge einzustellen?
Ich bin dazu gerne bereit zu unterstützen. Sollte das ein totes Pferd sein, dann denke ich auch über den logger vom vz nach.
Grüße
Dek
Zitat von: Udo1 am 13 April 2015, 09:14:05
Hi,
kannst du mal näher erklären was es da für Probleme geben soll?
Hier läuft die Volkszaehler-Software einwandfrei auf einem Raspi 2.
Gruß
Udo
Hallo Udo,
ich habe auf der Seite http://wiki.volkszaehler.org/howto/raspberry_pi_image (http://wiki.volkszaehler.org/howto/raspberry_pi_image) den folgenden Hinweis gefunden:
- Aktuelles Image für RPi und RPi-B+ (nicht RPi 2) herunterladen von Image-Quelle
Allerdings könnte ich es auch ohne ein fertiges Volkszähler-Image versuchen und die Volkszähler-Middleware von Hand auf meinem laufenden System installieren, was ich aber nur tun würde, wenn ich dann den co.met COM1 einfach eingebunden bekomme. Gibt es eine passende Anleitung zur Installation von Volkszähler auf einem Raspi 2?
Gruß Hermann
Hi Dek,
ja das Modul befindet sich noch in Entwicklung und ist daher auch noch nicht in den Quellen von FHEM vorhanden. Leider habe ich zur Zeit andere Prioritäten und komme daher nicht mehr dazu an dem Modul weiterzuarbeiten. Ich kann hier gerne ab und an mal unterstützen aber die Entwicklung werde ich erstmal nicht vorran treiben. Problem an der Sache ist auch, dass ich kein Perl Experte bin (wie hier schon mehrfach erwähnt :-) ) Ich denke der Code kann auch noch deutlich optimiert werden.
Zu dem Problem mit dem RPi eigenem UART kann ich leider auch nichts sagen, da ich den Lesekopf vom Udo verwenden und der hat ja nen eigenen onboard soweit ich weiß.
Mfg
Matthias
Zitat von: hartenthaler
Hallo Udo,
ich habe auf der Seite http://wiki.volkszaehler.org/howto/raspberry_pi_image (http://wiki.volkszaehler.org/howto/raspberry_pi_image) den folgenden Hinweis gefunden:
- Aktuelles Image für RPi und RPi-B+ (nicht RPi 2) herunterladen von Image-Quelle
Richtig. Der Hinweis ist deshalb, weil dieses Image noch mit dem alten Raspbian erstellt wurde. Das läuft nicht auf dem RPi 2.
Das hat aber nichts mit Problemen der VZ-Software mit dem RPi2 zu tun, sondern es ist schlicht noch kein fertiges Image mit dem neuen Raspbian für den RPi 2 erstellt worden.
Die Anleitung, aus der du den Link hast, gilt grundsätzlich auch für den RPi 2. Nur muss die VZ-Software per Hand installiert werden. Dazu gibt es aber auch Wiki-Seiten:
http://wiki.volkszaehler.org/software/controller/vzlogger/installation_cpp-version
http://wiki.volkszaehler.org/software/middleware/installation
Zitat von: hartenthaler
....wenn ich dann den co.met COM1 einfach eingebunden bekomme.
Der co.met sendet vor den eigentlichen Zählerdaten noch andere Informationen. Siehe http://www.photovoltaikforum.com/volkszaehler-org-f131/volkszaehler-mit-co-met-sml-smart-meter-gateway-co-t96749.html
Bin mir nicht sicher ob vzlogger damit umgehen kann.
Gruß
Udo
Mit dem SMLUSB Modul habe ich versucht über einen USB IR Kopf (vom Volkszählerprojekt, Udo) einen Iskra MT372 Stromzähler auszulesen. (Raspi B+).
Keine Reaktion.
Mit einem modifizierten Pythonskript als Testskript von
http://forum.fhem.de/index.php?topic=22632.0
bzw.
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/iskra_mt372
konnten dann die Daten geloggt werden.
Angepasst werden musste:
- Request Message mit NUL verlängert
- erstes empfangene Zeichen ist / und nicht STX
- 7E1-300; schnellere Baudrate ist mir nicht gelungen
Hat jemand eine Idee, wie ich mit diesen Fakten das SMLUSB Modul zum Reden
bringen kann ??
Danke für gute Inputs
Strippo
Hallo,
ich habe einen TD-3511 von Siemens. Das Perlscript von VZ habe ich etwas angepaßt, so das sich auch eine andere Baudrate einstellen läßt. siehe hier (http://forum.fhem.de/index.php/topic,14117.msg284254.html#msg284254).
Aufruf:
./td3511.pm -b 9600 oder -b 19200.
Auf meinem Raspi hat es funktioniert. Damit der TD351x etwas sendet muß dieser erst eine Sequenz gesendet bekommen. Leider bin ich noch nicht durchgestiegen wie man dieses mit einem Modul in fhem macht. ;-(
Jörg
ZitatDer co.met sendet vor den eigentlichen Zählerdaten noch andere Informationen. Siehe http://www.photovoltaikforum.com/volkszaehler-org-f131/volkszaehler-mit-co-met-sml-smart-meter-gateway-co-t96749.html
Bin mir nicht sicher ob vzlogger damit umgehen kann.
Nun laufen vzlogger und die Volkszaehler Middleware auf meinem Raspberry 2. Der vzlogger meldet, dass er mtr0 und chn0 korrekt eingerichtet hat, aber dann passiert nichts weiter. Der vzlogger kommt mit den Daten vom co.met also nicht zurecht. Auf bash-Ebene konnte ich die Daten vom co.met aber auswerten. Also sollte es möglich sein irgendwo in vzlogger etwas anzupassen. Aber wo?
Zitat von: hartenthaler am 21 April 2015, 23:27:37
Also sollte es möglich sein irgendwo in vzlogger etwas anzupassen. Aber wo?
Frag dazu mal auf der Mailing-Liste von volkszaehler.org nach. Da lesen auch die Entwickler von vzlogger mit.
http://wiki.volkszaehler.org/contact
Gruß
Udo
Hallo Dek, matzefisi und community,
ich habe aktuell das gleiche Problem wie Dek schon beschrieben hat. Abhilfe schafft, wenn man fhem alle +3600 sek neu-starten lässt. Aber das ist ja keine schöne Lösung.
Daher ist meine Frage an Dek und andere, die das gleiche Problem hatten: wie habt ihr es gelöst?
Oder besteht die Möglichkeit, dass der Fehler durch Änderungen am Modul der Fehler beseitigt werden kann.
Ich stehe gerne zum Testen bereit. Nutze als Sensor eine IR-Diode mit Widerstand an ttyAMA0 um einen Hager 2-Richtungszähler auszulesen.
Gruß, Dank und schönen Feiertag,
zYloriC
Ich hab den Sensor immer noch am internen uart allerdings ohne das Modul. Ich hab ein perl Script das mir den Zähler stand mit einem cronjob in ein jsonfile schreibt, das ich per jsonmeter einlese. Funktioniert prächtig.
Grüsse Dek
Hallo,
ich verwende Udo´s USB IR Schreib-Lese-Kopf mit einem ED300L im Zweirichtungszählerbetrieb an einem RaspPI.
Ich bekomme nur hier und da mal einen Momentanleistungswert. Zudem habe ich das Gefühl, das der Wert für die Momentanleistung = Einspeisung-Bezug beinhaltet.
Hat jemand hierzu noch Erfahrungen?
Gruß,
Tobias
Update: So wie es aussieht gibt der Zähler nur Momentanleistungswerte aus solange die Solaranlage nicht einspeist. Kann dies jemand bestätigen? Oder habe ich am Zähler vielleicht etwas falsch eingestellt? In der zweiten Zeile steht ED21 1234 W also der Momentanleistungswert = Einspeisung abzüglich Bezug.
(http://www.schusterban.de/bildext/Stromzaehler.jpg)
Edit:
Hat sich erledigt. Folgendes aus Code entfernt:
if (sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler) > 0) {
# Output of results only if a meaningful value is found. Otherwise nothing happens.
if (sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler) > 0) {
Log3 $hash, 5, "SMLUSB: Reading BulkUpdate. Value > 0";
if ((substr($telegramm,0,16) eq "770701000F0700FF") || (substr($telegramm,0,16) eq "77070100100700FF")) {
Log3 $hash, 5, "SMLUSB: Setting state";
$hash->{STATE}="$unit: " . sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler) . " - $direction";
if ($direction eq "Einspeisung") {
readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler*-1));
}
else {
readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler));
}
}
else {
readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler));
}
}
}
else {
# If no known OBIS code can be found the telegramm will be ignored (or logged)
# print "No Obis Code found!: " . substr($telegramm,0,16) ."\n";
# The telegramm header needs at least to be removed from the smlfile to detect the next one.
$length_all=16;
}
Danke für die Hilfe an das Forum ;)
Hallo,
das Problem dass SMLUSB meist nur 1x nach Neustart von FHEM Werte ausliest hatte ich auch.
Ich habe daraufhin im Log gesehen dass nur immer zuverlässig das Ende einer Nachricht erkannt wird, aber keine Anfang. Nachdem ich dann die auskommentierte (?) Zeile in der Read Funktion wieder einkommentiert habe funktionierts aber wunderbar.
Vielleicht das als Hinweis, negative Seiteneffekte konnte ich keine erkennen...
m fg
Zitat von: Nemo0815 am 08 Juli 2015, 10:26:41
das Problem dass SMLUSB meist nur 1x nach Neustart von FHEM Werte ausliest hatte ich auch.
Ich habe daraufhin im Log gesehen dass nur immer zuverlässig das Ende einer Nachricht erkannt wird, aber keine Anfang. Nachdem ich dann die auskommentierte (?) Zeile in der Read Funktion wieder einkommentiert habe funktionierts aber wunderbar.
Vielleicht das als Hinweis, negative Seiteneffekte konnte ich keine erkennen...
Danke Nemo für den Hinweis. Ich werde das in jedem Fall heute Abend mal testen. Da ständige Fhem-An-Aus per Shutdown-Restart kann nicht gut sein ;)
Auch den Tipp aus ToSchu's Edit schaue ich mir mal Live an. Hatte auch das Gefühl, dass der Verbrauch nicht die "volle Wahrheit" enthält. Konnte selbst aber nichts finden.
Zwei Fragen noch. 1) Wenn ich "> 0" aus der IF-Abfrage entferne, kann ich dann nicht auch gleich die ganze IF-Abfrage/-Klammer herausnehmen?
Frage 2: Wird das SMLUSB-Modul mit fhem aktualisiert? Wie verhindere ich, dass meine Anpassungen mit den nächsten Update überschrieben werden?
Gruß und vielen Dank. zYloriC
Zitat von: zYloriC am 09 Juli 2015, 09:05:12
Danke Nemo für den Hinweis. Ich werde das in jedem Fall heute Abend mal testen. Da ständige Fhem-An-Aus per Shutdown-Restart kann nicht gut sein ;)
Auch den Tipp aus ToSchu's Edit schaue ich mir mal Live an. Hatte auch das Gefühl, dass der Verbrauch nicht die "volle Wahrheit" enthält. Konnte selbst aber nichts finden.
Zwei Fragen noch. 1) Wenn ich "> 0" aus der IF-Abfrage entferne, kann ich dann nicht auch gleich die ganze IF-Abfrage/-Klammer herausnehmen?
Frage 2: Wird das SMLUSB-Modul mit fhem aktualisiert? Wie verhindere ich, dass meine Anpassungen mit den nächsten Update überschrieben werden?
Gruß und vielen Dank. zYloriC
Hi,
nein wird nicht aktualisiert weils noch nicht im Repository ist.
Ich habe die Zeilen 186,187 einkommentiert:
#Log3 $hash, 5, "SMLUSB: No beginning of SML File found. Try it anyway, but no guarantee :) -> ". substr($hash->{helper}{PARTIAL},0,50);
#SMLUSB_Parse($hash, $hash->{helper}{PARTIAL} );
Hallo zusammen,
was könnt ihr nach heutigem Stand denn eher empfehlen? Das SML Modul oder aber das Volkszaehler Modul zu verwenden?
Ich hatte bisher 2 PIs im Einsatz, einen für FHEM und einen als VZLOGGER. Aber gerade der VZ PI ist gut ausgelastet. HAbe nun einen PI2 und bin am überlegen, ob ich darauf nun beides laufen lassen.
Dann halt entweder mit VZLOGGEr oder aber eben das SML Modul.
Was sind eure Erfahrungen? Sind die Performance Probleme noch vorhanden?
Danke & Gruß,
Tobi
Hallo zusammen,
ich verwende ebenfalls Udo's IR Kopf an meinem Zweiwegezähler mit SMLUSB.
Leider bekomme ich, sobald eingespeist wird keine vernünftigen Momentanwert mehr - er bleibt irgendwo zwischen -1 und -6 stehen.
Der Zähler zeigt aber korrekt an ob er einspeist oder Leistung bezieht.
Die Lösung mit dem löschen des "> 0 " und des einkommentieren der 2 Zeilen hat bei mir leider nichts gebracht.
Hat noch jemand eine Idee / Lösung?
Gruß
Heiko
Hallo Heiko,
es wäre ganz wichtig zu Wissen, welchen Zähler du im Einsatz hast. Die benutzten OBIS-Kennzahlen sind leider nicht bei jedem Hersteller gleich.
Gruß Frieder
Hallo!
Ich hätte mal eine Frage zur Anzeige in Fhem.
Die Gegebenheiten......
Die Werte der Zähler werden per USB-IR-Leseköpfen von UDO an meinen Linuxserver übermittelt.
Meine PV-Anlage ist über einen eHZ-HW8E angeschlossen und zeigt in der oberen Zeile den Gesamtzählerstand und in der 2.Zeile (Info) den aktuellen Wert der Anlage.
An meinem Bezugzähler eHZ-IW8E (wechselnd) den Gesamtzähler für den Bezug und Einspeisung.
Die 2. Zeile (E21) sollte die aktuelle Last (Bezug) sein.
Die Einbingung in Fhem habe ich laut Wiki gemacht.
Die Anzeige in Fhem bringt mir beim Wechselrichter nun einen aktuellen Wert der Leistung als Minuswert aber Zählerstand als positiver Wert. Für mich logisch wäre beide Werte positiv.
Beim Bezugszähler wird immer eine positiven Wert bei Momentanleistung und Gesamtzählerstand angezeigt.
Egal ob die Anlage mehr liefert als verbraucht wird.
Wär es nicht "richtiger" positive Momentanleistung = Verbrauchslast und negative Momentanleistung = Einspeisung?
Kann mir das einer erklären ::)
Ich findes es so unmöglich Werte zu errechnen ;D
Anbei 4 Pics 8)
Hallo zusammen,
ich habe gesehen, das ich bei meiner Momentanleistung als niedrigsten Wert immer "-6.50" angezeigt bekomme. Ich habe aktuell Zeile 300 und 186f auskommentiert.
Wir haben eine PV-Anlage und die -6,50 werden z.B. angezeigt, wenn gerade etwa 400W eingespeist werden.
Habt ihr eine Idee, woran es liegen kann?
PS: ist geplant, das Modul offiziell in fhem einzufügen? Viele Grüße!!
Hallo zusammen,
leider habe ich momentan absolut keine Zeit an dem Modul weiter zu arbeiten. Wie ich schon mal geschrieben habe, wird das SML Protokoll noch nicht 100% geparst und so können die von Euch beschriebenen Probleme noch auftreten.
Also falls jemand sich mit Perl auskennt und an dem Modul weiterarbeiten möchte, wäre ich sehr dankbar.
Generell aber schon mal: Für eine Analyse ist wirklich der Zählertyp wichtig und falls möglich eine Aufzeichnung eines oder mehrerer SML Pakete (mit einem Terminalprogramm machbar) Ein Paket startet typischerweise mit 1B1B1B..... (http://wiki.volkszaehler.org/software/sml#beispiel_1emh_ed300l)
MfG
Matthias
Hi!
Zählertyp steht da und wenn du willst schick ich dir auch die Ausgabe dazu.
Aber bringt das was, wenn du keine Zeit hast?
Hi Odie,
stimmt die Zählertypen stehen da.
Bei Dir benötige ich auch nicht die Roh-Daten da die Werte an sich ja stimmen.
Ich hatte bei Einspeisung ein Minus gewählt, da bei mir aus dem Haus ja Strom abfließt. Ursprüglich wollte ich damit gegen die Werte von meinem Wechselrichter rechnen, das hat aber noch nicht so ganz funktioniert.
Falls Du es ändern möchtest, müsstest Du nur in Zeile 307 das *-1 hinter der Variablen scaler entfernen.
Also anstatt:
readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler*-1));
readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler));
Und das ganze müsstes Du dann bei Zeile 310 entsprechend wieder hinzufügen.
Ich hoffe das hilft Dir etwas weiter.
MfG
Matthias
SUPER HINWEIS :)
Ich werde es übers Weekend testen.
Danke dir ganz herzlich :)
Hallo matzefisi,
das klingt spannend. Wobei deine Erklärung eher für Odie ist, oder? Odie bekommt negative Momentanleistungen angezeigt?! Das klappt bei mir noch nicht.
Gerne liefere ich Zähler und ein paar Pakete heute abend nach.
viele Grüße, Florian
Hi zYloriC,
genau. Das war für Odie gedacht. Von dir benötige ich wirklich ein paar Pakete zur Analyse.
Mfg
Matthias
Hallo zusammen,
vielleicht kann mir hier jemand weiterhelfen...
Ich versuche seit mehreren Tagen meinen EMH-eHZ Stromzähler in Fhem auszuwerten. Da ich selbst nicht löten wollte, habe ich mir einen VOLTCRAFT RS-232 Schnittstellenadapter und einen USB - RS232 Konverter bestellt und an meinen RasberryPi angeschlossen. So wie ich die Aussagen hier im Forum verstanden habe, sollte diese Kombination funktionieren.
In Fhem habe ich den IR-Lesekopf wie folgt eingebunden:
define powerZaehler SMLUSB /dev/ttyUSB1@9600
attr powerZaehler event-min-interval .*:30
attr powerZaehler verbose 5
Im Log und in den Internals wird das Gerät auch als geöffnet angezeigt:
2015.10.11 08:16:20 3: Opening powerZaehler device /dev/ttyUSB1
2015.10.11 08:16:20 3: Setting powerZaehler serial parameters to 9600,8,N,1
2015.10.11 08:16:20 3: powerZaehler device opened
Leider bekomme ich überhaupt keine Readings angezeigt. Auch im Log finde ich keine weiteren Einträge zum Gerät. Es scheint, als wenn der Lesekopf keine SML-Datensätze empfängt.
Hat jemand vielleicht einen Hinweis für mich, woran dies liegen könnte und was ich als nächstes versuchen kann um meinen Zähler in Fhem einzubinden?
Hallo matzefisi!
Ich habe die 2 Zeilen abgeändert. Wechselrichter ist nun positiv und Lieferzähler hat einen Minuswert,
da der Überschuss an Strom eingespeist wird.
Zur Zeit sieht es gut aus. :)
Ich bin gespannt ob die Anzeige(n) heute abend auch passen.
Nochmals vielen Dank :D
@arktiseisbaer
Hast du mal versucht die Ausgabe an den Terminal zu leiten?
Schau dir dies mal an
http://www.gtkdb.de/index_7_2002.html
und
http://www.gtkdb.de/index_7_2064.html
Gruß
Odie
Gerade ausprobiert. Über das Terminal kommen leider auch keine Daten. Ich vermute schon fast, dass der USB-Serial-Adapter nicht mit dem Voltcraft Schnittstellenadapter funktioniert. Bei einem anderen Gerät mit serieller Schnittstelle funktioniert er mit dem Raspberry jedoch einwandfrei.
Zitat von: arktiseisbaer am 11 Oktober 2015, 09:45:42
2015.10.11 08:16:20 3: Setting powerZaehler serial parameters to 9600,8,N,1
Banale Frage: Bist Du sicher, dass das richtig ist?
Ich habe einen EMH-eHZ, der läuft mit: 9600, 7,Even,1.
Ich habe einen EMH eHZ-H. Die 9600 Baud, 8N1 sollten laut Volkszähler eigentlich stimmen.
Hi zusammen,
@Odie: Super. Gut dass es nur ne kleinigkeit war :)
@arktiseisbaer: Ich kann bestätigen, dass die Voltkraft Dinger mit meinem Modul nicht funktionieren. Ich habe mir vor 1-2 Jahre auch so einen gekauft und damit viel herumprobiert, aber letztendlich nie zum Funktionieren gebracht. Noch nicht einmal per Terminal. Daher habe ich mich auf die Zähler Köpfe vom Volkszähler Projekt verlassen.
MfG
Matthias
Hallo an alle,
ich habe auch einen USB Kopf an einem EHZ hängen, was über Monate gut funktioniert hat.
Aber ab ca. Anfang Oktober bekomme ich keine Daten mehr rein.
Über das Terminal sehe ich auch nichts mehr. Nach mehreren Neustarts kommt mal ein Wert aber dan nicht mehr.
Im Log steht nicht mehr als DISCONNECTED trotz Verbose 5.
Hat jemand einen Tip für mich, was das sein kann?
Viele Grüße
Fred
Zitat von: HotteFred am 17 Oktober 2015, 22:00:57
...
ich habe auch einen USB Kopf an einem EHZ hängen, was über Monate gut funktioniert hat.
Aber ab ca. Anfang Oktober bekomme ich keine Daten mehr rein.
....
Hallo Fred,
ich schaue mal in die Glaskugel ;-) und sehe nichts. Aber mal Spaß bei Seite. Um den Fehler einzugrenzen braucht man einige Angaben: was hst du für ein System, Linux, Raspberry Pi, Speicher voll, Updates gemacht, was läuft noch, Zählertyp, USB-Hub, Stromversorgung beim Raspberry Pi ....
Einige solcher Sachen kann man auch in die Signatur eintragen, dann kann unter Umständen schneller geholfen werden.
Tschüß Jörg.
Hi Fred,
evtl hat sich die USB Port zuordnung bei Dir geändert. Also nicht mehr /dev/usbTTY0 sondern 1.
Disconnected bedeutet auf jeden Fall dass das Modul nicht auf das USB Gerät zugreifen kann.
Mfg
Matthias
Hallo Jörg und Matthias,
ich habe natürlich wenig Infos zu bieten. Daher wäre die Glaskugel hier wirklich hilfreich ;)
Das ganze läuft bei mir auf einem Ubuntu 14.04. Ich patche regelmäßig sowohl das System wie auch fhem.
Es kommen halt keine Log Ausgaben.
Der USB Port hat sich nicht geändert.
Ich habe sowohl ttyUSB0 verwendet, als auch den kompletten Pfad. /dev/seriel/by-id.....
Nebenbei hängt noch ein 1Wire USB und ein luftqualitätssensor Modul daran.
Wie gesagt, hat sich nichts geändert.
Da ich einen signalduino auch nicht zum laufen bekomme, besorge ich mir jetzt mal einen aktiven USB Hub. Evtl. hilft mir das ja.
(Der signalduino hängt aber derzeit nicht dran).
Danke und Grüße
Fred
Habe auch ein Ubuntu 14.04 und mir ist aufgefallen, dass ich das gleiche Problem hab :(
Ständiger Wechsel von open auf disconnect im 10sec Takt.
Komisch ist nur, dass es bei meinen 2xUSB-IR und 2xJeelink
ist und nicht z.B. beim CUL. Geräteanschluss ist durch UDEV-Regelwerk immer gleich.
3 USB-Hubs incl anderem Kabel hab ich probiert,.. nix.
Dachte schon es wäre der USB-Bus des Servers aber sieht alles gut aus.
Hallo Odie,
danke, dein Tipp war Gold wert...
Zitat von: Odie am 18 Oktober 2015, 10:45:30
Habe auch ein Ubuntu 14.04 und mir ist aufgefallen, dass ich das gleiche Problem hab :(
Ständiger Wechsel von open auf disconnect im 10sec Takt.
Komisch ist nur, dass es bei meinen 2xUSB-IR und 2xJeelink
ist und nicht z.B. beim CUL. Geräteanschluss ist durch UDEV-Regelwerk immer gleich.
Hab etwas gesucht. Es gibt einen Bug im Kernel mit den Versionen (14.04) 3.13-0.64 und 3.13-0.65.
Nach dem letzten Update war ich auf der 3.13-0.65.
Ich bin testweise auf 3.16 gegangen und schon klappts auch wieder mit dem IR-Kopf.
Danke und Grüße
Fred
Hallo Matthias,
ich habe zwei Elster Wärmezähler F90S (http://www.elstermesstechnik.de/downloads/F90S_M_0901_0311.pdf (http://www.elstermesstechnik.de/downloads/F90S_M_0901_0311.pdf)) im Einsatz. Jeweils einen am Heizstrang für Erdgeschoss und Obergeschoss.
Dieser Wärmezähler hat ebenfalls eine optische IR-Schnittstelle und sollte daher prinzipiell auch von Deinem Modul ausgelesen werden können.
In dem entsprechendem Wiki-Eintrag (http://www.fhemwiki.de/wiki/SMLUSB (http://www.fhemwiki.de/wiki/SMLUSB)) sind allerdings nur Readings für Stromzähler aufgeführt.
Ist es möglich, das SMLUSB-Modul für (diesen) Wärmezähler zu erweitern? Ich würde selbstverständlich mit Tests und Logs unterstützen. Ggf. sollte dann auch ein neuer Thread aufgemacht werden.
Viele Grüße
Christoph
Zitat von: CQuadrat am 21 Oktober 2015, 12:52:16
...
ich habe zwei Elster Wärmezähler F90S (http://www.elstermesstechnik.de/downloads/F90S_M_0901_0311.pdf (http://www.elstermesstechnik.de/downloads/F90S_M_0901_0311.pdf)) im Einsatz.
...
Hallo Christoph,
vielleicht kannst du deine beiden Wärmezähler auch über den Impulsausgang (S0-Schnittstelle) auslesen. Liefert der Zähler noch andere Werte.
Es gibt ein ArduinoCouter-Modul was in FEHM eingebuden wird, die Impulse zählt und nach xZeit an FHEM übergibt.
Ich werde demnächst so meinen Gaszähler mitloggen, zur Zeit erfolgt es noch über die GPIO-Pins vom Raspberry Pi.
Jörg
Hallo,
ich habe einen Hager Zähler. Dieser sendet in D0-Format die Daten über die IR-Schnittstelle. Ich lese diese dort aus und habe direkt dort einen Ip-Com-Server installiert.
Über die Ip-Adresse des Com-Servers auf Port 5555 kommen diese Daten in Klartext an. Kann ich Das Modul so abändern, das nicht mehr ein USB-Device sondern eine IP-Adresse mit zugehörigem Port abgefragt wird?
Danke.
Gruß Andy
Zitat von: mproper23 am 21 Oktober 2015, 16:04:52
...
ich habe einen Hager Zähler. Dieser sendet in D0-Format die Daten über die IR-Schnittstelle. Ich lese diese dort aus und habe direkt dort einen Ip-Com-Server installiert.
Über die Ip-Adresse des Com-Servers auf Port 5555 kommen diese Daten in Klartext an.
..
Hallo Andy,
diese Sache könnte man gut mit HTTPMOD lösen. Schau mal hier: http://forum.fhem.de/index.php/topic,10303.msg343931.html#msg343931 oder hier http://forum.fhem.de/index.php/topic,32037.msg346415.html#msg346415.
Du kannst ja mal die Ausgabe hier anhängen.
Jörg
Hi CQuadrat,
solange diese Zähler SML sprechen baue ich das gerne ein. Ich kann mir das (und alle weiteren offenen Punkte) aber frühestens erst nächste Woche anschauen.
Guck doch mal bitte ob Du über ein Terminal schon mal eine Ausgabe bekommst, die Du hier posten kannst.
MfG
Matthias
Guten Abend matzefisi & alle anderen!
ich habe nun den SML-Textblock mal ausgelesen und angefügt. Zusatzinfo: mein Zweirichtungs-Zähler ist ein Hager EHZ363Z5
vielen Dank für eure Hilfe und Ideen, wie in der Anzeige für die Momentanleistung nicht nur den Verbrauch angezeigt, sondern auch den Wert für die Strom-Lieferung der PV-Anlage angezeigt bekomme.
Viele Grüße, zYloriC
1b1b1b1b01010101760900000000055bc4136201620072630101760101090000000001c9415d0b06484147010754ded5cf01016303a100760900000000055bc414620162007263070177010b06484147010754ded5cf070100620affff7262016502981d977a77078181c78203ff01010101044841470177070100000009ff010101010b06484147010754ded5cf0177070100010800ff628201621e52ff5502ab1b850177070100010801ff0101621e52ff5502aaf4750177070100010802ff0101621e52ff5327100177070100020800ff628201621e52ff55031feb190177070100020801ff0101621e52ff55031fc4090177070100020802ff0101621e52ff5327100177070100100700ff0101621b52005301ee0177078181c78205ff0101010183029b147c682819fb0365a1ac68a7238153b1332cb24645e0ca769e8ca72cac1603e84166642811060867cc46a9f87af959010101634ab700760900000000055bc41762016200726302017101633fb0001b1b1b1b1a0050791b1b1b1b01010101760900000000055bc4196201620072630101760101090000000001c9415f0b06484147010754ded5cf010163a76100760900000000055bc41a620162007263070177010b06484147010754ded5cf070100620affff7262016502981d997a77078181c78203ff01010101044841470177070100000009ff010101010b06484147010754ded5cf0177070100010800ff628201621e52ff5502ab1b870177070100010801ff0101621e52ff5502aaf4770177070100010802ff0101621e52ff5327100177070100020800ff628201621e52ff55031feb190177070100020801ff0101621e52ff55031fc4090177070100020802ff0101621e52ff5327100177070100100700ff0101621b52005301ed0177078181c78205ff0101010183029b147c682819fb0365a1ac68a7238153b1332cb24645e0ca769e8ca72cac1603e84166642811060867cc46a9f87af95901010163922400760900000000055bc41b6201620072630201710163c052001b1b1b1b1a00f15f1b1b1b1b01010101760900000000055bc41f6201620072630101760101090000000001c941610b06484147010754ded5cf0101631e1f00760900000000055bc420620162007263070177010b06484147010754ded5cf070100620affff7262016502981d9b7a77078181c78203ff01010101044841470177070100000009ff010101010b06484147010754ded5cf0177070100010800ff628201621e52ff5502ab1b8a0177070100010801ff0101621e52ff5502aaf47a0177070100010802ff0101621e52ff5327100177070100020800ff628201621e52ff55031feb190177070100020801ff0101621e52ff55031f
Hi zYloriC,
super. Das sieht gut aus. Wie oben schon weiter geschrieben bin ich diese Woche noch unterwegs. Ich kümmer mich aber direkt nächste Woche darum.
MfG
Matthias
Danke Matthias.
Ich versuche zwischenzeitlich noch etwas herum. Wenn du weitere Infos brauchst, sag gern Bescheid.
MfG, Florian
Hallo Jörg,
wenn ich die URL in meinem Browser aufrufe schreibt er das hier nach unten weg:
/HAG5eHZ010C_Mla1WA02
1-0:0.0.0*255(XXXXXXXXX)
1-0:1.8.0*255(021594.4613)
1-0:96.5.5*255(82)
0-0:96.1.255*255(0000115223)
1-0:32.7.0*255(231.64*V)
1-0:52.7.0*255(230.20*V)
1-0:72.7.0*255(229.50*V)
1-0:31.7.0*255(000.82*A)
1-0:51.7.0*255(000.57*A)
1-0:71.7.0*255(000.79*A)
1-0:21.7.0*255(+00096*W)
1-0:41.7.0*255(+00110*W)
1-0:61.7.0*255(-00069*W)
1-0:96.50.0*0(EE)
1-0:96.50.0*1(07CF)
1-0:96.50.0*2(14)
1-0:96.50.0*3(08)
1-0:96.50.0*4(21)
1-0:96.50.0*5(03)
1-0:96.50.0*6(003D381B1E0A37A16E00190300009F80)
1-0:96.50.0*7(00)
!
Da steht ja Pro Zeile in den klammern eine Info drin. ZBsp 1-0:1.8.0*255 sind 021594.4613 kWh.
Das sollte man doch jetzt per Regex rauslesen lassen oder?
Ich bekomm mit der HTTPMOD keine Daten, wie funktioniert das mit dem Regex? Aus der WIKI werd ich nicht schlau. TRIGGERTIME geht hoch.
Gruß Andy
Zitat von: pejonp am 21 Oktober 2015, 15:36:52
Hallo Christoph,
vielleicht kannst du deine beiden Wärmezähler auch über den Impulsausgang (S0-Schnittstelle) auslesen. Liefert der Zähler noch andere Werte.
Es gibt ein ArduinoCouter-Modul was in FEHM eingebuden wird, die Impulse zählt und nach xZeit an FHEM übergibt.
(...)
Ich kann leider keinen Impulsausgang an dem Zähler entdecken. Mir war das bisher auch immer zu unsicher, da ich die Befürchtung habe, dass mir Impulse durch die Lappen gehen.
Zitat von: matzefisi am 21 Oktober 2015, 16:53:50
Hi CQuadrat,
solange diese Zähler SML sprechen baue ich das gerne ein. Ich kann mir das (und alle weiteren offenen Punkte) aber frühestens erst nächste Woche anschauen.
Guck doch mal bitte ob Du über ein Terminal schon mal eine Ausgabe bekommst, die Du hier posten kannst.
MfG
Matthias
Ich habe mir mal einen IR-Tastenkopf bestellt. Wenn der da ist, werde ich mal etwas damit herumexperimentieren. Dann werde ich mich wieder hier melden.
Viele Grüße
Christoph
Hallo,
zum Sub-Thema Ubunut:
Zitat von: HotteFred am 19 Oktober 2015, 00:04:54
Hab etwas gesucht. Es gibt einen Bug im Kernel mit den Versionen (14.04) 3.13-0.64 und 3.13-0.65.
Nach dem letzten Update war ich auf der 3.13-0.65.
Mit den aktuellen Kernel 3.13.0-66 funktioniert alles wieder! Einfach mal updaten.
Gruß
Maik
Zitat von: mproper23 am 22 Oktober 2015, 13:51:49
.....
wenn ich die URL in meinem Browser aufrufe schreibt er das hier nach unten weg:
/HAG5eHZ010C_Mla1WA02
1-0:0.0.0*255(XXXXXXXXX)
1-0:1.8.0*255(021594.4613)
1-0:96.5.5*255(82)
0-0:96.1.255*255(0000115223)
1-0:32.7.0*255(231.64*V)
....
Hallo Andy,
versuch mal dieses hier. Für die weitere Verarbeitung oder Anzeige sind vorzeichenbehaftetet Werte nicht so günstig. Und führende Nullen auch nicht.
#HTTPMOD Test 1
define DataLogger HTTPMOD http://IP:5555/ 60
attr DataLogger reading01Name Wert_01
attr DataLogger reading01Regex 1-0:1.8.0\*255+\(+([\d.]+)
attr DataLogger reading02Name Wert_02
attr DataLogger reading02Regex 1-0:32.7.0\*255+\(+([\d.]+)
attr DataLogger reading03Name Wert_03
attr DataLogger reading03Regex 1-0:52.7.0\*255+\(+([\d.]+)
attr DataLogger reading04Name Wert_04
attr DataLogger reading04Regex 1-0:72.7.0\*255+\(+([\d.]+)
attr DataLogger reading05Name Wert_05
attr DataLogger reading05Regex 1-0:31.7.0\*255+\(+([\d.]+)
attr DataLogger reading06Name Wert_06
attr DataLogger reading06Regex 1-0:51.7.0\*255+\(+([\d.]+)
attr DataLogger reading07Name Wert_07
attr DataLogger reading07Regex 1-0:71.7.0\*255+\(+([\d.]+)
attr DataLogger reading08Name Wert_08
attr DataLogger reading08Regex 1-0:21.7.0\*255+\([\+\-0]+([\d.]+)
attr DataLogger reading09Name Wert_09
attr DataLogger reading09Regex 1-0:41.7.0\*255+\([\+\-0]+([\d.]+)
attr DataLogger reading10Name Wert_10
attr DataLogger reading10Regex 1-0:61.7.0\*255+\([\+\-0]+([\d.]+)
attr DataLogger reading11Name Wert_10_Vorzeichen
attr DataLogger reading11Regex 1-0:61.7.0\*255+\(+([\-\+])
attr DataLogger reading12Name Wert_08_Vorzeichen
attr DataLogger reading12Regex 1-0:21.7.0\*255+\(+([\-\+])
attr DataLogger reading13Name Wert_09_Vorzeichen
attr DataLogger reading13Regex 1-0:41.7.0\*255+\(+([\-\+])
attr DataLogger room DataLogger
attr DataLogger stateFormat {sprintf("Wert1: %.1f W, Wert2 %.1f V", ReadingsVal($name,"Wert_01",0), ReadingsVal($name,"Wert_02",0))}
attr DataLogger verbose 5
define FileLog_DataLogger FileLog ./log/DataLogger-%Y-%m.log DataLogger.*
attr FileLog_DataLogger logtype text
attr FileLog_DataLogger room DataLogger
Jörg
Guten Morgen Jörg,
Das sieht schonmal besser aus :-)
Im BUF stehen die Daten drin. Allerdings werden Sie noch nicht rausgelesen. Bei STATE stehen nur Fragezeichen.
Screenshot anbei
Gruß Andy
Hi Jörg,
Hi Andy,
dürfte ich Euch bitten dafür einen neuen Thread zu öffnen? HTTPMOD hat nicht viel mit dem SMLUSB Modul zu tun.
Danke
MfG
Matthias
Zitat von: mproper23 am 23 Oktober 2015, 09:08:50
....
Gruß Andy
Hallo kopiere einmal den ganzen Abschnitt in die fhem.cfg. Und verschiebe bitte deine Fragen in einen neuen Beitrag.
Jörg
Hi zusammen,
erstmal danke Andy und Jörg.
@zYloriC: Was ist jetzt nochmal bei dir genau das Fehlerbild? Läuft das Modul generell bei dir, fällt es ab und zu aus oder kommen gar keine Werte?
Was mir bei Deinen Beispielwerten aufgefallen ist, ist dass die Hexwerte klein geschrieben werden 1b1b1b. Bei allen anderen Zählern waren es immer Großbuchstaben 1B1B1B. Das kann aber auch mit der Terminalsoftware zu tun haben.
Nachdem ich deine Beispielwerte in Großbuchstaben umgewandelt habe, kamen in meinem Testprogramm zumindest ein paar Werte heraus:
Zählerstand Bezug Total 4476.81
Zählerstand Tarif 1 Bezug 4475.81
Zählerstand Tarif 2 Bezug 1000.00
Zählerstand Lieferung Total 5242.34
Zählerstand Tarif 1 Lieferung5241.34
Zählerstand Tarif 2 Lieferung1000.00
W: 493.00 - Bezug
Momentanleistung493.00
MfG
Matthias
Hey Matthias,
erst mal dank, dass du dich noch an mein Anliegen erinnert hast.
Ich bin mit dem Modul und meinem einfach gebauten Sensor (IR-Diode und Widerstand) sehr zufrieden. Er liefert richtige Daten für die Zählerstände Lieferung und Bezug meines Zweirichtungszählers. Auch die Momentanwerte für den Verbrauch, also positive Werte wenn etwa die Waschmaschine läuft sehen plausibel aus.
Das einzige Problem ist, dass die Momentanleistung bei Sonne, wenn die PV-Anlage produziert, dies nicht z.B. als negativen Wert anzeigt.
Die Info, dass gerade überschüssige Energie mit der PV-Anlage erzeugt wird, wäre für Graphen und als Trigger für DOIF-Schaltungen sehr hilfreich.
Wenn ich genau überlege, zeigt der Zähler auch keine negativen Werte an. Da wird wahrscheinlich das Problem genau liegen.
Angenommen ich habe eine Grund-Verbraucherlast von 500W und keine Sonne, dann zeigt der Zähler 500W an.
Wenn dann 300W Sonnenleistung hinzu kommt, zeigt der Zähler 200W (Verbrauch minus PV Strom) an. Das wird auch per SML weitergegeben.
Wenn die Sonne sich auf 800W verstärkt, dann zeigt der Zähler aber 300W an. Dies sind aber nicht 300W Verbrauch, sondern 300W Momentan-Ertrag.
Ist die Problematik verständlich? Gibt es eine Chance die Momentanleistung auch negativ werden zu lassen, wenn mehr Strom erzeugt als verbraucht wird?
Leider fällt bei der Nebelsuppe das Testen der PV schwer ;) aber es wäre toll, wenn ich bis zum Frühling auch Momentan-Lieferung angezeigt bekommen könnte.
Viele Grüße, Florian
Hallo zusammen,
vielleicht kann mir hier jemand helfen. Ich möchte gerne meinen Stromzähler MT681 EDL21/40 mit dem Modul SMLUSB und dem USB-Infrarot-Lesekopfes von Udo auslesen. Ich arbeite mit einem RPi 1, Modell B+ und bin unter Linux ein absoluter Neuling. Ich habe versucht mit winscp das Modul 70_SMLUSB.pm in das opt/fhem/FHEM Verzeichnis zu kopieren aber unter Fhem wird das Modul nicht erkannt. Gibt es eine Beschreibung bzw. kann mir da jemand helfen wie das ordnungsgemäß durchgeführt werden kann. Mit minicom habe ich folgende Daten ausgelesen:
0045400 1b 1b 1b 1b 01 01 01 01 76 05 00 2a 5c 5b 62 00
0045420 62 00 72 63 01 01 76 01 01 05 00 0e 49 1f 0b 09
0045440 01 49 53 4b 00 03 57 4c 0b 01 01 63 5a 56 00 76
0045460 05 00 2a 5c 5c 62 00 62 00 72 63 07 01 77 01 0b
0045500 09 01 49 53 4b 00 03 57 4c 0b 07 01 00 62 0a 7f
0045520 7f 72 62 01 65 00 18 19 69 7a 77 07 01 01 47 02
0045540 03 7f 01 01 01 01 04 49 53 4b 01 77 07 01 00 00
0045560 00 09 7f 01 01 01 01 0b 09 01 49 53 4b 00 03 57
0045600 4c 0b 01 77 07 01 00 01 08 00 7f 65 00 00 01 02
0045620 01 62 1e 52 7f 59 00 00 00 00 00 1f 69 6f 01 77
0045640 07 01 00 01 08 01 7f 01 01 62 1e 52 7f 59 00 00
Es wäre super wenn mir da jemand weiterhelfen könnte
Gruß Oswald
Hi Oswald,
im Prinzip hast Du damit dann schon alles nötige getan. Du könntest noch überprüfen, ob die Datei die richtigen Berechtigungen hast. Das kannst Du überprüfen, indem Du im Verzeichnis /ope/fhem/FHEM/ den Befehl:
ls -la
absetzt. Dann werden dir alle Dateien und deren Berechtigungen und deren Besitzer angezeigt.
z.B. so:
-rw-r-xr-x 1 fhem dialout 11020 Oct 26 20:11 70_SMLUSB.pm
Wenn die Berechtigungen korrekt sind sollte das Modul auch im FHEM Verfügbar sein.
Ich hoffe das hilft etwas weiter.
MfG
Matthias
Hallo Matthias,
Vielen Dank für die schnelle Info,ich werde es heute Abend gleich ausprobieren.
Gruß Oswald
Hallo Matthias,
hat alles funktioniert, mein Zähler lässt sich auslesen und die Werte stimmen auch mit den angezeigten überein, Dein Tipp war richtig und ich bedanke mich vielmals dafür.
MFG
Oswald
Hallo zusammen,
ich habe auch den USB Lesekopf von UDO und versuche nun schon seit 2 Wochen den bei mir ins laufen zu kriegen. Die og. Dateirechte habe ich geändert.
Ich muss dazusagen, daß an meinem Rasperry noch eine Wärmepumpe über USB hängt.
Folgendes sagt mein Logfile:
2015.11.12 10:52:45 3: telnetPort: port 7072 opened
2015.11.12 10:52:46 3: WEB: port 8083 opened
2015.11.12 10:52:46 3: WEBphone: port 8084 opened
2015.11.12 10:52:46 3: WEBtablet: port 8085 opened
2015.11.12 10:52:47 2: eventTypes: loaded 231 events from ./log/eventTypes.txt
2015.11.12 10:52:48 3: Opening Mythz device /dev/ttyUSB0
2015.11.12 10:52:48 3: Setting Mythz serial parameters to 115200,8,N,1
2015.11.12 10:52:48 3: Mythz device opened
2015.11.12 10:52:53 3: Opening HH device /dev/ttyUSB1
2015.11.12 10:52:53 3: Setting HH serial parameters to 9600,8,N,1
2015.11.12 10:52:53 3: HH device opened
2015.11.12 10:52:53 1: Including ./log/fhem.save
2015.11.12 10:52:54 1: usb create starting
2015.11.12 10:52:56 3: Probing CUL device /dev/ttyAMA0
2015.11.12 10:52:56 3: Can't open /dev/ttyAMA0: Permission denied
2015.11.12 10:52:56 1: usb create end
Kann mir bitte jemand einen Tipp geben?
Danke+Gruß
Tom
Hallo Tom
Schau mal hier http://forum.fhem.de/index.php/topic,24651.msg345909.html#msg345909
Vielleicht hilft es. Hier geht es allgemein um die USB Geräte.
Jörg
Hallo,
ich habe nun mit dem Befehl /dev/serial/by-id/gerätebezeichung die usb geräte definiert.
leider hat es nichts gebracht.
Leider bekomme ich immer noch die Fehlermeldung:
2015.11.13 08:04:20 3: WEB: port 8083 opened
2015.11.13 08:04:20 3: WEBphone: port 8084 opened
2015.11.13 08:04:20 3: WEBtablet: port 8085 opened
2015.11.13 08:04:21 2: eventTypes: loaded 232 events from ./log/eventTypes.txt
2015.11.13 08:04:22 3: Opening Mythz device /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
2015.11.13 08:04:22 3: Setting Mythz serial parameters to 115200,8,N,1
2015.11.13 08:04:22 3: Mythz device opened
2015.11.13 08:04:27 3: Opening HH device /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_00F2E6BF-if00-port0
2015.11.13 08:04:27 3: Setting HH serial parameters to 9600,8,N,1
2015.11.13 08:04:27 3: HH device opened
2015.11.13 08:04:27 1: Including ./log/fhem.save
2015.11.13 08:04:28 1: usb create starting
2015.11.13 08:04:30 3: Probing CUL device /dev/ttyAMA0
2015.11.13 08:04:30 3: Can't open /dev/ttyAMA0: Permission denied
2015.11.13 08:04:30 1: usb create end
Die Wärmepumpe (per USB angeschlossen) funktioniert einwandfrei. Wenn ich in fHem das hh-logfile aufmachen möchte gibt er mir folgende Fehlermeldung aus: 2015-11-12_21:45:13 HH DISCONNECTED
Woran könnte das liegen?????
Danke+Gruß
Thomas
Hallo Tom!
Ohne jetzt alles zu debuggen bzw. zu erfragen würde ich an deiner Stelle die Geräte neu einrichten.
USB-Leseköpfe abziehen danach alles was mit den Geräten zu tun hat in FHEM löschen und FHEM stoppen.
Schau welche Geräte du schon als ttyUSB hast. ls -l /devttyUSB*
Dann erst mal einen Lesekopf einstecken und schauen ob dieser gelistet ist; ls Befehl erneut eingeben.
Ggf. Rechte anpassen chown root:dialout /dev/ttyUSB*
FHEM starten /etc/init.d/fhem start
Den Lesekopf in FHEM neu definieren und schauen was passiert bzw. das Log sagt :-)
Ist alles gut, dann den 2. Lesekopf
ich hab mir die aktuelle aus dem git geholt, und einen ir-usb lesekopf von Udo.
die einbindung funktionierte, ganz simpel wie im wiki beschrieben.
nur habe ich festgestellt das bei mir die momentanleistung bei weiten nicht stimmt. denn da wird irgendwas aufaddiert und addiert usw..
zum zeitpunkt vom screen hat der zähler eine aktuellen bezug vom 534 watt gezeigt, stattdessen wird 1600 ihrgendwas gemeldet und steigend.
der gesammt bezug vom 40 kw passt denn der zähler ist neu eingesetzt.
Internals:
CHANGED
DEF /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_00F2F7F9-if00-port0@9600
DeviceName /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_00F2F7F9-if00-port0@9600
FD 64
NAME StromZaehler
NR 427
PARTIAL
STATE opened
TYPE SMLUSB
Readings:
2015-11-13 10:41:37 Momentanleistung 1627.61
2015-11-13 10:41:37 Zählerstand-Bezug-Total 40.42
2015-11-13 10:41:31 statMomentanleistungDay Min: 640.60 Avg: 1134.33 Max: 1627.45
2015-11-12 23:59:55 statMomentanleistungDayLast Min: 536.87 Avg: 589.01 Max: 640.60 (since: 2015-11-12_22:51:29 )
2015-11-13 10:41:31 statMomentanleistungHour Min: 1563.58 Avg: 1595.16 Max: 1627.45
2015-11-13 09:59:55 statMomentanleistungHourLast Min: 1471.37 Avg: 1516.99 Max: 1563.58
2015-11-13 10:41:31 statMomentanleistungMonth Min: 536.87 Avg: 1081.75 Max: 1627.45 (since: 2015-11-12_22:51:29 )
2015-11-13 10:41:31 statMomentanleistungYear Min: 536.87 Avg: 1081.73 Max: 1627.45 (since: 2015-11-12_22:51:29 )
2015-11-12 22:50:58 statStateDay opened 00:00:00 opened: 00:00:05 opened_Count 00:00:01 (since: 2015-11-12_22:50:53)
2015-11-12 22:50:58 statStateMonth opened 00:00:00 opened: 00:00:05 opened_Count 00:00:01 (since: 2015-11-12_22:50:53)
2015-11-12 22:50:58 statStateYear opened 00:00:00 opened: 00:00:05 opened_Count 00:00:01 (since: 2015-11-12_22:50:53)
2015-11-13 09:25:52 state opened
Fhem:
interfaces power
Helper:
PARTIAL 1B1B1B0101010176070008000F8493620062007263010176010107000800042C310B0901454D4800004FC951010163BDEE0076070008000F8494620062007263070177010B0901454D4800004FC951070100620AFFFF726201650004F85E7677078181C78203FF0101010104454D480177070100000000FF010101010E303130373130353232383838310177070100000001FF010101010F31454D48303030353232383838310177070100000009FF010101010B0901454D4800004FC9510177070100010800FF6400008001621E52FF560000062AED0177070100100700FF01726201650004F85E621B52FF55000002BD01010163697D0076070008000F84976200620072630201710163219200001B1B1B1B1A011616
_98_statistics statisticsPower
Attributes:
event-min-interval .*:30
group Stromzaehler
room Hauswirtschaftsraum
verbose 5
was mache ich da falsch ?
Hi BlackStone,
Du hast ja die Partial-Variable mitgeliefert, damit kann ich auf jeden Fall gut debuggen. Ich komme allerdings leider erst frühestens nächste Woche dazu. Ich melde mich dann wieder.
MfG
Matthias
kein Problem, hab vergessen bei zuschreiben das der Zähler ein ED300S ist.
Kleine Frage:
Mein Stromzähler gibt leider kein SML aus, sondern D0 (= ASCII-Text). Weiß Jemand, wie ich den Zähler mit dem Lesekopf von UDO (USB-Anschluss) auslesen und in eine FHEM Logdatei schreiben kann?
Hallo zusammen,
dank der Anleitungen hier im Forum habe ich SMLUSB Modul einen meine Zähler auslesen können.
Ich nutze die Köpfe von Udo.
Von dem 2. Zähler bekomme ich keine Daten.
Kann ich das in FHEM einstellen und das Modul 70_SMLUSB.pm zwei mal nutzen.
Zählerdaten:
EHZ361LAR
Herstellerangaben:
Einstellung: 9600 bd, Datenbit = 7, Parität = gerade, Stoppbits = 1, Flusssteuerung = kein
Im Fall des SML-Datentelegramms ist zur Interpretation der Daten ein Parser erforderlich und
die Einstellung ist: 9600 bd, Datenbit = 8, Parität = kein, Stoppbits = 1, Flusssteuerung = kein.
Ichfreue mich über eine Antwort von euch. Danke
Viele Grüße
Gerd
Hi!
Ich hab auch 2 Leseköpfe und habe am Modul nichts eingestell.
Ansonsten kann ich dir leider nicht weiterhelfen.
mehrere ir-köpfe zu nutzen sollte kein problem sein. einfach jeden für sich als eigenes gerät definieren. (mit vollen pfad)
Hallo willybauss,
falls dein d0-Zähler von SMLUSB nicht unterstütz wird, könntest Du den Umweg über das Modul VOLKSZAEHLER (http://forum.fhem.de/index.php/topic,12834.0.html)(vzlogger + VZ-middleware wird benötigt) oder das Modul VZLOGGER (http://forum.fhem.de/index.php/topic,40766.0.html)(nur vzlogger) nehmen.
Gruß
optimizer
Zitat von: optimizer am 15 November 2015, 21:04:18
... falls dein d0-Zähler von SMLUSB nicht unterstütz wird ...
[confused]
Wie jetzt - könnte er denn von SMLUSB unterstützt werden? Ich dachte das SMLUSB Modul versteht nur SML, nicht aber D0 ???
[/confused]
Zitat von: optimizer am 15 November 2015, 21:04:18
... könntest Du den Umweg über das Modul VOLKSZAEHLER (http://forum.fhem.de/index.php/topic,12834.0.html)(vzlogger + VZ-middleware wird benötigt) oder das Modul VZLOGGER (http://forum.fhem.de/index.php/topic,40766.0.html)(nur vzlogger) nehmen...
Hatte ich auch gedacht, aber das Erste, was mir in der Konfig ins Auge sprang, war
define <name> VZLOGGER <IP-Adresse von vzlogger> <Port> <Channel / UUID>
Wie kann ich einen Lesekopf mit USB-Anschluss mit einer IP-Adresse konfigurieren?
Wenn ich das richtig verstehe kann man vzlogger auf dem gleichen Rechner installieren auf dem auch FHEM läuft und die Daten über localhost an das Modul VZLOGGER übergeben. Schau doch mal ins Thema "neues Modul: VZLOGGER" http://forum.fhem.de/index.php/topic,40766.msg329889.html#msg329889. Habe ich im übrigen über die Suche mit "D0 Zähler" gefunden. ;)
Gruß Friedrich
OK, vzlogger und VZLOGGER sind also zwei unterschiedliche Dinge. Damit wird's zumindest etwas klarer. Aber eigentlich hatte ich auf eine Lösung gehofft, bei der ich direkt den Lesekopf auslesen und in die Logdatei schreiben kann, wie z.B.bei JSONMETER mit dem Youless LS110.
Eine weitere Software (vzlogger) und ein zusätzlicher http-Deamon klingt schon ein bisschen oversized für eine so überschaubare Aufgabe.
Danke für den zarten Hinweis, ich hätte ja mal die Suche benutzen können. 3 mal darfst Du raten, wo ich die oben zitierte Codezeile her habe ;) .
Ich bin nun auch nicht der FHEM-Experte, aber es gibt, glaube ich, die Möglichkeit Shell- und Perl-Scripte in FHEM einzubinden.
Welchen Zähler du im Einsatz hast weiß ich leider nicht. Hier gibt es ein Perscript für einen D0-Zähler von Landis & Gyr.
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/e110
Gruß Friedrich
hm, mittlerweile ist der integer übergelaufen, bei seiner hochzählerrei. ^^
hab extra nochmal den log gekillt, da ich das root system nu auf einem usb stick liegen hab, sd nur noch zum booten.
2015.11.20 20:01:05 1: PERL WARNING: Integer overflow in hexadecimal number at ./FHEM/70_SMLUSB.pm line 345.
2015.11.20 20:01:05 1: PERL WARNING: Hexadecimal number > 0xffffffff non-portable at ./FHEM/70_SMLUSB.pm line 345.
Internals:
CHANGED
DEF /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_00F2F7F9-if00-port0@9600
DeviceName /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_00F2F7F9-if00-port0@9600
FD 66
NAME StromZaehler
NR 427
PARTIAL
STATE opened
TYPE SMLUSB
Readings:
2015-11-20 20:05:54 Momentanleistung 1451465607937651134552866816.00
2015-11-20 20:05:54 Zählerstand-Bezug-Total 129.83
2015-11-20 20:05:42 statMomentanleistungDay Min: 507036392239041825734656.00 Avg: 465301498490062005510078464.00 Max: 1451094225925865561372229632.00
2015-11-20 00:00:08 statMomentanleistungDayLast Min: 2826858980913996890112.00 Avg: 1133823523449270924476416.00 Max: 4837804781947661771079680.00
2015-11-20 20:05:42 statMomentanleistungHour Min: 1328878595547416453546246144.00 Avg: 1381221990499865233094344704.00 Max: 1451094225925865561372229632.00
2015-11-20 18:59:55 statMomentanleistungHourLast Min: 1217433043510750067470368768.00 Avg: 1272728816183587867614773248.00 Max: 1328878595547416453546246144.00
2015-11-20 20:05:42 statMomentanleistungMonth Min: 166.35 Avg: 49547531131221925139841024.00 Max: 1451094225925865561372229632.00 (since: 2015-11-12_22:51:29 )
2015-11-20 20:05:42 statMomentanleistungYear Min: 166.35 Avg: 49548075190304484372774912.00 Max: 1451094225925865561372229632.00 (since: 2015-11-12_22:51:29 )
2015-11-12 22:50:58 statStateDay opened 00:00:00 opened: 00:00:05 opened_Count 00:00:01 (since: 2015-11-12_22:50:53)
2015-11-12 22:50:58 statStateMonth opened 00:00:00 opened: 00:00:05 opened_Count 00:00:01 (since: 2015-11-12_22:50:53)
2015-11-12 22:50:58 statStateYear opened 00:00:00 opened: 00:00:05 opened_Count 00:00:01 (since: 2015-11-12_22:50:53)
2015-11-20 20:00:50 state opened
Fhem:
interfaces power
Helper:
PARTIAL 1B1B1B0101010176070008002F0D816200620072630101760101070008000EAF2B0B0901454D4800004FC951010163522A0076070008002F0D82620062007263070177010B0901454D4800004FC951070100620AFFFF72620165000EB7397677078181C78203FF0101010104454D480177070100000000FF010101010E303130373130353232383838310177070100000001FF010101010F31454D48303030353232383838310177070100000009FF010101010B0901454D4800004FC9510177070100010800FF6400008201621E52FF56000013CF9B0177070100100700FF0172620165000EB739621B52FF55000013F50101016307C50076070008002F0D8562006200726302017101639FDC00001B1B1B1B1A010395
_98_statistics statisticsPower
Attributes:
event-min-interval .*:30
group Stromzaehler
room Hauswirtschaftsraum
verbose 0
denke mal da ist was ganz und gar nicht koscher. ^^
edit:/ mir ist grade was komisches aufgefallen. oO
Internals:
CHANGED
DEF /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_00F2F7F9-if00-port0@9600
DeviceName /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_00F2F7F9-if00-port0@9600
FD 66
NAME StromZaehler
NR 427
PARTIAL
STATE opened
TYPE SMLUSB
Readings:
2015-11-20 20:10:35 Momentanleistung 1460162136713631003991605248.00
2015-11-20 20:10:35 Zählerstand-Bezug-Total 129.87
2015-11-20 20:10:17 statMomentanleistungDay Min: 507036392239041825734656.00 Avg: 469049450812847970609790976.00 Max: 1459574115194970444402786304.00
2015-11-20 00:00:08 statMomentanleistungDayLast Min: 2826858980913996890112.00 Avg: 1133823523449270924476416.00 Max: 4837804781947661771079680.00
2015-11-20 20:10:17 statMomentanleistungHour Min: 1328878595547416453546246144.00 Avg: 1386019050412255769314459648.00 Max: 1459574115194970444402786304.00
2015-11-20 18:59:55 statMomentanleistungHourLast Min: 1217433043510750067470368768.00 Avg: 1272728816183587867614773248.00 Max: 1328878595547416453546246144.00
2015-11-20 20:10:17 statMomentanleistungMonth Min: 166.35 Avg: 50114595827100704367968256.00 Max: 1459574115194970444402786304.00 (since: 2015-11-12_22:51:29 )
2015-11-20 20:10:17 statMomentanleistungYear Min: 166.35 Avg: 50115142994921678102855680.00 Max: 1459574115194970444402786304.00 (since: 2015-11-12_22:51:29 )
2015-11-12 22:50:58 statStateDay opened 00:00:00 opened: 00:00:05 opened_Count 00:00:01 (since: 2015-11-12_22:50:53)
2015-11-12 22:50:58 statStateMonth opened 00:00:00 opened: 00:00:05 opened_Count 00:00:01 (since: 2015-11-12_22:50:53)
2015-11-12 22:50:58 statStateYear opened 00:00:00 opened: 00:00:05 opened_Count 00:00:01 (since: 2015-11-12_22:50:53)
2015-11-20 20:00:50 state opened
Fhem:
interfaces power
Helper:
PARTIAL 373130353232383838310177070100000001FF010101010F31454D48303030353232383838310177070100000009FF010101010B0901454D4800004FC9510177070100010800FF6400008201621E52FF56000013
_98_statistics statisticsPower
Attributes:
event-min-interval .*:30
group Stromzaehler
room Hauswirtschaftsraum
verbose 0
die partialvariable springt regelmäßig rum, auf seltsamme werte, auch schom mal kürzer wie jetzt grade im zweiten. und auch statt 1B1B1B schon mal 1B1B10 und auch schon mal mit 272222 oder son zeuch.
edit2:/
echt komisch.
PARTIAL 0100000000FF010101010E303130373130353232383838310177070100000001FF010101010F31454D48303030353232383838310177070100000009FF010101010B0901454D4800004FC9510177070100010800FF6400008201621E52FF56000013FEC10177070100100700FF0172620165000ED666621B52FF550000121C01010163D4E10076070008002F80FC6200620072630201710163614F00001B1B1B1B1A01349B
edit:/ 21.11.15
ich habe einfach die smlusb aus fhem rausgeworfen, und von volkszähler die installation per ssh auf der kommandozeile gemacht, bis zum punkt vzlogger install. also bis runter zur port config in der rc.local durchgejubelt. nun, bekomme ich auf der command entsprechend saubere ausgaben.
habe es danach wieder in fhem eingebunden mit /dev/lesekopf0 und nun ist zumindest der hochzählsalat weg. leider wird aber auch nur noch der gesammt bezug richtig erkannt, die anderen readings werden nicht erzeugt.
Internals:
CHANGED
DEF /dev/lesekopf0@9600
DeviceName /dev/lesekopf0@9600
FD 66
NAME StromZaehler
NR 430
PARTIAL
STATE opened
TYPE SMLUSB
Readings:
2015-11-21 21:53:51 Zählerstand-Bezug-Total 144.00
2015-11-21 21:53:19 state opened
Fhem:
interfaces power
Helper:
PARTIAL 1B1B1B01010101760700080033ECF7620062007263010176010107000800104EFD0B0901454D4800004FC9510101635BC900760700080033ECF8620062007263070177010B0901454D4800004FC951070100620AFFFF72620165001022047677078181C78203FF0101010104454D480177070100000000FF010101010E303130373130353232383838310177070100000001FF010101010F31454D48303030353232383838310177070100000009FF010101010B0901454D4800004FC9510177070100010800FF6400008201621E52FF56000015F90F0177070100100700FF017262016500102204621B52FF55000015FE0101016342BF00760700080033ECFB6200620072630201710163C1FD00001B1B1B1B1A01FCCC
Attributes:
event-min-interval .*:30
room Hauswirtschaftsraum
verbose 5
2015.11.21 21:55:04 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2015.11.21 21:55:06 5: SMLUSB: End of SML found. Looking for a beginning.
2015.11.21 21:55:06 5: SMLUSB: Started parsing
2015.11.21 21:55:06 5: SMLUSB: SML Telegram found: 77070100010800FF
2015.11.21 21:55:06 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.11.21 21:55:06 5: SMLUSB: SML Telegram found: 77070100100700FF
2015.11.21 21:55:06 5: SMLUSB: Parsing ended
2015.11.21 21:55:06 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2015.11.21 21:55:07 5: SMLUSB: End of SML found. Looking for a beginning.
2015.11.21 21:55:07 5: SMLUSB: Started parsing
2015.11.21 21:55:07 5: SMLUSB: SML Telegram found: 77070100010800FF
2015.11.21 21:55:07 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.11.21 21:55:07 5: SMLUSB: SML Telegram found: 77070100100700FF
2015.11.21 21:55:07 5: SMLUSB: Parsing ended
2015.11.21 21:55:07 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2015.11.21 21:55:09 5: SMLUSB: End of SML found. Looking for a beginning.
2015.11.21 21:55:09 5: SMLUSB: Started parsing
2015.11.21 21:55:09 5: SMLUSB: SML Telegram found: 77070100010800FF
2015.11.21 21:55:09 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.11.21 21:55:09 5: SMLUSB: SML Telegram found: 77070100100700FF
2015.11.21 21:55:09 5: SMLUSB: Parsing ended
2015.11.21 21:55:09 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2015.11.21 21:55:11 5: SMLUSB: End of SML found. Looking for a beginning.
2015.11.21 21:55:11 5: SMLUSB: Started parsing
2015.11.21 21:55:11 5: SMLUSB: SML Telegram found: 77070100010800FF
2015.11.21 21:55:11 5: SMLUSB: Reading BulkUpdate. Value > 0
2015.11.21 21:55:11 5: SMLUSB: SML Telegram found: 77070100100700FF
2015.11.21 21:55:11 5: SMLUSB: Parsing ended
2015.11.21 21:55:11 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
Hi BlackStone,
ich denke ich habe das Problem gefunden. Dein Zähler setzt das valTime Feld, was ich so in meinem Script noch nicht beachtet habe:
77070100100700FF01726201650004F85E621B52FF55000002BD01
Der Teil:
726201650004F85E Stellt das valTime Feld dar.
ZitatDas Element ,valTime' liefert die Zeitinformation, die zum Zeitpunkt der Messwertbildung
bei der Datenquelle vorgelegen hat.
Ich habe jetzt erstmal eine Zeile im Modul eingefügt, um das Feld quasi zu überspringen. Somit sollte es jetzt bei dir gehen.
Hier findest Du die letzte Version: https://github.com/matzefisi/fhem-70_SMLUSB
Nächster Schritt ist jetzt für mich, dass ich eine verfünftige Funktion baue, damit ich die ganzen Type/Length Felder sauber parsen kann und nicht mit IF die Hex-Daten auswerte.
MfG
Matthias
ich werde es am wochenende ausprobieren.
edit:/ scheint zu funktionieren.
schön wäre wenn man beim status statt opened den gesammt verbrauch stehen hätte.
Hallo Zusammen...
nachdem man mir nun auch einen neuen Zähler verpasst hat (siehe Anhang), habe ich mit Udo (volkszaehler.org (http://volkszaehler.org)) Kontakt aufgenommen und mir mal den IR-Lesekopf schicken lassen.
Ohne mich groß in die Thematik einzulesen, wollte ich den IR-Kopf mal mit dem SMLUSB Modul testen und siehe da: nüschts...
Also bisserl recherchiert (hier im Thread) und kurz mit Udo geschrieben, bis ich dann den Zähler zum Sprechen bewegen konnte:
/LGZ5ZMR120AR.K53
F.F.0(00000000)
0.0.0(30369686)
0.0.1(00252625)
0.0.2( )
1.8.1(000712.321*kWh)
1.8.2(000277.689*kWh)
1.8.0(000990.010*kWh)
0.2.0(K53-0-C)
0.2.1(354C)
0.2.2(4141 )
0.9.2(15-12-04)
0.9.1(17:57:56)
32.7.0(232*V)
52.7.0(231*V)
72.7.0(232*V)
31.7.0(001.62*A)
51.7.0(000.18*A)
71.7.0(005.53*A)
36.7.0(000.35*kW)
56.7.0(000.02*kW)
Dies gelang mir mit dem Script "md3511.pm" hier aus dem Thread. Aber erst nach dem ich es modifizierte und ein
$out0 = "\x06\x30\x30\x30\x0D\x0A";
$num_out = $tty->write($out0);
die "write failed\n" unless ($num_out);
nach der Antwort auf das "$anforderungstelegramm" gesendet habe.
Nun macht es nicht viel Sinn, wenn hier mehrgleisig gefahren wird oder ich in anderen Modulen rumwerkel. Besteht denn die Möglichkeit SMLUSB dazu zu bewegen auch meinen Zähler "zu bedienen"? ;)
Welche Daten werden zur Intergration benötigt?
Von Udo kam noch der Hinweis, das mein Zähler "änhlich" dem Zähler aus dem folgenden Link zu handhaben ist. Die Verbindung habe ich mit 300 Baud 7E1 herstellen können; so viel ich verstanden habe geht auch mehr.
ZMF120ACEA M13 (http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/zmf120)
Gruß
Martin
Vielleicht hilft dir dieser Thread: http://forum.fhem.de/index.php/topic,40766.msg329889.html#msg329889
Da dort vzlogger von volkszaehler verwendet wird ist das vielleicht eine gute Möglichkeit auch die S0 und 1wire Eingänge der Erweiterung in FHEM zu bringen.
Gruß
Udo
Hallo,
möchte meinen Lesekopf (von UDO) in FHEM einbinden. Am RPI wird der Lesekopf erkannt.
Hab das SMLUSB Modul umkopiert und die Rechte angepasst.
Wenn ich jetzt den Lesekopf definieren will bekomme ich folgende Fehler:
2016.01.11 17:53:38 1: PERL WARNING: Bareword found where operator expected at ./FHEM/70_SMLUSB.pm line 6, near ""en" class"
2016.01.11 17:53:38 1: PERL WARNING: (Missing operator before class?)
2016.01.11 17:53:38 1: PERL WARNING: Bareword found where operator expected at ./FHEM/70_SMLUSB.pm line 14, near "<title>fhem"
2016.01.11 17:53:38 1: PERL WARNING: (Missing operator before fhem?)
2016.01.11 17:53:38 1: PERL WARNING: Bareword found where operator expected at ./FHEM/70_SMLUSB.pm line 14, near "70_SMLUSB"
2016.01.11 17:53:38 1: PERL WARNING: (Missing operator before SMLUSB?)
2016.01.11 17:53:38 1: reload: Error:Modul 70_SMLUSB deactivated:
Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 50 at ./FHEM/70_SMLUSB.pm line 14.
2016.01.11 17:53:38 0: Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 50 at ./FHEM/70_SMLUSB.pm line 14.
Cannot load module SMLUSB
Wo kann der Fehler sein? Hab ich was übersehen?
Danke und Gruß
niwa
Hi niwa,
anhand der Fehlermeldungen würde ich sagen, dass irgendwas mit der Datei nicht stimmt die Du runtergeladen hast. Entweder wurde sie nicht vollständig geladen oder evtl. hast Du zu früh einen rechtsklick auf den Dateilink gemacht und die Datei bei Github heruntergeladen.
Könntest Du bitte nochmal den folgenden Link probieren?
https://raw.githubusercontent.com/matzefisi/fhem-70_SMLUSB/master/70_SMLUSB.pm
Dort bekommst Du die letzte Version im RAW Format angeboten und brauchst im Browser eigentlich nur noch auf Datei-->Speichern zu drücken.
MfG
Matzefisi
Hallo zusammen,
ich habe vor einiger Zeit auch einen neuen Zähler verpasst bekommen (Iskra MT372). Der spricht mit dem Protokoll IEC 62056-21, muss aber jeweils dazu aufgefordert werden. Angeschlossen ist der Zähler über einen USB IR-Lesekopf an einen Raspi. Ich habe mir seinerzeit quick and dirty durch Anpassung eines Moduls für einen Hager Zähler beholfen. Ich musste die Baudrate auf 300 lassen, da mir die Umschaltung auf 9600 nicht gelungen ist. Mit dem modifizierten Modul bekomme ich nur zyklisch den Zählerstand (OBIS 1.8.1) und lasse mir als weiteres reading den Momentanverbrauch errechnen. Vielleicht hilft das ja dem Einen oder Anderen und wenn es nur als Basis für eine Integration in ein anderes Modul dient. Aber prügelt mich nicht, ich bin kein großer Perl-Programmierer und bin schon froh das ansatzweise nachvollziehen zu können, daher ist das Modul im Status "absolut experimental" ;) Für mich tut´s aber gut.
LG
Zitat von: Lorenz am 21 Januar 2016, 19:17:43
Hallo zusammen,
ich habe vor einiger Zeit auch einen neuen Zähler verpasst bekommen (Iskra MT372). Der spricht mit dem Protokoll IEC 62056-21, ...
Klingt interessant. Antwortet der Zähler in Klarschrift ungefähr so?:
/EMH5----eHZ-E0028E
1-0:0.0.0*255(20836181)
1-0:1.8.1*255(009260.0705)
1-0:2.8.1*255(027030.6495)
1-0:96.5.5*255(82)
0-0:96.1.255*255(0002477555)
!
Details zu dem Zähler Iskra MT372 findet man hier:
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/iskra_mt372 (http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/iskra_mt372)
LG
Hallo,
Ich habe da ein Problem, ich habe eine IR Diode am GPIO Pin 10 und dann /dev/ttyAMA0@9600
Es ist ein EMH eHZ-GW8E Bezug/Lieferzähler
Internals:
DEF /dev/ttyAMA0@9600
DeviceName /dev/ttyAMA0@9600
FD 5
NAME powerzaehler
NR 71
PARTIAL
STATE opened
TYPE SMLUSB
Readings:
2016-02-07 22:36:46 state opened
Fhem:
interfaces power
Helper:
PARTIAL 0000F800F800F8F8F8F8F800F8F8F8F800F8F8F8F8F8F8F800F8F800F8FB00FBFBFBF3FFF8FFFFDFEEFFFFDEFFF3FEF86686DEFFFFFFFFFFFFDFFFFFFFFFFFEFDEFCF3FFF8FFFFDFDCFFFFDECFE6FFFFFFFFFFFFFFDFFFFFFFFFFFFEFFFFE6FB66E6FEFFF3FFFB80FFE6FE80FFFFFFFFFFFFFFDFFFFFFFFFFFE6FE80FFFF1F80FFFEFEE6FE80FFFF1F80FFFEFFFBFEE6FEFF8080FFFFFFFFFFBFBFFFFFFFFFE6FEFE806F80FBE6FEFE806F80EFF3FFF8FFFFDFDCFFFFDEFFFEEFFEFFFBFBFBFBBFDE0000F800F800F8F8F8F8F8F8F8F8F800F8F8F800F8F8F8F8F800F8F8F8F8F800F8F8F8F8F8F8F8F8F80000F8F8F80000F800F8F8F8F800F800F8F8F8F8F800F8F8F8F8F800F80000F8
Attributes:
event-min-interval .*:30
room Zaehler
Internals:
DEF /dev/ttyAMA0@9600
DeviceName /dev/ttyAMA0@9600
FD 5
NAME powerzaehler
NR 71
PARTIAL
STATE opened
TYPE SMLUSB
Readings:
2016-02-07 22:16:08 state opened
Fhem:
interfaces power
Helper:
PARTIAL F8FFFFC37FFFDEFFF3FEF8
Attributes:
event-min-interval .*:30
room Zaehler
Internals:
DEF /dev/ttyAMA0@9600 EHZ
DeviceName /dev/ttyAMA0@9600
FD 12
NAME powerzaehler
NR 71
PARTIAL
STATE opened
TYPE SMLUSB
Readings:
2016-02-07 23:24:06 state opened
Fhem:
interfaces power
Helper:
PARTIAL FFFFDEFFF3FEF866E6EFFFFFFFFFFFFFDFFFFFFFFFFFEFF6FEF3FFF8FFFFDCC0FFFFDECFE6FFFFFFFFFFFFFFDFFFFFFFFFFFFEFFFFE6FE66E6FEFFF3FFFB80FFE6FE80FFFFFFFFFFFFFFDFFFFFFFFFFFE6FE80FFFF1F80FFFE37FFE6FE80FFFF1F80FFFEFFFBFEE6FEFF8080FFFFFFFFFFBFBFFFFFFFFFE6FEFE806F809FFFE6FEFE806F80EFF3FFF8FFFFDCFFFFDEFFFEEFFFFFFBFBFBFBBFF7FBFBFBF3FFF8FFFFDCFFFFDEFFF3FEF8FB00FBFBFBF3FFF8FFFFDCFFFFDEFFF3FEF866E6EFFFFFFFFFFFFFFFDFFFFFFFFFFFEFBCEEF3FFF8FFFFDCFFFFDECFE6FFFFFFFFFFFFFFDFFFFFFFFFFFFEFFFFE6FE66E6FEFFF3FFFB80FFE6FE80FFFFFFFFFFFFFFDFFFFFFFFFFFE6FE80FFFF1F80FFFEF7FFE6FE80FFFF1F80FFFEFFFBFEE6FEFF8080FFFFFFFFFFBFBFFFFFFFFFE6FEFE806F807FFEE6FEFE806F80EFFEF3FFF8FFFFDCFFFFFFDEFFFEEFF8F8FBFBFBFBBF66FBFBFBF3FFF8FFFFDCFFFFFFDEFFF3FEFB00FBFBFBF3FFF8FFFFDCFFFFDEFFF3FEF866E6EFFFFFFFFFFFFFFFDFFFFFFFFFFFEFBFF3FFF8FFFFDCFFFFDECFE6FFFFFFFFFFFFFFDFFFFFFFFFFFFEFFFFE6F666E6FEFFF3FFFB80FFE6FE80FFFFFFFFFFFFFFDFFFFFFFFFFFE6FE80FFFF1F80FFFEB7FEE6FE80FFFF1F80FFFEFFFBFEE6FEFF8080FFFFFFFFFFBFBFFFFFFFFFE6FEFE806F80FFFBE6FEFE806F80EFE3FEF3FFF8FFFFDCFFFFFFDEFFFEEFBEFFFBFBFBFBBFBBFBFBFBF3FFF8FFFFDCFFFFFFDEFFF3FEFB00FBFBFBF3FFF8FFFFDCFFFFDEFFF3FEF866E67BFFFFFFFFFFFFDFFFFFFFFFFFEFFEF3FFF8FFFFDCFFFFDECFE6FFFFFFFFFFFFFFDFFFFFFFFFFFFEFFFFE6CE66E6FEFFF3FFFB80FFE6FE80FFFFFFFFFFFFFFDFFFFFFFFFFFE6FE80FFFF1F80FFFEF7FCE6FE80FFFF1F80FFFEFFFBFEE6FEFF8080FFFFFFFFFFBFBFFFFFFFFFE6FEFE806F80DFFCE6FEFE806F80EFDFF8F3FFF8FFFFDCFFFFDEFFFEEFFCFBFBFBFBBFEF
Attributes:
event-min-interval .*:30
room Zaehler
verbose 5
LogFile
2016-02-07_23:07:48 powerzaehler DISCONNECTED
2016-02-07_23:08:37 powerzaehler DISCONNECTED
2016-02-07_23:09:01 powerzaehler DISCONNECTED
2016-02-07_23:09:07 powerzaehler DISCONNECTED
2016-02-07_23:09:13 powerzaehler DISCONNECTED
2016-02-07_23:10:15 powerzaehler DISCONNECTED
2016-02-07_23:10:20 powerzaehler DISCONNECTED
2016-02-07_23:10:26 powerzaehler DISCONNECTED
2016-02-07_23:10:40 powerzaehler DISCONNECTED
2016-02-07_23:10:45 powerzaehler DISCONNECTED
2016-02-07_23:11:00 powerzaehler DISCONNECTED
2016-02-07_23:11:05 powerzaehler DISCONNECTED
2016-02-07_23:11:35 powerzaehler DISCONNECTED
2016-02-07_23:12:05 powerzaehler DISCONNECTED
2016-02-07_23:12:31 powerzaehler DISCONNECTED
2016-02-07_23:12:36 powerzaehler DISCONNECTED
2016-02-07_23:13:06 powerzaehler DISCONNECTED
2016-02-07_23:13:15 powerzaehler DISCONNECTED
2016-02-07_23:13:21 powerzaehler DISCONNECTED
2016-02-07_23:13:29 powerzaehler DISCONNECTED
2016-02-07_23:14:51 powerzaehler DISCONNECTED
2016-02-07_23:14:59 powerzaehler DISCONNECTED
2016-02-07_23:15:06 powerzaehler DISCONNECTED
2016-02-07_23:15:36 powerzaehler DISCONNECTED
2016-02-07_23:15:43 powerzaehler DISCONNECTED
2016-02-07_23:15:56 powerzaehler DISCONNECTED
2016-02-07_23:16:25 powerzaehler DISCONNECTED
2016-02-07_23:16:38 powerzaehler DISCONNECTED
2016-02-07_23:16:44 powerzaehler DISCONNECTED
2016-02-07_23:17:04 powerzaehler DISCONNECTED
2016-02-07_23:17:09 powerzaehler DISCONNECTED
2016-02-07_23:17:44 powerzaehler DISCONNECTED
2016-02-07_23:19:29 powerzaehler DISCONNECTED
2016-02-07_23:19:55 powerzaehler DISCONNECTED
2016-02-07_23:20:01 powerzaehler DISCONNECTED
2016-02-07_23:20:52 powerzaehler DISCONNECTED
2016-02-07_23:21:22 powerzaehler DISCONNECTED
2016-02-07_23:24:00 powerzaehler DISCONNECTED
2016-02-07_23:24:06 powerzaehler DISCONNECTED
2016-02-07_23:24:35 powerzaehler DISCONNECTED
2016-02-07_23:24:43 powerzaehler DISCONNECTED
# ------------------- powerzaehler ------------------
define powerzaehler SMLUSB /dev/ttyAMA0@9600 EHZ
attr powerzaehler event-min-interval .*:30
attr powerzaehler room Zaehler
attr powerzaehler verbose 5
define FileLog_powerzaehler FileLog ./log/powerzaehler-%Y-%m.log powerzaehler
attr FileLog_powerzaehler room Zaehler
Wie sieht die Schaltung mit der Diode aus?
hast schon mal Versucht mit minicom Daten direkt auszulesen?
Es ist eine TEMIK K135P
GPIO Pin 1 an Kollektor +3,3V
GPIO Pin 10 an Emitler
GPIO PIN 10 und Emitter für 1kOhm an GPIO Pin 6 GND
Bekomme auf dem Oszilloskop schöne Ausschläge, sollte also gehen, dachte ich mir.
Der Pegel down muss bei min 1v liegen sonst wird es nicht als 0 erkannt
Gesendet von meinem SM-G900F mit Tapatalk
Vielleicht liegt es auch an der Pegel Richtung ich lese immer das die meisten mit invertierter Logik arbeiten. Bei mir geht es z.b mit dieser Schaltung
Gesendet von meinem SM-G900F mit Tapatalk
Hallo,
Ich hatte einen positiven Pegel, am Anfang hatte ich auch einen negativen das habe ich aber gefixt.
Pegelhub 3V, sollte also auch gehen.
Vielleicht ist das Signal trotzdem zu unsauber?!
Hi
Habe mir jetzt einen Zählerkopf von Udo machen lassen, läuft auch soweit.
Allerdings müsste die Kommastelle um 3 Ziffern nach links rücken.
Zählerstand-Tarif-1-Bezug 35670796.30
Zählerstand-Tarif-1-Lieferung 24082627.30
Das sollte dann 35670.79630 und 24082.62730 sein.
Wo kann ich das einstellen?
1B1B1B010101017607001F062E1A4B620062007263010176010107001F0AE05E190D313930303030303334303835010163CC65007607001F062E1A4C620062007263070177010D31393030303030333430383501726201650AE094F67777078181C78203FF0101010104454D480177070100000000FF010101010D3139303030303033343038350177070100010801FF628201621E52FF56001543018A0177070100020801FF628201621E52FF56000E5AB7A101770700006001FFFF010101010B303030323236363139380177070100010700FF0101621B52FF5500003C250177070100020700FF0101621B52FF550000000001010163
Edit:
Hat sich erledigt, das sind dann keine kWh sondern Wh ;)
Mein anderes Problem ist jetzt wie kann ich die momentane Leistung berechnen da ich ja nur die Wh alle 30 Sekunden habe?
Leider sind es auch nicht immer genau 30 Sek. manchmal auch 31 Sek.
2016-02-10_21:51:08 powerzaehler Zählerstand-Tarif-1-Bezug: 35672566.40
2016-02-10_21:51:08 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:51:39 powerzaehler Zählerstand-Tarif-1-Bezug: 35672577.40
2016-02-10_21:51:39 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:52:09 powerzaehler Zählerstand-Tarif-1-Bezug: 35672588.40
2016-02-10_21:52:09 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:52:40 powerzaehler Zählerstand-Tarif-1-Bezug: 35672600.40
2016-02-10_21:52:40 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:53:11 powerzaehler Zählerstand-Tarif-1-Bezug: 35672611.90
2016-02-10_21:53:11 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:53:42 powerzaehler Zählerstand-Tarif-1-Bezug: 35672623.40
2016-02-10_21:53:42 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:54:13 powerzaehler Zählerstand-Tarif-1-Bezug: 35672634.90
2016-02-10_21:54:13 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:54:44 powerzaehler Zählerstand-Tarif-1-Bezug: 35672646.40
2016-02-10_21:54:44 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:55:15 powerzaehler Zählerstand-Tarif-1-Bezug: 35672657.90
2016-02-10_21:55:15 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:55:46 powerzaehler Zählerstand-Tarif-1-Bezug: 35672669.40
2016-02-10_21:55:46 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:56:17 powerzaehler Zählerstand-Tarif-1-Bezug: 35672680.90
2016-02-10_21:56:17 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:56:48 powerzaehler Zählerstand-Tarif-1-Bezug: 35672692.40
2016-02-10_21:56:48 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:57:19 powerzaehler Zählerstand-Tarif-1-Bezug: 35672703.90
2016-02-10_21:57:19 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:57:49 powerzaehler Zählerstand-Tarif-1-Bezug: 35672715.60
2016-02-10_21:57:49 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:58:20 powerzaehler Zählerstand-Tarif-1-Bezug: 35672728.00
2016-02-10_21:58:20 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:58:50 powerzaehler Zählerstand-Tarif-1-Bezug: 35672740.00
2016-02-10_21:58:50 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:59:20 powerzaehler Zählerstand-Tarif-1-Bezug: 35672752.00
2016-02-10_21:59:20 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_21:59:50 powerzaehler Zählerstand-Tarif-1-Bezug: 35672764.00
2016-02-10_21:59:50 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_22:00:21 powerzaehler Zählerstand-Tarif-1-Bezug: 35672776.00
2016-02-10_22:00:21 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_22:00:51 powerzaehler Zählerstand-Tarif-1-Bezug: 35672788.00
2016-02-10_22:00:51 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
Hallo Edi, ich musste an meinem Zähler die Momentanleistung erst aktivieren, dies geht normalerweise mit einer Pin, die dein Netzbetreiber bei der Übergabe des Zählers bereitstellen sollte. Dies meist jedoch nicht tut. Du kannst sie dort anfordern.
Da du einen Zweirichtungszähler hast musst Du dir aber die Werte genau ansehen , bei mir ist die Momentanleistung = Momentanbezug - Einspeisung .
Gruß,
Tobias
Gesendet von meinem SM-N9005 mit Tapatalk
Hallo,
Das klingt ja schon mal gut.
Doofe Frage:
Und wie gebe ich die PIN ein? ???
Der Zähler hat ja kein Tastenfeld.
Hi, ich musste dies an dem IR Modul im Zähler mit einer starken Lampe über Lichtimpulse tun ( siehe Manual).
Gruß,
Tobias
Gesendet von meinem SM-N9005 mit Tapatalk
DANKE,
Habs gelesen, "optischer Taster" bin mal gespannt.
Der Netzbetreiber macht mir nur etwas Probleme, keine hat die PIN ........ :o
Ist nicht zufällig Westnetz?
Gesendet von meinem SM-N9005 mit Tapatalk
Nein, das sind die Pf.......e
Werde immer zwischen 2 Tel. hin und her geschickt, beide sind nicht zuständig. :o >:(
Schönes Ping Pong Spiel was die da mit mir treiben
Hallo,
Habe jetzt eine Antwort von meinem Netzbetreiber bekommen.
Leider kann mein Stromzähler keine Leistung anzeigen.
Er kann nur:
Zählerstand-Tarif-1-Lieferung: 24082627.30
Zählerstand-Tarif-1-Bezug: 35670401.70
Man hat mir angeboten den Zähler für 60Euro zu tauschen.
Die Frage ist nun wie kann ich die Leistung berechnen?
Wie ich das mit dem "Taschenrechner" mache ist mir klar.
Aber wie mache ich das mit den Werten hier, vor allen dingen da es nicht immer 30 Sek. sind? ???
2016-02-10_20:22:13 powerzaehler Zählerstand-Tarif-1-Bezug: 35670396.20
2016-02-10_20:22:13 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_20:22:14 powerzaehler Zählerstand-Tarif-1-Bezug: 35670396.70
2016-02-10_20:22:14 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_20:22:28 powerzaehler Zählerstand-Tarif-1-Bezug: 35670401.70
2016-02-10_20:22:28 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_20:22:59 powerzaehler Zählerstand-Tarif-1-Bezug: 35670412.70
2016-02-10_20:22:59 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_20:23:30 powerzaehler Zählerstand-Tarif-1-Bezug: 35670423.70
2016-02-10_20:23:30 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_20:24:01 powerzaehler Zählerstand-Tarif-1-Bezug: 35670434.70
2016-02-10_20:24:01 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_20:24:32 powerzaehler Zählerstand-Tarif-1-Bezug: 35670445.70
2016-02-10_20:24:32 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_20:25:03 powerzaehler Zählerstand-Tarif-1-Bezug: 35670456.70
2016-02-10_20:25:03 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
2016-02-10_20:25:34 powerzaehler Zählerstand-Tarif-1-Bezug: 35670467.70
2016-02-10_20:25:34 powerzaehler Zählerstand-Tarif-1-Lieferung: 24082627.30
Hi Edi77
lösbar durch UserReadings mit
attr Hausstrom_Zaehler userReadings P_Bezug_temp:energy_total differential { ReadingsVal("Hausstrom_Zaehler","energy_total",0)*3600000 }, P_Einsp_temp:feed_total differential { ReadingsVal("Hausstrom_Zaehler","feed_total",0)*3600000 }, P_Bezug_Watt { sprintf("%.0f",ReadingsVal("Hausstrom_Zaehler","P_Bezug_temp",0)) }, P_Einsp_Watt { sprintf("%.0f",ReadingsVal("Hausstrom_Zaehler","P_Einsp_temp",0)) }
schaue dir mal diesen Thread an da müsste alles nötige erklärt sein
Auf der 3ten Seite ist jemand der auch keine Momentanleistung hat und es über UserReadings löst
http://forum.fhem.de/index.php/topic,48143.msg409490.html#msg409490
Gruß
Momentanleistung habe ich so gelöst. Mir reicht da ein schnitt über fünf Minuten. Mein Solardatenlogger macht das auch nicht anders.
Hier mal mein Versorger Zähler als List.
Internals:
CHANGED
DEF /dev/ttyUSB0@9600
DeviceName /dev/ttyUSB0@9600
FD 20
NAME VersorgerZaehler
NR 276
PARTIAL
STATE opened
TYPE SMLUSB
Readings:
2016-02-16 21:25:00 Bezug_Alt 12705.11
2016-02-16 21:25:00 Bezug_Momentanleistung 960.00
2016-02-16 21:25:00 Differenz_Max 0
2016-02-16 21:25:00 Differenz_Min -960
2016-02-16 21:25:00 Lieferung_Alt 11286.25
2016-02-16 21:25:00 Lieferung_Momentanleistung 0.00
2016-02-16 21:26:46 Zählerstand-Tarif-1-Bezug 12705.14
2016-02-16 21:26:46 Zählerstand-Tarif-1-Lieferung 11286.25
2016-02-16 08:54:40 state opened
Fhem:
interfaces power
Helper:
PARTIAL 1B1B010101017607000********
Attributes:
event-min-interval .*:30
room Stromzähler
verbose 3
Die Readings werden durch ein fünf Minuten AT aktualisiert.
Internals:
COMMAND {
my $Bezug = ReadingsVal("VersorgerZaehler","Zählerstand-Tarif-1-Bezug","");
my $Lieferung = ReadingsVal("VersorgerZaehler","Zählerstand-Tarif-1-Lieferung","");
my $Erzeugung = ReadingsVal("SolaranlageZaehler","Zählerstand-Tarif-1-Lieferung","");
my $Bezug_Alt = ReadingsVal("VersorgerZaehler","Bezug_Alt","");
my $Lieferung_Alt = ReadingsVal("VersorgerZaehler","Lieferung_Alt","");
my $Erzeugung_Alt = ReadingsVal("SolaranlageZaehler","Erzeugung_Alt","");
fhem("setreading VersorgerZaehler Bezug_Alt ".$Bezug);
fhem("setreading VersorgerZaehler Lieferung_Alt ".$Lieferung);
fhem("setreading SolaranlageZaehler Erzeugung_Alt ".$Erzeugung);
my $Bezug_Momemtanleistung = (sprintf("%.2f",($Bezug - $Bezug_Alt)*12000));
my $Lieferung_Momemtanleistung = (sprintf("%.2f",($Lieferung - $Lieferung_Alt)*12000));
my $Erzeugung_Momemtanleistung = (sprintf("%.2f",($Erzeugung - $Erzeugung_Alt)*12000));
if(($Erzeugung_Momemtanleistung-$Bezug_Momemtanleistung) > 0)
{
fhem("setreading VersorgerZaehler Differenz_Max ".($Erzeugung_Momemtanleistung-$Bezug_Momemtanleistung));
fhem("setreading VersorgerZaehler Differenz_Min 0");
}
elsif(($Bezug_Momemtanleistung-$Erzeugung_Momemtanleistung) > 0)
{
fhem("setreading VersorgerZaehler Differenz_Max 0");
fhem("setreading VersorgerZaehler Differenz_Min ".($Erzeugung_Momemtanleistung-$Bezug_Momemtanleistung));
}
fhem("setreading VersorgerZaehler Bezug_Momentanleistung ".$Bezug_Momemtanleistung);
fhem("setreading VersorgerZaehler Lieferung_Momentanleistung ".$Lieferung_Momemtanleistung);
fhem("setreading SolaranlageZaehler Erzeugung_Momentanleistung ".$Erzeugung_Momemtanleistung);
}
DEF +*00:05 {
my $Bezug = ReadingsVal("VersorgerZaehler","Zählerstand-Tarif-1-Bezug","");
my $Lieferung = ReadingsVal("VersorgerZaehler","Zählerstand-Tarif-1-Lieferung","");
my $Erzeugung = ReadingsVal("SolaranlageZaehler","Zählerstand-Tarif-1-Lieferung","");
my $Bezug_Alt = ReadingsVal("VersorgerZaehler","Bezug_Alt","");
my $Lieferung_Alt = ReadingsVal("VersorgerZaehler","Lieferung_Alt","");
my $Erzeugung_Alt = ReadingsVal("SolaranlageZaehler","Erzeugung_Alt","");
fhem("setreading VersorgerZaehler Bezug_Alt ".$Bezug);
fhem("setreading VersorgerZaehler Lieferung_Alt ".$Lieferung);
fhem("setreading SolaranlageZaehler Erzeugung_Alt ".$Erzeugung);
my $Bezug_Momemtanleistung = (sprintf("%.2f",($Bezug - $Bezug_Alt)*12000));
my $Lieferung_Momemtanleistung = (sprintf("%.2f",($Lieferung - $Lieferung_Alt)*12000));
my $Erzeugung_Momemtanleistung = (sprintf("%.2f",($Erzeugung - $Erzeugung_Alt)*12000));
if(($Erzeugung_Momemtanleistung-$Bezug_Momemtanleistung) > 0)
{
fhem("setreading VersorgerZaehler Differenz_Max ".($Erzeugung_Momemtanleistung-$Bezug_Momemtanleistung));
fhem("setreading VersorgerZaehler Differenz_Min 0");
}
elsif(($Bezug_Momemtanleistung-$Erzeugung_Momemtanleistung) > 0)
{
fhem("setreading VersorgerZaehler Differenz_Max 0");
fhem("setreading VersorgerZaehler Differenz_Min ".($Erzeugung_Momemtanleistung-$Bezug_Momemtanleistung));
}
fhem("setreading VersorgerZaehler Bezug_Momentanleistung ".$Bezug_Momemtanleistung);
fhem("setreading VersorgerZaehler Lieferung_Momentanleistung ".$Lieferung_Momemtanleistung);
fhem("setreading SolaranlageZaehler Erzeugung_Momentanleistung ".$Erzeugung_Momemtanleistung);
}
NAME ZaehlerAt
NR 277
NTM 21:35:00
PERIODIC yes
RELATIVE yes
REP -1
STATE Next: 21:35:00
TIMESPEC 00:05
TRIGGERTIME 1455654900
TRIGGERTIME_FMT 2016-02-16 21:35:00
TYPE at
Readings:
2016-01-31 08:50:00 Next_avg_day 08
2016-01-31 08:50:00 Next_avg_month 08
2016-01-31 08:50:00 Next_cum_day 254400
2016-01-31 08:50:00 Next_cum_month 21681600
2016-01-31 08:50:00 Next_max_day 08
2016-01-31 08:50:00 Next_max_month 08
2016-01-31 08:50:00 Next_min_day 08
2016-01-31 08:50:00 Next_min_month 08
2016-02-16 21:30:00 state Next: 21:35:00
Attributes:
alignTime 00:00
room Stromzähler
Da ich die Momentanleistung auch nicht "jede Sekunde" brauche - ich kann ja auch nicht jede Sekunde den Geschirspühler ein und wieder ausschalten -wäre es für die meisten Anwendungen sinnvoll so eine Art Timer im Modul zu haben. Timer auf x Sekunden einstellen und dann werden die Modul-Readings aktualisiert. Würde auch etwas Last von der CPU nehmen als ständig den Zähler zu lesen. Dann kann man auch ein Notify bemühen um die UserReadings zu aktualisieren. Ist dann auch genauer weil ein möglicher Zeitversatz wie beim AT nicht vorkommt. Ein einfache disabled im Modul würde auch schon helfen.
DANKE, das hat mir weiter geholfen.
Jetzt muss ich nur noch abwarten bis die Sonne noch mal scheint ;)
Hier noch ein Thread der sich mit der CPU Last des SMLUSB-Moduls und der Lösung beschäftig.
http://forum.fhem.de/index.php/topic,49515.0.html (http://forum.fhem.de/index.php/topic,49515.0.html)
Hallo,
den SMLUSB Ansatz finde ich sehr Interessant!
Momentan nutze ich auf einem separaten Raspi B den VZLOGGER aus dem Volkzähler Projekt mit einem Lesekopf von Udo
und dem FHEM VZLOGGER Modul auf meinem Haupt Raspi 2, leider ist der VZLOGGER aus dem Volkzähler zum Lesen nicht sehr stabil und stellt immer wieder seinen httpd Kanal ein.
Ich habe einen EasyMeter Q3CA1261
wie muss ich das define xx SMLUSB /dev/ttyUSB0@9600 realisieren, um damit die Zählerdaten richtig auszulesen?
meine Versuche waren bis jetzt erfolglos, es gibt keine Readings, die ich brauchen kann
das sind meine Internals
Internals:
CFGFN FHEM/fhemOda.cfg
CHANGED
DEF /dev/ttyUSB0@9600
DeviceName /dev/ttyUSB0@9600
FD 5
NAME xx
NR 121
PARTIAL
STATE opened
TYPE SMLUSB
Readings:
2016-02-27 09:49:32 state opened
Fhem:
interfaces power
Helper:
PARTIAL 1B1B1B010101017605C9B28C5762006200726500000101760101074553595133430B0645535901071B92BDC3010163DBD3007605C9B28C586200620072650000070177010B0645535901071B92BDC301726201650443A602F10077078181C78203FF01010101044553590177070101010800FF634190726201650443A602621E52FC6900000009CB1AA3200177070102020800FF634190726201650443A602621E52FC6900000008D666CE260177070101010801FF634190726201650443A602621E520165000668CF0177070101010802FF634190726201650443A602621E520165000000700177070101010803FF634190726201650443A602621E520165000000710177070101010804FF634190726201650443A602621E520165000000710177070101010805FF634190726201650443A602621E520165000000710177070101010806FF634190726201650443A602621E5201650000007C0177070102020807FF634190726201650443A602621E5201650005CA400177070102020808FF634190726201650443A602621E520165000000700177070100010700FF0101621B52FE5500006BD10177070100150700FF0101621B52FE5500008E870177070100290700FF0101621B52FE5500000F7201770701003D0700FF0101621B52FE55FFFFCDD80177070100600505FF0101010163419001010163DFB1007605C9B28C5962006200726500000201710163EA990000001B1B1B1B1A02061E
Attributes:
event-min-interval .*:30
icon measure_power
room Energie
verbose 5
das liefert das Log:
2016.02.27 09:55:43 5: SMLUSB: End of SML found. Looking for a beginning.
2016.02.27 09:55:43 5: SMLUSB: Started parsing
2016.02.27 09:55:43 5: SMLUSB: Parsing ended
2016.02.27 09:55:43 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2016.02.27 09:55:45 5: SMLUSB: End of SML found. Looking for a beginning.
2016.02.27 09:55:45 5: SMLUSB: Started parsing
2016.02.27 09:55:45 5: SMLUSB: Parsing ended
2016.02.27 09:55:45 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
2016.02.27 09:55:47 5: SMLUSB: End of SML found. Looking for a beginning.
2016.02.27 09:55:47 5: SMLUSB: Started parsing
2016.02.27 09:55:47 5: SMLUSB: Parsing ended
2016.02.27 09:55:47 5: SMLUSB: Partial beginning of SML File found. Repaired and start parsing
das ist meine Konfiguration wenn ich den VZLOGGER benutze:
"meters" : [
{
"enabled" : true , // true, Beginn EasyMeter Q3C Zähler
"protocol" : "sml",
"baudrate" : 9600,
"device" : "/dev/ttyUSB0",
"parity" : "8N1",
"pullseq" : "2f3f210d0a", // HEX Darstellung der Pullsequenz
"interval" : 10, // Wartezeit bis zum nächsten Pull
"channels": [{
"api" : "NULL" , // ohne middleware
"uuid" : "170", // virtuelle UUID / Channel für FHEM
"identifier" : "1-0:1.7.0", /*Aktuelle Leistung */
},
{
"api" : "NULL" , // ohne middleware
"uuid" : "180", // virtuelle UUID / Channel für FHEM
"identifier" : "1-1:1.8.0", // /* Wirkarbeit Bezug +A T0*/
},
{
"api" : "NULL" , // ohne middleware
"uuid" : "280", // virtuelle UUID / Channel für FHEM
"identifier" : "1-2:2.8.0", // /* Wirkarbeit Bezug -A T0*/
}]
}]
Wo und Wie muß ich eingreifen um meinen Zähler richtig zu bedienen?
danke vorab
Gruß Osid-timo
Am besten versuchst Du es erst mal anhand der Beispielkonfiguration im Wiki (http://www.fhemwiki.de/wiki/SMLUSB). Wenn das nicht zum Erfolg führt Config und Fehlermeldungen posten.
Hallo,
die Konfiguration für den Easymeter Q3C habe ich wie folgt angepasst:
define EasymeterQ3C SMLUSB /dev/ttyUSB0@9600
attr EasymeterQ3C event-min-interval *:30
attr EasymeterQ3C icon measure_power
attr EasymeterQ3C room Energie
attr EasymeterQ3C verbose 5
die Datei 70_SMLUSB für meinen Zähler:
my %obiscodes = (
'77070101010800FF' => 'Zählerstand-Tarif-1-BezugMy',
'77070102020800FF' => 'Zählerstand-Tarif-1-LieferungMy',
'77070100010700FF' => 'MomentanleistungMy');
das ist das Ergebnis im FHEM Logfile
2016.02.28 10:13:45 5: SMLUSB: End of SML found. Looking for a beginning.
2016.02.28 10:13:45 5: SMLUSB: Started parsing
2016.02.28 10:13:45 5: SMLUSB: SML Telegram found: 77070101010800FF
2016.02.28 10:13:45 1: PERL WARNING: Hexadecimal number > 0xffffffff non-portable at ./FHEM/70_SMLUSB.pm line 338.
2016.02.28 10:13:45 1: PERL WARNING: Use of uninitialized value $scaler in division (/) at ./FHEM/70_SMLUSB.pm line 293.
Illegal division by zero at ./FHEM/70_SMLUSB.pm line 293.
wo liegt mein Problem?
Gruß Oswald
Er hat Probleme mit der Übersetzung da andere oder falsche Zeichen ankommen
Hänge an deine baud mal 8,N,1 an vielleicht reicht das
Oder das telegramm ist kein SML und du müsstest das OBIS Modul nehmen
define EasymeterQ3C SMLUSB /dev/ttyUSB0@9600,8,N,1
Alternativ mal das testen
define EasymeterQ3C OBIS /dev/ttyUSB0@9600,8,N,1
Gesendet von meinem SM-G900F mit Tapatalk
Hallo Crawler,
define EasymeterQ3C SMLUSB /dev/ttyUSB0@9600,8,N,1 bringt keine Verbesserung, leider bleibt das Fehlerbild.
der Tipp 70_SMLUSB zu benutzen kam von Icinger, denn das OBIS Modul hatte ich zuerst versucht.
Gruß Oswald
Zitat von: osid-timo am 28 Februar 2016, 10:19:16
attr EasymeterQ3C event-min-interval *:30
Richtig wäre
attr EasymeterQ3C event-min-interval .*:30
sh. Wiki, aber das ist nicht Dein aktuelles Problem.
Zitat von: osid-timo am 28 Februar 2016, 10:19:16
die Datei 70_SMLUSB für meinen Zähler:
my %obiscodes = (
'77070101010800FF' => 'Zählerstand-Tarif-1-BezugMy',
'77070102020800FF' => 'Zählerstand-Tarif-1-LieferungMy',
'77070100010700FF' => 'MomentanleistungMy');
Das klingt so, als ob Du in der 70_SMLUSB Datei rum editiert hättest (?). Das wäre sicher nicht im Sinne des Erfinders, würde aber evtl. die Perl-Fehler im Log erklären.
Hi zusammen,
ein edit der perldatei sollte eigentlich nicht nötig sein, da die Obis Kennziffern den offiziellen Standard abbilden.
Es kann aber sein, dass mein Modul ein Problem mit den Änderungen der aktuellen FHEM Version hat. Ich werde nächste Woche mal nachschauen.
Aktuell ist dazum im Github auch noch ein Issue offen: https://github.com/matzefisi/fhem-70_SMLUSB/issues/2. Evtl. ist es ja der gleiche Fehler.
Melde mich spätestens Mittwoch abend nochmal.
MfG
Matzefisi
Moin, interessanter Thread.
Aus dem gleichen Gedanken hatte ich für den Iskra MT681 mal selbiges gebastelt; vielleicht hilfts dem ein oder anderen..
http://forum.fhem.de/index.php/topic,47453.msg395188.html#msg395188 (http://forum.fhem.de/index.php/topic,47453.msg395188.html#msg395188)
ggf werde ich mich mal mit dem SMLUSB-Modul auseinandersetzen ;-)
Grüße
Stephan
MT681 sendet doch in D0, also Klarschrift unverschlüsselt? Dann wäre dafür das OBIS-Modul (http://forum.fhem.de/index.php/topic,48143.0.html) wie geschaffen. Meines Wissens war in der Entwicklungsphase des PBIS-Moduls sogar ein MT681 in die Tests involviert. Jedenfalls sah ich ihn im Sourcecode des Moduls.
So eine Änderung in FHEM 5.7 habe ich schon gefunden, die ich in meinem Modul nachziehen muss:
Zitat2016.02.28 20:45:15 3: WARNING: unsupported character in reading Zählerstand-Bezug-Total (not A-Za-z/\d_\.-), notify the dummy module maintainer.
2016.02.28 20:45:15 3: WARNING: unsupported character in reading Zählerstand-Lieferung-Total (not A-Za-z/\d_\.-), notify the dummy module maintainer.
2016.02.28 20:45:15 3: WARNING: unsupported character in reading Zählerstand-Tarif-1-Bezug (not A-Za-z/\d_\.-), notify the dummy module maintainer.
2016.02.28 20:45:15 3: WARNING: unsupported character in reading Zählerstand-Tarif-1-Lieferung (not A-Za-z/\d_\.-), notify the dummy module maintainer.
Das heißt: Ich werde die Readings umbenennen. Ich denke ich werde einfach die englischen Begriffe nehmen. Und mal sehen ob ich im Forum oder im Wiki noch empfehlungen dazu finde.
Zitat von: osid-timo am 28 Februar 2016, 10:19:16
2016.02.28 10:13:45 5: SMLUSB: End of SML found. Looking for a beginning.
2016.02.28 10:13:45 5: SMLUSB: Started parsing
2016.02.28 10:13:45 5: SMLUSB: SML Telegram found: 77070101010800FF
2016.02.28 10:13:45 1: PERL WARNING: Hexadecimal number > 0xffffffff non-portable at ./FHEM/70_SMLUSB.pm line 338.
2016.02.28 10:13:45 1: PERL WARNING: Use of uninitialized value $scaler in division (/) at ./FHEM/70_SMLUSB.pm line 293.
Illegal division by zero at ./FHEM/70_SMLUSB.pm line 293.
@ matzefisi
Ich hatte diesen Fehler schon vor einem Jahr gelegentlich. Ich dachte ich hätte es auch schon mal gemeldet. :(
Geändert habe ich es bei mir dadurch, dass ich die Variable vorbelegt habe. Sollte an dieser Stelle ein unbekannter / falscher Faktor gelesen werden, tritt zumindest der "division by zero" Fehler nicht auf.
# Detect the scaler. Also very static and could be improved
$scaler = 10; # Variable vorbelegt
$scaler=10 if (substr($telegramm,$length_all,4) eq "52FF");
$scaler=1 if (substr($telegramm,$length_all,4) eq "5200");
$scaler=1 if (substr($telegramm,$length_all,4) eq "5201");
Gruß Friedrich
Hallo,
danke Omega-5, jetzt bekomme ich Werte, eine unbelegte Variable richtet doch erheblichen Schaden an.
Momentanleistung noch Faktor 10 zuviel
Bezug und Lieferung noch falsch, aber das wird sich noch finden
Gruß Oswald
Zitat von: osid-timo am 01 März 2016, 19:58:10
...
Momentanleistung noch Faktor 10 zuviel
...
Die vorbelegte Variable heißt $
scaler = 10. Da könnte man doch glatt einen Zusammenhang vermuten ...
Zitat von: willybauss am 01 März 2016, 20:08:56
Die vorbelegte Variable heißt $scaler = 10. Da könnte man doch glatt einen Zusammenhang vermuten ...
Könnte man. Aber ganz so einfach ist das nicht. Der scaler ist hier nämlich ein Teiler und wenn der nicht initialisiert ist (dann = 0) tritt der Fehler auf.
Wenn ihr in den Code schaut, werdet ihr sehen das 3 mögliche Faktoren berücksichtigt werden. Was passiert wenn der Zähler einen nicht bekannten Code sendet oder ein Übertragungsfehler auftritt? Dann wird der Faktor nicht gesetzt.
Auszug aus der Ausgabe meines Zählers:
<134> 77
07 01 00 01 08 00 FF objName 1-0:1.8.0*255
Wirkarbeit Bezug total
64 00 02 82
01 valTime
62 1E unit (unsigned8) 1E = Wh
52 FF scaler (int8) -1 = *10^-1 = /10
<151> 56 00 02 CB 07 E0 value 46860256/10 = 4686025,6 Wh
01 valueSignature (leer)
Um der Sache auf den Grund zu gehen, müsste man mal die Ausgabe deines Zählers aufzeichnen und analysieren. 8)
Gruß Friedrich
Edit:
Ich habe nochmal in die Beschreibung des SML-Datenprotokolls geschaut.
Es gibt auch die Möglichkeit das der scaler weitere Werte annimmt.
52FD = 10^-3 (x0,001)
52FE = 10^-2 (x0,01)
52FF = 10^-1 (x0,1)
5200 = 10^0 (x1)
5201 = 10^1 (x10)
5202 = 10^2 (x100)
@ matzefisi
Das solltest du also im Code noch berücksichtigen.
Hi zusammen,
das Problem mit dem teilen durch null sollte nun erstmal durch die Vorbelegung mit 1 gefixt sein. (Auch nur als Workaround).
Eine neue Version ist gerade im Github eingecheckt. https://github.com/matzefisi/fhem-70_SMLUSB Diese beinhaltet nun auch einen PollingMode um die Last auf z.B. einen Raspberry deutlich zu reduzieren. (Quelle: http://forum.fhem.de/index.php/topic,49515.msg412969.html#msg412969)
Des weiteren habe ich die Readings umbenannt um diesen Fehler zu eliminieren:
Zitat2016.02.28 20:45:15 3: WARNING: unsupported character in reading Zählerstand-Bezug-Total (not A-Za-z/\d_\.-), notify the dummy module maintainer.
Die Sache mit dem Scaler ist wirklich nicht so einfach. Der Scaler ist auch ein einem Typ-Length Field (T/L) abgebildet. Also z.B. 52 FF dass wäre dann Binär "01010010 11111111". Und wie man das nun in einen Scaler umwandelt ist in diesem PDF auf Seite 33 und 34 beschrieben: http://www.emsycon.de/downloads/SML_081112_103.pdf
Um das SML Protokoll komplett sauber abzubilden, fehlt dem SMLUSB Modul also noch eine Funktion die die T/L "übersetzen" kann. Da ich es bislang noch nicht geschafft habe die zu bauen, habe ich halt erstmal die Scaler hart kodiert.
MfG
Matthias
Hallo Matzefisi,
ich hab die neue Version vom Github ausprobiert. https://github.com/matzefisi/fhem-70_SMLUSB (https://github.com/matzefisi/fhem-70_SMLUSB)
Also einfach gegen meine bisherige Version getauscht (Rechte auch gesetzt).
Leider kamen dann keine Daten mehr an (das Logfile blieb leer).
Muß man die Attribute anpassen / erweitern?
Hab auch etwas mit
Zitatattr powerZaehler event-min-interval .*:30
gespielt.
Das hat leider nichts gebracht.
Zu guter letzt hab ich wieder die alte Version kopiert und schon lief wieder alles wie bisher...
Gruß
PS: Einziges Problem was mir immer auffällt, sind "Löcher" in der Aufzeichnung der Momentanleistung bei negativen Werten (also wenn die Solaranlage mehr liefert als ich verbrauche). Ansonsten wirklich ein geniales Teil - VIELEN DANK!
Hallo,
ich habe das gleiche festgestellt. update auf dieletzte Version von Github und danach bekomme ich keine Werte mehr. Die vorherige Version hat funktioniert. Leider habe ich diese nicht gesichert. Wo kann man diese herunterladen?
Ich habe einen EHZ 21 mit 2 Wege Stromzähler und Echtzeitverbrauch.
MfG
Andreas
Hi,
sorry das es bei Euch nicht geht. Bei mir läuft es komischerweise 1a. Ich werde es mir nächste Woche direkt nochmal anschauen.
Solange könnt Ihr Euch noch in der Github Historie bedienen.
Das hier ist die letzte Version, bevor ich die pollingMode Funktion eingebaut habe.
https://github.com/matzefisi/fhem-70_SMLUSB/commit/b3df9cd8233d073639e0126ba39aa42910659a0a
MfG
Matzefisi
Hi Matzefisi
I like your module, thanks for your work.
I am running it on a ISKRA MT681 since 2h without errors.
I am using a very buggy breadboard IR-detector with esp8266 and ser2net (the detector is still fixed with adhesive tape :)
Your module was not running out of the box with ser2net, therefore I changed something.
Maybe, you are interested in merging some code, which you find interesting; I would be honored.
My patch should be compatible with the original USB interface, I will test it next weekend.
define <name> SMLUSB <devicename>\@baudrate'
or
define <name> SMLUSB IP:PORT'"
I concentrated in the detection of the begin and end of the message.
I deleted all the polling code; I prefer to remain FHEM mainstream :)
I understood, you introduced polling for improving speed; I will have a look at speed next week-end.
p.s. feel free to answer in german; I type just faster in engl.
edit:. small hack for the scaler (newfile uploaded at 21:42)
b.r.
immi
Hallo zusammen,
ich nutze seit Wochen einen selbst gebauten IR-Zähler mit dem SMLUSB-Modul. An meinem Hager-Zweirichtungs-Zähler.
Leider bekomme ich keine Werte zum erzeugten Strom, da dieser auch auf dem Zähler selbst nur als positiver Wert angezeigt wird. Es ist auch auf dem Zähler nicht erkennbar, ob es Ertrag oder Verbraucht handelt .... außer über eine kleine Anzeige im Zähler links oben: Dort zeigt ein Pfeil über einem "A" an ob Strom verbraucht oder erzeugt wird. (Abhängig von der Pfeilrichtung)
Meine Frage: Gibt es im SML-Protokoll eine Möglichkeit die Pfeilrichtung des As oder generell die Richtung von Zweirichtungszählern auszulesen??
Somit könnte man dann zwischen MomentanVerbrauch und MomentanErzeugung unterscheiden. Das wäre super.
Viele Grüße, zYloriC
PS: gibt es einen unterschied zwischen der Momentanleistung und der "aktuelle Wirkleistung key=01000F0700FF"
Hi zYloriC,
das bildet mein Modul eigentlich schon ab. Und war steht das meiner Erkenntnis nach im Statusword:
77070100010800FF 640101 A2 01 621E 52FF 56 0001450FA101 --> Einspeisung
77070100010800FF 640101 82 01 621E 52FF 56 000145A40201 --> Bezug
Im aktuellen Code (https://github.com/matzefisi/fhem-70_SMLUSB/blob/master/70_SMLUSB.pm) findest Du das in der Zeile 284 und 285. Aber auch das ist nur Hardcoded und kann bei einigen Zählern anders aussehen.
$direction = "Bezug" if (substr($telegramm,$length_all-4,2) eq "82");
$direction = "Einspeisung" if (substr($telegramm,$length_all-4,2) eq "A2");
Du könntest evtl. mal mit einem Terminalprogramm ein paar Telegramme einfangen (wenn der Zähler auf Einspeisung läuft) dann könnte ich mir das mal anschauen.
MfG
Matzefisi
Hallo Matze,
vielen Dank für deine Hilfe. Anbei habe ich zwei Telegramme. Den Wert "77070100010800FF" konnte ich finden, "0001450FA101" und "000145A40201" aber nicht. Hast du eine Idee dazu?
Gruß und Dank, zYloriC
1b1b1b1b010101017609000000000701d2ba620162007263010176010109000000000255f0ea0b06484147010754ded5cf010163453f007609000000000701d2bb620162007263070177010b06484147010754ded5cf070100620affff726201650351a5997a77078181c78203ff01010101044841470177070100000009ff010101010b06484147010754ded5cf0177070100010800ff62a201621e52ff55044c02780177070100010801ff0101621e52ff55044bdb680177070100010802ff0101621e52ff5327100177070100020800ff62a201621e52ff550340e8f00177070100020801ff0101621e52ff550340c1e00177070100020802ff0101621e52ff5327100177070100100700ff0101621b520053f9f30177078181c78205ff0101010183029b147c682819fb0365a1ac68a7238153b1332cb24645e0ca769e8ca72cac1603e84166642811060867cc46a9f87af959010101633304007609000000000701d2be6201620072630201710163e7d9001b1b1b1b1a009ed11b1b1b1b010101017609000000000701d2c0620162007263010176010109000000000255f0ec0b06484147010754ded5cf010163c384007609000000000701d2c1620162007263070177010b06484147010754ded5cf070100620affff726201650351a59b7a77078181c78203ff01010101044841470177070100000009ff010101010b06484147010754ded5cf0177070100010800ff62a201621e52ff55044c02780177070100010801ff0101621e52ff55044bdb680177070100010802ff0101621e52ff5327100177070100020800ff62a201621e52ff550340e8f90177070100020801ff0101621e52ff550340c1e90177070100020802ff0101621e52ff5327100177070100100700ff0101621b520053f9f30177078181c78205ff0101010183029b147c682819fb0365a1ac68a7238153b1332cb24645e0ca769e8ca72cac1603e84166642811060867cc46a9f87af95901010163eaa9007609000000000701d2c26201620072630201710163d265001b1b1b1b1a00ebe01b1b1b1b010101017609000000000701d2c6620162007263010176010109000000000255f0ee0b06484147010754ded5cf010163c895007609000000000701d2c7620162007263070177010b06484147010754ded5cf070100620affff726201650351a59d7a77078181c78203ff01010101044841470177
1b1b1b1b010101017609000000000701d3ce620162007263010176010109000000000255f1460b06484147010754ded5cf0101631382007609000000000701d3cf620162007263070177010b06484147010754ded5cf070100620affff726201650351a6077a77078181c78203ff01010101044841470177070100000009ff010101010b06484147010754ded5cf0177070100010800ff62a201621e52ff55044c02780177070100010801ff0101621e52ff55044bdb680177070100010802ff0101621e52ff5327100177070100020800ff62a201621e52ff550340eac70177070100020801ff0101621e52ff550340c3b70177070100020802ff0101621e52ff5327100177070100100700ff0101621b520053fa010177078181c78205ff0101010183029b147c682819fb0365a1ac68a7238153b1332cb24645e0ca769e8ca72cac1603e84166642811060867cc46a9f87af95901010163dd06007609000000000701d3d06201620072630201710163e03a001b1b1b1b1a0091e71b1b1b1b010101017609000000000701d3d4620162007263010176010109000000000255f1480b06484147010754ded5cf010163e86b007609000000000701d3d5620162007263070177010b06484147010754ded5cf070100620affff726201650351a6097a77078181c78203ff01010101044841470177070100000009ff010101010b06484147010754ded5cf0177070100010800ff62a201621e52ff55044c02780177070100010801ff0101621e52ff55044bdb680177070100010802ff0101621e52ff5327100177070100020800ff62a201621e52ff550340ead00177070100020801ff0101621e52ff550340c3c00177070100020802ff0101621e52ff5327100177070100100700ff0101621b520053fa020177078181c78205ff0101010183029b147c682819fb0365a1ac68a7238153b1332cb24645e0ca769e8ca72cac1603e84166642811060867cc46a9f87af95901010163897a007609000000000701d3d6620162007263020171016397cf001b1b1b1b1a00b3bd1b1b1b1b010101017609000000000701d3d7620162007263010176010109000000000255f1490b06484147010754ded5cf01016365e7007609000000000701d3d8620162007263070177010b06484147010754ded5cf070100620affff726201650351a60b7a77078181c78203ff01010101044841470177070100000009ff010101010b06484147010754ded5cf0177070100010800ff62a201621e52ff55044c02780177070100010801ff0101621e52ff55044bdb6801
Hallo zYloriC,
ich meine du hast am 21 Oktober 2015, 23:14:37 schon mal deinen Zähleroutput gepostet. Ich habe damals angefangen ihn zu analysieren. Irgendwas ist mir allerdings dann dazwischen gekommen. Vieleicht ist das mal ein Anfang.
1b1b1b1b Start Escape Zeichenfolge
01010101 Start Übertragung Version 1
76
09
00000000055bc413 SML-Message + transactionId
6201 groupNo
6200 abortOnError
72630101 messageBody
760101
090000000001c9415d0b
06
484147 "HAG" Hager
010754ded5cf01016303a100760900000000055bc414
6201
6200
72630701
77010b06
484147 "HAG" Hager
010754ded5cf070100620affff7262016502981d977a
77078181c78203ff Herstelleridentifikation:
01
01
01
01
04
484147 "HAG" Hager
01
77070100000009ff Geräteeinzelidentifikation
01
01
01
01
0b06
484147 HAG
010754ded5cf01
77070100010800ff Wirkenergie Total Bezug
628201
62 unit (TL[1] + unsigned[1])
1e unit = Wh
52 scaler (TL[1] + unsigned[1])
ff scaler = -1
55 value (TL[1] + integer[32])
02ab1b85 value
01 valueSignature = not set
77070100010801ff Wirkenergie Tarif 1 Bezug
0101
62
1e
52
ff
55
02aaf475
01
77070100010802ff Wirkenergie Tarif 2 Bezug
0101
62
1e
52
ff
532710
01
77070100020800ff Wirkenergie Total Lieferung
628201
62
1e
52
ff
55
031feb19
01
77070100020801ff Wirkenergie Tarif 1 Lieferung
0101
62
1e
52
ff
55
031fc409
01
77070100020802ff Wirkenergie Tarif 2 Lieferung
0101
62
1e
52
ff
532710
01
77070100100700ff aktuelle Wirkleistung
0101
62
1b
52005301ee01
77 valListEntry (sequence)
07 objName (TL[1] + octet_string[6])
8181c78205ff OBIS: 8181C78205FFh -> öffentlicher Schlüssel
01 status (not set)
01 valTime (not set)
01 unit (not set)
01 scaler (not set)
83029b147c682819fb0365a1ac68a7238153b1332cb24645e0ca769e8ca
72cac1603e84166642811060867cc46a9f87af959010101634ab700760900000000055bc41762016200726302017101633fb000
1b1b1b1b Escape-Sequenz im Nutzdatenstrom
1a Kennzeichnung Ende der Nachricht
00 Anzahl eingefügte Zusatz-Byte
50 crc16 (MSB)
79 crc16 (LSB)
Gruß Friedrich
Hallo Friedrich,
vielen Dank für deine erneute Analyse. Damals 2015 lieft SMLUSB bei mir noch nicht... mittlerweile schon.
In deiner Analyse konnte ich Werte zu "Bezug" oder "Einspeisung" in Zusammenhang zu "$direction" nicht finden.
Die kwh-Angaben zu den beiden Werten helfen mir leider nicht viel. Ich benötige zu aktuellen WATT-Zahl quasi das Vorzeichen, um zu sehen ob es Erzeugung oder Verbrauch ist...
@Matzefisi: Aktualisiert sich 70_SMLUSB.pm mit dem fhem-update Befehl, oder muss ich es manuell aktualisieren??!
Gruß, Florian
Hi zYloriC,
nein, das müsstest Du noch manuell über das Github machen. Es laufen aber gerade bestrebungen das SML Modul mit dem OBIS Modul zu mergen und das ist schon im FHEM update mit drin.
MfG
Matthias
Zitat von: zYloriC am 10 März 2016, 23:52:46
In deiner Analyse konnte ich Werte zu "Bezug" oder "Einspeisung" in Zusammenhang zu "$direction" nicht finden.
Die kwh-Angaben zu den beiden Werten helfen mir leider nicht viel. Ich benötige zu aktuellen WATT-Zahl quasi das Vorzeichen, um zu sehen ob es Erzeugung oder Verbrauch ist...
Hallo Florian,
ich habe mir in meiner Anwendung ein notify gebastelt, um zu erkennen wann der Nachttarif "NT" aktiv ist. So etwas Ähnliches könnte ich mir auch bei dir vorstellen. Dazu vergleiche ich ob sich der "HT" zwischen zwei Messungen ändert. Wenn nicht muss "NT" sein. Schau mal bitte hier:
https://forum.fhem.de/index.php/topic,20525.msg140618.html#msg140618 (https://forum.fhem.de/index.php/topic,20525.msg140618.html#msg140618)
Ich würde sehen ob sich der kWh-Wert der Einspeisung zwischen zwei Messungen ändert und daraus "$direction" ableiten.
Gruß Friedrich
PS: Gerade gesehen neues Thema, vieleicht ganz interesant für dich. https://forum.fhem.de/index.php/topic,50661.msg422886.html#msg422886 (https://forum.fhem.de/index.php/topic,50661.msg422886.html#msg422886)
Hallo Matthias,
ich habe die 70_SMLUSB.pm vom git aktualisiert. Nach einem Neustart hat mein rPi keine SML-Daten mehr empfangen.
Im Log steht
WARNING: unsupported character in reading Zählerstand-Bezug-Total (not A-Za-z/\d_\.-), notify the SMLUSB module maintainer.
Ich hab die alte 70_SMLUSB.pm noch in petto, aber ich würde schon gern die neuen Features nutzen. Leider konnte ich die ÄÖÜ im .pm-File nicht finden. Hast du einen Tipp? Eigentlich wird "zÄhlerstand" doch ordentlich in fhem angezeigt.
Gruß, zYloriC
PS: gibt es eine Möglichkeit, die neue 70_SMLUSB.pm aus der FHEM-Komandozeile zu aktualisieren? Akteull habe ich per nano gemacht und musste anschließend die chown-Rechte wieder neu auf fhem setzen
PS2: kann man den fhem-Nutzer auf der raspberry auch für FTP-Verbindungen nutzen? Eigentlich ist für ihn kein Pwasswort vorhanden, oder?
Wollte nur Bescheid geben, dass bei mir auch nicht die neueste 70_SMLUSB.pm geht mit USB IR Lesekopf von UDO und ISKRA MT681.
Habe mir ein Wolf gesucht. Aber es lag an der neuesten 70_SMLUSB.pm
Mit der Version:
Das hier ist die letzte Version, bevor ich die pollingMode Funktion eingebaut habe.
https://github.com/matzefisi/fhem-70_SMLUSB/commit/b3df9cd8233d073639e0126ba39aa42910659a0a
gehts wunderbar.
Vielleicht solltest du Rollbacken oder die Wikiseite anpassen. Damit Neulinge nicht in die selbe Falle tappen wie ich.
Trotzdem vielen vielen Dank für das Modul! Klasse Job.
@ zYloriC
Hallo Florian,
ich habe mir noch mal einige Gedanken zu deiner Wunschanzeige gemacht. Die Wirkleistung ist für deinen Zähler immer positiv, weil das der Anschlusswert aller gerade aktiven Verbraucher ist. Woher soll er auch wissen welchen Anteil davon deine Solaranlage übernimmt. Dazu müsstest du die momentane Leistung kennen und davon die angezeigte Leistung subtrahieren. Erst dann bekommst du eine Aussage über die Einspeiseleistung. Oder du nimmst die Werte von Wirkenergie-Lieferung und Wirkenergie-Bezug für einen bestimmten Zeitraum und berechnest daraus die gewünschten Werte. Sonst schau doch mal ins Unterforum "Solaranlagen".
Gruß Friedrich
Zitat von: zYloriC am 10 März 2016, 23:52:46
...
Die kwh-Angaben zu den beiden Werten helfen mir leider nicht viel. Ich benötige zu aktuellen WATT-Zahl quasi das Vorzeichen, um zu sehen ob es Erzeugung oder Verbrauch ist...
Ich habe zwar keinen SML-Zähler, sondern OBIS, aber ich konnte das so lösen, dass ich ausschließlich die kWh-Zahlen verwendete (weil mein Zähler gar keine Watt ausgibt). Mit einem "differential" UserReading erhält man daraus die aktuelle Leistung, errechnet aus den kWh-Zahlen und den Timestamps zweier aufeinander folgender Ablesungen. Die Zeiten werden offenbar in ms (Millisekunden) verarbeitet, denn meine Werte sind sehr gut aufgelöst, trotz Ablesung im Minutenraster.
Ich kann mich noch dunkel erinnern, dass ich irgendwie mit den Einheiten zu kämpfen hatte, deshalb zuerst die "temp" Readings, woraus dann die endgültigen Werte werden:
P_Bezug_temp:total_consumption
differential { ReadingsVal("Hausstrom_Zaehler","total_consumption",0)*3600000 },
P_Einsp_temp:total_feed
differential { ReadingsVal("Hausstrom_Zaehler","total_feed",0)*3600000 },
P_Bezug_Watt:P_Bezug_temp { sprintf("%.0f",ReadingsVal("Hausstrom_Zaehler","P_Bezug_temp",0)) },
P_Einsp_Watt:P_Einsp_temp { sprintf("%.0f",ReadingsVal("Hausstrom_Zaehler","P_Einsp_temp",0)) }
Und falls es darum geht, den Eigenverbrauch auf Bezug/Einspeisung und PV-Erzeugung zu berechnen, dann entsteht hier gerade ein Thread dazu.
https://forum.fhem.de/index.php/topic,50661.0.html (https://forum.fhem.de/index.php/topic,50661.0.html)
Hallo zusammen,
Zitat von: Adriano am 12 März 2016, 12:43:10
Wollte nur Bescheid geben, dass bei mir auch nicht die neueste 70_SMLUSB.pm geht mit USB IR Lesekopf von UDO und ISKRA MT681.
danke für den Hinweis. Ich habe viel rumprobiert, aber leider bekomme ich keine Werte durch die IR-Diode mehr, sobald ich meine aktuelle 70_SMLUSB.pm durch eine neue ersetze.
Dateibesitzer und Gruppe habe ich schon angepasst. Er zeigt die Schnittstelle auch als OPENED an, aber er empfängt nix.
Meine bestehende, funktionierende 70_SMLUSB.pm habe ich mal angefügt. Wisst ihr, woran es liegen könnte? Auch nach Dateivergleich bin ich bin ratlos..
Viele Grüße,
zYloriC
#################################################################################
# 70_SMLUSB.pm
# Module for FHEM to receive SML Data via USB Schreiblesekopf by Udo
#
# http://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-usb-ausgang
#
# Developed for and tested with EHM ED 300 L power meter
#
# Used module 70_USBWX.pm as template. Thanks to Willi Herzig
#
# Matthias Rammes
#
##############################################
# $Id: 70_SMLUSB.pm 1000 2013-09-10 19:54:04Z matzefisi $
package main;
use strict;
use warnings;
use Device::SerialPort;
use vars qw{%attr %defs};
my %obiscodes = (
'77070100010800FF' => 'Zählerstand-Bezug-Total',
'77070100020800FF' => 'Zählerstand-Lieferung-Total',
'77070100010801FF' => 'Zählerstand-Tarif-1-Bezug',
'77070100020801FF' => 'Zählerstand-Tarif-1-Lieferung',
'77070100010802FF' => 'Zählerstand-Tarif-2-Bezug',
'77070100020802FF' => 'Zählerstand-Tarif-2-Lieferung',
'770701000F0700FF' => 'Momentanleistung',
'77070100100700FF' => 'Momentanleistung');
#####################################
sub
SMLUSB_Initialize($)
{
require "$attr{global}{modpath}/FHEM/DevIo.pm";
my ($hash) = @_;
$hash->{ReadFn} = "SMLUSB_Read";
$hash->{ReadyFn} = "SMLUSB_Ready";
$hash->{DefFn} = "SMLUSB_Define";
$hash->{UndefFn} = "SMLUSB_Undef";
$hash->{GetFn} = "SMLUSB_Get";
$hash->{ParseFn} = "SMLUSB_Parse";
$hash->{StateFn} = "SMLUSB_SetState";
$hash->{Match} = ".*";
$hash->{AttrList} = $readingFnAttributes;
}
#####################################
sub
SMLUSB_Define($$)
{
my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def);
return "wrong syntax: 'define <name> SMLUSB <devicename>\@baudrate'"
if(@a < 3);
DevIo_CloseDev($hash);
my $name = $a[0];
my $dev = $a[2];
$hash->{fhem}{interfaces} = "power";
if($dev eq "none") {
Log3 $hash, 1,"SMLUSB $name device is none, commands will be echoed only";
$attr{$name}{dummy} = 1;
return undef;
}
$attr{$name}{"event-min-interval"} = ".*:30";
$hash->{DeviceName} = $dev;
Log3 $hash, 5, "SMLUSB: Defined";
my $ret = DevIo_OpenDev($hash, 0, "SMLUSB_DoInit");
return $ret;
}
#####################################
sub
SMLUSB_Ready($)
{
my ($hash) = @_;
return DevIo_OpenDev($hash, 0, "SMLUSB_DoInit")
if($hash->{STATE} eq "disconnected");
}
#####################################
sub
SMLUSB_SetState($$$$)
{
my ($hash, $tim, $vt, $val) = @_;
return undef;
}
#####################################
sub
SMLUSB_Clear($)
{
my $hash = shift;
my $buf;
# clear buffer:
if($hash->{SMLUSB})
{
while ($hash->{SMLUSB}->lookfor())
{
$buf = DevIo_DoSimpleRead($hash);
$buf = uc(unpack('H*',$buf));
}
}
return $buf;
#####################################
sub
SMLUSB_DoInit($)
{
my $hash = shift;
my $name = $hash->{NAME};
my $init ="?";
my $buf;
SMLUSB_Clear($hash);
return undef;
}
#####################################
sub SMLUSB_Undef($$)
{
my ($hash, $arg) = @_;
my $name = $hash->{NAME};
delete $hash->{FD};
$hash->{STATE}='close';
$hash->{SMLUSB}->close() if($hash->{SMLUSB});
Log3 $hash, 0, "SMLUSB: Undefined";
return undef;
}
#####################################
# called from the global loop, when the select for hash->{FD} reports data
# This function reads the RAW hex data and hands over the data to parse function when a SML end is detected
# ToDo: Generalize this, so that also other protocols are supported
sub
SMLUSB_Read($)
{
my ($hash) = @_;
my $name = $hash->{NAME};
my $char;
my $mybuf = DevIo_DoSimpleRead($hash);
$mybuf = uc(unpack('H*',$mybuf));
my $usbdata = $hash->{helper}{PARTIAL};
if(!defined($mybuf) || length($mybuf) == 0) {
SMLUSB_Disconnected($hash);
return "";
}
# Find the end of a SML file
# Source: http://de.wikipedia.org/wiki/Smart_Message_Language
# ToDo: Sometimes the beginning (1B1B1B1B010101) is not complete. We should clarify this.
if ((defined $hash->{helper}{PARTIAL}) and ($hash->{helper}{PARTIAL} =~ m/1B1B1B1B1A[0-9A-F]{6}$/)) {
Log3 $hash, 5, "SMLUSB: End of SML found. Looking for a beginning.";
if ($hash->{helper}{PARTIAL} =~ m/^1B1B1B1B01010101/) {
SMLUSB_Parse($hash, $hash->{helper}{PARTIAL} );
$hash->{helper}{PARTIAL} = "";
Log3 $hash, 5, "SMLUSB: Beginning of SML File found start parsing";
} else {
if ($hash->{helper}{PARTIAL} =~ m/^(1B){0,4}01010101/) {
$hash->{helper}{PARTIAL} =~ s/^(1B){0,4}01010101/1B1B1B1B01010101/g;
SMLUSB_Parse($hash, $hash->{helper}{PARTIAL} );
$hash->{helper}{PARTIAL} = "";
Log3 $hash, 5, "SMLUSB: Partial beginning of SML File found. Repaired and start parsing";
} else {
# fR einkommentiert 2 Zeilen
Log3 $hash, 5, "SMLUSB: No beginning of SML File found. Try it anyway, but no guarantee :) -> ". substr($hash->{helper}{PARTIAL},0,50);
SMLUSB_Parse($hash, $hash->{helper}{PARTIAL} );
$hash->{helper}{PARTIAL} = "";
}
}
} else {
$usbdata .= $mybuf;
$hash->{helper}{PARTIAL} = $usbdata;
$hash->{PARTIAL} = "";
}
}
#####################################
sub
SMLUSB_Shutdown($)
{
my ($hash) = @_;
return undef;
Log3 $hash, 0, "SMLUSB: Shutdown";
}
#####################################
#####################################
sub
SMLUSB_Get($@)
{
my ($hash, @a) = @_;
my $msg;
my $name=$a[0];
my $reading= $a[1];
$msg="$name => No Get function ($reading) implemented";
return $msg;
}
#####################################
sub
SMLUSB_Parse($$)
{
my ($hash,$rmsg) = @_;
my $telegramm;
my $scaler;
my $unit;
my $direction = "Bezug";
my $length_all = 0;
my $length_value = 0;
my $smlfile = $rmsg;
# Try to find a SML telegramm in the SML file
Log3 $hash, 5, "SMLUSB: Started parsing";
readingsBeginUpdate($hash);
while ($smlfile =~ m/7707[0-9A-F]{10}FF[0-9A-F]{16,9999}/) {
$telegramm = $&;
# Try to find the OBIS code in the hash of known and supported OBIS codes
# OBIS Code with the start (7707) is always 8 bit long (16 nible)
if (defined $obiscodes{substr($telegramm,0,16)}) {
# OBIS code found start parsing
$length_all = 16;
$length_value = 0;
# Detect length of status word (very static at the moment)
# You can find more information if you google for type length field
# 01 = Statusword not set
# 62 is (6 = no more tl fields and type = unsigned?, 2 = 2 bytes or 4 hex chars)
$length_all+=hexstr_to_signed32int(substr($telegramm,17,1))*2+2;
# Detect the direction of engergy from the status word
$direction = "Bezug" if (substr($telegramm,$length_all-4,2) eq "82");
$direction = "Einspeisung" if (substr($telegramm,$length_all-4,2) eq "A2");
# Detect the unit. Also very static and could be improved
if (substr($telegramm,$length_all,4) eq "621E") {
$unit = "W/h"; }
else {
$unit = "W"; }
$length_all+=4;
# Detect the scaler. Also very static and could be improved
$scaler=10 if (substr($telegramm,$length_all,4) eq "52FF");
$scaler=1 if (substr($telegramm,$length_all,4) eq "5200");
$scaler=1 if (substr($telegramm,$length_all,4) eq "5201");
Log3 $hash, 5, "SMLUSB: SML Telegram found: $telegramm - Scaler: " . substr($telegramm,$length_all,4);
# Detect the value length.
$length_value=hexstr_to_signed32int(substr($telegramm,$length_all+1,1))*2;
$length_all+=2;
# If value is bigger than 9999 W/h change to kW/h
if (sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler) > 9999) {
$scaler = 10000;
$unit = "kW/h"; }
# Output of results only if a meaningful value is found. Otherwise nothing happens.
# fR Auskommentiert > 0
if (sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler) ) {
Log3 $hash, 5, "SMLUSB: Reading BulkUpdate. Value > 0";
if ((substr($telegramm,0,16) eq "770701000F0700FF") || (substr($telegramm,0,16) eq "77070100100700FF")) {
Log3 $hash, 5, "SMLUSB: Setting state";
$hash->{STATE}="$unit: " . sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler) . " - $direction";
if ($direction eq "Einspeisung") {
readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler$
}
else {
readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler$
}
}
else {
readingsBulkUpdate($hash, $obiscodes{substr($telegramm,0,16)}, sprintf("%.2f",hexstr_to_signed32int(substr($telegramm,$length_all,$length_value-2))/$scaler));
}
}
}
else {
# If no known OBIS code can be found the telegramm will be ignored (or logged)
# print "No Obis Code found!: " . substr($telegramm,0,16) ."\n";
# The telegramm header needs at least to be removed from the smlfile to detect the next one.
$length_all=16;
}
# Remove found telegram from remaining sml file.
$smlfile = substr($smlfile,index($smlfile,$&)+$length_all+$length_value,length($smlfile));
}
# No good crc16 function found or developed yet. This is a todo
#my $crc = substr($smlfile,length($smlfile)-4,4);
#print "CRC: $crc - \n";
Log3 $hash, 5, "SMLUSB: Parsing ended";
readingsEndUpdate($hash, 1);
return undef;
}
#####################################
sub hexstr_to_signed32int {
my ($hexstr) = @_;
#die "Invalid hex string: $hexstr"
# if $hexstr !~ /^[0-9A-Fa-f]{1,8}$/;
my $num = hex($hexstr);
return $num >> 31 ? $num - 2 ** 32 : $num;
}
#####################################
sub
SMLUSB_Disconnected($)
{
my $hash = shift;
my $dev = $hash->{DeviceName};
my $name = $hash->{NAME};
return if(!defined($hash->{FD})); # Already deleted
#SMLUSB_CloseDev($hash);
DevIo_CloseDev($hash);
$readyfnlist{"$name.$dev"} = $hash; # Start polling
$hash->{STATE} = "disconnected";
# Without the following sleep the open of the device causes a SIGSEGV,
# and following opens block infinitely. Only a reboot helps.
sleep(5);
DoTrigger($name, "DISCONNECTED");
}
1;
=pod
=begin html
<a name="SMLUSB"></a>
<h3>SMLUSB</h3>
<ul>
The SMLUSB module interprets SML Files which are received over a serial connection.</br>
You can use for example the USB IR Read and write head from volkszaehler.org project.</br>
<br><br>
<a name="SMLUSBdefine"></a>
<b>Define</b>
<ul>
<code>define <name> SMLUSB <devicename>\@baudrate'</code>
<br>
<br>Defines the device over a serial port<br>
</pre>
</ul>
<a name="SMLUSBattr"></a>
<b>Attributes</b>
<ul>
<li><a href="#event-min-interval">event-min-interval</a></li>
</ul>
<br>
</ul>
=end html
=cut
Hallo zusammen,
ich habe jetzt die letzte funktionierende Version im Github wieder aktiv gemacht. Sorry für die Probleme.
Ich werde nächste Woche nochmal prüfen, warum es bei mir läuft aber bei Euch nicht. Der Pollingmode läuft von der Performance her nämlich deutlich besser.
MfG
Matzefisi
Hallo Matzefisi,
die bereitgestellte letzte Version von dir funktioniert bei mir leider auch nicht. Ich bekomme ein einziges
W: 511.00 - Bezug
nach dem fhem-Neustart und im Log steht sekündlich
SMLUSB: End of SML found. Looking for a beginning.
aber es werden keine Werte erfasst und das FileLog wird nicht mit Werten gefüllt. Irgendwie komisch.
Ich hätte gern die Direction-Info, aber irgendwie will es nicht.... schade. Infos zu meiner funktionsfähigen Version sind ja unten in meinem letzten Post.
Viele Grüße, zYloriC
Zitat von: zYloriC am 21 März 2016, 17:16:01
Ich hätte gern die Direction-Info, aber irgendwie will es nicht.... schade. Infos zu meiner funktionsfähigen Version sind ja unten in meinem letzten Post.
Um es nochmal ganz deutlich zu sagen - Es gibt keine Direction-Info!!! Willibauss und ich haben es dir doch schon erklärt. Die Leistung ist immer nur abhängig von deinen aktiven Verbrauchern. Nehmen wir mal an du hast nur einen Kühlschrank mit 180W in Betrieb und es ist dunkel, dann wird die komplette Energie vom Versorger bereitgestellt. Jetzt scheint die Sonne und die Solaranlage liefert 1000W und du schaltest zusätzlich eine Kochplatte mit 1000W ein. Die aktuelle Wirkleistung wird dann mit 1180W angezeigt. Wie soll denn jetzt die Direction-Info aussehen?
Gruß Friedrich
Hey Friedrich,
danke mal für den erneuten Versuch. Davon abgesehen, dass es wie angesprochen leider gar nicht mit dem letzten 70_SMLUSB.pm klappt, will ich kurz über meinen Hager-Zähler berichten.
Bei deinem geschilderten Szenario mit Kühlschrank (180W Verbrauch), Kochplatte (1000W Verbrauch) und PV-Anlage (1000W Ertrag) bin ich mir recht sicher, dass mein Zähler 180W und ein "A-->" (Verbrauch) anzeigen würde. Wenn ich die Kochplatte aus machen würde, wären es 820W (Ertrag) mit einem "<--A"
Mangels Sonne kann ich es jetzt nicht testen, hole es aber nach.
Im Hager EHZ363Z5 Handbuch heißt es
ZitatEnergierichtung
Das Symbol +A –> bzw. -A <– ist aktiviert, sobald positive bzw. negative Wirkenergie oberhalb der Anlaufschwelle registriert wird.
Gruß, zYloriC
@ zYloriC
Ich weiß so langsam nicht mehr, was Du von uns willst.
In Antwort #294 hat Omega-5 Deinen Zähler-Output aufgeschlüsselt. Darin kommen u.a. "Wirkenergie Total Bezug" und "Wirkenergie Total Lieferung" vor, außerdem die "aktuelle Wirkleistung" - offenbar ohne Vorzeichen.
Wenn der Wert von "Wirkenergie Total Bezug" sich von einer Messung zur nächsten ändert, dann beziehst Du Energie. Der Wert von "Wirkenergie Total Lieferung" wird sich gleichzeitig eben nicht ändern, da Strom nun mal nur in die eine oder andere Richtung fließt.
Wenn "Wirkenergie Total Lieferung" sich von einer Messung zur nächsten ändert ("Wirkenergie Total Bezug" ändert sich dann nicht), dann lieferst Du Energie ==> das Vorzeichen von "aktuelle Wirkleistung" ist jetzt anders rum.
Alternativ kannst Du - wie von mir in Antwort #301 beschrieben - auf die Auswertung der vorzeichenlosen "aktuelle Wirkleistung" ganz verzichten und statt dessen die Leistungen für Bezug/Lieferung aus den Zählerständen "Wirkenergie Total Bezug" und "Wirkenergie Total Lieferung" ermitteln. Wie das geht habe ich ja dort beschrieben.
Hallo Florian,
Asche auf mein Haupt. Von deinem Zähler wird doch ein Status übertragen. Ich habe die Analyse der von dir gelieferten Logs weiter geführt, und siehe da mit der Angabe von Mazefisi aus dem Beitrag #292 habe ich durch Suche nach A2 bzw 82 die Stelle gefunden. Allerdings kann der Status mit dem aktuellen Programm nicht gefunden werden.
Zitat von: matzefisi am 10 März 2016, 15:19:21
das bildet mein Modul eigentlich schon ab. Und war steht das meiner Erkenntnis nach im Statusword:
77070100010800FF 640101 A2 01 621E 52FF 56 0001450FA101 --> Einspeisung
77070100010800FF 640101 82 01 621E 52FF 56 000145A40201 --> Bezug
Bei dir sieht das so aus:
77070100010800ff Wirkenergie Total Bezug
62 status (TL[1] + unsigned[8])
82 status --> Bezug bzw. a2 --> Lieferung.
01 valTime = not set
62 unit (TL[1] + unsigned[8])
1e unit = Wh
52 scaler (TL[1] + integer[8])
ff scaler = -1
55 value (TL[1] + integer[32])
02ab1b85 value = 44768133 * 10 hoch-1 in Wh
01 valueSignature = not set
Ich hänge auch mal die kommentierte Ausgabe an. Ganz habe ich es immer noch nicht geschafft.
Bei mir läuft immer noch eine etwas modifizierte 70_SMLUSB.pm Version vom 14.Jan.2015. So lange sie klappt werde ich auch nicht updaten.
@ Mazefisi SML und die endlose Baustelle. ;)
Gruß Friedrich
Irgendwie wurde der Ton etwas ruppig... ich danke aber allen für die Unterstützung und Geduld mit meinen Fragen!
Danke Friedrich für die erneute Analyse. Bedeutet das nun, dass mein Zähler die Direction-Info liefert, aber nicht ganz dem Standard entspricht?
Mein altes 70_SMLUSB-Modul enthält zwar auch " $direction = "Bezug" & $direction = "Einspeisung"" aber es zeigt diese Infos nicht an. Alle neueren SMLUSB Versionen aktualisieren keine Werte. Die Schnittstelle ist OPENED und es werden ganz viele SML-Message-Enden gefunden, aber keine Anfänge...
Gibt es absehbare Änderungen, die ich in der letzten 70_SMLUSB vornehmen muss, damit mein Zähler auch "Bezug & Einspeisung" nutzt bzw. anzeigt?? Oder muss ich erstmal abwarten und auf meiner alten SMLUSB bleiben?
Nochmal danke an alle. Schon jetzt, auch ohne Bezug/Einspeisung ein super Modul!!
Viele Grüße, zYloriC
Hallo zusammen,
der Ton ist doch hier zum Glück noch nicht ruppig geworden und es ist ja auch nicht nötig. :)
@zYloriC: Wie Du schon gemerkt hast habe ich leider nich all zu viel Zeit für FHEM und die Module. Und neben dem SML Modul habe ich auch noch ein paar andere Sachen, die ich für mich gerne am laufen hätte (BBQ Thermometer, NIBE Heizung, 2ter und 3ter FHEM RPi im Netz :) ) Daher warte bitte erstmal etwas ab, denn:
Ich arbeite gerade an dem Problem:
Zitat@ Mazefisi SML und die endlose Baustelle. ;)
Icinger ist gerade dabei den SML Part in sein OBIS Modul einzubauen. Bedeutet dass wir künftig für die Stromzähler nur noch ein Modul haben und damit dann auch das Troubleshooting (hoffentlich) etwas einfacher wird, das mehr Leute an dem Modul bauen. Ich unterstütze Icinger gerade etwas mit den Tests. Sobald er es freigibt, werde ich hier eine Entsprechende Mitteilung geben und mein Modul dann einstellen.
MfG
Matzefisi
Zitat von: zYloriC am 22 März 2016, 22:59:34
Danke Friedrich für die erneute Analyse. Bedeutet das nun, dass mein Zähler die Direction-Info liefert, aber nicht ganz dem Standard entspricht?
Hallo Florian,
SML und Standart, das schließt sich fast aus. ;)
Im Protokoll sind parametrierbare und herstellerspezifische Daten möglich. Es ist aufwendig sich da durch zu wursteln. Wenn man nach SML sucht, sieht man, dass es auch einige Bibliotheken für verschiedene Programmiersprachen gibt. Ich suche auch noch nach einem Programmablaufplan für einen Parser. Wenn es dich interessiert gibt es hier zwei Protokollbeschreibungen V1.02 http://www.itrona.ch/downloads.html (http://www.itrona.ch/downloads.html) und hier V1.03 http://www.emsycon.de/downloads/SML_081112_103.pdf (http://www.emsycon.de/downloads/SML_081112_103.pdf).
In diesem Zusammenhang kommt dem "Typ-Length-Field" eine Bedeutung zu. Mazefisi testet an der entsprechenden Stelle auf "64"hex d.h. Unsigned24 (3 Byte) und das gibt es im Standardprotokoll nicht (EMSYCON GmbH, Dr. M. Wisy Seite 35/36).
Bei dir sind es "62"hex --> Unsigned8 --> 1 Byte "82" oder "A2" für den Status. Ich gehe mal davon aus, dass Mazefisi das aus der Ausgabedatei eines anderen Zählers hat, oder es sich schlicht um einen Übertragungsfehler handelt.
Jedenfalls müsste
man ;) an dieser Stelle im Programm ansetzen.
Gruß Friedrich
Hallo zusammen,
ich habe mir gerade nochmal zYloriC´s SML code angeschaut und durch meinen Parsertest laufen lassen. Im Parsertest funktioniert das Erkennen der Energierichtung einwandfrei. Mir fällt aber gerade ein, dass ich einen Commit zugelassen habe und es eine Änderung im FHEM gegeben hat, die den State beeinflusst haben. (Das Problem liegt glaube ich in Zeile 307)
@zYloriC:
Geht auch dieses Version nicht bei dir? https://github.com/matzefisi/fhem-70_SMLUSB/blob/master/70_SMLUSB.pm
Ich habe die Änderungen bzgl. Polling Mode erstmal wieder entfernt und demnach müsste es zumindest laufen. Es kann sein dass es noch Probleme mit dem STATE gibt, aber die Readings sollten zumindest gefüllt werden.
Du könntest dir Quick&Dirty aber ein neues Reading mit der Flussrichtung erzeugen, indem du in dem Modul eine Zeile hinzufügst (z.B. in Zeile 274)
readingsBulkUpdate($hash, $obiscodes{"direction")}, $direction);
Und dann kannst Du ein stateFormat Attribut anlegen mit folgendem Inhalt:
W: power - direction
Ich kann es leider gerade nicht testen, aber damit sollte die Energierichtung bei dir wieder auftauchen.
MfG
Matzefisi
Hallo Matthias,
ich lese, dank Deiner Hilfe meinen Stromzähler MT681 EDL21/40 mit dem Modul SMLUSB und dem USB-Infrarot-Lesekopfes von Udo aus. Das hat auch gut funktioniert bis vor kurzem. Aber seit Ende Februar bekomme ich immer folgende Fehlermeldung in fhem..log Datei. Dies passiert bei jedem Auslesen des Zählers. Mir ist das jetzt erst aufgefallen nach dem das System sehr träge wurde und die fhem...log immer größer wurde. Ich habe am System nichts geändert nur upgedatet. Hast Du eine Idee was da schief läuft?
Auszug aus der fhem-2016-02.log
2016.02.28 14:18:30 3: powerZaehler device opened
Useless use of subtraction (-) in void context at (eval 30) line 1, <$fh> line 70.
2016.02.28 14:18:32 3: Verbrauch: Bareword "statZaehlerstand" not allowed while "strict subs" in use at (eval 30) line 1, <$fh> line 70.
Bareword "Bezug" not allowed while "strict subs" in use at (eval 30) line 1, <$fh> line 70.
2016.02.28 14:18:32 1: Including ./log/fhem.save
2016.02.28 14:18:32 3: WARNING: unsupported character in reading Zählerstand-Bezug-Total (not A-Za-z/\d_\.-), notify the SMLUSB module maintainer.
2016.02.28 14:18:32 3: WARNING: unsupported character in reading Zählerstand-Tarif-1-Bezug (not A-Za-z/\d_\.-), notify the SMLUSB module maintainer.
2016.02.28 14:18:32 1: usb create starting
2016.02.28 14:18:34 3: Probing CUL device /dev/ttyAMA0
2016.02.28 14:18:34 3: Can't open /dev/ttyAMA0: Keine Berechtigung
2016.02.28 14:18:34 1: usb create end
2016.02.28 14:18:34 0: Featurelevel: 5.7
2016.02.28 14:18:34 0: Server started with 19 defined entities (fhem.pl:10769/2016-02-08 perl:5.020002 os:linux user:fhem pid:10783)
2016.02.28 14:18:35 1: PERL WARNING: Useless use of subtraction (-) in void context at (eval 34) line 1.
2016.02.28 14:18:35 2: Bareword "statZaehlerstand" not allowed while "strict subs" in use at (eval 34) line 1.
Bareword "Bezug" not allowed while "strict subs" in use at (eval 34) line 1.
2016.02.28 14:18:35 1: PERL WARNING: Useless use of subtraction (-) in void context at (eval 35) line 1.
2016.02.28 14:18:35 2: Bareword "statZaehlerstand" not allowed while "strict subs" in use at (eval 35) line 1.
Bareword "Bezug" not allowed while "strict subs" in use at (eval 35) line 1.
2016.02.28 14:18:35 1: PERL WARNING: Useless use of subtraction (-) in void context at (eval 36) line 1.
2016.02.28 14:18:35 2: Bareword "statZaehlerstand" not allowed while "strict subs" in use at (eval 36) line 1.
Bareword "Bezug" not allowed while "strict subs" in use at (eval 36) line 1.
Hi Oswald,
das liegt an dem Update auf FHEM 5.7. Dort werden Readings nun auf korrekte Namen überprüft.
Bitte probier mal die vorletzte Version von meinem Modul: https://github.com/matzefisi/fhem-70_SMLUSB/blob/master/70_SMLUSB.pm
Aber bitte sichere Deinen Stand vorher.
MfG
Matthias
Zitat von: matzefisi am 30 März 2016, 07:57:43
das liegt an dem Update auf FHEM 5.7. Dort werden Readings nun auf korrekte Namen überprüft.
Hallo Matthias,
was ich nicht verstehe ist, dass ich keine solchen Fehlermeldungen bekomme. Mein 70_SMLUSB.pm ist noch vom 5. Feb. 2014 und ich habe fast jedes FHEM Update mit gemacht. Ich will mich ja nicht beschweren, aber ist schon seltsam. ;)
An den Umlauten in den Readings kann es demnach also nicht liegen, es sei denn es hat mit den LOCALs im OS zu tun? Aber da bin ich nicht der Fachmann.
Gruß Friedrich
Hi Friedrich,
das ist komisch, denn mit der Version 5.7 (glaube ich) wurde eine Überprüfung der Readings in der fhem.pl scharfgeschaltet.
Siehe https://github.com/mhop/fhem-mirror/blob/master/fhem/fhem.pl Zeile 2602
Hier wurde das ganze wohl besprochen: https://forum.fhem.de/index.php/topic,45788.0.html
Hast Du evtl. noch kein Update auf die 5.7 gemacht?
MfG
Matthias
Zitat von: matzefisi am 31 März 2016, 07:49:27
Hast Du evtl. noch kein Update auf die 5.7 gemacht?
Hallo Matthias,
wie schon im Beitrag vom 30.03. geschrieben mache ich mindestens einmal die Woche ein Update von FHEM. Aktuell ist:
Zitat2016.03.30 18:54:05 0: Featurelevel: 5.7
2016.03.30 18:54:05 0: Server started with 57 defined entities (fhem.pl:11144/2016-03-29 perl:5.014002 os:linux user:fhem pid:8423)
Linux Version ist :
ZitatLinux version 4.1.13-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015
Welche Perl Version hast du denn? Vieleicht liegt es da dran.
Gruß Friedrich
Hi Friedrich,
meine Perl Version kann ich leider gerne nicht nachschauen, aber die ist schon etwas älter. Zitatperl -v
This is perl 5, version 14, subversion 2 (v5.14.2) built for arm-linux-gnueabihf -thread-multi-64int
Vielleicht hängt es ja damit zusammen. Aber wenn den Regex-Code richtig interpretiere dürfen keine Umlaute vorkommen, was aber bei Einigen Readings der Fall war.
MfG
Matthias
Hallo zusammen,
Icinger hat seit einigen Tagen das SML Protokoll in sein Obis Modul aufgenommen, so dass wir die beiden verschiedenen Stromzähler Protokolle nun in einem Modul vereint haben. Ich konnte ihn durch ein paar Tests unterstützen und bei mir läuft es einwandfrei und sogar deutlich performanter als mein SMLUSB.
Daher jetzt mein Vorschlag an alle SMLUSB Benutzer: Guckt Euch bitte das 47_OBIS Modul von Icinger an und stellt wenn möglich um, da ich mein Modul nicht weiterentwickeln werde, sondern Icinger dann beim 47_OBIS unterstütze.
Weitere Informationen zu dem neuen Modul findet ihr hier: https://forum.fhem.de/index.php/topic,51948.0.html
MfG
Matthias