diff --git a/fhem/CHANGED b/fhem/CHANGED index 1e796e734..113ae735c 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -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: filter mentioned in event report + Event monitor toggles instead on/off + some shortcuts for get and set commands, hideable by attribute - new: 98_mark: new command mark added to mark devices TEMPORARY or VOLATILE - bufix: 00_MQTT: fixed delete MQTT device diff --git a/fhem/FHEM/98_DOIFtools.pm b/fhem/FHEM/98_DOIFtools.pm index 45f9c6b58..05a4d3d97 100644 --- a/fhem/FHEM/98_DOIFtools.pm +++ b/fhem/FHEM/98_DOIFtools.pm @@ -62,18 +62,17 @@ 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 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 disabledForIntervals ".$oldAttr; } - sub DOIFtools_dO ($$$$){return "";} # FW_detailFn for DOIF injecting event monitor sub DOIFtools_eM($$$$) { my ($FW_wname, $d, $room, $pageHash) = @_; # pageHash is set for summaryFn. my $ret = ""; # Event Monitor - $ret .= "

Event monitor: on  "; - $ret .= "off"; + my $a0 = ReadingsVal($d,".eM", "off") eq "on" ? "off" : "on"; + $ret .= "

Event monitor: toggle  "; $ret .= "
"; my $a = ""; @@ -170,8 +169,8 @@ sub DOIFtools_fhemwebFn($$$$) { $ret .= ""; } # Event Monitor - $ret .= "

Event monitor: on  "; - $ret .= "off  "; + my $a0 = ReadingsVal($d,".eM", "off") eq "on" ? "off" : "on"; + $ret .= "

Event monitor: toggle  "; $ret .= "Shortcuts: " if (!AttrVal($d,"DOIFtoolsHideModulShortcuts",0) or AttrVal($d,"DOIFtoolsMyShortcuts","")); if (!AttrVal($d,"DOIFtoolsHideModulShortcuts",0)) { $ret .= "reload DOIFtools  " if(ReadingsVal($d,".debug","")); @@ -191,7 +190,64 @@ sub DOIFtools_fhemwebFn($$$$) { } } } - $ret .= "
"; + if (!AttrVal($d, "DOIFtoolsHideGetSet", 0)) { + $ret .= "

"; + my $a1 = ReadingsVal($d,"doStatistics", "disabled") =~ "disabled|deleted" ? "enabled" : "disabled"; + my $a2 = ReadingsVal($d,"specialLog", 0) ? 0 : 1; + # set doStatistics enabled/disabled + $ret .= "
+ + +
 doStatistics $a1 
+
+ +
"; + # set doStatistics deleted + $ret .= "
+ + +
 doStatistics deleted 
+
+ +
"; + # set specialLog 0/1 + $ret .= "
+ + +
 specialLog $a2 
+
+ +
"; + $ret .= "

"; + # get statisticsReport + $ret .= "
+ + + +
 statisticsReport 
+
+ +
"; + # get checkDOIF + $ret .= "
+ + + +
 checkDOIF 
+
+ +
"; + # get runningTimerInDOIF + $ret .= "
+ + + +
 runningTimerInDOIF 
+
+ +
"; + } + $ret .= "

"; my $a = ""; if (ReadingsVal($d,".eM","off") eq "on") { $ret .= ""; @@ -707,6 +763,7 @@ sub DOIFtools_Set($@) readingsSingleUpdate($hash,"statisticsDeviceFilterRegex", $value,0); } } else { + my $hardcoded = "doStatistics:disabled,enabled,deleted specialLog:0,1"; if (ReadingsVal($pn,"targetDOIF","")) { my $tn = ReadingsVal($pn,"targetDOIF",""); my @rL = (); @@ -714,9 +771,9 @@ sub DOIFtools_Set($@) push @rL, $key if ($key !~ "^(Device|state|error|cmd|e_|timer_|wait_|matched_|last_cmd|mode)"); } my $rL = join(",",@rL); - return "unknown argument $arg for $pn, choose one of statisticsTYPEs:multiple-strict,.*,$tL doStatistics:disabled,enabled,deleted sourceAttribute:readingList targetDOIF:$dL deleteReadingsInTargetDOIF:multiple-strict,$rL recording_target_duration:0,1,6,12,24,168 specialLog:0,1 statisticsDeviceFilterRegex statisticsShowRate_ge"; + 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 doStatistics:disabled,enabled,deleted sourceAttribute:readingList targetDOIF:$dL recording_target_duration:0,1,6,12,24,168 specialLog:0,1 statisticsDeviceFilterRegex statisticsShowRate_ge"; + 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 :""); } } return $ret; @@ -846,6 +903,10 @@ sub DOIFtools_Get($@) $ret .= sprintf("%43s","Events/Gerät: ").sprintf("%-10s",int($evtsum/$i + 0.5))."\n\n" if ($i); fhem("count",1) =~ m/(\d+)/; $ret .= sprintf("%43s","Geräte total: ").sprintf("%-10s","$1\n\n"); + $ret .= sprintf("%43s","Filter\n"); + $ret .= sprintf("%42s","TYPE: ").sprintf("%-10s",ReadingsVal($pn,"statisticsTYPEs","")."\n"); + $ret .= sprintf("%35s","NAME: ").sprintf("%-10s",ReadingsVal($pn,"statisticsDeviceFilterRegex",".*")."\n"); + $ret .= sprintf("%35s","Rate: ").sprintf("%-10s",">= ".ReadingsVal($pn,"statisticsShowRate_ge","0")."\n\n"); $ret .= "
".sprintf("-"x71)."
"; # attibute statistics $ret .= "".sprintf("%-30s","gesetzte Attribute in DOIF").sprintf("%-12s","Anzahl")."\n"; @@ -895,7 +956,8 @@ sub DOIFtools_Get($@) return $ret; } else { - return "unknown argument $arg for $pn, choose one of checkDOIF:noArg statisticsReport:noArg readingsGroup_for:multiple-strict,$dL DOIF_to_Log:multiple-strict,$dL userReading_nextTimer_for:multiple-strict,$ntL runningTimerInDOIF:noArg "; + 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 $ret; @@ -1076,6 +1138,9 @@ DOIFtools stellt Funktionen zur Unterstützung von DOIF-Geräten bereit.
attr <name> DOIFtoolsEventMonitorInDOIF <1|0>
DOIFtoolsEventMonitorInDOIF 1, die Anzeige des Event-Monitors wird in DOIF ermöglicht. Default 0, kein Zugriff auf den Event-Monitor im DOIF.

+ attr <name> DOIFtoolsHideGetSet <0|1>
+ DOIFtoolsHideModulGetSet 1, verstecken der Set- und Get-Shortcuts. Default 0.
+
attr <name> DOIFtoolsHideModulShortcuts <0|1>
DOIFtoolsHideModulShortcuts 1, verstecken der DOIFtools Shortcuts. Default 0.