Structure: Wishlist: Zusätzliche Attribute in ignore hash mit aufnehmen

Begonnen von KernSani, 18 April 2017, 22:59:23

Vorheriges Thema - Nächstes Thema

KernSani

Hallo Rudi,

könnte der ignore hash in structure_Attr um die Attribute:
* alexaName
* alexaRoom
* siriName

erweitert werden?

Danke,

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

igami

Zitat von: justme1968 am 19 April 2017, 00:08:52
hilft structexclude nicht?
Das muss man halt bei jedem Device erst einrichten, auch wenn später noch neue hinzukommen.

Ich würde mir wünschen, dass man das ganze mit einem Attribut, am besten sogar global und lokal ausstellen kann
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

KernSani

Zitat von: justme1968 am 19 April 2017, 00:08:52
hilft structexclude nicht?

gruss
  andre
Theoretisch schon, in der Praxis denke ich aber sind die Attribute quasi ein alias und könnten ebenso behandelt werden.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

igami

Zitat von: igami am 19 April 2017, 05:59:37
Ich würde mir wünschen, dass man das ganze mit einem Attribut, am besten sogar global und lokal ausstellen kann
So vielleicht:

Index: FHEM/98_structure.pm
===================================================================
--- FHEM/98_structure.pm (Revision 13980)
+++ FHEM/98_structure.pm (Arbeitskopie)
@@ -2,8 +2,8 @@
##############################################################################
#
#     98_structure.pm
-#     Copyright by
-#     e-mail:
+#     Copyright by
+#     e-mail:
#
#     This file is part of fhem.
#
@@ -52,6 +52,8 @@
   my %dhash = ( Fn=>"CommandDelStruct",
                 Hlp=>"<structure> <devspec>,delete <devspec> from <structure>");
   $cmds{delstruct} = \%dhash;
+
+  addToAttrList("structexcludeAttr");
}

sub structAdd($$);
@@ -124,7 +126,7 @@
#############################

sub
-structure_getChangedDevice($)
+structure_getChangedDevice($)
{
   my ($dev) = @_;
   my $lastDevice = ReadingsVal($dev, "LastDevice", undef);
@@ -177,7 +179,7 @@
   # Struktur ist
   return "" if (! exists $hash->{CONTENT}->{$dev->{NAME}});

-  # lade das Verhalten, Standard ist absolute
+  # lade das Verhalten, Standard ist absolute
   my $behavior = AttrVal($me, "clientstate_behavior", "absolute");
   my %clientstate;

@@ -185,7 +187,7 @@
         if($attr{$me}{clientstate_priority});

   return "" if($hash->{INSET}); # Do not trigger for our own set
-  return "" if(@{$hash->{".asyncQueue"}}); # Do not trigger during async set
+  return "" if(@{$hash->{".asyncQueue"}}); # Do not trigger during async set

   if($hash->{INNTFY}) {
     Log3 $me, 1, "ERROR: endless loop detected in structure_Notify $me";
@@ -194,7 +196,7 @@
   $hash->{INNTFY} = 1;

   my %priority;
-  my (@priority, @foo);
+  my (@priority, @foo);
   for (my $i=0; $i<@structPrio; $i++) {
       @foo = split(/\|/, $structPrio[$i]);
       for (my $j=0; $j<@foo;$j++) {
@@ -202,7 +204,7 @@
         $priority[$i+1]=$foo[0];
       }
   }

+
   my $minprio = 99999;
   my $devstate;

@@ -438,7 +440,7 @@
}

sub
-structure_asyncQueue(@)
+structure_asyncQueue(@)
{
   my ($hash) = @_;

@@ -456,6 +458,13 @@
structure_Attr($@)
{
   my ($type, @list) = @_;
+  my $me = $list[0];
+
+  return undef
+    if(AttrVal(
+         $me, "structexcludeAttr", AttrVal("global", "structexcludeAttr", 0)
+    ));
+
   my %ignore = (
     alias=>1,
     async_delay=>1,
@@ -474,7 +483,6 @@

   return undef if($ignore{$list[1]});

-  my $me = $list[0];
   my $hash = $defs{$me};

   if($hash->{INATTR}) {
@@ -586,7 +594,7 @@
         timercalls is given by the value of async_delay (in seconds) and may be
         0 for fastest possible execution.  This way, excessive delays often
         known from large structures, can be broken down in smaller junks.
-        </li>
+        </li>

     <li><a href="#disable">disable</a></li>
     <li><a href="#disabledForIntervals">disabledForIntervals</a></li>
@@ -674,6 +682,13 @@
         </ul>
         </li>

+    <a name="structexcludeAttr"></a>
+    <li>structexclude<br>
+        if this attribute is defined, all devices excluded from attribute
+        operations. It's possible to set the attribute in the global device as
+        default.
+        </li>
+
     <li><a href="#readingFnAttributes">readingFnAttributes</a></li>

   </ul>
@@ -718,7 +733,7 @@
       <li>define house structure building kitchen living</li>
       <li>set house off</li>
     </ul>
-    <br>
+    <br>
   </ul>

   <br>
@@ -758,7 +773,7 @@
       gegeben, ein Wert von 0 entspricht der schnellstm&ouml;glichen Abfolge.
       So k&ouml;nnen besonders lange Verz&ouml;gerungen, die gerade bei
       gro&szlig;en structures vorkommen k&ouml;nnen, in unproblematischere
-      H&auml;ppchen zerlegt werden.
+      H&auml;ppchen zerlegt werden.

       </li>

@@ -816,7 +831,7 @@
       <code>haus</code> den Status <code>An</code> hat nimmt die Struktur den
       Status <code>Any_On</code> an. Um dagegen den Status <code>All_off</code>
       anzunehmen, m&uuml;ssen alle Devices dieser Struktur auf <code>off</code>
-      stehen.
+      stehen.
       </li>

     <li>&lt;struct_type&gt;_map<br>
@@ -865,6 +880,13 @@
           </code>
         </ul>
     </li>
+
+    <a name="structexcludeAttr"></a>
+    <li>structexclude<br>
+        Bei gesetztem Attribut werden alle attr/deleteattr ignoriert. Das
+        Attribut kann auch im global Device als Vorgabe gesetzt werden.
+        </li>
+
     <li><a href="#readingFnAttributes">readingFnAttributes</a></li>
   </ul>
   <br>
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

rudolfkoenig

Bei neuen globalen Attributen reagiere ich allergisch :)
Ich tendiere dazu, dass ein structure Attribute nicht mehr weitergibt (bis auf das "eigene").
Meinungen?

igami

Zitat von: rudolfkoenig am 19 April 2017, 08:26:48
Bei neuen globalen Attributen reagiere ich allergisch :)
Ich tendiere dazu, dass ein structure Attribute nicht mehr weitergibt (bis auf das "eigene").
Meinungen?
Das habe ich erwartet :)

Gibt es denn Benutzer die das nutzen, dass structure Attribute weitergibt? Wenn man es einfach ausbaut wäre es eben nicht mehr abwärtskompatibel. Alternativ könnte man es auch einfach per default ausstellen und über ein Attribut wieder aktivieren.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

KernSani

meine Meinung:
ich pflege i.d.R. ein structexclude .*:.* (aber manchmal vergesse ich das und dann schimpfe ich mit Alexa, die mich nicht versteht, weil die Esstischlampe mal wieder "Alle Lichter Erdgeschoss" heißt)


RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

rudolfkoenig

ZitatAlternativ könnte man es auch einfach per default ausstellen und über ein Attribut wieder aktivieren.
Akzeptiert.

Zitatmeine Meinung: ...
War das ein "ja, weg mit der automatischen Attributweitergabe" ?

KernSani

Zitat von: rudolfkoenig am 19 April 2017, 09:42:17
War das ein "ja, weg mit der automatischen Attributweitergabe" ?
Eher ein "Ich persönlich brauche es nicht"
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

CoolTux

Ich wäre für ein NEIN, nicht weg mit der Attributsvererbung. Auch wenn ich damit mal ganz schön Probleme hatte. Aber mittlerweile finde ich es hilfreich.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

igami

Zitat von: CoolTux am 19 April 2017, 10:07:42
Ich wäre für ein NEIN, nicht weg mit der Attributsvererbung. Auch wenn ich damit mal ganz schön Probleme hatte. Aber mittlerweile finde ich es hilfreich.
Und ein Attribut um das Verhalten zu steuern wäre okay?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

justme1968

das ein setzen von structexclude aktuell automatisch durchgereicht wird finde ich schon nützlich.

das durchreichen generell abzuschaffen führt glaube ich zu problemen.

den default zu ändern und es per attribut konfigurierbar zu machen ist vermutlich besser. aber auch mehr code. ich weiß nicht ob es das wert ist.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Meine letzte Absicht war per Voreinstellung die Weiterreichung aller Attribute an den "Mitgliedern" zu unterbinden, mit einem Attribut (propagateAttr) koennte man das bisherige Verhalten aktivieren.
Scheint aber nicht auf so viel Begeisterung zu stossen wie ich dachte, mache also erstmal nichts.

Ist noch jemand ausser  KernSani fuer die Aufnahme der unteren drei Werte in die ignore Liste?

Die enthaelt z.Zt. "alias async_delay clientstate_behavior clientstate_priority devStateIcon disable disabledForIntervals group icon room stateFormat webCmd userattr". Welche Attribute man ueber structure setzen will, ist mir ein Raetsel.

igami

Zitat von: rudolfkoenig am 19 April 2017, 14:29:00
Meine letzte Absicht war per Voreinstellung die Weiterreichung aller Attribute an den "Mitgliedern" zu unterbinden, mit einem Attribut (propagateAttr) koennte man das bisherige Verhalten aktivieren.
Scheint aber nicht auf so viel Begeisterung zu stossen wie ich dachte, mache also erstmal nichts.
deswegen ja der Vorschlag es abschaltbar zu machen, dann ändert sich ja nichts, nur, dass es möglich ist es abzuschaltet.

Zitat von: rudolfkoenig am 19 April 2017, 14:29:00
Welche Attribute man ueber structure setzen will, ist mir ein Raetsel.
Warum ist es denn dann eingebaut?

Prinzipiell finde ich die möglichkeit Attribute weiter zu geben gut, siehe archetype, nur möchte ich eben einstellen können welche weitergegeben werden, gerade da es sich ja bei structure um eine Zusammenfassung von mehreren Geräten handelt die ja auch steuern kann.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED