From 38fc67d229920330ce60255d45cff26a41544975 Mon Sep 17 00:00:00 2001
From: rudolfkoenig <>
Date: Wed, 21 Sep 2016 19:02:22 +0000
Subject: [PATCH] fhem.pl: suppressReading attribute (Forum #57841)
git-svn-id: https://svn.fhem.de/fhem/trunk@12191 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/CHANGED | 1 +
fhem/docs/commandref_frame.html | 116 ++++++++++++++-------------
fhem/docs/commandref_frame_DE.html | 122 ++++++++++++++++-------------
fhem/fhem.pl | 15 +++-
4 files changed, 141 insertions(+), 113 deletions(-)
diff --git a/fhem/CHANGED b/fhem/CHANGED
index a939d2a72..c063ee05f 100644
--- a/fhem/CHANGED
+++ b/fhem/CHANGED
@@ -1,5 +1,6 @@
# 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.
+ - change: suppressReading attribute added for all devices (Forum #57841)
- bugfix: 88_HMCCU: Fixed CUxD device datapoint handling
- change: 10_IT: create events during readings update.
change logging
diff --git a/fhem/docs/commandref_frame.html b/fhem/docs/commandref_frame.html
index 596429aef..e3cd948d5 100644
--- a/fhem/docs/commandref_frame.html
+++ b/fhem/docs/commandref_frame.html
@@ -339,65 +339,17 @@ Device specific attributes are documented in the corresponding device section.
-
- - verbose
- Set the verbosity level. Possible values:
-
- - 0 - server start/stop
-
- 1 - error messages or unknown packets
-
- 2 - major events/alarms.
-
- 3 - commands sent out will be logged.
-
- 4 - you'll see whats received by the different devices.
-
- 5 - debugging.
-
- The value for the global device is a default for
- other devices without own verbose attribute set.
-
-
-
- - comment
- Add an arbitrary comment.
-
- alias
Used by FHEMWEB to display a device with another name e.g. when using
special characters/spaces not accepted by device definition.
+
+
+
+ - comment
+ Add an arbitrary comment.
+
-
- - room
- Filter/group devices. Recognized by web-pgm2 and web-pgm3. A device
- can appear in more than one room, in this case the rooms have to be
- specified comma-separated.
- Devices in the room hidden will not appear in the web output, or set
- the FHEMWEB attribute to selectively disable
- rooms for certain FHEMWEB instances.
-
-
-
- - genericDisplayType
- used by some frontends (but not FHEMWEB) to offer a default image or
- appropriate commands for this device. Currently the following values
- are supported: switch,outlet,light,blind,speaker,thermostat
-
-
-
- - group
- Group devices. Recognized by web-pgm2 (module FHEMWEB), it makes
- devices in the same group appear in the same box).
- This is used to further group
- devices together. A device can appear in more than one group, in this
- case the groups have to be specified comma-separated.
- If this attribute is not set then the device type is used as the
- grouping attribute.
-
-
-
- - showtime
- Used in the webfrontend pgm2 to show the time of last activity
- instead of the state in the summary view. Useful e.g. for FS20 PIRI
- devices.
-
-
- eventMap
Replace event names and set arguments. The value of this attribute
@@ -427,10 +379,64 @@ Device specific attributes are documented in the corresponding device section.
part with wildcards, the fw part must be filled with the exact same
keys to enable a correct display in the FHEMWEB set dropdown list in
the detail view.
-
+
+ - genericDisplayType
+ used by some frontends (but not FHEMWEB) to offer a default image or
+ appropriate commands for this device. Currently the following values
+ are supported: switch,outlet,light,blind,speaker,thermostat
+
+
+ - group
+ Group devices. Recognized by web-pgm2 (module FHEMWEB), it makes
+ devices in the same group appear in the same box).
+ This is used to further group
+ devices together. A device can appear in more than one group, in this
+ case the groups have to be specified comma-separated.
+ If this attribute is not set then the device type is used as the
+ grouping attribute.
+
+
+
+ - room
+ Filter/group devices. Recognized by web-pgm2 and web-pgm3. A device
+ can appear in more than one room, in this case the rooms have to be
+ specified comma-separated.
+ Devices in the room hidden will not appear in the web output, or set
+ the FHEMWEB attribute to selectively disable
+ rooms for certain FHEMWEB instances.
+
+
+
+ - suppressReading
+ Used to eliminate unwanted readings. The value is a regular expression,
+ with ^ and $ added. Only necessary in exceptional cases.
+
+
+
+ - showtime
+ Used in the webfrontend pgm2 to show the time of last activity
+ instead of the state in the summary view. Useful e.g. for FS20 PIRI
+ devices.
+
+
+
+ - verbose
+ Set the verbosity level. Possible values:
+
+ - 0 - server start/stop
+ - 1 - error messages or unknown packets
+ - 2 - major events/alarms.
+ - 3 - commands sent out will be logged.
+ - 4 - you'll see whats received by the different devices.
+ - 5 - debugging.
+
+ The value for the global device is a default for
+ other devices without own verbose attribute set.
+
diff --git a/fhem/docs/commandref_frame_DE.html b/fhem/docs/commandref_frame_DE.html
index 008916cc9..0a25bc37a 100644
--- a/fhem/docs/commandref_frame_DE.html
+++ b/fhem/docs/commandref_frame_DE.html
@@ -338,66 +338,17 @@ Gerät dokumentiert.
Globale Attribute für alle Geräte
-
- - verbose
- Setzt den Schwellwert für die Logfile-Meldungen.
- Mögliche Werte sind:
-
- - 0 - Server start/stop
-
- 1 - Fehlermeldungen oder unbekannte Pakete
-
- 2 - bedeutende Ereigbisse/Alarme.
-
- 3 - ausgesendete Kommandos werden gelogged.
-
- 4 - von den einzelnen Geräten empfangene Daten.
-
- 5 - Fehlersuche.
-
- Der für die global Instanz gesetzte Wert gilt
- als Voreinstellung für die Instanzen, die dieses Attribut nicht
- gesetzt haben.
-
+
+ - alias
+ Wird in FHEMWEB benutzt, um ein en anderen Namen für ein Gerät
+ anzuzeigen z.B. wenn Sonderzeichen/Leerzeichen nicht in der
+ Gerätedefinition verwendet werden können.
+
- comment
Fügt einen beliebigen Kommentar hinzu.
-
-
- - alias
- Wird in FHEMWEB benutzt, um ein en anderen Namen für ein Gerät
- anzuzeigen z.B. wenn Sonderzeichen/Leerzeichen nicht in der
- Gerätedefinition verwendet werden können.
-
-
- - room
- Filtert/gruppiert Geräte.
- Ein Gerät kann zu mehr als einem Raum zugeordnet werden. In diesem
- Fall müssen die Raumzuordnungen durch Kommata getrennt
- angegeben werden.
- Geräte, die dem Raum mit der Bezeichnung "hidden" zugeordnet
- werden, erscheinen nicht auf der Webseite.
-
-
- - genericDisplayType
- Wird von bestimmten Frontends (aber nicht FHEMWEB) verwendet, um
- für das Gerät passende Voreinstellungen (Bild/Befehle/etc)
- anzubieten. Z.Zt werden folgende Werte unterstützt:
- switch,outlet,light,blind,speaker,thermostat
-
-
-
- - group
- Gerätegruppen. FHEMWEB zeigt Geräte die in die gleiche Gruppe
- gehören auch in einer gemeinsamen Box an. Ein Gerät kann zu
- mehr als einer Gruppe gehören. In diesem Fall müssen die
- entsprechenden Gruppen durch Kommata getrennt eingetragen werden. Wenn
- dieses Attribut nicht gesetzt ist, wird der in der Gerätegruppe
- gesetzte Gerätetyp verwendet.
-
-
-
- - showtime
- Wird im FHEMWEB verwendet, um die Zeit der letzten Aktivität
- anstelle des Status in der Gesamtansicht anzuzeigen. Nützlich z.B.
- für FS20 PIRI Geräte.
-
+
- eventMap
@@ -434,6 +385,65 @@ Gerät dokumentiert.
richtig anzeigen kann.
+
+ - genericDisplayType
+ Wird von bestimmten Frontends (aber nicht FHEMWEB) verwendet, um
+ für das Gerät passende Voreinstellungen (Bild/Befehle/etc)
+ anzubieten. Z.Zt werden folgende Werte unterstützt:
+ switch,outlet,light,blind,speaker,thermostat
+
+
+
+ - group
+ Gerätegruppen. FHEMWEB zeigt Geräte die in die gleiche Gruppe
+ gehören auch in einer gemeinsamen Box an. Ein Gerät kann zu
+ mehr als einer Gruppe gehören. In diesem Fall müssen die
+ entsprechenden Gruppen durch Kommata getrennt eingetragen werden. Wenn
+ dieses Attribut nicht gesetzt ist, wird der in der Gerätegruppe
+ gesetzte Gerätetyp verwendet.
+
+
+
+ - room
+ Filtert/gruppiert Geräte.
+ Ein Gerät kann zu mehr als einem Raum zugeordnet werden. In diesem
+ Fall müssen die Raumzuordnungen durch Kommata getrennt
+ angegeben werden.
+ Geräte, die dem Raum mit der Bezeichnung "hidden" zugeordnet
+ werden, erscheinen nicht auf der Webseite.
+
+
+
+ - showtime
+ Wird im FHEMWEB verwendet, um die Zeit der letzten Aktivität
+ anstelle des Status in der Gesamtansicht anzuzeigen. Nützlich z.B.
+ für FS20 PIRI Geräte.
+
+
+
+ - suppressReading
+ Wird verwendet, um nicht gewollte Readings zu entfernen. Der Wert ist
+ ein Regular Expression, ergänzt mit ^ und $. Wird nur in
+ Ausnahmefällen benötigt.
+
+
+
+ - verbose
+ Setzt den Schwellwert für die Logfile-Meldungen.
+ Mögliche Werte sind:
+
+ - 0 - Server start/stop
+ - 1 - Fehlermeldungen oder unbekannte Pakete
+ - 2 - bedeutende Ereigbisse/Alarme.
+ - 3 - ausgesendete Kommandos werden gelogged.
+ - 4 - von den einzelnen Geräten empfangene Daten.
+ - 5 - Fehlersuche.
+
+ Der für die global Instanz gesetzte Wert gilt
+ als Voreinstellung für die Instanzen, die dieses Attribut nicht
+ gesetzt haben.
+
+
diff --git a/fhem/fhem.pl b/fhem/fhem.pl
index f20b7432d..bb3bb83c5 100755
--- a/fhem/fhem.pl
+++ b/fhem/fhem.pl
@@ -233,8 +233,10 @@ use vars qw(@structChangeHist); # Contains the last 10 structural changes
$selectTimestamp = gettimeofday();
$cvsid = '$Id$';
-my $AttrList = "verbose:0,1,2,3,4,5 room group comment:textField-long alias ".
- "eventMap userReadings:textField-long";
+my $AttrList = "alias comment:textField-long eventMap group room ".
+ "suppressReading userReadings:textField-long ".
+ "verbose:0,1,2,3,4,5";
+
my $currcfgfile=""; # current config/include file
my $currlogfile; # logfile, without wildcards
my $duplidx=0; # helper for the above pool
@@ -2568,6 +2570,12 @@ CommandAttr($$)
}
}
+ if($attrName eq "suppressReading") {
+ return "Argument must be a valid regexp" if(!$a[2] || $a[2] =~ /^\*/);
+ eval { "Hallo" =~ m/^$a[2]$/ };
+ return "Bad regexp: $@" if($@);
+ }
+
$a[0] = $sdev;
my $oVal = ($attr{$sdev} ? $attr{$sdev}{$attrName} : "");
$ret = CallFn($sdev, "AttrFn", "set", @a);
@@ -4052,6 +4060,9 @@ readingsBulkUpdate($$$@)
"readingsBeginUpdate first.";
return;
}
+
+ my $sp = AttrVal($name, "suppressReading", undef);
+ return if($sp && $reading =~ m/^$sp$/);
# shorthand
my $readings = $hash->{READINGS}{$reading};