[Gelöst][FUIP] Im fuip-field, unter Templates werden doppelte \\ gelöscht

Begonnen von Rewe2000, 21 Januar 2021, 12:37:36

Vorheriges Thema - Nächstes Thema

Rewe2000

Hallo,

ich habe nun viele Charts, im HTML Fenster auf Templates umgestellt und will unter dem Chart das Zeitformat der X-Achse zweizeilig formatieren (siehe Screenshot im Anhang). Das klappt auch prima, solange bis ich in Fhem ein "shutdown restart" ausführe. Alle gedoppelten Backslash "\\" werden entfernt und zu einem einzigen Backslash "\" gewandelt.
Wie kann ich die verdoppelten Backslash in den Feldern schreiben oder schützen, damit diese einen Neustart von Fhem überleben?

Mein Code für "data-timeformat" im FUIP Template:
data-timeformat="<fuip-field
fuip-name='data_timeformat'
fuip-type="text"
></fuip-field>"


Mein Inhalt im entsprechenden Feld "data_timeformat" der "fuip-field" Variable:
dd\\LF\\MMM

Klappt einwandfrei, bis zum besagten Fhem Neustart, danach ist vom Feldinhalt noch folgendes übrig geblieben:
dd\LF\MMM

Eigentlich reichen unter FTUI einfache Backslash für diese Funktion aus, will ich diese aber unter FUIP (als Templatevariable) verwenden, muss ich diese verdoppeln, damit der Zeilenumbruch klappt.
Hab schon viel versucht, aber leider bisher keinen Erfolg erzielt.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Thorsten Pferdekaemper

Hi,
kannst Du hier mal die Datei /opt/fhem/FHEM/lib/FUIP/config/FUIP_<fuip-device>.cfg hier dranhängen? Dann kann ich das mal bei mir ausprobieren und debuggen.
Gruß,
   Thorsten
FUIP

Rewe2000

Hallo Thorsten,

anbei wie gewünscht meine *.cfg Datei.
Solltest du noch etwas benötigen, so melde dich bitte.
Der "Fehler" ist (bei mir) zu 100% reproduzierbar.

In Zeile 10341, 10371 und 10394 sind noch Einträge mit "\\" doppel Backslash enthalten, aber nur bis zum Neustart von Fhem ;).

Gruß Reinhard

Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Rewe2000

Hallo Thorsten,

noch ein Hinweis dazu.

Gebe ich
<div data-type="chart"
...
...
data-timeformat="dd\LF\MMM">
...
...
</div>

in einem HTML View direkt (ohne Template) ein, muss ich die Backslash nicht verdoppeln, damit der Zeilenumbruch auch ausgeführt wird. Dieser Eintrag überlebt auch einem Fhem Neustart.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Thorsten Pferdekaemper

Hi,
könntest Du mal folgendes ausprobieren?
Die Datei /opt/fhem/FHEM/lib/FUIP/View.pm, dass es ab Zeile 114 so aussieht:

sub serializeRef($$) {
my ($ref,$indent) = @_;
my $blanks = " " x $indent;
my $class = blessed($ref);
if(defined($class)) {
return $ref->serialize($indent) if($ref->isa("FUIP::View"));
return "";  #we can only handle views here
};
# otherwise, we allow SCALAR, ARRAY, HASH
my $refType = ref($ref);
if(not $refType) {   #not a reference, assuming scalar
$ref =~ s/\\/\\\\/g;
$ref =~ s/'/\\'/g;
return "'".$ref."'";
}elsif($refType eq "ARRAY") {

Der Unterschied ist in den letzten paar Zeilen.
...und dann bitte mal alles testen, inklusive der ganzen Views ohne Templates und mit HTML.
Gruß,
   Thorsten
FUIP

Rewe2000

Hallo Thorsten,

klappt leider nicht, nach Fhem Neustart steht zwar noch der Wert "\\LF\\" in der Datei FUIP_<fuip-device>.cfg, aber das Ergebnis sieht aus wie im Anhang.
Ein Unterschied im neuen Code ist mir nur bei den Zeilen 125-127 aufgefallen, nach einem Fhem Neustart steht der geänderte Code noch in der View.pm. Fhem Neustart alleine sollte doch ausreichen, oder muss da mein kompletter Raspi neu gestartet werden.

Habe schon versucht die Werte im Eingabefeld in '' und "" einzuschließen, klappt aber auch nicht.
Mein Ziel war, es nur eine Zeilenschaltung "LF" im Wert der Variable mit unterzubringen.

Noch eine Frage an dich:
Wollte gestern mit einem Texteditor die Wertangaben \LF\ zu \\LF\\ direkt in der FUIP_<fuip-device>.cfg ersetzen, damit ich nicht alle Views mit den Templates über die Oberfläche ändern muss, das wird aber ignoriert.

Gucke ich jetzt in die Datei FUIP_<fuip-device>.cfg (nach einem Fhem Neustart) sind überall die Änderungen zu \\LF\\, welche ich eben über die Oberfläche gemacht habe noch vorhanden, aber die Template Charts sehen aus wie im Anhanhg, ohne Zeilenwechsel.

Wird da zur Darstellung der Charts diese Datei ignoriert, Änderungsdatum passt aber zum editieren.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Thorsten Pferdekaemper

Hi,
ja, FHEM neu zu starten reicht aus, um die neue View.pm zu benutzen. Könntest Du mir mal Deine Version der View.pm hier dranhängen? Bei mir hat der Teil nämlich wunderbar funktioniert. Warum das bei Dir nicht klappt ist mir nicht so ganz klar.
Das direkte Ändern sollte auch funktionieren. Du musst danach nur ein "set ui load latestSave" machen (und davor natürlich kein "set ui save"). Das lädt dann die aktuelle cfg-Datei.
Gruß,
   Thorsten
FUIP

Rewe2000

#7
Hallo Thorsten,

irgendwie wird bei mir da die "/opt/fhem/FHEM/lib/FUIP/config/FUIP_<fuip-device>.cfg" Datei anscheinend nicht verwendet.
Sehe ich aktuell in die Datei mit einem Editor, sind da überall "\\LF\\" eingetragen, was aber anscheinend nicht beachtet wird.

Auch ein "set ui refreshBuffer" und "set ui load latestSave" (ohne irgendwelches save) ändern da bei mir nichts.

Wie gewünscht, die beiden Dateien, direkt nach einem Fhem Neustart ohne danach irgend welche Änderungen gemacht zu haben.

Du siehst selbst, in der *.cfg Datei sind die "\\LF\\" enthalten, werden aber irgendwie nicht beachtet oder geladen.

Meines Wissens kann ich auch das "\" nicht als ASC-II Code eingeben, das dieser ja selbst als "\\92" (mit 2 Backslash) geschrieben werden müsste.

Danke für deine Mühe
Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Thorsten Pferdekaemper

Hi,
"\\" müsste in der Datei eigentlich als "\\\\" erscheinen. Also wenn Du manuell in der Datei "\\LF\\" einträgst, dann müsste nach einem "load" (oder auch einem Neustart, das ist in dem Fall dasselbe) in der Anwendung "\LF\" zu sehen sein.
Könntest Du mal in FUIP beim Template das ganze wieder mit "\\LF\\" schreiben, dann ein "save" machen und dann mal in die Datei schauen, ob es da "\\\\" gibt oder nicht?
Gruß,
   Thorsten
FUIP

Rewe2000

Hallo Thorsten,

ja das klappt, eine Wertangabe im View bei der Template Variable von "dd\\LF\\MMM" ergibt "data_timeformat => 'dd\\\\LF\\\\MMM'," in der cfg.Datei.
Nach einem "load ui latestSave" passt noch alles.

Nach einem Fhem Neustart sieht es genauso gut aus :)

Keine Ahnung was ich da heute Vormittag gesehen habe, denn auch in der Datei was ich mit angehängt hatte war ja einmal das"\\\\LF\\\\" schon vorhanden. Kann mir nur erklären ich habe da bei der Prüfung den falschen View erwischt.

Ich denke das passt so prima. Wirst du das generell mit einpflegen?

Zunächst mal vielen Dank für deine schnelle Hilfe.
FUIP Ist echt ein tolles Werkzeug um schnell ansprechende Oberflächen zu gestalten.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Thorsten Pferdekaemper

Hi,
sorry für die späte Antwort...
Ja, das wird generell mit reinkommen, kann aber ein bisschen dauern. Ich bin momentan an was anderem dran (in FUIP), was ein bisschen größer wird.
Gruß,
   Thorsten
FUIP

Rewe2000

Hallo Thorsten,

bitte nicht falsch verstehen, ich will dich nicht drängen, nur mich mal wieder in Erinnerung rufen.
Da du mir den Weg gezeigt hast wie ich es im Code selbst ändern kann, kann ich mir auch so noch behelfen.
Aber bitte nicht vergessen die Änderung von deiner Seite, bei nächster Gelegenheit mal in der Code mit zu übernehmen.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Thorsten Pferdekaemper

Hi,
tatsächlich ist es bei mir schon im Code so drin. Der multifhem Branch im Git hat das auch schon, nur der master Branch nicht. Das müsste ich noch machen. ...oder ich mache sowieso demnächst multifhem zum "Standard".
Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Hi,
erledigt. Die Änderung ist jetzt auch im master Branch drin.

Hier nochmal der Hinweis auf dem multifhem Branch:
https://forum.fhem.de/index.php/topic,119347.0.html

Möglicherweise werde ich demnächst komplett darauf umstellen. Falls Du also mal die Gelegenheit hast, wäre es vielleicht gut, das bald mal auszuprobieren.

Gruß,
   Thorsten
FUIP

Rewe2000

Hallo Thorsten,

vielen Dank für die schnelle Erledigung.

Die Umstellung auf multifhem werde ich in den nächsten Tagen mal angehen, auch wenn ich ehrlich gesagt für mich aktuell keinen Bedarf sehe.
Wenn du sowieso planst FUIP umzustellen macht es durchaus Sinn das durchzuführen.

Nochmals vielen Dank für deine Mühe.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky