vorschlag: newline in attribut werten zulassen

Begonnen von justme1968, 17 Oktober 2015, 20:23:27

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: justme1968 am 18 Oktober 2015, 17:00:31
sie erfüllen da ja keinen zweck.

Die Umsetzung dieser Zeilen in die configDB waren bei der Entwicklung die aufäwndigste Aufgabe überhaupt. Zum einen unterscheidet fhem.pl nicht, ob die Zeilen aus fhem.cfg oder aus configDB kommen, zum anderen sollten die Zeilen im DEF-Editorfenster bearbeitbar sein und immer exakt so aussehen, wie der Benutzer sie eingebeben hat.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: rapster am 18 Oktober 2015, 17:27:24
Das betrifft lediglich die Anzeige,

Ok, also sehe ich erstmal keinen Handlungsbedarf.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

sorry. aber vielleicht stehe ich gerade auf dem schlauch:

wenn es eine DEF in fhem gibt die mehrere zeilen umfasst dann ist das perl intern ein string mit ganz normalen \n newline zeichen. da wird nichts maskiert.

wenn man einen solchen string mit newline zeichen in die db steckt und wieder raus holt dann sollten die 1:1 erhalten bleiben. ohne das etwas maskiert wird.

wenn man einen solchen string in ein file schreibt und unverändert wieder einlesen will muss man entweder string längen mit ausgeben oder die newline so maskieren das man sie beim einlesen erkennt und in echte newline zurückverwandeln kann. das liegt aber nur daran das das das neweline zeichen bei den zeilen basierten file operationen eine eigene bedeutung hat.

wenn man dann diesen aus der db zurück geholten string dann an fhem übergibt und das über die gleiche routine wie das einlesen aus einem file macht muss man die echten new line aus der db maskieren und so tun als wären sie aus einem file.

wenn man sie aus der db holt um sie nur anzuzeigen wie bei search dann sollten keine \ auftauchen.

warum ist beim DEF eine sonderbehandlung nötig die bei den attributen nicht nötig ist? beides geht beim einlesen durch die gleiche (file-) schnittstelle.

könnte es sein das der DEF string auch ohne sonderbehandlung auskommt?

nicht falsch verstehen. das soll keine kritik sein. ich möchte es nur verstehen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

#18
@rudi: wenn man die folgende zeile noch einbaut werden die mehrzeiligen attribute auch in der detail ansicht mehrzeilig dargestellt:

--- 01_FHEMWEB.pm (revision 9534)
+++ 01_FHEMWEB.pm (working copy)
@@ -1021,6 +1021,7 @@
           FW_pH "cmd=list%20TYPE=$val", $val,1;

         } else {
+           $val = "<pre>$val</pre>" if($val =~ m/\n/ && $title eq "Attributes");
            FW_pO "<td><div class=\"dval\">".
                    join(",", map { ($_ ne $name && $defs{$_}) ?
                      FW_pH( "detail=$_", $_ ,0,"",1,1) : $_ } split(",",$val)).
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rapster


rudolfkoenig


rapster

Andre,
kannst du dir bei Gelegenheit auch mal readingsProxy anschauen?
Hier erhalte ich bei multi line Attributen (z.B. bei setFn) immer: ERROR: endless loop detected

Danke und Gruß
  Claudiu

justme1968

#22
die varianten die ich getestet habe gingen.
bitte mach mal ein konkretes beispiel.


sorry. es ist spät. ich hatte readingsGroup gelesen. hab eben eine aktualisierte version von readingsProxy eingecheckt.

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

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

rapster

Allerdings :)

Danke!, schaut auf den ersten Blick gut aus :)

Gruß
  Claudiu

rapster

#24
Hallo Rudi,

kleiner Wunsch außerhalb der Wunschliste :)

Währe es möglich dass du newline auch in userReading's zulässt?
i.M. stellt das userReading bei newline du Funktion ein.

Und evtl. falls du sowieso schon an der Stelle am basteln bist, den momentanen device-namen in userReading als Variable (z.B. $DEVICE) bereitstellst? EDIT: Augen auf, $name ...

Kann falls gewünscht auch versuchen einen Patch hierfür bereitzustellen.

Gruß
  Claudiu

justme1968

das device bekommst du über $name.

für das newline müsste es reichen in zeile 2432 ein s anzuhängen:while($arg =~ /$regexo/s) {

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

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

rapster

Hi Andre,

danke!, das scheint zu funktionieren.

@Rudi, kannst du das so übernehmen?

Und zu der anderen Anfrage, $name ist um userreading natürlich das momentane devic (ich hatte es nur mit $NAME & $DEVICE probiert  :-X)

Gruß
  Claudiu

justme1968

wenn die userReadings auf multiline geändert werden sollte man auch gleich auf textField-long umstellen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

Habe beide Vorschlaege (regexp/s+textField-long) ohne testen uebernommen.

rapster

Würde mir multiline (und default textField-long) auch für stateFormat wünschen :-)

Ist i.M. sehr schwierig z.B. mehrere readings in der Raumübersicht als STATE anzeigen zu lassen und alles in eine Zeile zu quetschen.

Gruß
Claudiu