neues Modul 98_archetype

Begonnen von igami, 15 Mai 2016, 14:54:50

Vorheriges Thema - Nächstes Thema

igami

Zitat von: vbs am 09 Juli 2016, 14:21:28
Kann ich es hinbekommen, dass das archetype-Device in der Gruppe "Archetypen" ist und ich trotzdem alle Erben auf Gruppe "Licht" setzen kann?
Ja, das geht, dazu benötigst du ein MetaArchetype. Hier der Auszug aus der commandref:

Define
define <name> archetype derive attributes
Wird in der DEF "derive attributes" angegeben handelt es sich um ein besonderes archetype. Es leitet Attribute anhand eines Musters ab:

    attr <inheritor> alias <room>: <description> [<index>] [<suffix>]
    attr <inheritor> group <actualGroup>

Als Erben werden alle Geräte aufgelistet welche die Attribute room oder captionRoom und description, oder das Attribut actualGroup besitzen.

Set
derive attributes
Der Befehl ist nur bei einem archetype mit der DEF "derive attributes" möglich.
Leitet für alle Erben die Attribute alias und group ab.

Dann kannst du deinem archLed das Attribut actualGroup hinzufügen. Hier wird allerdings ein Perl Ausdruck erwartet also in deinem Fall {"Licht"}

actualGroup {<perl code>}
Sofern ein archetype mit der DEF "derive attributes" definiert ist ersetzt die Rückgabe des perl code den Wert des Attributes group beim ableiten.


Zitat von: vbs am 10 Juli 2016, 11:19:01
Hättest du einen Tip, was ich da falsch mache? Danke!
Hast du dem archetype das Attribut als userattr hinzugefügt? Dies ist notwendig.

Es kommt aber auch meine ToDo-Liste, dass alle attribute die in attributes aufgeführt sind als Attribute für das archetype zur Verfügung stehen.
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

vbs

Danke für die Antwort! Die Geschichte mit dem userattr verstehe ich und funktioniert.

Das erste jedoch ist nicht so mein Fall, ehrlich gesagt. Wenn ich es richtig verstehe, dann ist das ja eine ziemlich andere Logik ggü. dem "normalen" archetype. Werde wohl erstmal bei der normalen Variante bleiben und group und room per Hand setzen.

igami

Zitat von: vbs am 12 Juli 2016, 20:24:29
Das erste jedoch ist nicht so mein Fall, ehrlich gesagt. Wenn ich es richtig verstehe, dann ist das ja eine ziemlich andere Logik ggü. dem "normalen" archetype. Werde wohl erstmal bei der normalen Variante bleiben und group und room per Hand setzen.
Ja, das verhält sich volkommen anders. Wenn ich nächsten Monat wieder mehr Zeit habe versuche ich das ganze man verständlicher zu umschreiben.
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

igami

So, nun habe ich wieder mehr Zeit mich dem Projekt hier zu widmen.
@vbs: wie kommst du bisher mit dem Modul zurecht?
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

vbs

Hi! Eigentlich hat sich da nicht viel verändert. Finde das Modul nach wie vor super!
Das einzige, was sich für mich etwas seltsam anfühlt, ist das (oben schon erwähnte) Verhalten mit den "doppelt-überladenen" Attributen wie group und room. Hat auf jeden Fall trotzdem FHEM für mich wesentlich besser wartbar gemacht. Ich konnte echt gar nicht mehr überblicken, ob meine ca. 10 HM-Dimmer wirklich identisch konfiguriert waren usw.. Also danke nochmals!

igami

- clean und clean check als Befehle implementiert um alle archetype auf einmal zu überprüfen
- 'delete attributes' als Attribut hinzufügen

Aktuelle Version im Startpost

ToDo:
- englische CommandRef schreiben
- 'initialize device' als spezielle DEF implementieren um devices nach dem Anlegen zu initialisieren und indexieren
- Muster für derive attributes im archetype konfigurierbar machen
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

igami

#21
- "PERL WARNING: main::CommandClean() called too early to check prototype" beim Neustart behoben

Aktuelle Version im Startpost

ToDo:
- englische CommandRef schreiben
- 'initialize device' als spezielle DEF implementieren um devices nach dem Anlegen zu initialisieren und indexieren
- Muster für derive attributes im archetype konfigurierbar machen
- nonBlocking
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

igami

Ich wollte das Modul nun noch mal Überprüfen und dann einchecken.
Gibt es noch Anmerkungen von den Benutzern?
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

mumpitzstuff

Ich habe mich mal durch den ersten Beitrag gekämpft und eigentlich gar nichts verstanden... Irgendwann kam ich dann beim ersten Beitrag von vbs an und glaube jetzt zumindest mal ansatzweise zu verstehen wofür das Modul gut sein soll. Um sicher zu gehen, formuliere ich das noch mal in DAU Sprache. Bitte korrigiere mich wenn ich kauf dem Holzweg bin.

Das Modul kann dazu verwendet werden, um Attribute mehrerer Geräte zu synchronisieren. Sinnvoller Weise z.B. bei Geräten des selben Typs. Wenn ich z.b. 5 Pflanzensensoren hätte und diese in FHEM eingebunden wären, dann könnte ich mit diesem Modul hier dafür sorgen, dass bestimmte Attribute in all diesen Geräten in einem Rutsch geändert werden können (Synchronisation oder Batch Modus). Beispiel (pseudo code):

define device1, device2, device3, device4 und device5
define xyz archetype device1 device2 device3 device4 device5
set xyz synchronisation der attribute attribut1, attribut2 und attribut3

Wenn ich jetzt attribut1 im device1 ändere, dann werden diese Änderungen an das attribut1 der devices2-5 durch das Modul automatisch übertragen und ich muss das nicht manuell in den 4 anderen Modulen nachpflegen. Richtig?

Falls ja, dann würde ich von einer Attribut Synchronisation, einem Batch Modus für Attribute oder Attribut Mirror reden, wobei mir die ersten beiden Varianten am besten gefallen und ich sofort verstanden hätte was dein Modul eigentlich macht.

Im ersten Beitrag fehlt definitiv ein einfaches Beispiel, um die Funktionsweise oder den Sinn des Moduls zu verstehen. Ich mache das und dann passiert dies.

igami

Zitat von: mumpitzstuff am 06 Mai 2017, 23:35:26
Wenn ich jetzt attribut1 im device1 ändere, dann werden diese Änderungen an das attribut1 der devices2-5 durch das Modul automatisch übertragen und ich muss das nicht manuell in den 4 anderen Modulen nachpflegen. Richtig?
Falsch. Das archetype gibt die Attribute vor. Wenn du das Attribut im archetype änderst wird es auf die devices 1-5 automatisch übertragen.

Zitat von: mumpitzstuff am 06 Mai 2017, 23:35:26
Im ersten Beitrag fehlt definitiv ein einfaches Beispiel, um die Funktionsweise oder den Sinn des Moduls zu verstehen. Ich mache das und dann passiert dies.
Das Attribute vererben ist ja nur eine Sache. Eigentlich hatte ich gehofft, dass der Einleitungssatz das Beschreibt was das Modul kann.
Zitat
Mit einem archetype werden Attribute auf andere Geräte, Erben (inheritors), übertragen. Die Erben können, nach einem vorgegeben Muster im archetype und für eine bestimmte Gruppe von Geräten, Beziehungen (relations), definiert werden.
Nämlich
1. Attribute vom archetype auf andere Geräte übertragen
2. neue Geräte nach einem bestimmten Muster anlegen und initialisieren
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

mumpitzstuff

Okay aber vom Grundsatz her war es schon richtig. Ich würde das Modul trotzdem AttributSync oder so nennen und Begriffe wie Archetype und Vererbung aus der Beschreibung streichen. Ist aber nur meine persönliche Meinung.
Das Modul macht insbesondere bei größeren Installationen durchaus Sinn.

igami

Zitat von: mumpitzstuff am 07 Mai 2017, 11:01:43
Okay aber vom Grundsatz her war es schon richtig. Ich würde das Modul trotzdem AttributSync oder so nennen und Begriffe wie Archetype und Vererbung aus der Beschreibung streichen. Ist aber nur meine persönliche Meinung.
Aber AttributeSync würde dann ja nur den ersten Teil des Moduls beschreiben.
Archetype bedeutet ja so viel wie Vorbild, Urbild und Beschreibt es meiner Meinung nach ganz gut. Ursprünglich sollte das Modul ja default heißen.
Vererbung scheint auch der passende Ausdruch zu sein. Siehe Vererbung (Programmierung)

Zitat von: mumpitzstuff am 07 Mai 2017, 11:01:43
Das Modul macht insbesondere bei größeren Installationen durchaus Sinn.
Genau dafür habe ich es ja geschrieben. Wir setzen FHEM auch bei uns in der Firma ein und da sind es schon ein paar hundert Aktoren.
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

igami

Zitat von: igami am 04 Mai 2017, 19:08:12
Ich wollte das Modul nun noch mal Überprüfen und dann einchecken.
Gibt es noch Anmerkungen von den Benutzern?
Bin grad dabei die commandref zu schreiben und werde es dann nächstes Wochenende einchecken nachdem ich die neue Version getestet habe.

Mich würde ja mal interessieren bei wie vielen Installationen das Modul benutzt wird :)
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

JoeALLb

Ich benutze es, aber vermutlich nur einen kleinen Teil des Funktionsumfanges....  :D
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

igami

Habe das Modul nun erstmal zu contrib hinzugefügt.
Bei mir zu Hause funktioniert es. Ich möchte es aber erst noch auf anderen Installationen testen.

Bei den Attributen haben sich vorallem actual Attribute verändert:
Zitat von: Commandref
actual_<attribute> <value>
<value> kann als <Text> oder als {perl code} angegeben werden.
Wir das Attribut <attribute> vererbt, ersetz die Rückgabe des actual_<attribute> Wert des Attributes.
Bei dem archetype mit der DEF "derive attributes" können Muster definiert werden.
Beispiel: actual_alias %captionRoom|room%: %description%[ %index%][%suffix%]
Alle in % eingeschlossenen Ausdrücke sind Attribute. Eine Reihenfolge lässt sich durch | erreichen. Ist ein Ausdruck in [] eingeschlossen ist er optional.
Die Ausdrücke captionRoom, description, index und suffix sind hierbei durch addToAttrList hinzugefügte Attribute.

Gerade was die Commandref angeht könnte ich noch Hilfe benötigen. Ich weiß ja was es tut und wie man das einstellen muss, kann das aber schlecht beschreiben :-[

Also die, die das Benutzen einfach Feedback geben :)
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