Globale Attribute modulspezifisch definieren

Begonnen von Damian, 19 Juli 2016, 23:08:06

Vorheriges Thema - Nächstes Thema

Damian

Hallo,

gibt es die Möglichkeit globale Attribute zu definieren, die man modulspezifisch abfragt, um bestimmte Funktionalität für alle Module des gleichen Typs zu erzwingen?


Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig

Nein, modulspezifische Attribute gibts es (noch?) nicht.

Fuer Befehle wie update/backup/etc wurden die Attribute bisher ins global gesteckt, fuer diesen Zweck wuerde ich heute optionale Instanzen verwenden. Gibt es Faelle, wo diese Methode nicht gangbar ist?

Falls wir das doch implementieren sollten: FHEMWEB/JsonList2/etc muss auch nachgezogen werden, und ist damit eine Menge Arbeit.

Damian

Zitat von: rudolfkoenig am 20 Juli 2016, 09:39:42
Nein, modulspezifische Attribute gibts es (noch?) nicht.

Fuer Befehle wie update/backup/etc wurden die Attribute bisher ins global gesteckt, fuer diesen Zweck wuerde ich heute optionale Instanzen verwenden. Gibt es Faelle, wo diese Methode nicht gangbar ist?

Falls wir das doch implementieren sollten: FHEMWEB/JsonList2/etc muss auch nachgezogen werden, und ist damit eine Menge Arbeit.

OK. Der Hintergrund meiner Frage war die Idee vom Modul bestimmte modulspezifische Attribute bereitzustellen, die man dann für alle Instanzen des Moduls nutzen könnte.

Beispiele:

attr global DOIF:disable 1

Würde alle aktiven DOIF-Instanzen deaktivieren/aktivieren.

oder

attr global DOIF:do always

ein Modul-spezifisches Attribut hier "do" für alle DOIF-Instanzen mit always vorzubelegen.

Die Auswertung des Attributes würde natürlich im Modul selbst stattfinden. Es ging mir nur um die Möglichkeit vom Modul "bereitgestellte" globale Attribute unter global (oder sonst wo zentral) definieren zu können.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Tobias

Habs auch noch nicht gecheckt.... Im Modul kann man doch was-auch-immer für Attribute definieren??

$hash->{AttrList}         = "disable:0,1 MeinAttr1 MeinAttr2"
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

@Damian: Bin nicht sicher, dass diese Beispiele mich ueberzeugen.
Dasselbe kann man mit "attr TYPE=DOIF disable" auch erreichen.

Wenn ueberhaupt, dann sollten diese Attribute nicht an global haengen, und auch anders bedient werden, also sowas wie "moduleattr DOIF disable 1"

betateilchen

Langsam wird es hier im Entwicklungsbereich echt abstrus. Warum soll es für eine simple Anforderung immer mehrere Lösungen geben? Es gibt schon jetzt eine Menge solcher wenig genutzter Features in fhem, deren Anzahl kaum noch jemand kennt und/oder nutzt. (Befehlskürzel, defaultattr - um nur mal zwei zu nennen)

Alleine die Variante, mit devspec und filter zu arbeiten, bietet bereits eine umfangreiche aliste von Möglichkeiten, die hier diskutierte Aufgabe zu lösen, die einfachste ist der Vorschlag von Rudi. In verbindung mit cmdalias lässt sich das sicher noch einfacher gestalten.

Und Attribute gehören dem Benutzer, nicht dem Entwickler. Wenn ein Benutzer sie verwenden möchte, kann und soll er das gerne tun. Aber er soll bitte selbst darüber nachdenken, wo und wie er sie einsetzt. Das sehe ich nicht als Aufgabe des Entwicklers.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#6
Das Thema Attribute bedarf m.E. ohnehin einer grundlegenden Überarbeitung. Mir sind ja schon lange die userattr ein Dorn im Auge, die mir in devices aufgezwungen werden und in den meisten Fällen dort gar keinen Sinn machen.

Im Gegenzug haben wir es aber bis heute immer noch nicht geschafft, in der Dropdownliste der Attribute eines devices klar ekennbar zu machen, welche Module direkt aus dem Modul stammen und nicht irgendwo anders her.

Über das Thema Attribute und ihre Vererbung haben wir hier vor längerem schon einmal ausführlich diskutiert, ohne dass es im Ergebnis zu einer brauchbaren Veränderung gekommen wäre.




Diskussionsthreads zu Attributen aus der Vergangenheit

https://forum.fhem.de/index.php/topic,23030.0.html

https://forum.fhem.de/index.php/topic,23816.0.html
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Damian

Zitat von: rudolfkoenig am 20 Juli 2016, 11:09:55
@Damian: Bin nicht sicher, dass diese Beispiele mich ueberzeugen.
Dasselbe kann man mit "attr TYPE=DOIF disable" auch erreichen.

Wenn ueberhaupt, dann sollten diese Attribute nicht an global haengen, und auch anders bedient werden, also sowas wie "moduleattr DOIF disable 1"

OK. Es war lediglich eine Frage. Es hätte sein können, dass es bereits einen Mechanismus gibt, den ich nicht kenne. Mit TYPE-Angabe können die User sicherlich auch zum Ziel kommen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Loredo

Warum denn nicht einfach ein kleines Modul, welches dann statt Global die Modul-globalen Attribute inne hat und dann vom Modul ausgewertet werden können?


So hatte Rudi es mir auch für den msg-Befehl erklärt, weshalb es zu dessen globaler Konfiguration und Steuerung das msgConfig Modul gibt, anstatt diese Attribute im Global-Device zu haben. Das ist eigentlich auch schon exakt auch das, was Damian beschrieben hat.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER