FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Blackmore am 06 Juli 2015, 13:36:46

Titel: Plots per Mail/WhatsApp etc versenden
Beitrag von: Blackmore am 06 Juli 2015, 13:36:46
hi,

ich hab mir einen Plot erstellt, welcher mir alle mir wichtigen Temperaturen zeigt...

nun möchte ich diesen Plot gerne per WhatsApp verschicken lassen...

eigene Bilder und Nachrichten kann ich schon direkt verschicken...

aber wie mache ich das mit den Plots, die ja beim Seitenaufruf dynamisch erzeugt werden???

Danke für Eure Hilfe...

Gruß Blacky
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 06 Juli 2015, 13:41:49
Hallo Blacky,

erster Ansatz:
- RSS definieren (siehe hierzu das sehr gute Tutorial von Betateilchen im Forum - http://forum.fhem.de/index.php/topic,22520.0.html)
- Über ein AT das RSS als JPEG abrufen und dann über WhatsApp versenden.

Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 06 Juli 2015, 16:51:43
Hallo Blacky,

habe jetzt mal etwas gebastelt. In die 99_myUtils muss folgender Code:

sub Plot2JPEG($$) {

  use GD;

  my ($myPlot, $myFile) = @_;

  my $pngImg = plotAsPng($myPlot);

  if(!defined($pngImg) or ($pngImg eq "")) {
    Log3 "Plot2JPEG", 2, "Plot2JPEG: error while creating image from $myPlot";
    return;
  };

  my $image = GD::Image->newFromPngData($pngImg) or die Log3 "Plot2JPEG", 2, "Plot2JPEG: error while creating GD::Instance from $myPlot";

  my $jpeg = $image->jpeg;

  open (FILE, ">" . $myFile) or die Log3 "Plot2JPEG", 2, "Plot2JPEG: error while openeing " . $myFile;
  print FILE $jpeg;
  close (FILE);

  Log3 "Plot2JPEG", 2, "Plot2JPEG: jpeg image created from $myPlot in " . $myFile;

  return;
}


In Fhem kannst Du dann folgendes definieren:

Ein neues Device, dass jede Minute aufgerufen wird
define PlotWhatsApp at +*00:01:00 { }

Im DEF des Diveces trägst Du dann zwischen den { } folgendes ein:

Plot2JPEG("Name des Plots", "/opt/fhem/log/wetter.jpg");
fhem("set WhatsAppDevice image /opt/fhem/log/wetter.jpg");

Grüße Jörg


Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Blackmore am 07 Juli 2015, 19:58:59
bei myUtils kommt dann folgende Meldung:

Can't locate GD.pm in @INC (you may need to install the GD module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/99_myUtils.pm line 14. BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 14.


was muss ich da nachinstallieren???

::EDITH::
Damit gehts jetzt:
sudo apt-get install libgd2-xpm-dev libgd-graph-perl libgd-text-perl libimage-librsvg-perl libxml-simple-perl

Jedoch im Moment noch nur ein schwarzes BIld... ich gucke weiter...

::EDITH2::
jetzt sehe ich die Kurve, jedoch ohne x/y-Achsenbeschriftung, etc pp...
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 07 Juli 2015, 20:10:26
sudo apt-get install libgd-graph-perl
sudo apt-get install libgd-text-perl - optional, aber dringend empfohlen, wenn Du auch irgendwann RSS benutzen möchtest
sudo apt-get install libimage-librsvg-perl - optional, aber dringend empfohlen, wenn Du auch irgendwann RSS benutzen möchtest


Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 12 Januar 2016, 18:58:11
Hallo, bei mir funktioniert das mit dem Plot2Jpeg wunderbar.
Ich bekomme jetzt aber jedesmal einen Eintrag ins Log, kann ich dies irgendwie unterbinden ?

Grüße Marcel
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 12 Januar 2016, 19:05:44
Zitat von: Ma_Bo am 12 Januar 2016, 18:58:11
Hallo, bei mir funktioniert das mit dem Plot2Jpeg wunderbar.
Ich bekomme jetzt aber jedesmal einen Eintrag ins Log, kann ich dies irgendwie unterbinden ?

Grüße Marcel

Hallo,

ändere folgende Codezeile

Log3 "Plot2JPEG", 2, "Plot2JPEG: jpeg image created from $myPlot in " . $myFile;


in


Log3 "Plot2JPEG", 4, "Plot2JPEG: jpeg image created from $myPlot in " . $myFile;


Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 12 Januar 2016, 19:08:40
Danke
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 13 Januar 2016, 15:45:14
Und gleich noch ein paar Fragen.

Ist es möglich, die Beschriftung, welche am Rand des Plot´s zu sehen ist, mit in dieses Bild zu bekommen ?
Kann man auch mehrere Plot´s als ein Bild zusammenfügen ?
Kann man den plot auch so einstellen, dass er nicht von 0 bis 0 Uhr anzeigt, sondern von der aktuellen Zeit und dann 24 Stunden zurück ?
Evtl. auch eine "Zoomstufe" ?

Grüße Marcel
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 13 Januar 2016, 19:42:17
Zitat von: Ma_Bo am 13 Januar 2016, 15:45:14
Ist es möglich, die Beschriftung, welche am Rand des Plot´s zu sehen ist, mit in dieses Bild zu bekommen ?
Die Beschriftung wird doch mitgenommen. Ist ja auch Bestandteil des Plots.

Zitat von: Ma_Bo am 13 Januar 2016, 15:45:14
Kann man auch mehrere Plot´s als ein Bild zusammenfügen ?
Keine Ahnung.

Zitat von: Ma_Bo am 13 Januar 2016, 15:45:14
Kann man den plot auch so einstellen, dass er nicht von 0 bis 0 Uhr anzeigt, sondern von der aktuellen Zeit und dann 24 Stunden zurück ?
Hierfür gibt es für jeden Plot die Attribute endPlotNow, endPlotToDay

Zitat von: Ma_Bo am 13 Januar 2016, 15:45:14
Evtl. auch eine "Zoomstufe" ?
Du kannst für jeden definierten Plot das Attribut plotsize setzen

Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 15:32:39
Also bei mir wird die Beschriftung, welche im Plot steht nur angezeigt, die Uhrzeit und die Einheit bzw. der Wert, welcher rechts und links neben dem Plot steht, wird nicht angezeigt.

Ok, mit den Plot Attributen beschäftige ich nicht jetzt mal.
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 16:52:55
Hier kann man sehen, dass keine Beschriftung dabei ist.
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 14 Januar 2016, 18:16:13
Hallo,

sieht bei mir anders aus.

Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: mahowi am 14 Januar 2016, 18:17:39
Also bei mir sieht das Bild genauso aus wie der Plot in fhem.

Meine DEF für den Versand sieht genauso aus wie von Jörg beschrieben:
+*03:00:00 {
Plot2JPEG("max_tempchart", "/opt/fhem/log/maxtemp.jpg");
fhem("set S5 image /opt/fhem/log/maxtemp.jpg");
}

Den Code für die myUtils habe ich auch von ihm übernommen.
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 18:22:11
Ist die Schrift bei dir in fhem, wenn du über WEB nachschaust, auch in weiß? Also die Zeitbeschreibung usw...
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 14 Januar 2016, 18:26:51
Hallo,

poste doch mal bitte die Definition Deines Plots. Ohne das können wir weiter nur raten.

Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 18:30:01
Das ist die DEF meines SVG:
FileLog_Rehau_CO20_Sensor:SVG_FileLog_Rehau_CO20_Sensor_1:CURRENT
Das steht in der Plot Datei :
# Created by FHEM/98_SVG.pm, 2016-01-13 16:09:27
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 title '<L1>'
set ytics
set y2tics ("Gut" 1000,"OK" 1500,"Mies" 2000)
set grid y2tics
set ylabel "Luftqualität"
set y2label "Luftqualität"
set yrange [0:3000]
set y2range [0:3000]

#FileLog_Rehau_CO20_Sensor 4:Rehau_CO20.voc\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Luftqualität (ppm)' ls l0fill_gyr lw 1 with lines


Ich vermute eher es liegt an der svg_style.css , da ich hier auch die Größe der Schrift ändern kann, aber ich bekomme die Farbe der Schrift nicht geändert.

Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 14 Januar 2016, 18:32:22
Ich meinte eher einen Screenshot von der Übersicht in Fhem, wenn Du die Plotdefinition aufrufst. Hast Du die svg_style.css verändert? Wenn ja, dann bitte auch mal posten.

Grüße Jörg

Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 18:33:43
Hier das was in der css steht :
.background { fill:#FFFFE7; }

text       { font-family:Times; font-size:15px; }
text.title { font-size:16px; }
text.legend { cursor:pointer; }
circle#svgmarker { color:#278727; opacity:0.5; }

path.SVGplot     { stroke:black; fill:none; }
rect.SVGplot     { stroke:black; fill:none; }
polyline.SVGplot { stroke:black; fill:none; }
.border  { stroke:black; fill:url(#gr_bg); }
.vgrid   { stroke:gray;  stroke-dasharray:2,6; }
.hgrid   { stroke:gray;  stroke-dasharray:2,6; }
.pasted  { stroke:black; stroke-dasharray:1,1; }

.SVGplot.l0     { stroke:red;     }
.SVGplot.l1     { stroke:green;   }
.SVGplot.l2     { stroke:blue;    }
.SVGplot.l3     { stroke:magenta; }
.SVGplot.l4     { stroke:brown;   }
.SVGplot.l5     { stroke:black;   }
.SVGplot.l6     { stroke:olive;   }
.SVGplot.l7     { stroke:gray;    }
.SVGplot.l8     { stroke:yellow;  }
.SVGplot.l0fill { stroke:#f00; fill:url(#gr_0); }
.SVGplot.l1fill { stroke:#291; fill:url(#gr_1); }
.SVGplot.l2fill { stroke:#00f; fill:url(#gr_2); }
.SVGplot.l3fill { stroke:#f0f; fill:url(#gr_3); }
.SVGplot.l4fill { stroke:#ff0; fill:url(#gr_4); }
.SVGplot.l5fill { stroke:#0ff; fill:url(#gr_5); }
.SVGplot.l6fill { stroke:#000; fill:url(#gr_6); }
.SVGplot.l0dot  { stroke:red;   stroke-dasharray:2,4; }
.SVGplot.l1dot  { stroke:green; stroke-dasharray:2,4; }
.SVGplot.l0fill_stripe { stroke:red; fill:url(#gr0_stripe);}
.SVGplot.l1fill_stripe { stroke:green; fill:url(#gr1_stripe);}
.SVGplot.l0fill_gyr    { stroke:red; fill:url(#gr0_gyr);}

text.SVGplot.l0     { stroke:none; fill:red;     }
text.SVGplot.l1     { stroke:none; fill:green;   }
text.SVGplot.l2     { stroke:none; fill:blue;    }
text.SVGplot.l3     { stroke:none; fill:magenta; }
text.SVGplot.l4     { stroke:none; fill:brown;   }
text.SVGplot.l5     { stroke:none; fill:black;   }
text.SVGplot.l6     { stroke:none; fill:olive;   }
text.SVGplot.l7     { stroke:none; fill:gray;    }
text.SVGplot.l8     { stroke:none; fill:yellow;  }
text.SVGplot.l0fill { stroke:none; fill:#f00;    }
text.SVGplot.l1fill { stroke:none; fill:#291;    }
text.SVGplot.l2fill { stroke:none; fill:#00f;    }
text.SVGplot.l3fill { stroke:none; fill:#f0f;    }
text.SVGplot.l4fill { stroke:none; fill:#ff0;    }
text.SVGplot.l5fill { stroke:none; fill:#0ff;    }
text.SVGplot.l6fill { stroke:none; fill:#000;    }
text.SVGplot.l0dot  { stroke:none; fill:red;     }
text.SVGplot.l1dot  { stroke:none; fill:green;   }
text.SVGplot.l0fill_stripe {stroke:none; fill:red;  }
text.SVGplot.l1fill_stripe {stroke:none; fill:green;}
text.SVGplot.l0fill_gyr    {stroke:none; fill:red;  }
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 14 Januar 2016, 18:43:11
Hallo,

habe bei mir nur einen Unterschied in der 1. text Zeile. Anstatt 15px 12px. Mit 15px funktioniert es bei mir auch.

Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 18:48:11
Dein Hintergrund ist aber auch ganz anders als meiner, deiner eher so weiß und meiner ins gelbliche.
Irgendeine css muss das sein. Aber welche.

15px habe ich eingestellt.
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: mahowi am 14 Januar 2016, 18:52:09
Ja, die Schrift ist bei mir im fhem auch weiß. Das liegt eventuell an stylesheetPrefix dark
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 14 Januar 2016, 18:54:19
Ich habe eine Idee, aber noch keine Lösung. Die Seitenbeschriftung Deiner Plots ist Schwarz, beim generieren des jpeg wird ein schwarzer Hintergrund (ersichtlich an der schwarzen Umrandung) gewählt. Schwarzer Hintergrund und schwarze Schrift ergibt halt "Geheimschrift". Eine Lösung habe ich allerdings noch nicht.

Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 18:56:03
Jörg, genau das versuche ich zu finden, aber ich bekomme die Schrift nicht andersfarbig. bzw. weiss ich nicht in welchem css die Farbe definiert ist, ich versuche gerade das herauszufinden.
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 14 Januar 2016, 18:57:54
Die Schrift wird glaube ich im Style des FhemWeb definiert. Wähle doch mal das dark Style.

Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 19:01:56
Ja, dann funktioniert es, aber warum funktioniert es nicht, wenn ich garkein StylesheetPrefix angebe ? Weiss zufällig jemand wie der "Default" StylesheetPrefix heisst ?
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: mahowi am 14 Januar 2016, 19:03:03
Versuch es mal mit text { font-family:Arial, Helvetica, sans-serif; font-size:12px; fill:#CCCCCC;}
text.title {font-family:Arial, Helvetica, sans-serif; font-size:16px; fill:#CCCCCC;}

in /opt/fhem/www/pgm2/svg_style.css.
Das ist "light gray" und so in der darksvg_style.css vorgegeben.
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 19:04:39
Danke ! mahowi

ich habe immer versucht color:white oder sonst was, aber es muss fill:#xxxxxx heissen.
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 14 Januar 2016, 19:22:38
Zitat von: mahowi am 14 Januar 2016, 19:03:03
Versuch es mal mit text { font-family:Arial, Helvetica, sans-serif; font-size:12px; fill:#CCCCCC;}
text.title {font-family:Arial, Helvetica, sans-serif; font-size:16px; fill:#CCCCCC;}

in /opt/fhem/www/pgm2/svg_style.css.
Das ist "light gray" und so in der darksvg_style.css vorgegeben.

Ich habe das mal ins Wiki übernommen: http://www.fhemwiki.de/wiki/Creating_Plots#Changing_text_style

Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 14 Januar 2016, 19:29:54
Was mir jetzt noch fehlt ist eine Internetseite, welche ich als WEBLINK IFRAME eingebunden habe, die als .jpg Datei gespeichert wird ("screenshot").
Aber ich glaube dafür mache ich ein neues Thema auf. Oder hat da jemand spontan ne gute Idee ?
Was natürlich noch viel besser wäre, einen Screenshot eines Floorplans und diesen als .jpg speichern. ;)

Bei mir reicht es übrigens nur text { font-family:Arial, Helvetica, sans-serif; font-size:12px; fill:#CCCCCC;} zu ändern, dann ändert sich die Überschrift direkt mit. Es sei denn, man möchte auch die Überschrift in einer anderen Farbe haben, dann muss man die andere Zeile auch ändern.
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: JoWiemann am 14 Januar 2016, 19:41:04
Definiere Dir ein RSS für Fhem und binde die Seite dort ein. Dann kannst Du mit wget das RSS als jpeg holen und versenden. Alternativ habe ich mal ein verändertes RSS Modul gepostet, dass das RSS als jpeg holt für den Versand in WhatsApp.

http://forum.fhem.de/index.php/topic,35812.msg313538.html#msg313538

Grüße Jörg
Titel: Antw:Plots per Mail/WhatsApp etc versenden
Beitrag von: Ma_Bo am 16 Januar 2016, 09:43:21
Ich habe mir jetzt folgendes installiert, wkhtmltoimage-amd64, damit kann man eine html Seite (mein Floorplan) in ein jpeg umwandeln und sich dann per WhatsApp zuschicken.

Nun habe ich aber das Problem, dass im Log bei jedem konvertieren folgende Einträge kommen

Loading page (1/2)
[>                                                           ] 0%
[======>                                                     ] 10%
[=======>                                                    ] 12%
[=========>                                                  ] 16%
[===============>                                            ] 26%
[==================>                                         ] 30%
[=====================>                                      ] 35%
[======================>                                     ] 37%
[======================>                                     ] 38%
[========================>                                   ] 40%
[===========================>                                ] 45%
[=================================>                          ] 55%
[=======================================>                    ] 65%
[==============================================>             ] 77%
[==============================================>             ] 78%
[================================================>           ] 80%
[=================================================>          ] 82%
[===================================================>        ] 85%
[====================================================>       ] 88%
[============================================================] 100%
Rendering (2/2)                                                   
[>                                                           ] 0%
[===============>                                            ] 25%
[============================================================] 100%
Done


Jemand eine Idee, wie ich die Einträge im Log unterdrücken kann ?

der Befehl wird wie folgt aufgerufen

define Test_Aufruf at +*00:10:00 "wkhtmltoimage-amd64 http://192.xxx.xxx.xx:8083/fhem/floorplan/Testseite /opt/fhem/floorplan2jpeg/Testseite.jpg"

Wer sich das Tool installieren möchte, auf dieser Seite hab ich alle Infos bekommen :  http://www.phpgangsta.de/tag/wkhtmltoimage

für mich musste ich wohl die 64bit version installieren, da mein System auf einem NUC läuft.

wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2
tar -xjvf wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2
sudo mv wkhtmltoimage-amd64 /usr/local/bin/


einen ersten Test in der Console mit

wkhtmltoimage-amd64 http://www.google.de /opt/fhem/google.jpg

sollte dann ein Bild mit dem Namen : google.jpg in eurem Ordner fhem erzeugen. Jetzt kann man auch nen Floorplan als Bild speichern oder irgendeine beliebige Internetseite.

ACHTUNG ! der Zugang über den Port 8083 muss ohne Passwort sein (oder einen anderen Port nehmen, der ohne Passwort funktioniert), ich habe bisher noch nicht rausgefunden ob es auch irgendwie mit Passwort geht
wkhtmltoimage-amd64 http://192.xxx.xxx.xx:8083/fhem/floorplan/Test /opt/fhem/Testfloorplan.jpg