Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Puppeteer: Screenshots PhantomJS Alternative

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Puppeteer: Screenshots PhantomJS Alternative

    This topic has been deleted. Only users with topic management privileges can see it.
    • crunchip
      crunchip Forum Testing Most Active @foxriver76 last edited by

      @foxriver76 Reihenfolge
      die Erstinstallation war v0.2 von git, vorhin dann v0.2.1 per Admin installiert,
      jetzt Adapter gelöscht und Instanz neu installiert wieder per Admin
      also eigentlich nichts anders gemacht

      foxriver76 1 Reply Last reply Reply Quote 0
      • foxriver76
        foxriver76 Developer @crunchip last edited by

        @crunchip Okay danke.

        Ja beim ersten mal wars dann ein Upgrade beim zweiten mal ein Install und tatsächlich installiert der Controller die "OS dependencies" nur bei einem neu install.

        crunchip 1 Reply Last reply Reply Quote 1
        • crunchip
          crunchip Forum Testing Most Active @foxriver76 last edited by

          @foxriver76 alles klar und danke dir

          PS:

          @crunchip sagte in Puppeteer: Screenshots PhantomJS Alternative:

          error: host.IoBroker iobroker Cannot install "libappindicator3-1":

          kann ich also ignorieren

          foxriver76 1 Reply Last reply Reply Quote 0
          • foxriver76
            foxriver76 Developer @crunchip last edited by

            @crunchip Genau, das Paket gibt es auf Ubuntu aber unter Debian wohl nicht. Ich kann allerdings nur allgemein Pakete für Linux angeben. Evtl. kann man sich da im Controller noch was überlegen, dass die User da nicht durch Errors irritiert werden.

            1 Reply Last reply Reply Quote 1
            • F
              fraso last edited by

              hi,
              ich kann bei mir keinen puppeteer Adapter finden. Der Versuch via npm install puppeteer läuft durch mit Warnmeldungen, aber kein Adapter zu sehen.

              npm install puppeteer
              
              > puppeteer@15.1.0 install /home/e6iob/node_modules/puppeteer
              > node install.js
              
              Downloading Chromium r1011831 - 150.4 Mb [====================] 100% 0.0s 
              Chromium (1011831) downloaded to /home/e6iob/node_modules/puppeteer/.local-chromium/linux-1011831
              npm WARN e6iob No description
              npm WARN e6iob No repository field.
              npm WARN e6iob No license field.
              npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/fsevents):
              npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
              
              + puppeteer@15.1.0
              updated 1 package and audited 485 packages in 10.331s
              
              33 packages are looking for funding
                run `npm fund` for details
              
              found 11 vulnerabilities (4 low, 2 moderate, 5 high)
                run `npm audit fix` to fix them, or `npm audit` for details
              

              Hier ein paar Infos zu meinem System. NUC, Debian Bullseye (kein Windows VM)

              6iob@NUCioBroker:~$ which nodejs node npm && nodejs -v && node -v && npm -v && apt policy nodejs
              /usr/bin/nodejs
              /usr/bin/node
              /usr/bin/npm
              v14.19.1
              v14.19.1
              6.14.16
              nodejs:
                Installiert:           14.19.1-deb-1nodesource1
                Installationskandidat: 14.19.3-deb-1nodesource1
                Versionstabelle:
                   14.19.3-deb-1nodesource1 500
                      500 https://deb.nodesource.com/node_14.x bullseye/main amd64 Packages
               *** 14.19.1-deb-1nodesource1 100
                      100 /var/lib/dpkg/status
                   12.22.5~dfsg-2~11u1 500
                      500 http://deb.debian.org/debian bullseye/main amd64 Packages
                      500 http://security.debian.org/debian-security bullseye-security/main amd64 Packages
              
              

              Hier ist nichts zu finden um direkt zu installieren.

              c6fd3842-b635-42a3-b642-f63149f6eb67-image.png

              Das ist mein Repo was ich ausgewählt habe:

              9be6d6f5-a99f-450f-8035-cb5510de50e2-image.png

              Wie kriege ich puppeteer installiert?
              oder
              Ist an meinem iOBroker was "krumm"?

              Danke,
              fraso

              Thomas Braun foxriver76 2 Replies Last reply Reply Quote 0
              • Thomas Braun
                Thomas Braun Most Active @fraso last edited by

                @fraso

                iob stop
                sudo apt update
                sudo apt full-upgrade
                sudo reboot
                
                1 Reply Last reply Reply Quote 0
                • foxriver76
                  foxriver76 Developer @fraso last edited by

                  @fraso hast du per Admin Oberfläche installiert? Weil du schreibst via npm install …?

                  F 1 Reply Last reply Reply Quote 0
                  • F
                    fraso @foxriver76 last edited by

                    @foxriver76

                    Hi,
                    ich hatte es das erste mal mit Admin installiert.
                    Der Adapter wurde nicht angezeigt in meiner Liste.
                    Dann habe ich den Adapter gelöscht und ich konnte nicht neu installieren über Admin.
                    Dann habe ich npm genutzt.
                    Das oben ist das Ergebnis. Der Adapter wird trotzdem nicht angezeigt und über ADMIN kann ich den Adapter auch nicht mehr sehen / suchen.

                    Danke.

                    1 Reply Last reply Reply Quote 0
                    • Negalein
                      Negalein Global Moderator @foxriver76 last edited by

                      @foxriver76

                      Hallo

                      Ich möchte gern das alte Phantomjs Script durch Puppeteer ersetzen.
                      Bin gerade komplett überfordert damit.

                      Könntest du mir da weiterhelfen?

                      schedule("*/5 * * * *", function () {
                       sendTo("phantomjs.0", "send", {
                          url: 'http://10.0.1.203:3000/d/14q2Khmnz/wetterstation-copy?orgId=1&refresh=1m&kiosk',
                          output: 'wetterstation.png',
                          width: '1920',
                          height: '757',
                          renderTime: '60000'
                       });
                       exec('wput -nc /opt/iobroker/node_modules/iobroker.phantomjs/wetterstation.png ftp://xxxxx:xxxxx@www37.world4you.com');
                       console.log("exec: " + 'wput -nc /opt/iobroker/node_modules/iobroker.phantomjs/wetterstation.png ftp://xxxxx:xxxxx@www37.world4you.com');
                      });
                      

                      sendTo('puppeteer.0', 'screenshot', { url: 'https://www.google.com',
                           ioBrokerOptions: {
                             /**
                              * Define a filename for the ioBroker storage
                              */
                             storagePath: `screenshots/grafana-${new Date().toLocaleString()}.png`
                           },
                           /**
                            * Define at most one wait option
                            * You can also look for other waitOptions currently supported by Puppeteer API
                            * see e.g. https://puppeteer.github.io/puppeteer/docs/puppeteer.page.waitforfilechooser
                            */
                           waitOption: {
                             /**
                              * Define a Timeout in ms
                              */
                             waitForTimeout: 1000,
                           }
                       }, obj => {
                           if (obj.error) {
                             log(`Error taking screenshot: ${obj.error.message}`, 'error');
                           } else {
                             // the binary representation of the image is contained in `obj.result`
                             log(`Sucessfully took screenshot: ${obj.result}`);
                           }
                      });
                      

                      foxriver76 1 Reply Last reply Reply Quote 0
                      • foxriver76
                        foxriver76 Developer @Negalein last edited by foxriver76

                        @negalein

                        Wenn du es 1 zu 1 so ersetzen möchtest, dann probiere mal

                        sendTo('puppeteer.0', 'screenshot', { 
                            url: 'http://10.0.1.203:3000/d/14q2Khmnz/wetterstation-copy?orgId=1&refresh=1m&kiosk',
                            path: '../wetterstation.png' // sollte dann in /opt/iobroker/node_modules/iobroker.puppeteer/ landen
                        });
                        
                        

                        Entsprechend dann den Pfad in deinem exec anpassen. Dann mal schauen was bei dem Screenshot rum kommt, evtl. dann noch mit clip oder fullPage spielen. https://pptr.dev/api/puppeteer.screenshotoptions

                        Abgesehen davon, dass du Dateien im Adapter Ordner ablegst, möchtest du evtl. das exec auch ins callback packen, da du sonst ein altes Bild sendest, wenn ich dein Skript gerade richtig interpretiere.

                        Negalein 1 Reply Last reply Reply Quote 0
                        • Negalein
                          Negalein Global Moderator @foxriver76 last edited by

                          @foxriver76 sagte in Puppeteer: Screenshots PhantomJS Alternative:

                          evtl. dann noch mit clip

                          Ok, mit clip? geb ich dann die Dimension vor.
                          Dann nicht wie bei Phantomjs mit height und width.

                          sendTo('puppeteer.0', 'screenshot', { 
                              url: 'http://10.0.1.203:3000/d/14q2Khmnz/wetterstation-copy?orgId=1&refresh=1m&kiosk',
                              clip?: 1920x757
                              path: '../wetterstation.png'
                          });
                          

                          Abgesehen davon, dass du Dateien im Adapter Ordner ablegst, möchtest du evtl. das exec auch ins callback packen, da du sonst ein altes Bild sendest, wenn ich dein Skript gerade richtig interpretiere.

                          Hmmm, versteh Bahnhof.
                          Im Phantom-Script funktionierte es. Er hat das .png in /opt/iobroker/node_modules/iobroker.phantomjs/ gespeichert und dann gleich auf den FTP gespielt.
                          Ahhh, stimmt. Kam vor, dass zT nur ein kaputtes halbes Bild am FTP angekommen ist.

                          foxriver76 1 Reply Last reply Reply Quote 0
                          • foxriver76
                            foxriver76 Developer @Negalein last edited by

                            @negalein Clip ist zum ausschneiden eines Bildes. Wenn du eine Auflösung festlegen möchtest, werde ich evtl nochmal machbesseren dürfen, da man dies leider anderweitig setzen muss. Probier mal bitte ob es sonst soweit passt für dich und dann implementiere ich noch die Auflösung.

                            Negalein 1 Reply Last reply Reply Quote 0
                            • Negalein
                              Negalein Global Moderator @foxriver76 last edited by

                              @foxriver76 sagte in Puppeteer: Screenshots PhantomJS Alternative:

                              Auflösung

                              Danke

                              Auflösung war etwas irrtümlich ausgedrückt.
                              Ich meinte den Bildausschnitt. zB 1920 px von der oberen linken Ecke nach rechts, 757 px von der oberen linken Ecke nach unten.

                              foxriver76 1 Reply Last reply Reply Quote 0
                              • foxriver76
                                foxriver76 Developer @Negalein last edited by

                                @negalein Dann mit clip

                                {
                                  clip: {
                                    x: 0,
                                    y: 0,
                                    width: 1920,
                                    height: 757
                                  }
                                }
                                

                                zusätzlich angeben, siehe https://pptr.dev/api/puppeteer.screenshotclip

                                Negalein 1 Reply Last reply Reply Quote 1
                                • Negalein
                                  Negalein Global Moderator @foxriver76 last edited by

                                  @foxriver76 sagte in Puppeteer: Screenshots PhantomJS Alternative:

                                  Dann mit clip

                                  Sorry für die Verspätung. War im Urlaub.

                                  Hab es jetzt so versucht.

                                  sendTo('puppeteer.0', 'screenshot', { 
                                      url: 'http://10.0.1.203:3000/d/14q2Khmnz/wetterstation-copy?orgId=1&refresh=1m&kiosk',
                                  {
                                    clip: {
                                      x: 0,
                                      y: 0,
                                      width: 1920,
                                      height: 757
                                    }
                                  }
                                      path: '../wetterstation.png' // sollte dann in /opt/iobroker/node_modules/iobroker.puppeteer/ landen
                                  });
                                  

                                  Dann kommt error javascript.0 (1426) script.js.Wetter.Wetter_to_FTP compile failed: at script.js.Wetter.Wetter_to_FTP:3

                                  foxriver76 1 Reply Last reply Reply Quote 0
                                  • foxriver76
                                    foxriver76 Developer @Negalein last edited by

                                    @negalein nach der geschweiften Klammer in der Zeile über path fehlt ein Komma.

                                    Negalein 1 Reply Last reply Reply Quote 0
                                    • Negalein
                                      Negalein Global Moderator @foxriver76 last edited by

                                      @foxriver76 sagte in Puppeteer: Screenshots PhantomJS Alternative:

                                      nach der geschweiften Klammer in der Zeile über path fehlt ein Komma.

                                      leider selber Fehler

                                      sendTo('puppeteer.0', 'screenshot', { 
                                          url: 'http://10.0.1.203:3000/d/14q2Khmnz/wetterstation-copy?orgId=1&refresh=1m&kiosk',
                                      {
                                        clip: {
                                          x: 0,
                                          y: 0,
                                          width: 1920,
                                          height: 757
                                        }
                                      },
                                          path: '../wetterstation.png' // sollte dann in /opt/iobroker/node_modules/iobroker.puppeteer/ landen
                                      });
                                      

                                      23:07:58.219 error javascript.0 (1426) script.js.Wetter.Wetter_to_FTP compile failed: at script.js.Wetter.Wetter_to_FTP:3

                                      foxriver76 1 Reply Last reply Reply Quote 0
                                      • foxriver76
                                        foxriver76 Developer @Negalein last edited by

                                        @negalein

                                        sendTo('puppeteer.0', 'screenshot', { 
                                            url: 'http://10.0.1.203:3000/d/14q2Khmnz/wetterstation-copy?orgId=1&refresh=1m&kiosk',
                                            clip: {
                                                x: 0,
                                                y: 0,
                                                width: 1920,
                                                height: 757
                                            },
                                            path: '../wetterstation.png' // sollte dann in /opt/iobroker/node_modules/iobroker.puppeteer/ landen
                                        });
                                        
                                        Negalein 2 Replies Last reply Reply Quote 0
                                        • Negalein
                                          Negalein Global Moderator @foxriver76 last edited by

                                          @foxriver76

                                          Danke
                                          Jetzt kommt keine Meldung 🙂

                                          Aber er speichert nichts in /opt/iobroker/node_modules/iobroker.puppeteer/

                                          5f3e281d-4704-48b8-b796-e5067cd4d426-image.png

                                          DP sind auch leer
                                          f365dabc-a538-4ae9-9af8-6e930f407989-image.png

                                          1 Reply Last reply Reply Quote 0
                                          • Negalein
                                            Negalein Global Moderator @foxriver76 last edited by

                                            @foxriver76

                                            Edit:
                                            hatte den Adapter nicht gestartet 😞

                                            Adapter gestartet, kommt folgendes:

                                            puppeteer.0 2022-08-11 23:53:10.863	warn	Terminated (UNCAUGHT_EXCEPTION): Without reason
                                            puppeteer.0 2022-08-11 23:53:10.862	info	terminating
                                            puppeteer.0 2022-08-11 23:53:10.858	error	Failed to launch the browser process!/opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directoryTROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
                                            puppeteer.0 2022-08-11 23:53:10.857	error	Error: Failed to launch the browser process!/opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directoryTROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md at onClose (/opt/iobroker/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:241:20) at Interface.<anonymous> (/opt/iobroker/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:231:68) at Interface.emit (node:events:539:35) at Interface.close (node:readline:586:8) at Socket.onend (node:readline:277:10) at Socket.emit (node:events:539:35) at endReadableNT (node:internal/streams/readable:1345:12) at processTicksAndRejections (node:internal/process/task_queues:83:21)
                                            puppeteer.0 2022-08-11 23:53:10.856	error	unhandled promise rejection: Failed to launch the browser process!/opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directoryTROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
                                            puppeteer.0 2022-08-11 23:53:10.856	error	Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                                            puppeteer.0 2022-08-11 23:53:10.787	info	starting. Version 0.2.1 in /opt/iobroker/node_modules/iobroker.puppeteer, node: v16.15.1, js-controller: 4.0.23
                                            
                                            foxriver76 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            572
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            browser headless phantomjs puppeteer screenshot screenshots website
                                            23
                                            245
                                            24970
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo