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. Skripten / Logik
  4. Blockly
  5. Mit exec in Dateisystem schreiben

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Mit exec in Dateisystem schreiben

Geplant Angeheftet Gesperrt Verschoben Blockly
28 Beiträge 4 Kommentatoren 120 Aufrufe 4 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.
  • Thomas BraunT Thomas Braun

    @David-G.

    Ich würde nur davon absehen, direkt auf ein Gerät wie /dev/shm/ zu schreiben. Verwende /tmp/ für sowas.

    David G.D Offline
    David G.D Offline
    David G.
    schrieb am zuletzt editiert von David G.
    #21

    @Thomas-Braun sagte in Mit exec in Dateisystem schreiben:

    @David-G.

    Ich würde nur davon absehen, direkt auf ein Gerät wie /dev/shm/ zu schreiben. Verwende /tmp/ für sowas.

    Okay
    Idee wegen dem krummen weasyprint?

    Scheinbar doppelt drauf....

    iobroker@iobroker:~$ which weasyprint
    /usr/local/bin/weasyprint
    iobroker@iobroker:~$ dpkg -l | grep weasyprint
    ii  weasyprint                           62.3-1                               all          Document factory for creating PDF files from HTML
    iobroker@iobroker:~$ pip list | grep -i weasyprint
    weasyprint         62.3
    iobroker@iobroker:~$ pip3 list | grep -i weasyprint
    weasyprint         62.3
    iobroker@iobroker:~$ type weasyprint
    weasyprint ist /usr/local/bin/weasyprint
    iobroker@iobroker:~$
    

    Zeigt eure Lovelace-Visualisierung klick
    (Auch ideal um sich Anregungen zu holen)

    Meine Tabellen für eure Visualisierung klick

    Thomas BraunT 1 Antwort Letzte Antwort
    0
    • David G.D David G.

      @Thomas-Braun sagte in Mit exec in Dateisystem schreiben:

      @David-G.

      Ich würde nur davon absehen, direkt auf ein Gerät wie /dev/shm/ zu schreiben. Verwende /tmp/ für sowas.

      Okay
      Idee wegen dem krummen weasyprint?

      Scheinbar doppelt drauf....

      iobroker@iobroker:~$ which weasyprint
      /usr/local/bin/weasyprint
      iobroker@iobroker:~$ dpkg -l | grep weasyprint
      ii  weasyprint                           62.3-1                               all          Document factory for creating PDF files from HTML
      iobroker@iobroker:~$ pip list | grep -i weasyprint
      weasyprint         62.3
      iobroker@iobroker:~$ pip3 list | grep -i weasyprint
      weasyprint         62.3
      iobroker@iobroker:~$ type weasyprint
      weasyprint ist /usr/local/bin/weasyprint
      iobroker@iobroker:~$
      
      Thomas BraunT Online
      Thomas BraunT Online
      Thomas Braun
      Most Active
      schrieb am zuletzt editiert von Thomas Braun
      #22

      @David-G. sagte in Mit exec in Dateisystem schreiben:

      /usr/local/bin/weasyprint

      Dann lösch das aus /usr/local/bin/ einfach raus.

      Edit: Per pip installiert? Dann auch per pip deinstallieren! Erst danach ggfls. stumpf aus /usr/local/bin löschen!

      Linux-Werkzeugkasten:
      https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
      NodeJS Fixer Skript:
      https://forum.iobroker.net/topic/68035/iob-node-fix-skript
      iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

      1 Antwort Letzte Antwort
      0
      • David G.D David G.

        @MartinP sagte in Mit exec in Dateisystem schreiben:

        iobroker führt eine Datenbank über die Dateien im.....

        Sowas hatte ich auch in Erinnerung. Deshalb hab ich oben gemeint, dass am iob vorbei geschrieben.

        @Thomas-Braun sagte in Mit exec in Dateisystem schreiben:

        Wie hast du es denn hingezirkelt?

        Ja wenn ich das mal wüsste.
        Das ist ein System aus der Zeit wo ich mit iob angefangen hab und alles Stumpf nach irgendwelchen Anleitungen gemacht hab.

        @mcu
        Hast du die Dateien in deinen Backup auch einfach per Script, Dateiexplorer etc in den Ordner geschoben?

        Edit

        echo "<html><body><h1>Test</h1></body></html>" | weasyprint - /dev/shm/temp.pdf && iobroker file write /dev/shm/temp.pdf 0_userdata.0/FGB/test.pdf && rm /dev/shm/temp.pdf
        

        Scheint gut zu klappen.

        M Online
        M Online
        MCU
        schrieb am zuletzt editiert von MCU
        #23

        @David-G. Ich hab es bei mit Javascript Modul html-pdf gemacht. Kann ein Beipiel später reinstellen.

        NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
        Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

        David G.D 1 Antwort Letzte Antwort
        0
        • M MCU

          @David-G. Ich hab es bei mit Javascript Modul html-pdf gemacht. Kann ein Beipiel später reinstellen.

          David G.D Offline
          David G.D Offline
          David G.
          schrieb am zuletzt editiert von David G.
          #24

          @MCU

          Gerne.
          WeasyPrint nutze ich schon recht lange für vieles.
          War damals das einzige wo ich wirklich genau das PDF Format mit Seitenrändern etc festlegen kann und wirklich sehr gut css unterstützt.

          Falls jemand Interesse hat was ich hier in dem Fall grad mache.

          Habe mit für meine Visualisierung einen kleinen Dateiexplorer gebaut für einen Ordner. Dort kann ich Dateien hoch und runter laden. Wenn ich eine Excel hochlade wird eine verschachtelte json aus dieser erstellt (ein js überwacht den Ordner auf xls und xlsx).
          1000061138.jpg

          Bei den Adressen stehen auch Zahlen, wie viele Exemplare von einem Heft die Persone bekommen. Je nach Anzahl benötigt man einen anderen Briefumschlag.
          Für jede entsprechende Größe wird dann ein html bzw pdf mit den entsprechenden Adressen erstellt.

          Die PDFs sind dann auch über den Fileexplorer in der vis erreichbar.

          Zeigt eure Lovelace-Visualisierung klick
          (Auch ideal um sich Anregungen zu holen)

          Meine Tabellen für eure Visualisierung klick

          M 1 Antwort Letzte Antwort
          0
          • David G.D David G.

            @MCU

            Gerne.
            WeasyPrint nutze ich schon recht lange für vieles.
            War damals das einzige wo ich wirklich genau das PDF Format mit Seitenrändern etc festlegen kann und wirklich sehr gut css unterstützt.

            Falls jemand Interesse hat was ich hier in dem Fall grad mache.

            Habe mit für meine Visualisierung einen kleinen Dateiexplorer gebaut für einen Ordner. Dort kann ich Dateien hoch und runter laden. Wenn ich eine Excel hochlade wird eine verschachtelte json aus dieser erstellt (ein js überwacht den Ordner auf xls und xlsx).
            1000061138.jpg

            Bei den Adressen stehen auch Zahlen, wie viele Exemplare von einem Heft die Persone bekommen. Je nach Anzahl benötigt man einen anderen Briefumschlag.
            Für jede entsprechende Größe wird dann ein html bzw pdf mit den entsprechenden Adressen erstellt.

            Die PDFs sind dann auch über den Fileexplorer in der vis erreichbar.

            M Online
            M Online
            MCU
            schrieb am zuletzt editiert von
            #25

            @David-G. Testskript
            d8d347a8-e47e-4235-80a6-1bf63af01f04-image.png in javascript-Instanz als NPM-Modul angeben

            const fs = require('fs');
            // @ts-ignore
            const pdf = require('html-pdf');
            
            // HTML-Inhalt
            // max Breite 520px
            
            let htmlContent = `
            <!DOCTYPE html>
            <html>
            <head>
              <title>HTML to PDF</title>
            </head>
            <body style="margin-left: 10px;">
                
                <h4>Hello, world!</h4>
                <img style="height:100px; width:520px;" src="http://192.168.178.170/download/bilder/ffn.png">
                
                <h5>Hallo</h5>
                <table border="1" style="font-size:10px; width:100%;">
                    <thead>
                        <tr>
                            <th style="min-width:170px">Spalte 1</th>
                            <th style="min-width:170px">Spalte 2</th>
                            <th style="min-width:170px">Spalte 3</th>
                        </tr>
                    </thead>
                    <tbody>`
                        for(let i= 0;i<35;i++){
                htmlContent+=`       <tr>`
                htmlContent+=`             <td>Daten `+(i+1)+`,1</td>`
                htmlContent+=`             <td>Daten `+(i+1)+`,2</td>`
                htmlContent+=`             <td>Daten `+(i+1)+`,3</td>`
                htmlContent+=`         </tr>`
                        }
                        
            htmlContent += `</tbody>
                </table>
                
            </body>
            </html>
            `;
            
            // Optionen für HTML-PDF
            const options = { format: 'A4' ,border: {"top": "0cm","right": "1cm","bottom": "0cm","left": "1cm"}, 
                              header: {"height": "15mm", "contents": '<div style="font-size:14px; text-align: center;">Author: TEST</div>'  },
                              footer:  {"height": "10mm","contents": {default: '<div style="font-size:14px; text-align:center;"><span style="color: blue;">{{page}}</span>/<span>{{pages}}</span></div>'}}}
             // config -Beschreibung -> https://github.com/marcbachmann/node-html-pdf?tab=readme-ov-file#options
            
            // HTML zu PDF umwandeln
            let filePath = '/opt/iobroker/iobroker-data/files/0_userdata.0/output.pdf'
            let fileName = 'output.pdf'
            pdf.create(htmlContent, options).toFile(filePath, function(err, res) {
              if (err) return console.log(err);
              console.log(res); // Informationen über das generierte PDF
                let data = fs.readFileSync(filePath);
                // Datei hochladen in VIS
                writeFile("0_userdata.0", "/PDF/"+fileName, data,function (error) {
                    if (error) log(error);
                });
            });
            
            

            NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
            Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

            David G.D 1 Antwort Letzte Antwort
            0
            • M MCU

              @David-G. Testskript
              d8d347a8-e47e-4235-80a6-1bf63af01f04-image.png in javascript-Instanz als NPM-Modul angeben

              const fs = require('fs');
              // @ts-ignore
              const pdf = require('html-pdf');
              
              // HTML-Inhalt
              // max Breite 520px
              
              let htmlContent = `
              <!DOCTYPE html>
              <html>
              <head>
                <title>HTML to PDF</title>
              </head>
              <body style="margin-left: 10px;">
                  
                  <h4>Hello, world!</h4>
                  <img style="height:100px; width:520px;" src="http://192.168.178.170/download/bilder/ffn.png">
                  
                  <h5>Hallo</h5>
                  <table border="1" style="font-size:10px; width:100%;">
                      <thead>
                          <tr>
                              <th style="min-width:170px">Spalte 1</th>
                              <th style="min-width:170px">Spalte 2</th>
                              <th style="min-width:170px">Spalte 3</th>
                          </tr>
                      </thead>
                      <tbody>`
                          for(let i= 0;i<35;i++){
                  htmlContent+=`       <tr>`
                  htmlContent+=`             <td>Daten `+(i+1)+`,1</td>`
                  htmlContent+=`             <td>Daten `+(i+1)+`,2</td>`
                  htmlContent+=`             <td>Daten `+(i+1)+`,3</td>`
                  htmlContent+=`         </tr>`
                          }
                          
              htmlContent += `</tbody>
                  </table>
                  
              </body>
              </html>
              `;
              
              // Optionen für HTML-PDF
              const options = { format: 'A4' ,border: {"top": "0cm","right": "1cm","bottom": "0cm","left": "1cm"}, 
                                header: {"height": "15mm", "contents": '<div style="font-size:14px; text-align: center;">Author: TEST</div>'  },
                                footer:  {"height": "10mm","contents": {default: '<div style="font-size:14px; text-align:center;"><span style="color: blue;">{{page}}</span>/<span>{{pages}}</span></div>'}}}
               // config -Beschreibung -> https://github.com/marcbachmann/node-html-pdf?tab=readme-ov-file#options
              
              // HTML zu PDF umwandeln
              let filePath = '/opt/iobroker/iobroker-data/files/0_userdata.0/output.pdf'
              let fileName = 'output.pdf'
              pdf.create(htmlContent, options).toFile(filePath, function(err, res) {
                if (err) return console.log(err);
                console.log(res); // Informationen über das generierte PDF
                  let data = fs.readFileSync(filePath);
                  // Datei hochladen in VIS
                  writeFile("0_userdata.0", "/PDF/"+fileName, data,function (error) {
                      if (error) log(error);
                  });
              });
              
              
              David G.D Offline
              David G.D Offline
              David G.
              schrieb am zuletzt editiert von
              #26

              @MCU

              Da kann man ja auch wirklich viele Optionen mitgeben.
              Dort direkt bei html-pdf, ich mache es mit im css im html.

              Da ich eigentlich nur mit Blockly arbeite, müsste ich mir da eine Funktion bauen 🤣, an die ich einfach das html und die Settings andocken kann.

              Wobei der aktuelle Weg ja aicu gut läuft.

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen für eure Visualisierung klick

              M 1 Antwort Letzte Antwort
              0
              • David G.D David G.

                @MCU

                Da kann man ja auch wirklich viele Optionen mitgeben.
                Dort direkt bei html-pdf, ich mache es mit im css im html.

                Da ich eigentlich nur mit Blockly arbeite, müsste ich mir da eine Funktion bauen 🤣, an die ich einfach das html und die Settings andocken kann.

                Wobei der aktuelle Weg ja aicu gut läuft.

                M Online
                M Online
                MCU
                schrieb am zuletzt editiert von MCU
                #27

                @David-G. Wenn es jetzt läuft dann lass es so.
                Beschreibe bitte Deinen funktionierenden Weg ganz genau für andere, die es evtl.nutzen wollen. Danke.

                NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                David G.D 1 Antwort Letzte Antwort
                0
                • M MCU

                  @David-G. Wenn es jetzt läuft dann lass es so.
                  Beschreibe bitte Deinen funktionierenden Weg ganz genau für andere, die es evtl.nutzen wollen. Danke.

                  David G.D Offline
                  David G.D Offline
                  David G.
                  schrieb am zuletzt editiert von
                  #28

                  @MCU

                  Klaro.

                  Die komplette Zeile wie es in meinem Fall abgearbeitet wird ist

                  echo "<html><body><h1>Test</h1></body></html>" | weasyprint - /tmp/temp.pdf && iobroker file write /tmp/temp.pdf 0_userdata.0/test/test.pdf && rm /tmp/temp.pdf 
                  

                  Der relevante Part, die Datei dem iobroker bekannt zu machen ist sie mittels iobroker file write abzusprechen

                  iobroker file write /tmp/temp.pdf 0_userdata.0/FGB/fgbxls/test.pdf 
                  

                  Danach empfiehlt sich das Löschen der tmp Datei.

                  Zeigt eure Lovelace-Visualisierung klick
                  (Auch ideal um sich Anregungen zu holen)

                  Meine Tabellen für eure Visualisierung klick

                  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

                  545

                  Online

                  32.6k

                  Benutzer

                  82.3k

                  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