OBIS Parse Error bei Stromzähler ED300L

Begonnen von roli, 13 Oktober 2022, 15:00:20

Vorheriges Thema - Nächstes Thema

roli

Ich versuche meinen  ED300L Stromzähler mit IR/USB Device zu lesen  - leider bekomme ich hierbei  immer einen  CRC Fehler.


2022.10.13 14:16:29 5: OBIS (EDL300) - SML-Parse 1B1B1B1B0101010176070012107A5D5B6200620072630101760101070012097D1F490B06454D48010E153C4C180101630C290076070012107A5D5C620062007263070177010B06454D48010E153C4C18070100620A7F7F72620165097D57107A770701014702037F0101010104454D4801770701000000097F010101010B06454D48010E153C4C1801770701000108007F6401012201621E527F5600186F073B01770701000208007F6401012201621E527F56001058243E01770701000108017F0101621E527F5600016F611801770701000208017F0101621E527F56001058243E01770701000108027F0101621E527F56001600262301770701000208027F0101621E527F56000000000001770701001007007F0101621B527F557F7F7E6201770701014702057F0172620165097D57110101030209313D4E70112E3760551A403D0E1460517B020D58035B3072391B58062B1A48491F646C6C433F0C5F4D3F5A202C107A0101016376760076070012107A5D5F6200620072630201710163622A00001B1B1B1B1A014636


So wie es aussieht ( wenn ich das Protokoll reichtig verstehe )  sind wohl alle Daten richtig angekommen, aber irgend etwas passt den
Parse Modul offensichtlich nicht.  Schade dass man hier nicht mehr Details bekommt.
Hat irgend jemand eine Idee was hier falsch ist.

Meine FHEM config ist :


define EDL300  OBIS /dev/ttyUSB0@9600,7,E,1 SML
  attr EDL300  event-min-interval 1800
  attr EDL300  interval           1800
  attr EDL300  verbose  5

setdefaultattr group   Logdatei

define   FileLog_Strom   FileLog  /var//log/Stromz-%Y_%m.log  EDL300


FHEM auf Debian Wheezy(RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp, GPIO based Relais-Schalter;i2c Bus
Integration von Sonnenbatterie Eco8;
Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

mrb

#1
Hi @roli oder allen anderen,

ich frage mal doof da ich gerade versuche meinen ED300L mit einem infrarot lesekopf auszulesen. Ich stecke den Lesekopf doch blos per USB in den pi. und dann halt den kopf per usb-magnet an den magnetischen lesekopf , oder?
Dann halt im fhem folgenden befehl absetzen
define HK_Zaehler  OBIS /dev/ttyUSB0@9600,7,E,1 SML
dann sollte er doch daten geliefert bekommen. bei mir macht er gar nichts :(

EDIT:
okay vergiss es es war die eine verlängerung des usb und anscheinend war der kopf nicht korrekt auf dem leser gesetzt........

roli

Auf die schnelle.

1: LEsekopf richtig plazieren
2: putty öffnen   und prüfen ob DAten kommen  mit
   stty -F /dev/ttyUSB0  1:0:8bd:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

cat /dev/ttyUSB0 |od -tx1                   -- sollte Daten liefern


 

Ohne  stty wie oben, ging bei mir nichts !  FAlls DAten kommen, dann ist alles ok.


HAbe  stty  zeile  in mein   /etc/init.d/fhem    startbereich eingefügt.

MEine FHEM Anweisungen sehen wie folgt aus:

#Definitionen für  EnBW Stromzähler  ED300L   
#
#  Erlaubt das Anzeigen der aktuellen Stromzähler Werte über  einen IR USB Schreib-Lesekopf.
#   
#  IR LEsekopf ist mit FT230x Chipattr editConfig
#  USB schnittstelle arbeitet  mit   
#   stty -F /dev/ttyUSB0  1:0:8bd:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
#
#  Ich polle die Stromdaten nur alle  600 sekunden  -- sprich alle 10 min

setdefaultattr
setdefaultattr room    Stromzaehler
setdefaultattr group   1 - Stromzaehler aktuell

#    define EDL300 OBIS /dev/ttyUSB0  SML    verwende addressierung  mittels ID, da sich Portnummern änden können
 define EDL300 OBIS  /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_D308PZ22-if00-port0  SML
  #attr EDL300 room           hidden
  attr EDL300 alignTime       00:00
  attr EDL300 interval        60
  attr EDL300 pollingMode     on
  attr EDL300 suppressReading total_feed_Ch*
  # Mittelwerte pro Interval
  attr EDL300 event-aggregator power:120:linear:mean,total_consumption:300:none:v,total_consumption_Ch1:300:none:v,total_consumption_Ch2:300:none:v,total_feed:300:none:v
  attr EDL300 event-on-change-reading .*
  attr EDL300 unitReadings off
  attr EDL300 stateFormat {sprintf("%.0f kWh", (ReadingsVal($name,"total_consumption",0) / 1000) ) . " / ". sprintf("%.0f W", ReadingsVal($name,"power",0)). " / ".ReadingsVal($name,"state",0)}
 


setdefaultattr group         2 - Aktuelle Einzelwerte  Stromzaehler
setdefaultattr devStateStyle style="text-align:right;;;;"
setdefaultattr stateFormat   { sprintf("%8.0f kWh", (ReadingsVal( $name,"state",0) / 1000) ) } 

define E_HT_Verbrauch  readingsProxy EDL300:total_consumption_Ch1
  attr E_HT_Verbrauch  alias         HT Verbrauch
  attr E_HT_Verbrauch  sortby 1

define E_NT_Verbrauch  readingsProxy EDL300:total_consumption_Ch2
  attr E_NT_Verbrauch  alias         NT Verbrauch
  attr E_NT_Verbrauch  sortby 2

  define E_Einspeisung   readingsProxy EDL300:total_feed
   attr E_Einspeisung   alias         Einspeisung 
   attr E_Einspeisung   devStateStyle style="text-align:right;;color:green;;"
   attr E_Einspeisung   sortby 3
   

   
setdefaultattr
 
#
# Statistics
 
define haus.strom  statistics  EDL300
  attr haus.strom  ignoreDefaultAssignments 1
  attr haus.strom  deltaReadings     total_consumption,total_consumption_Ch1,total_consumption_Ch2,total_feed
  attr haus.strom  singularReadings  EDL300:total_consumption:Delta:(Year|Month|Day|Hour)|EDL300:total_consumption_Ch1:Delta:(Year|Month|Day|Hour)|EDL300:total_consumption_Ch2:Delta:(Year|Month|Day|Hour)|EDL300:total_feed:Delta:(Year|Month|Day|Hour)
  attr haus.strom  room hidden

setdefaultattr room   Stromzaehler
setdefaultattr group  3 - Statistik Stromverbrauch
 
defmod haus.strom.rg  readingsGroup  < >,<HT-Tarif>,<NT-Tarif>,<Einspeisung> \
    EDL300:statTotal_consumption_Ch1Day,statTotal_consumption_Ch2Day,statTotal_feedDay \
EDL300:statTotal_consumption_Ch1DayLast,statTotal_consumption_Ch2DayLast,statTotal_feedDayLast \
EDL300:statTotal_consumption_Ch1Month,statTotal_consumption_Ch2Month,statTotal_feedMonth \
EDL300:statTotal_consumption_Ch1Year,statTotal_consumption_Ch2Year,statTotal_feedYear 

  attr haus.strom.rg alias       Verbrauch
   
  # nameStyle bezieht sich auf Spaltenüberschrift  und Row titel   ,   syle auf die Werte
  attr haus.strom.rg nameStyle   style='text-align:right;;color:blue'
  attr haus.strom.rg style       style='text-align:right;;color:red '   
  attr haus.strom.rg mapping {\
     if    ($ROW == 2) {return "Heute"}\
     elsif ($ROW == 3) {return "Gestern"}\
     elsif ($ROW == 4) {return "Monat"}\
     elsif ($ROW == 5) {return "Jahr"}\
     }
  attr haus.strom.rg  noheading 1
  attr haus.strom.rg  notime    1
  attr haus.strom.rg  valueFormat { sprintf("%.0f kWh", ($VALUE/1000) )}
  attr haus.strom.rg  valueStyle  style='width:200px;;color:black'
 
 #attr haus.strom.rg  cellStyle   { if (($ROW > 1)&&( $COLUMN > 0 )) { return 'style="width:200px;;color:black"'} } 
 
 
#  weitere  formattierungs Beispiele
#  attr haus.strom.rg nameStyle    { if ( $COLUMN > 1) { return 'style="text-align:right;;font-weight:bold"'} } 
#  attr haus.strom.rg   cellStyle  { if ($ROW == 16) { return ($READING ne 'state') ? 'style="font-weight:bold"' : 'style="font-weight:normal"' }}

# Logging  von Stromwerten
#
#   Strom_day-%Y_%m.log    Aktueller Verbrauch von HT NT  und Einsteisung in  Watt  alle  15 Minunten  -- Standard FTHEM Logformat
#
#   Strom_sum-%Y_%m.log    Summe  von Verbrauch  am Ende des TAges   -- Format :  Y-MM-DD HT-Verbrauch  NT-Verbrauch Einspeisung
#
define Strom_Line_day  dummy
  attr Strom_Line_day  room  hidden

setdefaultattr group         5 - Logdateien  Stromverbrauch
 
define FileLog_Strom_day FileLog /var/log/fhem/Strom/Stromz_day-%Y_%m.log   Strom_Line_day
  attr FileLog_Strom_day logtype text
 
 
# Format der Daten in Filelog    YY-MM-DD HT-Verbrauch  NT-Verbrauch Einspeisung
define Strom_Line  dummy
  attr Strom_Line  room  hidden
 
 
define FileLog_Strom FileLog /var/log/fhem/Strom/Stromz_sum-%Y_%m.log   Strom_Line
  attr FileLog_Strom logtype text
 
 
# Plot Definitionen  -- verweis auf entsprechendes Gplot   rw_power bzw  rw_power_day
setdefaultattr group         4 - Stromverbrauch Diagram
 
define Diag_Strom_day  SVG   FileLog_Strom_day:rw_power_day:CURRENT
 attr  Diag_Strom_day  label "Stromverbrauch je 15min" 
 #attr  Diag_Strom_day  fixedrange 2days
 
 
#define Diag_Strom  SVG   FileLog_Strom:rw_power:CURRENT
# attr  Diag_Strom  label "Stromverbrauch"
#attr  Diag_Strom  plotmode  gnuplot-scroll-svg
 
 
setdefaultattr room hidden

# Log alle 15 min die akt Werte und am Ende des Tages  jeden Tag  den Wert

define    n_Strom_Line_d      at  +*00:15:00         { rw_writeStromDayLog() }
  attr    n_Strom_Line_d      alignTime 00:00:00
 
define    n_Strom_Line        at  +*23:58:01         { rw_writeStromLog() }   
  attr    n_Strom_Line        alignTime 00:00:00     

setdefaultattr 


Der Perl Code:

###############################################################################
#
#  Schreibe Stromzählerdaten


sub rw_writeStromDayLog()
{
 
   #  logfile   /var/log/fhem/Strom/Stromz_day-%Y_%m.log 
   #   im Standard Format  über >Dummy geschrieben

    my $pw= ReadingsVal("EDL300","power", 0 );
my $w1= ReadingsVal("EDL300","statTotal_consumption_Ch1Hour", 0 );
    my $w2= ReadingsVal("EDL300","statTotal_consumption_Ch2Hour", 0 );
    my $w3= ReadingsVal("EDL300","statTotal_feedHour", 0 );
my $einsp = 0;
my $verbr = 0;

if ($pw < 0)
  { $einsp = abs( $pw ) ; }
else
  { $verbr =  $pw ; }


    my $dat= sprintf("%.0f %.0f %.0f %.0f %.0f",$verbr,$einsp,$w1,$w2,$w3);     
fhem ("set Strom_Line_day  $dat");


}   
 
sub rw_writeStromLog()
{
 
   #  logfile   /var/log/fhem/Strom/Stromz_sum-%Y_%m.log 
   
 

my $w1= ReadingsVal("EDL300","statTotal_consumption_Ch1Day", 0 )/1000;
    my $w2= ReadingsVal("EDL300","statTotal_consumption_Ch2Day", 0 )/1000;
    my $w3= ReadingsVal("EDL300","statTotal_feedDay", 0 )/1000;
my $z1= ReadingsVal("EDL300","total_consumption_Ch1", 0 )/1000;
    my $z2= ReadingsVal("EDL300","total_consumption_Ch2", 0 )/1000;
    my $z3= ReadingsVal("EDL300","total_feed", 0 )/1000;


    my $dat= sprintf("%.0f %.0f %.0f %.0f %.0f %.0f\n",$w1,$w2,$w3,$z1,$z2,$z3);     
       
fhem ("set Strom_Line  $dat");

}


Und das Erbenis dann siehe Anhang
FHEM auf Debian Wheezy(RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp, GPIO based Relais-Schalter;i2c Bus
Integration von Sonnenbatterie Eco8;
Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag