ich habe mir ein Skript gebaut, welches es mir erlaubt Screenshots von Flot-Charts (eigentlich jeder beliebigen Website) per Telegramm zu verschicken. Eigentlich ist hierfür ja der PhantomJS Adapter gedacht, allerdings hatte ich es nicht geschafft diesen auf meinem Raspi4 (headless) zum Laufen zu bewegen.
Bitte versteht das Skript lediglich als Anregung - ich bin für Verbesserungen oder vielleicht sogar einer Adapterentwicklung auf dieser Basis dankbar! Ich habe ein Raspian auf meinem Pi laufen und habe es auch nicht mit anderen OS getestet.
Da unser Ziel ja das Erstellen von Screenshot unseres Flot-Adapters ist, habe ich noch ein "--delay=20000" eingefügt. Dadurch hat der Graph genügend Zeit zu laden und wir bekommen nicht nur ein Screenshot des Ladesymbols des Flot-Graphen.
Ab hier kann natürlich jeder selbst weitermachen und sich über Speicherorte oder ähnliches seine eigenen Gedanken machen. Ich für meinen Teil habe als --out erstmal einen neuen Ordner unter /opt/iobroker/charts erstellt (auf Userrights achten!). Ich habe ferner über Text2Command eine Regel erstellt, welche mir in einen definierten Datenpunkt einen Text schreibt, welcher definiert welches Diagramm ich geschickt bekommen möchte. So kann ich zum Beispiel schreiben: "Zeig mir den Verbrauch" und bekomme das Bild des Plot-Charts meines Smart-Meters. Ich nutze dabei eine "Schreibe Text in den Zustand" Regel mit dem Triggerwort "Zeig mir".
Diesen nun durch Text2Command gesetzten Datenpunkt nutze ich in einem Blockly-Script zur Bestimmung der Ziel URL. Ich habe diesen Datenpunkt im folgenden Blockly-Export als Platzhalter mit "trigger" bezeichnet.
Natürlich sind hier noch viele Anpassungen zu machen und es ist sicherlich weit weg von perfekt, aber für mich erfüllt dieses Script alle Anforderungen und ich dachte es ist nicht verkehrt dieses hier zu teilen.
Wichtige Anpassungen:
Ihr müsst im Trigger die korrekte ObjektID abfragen (ich gehe davon aus, dass grundlegende Blockly Kenntnisse da sind) und diese auch etwas später im Ablauf nochmal einsetzen (ist wieder mit einem Text-Block "trigger" markiert)
Ihr müsst den Platzhalter der Flot-Chart URL durch eine richtige URL ersetzten. Diese bekommt Ihr wie immer aus dem Flot-Editor. Achtet bitte darauf die scheinbar doppelten Anführungszeichen beizubehalten. Sprich aus "URL aus Flot" wird wieder "URL" inklusive der sonst eigentlich überflüssigen Anführungszeichen.
Solltet Ihr mehrere Charts abfragen wollen muss lediglich das If-else Statement um ein if erweitert werden (Zahnrad im Block).
Dann solltet Ihr das ganze per Nachricht über Telegramm auslösen können. Ich freue mich auf Rückmeldungen!
Hi, hast du mal versucht den Befehl im Terminal auszuführen ? Danach sollte ein Bild in dem von dir gewählten Pfad liegen. Dann wüssten wir zumindest, dass dieser Teil funktioniert. Ich tippe hier ist noch was falsch.
Das zerstückeln der URL sollte eigentlich durch die Anführungszeichen verhindert werden... Genau aus dem Grund musste ich die auch anfügen (wie du ja auch selbst schreibst) ...
Ich habe bei meinem Flot kein https - vielleicht ist das ein Problem?
Der String den ich nutze sieht wie folgt aus:
"http://192. ...." danach folgen alle Einstellungen von flot (sehr lang). Hast du mal aus dem iobroker Skript heraus die debug-ausgabe ins terminal kopiert und ausgeführt?
Das ist komisch - ich hab die url immer direkt aus dem flot-Editor in die „“ kopiert. Klappt anstandslos im Terminal und auch über telegram bzw. IoBroker.
Da andere Websites gehen kann es ja auch kein Rechte-Problem mit dem Ordner sein...
Oder hast du die Ausführung hier anders gestartet? Hab bei mir noch chmod 700, chown iobroker und chgrp iobroker auf dem Speicherort ausgeführt.
Hast du an die Anführungszeichen um die url geachtet? Es hört sich für mich so an als würden die fehlen - ich weiß im Beispiel sind sie auch nicht und das klappt auch bei einfachen url. Die von flow klappen nur mit zusätzlichen „“ am Anfang und Ende.
ich habe mir ein Skript gebaut, welches es mir erlaubt Screenshots von Flot-Charts (eigentlich jeder beliebigen Website) per Telegramm zu verschicken. Eigentlich ist hierfür ja der PhantomJS Adapter gedacht, allerdings hatte ich es nicht geschafft diesen auf meinem Raspi4 (headless) zum Laufen zu bewegen.
Bitte versteht das Skript lediglich als Anregung - ich bin für Verbesserungen oder vielleicht sogar einer Adapterentwicklung auf dieser Basis dankbar! Ich habe ein Raspian auf meinem Pi laufen und habe es auch nicht mit anderen OS getestet.
Da unser Ziel ja das Erstellen von Screenshot unseres Flot-Adapters ist, habe ich noch ein "--delay=20000" eingefügt. Dadurch hat der Graph genügend Zeit zu laden und wir bekommen nicht nur ein Screenshot des Ladesymbols des Flot-Graphen.
Ab hier kann natürlich jeder selbst weitermachen und sich über Speicherorte oder ähnliches seine eigenen Gedanken machen. Ich für meinen Teil habe als --out erstmal einen neuen Ordner unter /opt/iobroker/charts erstellt (auf Userrights achten!). Ich habe ferner über Text2Command eine Regel erstellt, welche mir in einen definierten Datenpunkt einen Text schreibt, welcher definiert welches Diagramm ich geschickt bekommen möchte. So kann ich zum Beispiel schreiben: "Zeig mir den Verbrauch" und bekomme das Bild des Plot-Charts meines Smart-Meters. Ich nutze dabei eine "Schreibe Text in den Zustand" Regel mit dem Triggerwort "Zeig mir".
Diesen nun durch Text2Command gesetzten Datenpunkt nutze ich in einem Blockly-Script zur Bestimmung der Ziel URL. Ich habe diesen Datenpunkt im folgenden Blockly-Export als Platzhalter mit "trigger" bezeichnet.
Natürlich sind hier noch viele Anpassungen zu machen und es ist sicherlich weit weg von perfekt, aber für mich erfüllt dieses Script alle Anforderungen und ich dachte es ist nicht verkehrt dieses hier zu teilen.
Wichtige Anpassungen:
Ihr müsst im Trigger die korrekte ObjektID abfragen (ich gehe davon aus, dass grundlegende Blockly Kenntnisse da sind) und diese auch etwas später im Ablauf nochmal einsetzen (ist wieder mit einem Text-Block "trigger" markiert)
Ihr müsst den Platzhalter der Flot-Chart URL durch eine richtige URL ersetzten. Diese bekommt Ihr wie immer aus dem Flot-Editor. Achtet bitte darauf die scheinbar doppelten Anführungszeichen beizubehalten. Sprich aus "URL aus Flot" wird wieder "URL" inklusive der sonst eigentlich überflüssigen Anführungszeichen.
Solltet Ihr mehrere Charts abfragen wollen muss lediglich das If-else Statement um ein if erweitert werden (Zahnrad im Block).
Dann solltet Ihr das ganze per Nachricht über Telegramm auslösen können. Ich freue mich auf Rückmeldungen!
@paul53 Ich hab das Problem gefunden! Es tritt auf, wenn ich die Werte des Statistik-Adapters unter „Save“ und dann die Quartals und Jahreswerte speichern will mit dem sql Adapter. Nehme ich diese raus - geht alles wieder.
@paul53 Ich prüfe zur Sicherheit nochmal alle datenpunkte, welche ich mit dem sql Adapter aufzeichne ... nicht das ich was übersehen habe - glaube ich eigentlich nicht aber mal sehen. Gleichzeitig deaktiviere ich mal schritt für schritt das logging der datenpunkte und prüfe die Auswirkungen. Dann müsste ich den Schuldigen ja finden (ist zwar extrem viel nerviges klicken sehe im Moment aber keine anderen weg).
@Trident Danke auf jedenfalls für die Ideen - ich suche mal weiter. Ein großer Zahlen wert als value kann es ja nicht sein, oder? Was ich gemacht habe ist, dass ich Datentypen spezifisch definiert habe - also im Menü des sql Adapters.