SVGs vom Plot abspeichern und hochladen

Begonnen von Jackie, 10 November 2017, 16:15:05

Vorheriges Thema - Nächstes Thema

Jackie

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 :)
Raspi 3 mit FHEM, LWZ 304 Trend, Fronius Symo 10.0-3-M, Conbee II Stick, Optokoppler (USB, FTDI), diverse Ikea Tradfri Komponenten,...

Deudi

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.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Deudi

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;
  }
}
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Jackie

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?
Raspi 3 mit FHEM, LWZ 304 Trend, Fronius Symo 10.0-3-M, Conbee II Stick, Optokoppler (USB, FTDI), diverse Ikea Tradfri Komponenten,...

Deudi

#4
in die 99_myUtils.pm. Die musst du erst selbst anlegen:
https://wiki.fhem.de/wiki/99_myUtils_anlegen
Dann kannst du die Funktion z.B. aus einem at heraus aufrufen.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Prof. Dr. Peter Henning

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