Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Screenshot Flot-Charts über Telegram verschicken

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
chartstelegramblockly
40 Beiträge 9 Kommentatoren 6.0k Aufrufe 13 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Offline
    T Offline
    Trident
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        Trident
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            Trident
            schrieb am zuletzt editiert von
            #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 Antworten Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • T Offline
                T Offline
                Trident
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #8

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

                  Danke fürs teilen und helfen :)

                  1 Antwort Letzte Antwort
                  0
                  • T Offline
                    T Offline
                    Trident
                    schrieb am zuletzt editiert von
                    #9

                    Sehr cool! Freut mich das es klappt!

                    1 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #11

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

                        1 Antwort Letzte Antwort
                        0
                        • P Offline
                          P Offline
                          PatrickFro
                          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                          0
                          • T Offline
                            T Offline
                            Trident
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              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
                                schrieb am zuletzt editiert von
                                #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 Antworten Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  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
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    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
                                      schrieb am zuletzt editiert von
                                      #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 Antwort Letzte Antwort
                                      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
                                        schrieb am zuletzt editiert von
                                        #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 Antwort Letzte Antwort
                                        0
                                        • P Offline
                                          P Offline
                                          PatrickFro
                                          schrieb am zuletzt editiert von
                                          #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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

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

                                          651

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe