drs110m/README.md
2020-01-10 17:42:09 +01:00

1.8 KiB

drs110m_perl

A perl module with an object oriented approach for iec1107 (at least I think it is) compliant communication with a DRS110M din rail power meter similar to my pyehz project. This is considered a pre-step for integration in FHEM OBIS Module. Use and Copy as you wish. Maybe this module will mature enough to be uploaded to CPAN.

What works and what not

The module iec1107 can be used with a pre-defined serial port, a device serial number and a device password. The basic functions have been tested. Some special functions

Usage example:

use iec1107;#include the module

my $port = Device::SerialPort->new("/dev/ttyUSB0") || die $!;#define a port with 9600@7E1
$port->baudrate(9600);
$port->databits(7);
$port->parity("even");
$port->stopbits(1);
$port->handshake("none");
$port->write_settings;
$port->purge_all();
$port->read_char_time(0);
$port->read_const_time(150);#was 100ms previously, this lead to race conditions
 
my $id = 1613300152;#or whatever number the meter has
my $passwd = "00000000";

my $drs110m = iec1107->new("port"=>$port,"id"=>$id,"passwd"=>$passwd);
$drs110m->start_communication();
$drs110m->start_programming_mode();
$drs110m->update_values();
$drs110m->log_off();


while ( my ($reg, $val) = each(%{$drs110m->regs})){
  print("$reg : $val\n");
};

Output example:

$ perl test_drs110m.pl 
Meter: 1613300152
Voltage : 229.4 V
Active Power : 0 W
Temperature : 23 °C
Reactive Power : 0 VAr
Frequency : 50 Hz
Active Energy : 00000023 Wh
Apparent Power : 0 VA
Time : 2020-01-10 09:26:16 
Current : 0 A
Meter: 1613300153
Voltage : 229.4 V
Active Power : 0 W
Reactive Power : 0 VAr
Temperature : 23 °C
Frequency : 50 Hz
Active Energy : 00000034 Wh
Apparent Power : 0 VA
Time : 2020-01-10 09:25:44 
Current : 0 A