2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-16 10:46:03 +00:00

Version 1.0

git-svn-id: https://svn.fhem.de/fhem/trunk@672 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parix 2010-08-09 21:05:14 +00:00
parent 23ea81c825
commit 4255dcffc0

View File

@ -1,277 +1,323 @@
################################################################################ ################################################################################
# 98_FHTCONF.pm # 98_FHTCONF.pm
# #
# Konfiguration von FHTs # Version: 1.0
# # Stand: 08/2010
################################################################################ # Autor: Axel Rieger
package main; # a[PUNKT]r[BEI]oo2p[PUNKT]net
#
use strict; # Configure multiple FHT´s
use warnings; # Usage: define <NAME> FHTCONF
use Data::Dumper; # FHTConf-Name: FHTC01
# FHEM Command to Update FHTs # Assign FHTROOM...All FHT´s in this Room will be configured
sub Commandfhtconf($); # FHEM: define FHTC01 FHTCONF
################################################################################ # FHEM: attr FHTC01 FHTRoom R01
sub FHTCONF_Initialize($) # Assign FHT-Device to FHTRoom
{ # FHEM: attr <FHT-Name> room R01
my ($hash) = @_; # Get a list of FHT-Devices in FHTRoom:
# FHEM: set FHTC01 A0_FHT_DEVICES
$hash->{SetFn} = "FHTCONF_Set"; #
$hash->{StateFn} = "FHTCONF_SetState"; # Configuration
$hash->{DefFn} = "FHTCONF_Define"; #
$hash->{AttrList} = "loglevel:0,5 disable:0,1 SendIntervall"; ################################################################################
# FHEM Command to Update FHTs package main;
$cmds{fhtconf}{Fn} = "Commandfhtconf";
$cmds{fhtconf}{Hlp} = "FHTCONF[HELP]: fhtconf <FHTCONF-NAME>"; use strict;
use warnings;
Log 0, "FHEM-MODUL[98_FHTCONF.pm] LOADED"; use Data::Dumper;
} use vars qw(%data);
################################################################################ use vars qw(%cmds);
sub FHTCONF_Define($) use vars qw(%attr);
{ # FHEM Command to Update FHTs
my ($hash, @a) = @_; sub Commandfhtconf($);
Log 0, "FHTCONF|DEFINE|Anzahl ARG: " . int(@a); ################################################################################
return "Wrong syntax: use define <name> fht_conf" if(int(@a) !=1 ); sub FHTCONF_Initialize($)
# Default Room {
my $room = "GRP.FHTCONF"; my ($hash) = @_;
# INIT READINGs
# FHT's $hash->{SetFn} = "FHTCONF_Set";
$hash->{READINGS}{A0_FHT_DEVICES}{TIME} = TimeNow(); $hash->{DefFn} = "FHTCONF_Define";
$hash->{READINGS}{A0_FHT_DEVICES}{VAL} = ""; $hash->{AttrList} = "loglevel:0,5 disable:0,1 FHTRoom";
#Mode # FHEM Command to Update FHTs
# Values auto, manual, holiday or holiday_short $cmds{fhtconf}{Fn} = "Commandfhtconf";
$hash->{READINGS}{A1_mode}{TIME} = TimeNow(); $cmds{fhtconf}{Hlp} = "FHTCONF[HELP]: fhtconf <FHTCONF-NAME>";
$hash->{READINGS}{A1_mode}{VAL} = "auto";
# Temperaturen...defualt 5.5 = disable Log 0, "FHEM-MODUL[98_FHTCONF.pm] LOADED";
$hash->{READINGS}{A2_day_temp}{TIME} = TimeNow(); }
$hash->{READINGS}{A2_day_temp}{VAL} = "5.5"; ################################################################################
$hash->{READINGS}{A2_night_temp}{TIME} = TimeNow(); sub FHTCONF_Define($)
$hash->{READINGS}{A2_night_temp}{VAL} = "5.5"; {
$hash->{READINGS}{A2_windowopen_temp}{TIME} = TimeNow(); my ($hash, @a) = @_;
$hash->{READINGS}{A2_windowopen_temp}{VAL} = "5.5"; return "Wrong syntax: use define <name> fht_conf" if(int(@a) !=1 );
# LowTemp-Offest # Default Room
$hash->{READINGS}{A2_lowtemp_offset}{TIME} = TimeNow(); my $room = "GRP.FHTCONF";
$hash->{READINGS}{A2_lowtemp_offset}{VAL} = "2.0";
# Montag = Monday my $name = $hash->{NAME};
$hash->{READINGS}{B0_MONTAG}{TIME} = TimeNow(); #Room
$hash->{READINGS}{B0_MONTAG}{VAL} = "24:00|24:00"; $attr{$name}{room} = $room;
# Dienstag = Tuesday # State
$hash->{READINGS}{B1_DIENSTAG}{TIME} = TimeNow(); $hash->{STATE} = "Created " . TimeNow();
$hash->{READINGS}{B1_DIENSTAG}{VAL} = "24:00|24:00"; return undef;
# Mittwoch = Wednesday }
$hash->{READINGS}{B2_MITTWOCH}{TIME} = TimeNow(); ################################################################################
$hash->{READINGS}{B2_MITTWOCH}{VAL} = "24:00|24:00"; sub FHTCONF_Set($)
# Donnerstag = Thursday {
$hash->{READINGS}{B3_DONNERSTAG}{TIME} = TimeNow(); my ($hash, @a) = @_;
$hash->{READINGS}{B3_DONNERSTAG}{VAL} = "24:00|24:00"; # 4 Argumente
# Freitag = Friday # 1. Device Selbst als HASH
$hash->{READINGS}{B4_FREITAG}{TIME} = TimeNow(); # $a[0] => Device Name als String
$hash->{READINGS}{B4_FREITAG}{VAL} = "24:00|24:00"; # $a[1] => Reading
# Samstag = Saturday # $a[2] => Value for READING
$hash->{READINGS}{B5_SAMSTAG}{TIME} = TimeNow(); my $fields;
$hash->{READINGS}{B5_SAMSTAG}{VAL} = "24:00|24:00"; $fields = join(" ",sort keys %{$hash->{READINGS}});
# Sonntag = Sunday $fields = "A1_mode A2_day_temp A2_night_temp ";
$hash->{READINGS}{B6_SONNTAG}{TIME} = TimeNow(); $fields .= "A2_windowopen_temp A2_lowtemp_offset ";
$hash->{READINGS}{B6_SONNTAG}{VAL} = "24:00|24:00"; $fields .= "B0_MONTAG B1_DIENSTAG B2_MITTWOCH B3_DONNERSTAG B4_FREITAG B5_SAMSTAG B6_SONNTAG ";
my $name = $hash->{NAME}; return "Unknown argument $a[1], choose one of ". $fields if($a[1] eq "?");
#Room
$attr{$name}{room} = $room; my ($name,$room);
# State $name = $hash->{NAME};
$hash->{STATE} = "Created " . TimeNow(); # LogLevel
return undef; my $ll = 0;
} if(defined($attr{$name}{loglevel})) {$ll = $attr{$name}{loglevel};}
################################################################################ # INIT READINGS
sub FHTCONF_SetState($) if(!defined($defs{$name}{READINGS}{Z0_INIT})) {
{ &FHTCONF_init_READINGS($name);
my ($hash, $tim, $vt, $val) = @_; }
Log 0,"FHTCONF SETSTATE: ". Dumper(@_); # A0_FHT_DEVICES => List of FHT-Devices in Room <FHTRoom>
return undef; if($a[1] eq "A0_FHT_DEVICES") {
} if(defined($attr{$name}{FHTRoom})){
################################################################################ $room = $attr{$name}{FHTRoom};
sub FHTCONF_Set($) my $fht_devices = GetDevType_Room($room);
{ Log 0, "FHTCONF[SET] => FHT_DEVICES Room:$room -> " . $fht_devices;
my ($hash, @a) = @_; $a[2] = $fht_devices;
Log 0, "FHTCONF DEFINE Anzahl ARG: " . int(@a); }
# 4 Argumente else {return "FHTCONF[ERROR] no FHTRoom defined";}
# 1. Device Selbst als HASH
# $a[0] => Device Name als String
# $a[1] => Reading }
# $a[2] => Value for READING # A1_mode FHT Modes ----------------------------------------------------------
return "Unknown argument $a[1], choose one of ". join(" ",sort keys %{$hash->{READINGS}}) if($a[1] eq "?"); if($a[1] eq "A1_mode") {
Log 0, "FHT_CONF|SET|MODE-Values: auto,manual,holiday,holiday_short";
# A0_FHT_DEVICES => List of FHT-Devices seperated by ------------------------- my $mode_value_ok = undef;
if($a[1] eq "A0_FHT_DEVICES") { my @mode_values = ("auto","manual","holiday","holiday_short");
Log 0, "FHTCONF[SET] => FHT_DEVICES = $a[1]"; foreach my $value(@mode_values) {
if($a[2] =~ /\|/) { if($a[2] =~ /$value/){
my @fht_devices = split(/\|/,$a[2]); $mode_value_ok = 1;
foreach my $device (@fht_devices){ }
if (!defined($defs{$device}) || $defs{$device}{TYPE} ne "FHT") { }
return "FHTCONF[ERROR] => $device => Is Not defined or a FHT-DEVICE";} if(!$mode_value_ok) {return "FHTCONF[ERROR] MODE $a[2]: choose on of auto,manual,holiday,holiday_short";}
} }
} # FHT-Temperatures => NUR Ziffern und EIN Punkt [0-9.] -----------------------
else { if($a[1] =~ /^A2/) {
if (!defined($defs{$a[2]}) || $defs{$a[2]}{TYPE} ne "FHT") { if($a[2] =~ /[^0-9.]/) {
return "FHTCONF[ERROR] => $a[2] => Is Not defined or a FHT-DEVICE";} return "FHTCONF|$a[2]|ERROR|wrong format: 00.00";
} }
} if($a[1] ne "A2_lowtemp_offset" && $a[2] < 5.5) {$a[2] = 5.5};
# A1_mode FHT Modes ---------------------------------------------------------- Log 0, "FHTCONF[SET] => Temperatures => $a[1] = $a[2]";
if($a[1] eq "A1_mode") { }
Log 0, "FHT_CONF|SET|MODE-Values: auto,manual,holiday,holiday_short"; # B* FHT-Times
my $mode_value_ok = undef; if($a[1] =~ /^B/) {
my @mode_values = ("auto","manual","holiday","holiday_short"); # Time Values
foreach my $value(@mode_values) { # Sort-Array @b = sort(@b)
if($a[2] =~ /$value/){ # Values = 12:00;13:00 => mindestens 2 maximal 4; kein Wert über 24
$mode_value_ok = 1; my @times = split(/\|/,$a[2]);
} Log 0, "FHT_TIMES[INFO] times = " . @times;
} if (@times ne 2 && @times ne 4) {
if(!$mode_value_ok) {return "FHTCONF[ERROR] MODE $a[2]: choose on of auto,manual,holiday,holiday_short";} return "FHT_TIMES[ERROR] Wrong Argument count";}
} foreach my $time (@times) {
# FHT-Temperatures => NUR Ziffern und EIN Punkt [0-9.] ----------------------- if (not ($time =~ /([01][0-9]:[0-4])|[0-5][0-9]/) ) {
if($a[1] =~ /^A2/) { return "FHT_TIMES[ERROR] $time => 00:00";}
if($a[2] =~ /[^0-9.]/) { }
return "FHTCONF|$a[2]|ERROR|wrong format: 00.00"; # Allwas 4 Values 24:00|24:00|24:00|24:00
} if(@times == 2) {push(@times,"24:00");}
if($a[1] ne "A2_lowtemp_offset" && $a[2] < 5.5) {$a[2] = 5.5}; if(@times == 3) {push(@times,"24:00");}
Log 0, "FHTCONF[SET] => Temperatures => $a[1] = $a[2]"; # Sort
} @times = sort(@times);
# B* FHT-Times $a[2] = join("|", @times);
if($a[1] =~ /^B/) { }
# Time Values # Set READINGs
# Sort-Array @b = sort(@b) $hash->{READINGS}{$a[1]}{TIME} = TimeNow();
# Values = 12:00;13:00 => mindestens 2 maximal 4; kein Wert über 24 $hash->{READINGS}{$a[1]}{VAL} = $a[2];
my @times = split(/\|/,$a[2]); return undef;
Log 0, "FHT_TIMES[INFO] times = " . @times; }
if (@times ne 2 && @times ne 4) { ################################################################################
return "FHT_TIMES[ERROR] Wrong Argument count";} sub Commandfhtconf($)
foreach my $time (@times) { {
if (not ($time =~ /([01][0-9]:[0-4])|[0-5][0-9]/) ) { my ($cl, $dn) = @_;
return "FHT_TIMES[ERROR] $time => 00:00";} # $dn = FHTCONF Device-Name
} # Device exists
# Sort if(!defined($defs{$dn})){
@times = sort(@times); Log 0, "FHTCONF CMD Device $dn not found";
$a[2] = join("|", @times); return undef;
} }
# Set READINGs # Type FHTCONF
$hash->{READINGS}{$a[1]}{TIME} = TimeNow(); if($defs{$dn}{TYPE} ne "FHTCONF") {
$hash->{READINGS}{$a[1]}{VAL} = $a[2]; Log 0, "FHTCONF CMD $dn wrong Device-Type";
return undef; return undef;
} }
################################################################################ # Device disabled
sub Commandfhtconf($) if(defined($attr{$dn}{disable})) {
{ Log 0, "FHTCONF CMD $dn disabled";
my ($cl, $dn) = @_; return undef;
# $dn = FHTCONF Device-Name }
# Device exists #LogLevel
if(!defined($defs{$dn})){ my $ll = 0;
Log 0, "FHTCONF CMD Device $dn not found"; if(defined($attr{$dn}{'loglevel'})) {
return undef; $ll = $attr{$dn}{'loglevel'};
} }
# Type FHTCONF Log $ll, "FHTCONF-CMD: $dn";
if($defs{$dn}{TYPE} ne "FHTCONF") { # FHT_Devices
Log 0, "FHTCONF CMD $dn wrong Device-Type"; my ($room,$device_list_reading);
return undef; if(defined($attr{$dn}{FHTRoom})){
} $room = $attr{$dn}{FHTRoom};
# Device disabled $device_list_reading = GetDevType_Room($room);
if(defined($attr{$dn}{disable})) { $defs{$dn}{READINGS}{A0_FHT_DEVICES}{VAL} = $device_list_reading;
Log 0, "FHTCONF CMD $dn disabled"; $defs{$dn}{READINGS}{A0_FHT_DEVICES}{TIME} = TimeNow();
return undef; }
} else {
#LogLevel Log 0,"FHTCONF[ERROR] no FHTRoom defined";
my $ll = 0; return undef;
if(defined($attr{$dn}{'loglevel'})) { }
$ll = $attr{$dn}{'loglevel'}; #-----------------------------------------------------------------------------
} # Building FHEM-Commands to send
Log $ll, "FHTCONF-CMD: $dn"; # fhem "set <DAVEICE-NAME> params
#----------------------------------------------------------------------------- my (%params);
# Building FHEM-Commands to send $params{"mode"} = $defs{$dn}{READINGS}{A1_mode}{VAL};
# fhem "set <DAVEICE-NAME> params $params{"day-temp"} = $defs{$dn}{READINGS}{A2_day_temp}{VAL};
my (%params); $params{"night-temp"} = $defs{$dn}{READINGS}{A2_night_temp}{VAL};
$params{"mode"} = $defs{$dn}{READINGS}{A1_mode}{VAL}; $params{"windowopen-temp"} = $defs{$dn}{READINGS}{A2_windowopen_temp}{VAL};
$params{"day-temp"} = $defs{$dn}{READINGS}{A2_day_temp}{VAL}; $params{"lowtemp-offset"} = $defs{$dn}{READINGS}{A2_lowtemp_offset}{VAL};
$params{"night-temp"} = $defs{$dn}{READINGS}{A2_night_temp}{VAL}; # Times ----------------------------------------------------------------------
$params{"windowopen-temp"} = $defs{$dn}{READINGS}{A2_windowopen_temp}{VAL}; # Mapping ersten drei Buchstaben Wochentag => from1 to1 bzw. from2 to2
$params{"lowtemp-offset"} = $defs{$dn}{READINGS}{A2_lowtemp_offset}{VAL}; my ($reading,@times,$j,$index);
# Times ---------------------------------------------------------------------- my %weekdays = (
# Mapping ersten drei Buchstaben Wochentag => from1 to1 bzw. from2 to2 B0_MONTAG => ["mon-from1", "mon-to1", "mon-from2","mon-to2"],
my ($reading,@times,$j,$index); B1_DIENSTAG=> ["tue-from1", "tue-to1", "tue-from2","tue-to2"],
my %weekdays = ( B2_MITTWOCH => ["wed-from1", "wed-to1", "wed-from2","wed-to2"],
B0_MONTAG => ["mon-from1", "mon-to1", "mon-from2","mon-to2"], B3_DONNERSTAG => ["thu-from1", "thu-to1", "thu-from2","thu-to2"],
B1_DIENSTAG=> ["tue-from1", "tue-to1", "tue-from2","tue-to2"], B4_FREITAG => ["fri-from1", "fri-to1", "fri-from2","fri-to2"],
B2_MITTWOCH => ["wed-from1", "wed-to1", "wed-from2","wed-to2"], B5_SAMSTAG => ["sat-from1", "sat-to1", "sat-from2","sat-to2"],
B3_DONNERSTAG => ["thu-from1", "thu-to1", "thu-from2","thu-to2"], B6_SONNTAG => ["sun-from1", "sun-to1", "sun-from2","sun-to2"],
B4_FREITAG => ["fri-from1", "fri-to1", "fri-from2","fri-to2"], );
B5_SAMSTAG => ["sat-from1", "sat-to1", "sat-from2","sat-to2"], foreach $reading (sort keys %{$defs{$dn}{READINGS}}) {
B6_SONNTAG => ["sun-from1", "sun-to1", "sun-from2","sun-to2"], next if($reading !~ /^B/);
); @times = split(/\|/,$defs{$dn}{READINGS}{$reading}{VAL});
foreach $reading (sort keys %{$defs{$dn}{READINGS}}) { for ($j=0; $j < @times; $j++) {
next if($reading !~ /^B/); $index = $weekdays{$reading}[$j];
@times = split(/\|/,$defs{$dn}{READINGS}{$reading}{VAL}); $params{$index} = $times[$j];
for ($j=0; $j < @times; $j++) { }
$index = $weekdays{$reading}[$j]; }
$params{$index} = $times[$j]; # FHT-Devices ----------------------------------------------------------------
} my (@fht_devices,$fht);
} Log $ll ,"FHTCONF $dn update FHT-DEVICES: $device_list_reading";
# FHT-Devices ---------------------------------------------------------------- if($device_list_reading eq ""){
my (@fht_devices,$fht); Log $ll ,"FHTCONF-CMD $dn: NO FHT-DEVICES";
my $device_list_reading = $defs{$dn}{READINGS}{A0_FHT_DEVICES}{VAL}; return undef;}
Log $ll ,"FHTCONF $dn update FHT-DEVICES: $device_list_reading"; @fht_devices = split(/\|/,$device_list_reading);
if($device_list_reading eq ""){ # Send Commands via at-Jobs --------------------------------------------------
Log 0 ,"FHTCONF-CMD $dn: NO FHT-DEVICES"; # SendIntervall = $sn Default 5 sec
return undef;} my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(time());
@fht_devices = split(/\|/,$device_list_reading); my ($p,$old,$new,$at_time,$at_name,$tsecs);
# Send Commands via at-Jobs -------------------------------------------------- # SendList
# SendIntervall = $sn Default 5 sec my $fhemcmd = "";
my ($sn,$p,$old,$new,$at_time,$at_name,$tsecs,$i,$sec,$min,$hour,$mday,$month); foreach $fht (@fht_devices){
$sn = 5; foreach $p (sort keys %params){
if(defined($attr{$dn}{SendIntervall})){ # Send only Changes
$sn = $attr{$dn}{SendIntervall}; $old = $defs{$fht}{READINGS}{$p}{VAL};
} $new = $params{$p};
$tsecs = time() + $sn; Log $ll, "FHTCONF-CMD-OLD: $fht -> $p -> OLD:$old NEW:$new";
foreach $fht (@fht_devices){ if($old ne $new){
$i = 1; # Commands to Send
foreach $p (sort keys %params){ $fhemcmd .= " $p $new";
# Send only Changes }
$old = $defs{$fht}{READINGS}{$p}{VAL}; }
$new = $params{$p}; # Send Out
if($old ne $new){ if($fhemcmd ne "") {
($sec,$min,$hour) = (localtime($tsecs))[0..2]; my $cmd = "set $fht" . $fhemcmd;
$at_time = sprintf("%02d:%02d:%02d\n",$hour,$min,$sec); Log $ll, "FHTCONF-CMD-SEND: $fhemcmd";
$at_name = $fht . "_AT_" . sprintf("%02d",$i); fhem $cmd;
if(defined($defs{$at_name})){fhem "delete $at_name";} #Reset
fhem "define $at_name at $at_time set $fht $p $new"; $fhemcmd = "";
fhem "attr $at_name room GRP.FHTCONF"; $cmd = "";
$tsecs = $tsecs + $sn; }
$i++ else {Log 0, "FHTCONF-CMD-SEND: No Changes";}
}
} # Report 2
# Report 1 fhem "set $fht report2 255";
$tsecs = $tsecs + $sn + 120; # FHT Time
($sec,$min,$hour) = (localtime($tsecs))[0..2]; fhem "set $fht hour $hour day $mday month $month";
$at_time = sprintf("%02d:%02d:%02d\n",$hour,$min,$sec); }
$at_name = $fht . "_AT_REP1"; # Set STATE
if(defined($defs{$at_name})){fhem "delete $at_name";} $defs{$dn}{STATE} = "LastUpdate ". TimeNow();
fhem "define $at_name at $at_time set $fht report1 255"; return undef;
fhem "attr $at_name room GRP.FHTCONF"; }
# Report 2 ################################################################################
$tsecs = $tsecs + 120; sub GetDevType_Room($){
($sec,$min,$hour) = (localtime($tsecs))[0..2]; # Get All Dives By Type from Room
$at_time = sprintf("%02d:%02d:%02d\n",$hour,$min,$sec); # Params: GetDevType_Room <ROOM>
$at_name = $fht . "_AT_REP2"; # GetDevType_Room
if(defined($defs{$at_name})){fhem "delete $at_name";} # Return: List of Devices seperated by | <PIPE>
fhem "define $at_name at $at_time set $fht report2 255"; my ($room) = @_;
fhem "attr $at_name room GRP.FHTCONF"; my $type = "FHT";
# FHT Time if(!defined($room)) {return "GetDevType_ROOM[ERROR]: No Room";}
$tsecs = $tsecs + 120; if(!defined($type)) {return "GetDevType_ROOM[ERROR]: No Type";}
($sec,$min,$hour,$mday,$month) = (localtime($tsecs))[0..4]; my (@devices);
$at_time = sprintf("%02d:%02d:%02d\n",$hour,$min,$sec); foreach my $d (sort keys %attr) {
$at_name = $fht . "_AT_FHTTIME"; if($defs{$d}{TYPE} eq $type && $attr{$d}{room} =~ /$room/ ) {
if(defined($defs{$at_name})){fhem "delete $at_name";} push(@devices,$d);
fhem "define $at_name at $at_time set $fht hour $hour day $mday month $month"; }
fhem "attr $at_name room GRP.FHTCONF"; }
} return join("|",@devices);
# Set STATE }
$defs{$dn}{STATE} = "LastUpdate ". TimeNow(); ################################################################################
return undef; sub FHTCONF_init_READINGS($) {
} my ($name) = @_;
################################################################################ Log 0,"FHTCONF:$name ------INIT--------------";
# Set DEFAULT Values
# FHT's
$defs{$name}{READINGS}{A0_FHT_DEVICES}{TIME} = TimeNow();
$defs{$name}{READINGS}{A0_FHT_DEVICES}{VAL} = "";
#Mode
# Values auto, manual, holiday or holiday_short
$defs{$name}{READINGS}{A1_mode}{TIME} = TimeNow();
$defs{$name}{READINGS}{A1_mode}{VAL} = "auto";
# Temperaturen...defualt 5.5 = disable
$defs{$name}{READINGS}{A2_day_temp}{TIME} = TimeNow();
$defs{$name}{READINGS}{A2_day_temp}{VAL} = "5.5";
$defs{$name}{READINGS}{A2_night_temp}{TIME} = TimeNow();
$defs{$name}{READINGS}{A2_night_temp}{VAL} = "5.5";
$defs{$name}{READINGS}{A2_windowopen_temp}{TIME} = TimeNow();
$defs{$name}{READINGS}{A2_windowopen_temp}{VAL} = "5.5";
# LowTemp-Offest
$defs{$name}{READINGS}{A2_lowtemp_offset}{TIME} = TimeNow();
$defs{$name}{READINGS}{A2_lowtemp_offset}{VAL} = "2.0";
# Montag = Monday
$defs{$name}{READINGS}{B0_MONTAG}{TIME} = TimeNow();
$defs{$name}{READINGS}{B0_MONTAG}{VAL} = "24:00|24:00|24:00|24:00";
# Dienstag = Tuesday
$defs{$name}{READINGS}{B1_DIENSTAG}{TIME} = TimeNow();
$defs{$name}{READINGS}{B1_DIENSTAG}{VAL} = "24:00|24:00|24:00|24:00";
# Mittwoch = Wednesday
$defs{$name}{READINGS}{B2_MITTWOCH}{TIME} = TimeNow();
$defs{$name}{READINGS}{B2_MITTWOCH}{VAL} = "24:00|24:00|24:00|24:00";
# Donnerstag = Thursday
$defs{$name}{READINGS}{B3_DONNERSTAG}{TIME} = TimeNow();
$defs{$name}{READINGS}{B3_DONNERSTAG}{VAL} = "24:00|24:00|24:00|24:00";
# Freitag = Friday
$defs{$name}{READINGS}{B4_FREITAG}{TIME} = TimeNow();
$defs{$name}{READINGS}{B4_FREITAG}{VAL} = "24:00|24:00|24:00|24:00";
# Samstag = Saturday
$defs{$name}{READINGS}{B5_SAMSTAG}{TIME} = TimeNow();
$defs{$name}{READINGS}{B5_SAMSTAG}{VAL} = "24:00|24:00|24:00|24:00";
# Sonntag = Sunday
$defs{$name}{READINGS}{B6_SONNTAG}{TIME} = TimeNow();
$defs{$name}{READINGS}{B6_SONNTAG}{VAL} = "24:00|24:00|24:00|24:00";
# INIT done
$defs{$name}{READINGS}{Z0_INIT}{VAL} = 1;
$defs{$name}{READINGS}{Z0_INIT}{TIME} = TimeNow();
return undef;
}
1; 1;