@jwerlsdf Ich habe auch versucht, die Screens aus der VIS zu versenden, bin aber auch immer nur bis zum Loading Spinner gekommen. Nun habe ich nach einigen Stunden Herumprobieren eine Lösung gefunden, die sich allerdings nur in JavaScript umsetzen lässt. Die Lösung basiert auf der Verwendung von Chromium.
Zunächst wird das Tool Puppeteer benötigt. Dazu den Javascript Adapter öffnen und oben unter Module 'puppeteer' eintragen.
Anschließend muss Chromium headless installiert werden. Dies dient dazu, den Browser zu benutzen, als würde man tatsächlich davor sitzen. Die Vorgehensweise ist hier beschrieben:
https://code-flow-hjbello.blogspot.com/2018/11/make-puppeteer-work-with-raspbian-vers.html
Es können statt der dort angegeben Versionen optional auch die neuen installiert werden.
Anschließend kann Puppeteer genutzt werden. Hier z.B. mein Script, welches bei einer Telegram Nachricht mit einem Screenshot aus Vis antwortet:
on({id: "telegram.0.communicate.request", change: "any"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("telegram.0.communicate.request").val == '[Maboe]/screen') {
sendTo("telegram", "send", {
text: 'Alles klar - Ich erstelle das Bild! Einen Moment bitte ... Es wird ungefähr 25 Sekunden brauchen'
});
bild_pfad = '/opt/iobroker/charts/chart.png';
async function run () {
const browser = await puppeteer.launch({executablePath: '/usr/bin/chromium-browser'});
const page = await browser.newPage();
await page.goto('http://192.168.x.xxx:8082/vis/index.html?MatDesign#E_Home');
await sleep(20000)
await page.screenshot({path: bild_pfad});
browser.close();
}
run();
timeout = setTimeout(function () {
sendTo("telegram", "send", {
text: bild_pfad
});
}, 24000);
}
});
Angepasst werden müssen die Url (s. "goTo") sowie "[Maboe]/screen" (Telegram Nutzernamen + Kommando des Users). Den trigger aus dem originalen Blockly nutze ich nicht, da ich nur eine Vis-View abfrage.
Wenn ich mit meinem Handy (Nutzer Maboe) nun die Nachricht "/screen" schicke, bekomme ich den Screenshot.