mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
98_DOIFtools.pm: chaining DOIF's detailFn if present
git-svn-id: https://svn.fhem.de/fhem/trunk@14499 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
772b17497a
commit
49c71891bd
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# 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.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- update: 98_DOIFtools: chaining DOIF's detailFn if present
|
||||||
- feature: ESPEasy: added: dmx, motorshield, neopixel, candle, serialsend...
|
- feature: ESPEasy: added: dmx, motorshield, neopixel, candle, serialsend...
|
||||||
- feature: 57_Calendar: asynchronous parsing, disable update
|
- feature: 57_Calendar: asynchronous parsing, disable update
|
||||||
- change: 34_ESPEasy: add IPv6 ULA to local IPs, add regexps to ACLs
|
- change: 34_ESPEasy: add IPv6 ULA to local IPs, add regexps to ACLs
|
||||||
|
@ -325,7 +325,6 @@ sub DOIFtools_Initialize($)
|
|||||||
$hash->{NotifyFn} = "DOIFtools_Notify";
|
$hash->{NotifyFn} = "DOIFtools_Notify";
|
||||||
|
|
||||||
$hash->{FW_detailFn} = "DOIFtools_fhemwebFn";
|
$hash->{FW_detailFn} = "DOIFtools_fhemwebFn";
|
||||||
|
|
||||||
$data{FWEXT}{"/DOIFtools_logWrapper"}{CONTENTFUNC} = "DOIFtools_logWrapper";
|
$data{FWEXT}{"/DOIFtools_logWrapper"}{CONTENTFUNC} = "DOIFtools_logWrapper";
|
||||||
|
|
||||||
my $oldAttr = "target_room:noArg target_group:noArg executeDefinition:noArg executeSave:noArg eventMonitorInDOIF:noArg readingsPrefix:noArg";
|
my $oldAttr = "target_room:noArg target_group:noArg executeDefinition:noArg executeSave:noArg eventMonitorInDOIF:noArg readingsPrefix:noArg";
|
||||||
@ -333,18 +332,28 @@ sub DOIFtools_Initialize($)
|
|||||||
$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 DOIFtoolsEMbeforeReadings:1,0 DOIFtoolsNoLookUp:1,0 DOIFtoolsNoLookUpInDOIF:1,0 DOIFtoolsLogDir 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 DOIFtoolsEMbeforeReadings:1,0 DOIFtoolsNoLookUp:1,0 DOIFtoolsNoLookUpInDOIF:1,0 DOIFtoolsLogDir disabledForIntervals ".$oldAttr;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub DOIFtools_dO ($$$$){return "";}
|
sub DOIFtools_dO ($$$$){
|
||||||
|
return "";}
|
||||||
|
|
||||||
# FW_detailFn for DOIF injecting event monitor
|
# FW_detailFn for DOIF injecting event monitor
|
||||||
sub DOIFtools_eM($$$$) {
|
sub DOIFtools_eM($$$$) {
|
||||||
my ($FW_wname, $d, $room, $pageHash) = @_; # pageHash is set for summaryFn.
|
my ($FW_wname, $d, $room, $pageHash) = @_; # pageHash is set for summaryFn.
|
||||||
my @dtn = devspec2array("TYPE=DOIFtools");
|
my @dtn = devspec2array("TYPE=DOIFtools");
|
||||||
my $ret = "";
|
my $ret = "";
|
||||||
|
# call DOIF_detailFn
|
||||||
|
no strict "refs";
|
||||||
|
$ret .= &{ReadingsVal($dtn[0],".DOIF_detailFn","")}($FW_wname, $d, $room, $pageHash) if (ReadingsVal($dtn[0],".DOIF_detailFn",""));
|
||||||
|
use strict "refs";
|
||||||
|
if (!$room) {
|
||||||
|
# LookUp in probably associated with
|
||||||
$ret .= $DOIFtoolsJSfuncStart if (!AttrVal($dtn[0],"DOIFtoolsNoLookUpInDOIF",""));
|
$ret .= $DOIFtoolsJSfuncStart if (!AttrVal($dtn[0],"DOIFtoolsNoLookUpInDOIF",""));
|
||||||
# Event Monitor
|
# Event Monitor
|
||||||
|
if (AttrVal($dtn[0],"DOIFtoolsEventMonitorInDOIF","")) {
|
||||||
my $a0 = ReadingsVal($d,".eM", "off") eq "on" ? "off" : "on";
|
my $a0 = ReadingsVal($d,".eM", "off") eq "on" ? "off" : "on";
|
||||||
my $lang = AttrVal("global","language","EN");
|
my $lang = AttrVal("global","language","EN");
|
||||||
$ret .= "<div class=\"dval\"><br><span title=\"".($lang eq "DE" ? "toggle schaltet den Event-Monitor ein/aus" : "toggle switches event monitor on/off")."\">Event monitor: <a href=\"$FW_ME?detail=$d&cmd.$d=setreading $d .eM $a0$FW_CSRF\">toggle</a> </span>";
|
$ret .= "<br>" if (ReadingsVal($dtn[0],".DOIF_detailFn",""));
|
||||||
$ret .= "</div>";
|
$ret .= "<table class=\"block wide\"><tr><td><div class=\"dval\"><span title=\"".($lang eq "DE" ? "toggle schaltet den Event-Monitor ein/aus" : "toggle switches event monitor on/off")."\">Event monitor: <a href=\"$FW_ME?detail=$d&cmd.$d=setreading $d .eM $a0$FW_CSRF\">toggle</a> </span>";
|
||||||
|
$ret .= "</div></td></tr></table>";
|
||||||
|
|
||||||
my $a = "";
|
my $a = "";
|
||||||
if (ReadingsVal($d,".eM","off") eq "on") {
|
if (ReadingsVal($d,".eM","off") eq "on") {
|
||||||
@ -362,6 +371,8 @@ sub DOIFtools_eM($$$$) {
|
|||||||
$ret .= "</div>";
|
$ret .= "</div>";
|
||||||
$ret .= $DOIFtoolsJSfuncEM;
|
$ret .= $DOIFtoolsJSfuncEM;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
######################
|
######################
|
||||||
@ -628,11 +639,14 @@ sub DOIFtools_Notify($$) {
|
|||||||
CommandDeleteAttr(undef,"$pn eventMonitorInDOIF") if (AttrVal($pn,"eventMonitorInDOIF",""));
|
CommandDeleteAttr(undef,"$pn eventMonitorInDOIF") if (AttrVal($pn,"eventMonitorInDOIF",""));
|
||||||
CommandSave(undef,undef);
|
CommandSave(undef,undef);
|
||||||
}
|
}
|
||||||
# Event monitor in DOIF
|
# Event monitor in DOIF FW_detailFn
|
||||||
if ($modules{DOIF}{LOADED} and !defined $modules{DOIF}->{FW_detailFn} and $sn eq "global" and $event =~ "^INITIALIZED\$" and AttrVal($pn,"DOIFtoolsEventMonitorInDOIF","")) {
|
if ($modules{DOIF}{LOADED} and $modules{DOIF}->{FW_detailFn} ne "DOIFtools_eM" and $sn eq "global" and $event =~ "^INITIALIZED\$" ) {
|
||||||
$modules{DOIF}->{FW_detailFn} = "DOIFtools_eM" if (!defined $modules{DOIF}->{FW_detailFn});
|
readingsBeginUpdate($hash);
|
||||||
readingsSingleUpdate($hash,".DOIFdO",$modules{DOIF}->{FW_deviceOverview},0);
|
readingsBulkUpdate($hash,".DOIF_detailFn",$modules{DOIF}->{FW_detailFn});
|
||||||
|
$modules{DOIF}->{FW_detailFn} = "DOIFtools_eM";
|
||||||
|
readingsBulkUpdate($hash,".DOIFdO",$modules{DOIF}->{FW_deviceOverview});
|
||||||
$modules{DOIF}->{FW_deviceOverview} = 1;
|
$modules{DOIF}->{FW_deviceOverview} = 1;
|
||||||
|
readingsEndUpdate($hash,0);
|
||||||
}
|
}
|
||||||
# Statistics event recording
|
# Statistics event recording
|
||||||
if (ReadingsVal($pn,"doStatistics","disabled") eq "enabled" and !IsDisabled($pn) and $sn ne "global" and (ReadingsVal($pn,"statisticHours",0) <= ReadingsVal($pn,"recording_target_duration",0) or !ReadingsVal($pn,"recording_target_duration",0))) {
|
if (ReadingsVal($pn,"doStatistics","disabled") eq "enabled" and !IsDisabled($pn) and $sn ne "global" and (ReadingsVal($pn,"statisticHours",0) <= ReadingsVal($pn,"recording_target_duration",0) or !ReadingsVal($pn,"recording_target_duration",0))) {
|
||||||
@ -1022,14 +1036,14 @@ sub DOIFtools_Attr(@)
|
|||||||
my $hash = $defs{$pn};
|
my $hash = $defs{$pn};
|
||||||
my $ret="";
|
my $ret="";
|
||||||
if ($init_done and $attr eq "DOIFtoolsEventMonitorInDOIF") {
|
if ($init_done and $attr eq "DOIFtoolsEventMonitorInDOIF") {
|
||||||
if (!defined $modules{DOIF}->{FW_detailFn} and $cmd eq "set" and $value) {
|
# if (!defined $modules{DOIF}->{FW_detailFn} and $cmd eq "set" and $value) {
|
||||||
$modules{DOIF}->{FW_detailFn} = "DOIFtools_eM";
|
# $modules{DOIF}->{FW_detailFn} = "DOIFtools_eM";
|
||||||
readingsSingleUpdate($hash,".DOIFdO",$modules{DOIF}->{FW_deviceOverview},0);
|
# readingsSingleUpdate($hash,".DOIFdO",$modules{DOIF}->{FW_deviceOverview},0);
|
||||||
$modules{DOIF}->{FW_deviceOverview} = "DOIFtools_dO";
|
# $modules{DOIF}->{FW_deviceOverview} = 1;
|
||||||
} elsif ($modules{DOIF}->{FW_detailFn} eq "DOIFtools_eM" and ($cmd eq "del" or !$value)) {
|
# } elsif ($modules{DOIF}->{FW_detailFn} eq "DOIFtools_eM" and ($cmd eq "del" or !$value)) {
|
||||||
delete $modules{DOIF}->{FW_detailFn};
|
# delete $modules{DOIF}->{FW_detailFn};
|
||||||
$modules{DOIF}->{FW_deviceOverview} = ReadingsVal($pn,"DOIFtools_dO","");
|
# $modules{DOIF}->{FW_deviceOverview} = ReadingsVal($pn,".DOIFdO","");
|
||||||
}
|
# }
|
||||||
} elsif ($init_done and $attr eq "DOIFtoolsMenuEntry") {
|
} elsif ($init_done and $attr eq "DOIFtoolsMenuEntry") {
|
||||||
if ($cmd eq "set" and $value) {
|
if ($cmd eq "set" and $value) {
|
||||||
if (!(AttrVal($FW_wname, "menuEntries","") =~ m/(DOIFtools\,$FW_ME\?detail\=DOIFtools\,)/)) {
|
if (!(AttrVal($FW_wname, "menuEntries","") =~ m/(DOIFtools\,$FW_ME\?detail\=DOIFtools\,)/)) {
|
||||||
@ -1073,8 +1087,8 @@ sub DOIFtools_Undef
|
|||||||
my ($hash, $pn) = @_;
|
my ($hash, $pn) = @_;
|
||||||
$hash->{DELETED} = 1;
|
$hash->{DELETED} = 1;
|
||||||
if (devspec2array("TYPE=DOIFtools") <=1 and defined($modules{DOIF}->{FW_detailFn}) and $modules{DOIF}->{FW_detailFn} eq "DOIFtools_eM") {
|
if (devspec2array("TYPE=DOIFtools") <=1 and defined($modules{DOIF}->{FW_detailFn}) and $modules{DOIF}->{FW_detailFn} eq "DOIFtools_eM") {
|
||||||
delete $modules{DOIF}->{FW_detailFn};
|
$modules{DOIF}->{FW_detailFn} = ReadingsVal($pn,".DOIF_detailFn","");
|
||||||
$modules{DOIF}->{FW_deviceOverview} = ReadingsVal($pn,"DOIFtools_dO","");
|
$modules{DOIF}->{FW_deviceOverview} = ReadingsVal($pn,".DOIFdO","");
|
||||||
}
|
}
|
||||||
if (AttrVal($pn,"DOIFtoolsMenuEntry","")) {
|
if (AttrVal($pn,"DOIFtoolsMenuEntry","")) {
|
||||||
CommandDeleteAttr(undef, "$pn DOIFtoolsMenuEntry");
|
CommandDeleteAttr(undef, "$pn DOIFtoolsMenuEntry");
|
||||||
@ -1691,6 +1705,7 @@ DOIFtools stellt Funktionen zur Unterstützung von DOIF-Geräten bereit.<br>
|
|||||||
<a href="#disabledForIntervals"><b>disabledForIntervals</b></a> pausiert die Statistikdatenerfassung.<br>
|
<a href="#disabledForIntervals"><b>disabledForIntervals</b></a> pausiert die Statistikdatenerfassung.<br>
|
||||||
<br>
|
<br>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="DOIFtoolsReadings"></a>
|
<a name="DOIFtoolsReadings"></a>
|
||||||
<b>Readings</b>
|
<b>Readings</b>
|
||||||
<br>
|
<br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user