Hauptmenü

FLOORPLAN & Structure

Begonnen von yawp, 08 Januar 2013, 00:32:02

Vorheriges Thema - Nächstes Thema

yawp

Ich würde gerne in FLOORPLAN ein Objekt und eine Structure, die dieses Objekt enthält, in einem Grundriß abbilden.

Sobald der Arrange Mode mit dem Parameter attr <floorplan> fp_arrange 1 gesetzt wird und im Grundriß die Structure hinzugefügt wird, wird das Einzelobjekt gelöscht.

Ist das so gewollt ???

Viele Grüße

yawp
FHEM 5.8 auf Raspberry Pi 2, CUL_HM

UliM

Hi,
nö :)
Structure hat die Eigenschaft, Attribute zu vererben - das ist gewollt.

Ich vermute, dass durch das Setzen des attr fp_Grundriss o.ä. das entspr. Attribut auf den abhängigen devices geändert wird.

Es sollte aber gehen, wenn Du das Attribut zuerst auf der structure und erst danach auf dem abhängigen device setzt.
Notbehelf wäre ein dummy, den Du in den floorplan einfügst, der dann über notify die eigentliche structure schaltet.

Geht einer dieser WegefürDich?

Gruß,
Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

yawp

Hallo Uli,

vielen Dank für Deine schnelle Antwort.

Das Phänomen taucht unabhängig von der Reihenfolge auf, und zwar sobald das Attribut attr <floorplan> fp_arrange 1 gesetzt ist.

Ist es möglich, in einem späteren Release ein Bugfix aufzunehmen ???

Der Workaround mit dem dummy klappt übrigens gut ...


Viele Grüße

Marko
FHEM 5.8 auf Raspberry Pi 2, CUL_HM

UliM

Hi,
ich verstehe den Zusammenhang von fp_arrange und structure nicht.
Kann eigentlich gar nix miteinander zu tun haben...
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

henryk

Moin,

grade für floorplan ist das generelle Vererben von Attributen in Strukturen aber doch eher ... sagen wir unvorteilhaft. Wäre es nicht sinnvoll, einen konfigurierberen Filter einzuführen der manche Attribute nicht vererbt?

Usecase:

define Wohnzimmer_Licht structure raum_licht Schreibtisch Couch
define Schlafzimmer_Licht structure raum_licht Bett
define Alle_Lichter structure licht Wohnzimmer_Licht Schlafzimmer_Licht


In meinem Floorplan möchte ich jetzt sowohl die einzelnen Lichter haben (Schreibtisch, Couch, Bett), als auch alle Lichter im Wohnzimmer (Wohnzimmer_Licht), aber nicht im Schlafzimmer (da besteht die Gruppe ja nur aus einem Teil, zumindest vorerst), als auch den Schalter für alle Lichter überhaupt.

Nach save sieht das in fhem.cfg (unter anderem) so aus:

attr Couch fp_Grundriss 350,1030,2,
attr Schreibtisch fp_Grundriss 556,1089,2,
attr Bett fp_Grundriss 408,436,2,
attr Wohnzimmer_Licht fp_Grundriss 213,973,2,
attr Alle_Lichter fp_Grundriss 250,130,2,


Beim Wiederstarten von fhem hat das folgende unschöne Effekte:
  • Alle Lichter und Gruppen (Wohnzimmer_Licht, Bett, Schreibtisch, Couch) werden auf die Position von Alle_Lichter verschoben. (Da könnte man noch argumentieren, dass das an der Reihenfolge liegt, aber ich sehe nirgendwo eine Information dazu wie man Attribute bei save in der Reihenfolge fixieren könnte).)
  • Die Schlafzimmer_Licht-Gruppe wird eingeblendet und auch an die Position von Alle_Lichter gepackt. (Das ist mit Reihenfolge nicht mehr getan, da muss ein deleteattr Schlafzimmer_Licht fp_Grundriss hinter das attr Alle_Lichter fp_Grundriss.)

Das ist ja mindestens nicht im Sinne des Erfinders. Man könnte da jetzt drumrumtricksen und zum Beispiel mit notify nach dem Start alle Dinge wieder an ihren Platz rücken (dabei darauf achten, erst Wohnzimmer_Licht und dann Schreibtisch und Couch zu verschieben), verliert dann aber zum Beispiel die Editiermöglichkeiten in fp_arrange. Besser wäre, wenn zumindest dieses Attribut gar nicht erst durch die Gegend tropfen würde.

--
Henryk Plötz
Grüße aus Berlin

UliM

... oder tricksen, indem man im floorplan einen Dummy platziert , der dann indirekt über notify die structure schaltet.
Vmtl erstmal das einfachste...
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

justme1968

dafür gibt es das attribut structexclude. damit kann man attribute vom überschreiben durch die structure ausschliessen.

bevor es gesetzt ist kann man es als netten nebeneffekt direkt in der strukture setzen und es wird genau ein mal nach unten an alle beteiligten durchgereicht. also:attr <structure> structexclude <structure>:fp_arrange und danach kann man für die devices fp_arrange setzen ohne das es durch die structure wieder überschrieben wird.

das gleiche ist auch für das positions attribut zu machen. oder gleich attr <structure> structexclude <structure>:.* für alle attribute.

jeder workaround der auf irgendwelchen reihenfolgen beruht funktioniert spätestens dann nicht mehr wenn man am floorplan wider interaktiv etwas ändert.

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

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

CountAlmasy

Hallo,

zu dem Thema wurde ja schon länger nichts mehr geschrieben. Ich habe keine Informationen dazu gefunden, ob sich das hier beschriebene Verhalten durch verschiedene Updates zwischenzeitlich geändert hat.

Beabsichtigt ist, dass im Floorplan jeweils nur die structure zu sehen (und zu schalten) ist und nicht die zugehörigen Geräte. Durch die Vererbung werden beim Hinzufügen einer structure zum Floorplan standardmäßig auch die zugehörigen Geräte hinzugefügt, so dass verschiedene Icons übereinanderliegen. Da das bei mir nicht gewollt ist, habe ich zunächst versucht, wie im Thread beschrieben, in der structure das Attribut structexclude zu setzen, um die Vererbung zu verhindern (was meine bevorzugte Lösung wäre):

attr <some_structure> structexclude <some_structure>:fp_arrange

Das führt leider zu der Fehlermeldung, dass das Attribut structexclude für die structure nicht bekannt ist. Also habe ich alternativ das Attribut bei allen beteiligten Geräten gesetzt:

attr <some_device> structexclude <some_structure>:fp_arrange

Das wird zwar akzeptiert, hat aber leider keine Wirkung. Nachdem ich alle einzelnen Geräte aus dem Floorplan entfernt habe, werde diese nach einem Speichern der Konfiguration (fhem.cfg) alle automatisch wieder hinzugefügt. Wie kann ich das durch korrekte Nutzung des structexclude-Attributs verhindern (ohne mit Dummys oder notify-Meldungen zu arbeiten)?

CountAlmasy

Hallo,

ich habe das gewünschte Ziel erreicht, indem ich an den Geräten einfach alle Attribute von der Vererbung ausgeschlossen habe:

attr <some_device> structexclude <some_structure>:.*

Eleganter und effizienter wäre allerdings der Ansatz, (einzelne) Attribute direkt in der structure von der Vererbung auszuschließen. Es ist schade, dass das nicht mehr funktioniert.

rudolfkoenig

ZitatEs ist schade, dass das nicht mehr funktioniert.
Ich habe keinen Hinweis darauf, dass sowas je funktioniert hat.

Alle Elemente einer struktur kann man auch einfach setzen:
attr strAttr=str1 structexclude str1:fp_arrange
Voraussetzung
define str1 structure strAttr dev1 dev2 dev3

justme1968

es hat funktioniert.

so lange das structexclude attribut nicht gesetzt ist wird das setzen eines attributes auf die structure an alle beteiligten devices weitergereicht. das war auch für das structexclude attribut selber so da es ja zu dem zeitpunkt noch nicht gesetzt war.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Klouse

Hallo,

irgendwie will es bei mir nicht klappen, egal was ich tue die Struktur bewegt alle eingetragenen Geräte am Floorplan mit.

Hier ein kurzer Auszug aus meiner Konfig:

define MAX_Wohnzimmer_L MAX HeatingThermostat 087af7
attr MAX_Wohnzimmer_L userattr MAX_Gesamt MAX_Gesamt_map structexclude
attr MAX_Wohnzimmer_L IODev CULMAX0
attr MAX_Wohnzimmer_L MAX_Gesamt MAX_Gesamt
attr MAX_Wohnzimmer_L alias Wohnzimmer (L)
attr MAX_Wohnzimmer_L fp_FPgPad 389,255,2,
attr MAX_Wohnzimmer_L room Heizung,Wohnzimmer
attr MAX_Wohnzimmer_L structexclude MAX_Gesamt:fp_arrange
define FileLog_MAX_Wohnzimmer_L FileLog ./log/MAX_Wohnzimmer_L-%Y.log  MAX_Wohnzimmer_L
attr FileLog_MAX_Wohnzimmer_L alias FL_Wohnzimmer_L
attr FileLog_MAX_Wohnzimmer_L logtype text
attr FileLog_MAX_Wohnzimmer_L room Heizung

define MAX_Gesamt structure MAX_Gesamt MAX_Wohnzimmer_L MAX_Wohnzimmer_R MAX_Vorzimmer MAX_Badezimmer MAX_Schlafzimmer
attr MAX_Gesamt alias Heizung Gesamt
attr MAX_Gesamt fp_FPgPad 389,255,2,
attr MAX_Gesamt room Heizung
attr MAX_Gesamt webCmd desiredTemperature

Danke!

MfG Klaus

CountAlmasy

Hallo Klaus,

bei mir hat es, wie oben beschrieben, leider nur funktioniert, indem ich ALLE Attribute von der Vererbung ausgeschlossen habe. Bezogen auf Dein Beispiel müsste es also heißen:

attr MAX_Wohnzimmer_L structexclude MAX_Gesamt:.*

Viel Erfolg!

Klouse

Hallo,

danke für die Antwort, leider kann meine Struktur danach die Geräte nicht mehr schalten, anstatt meines drop-down Feldes steht dann nur noch mein webcmd (desiredtemperature) in Klartext im floorplan.

Sehr tricky...

MfG Klaus

CountAlmasy

Hallo Klaus,

ich habe meinen Filter zwischenzeitlich etwas "gelockert", d.h. statt alle Attribute zu blockieren, schließe ich nur die mit fp_ beginnenden Attribute aus. In Deinem Fall müsste es also z.B. heißen:

attr MAX_Wohnzimmer_L structexclude MAX_Gesamt:fp_.*

Damit wird das Setzen der Floorplan-Positionen auf den der Struktur zugeordneten Geräten verhindert, aber die anderen Attribute sollten nicht blockiert werden.

Viel Erfolg!

Klouse

Hallo,

super, danke - werde ich testen!


LG

ujaudio

Ich habe zu dem Thema "FLOORPLAN & Structure" auch eine Frage:

Meine Struktur kann 4 Werte annehmen und hat dazu passende Icons definiert. Klappt alles wunderbar!
Nun möchte ich NUR das aktuelle Icon im Floorplan haben. Ich bekomme das auch, mit dem Attribut <myFloorplan> welches den Wert <Pos1>,<Pos2>,0, bekommen hat.
Nun wird das richtige Icon angezeigt, leider aber auch übereinandergedruckt(!) die Werte der dummy die zu der structure gehören. Wie bekomme ich diese weg? Ich habe verschiedene Werte des 3. Parameters probiert, aber nichts hat funktioniert. Irgendeine Idee?
Einen lieben Gruß
Jürgen

justme1968

du musst per structexclude dafür sorgen das die attribute die für die structure gesetzt werden nicht auf die beteiligten devices weitergegeben werden.

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

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