[Gelöst] Plot via plotAsPng als File speichern

Begonnen von jle, 08 August 2018, 21:50:27

Vorheriges Thema - Nächstes Thema

jle

Hallo alle,

wahrscheinlich eine total Einfach-Frage, aber ich komme einfach nicht darauf..

Ich möchte gerne in einer 99_myUtils - Funktion einen Plot via plotAsPng als PNG umwandeln und anschließend als png-Datei lokal ablegen.

plotAsPng Funktioniert, aber wie bekomme ich das ,,Ergebis" in eine Datei geschrieben?

Bin für jede Hilfe dankbar.

Viele Grüße

jle

Aktueller Lösungsansatz war ..
sub CreateRobiSvgPng(){
   my $out_file_name ="httpsrv/robi_svg.png";
   open (DATEI, ">".$out_file_name) or die $!;
    my $zeile = plotAsPng("RoombaPlot");
    print DATEI $zeile;
   close (DATEI);

   return $out_file_name;
}


Es wird auch eine Datei angelegt, aber sie ist anschließend leer..
Schreibrechte etc sind vorhanden.

betateilchen


sub test {
open(my $out, '>:raw', './log/test.png') or die "Unable to open: $!";
print $out plotAsPng('SVG_dbLog_2');
close($out);
}



  • falsches Unterforum für die Frage
  • zu wenig Doku (perl) gelesen :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jle


Peter aus Calw

Hallo zusammen,
bin zwar ziemlich spät auf das Thema gekommen, aber vielleicht kann ich doch auf Hilfe hoffen.
Versuche mein

SVG_FileLog_PV_Ertrag_1           Plot in eine .png Datei zu speichern um diese auf einem NAS abzulegen

und sie jederzeit auf anderen Geräten öffnen zu können. Mit einem händischen screenshot ist das ja kein Problem - aber es soll automatisch funktionieren.
Habe das auf der FHEM Kommandozeile mit

plotAsPng(SVG_FileLog_PV_Ertrag_1)

versucht -kommt der Fehler :

Unknown command plotAsPng(SVG_FileLog_PV_Ertrag_1)

Bin zwar ziemlich unbedarft in Sachen Programmierung, aber es macht mir viel Spass und deshalb hoffe ich auf einen Tipp.
Beste Grüße von Peter aus Calw 

h002

#5
@Peter aus Calw
Eine Lösung hat doch betateilchen gepostet. Die Sub muss "nur" an geeigneter Stelle eingebaut werden.

Ich habe es so gemacht (Sub in 99_myUtils.pm hinterlegen).


sub saveSVGToPNG(@){
my ($plotName) = @_;
open FILE, "> /opt/fhem/fhem_png_plots/$plotName.png";
binmode FILE;
print FILE plotAsPng($plotName);
close FILE;
}


Damit kannst du auf der Webconsole in FHEM mittels

{saveSVGToPNG("SVG_FileLog_PV_Ertrag_1")}

dein PNG abspeichern.

betateilchen

Zitat von: Peter aus Calw am 05 Oktober 2020, 23:47:00
Unknown command plotAsPng(SVG_FileLog_PV_Ertrag_1)

plotAsPng() ist kein Befehl, sondern eine perl Funktion und muss dementsprechend benutzt werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Peter aus Calw

Hallo h002, Hallo Betateilchen,
erstmal herzlichen Dank für eure Antworten. Habe rnun versucht den Vorschlag von h002 umzusetzen.
Also das "sub" so versucht anzupassen (.

sub saveSVGToPNG(@){
my ($PLSVplot) = @_;
open FILE, "> /opt/fhem/fhempng/$PLSVplot.png";
binmode FILE;
print FILE plotAsPng($PLSVplot);
close FILE;
}


nach

{saveSVGToPNG("SVG_FileLog_PV_Ertrag_1")}

als Ergebnis wird das Plot angezeigt (zwar nach links verschoben), aber ich finde die "PLSVplot.png" File unter "/opt/fhem/fhempng/" nicht ?
Wo habe ich Mist gebaut ?
LG Peter
 




Frank_Huber

Existiert das Verzeichnis?
Wie sind die Rechte?
Was sagt das Logfile?

Peter aus Calw

Hallo Frank,
hatte /opt/fhem/fhempgn statt fhempng geschrieben und anschliessend die Berechtigung auf "chown fhem:dialout" gesetzt und dann :

tata

es funktioniert  :) :D :)

besten Dank für die Unterstützung die im FHEM-Forum immer klasse ist - auch für Grufties um die 75.
Ein super Dankeschön von Peter aus Calw

betateilchen

Zitat von: Peter aus Calw am 06 Oktober 2020, 18:08:00
Habe rnun versucht den Vorschlag von h002 umzusetzen.
Also das "sub" so versucht anzupassen

Das was Du da abgeschrieben hast, ist aber "alte" perl Syntax, mit der Du in absehbarer Zeit Probleme mit neueren perl Versionen bekommen könntest.
Solche Konstrukte (der Teil von open bis close) werden irgendwann von perl nicht mehr unterstützt.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Peter aus Calw

Hallo Betateilchen danke für den Tipp,
wie könnte ich denn das dann entsprechend anpassen bzw. auf den nötigen Level bringen ?
Habe mich ja mächtig gefreut, daß es endlich funktioniert. Was mich noch etwas wundert(stört), daß beim öffnen der .png Datei im Background ein Karomuster hinterlegt ist - könnte man das irgendwo ändern ?
Freue mich auf Deinen Rat.
LG Peter

betateilchen

Zitat von: Peter aus Calw am 06 Oktober 2020, 20:33:37
wie könnte ich denn das dann entsprechend anpassen bzw. auf den nötigen Level bringen ?

ich habe doch weiter oben schon vor langer Zeit einen Lösungsvorschlag gepostet.

https://forum.fhem.de/index.php/topic,90083.msg825495.html#msg825495
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

h002

Zitat von: betateilchen am 06 Oktober 2020, 19:04:38
ist aber "alte" perl Syntax, mit der Du in absehbarer Zeit Probleme mit neueren perl Versionen bekommen könntest.
Wo finde ich dazu Informationen? Danke dir!

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!