";
- $ret .= "";
+ $ret .= $DOIFtoolsJavaScript;
}
return $ret;
}
@@ -783,8 +736,10 @@ sub DOIFtools_Set($@)
my $ret = "";
my @ret = ();
my @doifList = devspec2array("TYPE=DOIF");
+ my @deviList = devspec2array("TYPE!=DOIF");
my @ntL =();
my $dL = join(",",sort @doifList);
+ my $deL = join(",",sort @deviList);
my $st = AttrVal($pn,"DOIFtoolsHideStatReadings","") ? ".stat_" : "stat_";
my %types = ();
@@ -808,8 +763,26 @@ sub DOIFtools_Set($@)
push @ret, $ret if($ret);
}
$ret = join("\n", @ret);
+ readingsSingleUpdate($hash,"targetDOIF","",0);
return $ret;
} else {
+ readingsSingleUpdate($hash,"targetDOIF","",0);
+ return "no reading selected.";
+ }
+ } elsif ($arg eq "targetDevice") {
+ readingsSingleUpdate($hash,"targetDevice",$value,0);
+ } elsif ($arg eq "deleteReadingsInTargetDevice") {
+ if ($value) {
+ my @i = split(",",$value);
+ foreach my $i (@i) {
+ $ret = CommandDeleteReading(undef,ReadingsVal($pn,"targetDevice","")." $i");
+ push @ret, $ret if($ret);
+ }
+ $ret = join("\n", @ret);
+ readingsSingleUpdate($hash,"targetDevice","",0);
+ return $ret;
+ } else {
+ readingsSingleUpdate($hash,"targetDevice","",0);
return "no reading selected.";
}
} elsif ($arg eq "doStatistics") {
@@ -862,18 +835,28 @@ sub DOIFtools_Set($@)
readingsSingleUpdate($hash,"statisticsDeviceFilterRegex", $value,0);
}
} else {
+
my $hardcoded = "doStatistics:disabled,enabled,deleted specialLog:0,1";
+ my $retL = "unknown argument $arg for $pn, choose one of statisticsTYPEs:multiple-strict,.*,$tL sourceAttribute:readingList targetDOIF:$dL targetDevice:$deL recording_target_duration:0,1,6,12,24,168 statisticsDeviceFilterRegex statisticsShowRate_ge ".(AttrVal($pn,"DOIFtoolsHideGetSet",0) ? $hardcoded :"");
+
if (ReadingsVal($pn,"targetDOIF","")) {
my $tn = ReadingsVal($pn,"targetDOIF","");
my @rL = ();
foreach my $key (keys %{$defs{$tn}->{READINGS}}) {
- push @rL, $key if ($key !~ "^(Device|state|error|cmd|e_|timer_|wait_|matched_|last_cmd|mode)");
+ push @rL, $key if ($key !~ "^(Device|state|error|cmd|e_|timer_|wait_|matched_|last_cmd|mode|\.eM)");
}
- my $rL = join(",",@rL);
- return "unknown argument $arg for $pn, choose one of statisticsTYPEs:multiple-strict,.*,$tL sourceAttribute:readingList targetDOIF:$dL deleteReadingsInTargetDOIF:multiple-strict,$rL recording_target_duration:0,1,6,12,24,168 statisticsDeviceFilterRegex statisticsShowRate_ge ".(AttrVal($pn,"DOIFtoolsHideGetSet",0) ? $hardcoded :"");
- } else {
- return "unknown argument $arg for $pn, choose one of statisticsTYPEs:multiple-strict,.*,$tL sourceAttribute:readingList targetDOIF:$dL recording_target_duration:0,1,6,12,24,168 statisticsDeviceFilterRegex statisticsShowRate_ge ".(AttrVal($pn,"DOIFtoolsHideGetSet",0) ? $hardcoded :"");
+ $retL .= " deleteReadingsInTargetDOIF:multiple-strict,".join(",", sort @rL);
}
+ if (ReadingsVal($pn,"targetDevice","")) {
+ my $tn = ReadingsVal($pn,"targetDevice","");
+ my @rL = ();
+ my $rx = ReadingsVal($pn,".debug","") ? "^(state)" : "^(state|[.])";
+ foreach my $key (keys %{$defs{$tn}->{READINGS}}) {
+ push @rL, $key if ($key !~ $rx);
+ }
+ $retL .= " deleteReadingsInTargetDevice:multiple-strict,".join(",", sort @rL);
+ }
+ return $retL;
}
return $ret;
}
@@ -1056,7 +1039,7 @@ sub DOIFtools_Get($@)
} else {
my $hardcoded = "checkDOIF:noArg statisticsReport:noArg runningTimerInDOIF:noArg";
- return "unknown argument $arg for $pn, choose one of readingsGroup_for:multiple-strict,$dL DOIF_to_Log:multiple-strict,$dL userReading_nextTimer_for:multiple-strict,$ntL ".(AttrVal($pn,"DOIFtoolsHideGetSet",1) ? $hardcoded :"");
+ return "unknown argument $arg for $pn, choose one of readingsGroup_for:multiple-strict,$dL DOIF_to_Log:multiple-strict,$dL userReading_nextTimer_for:multiple-strict,$ntL ".(AttrVal($pn,"DOIFtoolsHideGetSet",0) ? $hardcoded :"");
}
return $ret;
@@ -1083,6 +1066,7 @@ DOIFtools contains tools to support DOIF.
navigation between device listings in logfile if opened via DOIFtools.
create userReadings in DOIF devices displaying real dates for weekday restricted timer.
delete user defined readings in DOIF devices with multiple choice.
+
delete visible readings in other devices with multiple choice, but not state.
record statistics data about events.
limitting recordig duration.
generate a statistics report.
@@ -1114,6 +1098,7 @@ DOIFtools stellt Funktionen zur Unterstützung von DOIF-Geräten bereit.
Navigation zwischen den DOIF-Listings im Logfile, wenn es über DOIFtools geöffnet wird.
erstellen von userReadings in DOIF-Geräten zur Anzeige des realen Datums bei Wochentag behafteten Timern.
löschen von benutzerdefinierten Readings in DOIF-Definitionen über eine Mehrfachauswahl.
+
löschen von Readings in anderen Geräten über eine Mehrfachauswahl, nicht state.
erfassen statistischer Daten über Events.
Begrenzung der Datenaufzeichnungsdauer.
erstellen eines Statistikreports.
@@ -1166,6 +1151,12 @@ DOIFtools stellt Funktionen zur Unterstützung von DOIF-Geräten bereit. set <name> targetDOIF <target name> targetDOIF vor dem Löschen der Readings muss das Ziel-DOIF gesetzt werden.
+ set <name> deleteReadingInTargetDevice <readings to delete name>
+ deleteReadingInTargetDevice löscht sichtbare Readings, ausser state im Ziel-Gerät. Bitte den Gefahrenhinweis zum Befehl deletereading beachten!
+
+ set <name> targetDevice <target name>
+ targetDevice vor dem Löschen der Readings muss das Ziel-Gerät gesetzt werden.
+ set <name> sourceAttribute <readingList> sourceAttribute vor dem Erstellen einer ReadingsGroup muss das Attribut gesetzt werden aus dem die Readings gelesen werden, um die ReadingsGroup zu erstellen und zu beschriften. Default, readingsList