diff --git a/fhem/FHEM/23_WEBTHERM.pm b/fhem/FHEM/23_WEBTHERM.pm
index 837c231b2..d6dbf95d7 100644
--- a/fhem/FHEM/23_WEBTHERM.pm
+++ b/fhem/FHEM/23_WEBTHERM.pm
@@ -1,30 +1,34 @@
-################################################################
-#
-# Copyright notice
-#
-# (c) 2010 Sacha Gloor (sacha@imp.ch)
-#
-# This script is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# The GNU General Public License can be found at
-# http://www.gnu.org/copyleft/gpl.html.
-# A copy is found in the textfile GPL.txt and important notices to the license
-# from the author is found in LICENSE.txt distributed with these scripts.
-#
-# This script is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# This copyright notice MUST APPEAR in all copies of the script!
-#
-################################################################
# $Id$
+################################################################
+#
+# This module will connect a webbased thermometer
+# to your fhem installation.
+#
+# Further informations about required hardware:
+# http://www.wut.de/e-57w0w-ww-dade-000.php
+#
+# (c) 2010 Sacha Gloor (sacha@imp.ch)
+#
+# corrections & documentation added for fhem
+# 2013-07-30 by betateilchen ®
+#
+# This file is part of fhem.
+#
+# Fhem is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# Fhem is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with fhem. If not, see .
+#
+################################################################
-##############################################
package main;
use strict;
@@ -51,71 +55,115 @@ WEBTHERM_Define($$)
my $host = $a[2];
my $host_port = $a[3];
- my $delay=$a[4];
- $attr{$name}{delay}=$delay if $delay;
+ my $interval=$a[4];
+ $attr{$name}{interval}=$interval if $interval;
- return "Wrong syntax: use define WEBTHERM " if(int(@a) != 5);
+ return "Usage: define WEBTHERM " if(int(@a) != 5);
$hash->{Host} = $host;
$hash->{Host_Port} = $host_port;
- InternalTimer(gettimeofday()+$delay, "WEBTHERM_GetStatus", $hash, 0);
+ InternalTimer(gettimeofday()+$interval, "WEBTHERM_GetStatus", $hash, 0);
- return undef;
+ return;
}
-#####################################
-
sub
WEBTHERM_GetStatus($)
{
- my ($hash) = @_;
- my $err_log='';
- my $line;
+ my ($hash) = @_;
+ my $err_log='';
+ my $line;
- my $name = $hash->{NAME};
- my $host = $hash->{Host};
+ my $name = $hash->{NAME};
+ my $host = $hash->{Host};
- my $delay=$attr{$name}{delay}||300;
- InternalTimer(gettimeofday()+$delay, "WEBTHERM_GetStatus", $hash, 0);
+ my $interval=$attr{$name}{interval}||300;
+ InternalTimer(gettimeofday()+$interval, "WEBTHERM_GetStatus", $hash, 0);
- if(!defined($hash->{Host_Port})) { return(""); }
- my $host_port = $hash->{Host_Port};
+ if(!defined($hash->{Host_Port})) { return(""); }
+ my $host_port = $hash->{Host_Port};
- my $URL="http://".$host."/Single".$host_port;
- my $agent = LWP::UserAgent->new(env_proxy => 1,keep_alive => 1, timeout => 3);
- my $header = HTTP::Request->new(GET => $URL);
- my $request = HTTP::Request->new('GET', $URL, $header);
- my $response = $agent->request($request);
+### 2013-07-30 corrected by betateilchen
+# my $URL="http://".$host."/Single".$host_port;
+ my $URL="http://".$host.":".$host_port."/Single";
+### end-of-correction
+ my $agent = LWP::UserAgent->new(env_proxy => 1,keep_alive => 1, timeout => 3);
+ my $header = HTTP::Request->new(GET => $URL);
+ my $request = HTTP::Request->new('GET', $URL, $header);
+ my $response = $agent->request($request);
- $err_log.= "Can't get $URL -- ".$response->status_line
+ $err_log.= "Can't get $URL -- ".$response->status_line
unless $response->is_success;
- if($err_log ne "")
- {
- Log GetLogLevel($name,2), "WEBTHERM ".$err_log;
- return("");
- }
+ if($err_log ne "")
+ {
+ Log GetLogLevel($name,2), "WEBTHERM $name ".$err_log;
+ return;
+ }
- my $body = $response->content;
- my $text='';
-# print $body."\n";
- my @values=split(/;/,$body);
- my $last=$values[$#values];
- my $state=$last;
- $state=~s/,/./g;
- $state=substr($state,0,-2);
+ my $body = $response->content;
+ my $text='';
- my $sensor="temperature";
- Log 4, "WEBTHERM_GetStatus: $name $host_port ".$hash->{STATE}." -> ".$state;
+ my @values=split(/;/,$body);
+ my $last=$values[$#values];
+ my $state=$last;
+ $state=~s/,/./g;
+ $state=substr($state,0,-2);
- $text="Temperature: ".$state;
- $hash->{STATE} = "T: ".$state;
+ my $sensor="temperature";
+ Log 4, "WEBTHERM_GetStatus: $name $host_port ".$hash->{STATE}." -> ".$state;
- $hash->{CHANGED}[0] = $text;
- $hash->{READINGS}{$sensor}{TIME} = TimeNow();
- $hash->{READINGS}{$sensor}{VAL} = $state." (Celsius)";
- DoTrigger($name, undef) if($init_done);
+ $text="Temperature: ".$state;
+ $hash->{STATE} = "T: ".$state;
+ $hash->{CHANGED}[0] = $text;
+
+ readingsSingleUpdate($name, $sensor, $state, 1);
+ return;
}
1;
+
+=pod
+=begin html
+
+
+WEBTHERM
+
+ This module connects a Web-Thermometer made by W&T to your FHEM installation.
+ Currently this module is no longer maintained, but it should work in its current state.
+ It is provided "as is" for backward compatibility.
+
+
+ Define
+
+ define <name> WEBTHERM <ip-address> <port-nr> <interval>
+
+ Defines a WEBTHERM device at given ip and port.
+ Values are polled periodically defined by given interval (in seconds).
+ Read temperature is written into reading "state".
+
+
+
+
+ Set
+
+
+
+
+ Get
+
+
+
+
+ Attr
+
+
+=end html
+=cut