Erster Gehversuch mit Perl, ELV ASH2200 und ELV FS20 WUE





  1. Win32 serial port scheint nicht mehr via ActiveState ppm installierbar zu sein! 
  2. Also wie in http://community.activestate.com/node/8299 beschrieben vorgehen:
    ppm install http://www.bribes.org/perl/ppm/Win32-API.ppdppm install http://www.bribes.org/perl/ppm/Win32-SerialPort.ppd
  3. Win32 serial port läuft bei mir nicht out-of-the-box (Windows Vista). Der Tip aus http://www.perlmonks.org/?node_id=664389 im file Win32::ComPort.pm folgende Zeile von 
  4. if (($CP_Length > 64) and ($self->{"_TYPE"} == PST_RS232)) { 
    auf
    if (($CP_Length > 66) and ($self->{"_TYPE"} == PST_RS232)) {
    zu ändern hat bei mir geholfen
  5. Beispiel aus http://www.perlmonks.org/?node_id=664389 an ELV FS20 WUE anpassen:



#! C:\perl\bin\perl.exe



use strict;
use warnings;

use Win32::SerialPort;
my $port = Win32::SerialPort->new("COM5");



$port->baudrate(4800);
$port->databits(8);
$port->parity("none");
$port->stopbits(1);
$port->write_settings || undef $port;

$port->write(pack( 'H[08]', '0202fb01' )); #Textmode
$port->write(pack( 'H[08]', '0202f201' )); #Wetterdaten sofort ausgeben
$port->write(pack( 'H[06]', '0202f0' ));   #status

while (1)
{
  my $c = $port->read(2);
  print $c;
}

1;

und schon zeigen die drei Sensoren die Aktuellen Wetterdaten:


Status: OK
Baudrate: 4800 bps
FS20-Pakete: 0
Wetterdaten-Pakete: 0
Sensor: 1
Adresse: 1
Temperatur: 1,6 C (0x0010)
Luftfeuchtigkeit: 77,7 % (0x0309)
Windgeschw.: 0,0 km/h (0x0000)
Niederschlag: 0 (0x0000)
Regen: Nein (0x00)
Sensor: 1
Adresse: 0
Temperatur: 12,4 C (0x007C)
Luftfeuchtigkeit: 72,6 % (0x02D6)
Windgeschw.: 0,0 km/h (0x0000)
Niederschlag: 0 (0x0000)
Regen: Nein (0x00)
Sensor: 1
Adresse: 3
Temperatur: 12,4 C (0x007C)
Luftfeuchtigkeit: 70,4 % (0x02C0)
Windgeschw.: 0,0 km/h (0x0000)
Niederschlag: 0 (0x0000)
Regen: Nein (0x00)
Sensor: 1
Adresse: 1
Temperatur: 1,6 C (0x0010)
Luftfeuchtigkeit: 77,7 % (0x0309)


Keine Kommentare:

Kommentar veröffentlichen