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 :)
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.
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;
}
}
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?
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.
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