mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-09 20:57:11 +00:00
22_HOMEMODE: fix calendar placeholders not being replaced, improved empty battery handling while adding to HOMEMODE, improved function HOMEMODE_name2alias for better alias handling, other minor improvements
git-svn-id: https://svn.fhem.de/fhem/trunk@23732 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
0fc902367d
commit
571f1502a5
@ -16,7 +16,7 @@ use Time::HiRes qw(gettimeofday);
|
||||
use HttpUtils;
|
||||
use vars qw{%attr %defs %modules $FW_CSRF};
|
||||
|
||||
my $HOMEMODE_version = "1.5.3";
|
||||
my $HOMEMODE_version = "1.5.4";
|
||||
my $HOMEMODE_Daytimes = "05:00|morning 10:00|day 14:00|afternoon 18:00|evening 23:00|night";
|
||||
my $HOMEMODE_Seasons = "03.01|spring 06.01|summer 09.01|autumn 12.01|winter";
|
||||
my $HOMEMODE_UserModes = "gotosleep,awoken,asleep";
|
||||
@ -60,7 +60,7 @@ sub HOMEMODE_Define($$)
|
||||
if (!$resdev)
|
||||
{
|
||||
my @resdevs;
|
||||
foreach (devspec2array("TYPE=RESIDENTS"))
|
||||
for (devspec2array("TYPE=RESIDENTS"))
|
||||
{
|
||||
push @resdevs,$_;
|
||||
}
|
||||
@ -160,7 +160,7 @@ sub HOMEMODE_Notify($$)
|
||||
}
|
||||
elsif (grep /^DEFINED/,@{$events})
|
||||
{
|
||||
foreach (@{$events})
|
||||
for (@{$events})
|
||||
{
|
||||
next unless ($_ =~ /^DEFINED\s(.+)$/);
|
||||
my $dev = $1;
|
||||
@ -200,7 +200,7 @@ sub HOMEMODE_Notify($$)
|
||||
(AttrVal($name,"HomeEventsCalendarDevices",undef)
|
||||
&& grep(/^$devname$/,devspec2array(AttrVal($name,"HomeEventsCalendarDevices","")))))
|
||||
{
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless ((HOMEMODE_ID($devname,"Calendar") && $evt =~ /^(start|end):\s(.+)$/) || (HOMEMODE_ID($devname,"holiday") && $evt =~ /^(state):\s(.+)$/));
|
||||
HOMEMODE_EventCommands($hash,$devname,$1,$2);
|
||||
@ -258,7 +258,7 @@ sub HOMEMODE_Notify($$)
|
||||
{
|
||||
my $read = AttrVal($name,"HomeSensorsPowerEnergyReadings","power energy");
|
||||
$read =~ s/ /\|/g;
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless ($evt =~ /^($read):\s(.+)$/);
|
||||
HOMEMODE_PowerEnergy($hash,$devname,$1,(split " ",$2)[0]);
|
||||
@ -268,7 +268,7 @@ sub HOMEMODE_Notify($$)
|
||||
elsif ($hash->{SENSORSSMOKE} && grep(/^$devname$/,split /,/,$hash->{SENSORSSMOKE}))
|
||||
{
|
||||
my $read = AttrVal($name,"HomeSensorsSmokeReading","state");
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless ($evt =~ /^$read:\s(.+)$/);
|
||||
HOMEMODE_Smoke($hash,$devname,$1);
|
||||
@ -292,7 +292,7 @@ sub HOMEMODE_Notify($$)
|
||||
my $read = AttrVal($name,"HomeSensorsLuminanceReading","luminance");
|
||||
if (grep /^$read:\s.+$/,@{$events})
|
||||
{
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless ($evt =~ /^$read:\s(.+)$/);
|
||||
HOMEMODE_Luminance($hash,$devname,(split " ",$1)[0]);
|
||||
@ -304,7 +304,7 @@ sub HOMEMODE_Notify($$)
|
||||
{
|
||||
my $temp;
|
||||
my $humi;
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless ($evt =~ /^(humidity|temperature):\s(.+)$/);
|
||||
$temp = (split " ",$2)[0] if ($1 eq "temperature");
|
||||
@ -329,7 +329,7 @@ sub HOMEMODE_Notify($$)
|
||||
if (AttrVal($name,"HomeSensorHumidityOutside",undef) && $devname eq AttrVal($name,"HomeSensorHumidityOutside","") && grep /^humidity:\s/,@{$events})
|
||||
{
|
||||
$hash->{helper}{externalHumidity} = 1;
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless ($evt =~ /^humidity:\s(.+)$/);
|
||||
my $val = (split " ",$1)[0];
|
||||
@ -343,7 +343,7 @@ sub HOMEMODE_Notify($$)
|
||||
my $read = (split /:/,AttrVal($name,"HomeSensorWindspeed",""))[1];
|
||||
if (grep /^$read:\s(.+)$/,@{$events})
|
||||
{
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless ($evt =~ /^$read:\s(.+)$/);
|
||||
my $val = (split " ",$1)[0];
|
||||
@ -358,7 +358,7 @@ sub HOMEMODE_Notify($$)
|
||||
my $read = (split /:/,AttrVal($name,"HomeSensorAirpressure",""))[1];
|
||||
if (grep /^$read:\s(.+)$/,@{$events})
|
||||
{
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless ($evt =~ /^$read:\s(.+)$/);
|
||||
my $val = (split " ",$1)[0];
|
||||
@ -372,7 +372,7 @@ sub HOMEMODE_Notify($$)
|
||||
{
|
||||
my $resident;
|
||||
my $residentregex;
|
||||
foreach (split /,/,$hash->{RESIDENTS})
|
||||
for (split /,/,$hash->{RESIDENTS})
|
||||
{
|
||||
my $regex = lc($_);
|
||||
$regex =~ s/^(rr_|rg_|rp_)//;
|
||||
@ -388,7 +388,7 @@ sub HOMEMODE_Notify($$)
|
||||
if (ReadingsVal($devname,"presence","") !~ /^maybe/)
|
||||
{
|
||||
my @presentdevicespresent;
|
||||
foreach my $device (devspec2array("TYPE=$prestype:FILTER=presence=^(maybe.)?(absent|present|appeared|disappeared)"))
|
||||
for my $device (devspec2array("TYPE=$prestype:FILTER=presence=^(maybe.)?(absent|present|appeared|disappeared)"))
|
||||
{
|
||||
next unless (lc($device) =~ /$residentregex/);
|
||||
push @presentdevicespresent,$device if (ReadingsVal($device,"presence","") =~ /^(present|appeared|maybe.absent)$/);
|
||||
@ -438,7 +438,7 @@ sub HOMEMODE_Notify($$)
|
||||
my @lowOld = split /,/,ReadingsVal($name,"batteryLow","");
|
||||
my @low;
|
||||
@low = @lowOld if (@lowOld);
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless ($evt =~ /^$read:\s(.+)$/);
|
||||
my $val = $1;
|
||||
@ -449,7 +449,7 @@ sub HOMEMODE_Notify($$)
|
||||
elsif (grep /^$devname$/,@low)
|
||||
{
|
||||
my @lown;
|
||||
foreach (@low)
|
||||
for (@low)
|
||||
{
|
||||
push @lown,$_ if ($_ ne $devname);
|
||||
}
|
||||
@ -542,7 +542,7 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
my @presdevs = devspec2array("TYPE=$presencetype:FILTER=presence=^(maybe.)?(absent|present|appeared|disappeared)");
|
||||
my @residentsshort;
|
||||
my @logtexte;
|
||||
foreach my $resident (split /,/,$hash->{RESIDENTS})
|
||||
for my $resident (split /,/,$hash->{RESIDENTS})
|
||||
{
|
||||
push @allMonitoredDevices,$resident;
|
||||
my $short = lc($resident);
|
||||
@ -551,7 +551,7 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
if ($autopresence)
|
||||
{
|
||||
my @residentspresdevs;
|
||||
foreach my $p (@presdevs)
|
||||
for my $p (@presdevs)
|
||||
{
|
||||
next unless (lc($p) =~ /$short/);
|
||||
push @residentspresdevs,$p;
|
||||
@ -592,7 +592,7 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
if ($contacts)
|
||||
{
|
||||
my @sensors;
|
||||
foreach my $s (devspec2array($contacts))
|
||||
for my $s (devspec2array($contacts))
|
||||
{
|
||||
push @sensors,$s;
|
||||
push @allMonitoredDevices,$s if (!grep /^$s$/,@allMonitoredDevices);
|
||||
@ -609,7 +609,7 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
if ($motion)
|
||||
{
|
||||
my @sensors;
|
||||
foreach my $s (devspec2array($motion))
|
||||
for my $s (devspec2array($motion))
|
||||
{
|
||||
push @sensors,$s;
|
||||
push @allMonitoredDevices,$s if (!grep /^$s$/,@allMonitoredDevices);
|
||||
@ -627,7 +627,7 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
{
|
||||
my @sensors;
|
||||
my ($p,$e) = split " ",AttrVal($name,"HomeSensorsPowerEnergyReadings","power energy");
|
||||
foreach my $s (devspec2array($power))
|
||||
for my $s (devspec2array($power))
|
||||
{
|
||||
next unless (HOMEMODE_ID($s,undef,$p) && HOMEMODE_ID($s,undef,$e));
|
||||
push @sensors,$s;
|
||||
@ -640,7 +640,7 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
{
|
||||
my @sensors;
|
||||
my $r = AttrVal($name,"HomeSensorsSmokeReading","state");
|
||||
foreach my $s (devspec2array($smoke))
|
||||
for my $s (devspec2array($smoke))
|
||||
{
|
||||
next unless (HOMEMODE_ID($s,undef,$r));
|
||||
push @sensors,$s;
|
||||
@ -652,7 +652,7 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
if ($battery)
|
||||
{
|
||||
my @sensors;
|
||||
foreach my $s (devspec2array($battery))
|
||||
for my $s (devspec2array($battery))
|
||||
{
|
||||
my $read = AttrVal($name,"HomeSensorsBatteryReading","battery");
|
||||
my $val = ReadingsVal($s,$read,undef);
|
||||
@ -662,7 +662,10 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
$hash->{SENSORSBATTERY} = join(",",sort @sensors) if (@sensors);
|
||||
if (!grep(/^$s$/,split(/,/,ReadingsVal($name,"batteryLow",""))))
|
||||
{
|
||||
CommandTrigger(undef,"$s $read: ok");
|
||||
CommandTrigger(undef,"$s $read: ok") if ($val =~ /^(low|nok)$/);
|
||||
CommandTrigger(undef,"$s $read: 100") if ($val =~ /^\d{1,3}$/);
|
||||
CommandTrigger(undef,"$s $read: 100%") if ($val =~ /^\d{1,3}%$/);
|
||||
CommandTrigger(undef,"$s $read: 100 %") if ($val =~ /^\d{1,3}\s%$/);
|
||||
CommandTrigger(undef,"$s $read: $val");
|
||||
}
|
||||
}
|
||||
@ -682,19 +685,19 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
CommandDeleteReading(undef,"$name event-.+");
|
||||
if (HOMEMODE_AttrCheck($hash,"HomeEventsHolidayDevices"))
|
||||
{
|
||||
foreach my $c (devspec2array(HOMEMODE_AttrCheck($hash,"HomeEventsHolidayDevices")))
|
||||
for my $c (devspec2array(HOMEMODE_AttrCheck($hash,"HomeEventsHolidayDevices")))
|
||||
{
|
||||
push @cals,$c if (!grep /^$c$/,@cals);
|
||||
}
|
||||
}
|
||||
if (HOMEMODE_AttrCheck($hash,"HomeEventsCalendarDevices"))
|
||||
{
|
||||
foreach my $c (devspec2array(HOMEMODE_AttrCheck($hash,"HomeEventsCalendarDevices")))
|
||||
for my $c (devspec2array(HOMEMODE_AttrCheck($hash,"HomeEventsCalendarDevices")))
|
||||
{
|
||||
push @cals,$c if (!grep /^$c$/,@cals);
|
||||
}
|
||||
}
|
||||
foreach my $c (@cals)
|
||||
for my $c (@cals)
|
||||
{
|
||||
push @allMonitoredDevices,$c if (!grep /^$c$/,@allMonitoredDevices);
|
||||
if (HOMEMODE_ID($c,"Calendar"))
|
||||
@ -713,7 +716,7 @@ sub HOMEMODE_updateInternals($;$$)
|
||||
{
|
||||
my $read = AttrVal($name,"HomeSensorsLuminanceReading","luminance");
|
||||
my @sensors;
|
||||
foreach my $s (devspec2array($luminance))
|
||||
for my $s (devspec2array($luminance))
|
||||
{
|
||||
next unless (HOMEMODE_ID($s,undef,AttrVal($name,"HomeSensorsLuminanceReading","luminance")));
|
||||
push @sensors,$s;
|
||||
@ -819,8 +822,7 @@ sub HOMEMODE_Get($@)
|
||||
"$cmd benötigt ein Argument, entweder long oder short!":
|
||||
"$cmd needs one argument of long or short!";
|
||||
return $trans if (!$value || $value !~ /^(long|short)$/);
|
||||
my $m = "Long";
|
||||
$m = "Short" if ($value eq "short");
|
||||
my $m = $value eq "short"?"Short":"Long";
|
||||
HOMEMODE_WeatherTXT($hash,AttrVal($name,"HomeTextWeather$m",""));
|
||||
}
|
||||
elsif ($cmd eq "weatherForecast")
|
||||
@ -861,7 +863,7 @@ sub HOMEMODE_Set($@)
|
||||
my $slocations = HOMEMODE_AttrCheck($hash,"HomeSpecialLocations");
|
||||
if ($slocations)
|
||||
{
|
||||
foreach (split /,/,$slocations)
|
||||
for (split /,/,$slocations)
|
||||
{
|
||||
push @locations,$_;
|
||||
}
|
||||
@ -870,7 +872,7 @@ sub HOMEMODE_Set($@)
|
||||
my $smodes = HOMEMODE_AttrCheck($hash,"HomeSpecialModes");
|
||||
if ($smodes)
|
||||
{
|
||||
foreach (split /,/,$smodes)
|
||||
for (split /,/,$smodes)
|
||||
{
|
||||
push @modeparams,$_;
|
||||
}
|
||||
@ -1135,7 +1137,7 @@ sub HOMEMODE_makeHR($$@)
|
||||
my @aliases;
|
||||
my $and = (split /\|/,AttrVal($name,"HomeTextAndAreIs","and|are|is"))[0];
|
||||
my $text;
|
||||
foreach (@names)
|
||||
for (@names)
|
||||
{
|
||||
my $alias = $noart ? HOMEMODE_name2alias($_) : HOMEMODE_name2alias($_,1);
|
||||
push @aliases,$alias;
|
||||
@ -1191,7 +1193,7 @@ sub HOMEMODE_RESIDENTS($;$)
|
||||
my $emp = ReplaceEventMap($dev,"present",1);
|
||||
if (grep /^state:\s/,@{$events})
|
||||
{
|
||||
foreach (@{$events})
|
||||
for (@{$events})
|
||||
{
|
||||
next unless ($_ =~ /^state:\s(.+)$/ && grep /^$1$/,split /,/,$HOMEMODE_UserModesAll);
|
||||
$mode = $1;
|
||||
@ -1239,7 +1241,7 @@ sub HOMEMODE_RESIDENTS($;$)
|
||||
if (grep /^location:\s/,@{$events})
|
||||
{
|
||||
my $loc;
|
||||
foreach (@{$events})
|
||||
for (@{$events})
|
||||
{
|
||||
next unless ($_ =~ /^location:\s(.+)$/);
|
||||
$loc = $1;
|
||||
@ -1359,20 +1361,20 @@ sub HOMEMODE_Attributes($)
|
||||
push @attribs,"HomeCMDicewarning-on:textField-long";
|
||||
push @attribs,"HomeCMDicewarning-off:textField-long";
|
||||
push @attribs,"HomeCMDlocation:textField-long";
|
||||
foreach (split /,/,$HOMEMODE_Locations)
|
||||
for (split /,/,$HOMEMODE_Locations)
|
||||
{
|
||||
push @attribs,"HomeCMDlocation-$_:textField-long";
|
||||
}
|
||||
push @attribs,"HomeCMDlocation-resident:textField-long";
|
||||
push @attribs,"HomeCMDmode:textField-long";
|
||||
push @attribs,"HomeCMDmode-absent-belated:textField-long";
|
||||
foreach (split /,/,$HOMEMODE_UserModesAll)
|
||||
for (split /,/,$HOMEMODE_UserModesAll)
|
||||
{
|
||||
push @attribs,"HomeCMDmode-$_:textField-long";
|
||||
push @attribs,"HomeCMDmode-$_-resident:textField-long";
|
||||
}
|
||||
push @attribs,"HomeCMDmodeAlarm:textField-long";
|
||||
foreach (split /,/,$HOMEMODE_AlarmModes)
|
||||
for (split /,/,$HOMEMODE_AlarmModes)
|
||||
{
|
||||
push @attribs,"HomeCMDmodeAlarm-$_:textField-long";
|
||||
}
|
||||
@ -1469,7 +1471,7 @@ sub HOMEMODE_userattr($)
|
||||
my @userattrAll;
|
||||
my @homeattr;
|
||||
my @stayattr;
|
||||
foreach (split " ",AttrVal($name,"userattr",""))
|
||||
for (split " ",AttrVal($name,"userattr",""))
|
||||
{
|
||||
if ($_ =~ /^Home/)
|
||||
{
|
||||
@ -1480,23 +1482,23 @@ sub HOMEMODE_userattr($)
|
||||
push @stayattr,$_;
|
||||
}
|
||||
}
|
||||
foreach (split /,/,HOMEMODE_AttrCheck($hash,"HomeSpecialModes"))
|
||||
for (split /,/,HOMEMODE_AttrCheck($hash,"HomeSpecialModes"))
|
||||
{
|
||||
push @userattrAll,"HomeCMDmode-$_";
|
||||
}
|
||||
foreach (split /,/,HOMEMODE_AttrCheck($hash,"HomeSpecialLocations"))
|
||||
for (split /,/,HOMEMODE_AttrCheck($hash,"HomeSpecialLocations"))
|
||||
{
|
||||
push @userattrAll,"HomeCMDlocation-$_";
|
||||
}
|
||||
if (HOMEMODE_AttrCheck($hash,"HomeEventsHolidayDevices"))
|
||||
{
|
||||
foreach my $cal (devspec2array(HOMEMODE_AttrCheck($hash,"HomeEventsHolidayDevices")))
|
||||
for my $cal (devspec2array(HOMEMODE_AttrCheck($hash,"HomeEventsHolidayDevices")))
|
||||
{
|
||||
my $events = HOMEMODE_CalendarEvents($name,$cal);
|
||||
push @userattrAll,"HomeCMDevent-$cal-each";
|
||||
if ($adv)
|
||||
{
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
push @userattrAll,"HomeCMDevent-$cal-$evt-begin";
|
||||
push @userattrAll,"HomeCMDevent-$cal-$evt-end";
|
||||
@ -1506,13 +1508,13 @@ sub HOMEMODE_userattr($)
|
||||
}
|
||||
if (HOMEMODE_AttrCheck($hash,"HomeEventsCalendarDevices"))
|
||||
{
|
||||
foreach my $cal (devspec2array(HOMEMODE_AttrCheck($hash,"HomeEventsCalendarDevices")))
|
||||
for my $cal (devspec2array(HOMEMODE_AttrCheck($hash,"HomeEventsCalendarDevices")))
|
||||
{
|
||||
my $events = HOMEMODE_CalendarEvents($name,$cal);
|
||||
push @userattrAll,"HomeCMDevent-$cal-each";
|
||||
if ($adv)
|
||||
{
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
push @userattrAll,"HomeCMDevent-$cal-$evt-begin";
|
||||
push @userattrAll,"HomeCMDevent-$cal-$evt-end";
|
||||
@ -1520,7 +1522,7 @@ sub HOMEMODE_userattr($)
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach my $resident (split /,/,$hash->{RESIDENTS})
|
||||
for my $resident (split /,/,$hash->{RESIDENTS})
|
||||
{
|
||||
my $devtype = HOMEMODE_ID($resident,"ROOMMATE|GUEST|PET") ? $defs{$resident}->{TYPE} : "";
|
||||
next unless ($devtype);
|
||||
@ -1529,14 +1531,14 @@ sub HOMEMODE_userattr($)
|
||||
my $states = "absent";
|
||||
$states .= ",$HOMEMODE_UserModesAll" if ($devtype =~ /^ROOMMATE|PET$/);
|
||||
$states .= ",home,$HOMEMODE_UserModes" if ($devtype eq "GUEST");
|
||||
foreach (split /,/,$states)
|
||||
for (split /,/,$states)
|
||||
{
|
||||
push @userattrAll,"HomeCMDmode-$_-$resident";
|
||||
}
|
||||
push @userattrAll,"HomeCMDpresence-absent-$resident";
|
||||
push @userattrAll,"HomeCMDpresence-present-$resident";
|
||||
my $locs = $devtype eq "ROOMMATE" ? AttrVal($resident,"rr_locations","") : $devtype eq "GUEST" ? AttrVal($resident,"rg_locations","") : AttrVal($resident,"rp_locations","");
|
||||
foreach (split/,/,$locs)
|
||||
for (split/,/,$locs)
|
||||
{
|
||||
push @userattrAll,"HomeCMDlocation-$_-$resident";
|
||||
push @userattrAll,"HomeCMDlocation-$_-resident" if (!grep(/^HomeCMDlocation-$_-resident$/,@userattrAll));
|
||||
@ -1547,7 +1549,7 @@ sub HOMEMODE_userattr($)
|
||||
{
|
||||
my $count;
|
||||
my $numbers;
|
||||
foreach (@presdevs)
|
||||
for (@presdevs)
|
||||
{
|
||||
$count++;
|
||||
$numbers .= "," if ($numbers);
|
||||
@ -1557,7 +1559,7 @@ sub HOMEMODE_userattr($)
|
||||
push @userattrAll,"HomePresenceDevicePresentCount-$resident:$numbers";
|
||||
if ($adv)
|
||||
{
|
||||
foreach (@presdevs)
|
||||
for (@presdevs)
|
||||
{
|
||||
push @userattrAll,"HomeCMDpresence-absent-$resident-device";
|
||||
push @userattrAll,"HomeCMDpresence-present-$resident-device";
|
||||
@ -1567,7 +1569,7 @@ sub HOMEMODE_userattr($)
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (split " ",HOMEMODE_AttrCheck($hash,"HomeDaytimes",$HOMEMODE_Daytimes))
|
||||
for (split " ",HOMEMODE_AttrCheck($hash,"HomeDaytimes",$HOMEMODE_Daytimes))
|
||||
{
|
||||
my $text = (split /\|/)[1];
|
||||
my $d = "HomeCMDdaytime-$text";
|
||||
@ -1575,14 +1577,14 @@ sub HOMEMODE_userattr($)
|
||||
push @userattrAll,$d if (!grep /^$d$/,@userattrAll);
|
||||
push @userattrAll,$m if (!grep /^$m$/,@userattrAll);
|
||||
}
|
||||
foreach (split " ",HOMEMODE_AttrCheck($hash,"HomeSeasons",$HOMEMODE_Seasons))
|
||||
for (split " ",HOMEMODE_AttrCheck($hash,"HomeSeasons",$HOMEMODE_Seasons))
|
||||
{
|
||||
my $text = (split /\|/)[1];
|
||||
my $s = "HomeCMDseason-$text";
|
||||
push @userattrAll,$s if (!grep /^$s$/,@userattrAll);
|
||||
}
|
||||
my @list;
|
||||
foreach my $attrib (@userattrAll)
|
||||
for my $attrib (@userattrAll)
|
||||
{
|
||||
$attrib = $attrib =~ /^.+:.+$/ ? $attrib : "$attrib:textField-long";
|
||||
push @list,$attrib if (!grep /^$attrib$/,@list);
|
||||
@ -1590,7 +1592,7 @@ sub HOMEMODE_userattr($)
|
||||
my $lo = join " ",sort @homeattr;
|
||||
my $ln = join " ",sort @list;
|
||||
return if ($lo eq $ln);
|
||||
foreach (@stayattr)
|
||||
for (@stayattr)
|
||||
{
|
||||
push @list,$_;
|
||||
}
|
||||
@ -1605,13 +1607,13 @@ sub HOMEMODE_cleanUserattr($$;$)
|
||||
my @devspec = devspec2array($devs);
|
||||
return if (!@devspec);
|
||||
my @newdevspec = devspec2array($newdevs) if ($newdevs);
|
||||
foreach my $dev (@devspec)
|
||||
for my $dev (@devspec)
|
||||
{
|
||||
my $userattr = AttrVal($dev,"userattr","");
|
||||
if ($userattr)
|
||||
{
|
||||
my @stayattr;
|
||||
foreach (split " ",$userattr)
|
||||
for (split " ",$userattr)
|
||||
{
|
||||
if ($_ =~ /^Home/)
|
||||
{
|
||||
@ -1707,7 +1709,7 @@ sub HOMEMODE_Attr(@)
|
||||
elsif ($attr_name =~ /^HomeEvents(Holiday|Calendar)Devices$/ && $init_done)
|
||||
{
|
||||
my @wd;
|
||||
foreach (devspec2array($attr_value))
|
||||
for (devspec2array($attr_value))
|
||||
{
|
||||
next unless (!HOMEMODE_ID($_,"holiday|Calendar"));
|
||||
push @wd,$_ ;
|
||||
@ -1773,7 +1775,7 @@ sub HOMEMODE_Attr(@)
|
||||
"Anzahl von $attr_name Werten ($t) ungleich zu den verfügbaren Jahreszeiten ($s) im Attribut HomeSeasons!":
|
||||
"Number of $attr_name values ($t) not matching the number of available seasons ($s) in attribute HomeSeasons!";
|
||||
return $trans if ($s != $t);
|
||||
foreach (@times)
|
||||
for (@times)
|
||||
{
|
||||
$trans = $HOMEMODE_de?
|
||||
"Teiler dürfen nicht 0 sein, denn Division durch 0 ist nicht definiert!":
|
||||
@ -1794,7 +1796,7 @@ sub HOMEMODE_Attr(@)
|
||||
"Ungültiger Wert $attr_value für Attribut $attr_name. Es werden Leerzeichen separierte Zahlen benötigt, z.B. 5 10 15 17.5":
|
||||
"Invalid value $attr_value for attribute $attr_name. You have to provide space separated numbers, e.g. 5 10 15 17.5";
|
||||
return $trans if ($attr_value !~ /^\d{1,4}(\.\d)?((\s\d{1,4}(\.\d)?)?){0,}$/);
|
||||
foreach (split " ",$attr_value)
|
||||
for (split " ",$attr_value)
|
||||
{
|
||||
$trans = $HOMEMODE_de?
|
||||
"Teiler dürfen nicht 0 sein, denn Division durch 0 ist nicht definiert!":
|
||||
@ -1906,7 +1908,7 @@ sub HOMEMODE_Attr(@)
|
||||
if ($attr_value_old ne $attr_value)
|
||||
{
|
||||
my @ts;
|
||||
foreach (split " ",$attr_value)
|
||||
for (split " ",$attr_value)
|
||||
{
|
||||
my $time = (split /\|/)[0];
|
||||
my ($h,$m) = split /:/,$time;
|
||||
@ -1936,7 +1938,7 @@ sub HOMEMODE_Attr(@)
|
||||
if ($attr_value_old ne $attr_value)
|
||||
{
|
||||
my @ds;
|
||||
foreach (split " ",$attr_value)
|
||||
for (split " ",$attr_value)
|
||||
{
|
||||
my $time = (split /\|/)[0];
|
||||
my ($m,$d) = split /\./,$time;
|
||||
@ -2233,31 +2235,31 @@ sub HOMEMODE_replacePlaceholders($$;$)
|
||||
$cmd =~ s/%DEVICEP%/$ppdevice/g;
|
||||
$cmd =~ s/%DISABLED%/$disabled/g;
|
||||
$cmd =~ s/%DND%/$dnd/g;
|
||||
if (AttrVal($name,"HomeEventsHolidayDevices",undef) || AttrVal($name,"HomeEventsHolidayDevices",undef))
|
||||
if (AttrVal($name,"HomeEventsHolidayDevices",undef) || AttrVal($name,"HomeEventsCalendarDevices",undef))
|
||||
{
|
||||
my @cals;
|
||||
if (AttrVal($name,"HomeEventsHolidayDevices",""))
|
||||
{
|
||||
foreach my $c (devspec2array(AttrVal($name,"HomeEventsHolidayDevices","")))
|
||||
for my $c (devspec2array(AttrVal($name,"HomeEventsHolidayDevices","")))
|
||||
{
|
||||
push @cals,$c if (!grep /^$c$/,@cals);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach my $c (devspec2array(AttrVal($name,"HomeEventsCalendarDevices","")))
|
||||
for my $c (devspec2array(AttrVal($name,"HomeEventsCalendarDevices","")))
|
||||
{
|
||||
push @cals,$c if (!grep /^$c$/,@cals);
|
||||
}
|
||||
}
|
||||
foreach my $cal (@cals)
|
||||
for my $cal (@cals)
|
||||
{
|
||||
my $state = ReadingsVal($name,"event-$cal","none") ne "none" ? ReadingsVal($name,"event-$cal","") : "";
|
||||
$cmd =~ s/%$cal%/$state/g;
|
||||
my $events = HOMEMODE_CalendarEvents($name,$cal);
|
||||
if (HOMEMODE_ID($cal,"holiday"))
|
||||
{
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
my $val = $state eq $evt ? 1 : "";
|
||||
$cmd =~ s/%$cal-$evt%/$val/g;
|
||||
@ -2265,9 +2267,9 @@ sub HOMEMODE_replacePlaceholders($$;$)
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
foreach my $e (split /,/,$state)
|
||||
for my $e (split /,/,$state)
|
||||
{
|
||||
my $val = $e eq $evt ? 1 : "";
|
||||
$cmd =~ s/%$cal-$evt%/$val/g;
|
||||
@ -2343,11 +2345,11 @@ sub HOMEMODE_serializeCMD($@)
|
||||
my ($hash,@cmds) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my @newcmds;
|
||||
foreach my $cmd (@cmds)
|
||||
for my $cmd (@cmds)
|
||||
{
|
||||
$cmd =~ s/\r\n/\n/gm;
|
||||
my @newcmd;
|
||||
foreach (split /\n+/,$cmd)
|
||||
for (split /\n+/,$cmd)
|
||||
{
|
||||
next unless ($_ !~ /^\s*(#|$)/);
|
||||
$_ =~ s/\s{2,}/ /g;
|
||||
@ -2479,7 +2481,7 @@ sub HOMEMODE_CheckIfIsValidDevspec($;$)
|
||||
{
|
||||
my ($spec,$read) = @_;
|
||||
my @names;
|
||||
foreach (devspec2array($spec))
|
||||
for (devspec2array($spec))
|
||||
{
|
||||
next unless (HOMEMODE_ID($_,undef,$read));
|
||||
push @names,$_;
|
||||
@ -2540,7 +2542,7 @@ sub HOMEMODE_DayTime($)
|
||||
my $loctime = $hour * 60 + $min;
|
||||
my @texts;
|
||||
my @times;
|
||||
foreach (split " ",$daytimes)
|
||||
for (split " ",$daytimes)
|
||||
{
|
||||
my ($dt,$text) = split /\|/;
|
||||
my ($h,$m) = split /:/,$dt;
|
||||
@ -2551,8 +2553,7 @@ sub HOMEMODE_DayTime($)
|
||||
my $daytime = $texts[scalar @texts - 1];
|
||||
for (my $x = 0; $x < scalar @times; $x++)
|
||||
{
|
||||
my $y = $x + 1;
|
||||
$y = 0 if ($x == scalar @times - 1);
|
||||
my $y = $x==scalar(@times)-1?0:$x+1;
|
||||
$daytime = $texts[$x] if ($y > $x && $loctime >= $times[$x] && $loctime < $times[$y]);
|
||||
}
|
||||
return $daytime;
|
||||
@ -2582,7 +2583,7 @@ sub HOMEMODE_SetSeason($)
|
||||
my $locdays = ($month + 1) * 31 + $mday;
|
||||
my @texts;
|
||||
my @dates;
|
||||
foreach (split " ",$seasons)
|
||||
for (split " ",$seasons)
|
||||
{
|
||||
my ($date,$text) = split /\|/;
|
||||
my ($m,$d) = split /\./,$date;
|
||||
@ -2590,11 +2591,10 @@ sub HOMEMODE_SetSeason($)
|
||||
push @dates,$days;
|
||||
push @texts,$text;
|
||||
}
|
||||
my $season = $texts[scalar @texts - 1];
|
||||
my $season = $texts[scalar(@texts)-1];
|
||||
for (my $x = 0; $x < scalar @dates; $x++)
|
||||
{
|
||||
my $y = $x + 1;
|
||||
$y = 0 if ($x == scalar @dates - 1);
|
||||
my $y = $x==scalar(@dates)-1?0:$x+1;
|
||||
$season = $texts[$x] if ($y > $x && $locdays >= $dates[$x] && $locdays < $dates[$y]);
|
||||
}
|
||||
if (ReadingsVal($name,"season","") ne $season)
|
||||
@ -2631,7 +2631,7 @@ sub HOMEMODE_addSensorsuserattr($$;$)
|
||||
my @devspec = devspec2array($devs);
|
||||
my @olddevspec = devspec2array($olddevs) if ($olddevs);
|
||||
HOMEMODE_cleanUserattr($hash,$olddevs,$devs) if (@olddevspec);
|
||||
foreach my $sensor (@devspec)
|
||||
for my $sensor (@devspec)
|
||||
{
|
||||
my $inolddevspec = @olddevspec && grep /^$sensor$/,@olddevspec ? 1 : 0;
|
||||
my $alias = AttrVal($sensor,"alias","");
|
||||
@ -2691,7 +2691,7 @@ sub HOMEMODE_Luminance($;$$)
|
||||
my $read = AttrVal($name,"HomeSensorsLuminanceReading","luminance");
|
||||
$lum = 0 if (!$lum);
|
||||
my @sensorsa;
|
||||
foreach (@sensors)
|
||||
for (@sensors)
|
||||
{
|
||||
next unless (!HOMEMODE_IsDisabled($hash,$_));
|
||||
push @sensorsa,$_;
|
||||
@ -2735,7 +2735,7 @@ sub HOMEMODE_TriggerState($;$$$)
|
||||
my $amode = ReadingsVal($name,"modeAlarm","");
|
||||
if ($contacts)
|
||||
{
|
||||
foreach my $sensor (devspec2array($contacts))
|
||||
for my $sensor (devspec2array($contacts))
|
||||
{
|
||||
next if (HOMEMODE_IsDisabled($hash,$sensor));
|
||||
my ($oread,$tread) = split " ",AttrVal($sensor,"HomeReadings",AttrVal($name,"HomeSensorsContactReadings","state sabotageError")),2;
|
||||
@ -2788,7 +2788,7 @@ sub HOMEMODE_TriggerState($;$$$)
|
||||
}
|
||||
if ($motions)
|
||||
{
|
||||
foreach my $sensor (devspec2array($motions))
|
||||
for my $sensor (devspec2array($motions))
|
||||
{
|
||||
next if (HOMEMODE_IsDisabled($hash,$sensor));
|
||||
my ($oread,$tread) = split " ",AttrVal($sensor,"HomeReadings",AttrVal($name,"HomeSensorsMotionReadings","state sabotageError")),2;
|
||||
@ -2911,9 +2911,10 @@ sub HOMEMODE_name2alias($;$)
|
||||
my ($name,$witharticle) = @_;
|
||||
my $alias = AttrVal($name,"alias",$name);
|
||||
my $art;
|
||||
$art = "der" if ($alias =~ /sensor|dete[ck]tor|melder/i);
|
||||
$art = "die" if ($alias =~ /t(ü|ue)r/i);
|
||||
$art = "das" if ($alias =~ /fenster/i);
|
||||
$art = "der" if ($alias =~ /(sensor|dete[ck]tor|melder|kontakt)$/i);
|
||||
$art = "der" if ($alias =~ /^(sensor|dete[ck]tor|melder|kontakt)\s.+/i);
|
||||
my $ret = $witharticle && $art ? "$art $alias" : $alias;
|
||||
return $ret;
|
||||
}
|
||||
@ -2932,7 +2933,7 @@ sub HOMEMODE_ContactOpenCheck($$;$$)
|
||||
$donttrigger = 1 if ($dtmode && $mode =~ /^($dtmode)$/);
|
||||
if (!$donttrigger && $dtmode && $dtres)
|
||||
{
|
||||
foreach (devspec2array($dtres))
|
||||
for (devspec2array($dtres))
|
||||
{
|
||||
next if (HOMEMODE_IsDisabled(undef,$_));
|
||||
$donttrigger = 1 if (ReadingsVal($_,"state","") =~ /^($dtmode)$/);
|
||||
@ -2956,7 +2957,7 @@ sub HOMEMODE_ContactOpenCheck($$;$$)
|
||||
my @divs = split " ",$dividers;
|
||||
my $divider;
|
||||
my $count = 0;
|
||||
foreach (split " ",$seasons)
|
||||
for (split " ",$seasons)
|
||||
{
|
||||
my ($date,$text) = split /\|/;
|
||||
$divider = $divs[$count] if ($season eq $text);
|
||||
@ -3012,7 +3013,7 @@ sub HOMEMODE_ContactOpenCheckAfterModeChange($$$;$)
|
||||
my $pstate = ReadingsVal($resident,"lastState","") if ($resident);
|
||||
if ($contacts)
|
||||
{
|
||||
foreach (split /,/,$contacts)
|
||||
for (split /,/,$contacts)
|
||||
{
|
||||
my $m = AttrVal($_,"HomeOpenDontTriggerModes","");
|
||||
my $r = AttrVal($_,"HomeOpenDontTriggerModesResidents","");
|
||||
@ -3043,7 +3044,7 @@ sub HOMEMODE_ContactCommands($$$$)
|
||||
push @cmds,AttrVal($name,"HomeCMDcontactDoormainClosed","") if (AttrVal($name,"HomeCMDcontactDoormainClosed",undef) && $kind eq "doormain" && $state eq "closed");
|
||||
if (@cmds)
|
||||
{
|
||||
foreach (@cmds)
|
||||
for (@cmds)
|
||||
{
|
||||
my ($c,$o) = split /\|/,AttrVal($name,"HomeTextClosedOpen","closed|open");
|
||||
my $sta = $state eq "open" ? $o : $c;
|
||||
@ -3066,7 +3067,7 @@ sub HOMEMODE_MotionCommands($$$)
|
||||
push @cmds,AttrVal($name,"HomeCMDmotion-off","") if (AttrVal($name,"HomeCMDmotion-off",undef) && $state eq "closed");
|
||||
if (@cmds)
|
||||
{
|
||||
foreach (@cmds)
|
||||
for (@cmds)
|
||||
{
|
||||
my ($c,$o) = split /\|/,AttrVal($name,"HomeTextClosedOpen","closed|open");
|
||||
$state = $state eq "open" ? $o : $c;
|
||||
@ -3101,7 +3102,7 @@ sub HOMEMODE_EventCommands($$$$)
|
||||
push @cmds,AttrVal($name,"HomeCMDevent-$cal-$pevt-end","") if (AttrVal($name,"HomeCMDevent-$cal-$pevt-end",undef));
|
||||
push @cmds,AttrVal($name,"HomeCMDevent-$cal-$evt-begin","") if (AttrVal($name,"HomeCMDevent-$cal-$evt-begin",undef));
|
||||
readingsSingleUpdate($hash,"event-$cal",$event,1);
|
||||
foreach (@cmds)
|
||||
for (@cmds)
|
||||
{
|
||||
$_ =~ s/%EVENT%/$event/gm;
|
||||
$_ =~ s/%PREVEVENT%/$prevevent/gm;
|
||||
@ -3112,14 +3113,14 @@ sub HOMEMODE_EventCommands($$$$)
|
||||
{
|
||||
my @prevevents;
|
||||
@prevevents = split /,/,$prevevent if ($prevevent ne "none");
|
||||
foreach (split /;/,$event)
|
||||
for (split /;/,$event)
|
||||
{
|
||||
$event =~ s/[\s ]//g;
|
||||
my $summary;
|
||||
my $description = "";
|
||||
my $t = time();
|
||||
my @filters = ( { ref => \&filter_true, param => undef } );
|
||||
foreach (Calendar_GetEvents($defs{$cal},$t,@filters))
|
||||
for (Calendar_GetEvents($defs{$cal},$t,@filters))
|
||||
{
|
||||
next unless ($_->{uid} eq $event);
|
||||
$summary = $_->{summary};
|
||||
@ -3142,7 +3143,7 @@ sub HOMEMODE_EventCommands($$$$)
|
||||
if (grep /^$summary$/,@prevevents)
|
||||
{
|
||||
my @sevents;
|
||||
foreach (@prevevents)
|
||||
for (@prevevents)
|
||||
{
|
||||
push @sevents,$_ if ($_ ne $summary);
|
||||
}
|
||||
@ -3153,7 +3154,7 @@ sub HOMEMODE_EventCommands($$$$)
|
||||
{
|
||||
push @prevevents,$summary if (!grep /^$summary$/,@prevevents);
|
||||
}
|
||||
foreach (@cmds)
|
||||
for (@cmds)
|
||||
{
|
||||
if ($read eq "start")
|
||||
{
|
||||
@ -3173,7 +3174,7 @@ sub HOMEMODE_EventCommands($$$$)
|
||||
$update = join ",",@prevevents if (@prevevents);
|
||||
readingsSingleUpdate($hash,"event-$cal",$update,1);
|
||||
}
|
||||
foreach (@cmds)
|
||||
for (@cmds)
|
||||
{
|
||||
$_ =~ s/%CALENDAR%/$cal/gm;
|
||||
}
|
||||
@ -3188,7 +3189,7 @@ sub HOMEMODE_UWZCommands($$)
|
||||
my $uwz = AttrVal($name,"HomeUWZ","");
|
||||
my $count;
|
||||
my $warning;
|
||||
foreach my $evt (@{$events})
|
||||
for my $evt (@{$events})
|
||||
{
|
||||
next unless (grep /^WarnCount:\s[0-9]$/,$evt);
|
||||
$count = $evt;
|
||||
@ -3241,7 +3242,7 @@ sub HOMEMODE_PowerEnergy($;$$$)
|
||||
my @spec = devspec2array($hash->{SENSORSENERGY});
|
||||
if (@spec > 1)
|
||||
{
|
||||
foreach (split /,/,$hash->{SENSORSENERGY})
|
||||
for (split /,/,$hash->{SENSORSENERGY})
|
||||
{
|
||||
next unless ($_ ne $trigger);
|
||||
my $v = ReadingsNum($_,$read,0);
|
||||
@ -3258,7 +3259,7 @@ sub HOMEMODE_PowerEnergy($;$$$)
|
||||
my $power = 0;
|
||||
my $energy = 0;
|
||||
my ($pr,$er) = split " ",AttrVal($name,"HomeSensorsPowerEnergyReadings","power energy");
|
||||
foreach (split /,/,$hash->{SENSORSENERGY})
|
||||
for (split /,/,$hash->{SENSORSENERGY})
|
||||
{
|
||||
my $p = ReadingsNum($_,$pr,0);
|
||||
my $e = ReadingsNum($_,$er,0);
|
||||
@ -3281,7 +3282,7 @@ sub HOMEMODE_Smoke($;$$)
|
||||
my $r = AttrVal($name,"HomeSensorsSmokeReading","state");
|
||||
my $v = AttrVal($name,"HomeSensorsSmokeValue","on");
|
||||
my @sensors;
|
||||
foreach (split /,/,$hash->{SENSORSSMOKE})
|
||||
for (split /,/,$hash->{SENSORSSMOKE})
|
||||
{
|
||||
push @sensors,$_ if (ReadingsVal($_,$r,"") =~ /^$v$/);
|
||||
}
|
||||
@ -3299,7 +3300,7 @@ sub HOMEMODE_Smoke($;$$)
|
||||
}
|
||||
if (@cmds)
|
||||
{
|
||||
foreach (@cmds)
|
||||
for (@cmds)
|
||||
{
|
||||
my ($n,$s) = split /\|/,AttrVal($name,"HomeTextNosmokeSmoke","no smoke|smoke");
|
||||
my $sta = $state eq $v ? $s : $n;
|
||||
@ -3353,7 +3354,7 @@ sub HOMEMODE_Twilight($$;$)
|
||||
else
|
||||
{
|
||||
my $pevent = ReadingsVal($name,"twilightEvent","");
|
||||
foreach my $event (@{$events})
|
||||
for my $event (@{$events})
|
||||
{
|
||||
my $val = (split " ",$event)[1];
|
||||
readingsBeginUpdate($hash);
|
||||
@ -3406,7 +3407,7 @@ sub HOMEMODE_CalendarEvents($$)
|
||||
{
|
||||
my $fname = AttrVal("global","modpath",".")."/FHEM/".$cal.".holiday";
|
||||
my (undef,@holidayfile) = FileRead($fname);
|
||||
foreach (@holidayfile)
|
||||
for (@holidayfile)
|
||||
{
|
||||
next unless ($_ !~ /^\s*(#|$)/);
|
||||
my @parts = split;
|
||||
@ -3423,7 +3424,7 @@ sub HOMEMODE_CalendarEvents($$)
|
||||
{
|
||||
my $t = time();
|
||||
my @filters = ( { ref => \&filter_true, param => undef } );
|
||||
foreach (Calendar_GetEvents($defs{$cal},$t,@filters))
|
||||
for (Calendar_GetEvents($defs{$cal},$t,@filters))
|
||||
{
|
||||
my $evt = $_->{summary};
|
||||
Log3 $name,5,"Calendar_GetEvents event: $evt";
|
||||
@ -3498,7 +3499,7 @@ sub HOMEMODE_ToggleDevice($$)
|
||||
{
|
||||
push @cmds,AttrVal($name,"HomeCMDdeviceEnable","") if (AttrVal($name,"HomeCMDdeviceEnable",""));
|
||||
my @new;
|
||||
foreach (@disabled)
|
||||
for (@disabled)
|
||||
{
|
||||
push @new,$_ if ($_ ne $devname);
|
||||
}
|
||||
@ -3509,12 +3510,11 @@ sub HOMEMODE_ToggleDevice($$)
|
||||
push @cmds,AttrVal($name,"HomeCMDdeviceDisable","") if (AttrVal($name,"HomeCMDdeviceDisable",""));
|
||||
push @disabled,$devname;
|
||||
}
|
||||
my $dis = "";
|
||||
$dis = join(",",@disabled) if (@disabled);
|
||||
my $dis = @disabled?join(",",@disabled):"";
|
||||
readingsSingleUpdate($hash,"devicesDisabled",$dis,1);
|
||||
if (@cmds)
|
||||
{
|
||||
foreach (@cmds)
|
||||
for (@cmds)
|
||||
{
|
||||
my $a = HOMEMODE_name2alias($devname);
|
||||
$_ =~ s/%ALIAS%/$a/gm;
|
||||
@ -3524,12 +3524,12 @@ sub HOMEMODE_ToggleDevice($$)
|
||||
}
|
||||
}
|
||||
my @list;
|
||||
foreach my $d (split /,/,$hash->{NOTIFYDEV})
|
||||
for my $d (split /,/,$hash->{NOTIFYDEV})
|
||||
{
|
||||
push @list,$d if (!grep /^$d$/,@disabled);
|
||||
}
|
||||
$hash->{helper}{enabledDevices} = join ",",@list;
|
||||
return undef;
|
||||
return;
|
||||
}
|
||||
|
||||
sub HOMEMODE_IsDisabled($$)
|
||||
|
Loading…
x
Reference in New Issue
Block a user