SML Stromzähler per USB Schreib-Lesekopf?

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

Vorheriges Thema - Nächstes Thema

Edi77

DANKE, das hat mir weiter geholfen.
Jetzt muss ich nur noch abwarten bis die Sonne noch mal scheint ;)
Master FHEM 6 als VM auf ESX Ubuntu 20.04 LTS mit MAXCube/MAX!/FS20|TabletUI|Flightradar|Tasmota|TTN Lora|CCU3 HomematicIP|RPi mit GammaScout|MQTT EasyESP 8266|LuftdatenInfo|deCONZ HUEDev|probemon|Siemens Logo|P4D|3D PRINTER RAISE3D

majorshark

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
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

osid-timo

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
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS

willybauss

Am besten versuchst Du es erst mal anhand der Beispielkonfiguration im Wiki. Wenn das nicht zum Erfolg führt Config und Fehlermeldungen posten.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

osid-timo

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
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS

Crawler

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

FHEM auf Raspi + HMLan + 14 Aktoren + OBIS(Strom) über GPIO

osid-timo

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
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS

willybauss

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.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

matzefisi

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

abc2006

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

ggf werde ich mich mal mit dem SMLUSB-Modul auseinandersetzen ;-)

Grüße
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

willybauss

MT681 sendet doch in D0, also Klarschrift unverschlüsselt? Dann wäre dafür das OBIS-Modul 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.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

matzefisi

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.

Omega-5

#282
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
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),

osid-timo

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
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS

willybauss

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 ...
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS