98_DOIFtools.pm: new attribute DOIFtoolsEventOnDeleted generates events for stat_ Readings before deletion, delete add... button in DOIFtools event monitor
git-svn-id: https://svn.fhem.de/fhem/trunk@13225 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||
# Do not insert empty lines here, update check depends on it.
|
||||
- update: 98_DOIFtools.pm: new attribute DOIFtoolsEventOnDeleted generates
|
||||
events for stat_ Readings before deletion
|
||||
remove add... button in DOIFtools event monitor
|
||||
- changed: 00_SIGNALduino.pm: version 3.3.1
|
||||
needs less cpu time for parsing messages
|
||||
new command to query protocolids
|
||||
|
||||
@@ -42,6 +42,7 @@ sub DOIFtools_dO ($$$$);
|
||||
sub DOIFtoolsSetNotifyDev;
|
||||
sub DOIFtools_logWrapper($);
|
||||
sub DOIFtoolsCounterReset($);
|
||||
sub DOIFtoolsDeleteStatReadings;
|
||||
|
||||
my @DOIFtools_we =();
|
||||
|
||||
@@ -62,7 +63,7 @@ sub DOIFtools_Initialize($)
|
||||
$data{FWEXT}{"/DOIFtools_logWrapper"}{CONTENTFUNC} = "DOIFtools_logWrapper";
|
||||
|
||||
my $oldAttr = "target_room:noArg target_group:noArg executeDefinition:noArg executeSave:noArg eventMonitorInDOIF:noArg readingsPrefix:noArg";
|
||||
$hash->{AttrList} = "DOIFtoolsExecuteDefinition:1,0 DOIFtoolsTargetRoom DOIFtoolsTargetGroup DOIFtoolsExecuteSave:1,0 DOIFtoolsReadingsPrefix DOIFtoolsEventMonitorInDOIF:1,0 DOIFtoolsHideModulShortcuts:1,0 DOIFtoolsHideGetSet:1,0 DOIFtoolsMyShortcuts:textField-long DOIFtoolsMenuEntry:1,0 DOIFtoolsHideStatReadings:1,0 disabledForIntervals ".$oldAttr;
|
||||
$hash->{AttrList} = "DOIFtoolsExecuteDefinition:1,0 DOIFtoolsTargetRoom DOIFtoolsTargetGroup DOIFtoolsExecuteSave:1,0 DOIFtoolsReadingsPrefix DOIFtoolsEventMonitorInDOIF:1,0 DOIFtoolsHideModulShortcuts:1,0 DOIFtoolsHideGetSet:1,0 DOIFtoolsMyShortcuts:textField-long DOIFtoolsMenuEntry:1,0 DOIFtoolsHideStatReadings:1,0 DOIFtoolsEventOnDeleted:1,0 disabledForIntervals ".$oldAttr;
|
||||
}
|
||||
|
||||
sub DOIFtools_dO ($$$$){return "";}
|
||||
@@ -81,13 +82,23 @@ sub DOIFtools_eM($$$$) {
|
||||
my $filter = $a ? ($a eq "log" ? "global" : $a) : ".*";
|
||||
$ret .= "<div><br>";
|
||||
$ret .= "Events (Filter: <a href=\"#\" id=\"eventFilter\">$filter</a>) ".
|
||||
" <span class='fhemlog'>FHEM log ".
|
||||
" <span id=\"doiftoolsdel\" class='fhemlog'>FHEM log ".
|
||||
"<input id='eventWithLog' type='checkbox'".
|
||||
($a && $a eq "log" ? " checked":"")."></span>".
|
||||
" <button id='eventReset'>Reset</button></div>\n";
|
||||
$ret .= "<div>";
|
||||
$ret .= "<textarea id=\"console\" style=\"width:99%; top:.1em; bottom:1em; position:relative;\" readonly=\"readonly\" rows=\"25\" cols=\"60\"></textarea>";
|
||||
$ret .= "</div>";
|
||||
$ret .= "<script type=\"text/javascript\">
|
||||
function delbutton() {
|
||||
var del = document.getElementById('addRegexpPart');
|
||||
if (del) {
|
||||
del.parentNode.removeChild(del);
|
||||
}
|
||||
}
|
||||
var ins = document.getElementById('doiftoolsdel');
|
||||
addEventListener ('DOMNodeInserted', delbutton, false);
|
||||
</script>";
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
@@ -254,13 +265,23 @@ sub DOIFtools_fhemwebFn($$$$) {
|
||||
my $filter = $a ? ($a eq "log" ? "global" : $a) : ".*";
|
||||
$ret .= "<div><br>";
|
||||
$ret .= "Events (Filter: <a href=\"#\" id=\"eventFilter\">$filter</a>) ".
|
||||
" <span class='fhemlog'>FHEM log ".
|
||||
" <span id=\"doiftoolsdel\" class='fhemlog'>FHEM log ".
|
||||
"<input id='eventWithLog' type='checkbox'".
|
||||
($a && $a eq "log" ? " checked":"")."></span>".
|
||||
" <button id='eventReset'>Reset</button></div>\n";
|
||||
$ret .= "<div>";
|
||||
$ret .= "<textarea id=\"console\" style=\"width:99%; top:.1em; bottom:1em; position:relative;\" readonly=\"readonly\" rows=\"25\" cols=\"60\"></textarea>";
|
||||
$ret .= "</div>";
|
||||
$ret .= "<script type=\"text/javascript\">
|
||||
function delbutton() {
|
||||
var del = document.getElementById('addRegexpPart');
|
||||
if (del) {
|
||||
del.parentNode.removeChild(del);
|
||||
}
|
||||
}
|
||||
var ins = document.getElementById('doiftoolsdel');
|
||||
addEventListener ('DOMNodeInserted', delbutton, false);
|
||||
</script>";
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
@@ -575,6 +596,27 @@ sub DOIFtoolsCounterReset($) {
|
||||
InternalTimer($nt, "DOIFtoolsCounterReset", $pn, 0);
|
||||
return undef;
|
||||
}
|
||||
sub DOIFtoolsDeleteStatReadings {
|
||||
my ($hash, @a) = @_;
|
||||
my $pn = $hash->{NAME};
|
||||
my $st = AttrVal($pn,"DOIFtoolsHideStatReadings","") ? ".stat_" : "stat_"; readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash,"Action","event recording stopped and data deleted");
|
||||
readingsBulkUpdate($hash,"doStatistics","disabled");
|
||||
readingsBulkUpdate($hash,"statisticHours","0.00");
|
||||
readingsBulkUpdate($hash,".t0",gettimeofday());
|
||||
readingsBulkUpdate($hash,".te",0);
|
||||
readingsEndUpdate($hash,0);
|
||||
if (AttrVal($pn,"DOIFtoolsEventOnDeleted","")){
|
||||
readingsBeginUpdate($hash);
|
||||
foreach my $key (keys %{$hash->{READINGS}}) {
|
||||
readingsBulkUpdate($hash,"stat_$1",ReadingsVal($pn,"$key",0)) if ($key =~ m/^$st(.*)/);
|
||||
}
|
||||
readingsEndUpdate($hash,1);
|
||||
}
|
||||
foreach my $key (keys %{$hash->{READINGS}}) {
|
||||
delete $hash->{READINGS}{$key} if ($key =~ "^(stat_|\.stat_)");
|
||||
}
|
||||
}
|
||||
#################################
|
||||
sub DOIFtools_Define($$$)
|
||||
{
|
||||
@@ -627,16 +669,7 @@ sub DOIFtools_Attr(@)
|
||||
}
|
||||
} elsif ($init_done and $attr eq "DOIFtoolsHideStatReadings") {
|
||||
DOIFtoolsSetNotifyDev($hash,1,0);
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash,"Action","event recording stopped");
|
||||
readingsBulkUpdate($hash,"doStatistics","disabled");
|
||||
readingsBulkUpdate($hash,"statisticHours","0.00");
|
||||
readingsBulkUpdate($hash,".t0",gettimeofday());
|
||||
readingsBulkUpdate($hash,".te",0);
|
||||
readingsEndUpdate($hash,0);
|
||||
foreach my $key (keys %{$defs{$pn}->{READINGS}}) {
|
||||
delete $defs{$pn}->{READINGS}{$key} if ($key =~ "^(stat_|\.stat_)");
|
||||
}
|
||||
DOIFtoolsDeleteStatReadings($hash);
|
||||
} elsif ($init_done and $cmd eq "set" and
|
||||
$attr =~ m/^(executeDefinition|executeSave|target_room|target_group|readingsPrefix|eventMonitorInDOIF)$/) {
|
||||
$ret .= "\n$1 is an old attribute name use a new one beginning with DOIFtools...";
|
||||
@@ -701,16 +734,7 @@ sub DOIFtools_Set($@)
|
||||
} elsif ($arg eq "doStatistics") {
|
||||
if ($value eq "deleted") {
|
||||
DOIFtoolsSetNotifyDev($hash,1,0);
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash,"Action","event recording stopped");
|
||||
readingsBulkUpdate($hash,"doStatistics","disabled");
|
||||
readingsBulkUpdate($hash,"statisticHours","0.00");
|
||||
readingsBulkUpdate($hash,".t0",gettimeofday());
|
||||
readingsBulkUpdate($hash,".te",0);
|
||||
readingsEndUpdate($hash,0);
|
||||
foreach my $key (keys %{$defs{$pn}->{READINGS}}) {
|
||||
delete $defs{$pn}->{READINGS}{$key} if ($key =~ "^(stat_|\.stat_)");
|
||||
}
|
||||
DOIFtoolsDeleteStatReadings($hash);
|
||||
} elsif ($value eq "disabled") {
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash,"Action","event recording paused");
|
||||
@@ -729,14 +753,8 @@ sub DOIFtools_Set($@)
|
||||
$value =~ s/\,/|/g;
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash,"statisticsTYPEs",$value);
|
||||
readingsBulkUpdate($hash,"doStatistics","disabled");
|
||||
readingsBulkUpdate($hash,".te",0);
|
||||
readingsBulkUpdate($hash,".t0",gettimeofday());
|
||||
readingsBulkUpdate($hash,"statisticHours","0.00");
|
||||
readingsEndUpdate($hash,0);
|
||||
foreach my $key (keys %{$defs{$pn}->{READINGS}}) {
|
||||
delete $defs{$pn}->{READINGS}{$key} if ($key =~ "^(stat_|\.stat_)");
|
||||
}
|
||||
DOIFtoolsDeleteStatReadings($hash);
|
||||
DOIFtoolsSetNotifyDev($hash,1,0);
|
||||
} elsif ($arg eq "recording_target_duration") {
|
||||
$value =~ m/(\d+)/;
|
||||
@@ -1147,6 +1165,9 @@ DOIFtools stellt Funktionen zur Unterstützung von DOIF-Geräten bereit.<br>
|
||||
<code>attr <name> DOIFtoolsHideStatReadings <0|1></code><br>
|
||||
<b>DOIFtoolsHideStatReadings</b> <b>1</b>, verstecken der <i>stat_</i> Readings. Das Ändern des Attributs löscht eine bestehende Event-Aufzeichnung. <b>Default 0</b>.<br>
|
||||
<br>
|
||||
<code>attr <name> DOIFtoolsEventOnDeleted <0|1></code><br>
|
||||
<b>DOIFtoolsEventOnDeleted</b> <b>1</b>, es werden Events für alle <i>stat_</i> erzeugt, bevor sie gelöscht werden. Damit könnten die erfassten Daten geloggt werden. <b>Default 0</b>.<br>
|
||||
<br>
|
||||
<code>attr <name> DOIFtoolsMyShortcuts <shortcut name>,<command>, ...</code><br>
|
||||
<b>DOIFtoolsMyShortcuts</b> <Bezeichnung><b>,</b><Befehl><b>,...</b> anzeigen eigener Shortcuts, siehe globales Attribut <a href="#menuEntries">menuEntries</a>.<br>
|
||||
Zusätzlich gilt, wenn ein Eintrag mit ## beginnt und mit ,, endet, wird er als HTML interpretiert.<br>
|
||||
|
||||
Reference in New Issue
Block a user