FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jackie am 10 November 2017, 16:15:05

Titel: SVGs vom Plot abspeichern und hochladen
Beitrag von: Jackie am 10 November 2017, 16:15:05
Hallo,

ich würde gerne die SVGs, die FHEM aus den .gplot-Dateien meiner Logs erstellt, auf einen CLoudspeicher hochladen. Dazu müsste ich aber wissen, wo fhem diese ablegt, bzw. wo fhem den html-output generiert. Alternativ wäre auch denkbar, ein PNG aus den Daten zu generieren. Wo finde ich die Bilder als SVG, bzw. wie stelle ich das an?

Außerdem möchte ich, dass fhem in definierten Zeitabständen einen Befehl für den Upload auf der Kommandozeile unter Linux ausführt. Wie geht das?

Danke, Jackie :)
Titel: Antw:SVGs vom Plot abspeichern und hochladen
Beitrag von: Deudi am 11 November 2017, 12:04:35
Plots als png erzeugen mache ich unter fhem mit einer perl function z.B. so:


#
# Plot der Jahresprognose um 00:00:01
#
sub Plot_Strom_Prognose {
  # FORK
  my  $pid = fork();
  if ($pid) {
    # Parent
  } elsif ($pid == 0) {
    # Child
    #
    # Schreibe Plot Prognose
    #
    # nice 10 setzen
    setpriority(0,0,10);
    open FILE, "> /opt/fhem_plots/stromsensor_prog.png";
    binmode FILE;
    print FILE plotAsPng("SVG_FileLog_Stromsensor_2");
    close FILE;
    exit 0;
    #
  } else {
    # Unable to fork
    Log 3, "Plot_Strom_Prognose: Fork fehlgeschlagen!";
  }
}


Sollte selbsterklärend sein. Wie du das dann in deine Cloud bekommst, kann ich dir leider nicht sagen.
Titel: Antw:SVGs vom Plot abspeichern und hochladen
Beitrag von: Deudi am 11 November 2017, 12:32:27
Oops, habe eine alte Version hochgeladen. Die funktioniert zwar prinzipiell, jedoch ist das Error-Handling falsch. Hier die aktuelle Version:


#
# Plot der Jahresprognose um 00:00:01
#
sub Plot_Strom_Prognose {
  # FORK
  my  $pid = fork();
  if (!defined $pid) {
    # Unable to fork
    Log 3, "Plot_Strom_Prognose: Fork fehlgeschlagen!";
  } elsif ($pid == 0) {
    # Child
    #
    # Schreibe Plot Prognose
    #
    # nice 10 setzen
    setpriority(0,0,10);
    open FILE, "> /opt/fhem_plots/stromsensor_prog.png";
    binmode FILE;
    print FILE plotAsPng("SVG_FileLog_Stromsensor_2");
    close FILE;
    exit 0;
  }
}
Titel: Antw:SVGs vom Plot abspeichern und hochladen
Beitrag von: Jackie am 11 November 2017, 13:42:55
Danke Deudi, das Tool zum Upload in die Cloud habe ich schon :)

Eine Anfängerfrage habe ich noch: in welche Datei  trage ich die Perl Funktion ein, in die fhem.cfg? Und wo dort genau?
Titel: Antw:SVGs vom Plot abspeichern und hochladen
Beitrag von: Deudi am 11 November 2017, 15:08:57
in die 99_myUtils.pm. Die musst du erst selbst anlegen:
https://wiki.fhem.de/wiki/99_myUtils_anlegen (https://wiki.fhem.de/wiki/99_myUtils_anlegen)
Dann kannst du die Funktion z.B. aus einem at heraus aufrufen.
Titel: Antw:SVGs vom Plot abspeichern und hochladen
Beitrag von: Prof. Dr. Peter Henning am 11 November 2017, 21:12:45
Das direkte Plotten im PNG-Format ist aber wesentlich weniger flexibel als der Weg über SVG.

Zur Umwandlung einer SVG-Datei in ein PNG nimmt man idealerweise stattdessen das Programm Inkscape, das sich prima per Skript im Kommandozeilenmodus starten lässt. Läuft bei mir jeweils kurz vor Mitternacht über alle Grafiken.
Habe ich in den SmartHome Hacks auf S. 93 beschrieben, und irgendwo hier im Forum ist es auch gepostet.

LG

pah