label Attribut auch für FileLog

Begonnen von noansi, 18 August 2018, 19:42:58

Vorheriges Thema - Nächstes Thema

noansi

Hallo Rudolf,

mit SVG kann man mit dem Atribut "label" schön die Min/Max Werte über
set title '<L1>'
oder schöner mit log Namen
set title '<TL>: <L1>'
im gplot File als Überschrift eines Plots einrichten.

Bei FileLog ermöglicht das logtype Attribut, einen Link in FileLog Anzeige zu erzeugen, um sich den Inhalt grafisch anzeigen zu lassen. Das nutze ich häufig und gerne. Blos die Min/Max Überschrift ist da derzeit nicht einzubauen.

Daher mal ein Mini  :) Änderungsvorschlag von mir. Ergänze bitte FileLog ebenfalls um das Attribut "label" und schon ist es wie bei SVG machbar.

Danke und Gruß,

Ansgar.

PS: Eventuell besteht auch allgemeines Interesse an so einer Überschrift, so dass es auch schön wäre, wenn in 98_SVG.pm in der Funktion SVG_substcfg($$$$$$) Zeile 839

  my $label = AttrVal($wl, "label", undef);
in z.B.
  my $label = AttrVal($wl, "label", "\"Min \$data{min1}, Max \$data{max1}, Last \$data{currval1}\"");
geändert würde.
Dann kann man es über das Attribut "label" abschalten (oder ändern) statt es für jeden Plot zu setzen.

Und wenn man schon mal dabei ist, drei Zeilen drüber würde
  $fileesc =~ s/\.log//g;
auch die übliche und dort überflüssige .log Endung des Logfile Filenamens entfernen.

Ok, das ist ein ganz kleines bischen mehr Mini  ;) , findet aber hoffentlich auch Anklang. Danke!

rudolfkoenig

ZitatErgänze bitte FileLog ebenfalls um das Attribut "label" und schon ist es wie bei SVG machbar.
Ich stehe wohl auf dem Schlauch: ich sehe nirgendwo eine Aenderung, wenn ich im FileLog das label Attribut setze. Vermutlich beinhaltet "Ergänze" mehr als nur hinzufuegen des Attributes (was man mit userattr selbst jederzeit erlauben kann). Es stellt sich auch die Frage, fuer welchen der moeglichen Plots label gelten soll, man kann ja  mit logtype mehrere Plots pro FileLog definieren.
Ich will eigentlich keine Arbeit in diesem Bereich reinstecken: wenn jemand die SVG-Plots individualisieren will, der soll mit "Create SVG Plot" konkrete Instanzen anlegen.


Zitat[...]auch schön wäre, wenn in 98_SVG.pm in der Funktion SVG_substcfg($$$$$$) Zeile 839 [...] geändert würde.
Ich habe die Befuerchtung, dass in manchen Faellen Min/Max/Last verwirrend ist, und bin fuer das explizite setzen.
Lasse mich aber ueberzeugen, wenn auch andere sich dafuer aussprechen.



noansi

Hallo Rudolf,

ZitatIch stehe wohl auf dem Schlauch: ich sehe nirgendwo eine Aenderung, wenn ich im FileLog das label Attribut setze. Vermutlich beinhaltet "Ergänze" mehr als nur

Wenn ich bei einem FileLog mit dem Attribut logtype neben text noch eine grafische Anzeige mit gplotfile:NAME definiere, dann wird mir damit in der Log Anzeige der Link mit NAME angeboten.
Klicke ich darauf, dann wird der Plot dargestellt, aber die Ersetzung von <L1> aus dem gplot File findet nicht statt, weil kein "label" für den hash verfügbar ist. Dafür muss das Attribut "label" gesetzt werden, in dem Fall eben beim FileLog.
Die FileLog Definition weiß nichts von einer SVG Definition für solch einen Plot.

Deswegen bitte einfach nur "label" als Attribut für FileLog zulassen, also ergänzen.
Dann kann man diese Ersetzung einstellen, wie auch bei SVG.

ZitatEs stellt sich auch die Frage, fuer welchen der moeglichen Plots label gelten soll, man kann ja  mit logtype mehrere Plots pro FileLog definieren.
Für jeden, zwangsläufig, und man muss sich eben entsprechende gplot files bauen, in denen <L1> genutzt wird. Wird <L1> im gplot File nicht verwendet, dann passiert auch nichts (sichtbares) damit.
Es ist einfach praktisch, aus meiner Sicht.
Man muss natürlich einigermassen verstanden haben, wie die Plots konfiguriert werden, um das sinnvoll nutzen zu können.

ZitatIch habe die Befuerchtung, dass in manchen Faellen Min/Max/Last verwirrend ist, und bin fuer das explizite setzen.
Ein explizit zu setzendes globales Attribut dafür, statt einer Code Festlegung, wäre auch eine Möglichkeit für den, der es haben möchte.

Gruß, Ansgar.

rudolfkoenig

ZitatDeswegen bitte einfach nur "label" als Attribut für FileLog zulassen, also ergänzen.
Das kann man jetzt schon als Benutzer mit "attr FileLogIntanz userattr label". Ich habe das gerade getan, und konnte keine Aenderung feststellen. Auch laut Code in SVG.pm duerfte die Aenderung keine Auswirkung haben. Bevor ich was anpasse, moechte ich wenigstens sehen, dass es eine Auswirkung hat.

Ich bitte Dich hier was Konkretes reinzustellen (damit meine ich ein fhem.cfg Beispiel und Screenshots, nicht ein Patch), damit ich dein Vorschlag nachstellen kann und endlich begreife.

Und ich bleibe dabei: Ich will die Individualisierung der Plots ueber Einzelinstanzen/SVG-Editor ermoeglichen, und will weg von dem alten FileLog-getriebenen Ansatz, wie hier.


ZitatEin explizit zu setzendes globales Attribut dafür, statt einer Code Festlegung, wäre auch eine Möglichkeit für den, der es haben möchte.
Globale Attribute werde ich nur noch in Notfaellen einfuehren, ich moechte die meisten lieber loswerden.

noansi

Hallo Rudolf,

ZitatIch bitte Dich hier was Konkretes reinzustellen (damit meine ich ein fhem.cfg Beispiel und Screenshots, nicht ein Patch), damit ich dein Vorschlag nachstellen kann und endlich begreife.

Beispiel aus fhem.cfg:
define FileLog_C_Aussen FileLog /opt/fhem/log/C_Aussen-%Y-%m.log C_Aussen:(T:).*
attr FileLog_C_Aussen logtype astemp4hum6dew8fauto:Aussen,text
attr FileLog_C_Aussen room LogSensor
#attr FileLog_C_Aussen label "Min $data{min1}, Max $data{max1}, Last $data{currval1}"


das auskommentierte label soll wirken.

Und noch astemp4hum6dew8fauto.gplot
# Attribute 'small' is useful for gnuplot/-scroll only,
# if plotsize is less than 800,400
#set terminal png transparent small size <SIZE> crop

set terminal png transparent size <SIZE> crop

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
set title '<TL>: <L1>'
set grid xtics y2tics

set y2label "Temperature [°C]"
set ylabel "Humidity [%]"

#FileLog 4:T\x3a:0:
#FileLog 6:H\x3a:0:
#FileLog 8:D\x3a:0:

plot \
  "<IN>" using 1:4 axes x1y2 ls l0 title 'Temperature' with steps,\
  "<IN>" using 1:6 axes x1y1 ls l2 title 'Humidity' with steps,\
  "<IN>" using 1:8 axes x1y2 ls l4 title 'Dewpoint' with steps


In der Plot Überschrift kommt dann: C_Aussen-2018-08: <L1>

Userattribut habe ich nicht genutzt. Bin ich auch nicht drauf gekommen (bedeutet zudem noch mehr Einstellarbeit und kostet wieder mehr Speicher).
Ich bin auch nur durch Code Studium darauf gekommen, warum bei <L1> gar nichts passiert, obwohl es bei SVG geht. Und somit, dass das Attribut label nötig ist, um das gewünschte zu erreichen und das hässliche <L1> im Plot los zu werden. Es fehlt hier aus Nutzersicht ein entsprechender kurzer Hinweis in der Commandref.

Da ich die Summe meiner Vorschläge bei mir in den Modulen einfach mal umgesetzt habe, muss ich bei einem neuen Log ausser logtype und room gar nichts mehr zusätzlich einstellen, sofern ich ein vorhandenes und mit entsprechendem Titel voreingestelltes gplot File nutze.

Gruß, Ansgar.

rudolfkoenig

Ich verstehe zwar immer noch nicht wieso, aber es funktioniert, insofern habe ich label als Attribut hinzugefuegt :)

Fuer die anderen Vorschlaege brauche ich mehr Befuerworter, da es Voreinstellung aendert, und damit Nebeneffekte erzeugt.

noansi

#6
Hallo Rudolf,

ZitatIch verstehe zwar immer noch nicht wieso, aber es funktioniert, insofern habe ich label als Attribut hinzugefuegt :)
Danke!
Eine Änderung weniger, auf die ich achten muss, wenn ich selbst mal update. :)

ZitatFuer die anderen Vorschlaege brauche ich mehr Befuerworter, da es Voreinstellung aendert, und damit Nebeneffekte erzeugt.
Schade, dass sich bisher keiner dazu äußert. Vieleicht ist das Thema anderswo besser aufgehoben?

ZitatGlobale Attribute werde ich nur noch in Notfaellen einfuehren, ich moechte die meisten lieber loswerden.
Gibt es eigentlich Modulbezogene Attribute oder Gedanken dazu?
Das wäre ein alternativer Ansatz zu globalen Attributen. So was wie
attrModule <Modulname> <Attributname> <Wert>
in der fhem.cfg und entsprechende Datenhaltung in FHEM.
Damit könnte man sich Modulverhalten für alle Instanzen voreinstellen, wenn wo es sinnvoll und gewünscht ist.

Zur Nutzung müssten Entwickler nur statt dem bisherigen Vorgabewert den Instanzattributwert im AttrVal einsetzen.
Wäre natürlich Entwicklungsaufwand für alle Entwicker, aber einigermassen überschaubar. Und die Verwaltung solcher Attribute obläge dem Modulentwickler. Das ergäbe eine bessere Zuordnung und Übersichtlichkeit im Vergleich zu globalen Attributen.

Gruß, Ansgar.

rudolfkoenig

ZitatGibt es eigentlich Modulbezogene Attribute oder Gedanken dazu?
Nein bzw. nicht ausgereift. Das Problem mit deinem Vorschlag (was naheliegend ist) ist, dass Analog zu attr eine entsprechende "Infrastruktur" (Hilfsfunktionen, Frontend-Support) benoetigt wird. Ich hoffe auf eine geniale Idee, was ohne viel Zusatzaufwand auskommt.

noansi

Hallo Rudolf,

die Hilfsfunktionen scheinen mir erst mal das geringste Problem respektive der geringste Aufwand, da sehr ähnlich zu den normalen Attributen aufbaubar. Mit der Initialisierung müsste man noch regeln.

Die Frontend Unterstützung macht wohl mehr Aufwand, wenn sie vollständig sein soll. Könnte z.B. unter den normalen Attributen in jeder Entity Ansicht als Modulattribut sichtbar und editierbar gemacht werden. Dann wäre es auch ähnlich denke ich und keine extra Ansicht notwendig.

Gruß, Ansgar.