SML Stromzähler per USB Schreib-Lesekopf?

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

Vorheriges Thema - Nächstes Thema

optimizer

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

eldrik

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

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

stenny73

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
FHEM auf XEN, Ubuntu-Server 14.04   - HM-Lan - Max - ZWave -WS1080 -BlueTooth

FHEM auf Ubuntu-Server 14.04   - HM-LAN

FHEM auf Raspberry Pi   - CSM für Max - HM-USB - WiFi-LED

eldrik

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

stenny73

Super.
Dann hab ich ja für das Wochenende doch was zum basteln......
FHEM auf XEN, Ubuntu-Server 14.04   - HM-Lan - Max - ZWave -WS1080 -BlueTooth

FHEM auf Ubuntu-Server 14.04   - HM-LAN

FHEM auf Raspberry Pi   - CSM für Max - HM-USB - WiFi-LED

stenny73

@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"}, ] }}


FHEM auf XEN, Ubuntu-Server 14.04   - HM-Lan - Max - ZWave -WS1080 -BlueTooth

FHEM auf Ubuntu-Server 14.04   - HM-LAN

FHEM auf Raspberry Pi   - CSM für Max - HM-USB - WiFi-LED

eldrik

#142
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

Q3d Datenblatt, letzte Seite Übersetzung der Werte:
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

Viel Erfolg.

Greetz
Eldrik

stenny73

FHEM auf XEN, Ubuntu-Server 14.04   - HM-Lan - Max - ZWave -WS1080 -BlueTooth

FHEM auf Ubuntu-Server 14.04   - HM-LAN

FHEM auf Raspberry Pi   - CSM für Max - HM-USB - WiFi-LED

eldrik

#144
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

fdisk

#145
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


matzefisi

Hi fdisk,

könntest Du mal bitte das logging aktivieren?
verbose = 5

MfG
Matthias

fdisk

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

matzefisi

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

matzefisi

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