diff --git a/fhem/FHEM/87_WS2000.pm b/fhem/FHEM/87_WS2000.pm
index 595b906cf..b306345c4 100644
--- a/fhem/FHEM/87_WS2000.pm
+++ b/fhem/FHEM/87_WS2000.pm
@@ -4,7 +4,7 @@ package main;
 # Modul for FHEM
 #
 # contributed by thomas dressler 2008
-# $Id: 87_WS2000.pm,v 1.1 2008-05-10 21:10:29 tdressler Exp $
+# $Id: 87_WS2000.pm,v 1.2 2008-05-11 17:34:07 tdressler Exp $
 ###########################
 use strict;
 use Switch;
@@ -13,7 +13,7 @@ use warnings;
 #prototypes to make komodo happy
 use vars qw{%attr %defs};
 sub Log($$);
-
+our $FH;
 ####################################
 # WS2000_Initialize
 # Implements Initialize function
@@ -31,7 +31,7 @@ sub WS2000_Initialize($)
   $hash->{UndefFn} = "WS2000_Undef";
   $hash->{GetFn}   = "WS2000_Get";
   $hash->{SetFn}   = "WS2000_Set";
-  #$hash->{ParseFn} = "WS2000_Parse";
+  $hash->{ReadyFn} = "WS2000_Ready";
   $hash->{ReadFn}   ="WS2000_Read";
   $hash->{ListFn}   ="WS2000_List";
   $hash->{AttrList}= "model:WS2000 rain altitude loglevel:0,1,2,3,4,5";
@@ -49,7 +49,8 @@ WS2000_Define($$)
   delete $hash->{po};
   delete $hash->{socket};
   delete $hash->{FD};
-   my $quiet=0;
+  my $ws2000_cfg='ws2000.cfg';
+   my $quiet=1;
    my $name=$hash->{NAME};
   my $PortName = $a[2];
   my $PortObj;
@@ -74,11 +75,12 @@ WS2000_Define($$)
                    return "Can't use Win32::SerialPort $@\n";
                 }
                 $PortObj = new Win32::SerialPort ($PortName, $quiet);
-                if ($PortObj) {
+                if (!$PortObj) {
                    $hash->{STATE} = "error opening device";
                    Log 1,"Error opening Serial Device $PortName";
-                   return "Can't open PortName: $^E\n";
+                   return "Can't open Device $PortName: $^E\n";
                 }
+		 #$hash->{FD}=$PortObj->{_HANDLE};
 	} else {
 		eval ("use Device::SerialPort;");
 		if ($@) {
@@ -87,11 +89,12 @@ WS2000_Define($$)
                    return "Can't Device::SerialPort $@\n";
                 }
 		$PortObj = new Device::SerialPort ($PortName, $quiet);
-                if ($PortObj) {
+                if (!$PortObj) {
                    $hash->{STATE} = "error opening device";
                    Log 1,"Error opening Serial Device $PortName";
-                   return "Can't open PortName: $^E\n";
+                   return "Can't open Device $PortName: $^E\n";
                 }
+		 #$hash->{FD}=$PortObj->FILENO;
 	}
         #Parameter 19200,8,2,Odd,None
         $PortObj->baudrate(19200);
@@ -104,7 +107,6 @@ WS2000_Define($$)
 		return "Serial write Settings failed!\n";
 	}
         $hash->{po}=$PortObj;
-        $hash->{FD}=$PortObj->FILENO;
         $hash->{socket}=0;
         
     }elsif($PortName=~/([\w.]+):(\d{1,5})/){
@@ -158,6 +160,21 @@ WS2000_Undef($$)
   return undef;
 }
 
+#####################################
+# WS2000_Set
+# implement SetFn
+# currently nothing to set
+#
+sub
+WS2000_Ready($$)
+{
+  my ($hash, $dev) = @_;
+  my $po=$hash->{po};
+  return undef if !$po;
+  my ($BlockingFlags, $InBytes, $OutBytes, $ErrorFlags)=$po->status;
+  return ($InBytes>0);
+}
+
 #####################################
 # WS2000_Set
 # implement SetFn
@@ -298,7 +315,7 @@ WS2000_Parse($$) {
     #duplicate check (repeater?)
     my $prevmsg=$hash->{READINGS}{RAW}{VAL}||'';
     my $prevtime=$hash->{READINGS}{RAW}{TIME}||0;
-    if (($prevmsg eq $msg) && ((time() - $prevtime) <3)) {
+    if (($prevmsg eq $msg) && ((time() - $prevtime) <10)) {
       Log 4,"$name check: Duplicate detected";
       return undef;
     }