SML Stromzähler per USB Schreib-Lesekopf?

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

Vorheriges Thema - Nächstes Thema

ToSchu

#180
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  ;)

Nemo0815

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

zYloriC

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


Nemo0815

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} );

onkel-tobi

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

fhem-raspi-newbie

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

Omega-5

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
RaspberryPi2, nanoCUL, 3x DS18B20, FS20: 4x Funk-Schalter ST-4, LaCrosseGW,
HomeMatic: HMLAN, HM-WDS10-TH-O, HM_MYS_RelaisBoard,
I2C: HYT221 über modifiziertes Modul I2_I2C_SHT21.pm (Q&D),

Odie

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)
fhem auf Raspi, USB-IR-Leseköpfen , CUL 868Mhz, CUL 433Mhz, PCA301, LaCrosse, Homematic

zYloriC

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!!

matzefisi

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


Odie

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?
fhem auf Raspi, USB-IR-Leseköpfen , CUL 868Mhz, CUL 433Mhz, PCA301, LaCrosse, Homematic

matzefisi

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

Odie

SUPER HINWEIS :)
Ich werde es übers Weekend testen.
Danke dir ganz herzlich :)
fhem auf Raspi, USB-IR-Leseköpfen , CUL 868Mhz, CUL 433Mhz, PCA301, LaCrosse, Homematic

zYloriC

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

matzefisi

Hi zYloriC,

genau. Das war für Odie gedacht. Von dir benötige ich wirklich ein paar Pakete zur Analyse.

Mfg
Matthias