FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: patmen am 25 November 2019, 11:38:18

Titel: 47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 25 November 2019, 11:38:18
Hallo,

ich nutze das OBIS Modul und möchte konstruktiv an zwei Erweiterungen mitwirken.

Es geht einmal um den Hutschienenzähler DRS110M BG-Etech.
https://www.bg-etech.de/download/manual/DRS110M.pdf
Ich habe einmal alle OBIS-Typen durchprobiert und scheinbar ist dafür noch keine Unterstützung vorhanden.

Zum anderen geht es um den elektronischen Haushaltszähler Pafal 20ec3gr . Der funktioniert im Prinzip als MeterType=VSM102 allerdings scheint noch keine Unterstützung für die Baudratenumschaltung von 300 auf 9600 vorhanden zu sein.
Edit: Link zum Produktdatenblatt
http://www.apator.com/uploads/files/de/electricity/ec-3-de.pdf

Technisch ist das bereits alles entwickelt. Ich habe vor Jahren ein Python Projekt dafür gemacht.
https://github.com/menschel/pyehz/blob/master/iec62056.py
Als technische Referenz kann ich die folgende Seite empfehlen.
http://manuals.lian98.biz/doc.de/html/g_iec62056_struct.htm#IEC%2062056-21%20:%20Telegramm%20Struktur

Beschreibung der Nachrichten findet man sonst in der Norm ab Seite 41.
http://read.pudn.com/downloads147/doc/comm/637727/IEC%2062056-21-2002.pdf

Technische Details zu DRS110M:
Der Hutschinenzähler "DD10-S08" vom Hersteller YTL wurde von BG-Etech unter dem Namen DRS110M vertrieben.
Anschluss erfolgt über Serielle Leitung RS-485 mit fester Baudrate 9600 Baud 7E1 . Protokoll ist IEC62056 Protocol A bzw. IEC1107.

Echte Dokumentation ist schwer zu finden. Bei genauerer Suche findet man ab 2012 Beiträge in diversen Foren und Blogs.
https://www.elektronik-kompendium.de/forum/forum_entry.php?id=176634&page=0&category=all&order=time
https://passer-domesticus-in-sole.blogspot.com/2012/09/rs485-en-modbus-en-nu.html

Im Volkszähler Projekt wurde ein Perl Skript veröffentlicht.
https://wiki.volkszaehler.org/hardware/channels/meters/power/eastron_drs155m

Was man so als Auslesedaten bekommt:
$ python3 iec62056.py -c readout_drs110m -i 1613300152
Voltage:227.2V
Current:0.0A
Frequency:50.0Hz
Active Power:0.0kW
Reactive Power:0.0VAr
Apparent Power:0.0VA
Active Energy:4888Wh
Time:19112703192714 <-- Das Datumformat ist "%y%m%d0%w%H%M%S" also Jahr, Monat, Tag, Wochentag 00(Sonntag)...06(Samstag), Stunde, Minute, Sekunde
Temperature:16°C <-- Bei der Temperatur hat der Entwickler einen Bug eingebaut. Da kommt quasi die Temperatur als Hex Wert, davon jeweils eine Stelle und mit 0x30 aufaddiert als Konvertierung nach ASCII.
Serial Port:0
Baudrate:4
Meter ID:1613300152

Auszugsweise die Kommunikation  mit dem Zähler Nummer 1613300152:
>> "/?001613300152!\r\n" entspricht /?001613300152!<CR><LF>
wird nach dem zweiten Mal senden beantwortet mit
<< "/YTL:001613300152\r\n" entspricht /YTL:001613300152<CR><LF>
Hersteller YTL , ungültiger Baudraten Identifier ":" daher Protocol A , Nummer 1613300152

danach schickt man das ACK 0x06 mit dem ungültigen Baudraten Identifier ":" zurück um in den Programming Mode zu gelangen.
>> "\x060:1\r\n" entspricht "<ack>0:1<CR><LF>"

daraufhin kommt die Passwortabfrage vom Gerät als P0 Nachricht zurück
<< "\x01P0\x02(00000000)\x03`" entspricht <SOH>P0<STX>(00000000)<ETX><BCC>

danach schickt man das Passwort (Werkseitig 0) als P1 Nachricht zum Zähler
>> "\x01P1\x02(00000000)\x03a" entspricht <SOH>P1<STX>(00000000)<ETX><BCC>

wird bestätigt mit
<< "\x06" entspricht <ack>

Danach kann man die einzelnen Register per R1 Nachricht lesen, beispielhaft für Register 0
>> "\x01R1\x0200000000()\x03c" entspricht  <SOH>R1<STX>(00000000)<ETX><BCC>

darauf bekommt man eine Antwort
<< "\x0200000000(2272)\x03\x07" entspricht <STX>00000000(2272)<ETX><BCC>

Wenn man fertig ist sollte man sich mit B0 vom Gerät abmelden
>> "\x01B0\x03q"  entspricht <STX>B0<ETX><BCC>



Technische Details zu Pafal 20ec3gr:
Wird über die optische D0 Schnittstelle ausgelesen. Variable  Baudrate mit 7E1, initial bei 300 Baud, kann man umschalten auf 9600 Baud, wenn man in der acknowledge_option_select Nachricht das entsprechende Flag setzt. Protokoll ist IEC62056 Protocol C . Hier fehlt im Prinzip nur die Umschaltung der Baudrate. Die Auslesedaten sind eh sehr bescheiden. Ich verwende einen USB-IR Adapter aus dem Volkszähler Projekt an einem Raspberry Pi Zero via ser2net.
https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-usb-ausgang

Gruß,
Patrick


Ganz Großes Edit: Einmal sortiert und zusammengefasst.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 22 Dezember 2019, 16:52:18
Hallo nochmal,

ich habe den funktionalen Teil nun in Perl nachprogrammiert und in ein Github Repo gepackt.
https://github.com/menschel/drs110m_perl/blob/master/test_drs110m.pl

#edit: Beispielausgabe
$ perl test_drs110m.pl
         cosphi : 0.585
        Current : 0.3
   Active Power : 40
           Time : 2019-12-22 17:22:05
Reactive Power : 0
  Active Energy : 16
        Voltage : 227.8
Apparent Power : 80
    Temperature : 28
      Frequency : 50


Gruß,
Patrick
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 10 Januar 2020, 09:36:02
Hallo nochmal,

der DRS110M wäre nun als Perl Modul verfügbar.
https://github.com/menschel/drs110m_perl/blob/master/iec1107.pm

Gruß,
Patrick
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Ralf_62 am 05 September 2020, 13:51:39
Hallo,
ich hoffe Du bist bei Deinem Projekt weitergekommen und kannst mir weiterhelfen. Ich habe auch einen Pafal 20EC3gr Zähler und würde den auch gerne mit dem OBIS Modul auslesen.
Kannst Du mir einen Rat geben, bzw. hast Du schon eine Erweiterung fertig?
Danke und viele Grüße
Ralf
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 08 Januar 2021, 21:03:53
Sorry, hab keine E-Mail Benachrichtigung bekommen, dass es hier eine Antwort gab.

Das Thema DRS110M wartet auf Integration seitens Maintainer, @Icinger , ist schon 'ne Weile her.

Der Pafal ist seit gut einem Jahr in Betrieb.

Wenn der IR Kopf auf dem gleichen Gerät wie FHEM läuft:

define Stromzaehler OBIS <serial>@300,7,E,1 VMS102 9600
es empfiehlt sich eine definition per ID, also sowas in der Art.
/dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_0072D0A9-if00-port0


Wenn du ser2net nutzt:
   
define Stromzaehler OBIS  <HOSTNAME>:<PORT>@300,7,E,1 VSM102
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 24 Dezember 2021, 16:44:44
Hallo Patrick,

ich schlage mich nun schon über 6 Jahre mit den DRS110M-Zählern herum. Seit der Installation habe ich schon mehrere Versuche unternommen diesen Zählern ihre Daten zu entlocken. Außer der Seriennummer und dem Herstellernamen ist mir nichts weiter gelungen. Seither lese ich die Daten der 44 Zähler einmal im Monat manuell ab und trage die Werte in meine Excel-Tabelle ein. So hatte ich mir das bei der Installation 2015 natürlich nicht gedacht, aber ich hatte anderes zu tun als mich immer wieder mit diesen "Schei..." Zählern herumzuärgern.

Im Zuge der Installation einer weiteren PV-Anlage mit Batteriespeicher, digitalen EVU-und weiteren Modbus-Zählern (die alle wunderbar ihre Daten per RS485-Adapter über D1-Mini/USB-Adaptern an FHEM senden) habe ich mal wieder nach Lösungsmöglichkeiten gesucht die "alten" DRS110M vielleicht doch noch zur Datenhergabe bewegen zu können. Dabei bin ich auf dieses Thema gestoßen.

Ich habe mir dann von Github das Modul geholt und wollte es installieren, aber es gab eine Fehlermeldung über ein fehlendes Modul "Can't locate POSIX/strptime.pm in @INC (you may need to install the POSIX::strptime module)..."

Kannst Du mir sagen was es damit auf sich hat?
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 25 Dezember 2021, 08:44:42
TL:DR

https://perlmaven.com/how-to-install-a-perl-module-from-cpan#debian

http://deb.perl.it/debian/cpan-deb/#q=POSIX%3A%3Astrptime

sudo apt-get install libposix-strptime-perl

EDIT: Ich hab übrigens noch zwei Stück rumliegen, wenn jemand Ersatz braucht.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 25 Dezember 2021, 11:01:17
Hallo Patrick,

vielen Danke für die schnelle Antwort.

Ich habe jetzt das fehlende Paket nachinstalliert. Das hat auch funktioniert (soweit ich das beurteilen kann).

Dann habe ich folgendes gemacht:
Dabei kam es zu folgender Fehlermeldung: Undefined subroutine &main::iec1107_Initialize called at fhem.pl line 2623.
# Get the name of the initialize function. This may differ from the
    # filename as sometimes we live on a FAT fs with wrong case.
    my $fnname = $m;
    foreach my $i (keys %main::) {
      if($i =~ m/^(${m})_initialize$/i) {
        $fnname = $1;
        last;
      }
    }
    &{ "${fnname}_Initialize" }(\%hash);      --> das ist bei mir die Zeile 2623
    $m = $fnname;
    return undef;
  };


Habe ich da grundsätzlich etwas falsch gemacht, oder woran liegt das?
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 25 Dezember 2021, 12:22:38
Versuchst du ganz zufällig, das perl modul in FHEM direkt zu nutzen?
Das kann nicht funktionieren. Das ist nicht kompatibel zu FHEM geschrieben.
Ich habe bislang keine vernünftige API Definition für Devices in FHEM gefunden.


git clone https://github.com/menschel/drs110m_perl.git
cd drs110m_perl
nano test_drs110m.pl

In Zeile 13 trägst du deinen Seriellen Port ein.

my $port = Device::SerialPort->new("/dev/ttyUSB0") || die $!;


in Zeile 25, die Seriennummern deiner Zähler.


my @ids = (1613300152,1613300153);

STRG+O
ENTER


perl test_drs110m.pl

Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 25 Dezember 2021, 13:18:35
Hallo Patrick,

ja, genau das habe ich gemacht. Das war dann wohl ein fettes Mißverständnis. Ich dachte Dein Modul "iec1107.pm" ist ein FHEM-Modul.

Wenn das nicht so ist, dann stehe ich allerdings wieder komplett bei NULL.

Mein Ziel ist es ja diese Zähler a) überhaupt auszulesen und b) dann in FHEM zu integrieren.

Wie kann ich das erreichen? Ich habe keine Ahnung wie ich das angehen müßte. Vielleicht kannst Du mir dabei ja helfen. Das wäre natürlich klasse und würde mein über 6-jähriges Ärgernis mit diesen Zählern beenden. Wenn es nicht soviel Geld und Arbeit wäre hätte ich die Zähler schon längst durch andere ersetzt.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 25 Dezember 2021, 15:37:27
Da musst du mal laut genug nach dem MOD rufen.

Grundsätzlich ist das PERL Modul seit 2 Jahren fertig und wartet die Integration in ein vorhandenes FHEM Modul.

Der Funktionsnachweis ist da, es muss nur jemand in die vorhandene FHEM API einbauen.

Ich laufe den Leuten nicht mehr hinterher.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 25 Dezember 2021, 18:30:58
Hallo Patrick,

leider habe ich von Perl und den Zusammenhängen zu FHEM keine Ahnung. Wenn ich Dich richtig verstehe, dann läßt sich Dein "Modul" so für FHEM gar nicht nutzen, oder nur über den Umweg einer separaten Installation in einer anderen Umgebung?? Wie nutzt Du das denn?
Den Maintainer @Icinger kann ich gerne mal anschreiben. Gab es denn von dort in den zwei Jahren irgendwelche Reaktionen oder Einwände warum es nicht released wurde?

Jetzt hatte ich schon Licht am Ende des Tunnels für meine Zähler gesehen und nun war das wieder (noch) nichts.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 25 Dezember 2021, 19:19:21
Von Icinger habe ich seit 2 Jahren keine Rückmeldung, er hatte wohl privat 'ne Menge um die Ohren.

Ich nutze das Modul selbst gar nicht. Es ist als Proof-of-Concept entstanden und das Projekt ist tot, u.a. auch weil die Zähler urplötzlich nicht mehr lieferbar waren.
Die Zähler sind eigentlich spitze, sicher die Anschlüsse hätte man besser machen können, aber wo bekommt man schon einen 1TE Zähler mit 10A Nennstrom?!
Diese 5A Nachfolger sind einfach nur lächerlich.

Du kannst das Skript einfach per Kommandozeile aufrufen und es schreibt die Daten der einzelnen Zähler nacheinander auf.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 25 Dezember 2021, 19:47:29
Wie gesagt, ich habe 38 Stück von den Dingern installiert (für jeden Stromkreis Einen) und kann die bisher (seit 6 Jahren) nur händisch auslesen. Das mit den Anschlüssen ist zwar nicht gerade toll, aber mit der richtigen Lösung kein Problem. Ich habe dafür einfach 6,3mm Flachkabelschuhe auf die Adern gekrimpt. Da sitzen die Schrauben perfekt drauf und es kann auch nichts verrutschen.

Ich habe noch eine Menge andere Zähler (XTM100A, SDM120M, ABB B23) und alle lassen sich problemlos per Modbus-Protokoll auslesen, nur die DRS110 nicht. Wegen dem IEC1107-Protokoll und anderer Zicken.

Ich werde den Maintainer Icinger nach Weihnachten mal anschreiben. Vielleicht habe ich ja Glück und er kümmert sich doch noch.

ZitatSkript einfach per Kommandozeile aufrufen
Von welcher Kommandozeile? Einer Python-Installation? Da hab ich leider keine Ahnung von.

Ich danke Dir erstmal und will Dich an Weihnachten auch nicht länger stören, aber wenn Du die nächsten Tage nochmal Zeit hast, dann kannst Du mir die Vorgehensweise ja vielleicht mal detailliert erklären.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 25 Dezember 2021, 20:17:06
ZitatIch habe dafür einfach 6,3mm Flachkabelschuhe auf die Adern gekrimpt.
Jupp, die Methode habe ich auch gewählt. Der Hersteller hätte einfach Klemmhalter mit V-Ausschnitt einbauen sollen, so wie bei den Wago Reihenklemmen bis 4mm². Dann wäre das ein perfektes Produkt.

ZitatVon welcher Kommandozeile?
Die ganz normale Bash, die du bei jedem Raspberry Pi hast.
Nennt sich auch Terminal.

Das test_drs110m.pl ist ein Shell Skript. Wenn du die Bash gefunden hast, einfach stupide die Kommandos aus dem vorherigen Beitrag abtippen.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 25 Dezember 2021, 23:05:52
Ach so, einfach im Terminal vom RasPi. Ok, werde ich dann Morgen mal versuchen.

Danke und noch schöne Weihnachten.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 27 Dezember 2021, 13:36:16
Hallo Patrick,

ich hoffe Du hattest ein schönes Weihnachtsfest.

Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 28 Dezember 2021, 14:00:45
1. Der aktuelle Entwicklungsstand ist auf Gitlab.

https://gitlab.com/Menschel/drs110m_perl

Man kann über die Kommandos

git remote set-url origin https://gitlab.com/Menschel/drs110m_perl.git
git pull

den aktuellen Stand ziehen oder alternativ das Repo neu klonen.

2. Die Dependency POSIX::strptime wurde durch DateTime bzw. DateTime::Format::Strptime ersetzt zwecks Kompatibilität.

3. Die Funktionalität zum Setzen der Uhrzeit und zum Reset des Zählers wurde hinzugefügt.
Ich hatte den Fall, dass einer der Zähler offenbar zu lange stromlos war und meinte die Uhrzeit sei irgendwann Februar 2002.

4. Die Funktionalität wurde soweit möglich gekapselt, auf dass nur noch ein Aufruf von get_values() notwendig ist, um alle Werte abzurufen. Alles andere passiert von selbst.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 28 Dezember 2021, 16:00:12
Hallo Patrick,

Danke daß Du Dir nochmal die Mühe gemacht hast Dich mit meinem Problem zu befassen. Leider klappt es immer noch nicht.

Ich habe:
Leider kommt es dann zu den folgenden Fehlermeldungen:
Zitatperl test_drs110m.pl
Meter: 1613300030
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
No Ack for write operation 31 : 21122802143906
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
Second Write attempted before First is done at iec1107.pm line 178.
Use of uninitialized value $written in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1580.
Second Read attempted before First is done at iec1107.pm line 179.
Use of uninitialized value $got in numeric ne (!=) at C:/Strawberry/perl/vendor/lib/Win32/SerialPort.pm line 1216.
No Response for Temperature at iec1107.pm line 115.
Hast Du vielleicht dazu auch noch eine Idee?
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: patmen am 28 Dezember 2021, 17:01:10
Nope, an dem SerialPort ist irgendwas kaputt.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 28 Dezember 2021, 17:13:20
Meinst Du es liegt an der HW oder an irgendwelchen falschen Einstellungen von mir?

Ich müßte eigentlich noch einen anderen Serial zu USB-Adapter haben. Kann ich auch nochmal testen.

Danke
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: gvzdus am 28 Dezember 2021, 20:14:25
Moin,
generell lese ich nicht *alles* im Forum, nur meine Stammthreads wie 47_OBIS.

Ich habe mir die Doku und den Code etwas angesehen: Kann es sein, dass der Zähler mehr oder weniger per Modbus angesprochen wird? Jedenfalls im Prinzip sieht mir das so ähnlich aus. Dafür gibt es ja bereits ein Modul, und ich setze es als dummer Endanwender auch ein, nämlich um meinen SolarEdge-Wechselrichter auszulesen.

Das Modbus-Modul von FHEM muss halt auf das konkrete Gerät parametrisiert werden (welches Register sagt was), aber ich vermute, dass es deckungsgleich mit der Anbindung des Zählers ist.

FHEM-Module sind vom normalen Perl-Programm schon recht weit entfernt: Du kannst nicht einfach Schreiben und danach einen Read starten. Das ist der eine Grund, der andere Grund ist, dass ich kein Testgerät habe. Ich bin aber ggü. - ich denke mindestens hunderten - Leuten ggü. in der Verantwortung, mit einer neuen Version nichts kaputt zu machen. Heißt, mit Änderungen ohne Tests bin ich sehr zurückhaltend, und Tests "remote" sind - selbst bei gutem Willen - so anstrengend wie die Eltern am Telefon "ins Internet" zu bekommen.

Viele Grüße, Georg
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 29 Dezember 2021, 00:20:29
Hallo Georg,

vielen Dank für Deine schnelle Antwort.

Es ist mir vollkommen klar daß man (Du) nicht jeden Thread lesen kann. Das kann ich auch nicht (bin Moderator im Shelly Support Forum). Deshalb habe ich Dich, bzw. vorher Icinger kontaktiert um in Erfahrung zu bringen ob es noch eine Chance gibt das Modul zu integrieren. Wie schon geschrieben habe ich 38 Stück von diesen Zählern installiert und lese die seit 6 Jahren einmal im Monat händisch aus.

Die verschiedenen Modbusmodule kenne ich auch aber diese Zähler sprechen eben NICHT Modbus (auf diese Vermutung bin ich vor 6 Jahren ja auch reingefallen). Ich dachte damals RS485 = Modbus weil das bei uns in der Kraftwerksleittechnik quasi ein Synonym war. Ich habe auch das Modbusmodul für den SDM120 für weitere Hutschienenzähler (XTM100A) in Benutzung. Das habe ich auch an die andere Registerbelegung angepaßt. Das funktioniert einwandfrei.

Diese Zähler sprechen aber IEC1107 und nicht Standard-Modbus. Ich habe in den Jahren immer mal wieder versucht den Zählern Daten zu entlocken und sehr viel dazu gelesen und wenn ich mich richtig erinnere, dann muß man bei diesen Zählern (IEC1107 Protokoll) tatsächlich erst schreiben um dann die Daten auszulesen. Deshalb kann man das Modbusmodul wohl nicht einfach anpassen.

Was das Testen angeht, mit einem Testgerät könnte ich dienen. Ich habe noch einen nicht verbauten Zähler mit dem ich es ja auch gerade mal wieder versuche. Evtl. kann auch Patrick (patmen), der Erstellers des Perlprogramms einen Zähler für Testzwecke bereitstellen. Da müßte man Ihn mal fragen.

Grüße
Bernd
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: gvzdus am 29 Dezember 2021, 00:27:22
shelly-support.eu? Da bin ich "gvz", aber gesperrt, wegen vorgeblicher "gewerblicher Nutzung". Mail an webmaster@shelly-support.de ist nicht zustellbar. Mein gewerbliches Verbrechen war mutmaßlich, hier ins FHEM-Forum verlinkt zu haben zu CoIoT. Jedenfalls waren das meine letzten Beiträge: Aktivitäten für den Shelly-Support bei FHEM.
Sorry, wenn ich da übel gelaunt bin - ich bin morgen bestimmt viel entspannter und habe den Teil "Nein, ist nicht Modbus" zur Kenntnis genommen.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 29 Dezember 2021, 01:17:21
Oh, sorry das zu hören. Keine Ahnung warum Du da gesperrt bist. Muß ich mal nachhören. Eigentlich geht es bei uns im Shelly-Forum sehr entspannt zu. Sperren sind wirklich sehr sehr selten. Ich selbst promote FHEM dort immer wieder. Komisch.

Ich hoffe Du nimmst es nicht persönlich, vor allem nicht mir. Ich bin unschuldig, war ich schon immer  ;)
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 29 Dezember 2021, 22:42:29
Hallo Patrick,

nach vielem Suchen, Versuchen, Neuinstallationen der Perl-Umgebung auf meinem Windows-PC und einem anderen RS485zuUSB-Adapters konnte ich Heute das erste Mal seit 6 Jahren mit Deinem Test-Script meinem Testzähler Werte entlocken. Es scheint also endlich etwas vorwärts zu gehen.

Die Ursache für die weiter oben geposteten Fehlermeldungen waren nicht eine defekte Schnittstelle sondern offensichtlich Inkompatibilitäten zwischen Win10 (64Bit) und der 64 Bit Perl Umgebung (Strawberry). Im Netz habe ich eine Äußerung dazu gefunden, daß es mit einer 32 Bit Umgebung funktionieren würde. Also habe ich erstmal alles wieder deinstalliert und dann die 32 Bit Umgebung installiert. Prompt hatte ich die gleiche Fehlermeldung wie am Anfang (Modul DateTime::format::strptime fehlt). Auch das einzelne Nachinstallieren brachte keinen Erfolg. Erst das Nachinstallieren eines kompletten DateTime-Paketes ('Bundle::DateTime::Complete') brachte den Erfolg. Jetzt läuft das Script

Morgen werde ich dann intensiver versuchen alles zum Laufen zu bringen. Wenn dann auch noch gvzdus Dein Script zu einem FHEM-Modul erheben würde, dann hätte meine damalige Investition doch noch ein gutes Ende gefunden.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 30 Dezember 2021, 18:58:45
So, Heute habe ich weiter getestet.

Das Script läuft jetzt auch auf meinem FHEM-RasPi und ich habe inzwischen 10 (meine Twin-Aderendhülsen sind alle, Morgen kommt Nachschub) der insgesamt 14 Zähler des ersten Unterverteilers am BUS/USB-Adapter angeschlossen. Alle 10 werden ohne Probleme ausgelesen.

Nachdem es nun endlich funktioniert die Zähler auszulesen bin ich natürlich ungeduldig und würde gerne (solange kein FHEM-Modul existiert) das Perl-Script von FHEM aus aufrufen (z.B. mit einem at) und die Werte auf diesem Weg nach FHEM holen. Ich habe auch schon Einiges dazu gesucht und gelesen, aber so richtig schlau bin ich noch nicht geworden.

Hat vielleicht Jemand eine Anleitung wie man das realisieren könnte?
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 02 Januar 2022, 13:48:34
Hallo,

Hier nun eine kurze Zusammenfassung des aktuellen Standes bei mir:

Prinzipiell hat das funktioniert, d.h. eine nutzbare Zwischenlösung ist greifbar nahe, bevor es vielleicht ein FHEM-Modul gibt. Es gibt im Moment allerdings noch ein Problem mit dem cron-Job. Dieser wird nur genau einmal ausgeführt wird. Ich habe da aber noch nicht nachgeschaut und auch noch nicht mit CoolTux darüber "gesprochen".

Eine Sache ist mir beim Testen noch aufgefallen. Ich habe jetzt 14 Zähler am Bus hängen. Wenn einer der Zähler nicht antwortet (ich habe nämlich einen defekten dazwischen, wußte ich vorher schon), dann bricht das Script einfach ab und die restlichen Zähler in der Liste werden nicht mehr abgefragt. Dieses Verhalten ist nicht optimal. Vielleicht könnte man das ja so anpassen, daß er in solch einem Fall nicht abbricht sondern den nicht erreichbaren überspringt.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: CoolTux am 02 Januar 2022, 14:45:56
Hallo Bernd,

Was kommt denn für eine Meldung wenn Du das Skript von Hand startest und er aussteigt bei dem einen Sensor?
Kann mir nur vorstellen das er Probleme hat den Hash aus zu lesen in der Schleife. Dann muss sowas kommen wie can't Hash as referenz bla bla
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 02 Januar 2022, 14:48:53
Warte mal, probier ich gerade nochmal. Bin gerade mit dem cron job am probieren, der funktioniert ja auch noch nicht.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: CoolTux am 02 Januar 2022, 14:52:47
Habe auch noch 2 weitere Stellen gefunden wo er aussteigen könnte.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 02 Januar 2022, 14:54:39
Die Fehlermeldung lautet: No Response for Apparent Power at iec1107_raspi.pm line 115 die("Found $addr but expected $drs110m_values{$measurement}[0]");
Zeile 100-120:
while ( my ($measurement, $vals) = each(%drs110m_values) ) {
    $res = $self->_xfer(_generate_r1_msg("reg"=>$drs110m_values{$measurement}[0]));
    ($addr,$val) = _interpret_r1_msg($res);
    if (defined($addr)){
      if ($addr == $drs110m_values{$measurement}[0]){
        $val = &{$drs110m_values{$measurement}[1]}($val);
        $unit = $drs110m_values{$measurement}[2];
        $valstr = sprintf("%s %s",$val,$unit);
        $self->{regs}{$measurement}=$valstr;
      }
      else{
        die("Found $addr but expected $drs110m_values{$measurement}[0]");
      };
    }
    else {
      die("No Response for $measurement");
    };
  }

  return $self;
};
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 02 Januar 2022, 14:57:07
Oh, sorry. Vergiß die letzte Antwort. Das war ja der Code vom Script. Moment.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: CoolTux am 02 Januar 2022, 14:58:52
geh mal in den Ordner vom Skript. Mach dort ein

git status

und poste mal die Ausgabe hier.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: Guzzi-Charlie am 02 Januar 2022, 15:03:03
Warte mal. Bevor wir hier an verschiedenen Fronten kämpfen gehe ich erstmal zum letzten Stand (dem von Dir von Freitag). Da muß ich nur erstmal den defekten Zähler in der Liste eintragen.
Titel: Antw:47_OBIS.pm Erweiterung für IEC 62056 Geräte BG-ETech DRS110M und Pafal 20ec3gr
Beitrag von: CoolTux am 02 Januar 2022, 16:14:13
Skript wurde an gepasst und es läuft jetzt wie erwartet.