zur Info: Ab Grafana V7.x wird PhantomJS nicht mehr offiziell unterstützt:
https://grafana.com/docs/grafana/latest/administration/image_rendering/
Ich habe das daher wie empfohlen mit einem separaten Docker Container umgesetzt:
Diesen Docker Container zusätzlich implementieren:
https://hub.docker.com/r/grafana/grafana-image-renderer
Im Grafana-Container dieses Environment setzen:
https://github.com/grafana/grafana-image-renderer/blob/master/docs/remote_rendering_using_docker.md
GF_RENDERING_SERVER_URL: http://<IP Renderer>:<PORT Renderer>/render
GF_RENDERING_CALLBACK_URL: http://<IP Grafana>:<PORT Grafana>/
GF_LOG_FILTERS: rendering:debug
Link für Grafik ermitteln unter Panel/Share/Direct link rendered image
Das Bild erzeuge ich dann via JavaScript und lege es in 0_userdata.0 ab damit es vom iobroker genutzt werden kann:
const LogLevel = 'warn';
const fs = require('fs');
function GetGrafanaBild(pPic, pURL) {
const GrafanaBild = 'iobroker-data/files/0_userdata.0/tmp/' + pPic;
const GrafanaURL = 'http://<IP+PORT Garafana>/render/d-solo/' + pURL;
request.get({url: GrafanaURL, encoding: "binary"},function(error,response,body){
fs.writeFile(GrafanaBild, body, "binary", function(err){
if (err) log('Fehler beim Bild speichern: ' + err, 'warn');
var vFileContent = fs.readFileSync(GrafanaBild);
writeFile('0_userdata.0', pPic, vFileContent, function (error) {
if (err) log('Fehler beim Bild kopieren: ' + err, 'warn');
else log('Grafana Rendering Bild ' + pPic + ' abgeschlossen', LogLevel);
});
});
});
}
GetGrafanaBild('GrafanaRender_TEST1.png', 'hRtUTVaGk/heizung-temp?orgId=1&from=now-6h&to=now&var-Raum=All&panelId=2&width=300&height=200');
Habe allerdings irgendwo gelesen, dass die Lösung mit dem Container für Rasberry's zu CPU-intensiv ist. Auf der Synology funktioniert es einwandfrei.