Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Screenshot Flot-Charts über Telegram verschicken

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    279

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Screenshot Flot-Charts über Telegram verschicken

Scheduled Pinned Locked Moved ioBroker Allgemein
chartstelegramblockly
40 Posts 9 Posters 6.6k Views 13 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    Trident
    wrote on last edited by
    #1

    Hallo zusammen,

    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.

    Ich benutze CutyCapt zur Erstellung des Screenshots auf dem Pi. Hier der Link zu meiner Quelle: "https://www.booleanworld.com/take-screenshots-webpages-command-line/"

    Dieses muss zunächst installiert werden:

    sudo apt install cutycapt
    

    Im Anschluss muss noch xvfb installiert werden, damit das ganze auch auf dem headless Raspi läuft:

    sudo apt-get install xvfb
    

    Nach der Installation kann mit folgendem Befehl im Terminal ein Screenshot erzeugt werden:

    xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.demo.com --out=demo.png
    

    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.

    <xml xmlns="http://www.w3.org/1999/xhtml">
     <variables>
       <variable type="" id="6cp_tHf+sd$t./|]DROc">diagramm_id</variable>
       <variable type="" id="gG$:_H.M_]`[zNdN)^@w">command</variable>
       <variable type="" id="*s8;q5BO(sp,~ifMThmw">bild_pfad</variable>
       <variable type="" id="{Q-yD[N]I+YF1L,huglJ">chart_url</variable>
       <variable type="" id="#qCT?RTusEEh[DkoA|,j">ok</variable>
       <variable type="" id="-fS|s!CIM-cIu+}?OP;o">command_final</variable>
       <variable type="undefined" id="timeout">timeout</variable>
     </variables>
     <block type="on_ext" id="|{a#oCaG|:NIkPZHB?1C" x="63" y="263">
       <mutation items="1"></mutation>
       <field name="CONDITION">any</field>
       <field name="ACK_CONDITION"></field>
       <value name="OID0">
         <shadow type="field_oid" id="9.7lz@ww79]Qq~p=%ydx">
           <field name="oid">xxx</field>
         </shadow>
         <block type="text" id="19s8#FpF_9nR`@_Z:,/A">
           <field name="TEXT">trigger</field>
         </block>
       </value>
       <statement name="STATEMENT">
         <block type="telegram" id="4`^Ueh*!~odNg$~bOoe,">
           <field name="INSTANCE"></field>
           <field name="LOG"></field>
           <field name="SILENT">FALSE</field>
           <field name="PARSEMODE">default</field>
           <value name="MESSAGE">
             <shadow type="text" id="!@]k~(J@P26ZR)4$REg(">
               <field name="TEXT">Alles klar - Ich erstelle das Bild! Einen Moment bitte ... Es wird ungefähr 30 Sekunden brauchen</field>
             </shadow>
           </value>
           <next>
             <block type="variables_set" id="?OTAd7]U!D6.^4zBVaFt">
               <field name="VAR" id="6cp_tHf+sd$t./|]DROc" variabletype="">diagramm_id</field>
               <value name="VALUE">
                 <block type="text" id="=-Vm=Id33^dWIgT$fJOe">
                   <field name="TEXT">trigger</field>
                 </block>
               </value>
               <next>
                 <block type="variables_set" id="AlBNMxXfdw[[L~uT4IxkwI">
                   <field name="VAR" id="gG$:_H.M_]`[dfzNdN)^@w" variabletype="">command</field>
                   <value name="VALUE">
                     <block type="text" id="*v!*OWjQ,Afd|T!=t!H^mp">
                       <field name="TEXT">xvfb-run --server-args="-screen 0, 1024x768x24" cutycapt --delay=20000 --url=</field>
                     </block>
                   </value>
                   <next>
                     <block type="variables_set" id="@9d6|(-HdFvuvY#lS}=U">
                       <field name="VAR" id="*s8;q5BO(sp,~ifMThmw" variabletype="">bild_pfad</field>
                       <value name="VALUE">
                         <block type="text" id="c*ctHdB*U=lAFY6.Qz=Y">
                           <field name="TEXT">/opt/iobroker/charts/chart.png</field>
                         </block>
                       </value>
                       <next>
                         <block type="debug" id="Y*zoRtOz7fd}t#^=K}GdJb">
                           <field name="Severity">log</field>
                           <value name="TEXT">
                             <shadow type="text" id="WM,yr[5oek!Hl3YJ?jX6">
                               <field name="TEXT">test</field>
                             </shadow>
                             <block type="variables_get" id="net:Z_*fdBRih_Dhr~z/mP">
                               <field name="VAR" id="6cp_tHf+sd$t.fd/|]DROc" variabletype="">diagramm_id</field>
                             </block>
                           </value>
                           <next>
                             <block type="controls_if" id="L0=C;^fdcTdfwW][e`fi0TNA">
                               <mutation else="1"></mutation>
                               <value name="IF0">
                                 <block type="logic_operation" id="a=6RJdfsqa,s1B]tNx$un:">
                                   <field name="OP">OR</field>
                                   <value name="A">
                                     <block type="logic_compare" id="On+Va.jdNfdSX.Mg/pj#Yt">
                                       <field name="OP">EQ</field>
                                       <value name="A">
                                         <block type="variables_get" id="@%Z+^dfg*:bR%W,G%5qPvQ">
                                           <field name="VAR" id="6cp_tHf+sdfd$t./|]DROc" variabletype="">diagramm_id</field>
                                         </block>
                                       </value>
                                       <value name="B">
                                         <block type="text" id="b,gYuZ^fdO!Kl8Ccy17*nF">
                                           <field name="TEXT">Verbrauch</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="logic_compare" id=".4yS?{Oo,L86HCKA;c7C">
                                       <field name="OP">EQ</field>
                                       <value name="A">
                                         <block type="variables_get" id="cd9?Se#=f#z|Dbn9GeC=">
                                           <field name="VAR" id="6cp_tHf+sd$t./|]DROc" variabletype="">diagramm_id</field>
                                         </block>
                                       </value>
                                       <value name="B">
                                         <block type="text" id="G?=!TX!1ZN-/Qp9YU#rW">
                                           <field name="TEXT">den Verbrauch</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <statement name="DO0">
                                 <block type="variables_set" id="~,!=|@gO/K[CoRCAL,)5">
                                   <field name="VAR" id="{Q-yD[N]I+YF1L,huglJ" variabletype="">chart_url</field>
                                   <value name="VALUE">
                                     <block type="text" id="IuuCSe8Ch+M1fG6Mc$Ou">
                                       <field name="TEXT">"URL aus Flot"</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="variables_set" id="S5@^#,vLg;Or[8pTay~=">
                                       <field name="VAR" id="#qCT?RTusEEh[DkoA|,j" variabletype="">ok</field>
                                       <value name="VALUE">
                                         <block type="logic_boolean" id="3_}MeR~[ltu@3UVynFa}">
                                           <field name="BOOL">TRUE</field>
                                         </block>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                               </statement>
                               <statement name="ELSE">
                                 <block type="variables_set" id="+q=:v$8hge7cA(@Z(U8{">
                                   <field name="VAR" id="#qCT?RTusEEh[DkoA|,j" variabletype="">ok</field>
                                   <value name="VALUE">
                                     <block type="logic_boolean" id="iaZ8t`_0,?gAbIwvmg_{">
                                       <field name="BOOL">FALSE</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="telegram" id="%k}]k@r(qbFz?bzpm])*">
                                       <field name="INSTANCE"></field>
                                       <field name="LOG"></field>
                                       <field name="SILENT">FALSE</field>
                                       <field name="PARSEMODE">default</field>
                                       <value name="MESSAGE">
                                         <shadow type="text" id="AZWa~MJS#{EEk.eD:IR2">
                                           <field name="TEXT">Chart leider unbekannt</field>
                                         </shadow>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                               </statement>
                               <next>
                                 <block type="controls_if" id="aN-)23{uy9yc0q`zk;qD">
                                   <value name="IF0">
                                     <block type="variables_get" id="MD:Y|`t0qBRa6upKQ1}W">
                                       <field name="VAR" id="#qCT?RTusEEh[DkoA|,j" variabletype="">ok</field>
                                     </block>
                                   </value>
                                   <statement name="DO0">
                                     <block type="variables_set" id="q3t.]$M4Qk)]{c=uIl.N">
                                       <field name="VAR" id="-fS|s!CIM-cIu+}?OP;o" variabletype="">command_final</field>
                                       <value name="VALUE">
                                         <block type="text_join" id="VKHkUmFRE#6siFFX)QZA">
                                           <mutation items="4"></mutation>
                                           <value name="ADD0">
                                             <block type="variables_get" id="jg)_6$XS3o.JGs$[cH/u">
                                               <field name="VAR" id="gG$:_H.M_]`[zNdN)^@w" variabletype="">command</field>
                                             </block>
                                           </value>
                                           <value name="ADD1">
                                             <block type="variables_get" id="lRsR^rus#T+ZoT}OO4OC">
                                               <field name="VAR" id="{Q-yD[N]I+YF1L,huglJ" variabletype="">chart_url</field>
                                             </block>
                                           </value>
                                           <value name="ADD2">
                                             <block type="text" id="E)@zr,OSW]huo](!@xJ3">
                                               <field name="TEXT"> --out=</field>
                                             </block>
                                           </value>
                                           <value name="ADD3">
                                             <block type="variables_get" id="}b-mZohe98+:@^-uASy4">
                                               <field name="VAR" id="*s8;q5BO(sp,~ifMThmw" variabletype="">bild_pfad</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="debug" id="DZ~(Ywk+us.|kb[VsMlx">
                                           <field name="Severity">log</field>
                                           <value name="TEXT">
                                             <shadow type="text" id="9G%:(muyc5:_nJr$8@%u">
                                               <field name="TEXT">test</field>
                                             </shadow>
                                             <block type="variables_get" id="0*z9fC{0JLU[(;Z%_])s">
                                               <field name="VAR" id="-fS|s!CIM-cIu+}?OP;o" variabletype="">command_final</field>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="exec" id="E|~MFPx8_rod#ZQ6h~WJ">
                                               <mutation with_statement="false"></mutation>
                                               <field name="WITH_STATEMENT">FALSE</field>
                                               <field name="LOG"></field>
                                               <value name="COMMAND">
                                                 <shadow type="text" id="2n*+L?#18Q{XjlP$A$-!">
                                                   <field name="TEXT">xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.demo.com --out=/tmp/chart.png</field>
                                                 </shadow>
                                                 <block type="variables_get" id="p6ke{|ywp-%k*EI)%39u">
                                                   <field name="VAR" id="-fS|s!CIM-cIu+}?OP;o" variabletype="">command_final</field>
                                                 </block>
                                               </value>
                                               <next>
                                                 <block type="timeouts_settimeout" id="FUU5qsY$z$S0h;;LA@aW">
                                                   <field name="NAME">timeout</field>
                                                   <field name="DELAY">25</field>
                                                   <field name="UNIT">sec</field>
                                                   <statement name="STATEMENT">
                                                     <block type="telegram" id="S.IVYx[de:gS(H)pJGjy">
                                                       <field name="INSTANCE"></field>
                                                       <field name="LOG"></field>
                                                       <field name="SILENT">FALSE</field>
                                                       <field name="PARSEMODE">default</field>
                                                       <value name="MESSAGE">
                                                         <shadow type="text" id="/+0Gniyuk,KcB1/p*Ch@">
                                                           <field name="TEXT"></field>
                                                         </shadow>
                                                         <block type="variables_get" id=",yir})}-i;t$:`84WtP/">
                                                           <field name="VAR" id="*s8;q5BO(sp,~ifMThmw" variabletype="">bild_pfad</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </statement>
                                                 </block>
                                               </next>
                                             </block>
                                           </next>
                                         </block>
                                       </next>
                                     </block>
                                   </statement>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
           </next>
         </block>
       </statement>
     </block>
    </xml>
    

    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:

    1. 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)
    2. 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.
    3. 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!

    M 1 Reply Last reply
    1
    • T Trident

      Hallo zusammen,

      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.

      Ich benutze CutyCapt zur Erstellung des Screenshots auf dem Pi. Hier der Link zu meiner Quelle: "https://www.booleanworld.com/take-screenshots-webpages-command-line/"

      Dieses muss zunächst installiert werden:

      sudo apt install cutycapt
      

      Im Anschluss muss noch xvfb installiert werden, damit das ganze auch auf dem headless Raspi läuft:

      sudo apt-get install xvfb
      

      Nach der Installation kann mit folgendem Befehl im Terminal ein Screenshot erzeugt werden:

      xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.demo.com --out=demo.png
      

      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.

      <xml xmlns="http://www.w3.org/1999/xhtml">
       <variables>
         <variable type="" id="6cp_tHf+sd$t./|]DROc">diagramm_id</variable>
         <variable type="" id="gG$:_H.M_]`[zNdN)^@w">command</variable>
         <variable type="" id="*s8;q5BO(sp,~ifMThmw">bild_pfad</variable>
         <variable type="" id="{Q-yD[N]I+YF1L,huglJ">chart_url</variable>
         <variable type="" id="#qCT?RTusEEh[DkoA|,j">ok</variable>
         <variable type="" id="-fS|s!CIM-cIu+}?OP;o">command_final</variable>
         <variable type="undefined" id="timeout">timeout</variable>
       </variables>
       <block type="on_ext" id="|{a#oCaG|:NIkPZHB?1C" x="63" y="263">
         <mutation items="1"></mutation>
         <field name="CONDITION">any</field>
         <field name="ACK_CONDITION"></field>
         <value name="OID0">
           <shadow type="field_oid" id="9.7lz@ww79]Qq~p=%ydx">
             <field name="oid">xxx</field>
           </shadow>
           <block type="text" id="19s8#FpF_9nR`@_Z:,/A">
             <field name="TEXT">trigger</field>
           </block>
         </value>
         <statement name="STATEMENT">
           <block type="telegram" id="4`^Ueh*!~odNg$~bOoe,">
             <field name="INSTANCE"></field>
             <field name="LOG"></field>
             <field name="SILENT">FALSE</field>
             <field name="PARSEMODE">default</field>
             <value name="MESSAGE">
               <shadow type="text" id="!@]k~(J@P26ZR)4$REg(">
                 <field name="TEXT">Alles klar - Ich erstelle das Bild! Einen Moment bitte ... Es wird ungefähr 30 Sekunden brauchen</field>
               </shadow>
             </value>
             <next>
               <block type="variables_set" id="?OTAd7]U!D6.^4zBVaFt">
                 <field name="VAR" id="6cp_tHf+sd$t./|]DROc" variabletype="">diagramm_id</field>
                 <value name="VALUE">
                   <block type="text" id="=-Vm=Id33^dWIgT$fJOe">
                     <field name="TEXT">trigger</field>
                   </block>
                 </value>
                 <next>
                   <block type="variables_set" id="AlBNMxXfdw[[L~uT4IxkwI">
                     <field name="VAR" id="gG$:_H.M_]`[dfzNdN)^@w" variabletype="">command</field>
                     <value name="VALUE">
                       <block type="text" id="*v!*OWjQ,Afd|T!=t!H^mp">
                         <field name="TEXT">xvfb-run --server-args="-screen 0, 1024x768x24" cutycapt --delay=20000 --url=</field>
                       </block>
                     </value>
                     <next>
                       <block type="variables_set" id="@9d6|(-HdFvuvY#lS}=U">
                         <field name="VAR" id="*s8;q5BO(sp,~ifMThmw" variabletype="">bild_pfad</field>
                         <value name="VALUE">
                           <block type="text" id="c*ctHdB*U=lAFY6.Qz=Y">
                             <field name="TEXT">/opt/iobroker/charts/chart.png</field>
                           </block>
                         </value>
                         <next>
                           <block type="debug" id="Y*zoRtOz7fd}t#^=K}GdJb">
                             <field name="Severity">log</field>
                             <value name="TEXT">
                               <shadow type="text" id="WM,yr[5oek!Hl3YJ?jX6">
                                 <field name="TEXT">test</field>
                               </shadow>
                               <block type="variables_get" id="net:Z_*fdBRih_Dhr~z/mP">
                                 <field name="VAR" id="6cp_tHf+sd$t.fd/|]DROc" variabletype="">diagramm_id</field>
                               </block>
                             </value>
                             <next>
                               <block type="controls_if" id="L0=C;^fdcTdfwW][e`fi0TNA">
                                 <mutation else="1"></mutation>
                                 <value name="IF0">
                                   <block type="logic_operation" id="a=6RJdfsqa,s1B]tNx$un:">
                                     <field name="OP">OR</field>
                                     <value name="A">
                                       <block type="logic_compare" id="On+Va.jdNfdSX.Mg/pj#Yt">
                                         <field name="OP">EQ</field>
                                         <value name="A">
                                           <block type="variables_get" id="@%Z+^dfg*:bR%W,G%5qPvQ">
                                             <field name="VAR" id="6cp_tHf+sdfd$t./|]DROc" variabletype="">diagramm_id</field>
                                           </block>
                                         </value>
                                         <value name="B">
                                           <block type="text" id="b,gYuZ^fdO!Kl8Ccy17*nF">
                                             <field name="TEXT">Verbrauch</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                     <value name="B">
                                       <block type="logic_compare" id=".4yS?{Oo,L86HCKA;c7C">
                                         <field name="OP">EQ</field>
                                         <value name="A">
                                           <block type="variables_get" id="cd9?Se#=f#z|Dbn9GeC=">
                                             <field name="VAR" id="6cp_tHf+sd$t./|]DROc" variabletype="">diagramm_id</field>
                                           </block>
                                         </value>
                                         <value name="B">
                                           <block type="text" id="G?=!TX!1ZN-/Qp9YU#rW">
                                             <field name="TEXT">den Verbrauch</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <statement name="DO0">
                                   <block type="variables_set" id="~,!=|@gO/K[CoRCAL,)5">
                                     <field name="VAR" id="{Q-yD[N]I+YF1L,huglJ" variabletype="">chart_url</field>
                                     <value name="VALUE">
                                       <block type="text" id="IuuCSe8Ch+M1fG6Mc$Ou">
                                         <field name="TEXT">"URL aus Flot"</field>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="variables_set" id="S5@^#,vLg;Or[8pTay~=">
                                         <field name="VAR" id="#qCT?RTusEEh[DkoA|,j" variabletype="">ok</field>
                                         <value name="VALUE">
                                           <block type="logic_boolean" id="3_}MeR~[ltu@3UVynFa}">
                                             <field name="BOOL">TRUE</field>
                                           </block>
                                         </value>
                                       </block>
                                     </next>
                                   </block>
                                 </statement>
                                 <statement name="ELSE">
                                   <block type="variables_set" id="+q=:v$8hge7cA(@Z(U8{">
                                     <field name="VAR" id="#qCT?RTusEEh[DkoA|,j" variabletype="">ok</field>
                                     <value name="VALUE">
                                       <block type="logic_boolean" id="iaZ8t`_0,?gAbIwvmg_{">
                                         <field name="BOOL">FALSE</field>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="telegram" id="%k}]k@r(qbFz?bzpm])*">
                                         <field name="INSTANCE"></field>
                                         <field name="LOG"></field>
                                         <field name="SILENT">FALSE</field>
                                         <field name="PARSEMODE">default</field>
                                         <value name="MESSAGE">
                                           <shadow type="text" id="AZWa~MJS#{EEk.eD:IR2">
                                             <field name="TEXT">Chart leider unbekannt</field>
                                           </shadow>
                                         </value>
                                       </block>
                                     </next>
                                   </block>
                                 </statement>
                                 <next>
                                   <block type="controls_if" id="aN-)23{uy9yc0q`zk;qD">
                                     <value name="IF0">
                                       <block type="variables_get" id="MD:Y|`t0qBRa6upKQ1}W">
                                         <field name="VAR" id="#qCT?RTusEEh[DkoA|,j" variabletype="">ok</field>
                                       </block>
                                     </value>
                                     <statement name="DO0">
                                       <block type="variables_set" id="q3t.]$M4Qk)]{c=uIl.N">
                                         <field name="VAR" id="-fS|s!CIM-cIu+}?OP;o" variabletype="">command_final</field>
                                         <value name="VALUE">
                                           <block type="text_join" id="VKHkUmFRE#6siFFX)QZA">
                                             <mutation items="4"></mutation>
                                             <value name="ADD0">
                                               <block type="variables_get" id="jg)_6$XS3o.JGs$[cH/u">
                                                 <field name="VAR" id="gG$:_H.M_]`[zNdN)^@w" variabletype="">command</field>
                                               </block>
                                             </value>
                                             <value name="ADD1">
                                               <block type="variables_get" id="lRsR^rus#T+ZoT}OO4OC">
                                                 <field name="VAR" id="{Q-yD[N]I+YF1L,huglJ" variabletype="">chart_url</field>
                                               </block>
                                             </value>
                                             <value name="ADD2">
                                               <block type="text" id="E)@zr,OSW]huo](!@xJ3">
                                                 <field name="TEXT"> --out=</field>
                                               </block>
                                             </value>
                                             <value name="ADD3">
                                               <block type="variables_get" id="}b-mZohe98+:@^-uASy4">
                                                 <field name="VAR" id="*s8;q5BO(sp,~ifMThmw" variabletype="">bild_pfad</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                         <next>
                                           <block type="debug" id="DZ~(Ywk+us.|kb[VsMlx">
                                             <field name="Severity">log</field>
                                             <value name="TEXT">
                                               <shadow type="text" id="9G%:(muyc5:_nJr$8@%u">
                                                 <field name="TEXT">test</field>
                                               </shadow>
                                               <block type="variables_get" id="0*z9fC{0JLU[(;Z%_])s">
                                                 <field name="VAR" id="-fS|s!CIM-cIu+}?OP;o" variabletype="">command_final</field>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="exec" id="E|~MFPx8_rod#ZQ6h~WJ">
                                                 <mutation with_statement="false"></mutation>
                                                 <field name="WITH_STATEMENT">FALSE</field>
                                                 <field name="LOG"></field>
                                                 <value name="COMMAND">
                                                   <shadow type="text" id="2n*+L?#18Q{XjlP$A$-!">
                                                     <field name="TEXT">xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.demo.com --out=/tmp/chart.png</field>
                                                   </shadow>
                                                   <block type="variables_get" id="p6ke{|ywp-%k*EI)%39u">
                                                     <field name="VAR" id="-fS|s!CIM-cIu+}?OP;o" variabletype="">command_final</field>
                                                   </block>
                                                 </value>
                                                 <next>
                                                   <block type="timeouts_settimeout" id="FUU5qsY$z$S0h;;LA@aW">
                                                     <field name="NAME">timeout</field>
                                                     <field name="DELAY">25</field>
                                                     <field name="UNIT">sec</field>
                                                     <statement name="STATEMENT">
                                                       <block type="telegram" id="S.IVYx[de:gS(H)pJGjy">
                                                         <field name="INSTANCE"></field>
                                                         <field name="LOG"></field>
                                                         <field name="SILENT">FALSE</field>
                                                         <field name="PARSEMODE">default</field>
                                                         <value name="MESSAGE">
                                                           <shadow type="text" id="/+0Gniyuk,KcB1/p*Ch@">
                                                             <field name="TEXT"></field>
                                                           </shadow>
                                                           <block type="variables_get" id=",yir})}-i;t$:`84WtP/">
                                                             <field name="VAR" id="*s8;q5BO(sp,~ifMThmw" variabletype="">bild_pfad</field>
                                                           </block>
                                                         </value>
                                                       </block>
                                                     </statement>
                                                   </block>
                                                 </next>
                                               </block>
                                             </next>
                                           </block>
                                         </next>
                                       </block>
                                     </statement>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
             </next>
           </block>
         </statement>
       </block>
      </xml>
      

      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:

      1. 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)
      2. 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.
      3. 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!

      M Offline
      M Offline
      Malaus
      wrote on last edited by Malaus
      #2

      @Trident
      habe es angepasst und ausgeführt. Allerdings bekomme ich als Antwort nur den Pfad vom Bild.
      In diesem Ordner ist aber kein Bild vorhanden. Gibt es spezielle Voraussetzungen, dass das mit einem Raspberry Pi funktioniert?

      Edit:
      Ein Screenshot von Google oder vom Forum erhalte ich aber leider nicht vom Flot Diagramm. Vermute mal, dass es den Link nicht richtig erkennt.

      1 Reply Last reply
      0
      • T Offline
        T Offline
        Trident
        wrote on last edited by
        #3

        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.

        M 1 Reply Last reply
        0
        • T Trident

          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.

          M Offline
          M Offline
          Malaus
          wrote on last edited by
          #4

          @Trident ja hab ich auch schon probiert. Mit " und ' und sogar mit <>.

          Führe es inzwischen auch direkt im Terminal aus und da zerstückelt es mir immer die URL.

          1 Reply Last reply
          0
          • T Offline
            T Offline
            Trident
            wrote on last edited by
            #5

            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.

            M U 2 Replies Last reply
            0
            • T Trident

              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.

              M Offline
              M Offline
              Malaus
              wrote on last edited by
              #6

              @Trident wenn ich über den Terminal, die URL von Google eintrage, wird ein Screenshot von Google gemacht und abgespeichert. Wenn ich aber als url die vom Flot Editor eintrage, wird die URL zerstückelt, weil es als ganzes nicht gesehen wird.
              Die URL für den Flot, ist ja sehr lange mit all den Einstellungen für den Graph.

              Da die URL https hat, hab ich "--insecure" hinzugefügt und mit der URL vom Forum ausprobiert. Das klappt auch.
              Die Authentifizierung im Web Adapter ist auch ausgeschaltet.

              Eine weitere Änderung und zwar setze ich ein "-a" nach run ein. Sonst macht er bei mir nämlich gar nichts.
              Also so: xvfb-run -a --server-args ...

              1 Reply Last reply
              0
              • T Offline
                T Offline
                Trident
                wrote on last edited by
                #7

                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?

                M 1 Reply Last reply
                0
                • T Trident

                  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?

                  M Offline
                  M Offline
                  Malaus
                  wrote on last edited by
                  #8

                  @Trident hab es hinbekommen. Es fehlte ein / am Ende von der Chart_URL.

                  Danke fürs teilen und helfen :)

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    Trident
                    wrote on last edited by
                    #9

                    Sehr cool! Freut mich das es klappt!

                    1 Reply Last reply
                    0
                    • T Trident

                      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.

                      U Offline
                      U Offline
                      uwe72
                      wrote on last edited by
                      #10

                      @Trident Kannst Du sagen wie Du dies genau eingegeben hast (chmod 700, chown iobroker und chgrp iobroker)? Hab wenig Ahnung von Linux......habe Probleme beim Ausführen als User Iobroker. Mit dem Pi User funktioniert es.

                      U 1 Reply Last reply
                      0
                      • U uwe72

                        @Trident Kannst Du sagen wie Du dies genau eingegeben hast (chmod 700, chown iobroker und chgrp iobroker)? Hab wenig Ahnung von Linux......habe Probleme beim Ausführen als User Iobroker. Mit dem Pi User funktioniert es.

                        U Offline
                        U Offline
                        uwe72
                        wrote on last edited by
                        #11

                        @uwe72 Ich konnte den vorherigen Kommentar nicht löschen. Aber funktioniert nun. Echt klasse Sache!!

                        1 Reply Last reply
                        0
                        • P Offline
                          P Offline
                          PatrickFro
                          wrote on last edited by PatrickFro
                          #12

                          Moin zusammen,

                          da ich auch einen Raspi 4 besitze bin ich auf die hier vorgestellte Möglichkeit, Screenshots zu erstellen, gekommen. Super, dass @Trident dieses ausgetüftelt hat.

                          Leider komme ich jedoch nicht ganz damit zurecht. Ich nutze kein Text2Command (mehr), daher habe ich dieses aus dem Script ausgebaut:

                          6c991dd7-fe8a-4ba1-9adf-dd0f37178a68-image.png

                          Scheint auch zu funktionieren, denn erste und zweite Nachricht kommen an. Die 2. Nachricht erscheint jedoch doppelt und zwar mit
                          /opt/iobroker/charts/chart.png
                          /opt/iobroker/charts/chart.png

                          Ein Bild ist nicht angehängt und es ist auch keines im Ordner zu finden.

                          Installiert habe ich alles, den Link von FLOT in "" gepackt. -a nach run habe ich auch getestet, leider wird auch hierbei kein Bild geschickt, jedoch geht die Nachricht /opt/iobroker/charts/chart.png nur noch einmal ein.

                          Ich nutze IoBroker ohne https, daher habe ich sonst nichts angepasst.

                          Hat noch jemand eine Idee?

                          Nachtrag: 700 er Berechtigung ist auch gesetzt

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            Trident
                            wrote on last edited by
                            #13

                            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.

                            Viele Grüße

                            P 1 Reply Last reply
                            0
                            • T Trident

                              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.

                              Viele Grüße

                              P Offline
                              P Offline
                              PatrickFro
                              wrote on last edited by
                              #14

                              @Trident Wenn ich die Erstellung über das Terminal auslöse, wie bestimme ich dann den Speicherort?

                              xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.google.de --out=demo.png
                              
                              

                              dürfte ja nicht reichen, oder?

                              M 1 Reply Last reply
                              0
                              • P PatrickFro

                                @Trident Wenn ich die Erstellung über das Terminal auslöse, wie bestimme ich dann den Speicherort?

                                xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.google.de --out=demo.png
                                
                                

                                dürfte ja nicht reichen, oder?

                                M Offline
                                M Offline
                                Malaus
                                wrote on last edited by
                                #15

                                @PatrickFro
                                so zum Beispiel:

                                xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.google.de --out=/home/pi/screenshot/demo.png
                                
                                P 2 Replies Last reply
                                0
                                • M Malaus

                                  @PatrickFro
                                  so zum Beispiel:

                                  xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.google.de --out=/home/pi/screenshot/demo.png
                                  
                                  P Offline
                                  P Offline
                                  PatrickFro
                                  wrote on last edited by
                                  #16

                                  @Malaus Danke, damit klappt zumindest Google schon. Ich baue mal mein Blockly nach, hatte es aus Frust gelöscht und berichte, ob es nun auch damit klappt ;-)

                                  1 Reply Last reply
                                  0
                                  • M Malaus

                                    @PatrickFro
                                    so zum Beispiel:

                                    xvfb-run --server-args="-screen 0, 1280x1200x24" cutycapt --url=http://www.google.de --out=/home/pi/screenshot/demo.png
                                    
                                    P Offline
                                    P Offline
                                    PatrickFro
                                    wrote on last edited by
                                    #17

                                    @Malaus @Trident
                                    So, ich bin dank Euch ein Stück weiter. Im Ordner wird nun eine Bilddatei abgelegt, sobald das Blockly läuft.

                                    Zugeschickt jedoch wird es mir nicht, nur der Output-Ort.

                                    Erhaltet ihr auch das Bild per Telegram oder müsst ihr dieses dann aus dem Ordner abholen?

                                    f2018839-4f89-4f19-a06c-020c0dbea854-image.png

                                    M 1 Reply Last reply
                                    0
                                    • P PatrickFro

                                      @Malaus @Trident
                                      So, ich bin dank Euch ein Stück weiter. Im Ordner wird nun eine Bilddatei abgelegt, sobald das Blockly läuft.

                                      Zugeschickt jedoch wird es mir nicht, nur der Output-Ort.

                                      Erhaltet ihr auch das Bild per Telegram oder müsst ihr dieses dann aus dem Ordner abholen?

                                      f2018839-4f89-4f19-a06c-020c0dbea854-image.png

                                      M Offline
                                      M Offline
                                      Malaus
                                      wrote on last edited by
                                      #18

                                      @PatrickFro
                                      hast du dir das Bild mal angeschaut? Ist es ein richtiges Bild? Hab gesehen du nutzt kein Delay um die Seite aufzurufen.
                                      Kann das sein, dass du kein Delay hast? Also das du dem ganzen keine Zeit gibst, ein Bild zu erstellen?

                                      So sieht das bei mir aus:

                                      xvfb-run cutycapt --min-width=1300 --min-height=400 --delay=2500 --url=
                                      

                                      Und dann brauchst du nochmal eine Verzögerung um das Bild abzuspeichern. Bei mir sind das 6 Sekunden.

                                      P 1 Reply Last reply
                                      0
                                      • M Malaus

                                        @PatrickFro
                                        hast du dir das Bild mal angeschaut? Ist es ein richtiges Bild? Hab gesehen du nutzt kein Delay um die Seite aufzurufen.
                                        Kann das sein, dass du kein Delay hast? Also das du dem ganzen keine Zeit gibst, ein Bild zu erstellen?

                                        So sieht das bei mir aus:

                                        xvfb-run cutycapt --min-width=1300 --min-height=400 --delay=2500 --url=
                                        

                                        Und dann brauchst du nochmal eine Verzögerung um das Bild abzuspeichern. Bei mir sind das 6 Sekunden.

                                        P Offline
                                        P Offline
                                        PatrickFro
                                        wrote on last edited by
                                        #19

                                        @Malaus Das Bild ist ein PNG und ist so, wie es sein sollte. Delay habe ich auch, vom Blockly her aber nur für den Versand. Das habe ich aus dem Blockly von @Trident übernommen.

                                        1 Reply Last reply
                                        0
                                        • P Offline
                                          P Offline
                                          PatrickFro
                                          wrote on last edited by
                                          #20

                                          So, es klappt nun. Ich musste einmal die Neuerstellung deaktivieren, den exec Befehl. Seit dem klappt es, auch mit dem gerade erstellten Bild. Warum weiß ich aber nicht ;-)

                                          Danke Euch beiden!

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          426

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe