2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

Alarm.pm: catch stupid configuration errors

OWMULTI.pm: bugfix of warning http://forum.fhem.de/index.php/topic,28047.0.html

git-svn-id: https://svn.fhem.de/fhem/trunk@6789 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
pahenning 2014-10-19 05:47:58 +00:00
parent d0d92d0ae3
commit f5113cc1ea
2 changed files with 46 additions and 24 deletions

View File

@ -82,7 +82,7 @@ no warnings 'deprecated';
sub Log($$); sub Log($$);
my $owx_version="5.20"; my $owx_version="5.22";
#-- flexible channel name #-- flexible channel name
my $owg_channel; my $owg_channel;
@ -189,7 +189,7 @@ sub OWMULTI_Attr(@) {
} }
} }
last; last;
}; }
} }
} }
return $ret; return $ret;
@ -290,6 +290,14 @@ sub OWMULTI_Define ($$) {
return undef; return undef;
} }
########################################################################################
#
# OWMULTI_Notify - implements the Notify Function
#
# Parameter hash = hash of device addressed
#
########################################################################################
sub OWMULTI_Notify ($$) { sub OWMULTI_Notify ($$) {
my ($hash,$dev) = @_; my ($hash,$dev) = @_;
if( grep(m/^(INITIALIZED|REREADCFG)$/, @{$dev->{CHANGED}}) ) { if( grep(m/^(INITIALIZED|REREADCFG)$/, @{$dev->{CHANGED}}) ) {
@ -298,6 +306,14 @@ sub OWMULTI_Notify ($$) {
} }
} }
########################################################################################
#
# OWMULTI_Init - implements the Init function
#
# Parameter hash = hash of device addressed
#
########################################################################################
sub OWMULTI_Init ($) { sub OWMULTI_Init ($) {
my ($hash)=@_; my ($hash)=@_;
#-- Start timer for updates #-- Start timer for updates
@ -343,6 +359,7 @@ sub OWMULTI_ChannelNames($) {
#-- put into readings #-- put into readings
$owg_channel = $cnama[0]; $owg_channel = $cnama[0];
$hash->{READINGS}{$owg_channel}{VAL} = " ";
$hash->{READINGS}{$owg_channel}{TYPE} = $cnama[1]; $hash->{READINGS}{$owg_channel}{TYPE} = $cnama[1];
$hash->{READINGS}{$owg_channel}{UNIT} = $unarr[0]; $hash->{READINGS}{$owg_channel}{UNIT} = $unarr[0];
$hash->{READINGS}{$owg_channel}{UNITABBR} = $unarr[1]; $hash->{READINGS}{$owg_channel}{UNITABBR} = $unarr[1];
@ -354,12 +371,12 @@ sub OWMULTI_ChannelNames($) {
$tfactor = 1.0; $tfactor = 1.0;
if( $tunit eq "Celsius" ){ if( $tunit eq "Celsius" ){
$tabbr = "°C"; $tabbr = "°C";
} elsif ($tunit eq "Kelvin" ){ } elsif ($tunit eq "Kelvin" ){
$tabbr = "K"; $tabbr = "K";
$toffset += "273.16" $toffset += "273.16"
} elsif ($tunit eq "Fahrenheit" ){ } elsif ($tunit eq "Fahrenheit" ){
$tabbr = "°F"; $tabbr = "°F";
$toffset = ($toffset+32)/1.8; $toffset = ($toffset+32)/1.8;
$tfactor = 1.8; $tfactor = 1.8;
} else { } else {
@ -418,7 +435,7 @@ sub OWMULTI_FormatValues($) {
} elsif( $vfunc ne "" ){ } elsif( $vfunc ne "" ){
$vval = int( $vfunc*1000 )/1000; $vval = int( $vfunc*1000 )/1000;
} else { } else {
#-- todo ?
} }
#-- string buildup for return value, STATE #-- string buildup for return value, STATE

View File

@ -40,7 +40,7 @@ my $alarmname = "Alarms"; # link text
my $alarmhiddenroom = "AlarmRoom"; # hidden room my $alarmhiddenroom = "AlarmRoom"; # hidden room
my $alarmpublicroom = "Alarm"; # public room my $alarmpublicroom = "Alarm"; # public room
my $alarmno = 8; my $alarmno = 8;
my $alarmversion = "1.6"; my $alarmversion = "1.7";
######################################################################################### #########################################################################################
# #
@ -300,24 +300,29 @@ sub Alarm_Exec($$$$$){
if( ($ntp <= $etp) && ($ntp >= $stp) ){ if( ($ntp <= $etp) && ($ntp >= $stp) ){
#-- raised by sensor (attribute values have been controlled in CreateNotifiers) #-- raised by sensor (attribute values have been controlled in CreateNotifiers)
@sta = split('\|', AttrVal($dev, "alarmSettings", 0)); @sta = split('\|', AttrVal($dev, "alarmSettings", 0));
$mga = $sta[2]." ".AttrVal($name, "level".$level."msg", 0); if( $sta[2] ){
#-- replace some parts $mga = $sta[2]." ".AttrVal($name, "level".$level."msg", 0);
my @evtpart = split(" ",$evt); #-- replace some parts
$mga =~ s/\$NAME/$dev/g; my @evtpart = split(" ",$evt);
$mga =~ s/\$EVENT/$evt/g; $mga =~ s/\$NAME/$dev/g;
for( my $i=1;$i<= int(@evtpart);$i++){ $mga =~ s/\$EVENT/$evt/g;
$mga =~ s/\$EVTPART$i/$evtpart[$i-1]/g; for( my $i=1;$i<= int(@evtpart);$i++){
} $mga =~ s/\$EVTPART$i/$evtpart[$i-1]/g;
#-- readings }
readingsSingleUpdate( $hash, "level".$level,$dev,0 ); #-- readings
readingsSingleUpdate( $hash, "short", $mga, 0); readingsSingleUpdate( $hash, "level".$level,$dev,0 );
$mga = Alarm_getstate($hash)." ".$mga; readingsSingleUpdate( $hash, "short", $mga, 0);
readingsSingleUpdate( $hash, "state", $mga, 0 ); $mga = Alarm_getstate($hash)." ".$mga;
$msg = "[Alarm $level] raised from device $dev with event $evt"; readingsSingleUpdate( $hash, "state", $mga, 0 );
#-- calling actors AFTER state update $msg = "[Alarm $level] raised from device $dev with event $evt";
$cmd = AttrVal($name, "level".$level."onact", 0); #-- calling actors AFTER state update
fhem($cmd); $cmd = AttrVal($name, "level".$level."onact", 0);
Log3 $hash,3,$msg; fhem($cmd);
Log3 $hash,3,$msg;
}else{
$msg = "[Alarm $level] not raised, alarmSensor $dev has wrong settings";
Log3 $hash,1,$msg;
}
}else{ }else{
$msg = "[Alarm $level] not raised, not in time slot"; $msg = "[Alarm $level] not raised, not in time slot";
Log3 $hash,5,$msg; Log3 $hash,5,$msg;