Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:meters:power:edl-ehz:e110

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
hardware:channels:meters:power:edl-ehz:e110 [2016/10/16 17:21]
jau
hardware:channels:meters:power:edl-ehz:e110 [2017/12/31 10:37]
jau verschoben
Zeile 1: Zeile 1:
-====== Landis & Gyr E110 ====== +#redirect ​hardware/​channels/​meters/​power/​edl-ehz/landisgyr_e110
-Dieser z.B. von Stedin verbaute Zähler verhält sich qua Ansprache wie der E350 ([[hardware:​channels:​meters:​power:​edl-ehz:​e350|]]). +
- +
-===== Hardware ===== +
-Mit einem [[hardware:​controllers:​ir-schreib-lesekopf|IR-Schreib-Lesekopf]] kann der Zähler bei [[hardware:​controllers:​ir-schreib-lesekopf#grundlagen|300bd,​ 7E1]] mittels Initialisierungssequenz "/?​!\r\n"​ die Kommunikation angestoßen werden.  +
- +
-===== Beispielantwort ==== +
-<​code>​ +
---> "/?​!\r\n"​ +
-/​AMP45227-0614 +
---> chr(0x06).chr(0x30).chr(0x30).chr(0x30).chr(0x0D).chr(0x0A) +
-0.00.6.0(K86T0000) +
-0.00.6.1(21497110) +
-2.18.1(000000.00) +
-2.18.2(008278.78) +
-2.18.0(008278.78) +
-3.28.1(000000.00) +
-3.28.2(000000.00) +
-3.28.0(000000.00) +
-</​code>​ +
- +
-===== Auslesen per Perl-Script ===== +
-Zum Auslesen dient eine (quick and dirty) modifizierte Version des Perl-Scripts von [[hardware:​channels:​meters:​power:​drs155m|]]. +
-Der E110 benötigt etwas mehr Zeit zum Lesen als der DRS155 (read_char_time =3, read_const_time = 10) und sendet 165 chars zurück ($port->​read(165)). Der Programmiermodus hat nicht funktioniert und es scheint, dass der E110 keine aktuellen Verbrauchswerte liefert. +
- +
-<​code>​ +
-#​!/​usr/​bin/​perl -w +
- +
-# teile von http://​www.ip-symcon.de/​forum/​threads/​21407-Stromz%C3%A4hler-mit-RS485/​page2 entnommen +
-# 20130802 : ollir +
-# vereinfachte Version von http://​wiki.volkszaehler.org/​hardware/​channels/​meters/​power/​drs155m +
- +
-use Device::​SerialPort;​ +
- +
- +
-my $port = Device::​SerialPort->​new("/​dev/​ttyUSB0"​) || die $!; +
-$port->​baudrate(300);​ +
-$port->​databits(7);​ +
-$port->​parity("​even"​);​ +
-$port->​stopbits(1);​ +
-$port->​handshake("​none"​);​ +
-$port->​write_settings;​ +
- +
-$port->​purge_all();​ +
-$port->​read_char_time(3); ​    # don't wait for each character +
-$port->​read_const_time(10);​ # 100 millisecond per unfulfilled "​read"​ call +
- +
-my $verbose = 11 ; +
- +
-# ======================================== +
-sub sendgetserial { +
-  my ($cmd) = @_; +
-  my $count; +
-  my $saw; +
-  my $sawprint;​ +
-  my $x; +
- +
-  $port->​lookclear;​ +
-  $port->​write( $cmd ); +
- +
-  ($count,​$saw)=$port->​read(165); ​  # will read 165 chars +
-  $x=uc(unpack('​H*',​$saw));​ # nach hex wandeln +
- $sawprint = $saw; +
- +
-  $cmd =~ s/​\n/​\\n/​mg;​ +
-  $cmd =~ s/​\r/​\\r/​mg;​ +
- +
-  $saw =~ s/​\n/​\\n/​mg;​ +
-  $saw =~ s/​\r/​\\r/​mg;​ +
- +
-  if ( $verbose>​10 ) { +
-    printf "+++ sendserial\n"​ ; +
-    print  " CMD: $cmd \n"; ​ # gibt den Befehl in ASCII aus +
-    print  " COUNT: $count \n"; ​ # gibt die Anzahl der empfangenen Daten aus +
-    print  " HEX: $x \n"; ​ # gibt die empfangenen Daten in Hex aus +
-    print  " ASCII:​\n$sawprint \n"; ​ # gibt die empfangenen Daten aus +
-    printf "--- sendserial\n"​ ; +
-  } +
- +
-  return $saw; +
-+
-# ======================================== +
- +
-## Variablen +
-my $cmd; +
-my $res; +
-my $counter; +
- +
-# Initialisierung +
-sendgetserial("/?​!\r\n"​);​ +
- +
-# Zählerabfrage +
-$cmd = chr(0x06).chr(0x30).chr(0x30).chr(0x30).chr(0x0D).chr(0x0A);​ +
-$_ = sendgetserial($cmd);​ +
- +
-s/​2\.18\.2\(([0-9]*\.[0-9]*)\)/​$1/​m;​ +
- +
-print $1; +
-</code>+
hardware/channels/meters/power/edl-ehz/e110.txt · Zuletzt geändert: 2017/12/31 10:37 von jau