Hauptmenü

Fehler bei drag&drop im Floorplan

Begonnen von Jantle, 23 April 2016, 12:31:00

Vorheriges Thema - Nächstes Thema

Jantle

Hallo,

ich bin im Floorplan über einen kuriosen Fehler gestolpert, der mich ziemlich geärgert hat.
Ich baue gerade erst einen ersten Floorplan auf und bin noch viel am basteln und experimentieren. Immer wieder wurden nach dem Arrangieren von Elementen scheinbar willkürlich Fehldarstellungen und Fehlermeldungen im Floorplan angezeigt, die ich dann  händisch in der fhem.cfg korrigieren musste.
Z.B. wurde dabei
"attr wz_tempSensor fp_Grundriss 450,130,3,temperature"
zu
"attr wz_tempSensor fp_Grundriss 450,130,3, ,temperature"

Erst als ich einem Sensor eine Beschreibung gab, fiel mir das System auf: Beim Arrangieren der Elemente per Drag&Drop werden bei jedem Verschieben Reading und Beschreibung vertauscht. Verschiebt man ein Element aber ein zweites Mal, korrigiert sich der Fehler selber, so dass dies ein scheinbar willkürliches Phänomen ist.
Bei Stil 3 und 6 führt das Vertauschen dann eben manchmal zur Fehlermeldung "undefind Reading ..", bei anderen Stilen manchmal "nur" zum Verschwinden der Beschreibung.

Zugegeben, ein ansich unbedeutender Fehler, wenn man seine Natur kennt. Allerdings habe ich als Anfänger in den letzten Stunden innerlich immer wieder "Sch**ß Frickelsoftware!" geflucht...  :-[
... für diese Gedanken möchte ich mich hiermit entschuldigen!   :D

Einen Hinweis hätte ich noch: Als Anfänger ist man ja bemüht, alles richtig zu machen und sich an der allseits gern empfohlenen commandref zu orientieren. Im Vertrauen auf deren Korrektheit und Vollständigkeit habe ich länger ohne Erfolg nach der Bedeutung des zusätzlichen Kommas gesucht. Im Floorplan-Leitfaden steht zwar die Syntax für Stil 3 und 6 in Form eines Beispiels beschrieben, fehlt aber in der commandref  komplett.




Gruß, Jan

Jantle

Ich glaube den Fehler gefunden zu haben:
in 95_FLOORPLAN.pm , in der aktuellen rev0042 wäre das bei Zeile 585:


my $t1 = $text2 ? $text2 : " ";
my $t2 = $text  ? $text  : InternalVal($d,'NAME',' ');

sind die Variablennamen vertauscht...  mit

my $t2 = $text2 ? $text2 : " ";
my $t1 = $text  ? $text  : InternalVal($d,'NAME',' ');

klappts jetzt.

Ich habe keine Ahnung von SourceForge, vielleicht mag jemand den Fehler dort korrigieren?

Gruß,  Jan

UliM

Hallo Jan,
ui, das ist mir nie aufgefallen, und Fehlermeldungen im Forum gabs dazu auch noch nicht. Adlerauge!
Und den fix hast Du auch shcon gefunden, vorblidlich.

Nächstes WE soll das Wetter mässig werden, dann teste ich damit noch mla und checke es vsl. ein.

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

the ratman

#3
lustig - ich beschäftig mich seit gestern mit floorplan und dachte schon, ich hab nen knick in der optik.

passiert bei mir übrigens IMMER, wenn ich ein objekt verschiebe oder sonst was ändere. danach rutscht immer ein "," mit rein vor den attr-button. eventuelle texte dort sind dann durch den originalnamen ersetzt und gern ist dann natürlich das objekt verschoben. nervt vor allem beim rumprobieren gewaltig *g*.
trotzdem gfallt mir der fp so derartig gut, dass der wohl jetzt seine chance anstelle smartvisu kriegt.


frech hier gleich ne frage reinwerfe: ich denke zwar nicht, dass mein 2. problem mit dem fp direkt zu tun hat, aber vielleicht weiß ja wer ne lösung:
ich erstelle meine fp's am pc, stelle sie aber auf android-tablets dar. soweit so gut.
am tablet ist der text immer ein wenig verschoben, als ob die textgröße und/oder zeilenabstände nicht ganz gleich wären.
kennt das wer und weiß eventuell ne lösung?

und ganz vorischtig anfrage obs die "popup-option" je funktionierend geben wird?
→do↑p!dnʇs↓shit←

UliM

#4
Hiho,
hab mir das jetzt mal genauer angeschaut.
Es spielen 2 Komponenten mit: floorplan.pm und floorplan_drag.js.

In floorplan.pm gibt's in der Tat einen Variablendreher wie von Jan genannt, den hab ich zum Testen mal geradegerückt.
Die Variablenzuweisung
my $t1 = $text ? $text  : InternalVal($d,'NAME',' ');
setzt als Text den Devicenamen, da sonst im log eine Meldung "Use of initialized value" erscheint, falls text nicht gesetzt ist. Folgeeffekt ist, dass der Devicename statt eines bisher nicht manuell gesetzten Namens erscheint. M.E. nicht tragisch.

floorplan_drag.js ist zuständig für das Aktualisieren des Attributs nach dem Verschieben per drag&drop.
In Zeile 103 erfolgt das Zusammenbauen des neuen Attributs, in Zeile 104 das Aktualisieren.

Das js-Script erhält alle seine Infos über die html-tags.
Selbst wenn text und text2 leer sind, werden diese (ggf. leeren) Variablen mit Kommata getrennt angehängt. Daher rühren die überflüssigen Kommata am Ende des Attributwerts.
Um das zu vermeiden, müsste man da ein paar ifs einbauen, ich kann aber kein js. Wäre hinzubekommen, aber für mich viel trial&error.

In Summe sehe ich die beschriebenen Effekte im Attributwert (manueller Name wird per default auf Devicename gesetzt, es werden 1-2 Kommata angehängt). Diese Effekte sind vielleicht technisch nicht hübsch, stören aber nicht.
Bleibt noch, dass ein manuell gesetzter Name verschwindet und durch den Devicenamen ersetzt wird. Das sollte durch den fix des Variablendrehers behoben sein.

Jan, kannst Du bitte kurtz bestätigen: Nach Deinem Fix werden an den Attributwert immer noch Kommata angehängt, das stört aber nicht weiter. Ein manuell gesetzter Name wird aber nicht mehr durch den Devicenamen überschrieben.
Korrekt?

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

the ratman

ZitatM.E. nicht tragisch.
ZitatBleibt noch, dass ein manuell gesetzter Name verschwindet und durch den Devicenamen ersetzt wird.
tragisch nicht, aber scheiß nervig ...
ausserdem verschwinden bei mir gern mal beide arten der namen - das device ist dann also ganz namenlos. nicht oft, aber immer wieder mal.
→do↑p!dnʇs↓shit←

UliM

Zitat von: the ratman am 15 Mai 2016, 16:04:56
scheiß nervig
Sehr konstruktiv...
Du kannst gerne einen patch für floorplan_drag.js zur Verfügung stellen.

Zitat von: the ratman am 15 Mai 2016, 16:04:56
verschwinden bei mir gern mal beide arten der namen - das device ist dann also ganz namenlos. nicht oft, aber immer wieder mal.
Kann ich leider nicht nachvollziehen, brauche einen Testfall.

Die Korrektur des Variablendrehers hab ich grad eingecheckt, kommt ab morgen per update.

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

UliM

Zitat von: the ratman am 14 Mai 2016, 08:04:38
und ganz vorischtig anfrage obs die "popup-option" je funktionierend geben wird?
Hätte ich auch gern, aber leider grad nicht die Zeit, zu analysieren wie man das einbauen könnte und es dann zu tun.
Insfern: "je" wohl schon, zeitnah eher nicht.
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

the ratman

Zitat von: UliM am 15 Mai 2016, 16:24:28
Hätte ich auch gern, aber leider grad nicht die Zeit, zu analysieren wie man das einbauen könnte und es dann zu tun.
Insfern: "je" wohl schon, zeitnah eher nicht.
=8-)
na immerhin ists nicht in die kiste des todes gewandert. *g* hab ich was, auf dass ich mich freuen kann ... melde mich hiermit auch gleich mal als dummer tester, sofern du mit meinem nicht-wissen leben kannst.

was meinen verschwindenden namen angeht kann ich da leider auch nicht viel konstruktiveres einbringen.
primitiv gesagt: ich hab das selbe problem wie alle, die vielen kommas und der gerätename sind auch noch da, allerdings ist kein name zu lesen und das gerät ist auch so in der position verschoben, als würde man von "icon+name" auf "nur icon" umstellen. je mehr ich devices am fp rumschiebe, je schneller passiert das. allerdings (zumindest für mich) nie nachvollziehbar. leben kann ich damit sowieso - nervt halt nur beim erstellen eines fp.
aber wenn du eh was ausgebessert hast, vielleicht ist dann dieses problem eh auch weg, scheint mir ja sehr eng "verwandt" mit dem eigentlichen problem zu sein.
→do↑p!dnʇs↓shit←

UliM

Hi,
jupp.

Der Zustand nach dem heutigen update sollte sein: Kommata werden nach wie vor angehängt, der devicename wird aber nicht mehr angehängt und v.a. werden vorhandene manuell gesetzte Namen nicht mehr verändert.
Wenn devices vor dem heutigen update per drag&drop platziert wurden und dabei der devicename an das Attribut angehängt wurde, bleibt der wo er ist, müsste also einmalig händisch entfernt werden wenn er stört.

Sonst bitte konkrete Fehermeldung hier.

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

Robert1963


Hallo,

hab mich auch schon oft über den eingangs beschriebenen Fehler geärgert.

Meine Lösung:
Ich schubse das Device, Dummy etc. mit attr in den Floorplan aus der meiner Liste. save.
Editire die Position mit drag&drop.
Geh nochmal zurück ins Device, Dummy etc. und kopier die Beschreibung (Im Bsp. unten Vitrine) zwischen die Kommas danach gibts auch bei drag&drop keine Probleme.

Ist nicht elegant, löst aber mein Problem

Vorher
527,964,1,,Vitrine                                       
527,964,1,Vitrine,Vitrine

Vielleicht hilfts ja jemanden, (Oder gibt nen Lacher)  ;-)

Gr
Rob

Nuc 7i7, Ubuntu 20.04.2 LTS, FS20, Homematic, EnOcean, Hue, Conbee, Fritzbox 6490kd,