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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    256

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
1.0k Posts 47 Posters 342.8k Views 50 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • BananaJoeB BananaJoe

    Nachtrag: Zudem haben bei mir die Chrome Varianten einen Fehler bei Rot verursacht, zumindest wenn skaliert wird. Das Rot bekam dann einen schwarzen Rand bzw. die äußeren Pixel wurden "dunkler", der Firefox hat das nicht gezeigt.

    Das müsste man aber noch mal zu ende durchtesten. Das mit dem Scale könnte man vermutlich im Adapter-Quellcode selbst eintragen.

    Ich habe mal einen Issue dazu eröffnet:
    https://github.com/foxriver76/ioBroker.puppeteer/issues/16

    BernhardLinz created this issue in foxriver76/ioBroker.puppeteer

    closed Option für "--force-device-scale-factor=" hinzufügen #16

    B Offline
    B Offline
    bimmi
    wrote on last edited by
    #536

    @bananajoe super das mit dem issue.

    Würde es Sinn machen, das resize der Bilder dann über Javascript zu erledigen? Ich meine mit imgmagic. Leider haben die esp32 nicht so viel Leistung, das man den resize dort erledigen würde. Das war schon mal in der Diskussion soweit ich mich erinnern kann.

    Eine weitere Idee wäre einen .webp Screenshot zu machen und diesen dann mit imgmagic in jpg umzuwandeln. Kannst du das mal in deiner vm testen? Ohne Skalierung.

    Gruß Bimmi

    iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

    BananaJoeB 1 Reply Last reply
    0
    • B bimmi

      @bananajoe super das mit dem issue.

      Würde es Sinn machen, das resize der Bilder dann über Javascript zu erledigen? Ich meine mit imgmagic. Leider haben die esp32 nicht so viel Leistung, das man den resize dort erledigen würde. Das war schon mal in der Diskussion soweit ich mich erinnern kann.

      Eine weitere Idee wäre einen .webp Screenshot zu machen und diesen dann mit imgmagic in jpg umzuwandeln. Kannst du das mal in deiner vm testen? Ohne Skalierung.

      BananaJoeB Offline
      BananaJoeB Offline
      BananaJoe
      Most Active
      wrote on last edited by
      #537

      @bimmi sagte in EPS E-INK Display Ansteuerung -> Statusdisplay für 2€:

      Eine weitere Idee wäre einen .webp Screenshot zu machen und diesen dann mit imgmagic in jpg umzuwandeln. Kannst du das mal in deiner vm testen? Ohne Skalierung.

      also sowohl puppeteer als playwright unterstützen nur png und jpeg. png wäre ja auch Verlustfrei, sieht aber 1:1 aus wie JPG
      Und du meinst ImageMagick? da gibt es auch für JavaScript eine Bibliothek dafür:
      https://stackoverflow.com/questions/30274534/nodejs-running-imagemagick-convert-all-images-from-directory

      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

      B 1 Reply Last reply
      0
      • BananaJoeB BananaJoe

        @bimmi sagte in EPS E-INK Display Ansteuerung -> Statusdisplay für 2€:

        Eine weitere Idee wäre einen .webp Screenshot zu machen und diesen dann mit imgmagic in jpg umzuwandeln. Kannst du das mal in deiner vm testen? Ohne Skalierung.

        also sowohl puppeteer als playwright unterstützen nur png und jpeg. png wäre ja auch Verlustfrei, sieht aber 1:1 aus wie JPG
        Und du meinst ImageMagick? da gibt es auch für JavaScript eine Bibliothek dafür:
        https://stackoverflow.com/questions/30274534/nodejs-running-imagemagick-convert-all-images-from-directory

        B Offline
        B Offline
        bimmi
        wrote on last edited by
        #538

        @bananajoe ja imagemagic. Das hattest Du ja zum konvertieren genutzt.

        Ja, der Adapter beschränkt die Screenshot aufnahme auf jpg und png. Aber da Du ja eh auf der Kommandozeile unterwegs bist, dachte ich mir du hättest die Muße/Zeit das mal unabhängig vom iobroker zu testen mit einem webp Screenshot. Der soll soweit ich weiß Verlustfrei sein.

        Entschuldige, ich hab vergessen den Link mit dazu zu packen! https://screenshotone.com/blog/taking-screenshots-with-puppeteer-in-gif-jp2-tiff-avif-heif-or-svg-format/

        Gruß Bimmi

        iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

        BananaJoeB 1 Reply Last reply
        0
        • B bimmi

          @bananajoe ja imagemagic. Das hattest Du ja zum konvertieren genutzt.

          Ja, der Adapter beschränkt die Screenshot aufnahme auf jpg und png. Aber da Du ja eh auf der Kommandozeile unterwegs bist, dachte ich mir du hättest die Muße/Zeit das mal unabhängig vom iobroker zu testen mit einem webp Screenshot. Der soll soweit ich weiß Verlustfrei sein.

          Entschuldige, ich hab vergessen den Link mit dazu zu packen! https://screenshotone.com/blog/taking-screenshots-with-puppeteer-in-gif-jp2-tiff-avif-heif-or-svg-format/

          BananaJoeB Offline
          BananaJoeB Offline
          BananaJoe
          Most Active
          wrote on last edited by
          #539

          @bimmi aber ja sinnfrei? *.png ist doch schon verlustfrei (außer man trickst extra).
          Das "schwammige" scheint ja zudem von der Browser-Engine bzw. dessen Screenshot-Funktion - was man mit dem Upscale überwindet. Mag ja auch andere Optionen geben die das können.

          Nebenbei ist das mit Playwright schon cool, ich manche beruflich ja auch Monitoring und hab schon umfangreiche Tests geschrieben um z.B. die Geschwindigkeit von Applikationen zu testen / zu monitoren.
          Alles im Webbrowser war da ziemlich kompliziert, zumindest wenn es dann eine JavaScript-Weboberfläche war die dynamisch nachlädt. Mit Playwright eröffnen sich ja völlig neue Möglichkeiten.

          ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

          B 1 Reply Last reply
          0
          • BananaJoeB BananaJoe

            @bimmi aber ja sinnfrei? *.png ist doch schon verlustfrei (außer man trickst extra).
            Das "schwammige" scheint ja zudem von der Browser-Engine bzw. dessen Screenshot-Funktion - was man mit dem Upscale überwindet. Mag ja auch andere Optionen geben die das können.

            Nebenbei ist das mit Playwright schon cool, ich manche beruflich ja auch Monitoring und hab schon umfangreiche Tests geschrieben um z.B. die Geschwindigkeit von Applikationen zu testen / zu monitoren.
            Alles im Webbrowser war da ziemlich kompliziert, zumindest wenn es dann eine JavaScript-Weboberfläche war die dynamisch nachlädt. Mit Playwright eröffnen sich ja völlig neue Möglichkeiten.

            B Offline
            B Offline
            bimmi
            wrote on last edited by
            #540

            @bananajoe ach richtig 🦌 .png ist ja schon verlustfrei.

            Dann macht das natürlich keinen Sinn. Ich dachte mir das andere Renderbedingungen gesetzt werden über puppeteer selber.

            Um Playwright in JavaScript zu implementieren, müsste man händisch vorher schon die entsprechenden Module über die Kommandozeile installieren. Das wird für viele komplizierter als über den Puppeteer Adapter. Zusätzlich kommt ja dann noch die Skalierung und Konvertierung.

            Ein JavaScript müsste dann sozusagen:

            1. Entsprechende Ordner anlegen (original, konvertiert) -> die Frage ist wo im Filesystem? Unter userdata - da gibt es doch inzwischen die Möglichkeit für eigene Dateien?
            2. Screenshot 4x skaliert ausführen mit Playwright und ablegen in Ordner "Original"
            3. Mit ImageMagic das Bild konvertieren und wieder runterskalieren.
            4. Ablegen im Ordner "konvertiert"
            5. Das OK geben, dass es fertig ist und an den entsprechenden AP senden.

            Sieht kompliziert aus, aber ist machbar glaub ich.

            Gruß Bimmi

            iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

            BananaJoeB 1 Reply Last reply
            0
            • B bimmi

              @bananajoe ach richtig 🦌 .png ist ja schon verlustfrei.

              Dann macht das natürlich keinen Sinn. Ich dachte mir das andere Renderbedingungen gesetzt werden über puppeteer selber.

              Um Playwright in JavaScript zu implementieren, müsste man händisch vorher schon die entsprechenden Module über die Kommandozeile installieren. Das wird für viele komplizierter als über den Puppeteer Adapter. Zusätzlich kommt ja dann noch die Skalierung und Konvertierung.

              Ein JavaScript müsste dann sozusagen:

              1. Entsprechende Ordner anlegen (original, konvertiert) -> die Frage ist wo im Filesystem? Unter userdata - da gibt es doch inzwischen die Möglichkeit für eigene Dateien?
              2. Screenshot 4x skaliert ausführen mit Playwright und ablegen in Ordner "Original"
              3. Mit ImageMagic das Bild konvertieren und wieder runterskalieren.
              4. Ablegen im Ordner "konvertiert"
              5. Das OK geben, dass es fertig ist und an den entsprechenden AP senden.

              Sieht kompliziert aus, aber ist machbar glaub ich.

              BananaJoeB Offline
              BananaJoeB Offline
              BananaJoe
              Most Active
              wrote on last edited by
              #541

              @bimmi naja, ich würde schummeln und für den Benutzer iobroker die Python-Variante installieren, das geht am iobroker vorbei und stellt die entsprechenden Bash-Befehle zur Verfügung.
              Playwright für Linux läuft nur unter "Debian 11, Debian 12, Ubuntu 20.04 or Ubuntu 22.04.", aber das ist ja für mich kein Problem. Vermutlich findet sich auch ein Docker Container damit.

              Mein Python-Testskript würde ich umbauen das es Parameter annimmt und auch gleich die Konvertierung im Anschluss durchführt.

              Der Orner ist im Zweifel /tmp, auf meinen Server habe ich Apache2 sowieso schon als Webserver laufen um die Bilder auszuliefern, also speichere ich alles unter halb des Stammverzeichnisses /var/www/html/openepaper, auf den letzten Ordner hat der iobroker Benutzer schreibberechtigungen.

              Die Tags holen sich das per "Image URL" und gut ist.

              Jetzt muss ich aber auch gestehen das das mit der schlechten Qualität mir so nicht sofort aufgefallen ist, so nahe dran war ich normalerweise nicht. Jetzt sehe ich das natürlich.

              Wenn man Puppeteer bzw. den Adapter zu einem Scaling überreden könnte, könnte man das auch sicherlich weiterhin so machen. (mal sehen wie rot dann aussieht). Alternativ könnte ich noch mal testen einfach meine View 4x so groß zu machen, aber ich meine das hatte ich schon getestet und es war nicht besser

              ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

              B 1 Reply Last reply
              0
              • BananaJoeB BananaJoe

                @bimmi naja, ich würde schummeln und für den Benutzer iobroker die Python-Variante installieren, das geht am iobroker vorbei und stellt die entsprechenden Bash-Befehle zur Verfügung.
                Playwright für Linux läuft nur unter "Debian 11, Debian 12, Ubuntu 20.04 or Ubuntu 22.04.", aber das ist ja für mich kein Problem. Vermutlich findet sich auch ein Docker Container damit.

                Mein Python-Testskript würde ich umbauen das es Parameter annimmt und auch gleich die Konvertierung im Anschluss durchführt.

                Der Orner ist im Zweifel /tmp, auf meinen Server habe ich Apache2 sowieso schon als Webserver laufen um die Bilder auszuliefern, also speichere ich alles unter halb des Stammverzeichnisses /var/www/html/openepaper, auf den letzten Ordner hat der iobroker Benutzer schreibberechtigungen.

                Die Tags holen sich das per "Image URL" und gut ist.

                Jetzt muss ich aber auch gestehen das das mit der schlechten Qualität mir so nicht sofort aufgefallen ist, so nahe dran war ich normalerweise nicht. Jetzt sehe ich das natürlich.

                Wenn man Puppeteer bzw. den Adapter zu einem Scaling überreden könnte, könnte man das auch sicherlich weiterhin so machen. (mal sehen wie rot dann aussieht). Alternativ könnte ich noch mal testen einfach meine View 4x so groß zu machen, aber ich meine das hatte ich schon getestet und es war nicht besser

                B Offline
                B Offline
                bimmi
                wrote on last edited by bimmi
                #542

                @bananajoe Ich handhabe das wie Du mit dem Apache2. Jedoch schicke ich die Bilder zum AP. Dann brauch ich den AP nicht ständig nach einer Änderung suchen lassen. Ich hab den Webserver einfach damit ich schnell nachsehen kann, was für Screenshots generiert werden und für die Test Displays.

                Sagen wir es so, es fällt mir insoweit auf, da ich auf zwei Displays die Schrift recht klein habe und dann hier auch inzwischen Chroma Bildschirme hab mit 7,4". Da fällt es schon ordentlich auf leider.

                Für mich wäre das kein Problem mit der Python Variante jedoch glaube ich dass es hier dann den ein oder anderen Straucheln wird. Daher so einfach wie Möglich.

                Gruß Bimmi

                iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

                BananaJoeB 1 Reply Last reply
                0
                • B bimmi

                  @bananajoe Ich handhabe das wie Du mit dem Apache2. Jedoch schicke ich die Bilder zum AP. Dann brauch ich den AP nicht ständig nach einer Änderung suchen lassen. Ich hab den Webserver einfach damit ich schnell nachsehen kann, was für Screenshots generiert werden und für die Test Displays.

                  Sagen wir es so, es fällt mir insoweit auf, da ich auf zwei Displays die Schrift recht klein habe und dann hier auch inzwischen Chroma Bildschirme hab mit 7,4". Da fällt es schon ordentlich auf leider.

                  Für mich wäre das kein Problem mit der Python Variante jedoch glaube ich dass es hier dann den ein oder anderen Straucheln wird. Daher so einfach wie Möglich.

                  BananaJoeB Offline
                  BananaJoeB Offline
                  BananaJoe
                  Most Active
                  wrote on last edited by BananaJoe
                  #543

                  @bimmi so, ich habe nun auf Playwright umgebaut.

                  das Ganze funktioniert nur unter Debian 11, Debian 12, Ubuntu 20.04 der Ubuntu 22.04

                  • Playwright für Python gemäß https://playwright.dev/python/docs/intro installieren
                  • Apache2 und Imagemagick installieren
                  sudo apt install apache2 imagemagick
                  
                  • einmal zum Benutzer iobroker wechseln und auch dort das install ausführen
                  sudo -u iobroker /usr/bin/bash
                  playwright install
                  

                  Mein iobroker-Benutzer hat ein /home/iobroker, ich hoffe das ist bei euch auch so

                  Einen Ordner für die Bilder erstellen im Apache2 Verzeichnis und den iobroker-Benutzer drauf berechtigen

                  sudo mkdir /var/www/html/openepaper
                  chown iobroker:iobroker /var/www/html/openepaper
                  

                  Ich nutze ein eigenes Projekt openepaper in der VIS. Die Views ggf. bearbeiten so das es einen eindeutigen Text gibt der gefunden werden kann, am besten einfach als basic - HTML Widget:
                  6fe8490c-9c6a-4338-b01d-28d9b990b731-image.png

                  Folgendes Python Skript erstellen:

                  sudo -u iobroker /usr/bin/bash
                  nano /var/www/html/openepaper/getscreenshots.py
                  

                  Inhalt:

                  #!/usr/bin/python3
                  # -*- coding: utf-8 -*-
                  import subprocess
                  from playwright.sync_api import sync_playwright, Page, expect
                  
                  playwright = sync_playwright().start()
                  
                  #browser = playwright.chromium.launch()
                  #browser = playwright.webkit.launch()
                  browser = playwright.firefox.launch()
                  context = browser.new_context(
                    viewport={"width":800, "height":600},
                    device_scale_factor=4,
                  
                  )
                  page = context.new_page()
                  
                  # Schritt 1: Kühlschrank
                  page.goto("http://192.168.1.8:60008/vis/index.html?openepaper#Kuehlschrank01")
                  expect(page.get_by_text("Kuehlschrank01")).to_be_visible()
                  #page.screenshot(path="/var/www/html/openepaper/Kuehlschrank01_4x.jpg",clip={"x":0,"y":0,"width":296,"height":128},quality=100,type="jpeg")
                  page.screenshot(path="/var/www/html/openepaper/Kuehlschrank01_4x.png",clip={"x":0,"y":0,"width":296,"height":128},type="png")
                  myconvert=subprocess.call(['/usr/bin/convert', '/var/www/html/openepaper/Kuehlschrank01_4x.png', '-sample', '296x128', '-quality', '100', '-sampling-factor', '4:4:4', '-brightness-contrast', '0x99', '/var/www/html/openepaper/Kuehlschrank01.jpg' ])
                  
                  # Schritt 2: Pylontech
                  page.goto("http://192.168.1.8:60008/vis/index.html?openepaper#Pylontech")
                  expect(page.get_by_text("Pylontech")).to_be_visible()
                  #page.screenshot(path="/var/www/html/openepaper/Pylontech_4x.jpg",clip={"x":0,"y":0,"width":296,"height":128},quality=100,type="jpeg")
                  page.screenshot(path="/var/www/html/openepaper/Pylontech_4x.png",clip={"x":0,"y":0,"width":296,"height":128},type="png")
                  myconvert=subprocess.call(['/usr/bin/convert', '/var/www/html/openepaper/Pylontech_4x.png', '-sample', '296x128', '-quality', '100', '-sampling-factor', '4:4:4', '-brightness-contrast', '0x99', '/var/www/html/openepaper/Pylontech.jpg' ])
                  
                  # Schritt 3: Briefkasten
                  page.goto("http://192.168.1.8:60008/vis/index.html?openepaper#Briefkasten")
                  expect(page.get_by_text("Briefkasten")).to_be_visible()
                  #page.screenshot(path="/var/www/html/openepaper/Briefkasten_4x.jpg",clip={"x":0,"y":0,"width":296,"height":128},quality=100,type="jpeg")
                  page.screenshot(path="/var/www/html/openepaper/Briefkasten_4x.png",clip={"x":0,"y":0,"width":296,"height":128},type="png")
                  myconvert=subprocess.call(['/usr/bin/convert', '/var/www/html/openepaper/Briefkasten_4x.png', '-sample', '296x128', '-quality', '100', '-sampling-factor', '4:4:4', '-brightness-contrast', '0x99', '/var/www/html/openepaper/Briefkasten.jpg' ])
                  
                  # Schritt 4: Fenster und Türen
                  page.goto("http://192.168.1.8:60008/vis/index.html?openepaper#EingangstuerV2")
                  expect(page.get_by_text("FensterTueren")).to_be_visible()
                  #page.screenshot(path="/var/www/html/openepaper/FensterTueren_4x.jpg",clip={"x":0,"y":0,"width":400,"height":300},quality=100,type="jpeg")
                  page.screenshot(path="/var/www/html/openepaper/FensterTueren_4x.png",clip={"x":0,"y":0,"width":400,"height":300},type="png")
                  myconvert=subprocess.call(['/usr/bin/convert', '/var/www/html/openepaper/FensterTueren_4x.png', '-sample', '400x300', '-quality', '100', '-sampling-factor', '4:4:4', '-brightness-contrast', '0x99', '/var/www/html/openepaper/FensterTueren.jpg' ])
                  
                  
                  browser.close()
                  
                  playwright.stop()
                  

                  Die Namen der Views, IP-Adressen und wie die Bilder heißen sollen und auf welchen Text gewartet wird müsst Ihr euch anpassen,
                  da sind 4 Abschnitte drin die 4 Views aufrufen, einen Screenshot machen und den dann verkleinern.
                  Alles mit festen Pfaden (ist halt Version 1), eine Version mit Parametern baue ich vielleicht noch.
                  Der Clou ist das hier nur einmal der Browser im Hintergrund gestartet wird, der die 4 Views nacheinander abfährt und den Browser wieder beendet.

                  Wer mag kann das Skript ausführbar machen:

                  chmod +x /var/www/html/openepaper/getscreenshots.py
                  

                  und einmal starten (als Benutzer iobroker):

                  /var/www/html/openepaper/getscreenshots.py
                  

                  oder

                  /usr/bin/python3 /var/www/html/openepaper/getscreenshots.py
                  

                  Er sollte dann im Verzeichnis gemäß der angegebenen Pfade die Bilder erzeugen:

                  iobroker@iobroker:/var/www/html/openepaper$ ll
                  insgesamt 420
                  drwxr-xr-x 2 iobroker iobroker   4096 Mai 16 17:24 ./
                  drwxr-xr-x 4 root     root       4096 Jan 12 21:52 ../
                  -rw-rw-r-- 1 iobroker iobroker  38499 Mai 16 17:24 Briefkasten_4x.png
                  -rw-r--r-- 1 iobroker iobroker   7536 Mai 16 17:24 Briefkasten.jpg
                  -rw-rw-r-- 1 iobroker iobroker 156072 Mai 16 17:24 FensterTueren_4x.png
                  -rw-rw-r-- 1 iobroker iobroker  68359 Mai 16 17:24 FensterTueren.jpg
                  -rwxrwxr-x 1 iobroker iobroker   3109 Mai 16 16:57 getscreenshots.py*
                  -rw-r--r-- 1 iobroker iobroker  50570 Mai 16 17:24 Kuehlschrank01_4x.png
                  -rw-r--r-- 1 iobroker iobroker  18065 Mai 16 17:24 Kuehlschrank01.jpg
                  -rw-rw-r-- 1 iobroker iobroker  43040 Mai 16 17:24 Pylontech_4x.png
                  -rw-r--r-- 1 iobroker iobroker  17854 Mai 16 17:24 Pylontech.jpg
                  

                  Wichtig ist das dort der Benutzer iobroker als Besitzer erscheint (sonst kann er die nicht wieder überschreiben).

                  In ioBroker habe ich ein Blockly alle 3 Minuten laufen welches die Bilder aktualisiert:
                  ec3aaae6-562e-4f6f-b722-b45e57f79fe7-image.png

                  <xml xmlns="https://developers.google.com/blockly/xml">
                    <block type="schedule" id="I@Xi9K`E)cpj?u^hk6E[" x="38" y="88">
                      <field name="SCHEDULE">*/3 * * * *</field>
                      <statement name="STATEMENT">
                        <block type="debug" id="nR!xMVgqj6aILf1dy6ZO">
                          <field name="Severity">info</field>
                          <value name="TEXT">
                            <shadow type="text" id="a]5x:UjSgJlBfq:3AbSw">
                              <field name="TEXT">Hole Screenshots: START</field>
                            </shadow>
                          </value>
                          <next>
                            <block type="exec" id=";lWJ!c~Y]Igd)dNFW@e*">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                              <field name="WITH_STATEMENT">TRUE</field>
                              <field name="LOG"></field>
                              <value name="COMMAND">
                                <shadow type="text" id="~,/J$q_:O!.?fpF:ZNrV">
                                  <field name="TEXT">pwd</field>
                                </shadow>
                                <block type="text" id="^OLvmFn|]S9!;Dzy-Am?">
                                  <field name="TEXT">/usr/bin/python3 /var/www/html/openepaper/getscreenshots.py</field>
                                </block>
                              </value>
                              <statement name="STATEMENT">
                                <block type="debug" id="7_Mz//Q/kk93#w|R+!(=">
                                  <field name="Severity">info</field>
                                  <value name="TEXT">
                                    <shadow type="text" id="5wiPo,om^Ys$RT#_=TO-">
                                      <field name="TEXT">Hole Screenshots: STOP</field>
                                    </shadow>
                                  </value>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </statement>
                    </block>
                  </xml>
                  

                  Bei den Tags ist Image URL eingestellt, auch mit 3 Minuten:
                  bfe4e0d5-1906-476c-9f04-16b5f2269b44-image.png

                  Die Pfade der Bilder könnte Ihr ja vorher im Browser testen, bei mir sind diese so:

                  http://192.168.1.8/openepaper/Kuehlschrank01.jpg
                  

                  Kompliziert, aber fügt ja für jede View nur einmal hinzu. Und man muss das ja nur machen wenn man sich an der Qualität von Puppeteer stört, vielleicht passiert da ja noch etwas.

                  Ich habe den convert Befehl übrigens noch mal erweitert:

                  convert Kuehlschrank01_4x.jpg -sample 296x128 -quality 100 -sampling-factor 4:4:4 -brightness-contrast 0x99 Kuehlschrank01.jpg
                  

                  Weil in der OpenEPaperLink Hilfe steht das man ein Subsampling von 4:4:4 besser sei. Eventuell ist das ganze Problem auch da falls der Browser sonst mit 4:2:0 arbeitet. Für TS / TypeScript habe ich eine Beschreibung für Playwright gefunden wie man das Subsampling festlegen kann, habe aber noch nicht herausgefunden wie ich das in Python setzen könnte (Scheint auch nur mit Chrome zu gehen)

                  ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

                  B 1 Reply Last reply
                  1
                  • BananaJoeB BananaJoe

                    @bimmi so, ich habe nun auf Playwright umgebaut.

                    das Ganze funktioniert nur unter Debian 11, Debian 12, Ubuntu 20.04 der Ubuntu 22.04

                    • Playwright für Python gemäß https://playwright.dev/python/docs/intro installieren
                    • Apache2 und Imagemagick installieren
                    sudo apt install apache2 imagemagick
                    
                    • einmal zum Benutzer iobroker wechseln und auch dort das install ausführen
                    sudo -u iobroker /usr/bin/bash
                    playwright install
                    

                    Mein iobroker-Benutzer hat ein /home/iobroker, ich hoffe das ist bei euch auch so

                    Einen Ordner für die Bilder erstellen im Apache2 Verzeichnis und den iobroker-Benutzer drauf berechtigen

                    sudo mkdir /var/www/html/openepaper
                    chown iobroker:iobroker /var/www/html/openepaper
                    

                    Ich nutze ein eigenes Projekt openepaper in der VIS. Die Views ggf. bearbeiten so das es einen eindeutigen Text gibt der gefunden werden kann, am besten einfach als basic - HTML Widget:
                    6fe8490c-9c6a-4338-b01d-28d9b990b731-image.png

                    Folgendes Python Skript erstellen:

                    sudo -u iobroker /usr/bin/bash
                    nano /var/www/html/openepaper/getscreenshots.py
                    

                    Inhalt:

                    #!/usr/bin/python3
                    # -*- coding: utf-8 -*-
                    import subprocess
                    from playwright.sync_api import sync_playwright, Page, expect
                    
                    playwright = sync_playwright().start()
                    
                    #browser = playwright.chromium.launch()
                    #browser = playwright.webkit.launch()
                    browser = playwright.firefox.launch()
                    context = browser.new_context(
                      viewport={"width":800, "height":600},
                      device_scale_factor=4,
                    
                    )
                    page = context.new_page()
                    
                    # Schritt 1: Kühlschrank
                    page.goto("http://192.168.1.8:60008/vis/index.html?openepaper#Kuehlschrank01")
                    expect(page.get_by_text("Kuehlschrank01")).to_be_visible()
                    #page.screenshot(path="/var/www/html/openepaper/Kuehlschrank01_4x.jpg",clip={"x":0,"y":0,"width":296,"height":128},quality=100,type="jpeg")
                    page.screenshot(path="/var/www/html/openepaper/Kuehlschrank01_4x.png",clip={"x":0,"y":0,"width":296,"height":128},type="png")
                    myconvert=subprocess.call(['/usr/bin/convert', '/var/www/html/openepaper/Kuehlschrank01_4x.png', '-sample', '296x128', '-quality', '100', '-sampling-factor', '4:4:4', '-brightness-contrast', '0x99', '/var/www/html/openepaper/Kuehlschrank01.jpg' ])
                    
                    # Schritt 2: Pylontech
                    page.goto("http://192.168.1.8:60008/vis/index.html?openepaper#Pylontech")
                    expect(page.get_by_text("Pylontech")).to_be_visible()
                    #page.screenshot(path="/var/www/html/openepaper/Pylontech_4x.jpg",clip={"x":0,"y":0,"width":296,"height":128},quality=100,type="jpeg")
                    page.screenshot(path="/var/www/html/openepaper/Pylontech_4x.png",clip={"x":0,"y":0,"width":296,"height":128},type="png")
                    myconvert=subprocess.call(['/usr/bin/convert', '/var/www/html/openepaper/Pylontech_4x.png', '-sample', '296x128', '-quality', '100', '-sampling-factor', '4:4:4', '-brightness-contrast', '0x99', '/var/www/html/openepaper/Pylontech.jpg' ])
                    
                    # Schritt 3: Briefkasten
                    page.goto("http://192.168.1.8:60008/vis/index.html?openepaper#Briefkasten")
                    expect(page.get_by_text("Briefkasten")).to_be_visible()
                    #page.screenshot(path="/var/www/html/openepaper/Briefkasten_4x.jpg",clip={"x":0,"y":0,"width":296,"height":128},quality=100,type="jpeg")
                    page.screenshot(path="/var/www/html/openepaper/Briefkasten_4x.png",clip={"x":0,"y":0,"width":296,"height":128},type="png")
                    myconvert=subprocess.call(['/usr/bin/convert', '/var/www/html/openepaper/Briefkasten_4x.png', '-sample', '296x128', '-quality', '100', '-sampling-factor', '4:4:4', '-brightness-contrast', '0x99', '/var/www/html/openepaper/Briefkasten.jpg' ])
                    
                    # Schritt 4: Fenster und Türen
                    page.goto("http://192.168.1.8:60008/vis/index.html?openepaper#EingangstuerV2")
                    expect(page.get_by_text("FensterTueren")).to_be_visible()
                    #page.screenshot(path="/var/www/html/openepaper/FensterTueren_4x.jpg",clip={"x":0,"y":0,"width":400,"height":300},quality=100,type="jpeg")
                    page.screenshot(path="/var/www/html/openepaper/FensterTueren_4x.png",clip={"x":0,"y":0,"width":400,"height":300},type="png")
                    myconvert=subprocess.call(['/usr/bin/convert', '/var/www/html/openepaper/FensterTueren_4x.png', '-sample', '400x300', '-quality', '100', '-sampling-factor', '4:4:4', '-brightness-contrast', '0x99', '/var/www/html/openepaper/FensterTueren.jpg' ])
                    
                    
                    browser.close()
                    
                    playwright.stop()
                    

                    Die Namen der Views, IP-Adressen und wie die Bilder heißen sollen und auf welchen Text gewartet wird müsst Ihr euch anpassen,
                    da sind 4 Abschnitte drin die 4 Views aufrufen, einen Screenshot machen und den dann verkleinern.
                    Alles mit festen Pfaden (ist halt Version 1), eine Version mit Parametern baue ich vielleicht noch.
                    Der Clou ist das hier nur einmal der Browser im Hintergrund gestartet wird, der die 4 Views nacheinander abfährt und den Browser wieder beendet.

                    Wer mag kann das Skript ausführbar machen:

                    chmod +x /var/www/html/openepaper/getscreenshots.py
                    

                    und einmal starten (als Benutzer iobroker):

                    /var/www/html/openepaper/getscreenshots.py
                    

                    oder

                    /usr/bin/python3 /var/www/html/openepaper/getscreenshots.py
                    

                    Er sollte dann im Verzeichnis gemäß der angegebenen Pfade die Bilder erzeugen:

                    iobroker@iobroker:/var/www/html/openepaper$ ll
                    insgesamt 420
                    drwxr-xr-x 2 iobroker iobroker   4096 Mai 16 17:24 ./
                    drwxr-xr-x 4 root     root       4096 Jan 12 21:52 ../
                    -rw-rw-r-- 1 iobroker iobroker  38499 Mai 16 17:24 Briefkasten_4x.png
                    -rw-r--r-- 1 iobroker iobroker   7536 Mai 16 17:24 Briefkasten.jpg
                    -rw-rw-r-- 1 iobroker iobroker 156072 Mai 16 17:24 FensterTueren_4x.png
                    -rw-rw-r-- 1 iobroker iobroker  68359 Mai 16 17:24 FensterTueren.jpg
                    -rwxrwxr-x 1 iobroker iobroker   3109 Mai 16 16:57 getscreenshots.py*
                    -rw-r--r-- 1 iobroker iobroker  50570 Mai 16 17:24 Kuehlschrank01_4x.png
                    -rw-r--r-- 1 iobroker iobroker  18065 Mai 16 17:24 Kuehlschrank01.jpg
                    -rw-rw-r-- 1 iobroker iobroker  43040 Mai 16 17:24 Pylontech_4x.png
                    -rw-r--r-- 1 iobroker iobroker  17854 Mai 16 17:24 Pylontech.jpg
                    

                    Wichtig ist das dort der Benutzer iobroker als Besitzer erscheint (sonst kann er die nicht wieder überschreiben).

                    In ioBroker habe ich ein Blockly alle 3 Minuten laufen welches die Bilder aktualisiert:
                    ec3aaae6-562e-4f6f-b722-b45e57f79fe7-image.png

                    <xml xmlns="https://developers.google.com/blockly/xml">
                      <block type="schedule" id="I@Xi9K`E)cpj?u^hk6E[" x="38" y="88">
                        <field name="SCHEDULE">*/3 * * * *</field>
                        <statement name="STATEMENT">
                          <block type="debug" id="nR!xMVgqj6aILf1dy6ZO">
                            <field name="Severity">info</field>
                            <value name="TEXT">
                              <shadow type="text" id="a]5x:UjSgJlBfq:3AbSw">
                                <field name="TEXT">Hole Screenshots: START</field>
                              </shadow>
                            </value>
                            <next>
                              <block type="exec" id=";lWJ!c~Y]Igd)dNFW@e*">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                <field name="WITH_STATEMENT">TRUE</field>
                                <field name="LOG"></field>
                                <value name="COMMAND">
                                  <shadow type="text" id="~,/J$q_:O!.?fpF:ZNrV">
                                    <field name="TEXT">pwd</field>
                                  </shadow>
                                  <block type="text" id="^OLvmFn|]S9!;Dzy-Am?">
                                    <field name="TEXT">/usr/bin/python3 /var/www/html/openepaper/getscreenshots.py</field>
                                  </block>
                                </value>
                                <statement name="STATEMENT">
                                  <block type="debug" id="7_Mz//Q/kk93#w|R+!(=">
                                    <field name="Severity">info</field>
                                    <value name="TEXT">
                                      <shadow type="text" id="5wiPo,om^Ys$RT#_=TO-">
                                        <field name="TEXT">Hole Screenshots: STOP</field>
                                      </shadow>
                                    </value>
                                  </block>
                                </statement>
                              </block>
                            </next>
                          </block>
                        </statement>
                      </block>
                    </xml>
                    

                    Bei den Tags ist Image URL eingestellt, auch mit 3 Minuten:
                    bfe4e0d5-1906-476c-9f04-16b5f2269b44-image.png

                    Die Pfade der Bilder könnte Ihr ja vorher im Browser testen, bei mir sind diese so:

                    http://192.168.1.8/openepaper/Kuehlschrank01.jpg
                    

                    Kompliziert, aber fügt ja für jede View nur einmal hinzu. Und man muss das ja nur machen wenn man sich an der Qualität von Puppeteer stört, vielleicht passiert da ja noch etwas.

                    Ich habe den convert Befehl übrigens noch mal erweitert:

                    convert Kuehlschrank01_4x.jpg -sample 296x128 -quality 100 -sampling-factor 4:4:4 -brightness-contrast 0x99 Kuehlschrank01.jpg
                    

                    Weil in der OpenEPaperLink Hilfe steht das man ein Subsampling von 4:4:4 besser sei. Eventuell ist das ganze Problem auch da falls der Browser sonst mit 4:2:0 arbeitet. Für TS / TypeScript habe ich eine Beschreibung für Playwright gefunden wie man das Subsampling festlegen kann, habe aber noch nicht herausgefunden wie ich das in Python setzen könnte (Scheint auch nur mit Chrome zu gehen)

                    B Offline
                    B Offline
                    bimmi
                    wrote on last edited by
                    #544

                    @bananajoe top!!

                    Ich teste das diese Woche noch! Hatte heute mal angefangen und gleich das erste Problem kein pip installiert 😁 hatte aber keine Zeit das heute alles zu machen.

                    Ich muss mich spielen damit!

                    Gruß Bimmi

                    iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

                    BananaJoeB 1 Reply Last reply
                    0
                    • B bimmi

                      @bananajoe top!!

                      Ich teste das diese Woche noch! Hatte heute mal angefangen und gleich das erste Problem kein pip installiert 😁 hatte aber keine Zeit das heute alles zu machen.

                      Ich muss mich spielen damit!

                      BananaJoeB Offline
                      BananaJoeB Offline
                      BananaJoe
                      Most Active
                      wrote on last edited by
                      #545

                      @bimmi das normale apt install python3-pip reicht. Allerdings nur bis Ubuntu 22.04 / Debian 12.

                      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

                      B 1 Reply Last reply
                      1
                      • BananaJoeB BananaJoe

                        @bimmi das normale apt install python3-pip reicht. Allerdings nur bis Ubuntu 22.04 / Debian 12.

                        B Offline
                        B Offline
                        bimmi
                        wrote on last edited by bimmi
                        #546

                        @bananajoe so, ich hab es zum laufen gebracht 😁👍 es läuft gut! Erst mal nur für 1 Display, da ich erst mal meine skripte anpassen muß. Jetzt wäre es noch gut, wenn dein Skript die Datenpunkte nutzen würde...

                        Ich hab mir schon überlegt den puppeteer Adapter zu forken und auf playwright umzubauen 😂 weiß aber noch nicht, ob das so einfach machbar ist.

                        Gruß Bimmi

                        iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

                        B BananaJoeB 2 Replies Last reply
                        0
                        • B bimmi

                          @bananajoe so, ich hab es zum laufen gebracht 😁👍 es läuft gut! Erst mal nur für 1 Display, da ich erst mal meine skripte anpassen muß. Jetzt wäre es noch gut, wenn dein Skript die Datenpunkte nutzen würde...

                          Ich hab mir schon überlegt den puppeteer Adapter zu forken und auf playwright umzubauen 😂 weiß aber noch nicht, ob das so einfach machbar ist.

                          B Offline
                          B Offline
                          Beowolf
                          wrote on last edited by
                          #547

                          @bimmi sagte in EPS E-INK Display Ansteuerung -> Statusdisplay für 2€:

                          puppeteer Adapter zu forken und auf playwright umzubauen

                          Wäre das dann schon bald ein eigener Adapter?

                          Die Natur braucht nicht unseren Schutz, sie braucht unsere Abwesenheit.

                          B 1 Reply Last reply
                          1
                          • B Beowolf

                            @bimmi sagte in EPS E-INK Display Ansteuerung -> Statusdisplay für 2€:

                            puppeteer Adapter zu forken und auf playwright umzubauen

                            Wäre das dann schon bald ein eigener Adapter?

                            B Offline
                            B Offline
                            bimmi
                            wrote on last edited by
                            #548

                            @beowolf ich habe noch nie einen geschrieben 😂 aber vielleicht ist es machbar den puppeteer Adapter so weit zu ändern, dass daraus ein playwright Adapter wird.

                            Ich hätte gerne alles in einem und nicht verschiedene skripte.

                            • Infos und Daten vom AP (geht ja bereits)
                            • json Templates
                            • Screenshots generieren, skalieren, rendern usw
                            • Export auf AP

                            Aber das ist alles noch weit entfernt 😁😁😁

                            Gruß Bimmi

                            iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

                            B 1 Reply Last reply
                            0
                            • B bimmi

                              @beowolf ich habe noch nie einen geschrieben 😂 aber vielleicht ist es machbar den puppeteer Adapter so weit zu ändern, dass daraus ein playwright Adapter wird.

                              Ich hätte gerne alles in einem und nicht verschiedene skripte.

                              • Infos und Daten vom AP (geht ja bereits)
                              • json Templates
                              • Screenshots generieren, skalieren, rendern usw
                              • Export auf AP

                              Aber das ist alles noch weit entfernt 😁😁😁

                              B Offline
                              B Offline
                              Beowolf
                              wrote on last edited by
                              #549

                              @bimmi

                              Ist ja jetzt laaaannnnges Wochenende. 😊

                              Die Natur braucht nicht unseren Schutz, sie braucht unsere Abwesenheit.

                              1 Reply Last reply
                              0
                              • B bimmi

                                @bananajoe so, ich hab es zum laufen gebracht 😁👍 es läuft gut! Erst mal nur für 1 Display, da ich erst mal meine skripte anpassen muß. Jetzt wäre es noch gut, wenn dein Skript die Datenpunkte nutzen würde...

                                Ich hab mir schon überlegt den puppeteer Adapter zu forken und auf playwright umzubauen 😂 weiß aber noch nicht, ob das so einfach machbar ist.

                                BananaJoeB Offline
                                BananaJoeB Offline
                                BananaJoe
                                Most Active
                                wrote on last edited by BananaJoe
                                #550

                                @bimmi sagte in EPS E-INK Display Ansteuerung -> Statusdisplay für 2€:

                                Jetzt wäre es noch gut, wenn dein Skript die Datenpunkte nutzen würde...

                                Ich schau mal ob ich dieses Wochenende dazu komme, bin gerade beim Umbauen der Akku-Ladesteuerung der Solaranlage. Ich habe das in anderen Python Skripten schon gemacht, muss also nur bei mir selbst abschauen

                                ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                1 Reply Last reply
                                1
                                • BananaJoeB Offline
                                  BananaJoeB Offline
                                  BananaJoe
                                  Most Active
                                  wrote on last edited by BananaJoe
                                  #551

                                  https://github.com/foxriver76/ioBroker.puppeteer/issues/16

                                  Er hat es eingebaut, in der 0.3.0 Version von Puppeteer könnte man das testen.
                                  Das hätte schon immer gehen sollen ...

                                  Ich muss jetzt erst einmal Essen vorbereiten, mal sehen ob ich heute noch dazu komme. Ihr dürft aber auch gerne.

                                  BernhardLinz created this issue in foxriver76/ioBroker.puppeteer

                                  closed Option für "--force-device-scale-factor=" hinzufügen #16

                                  ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                  1 Reply Last reply
                                  0
                                  • BananaJoeB Offline
                                    BananaJoeB Offline
                                    BananaJoe
                                    Most Active
                                    wrote on last edited by
                                    #552

                                    Und das funktioniert.

                                    In meinem Skript musste ich width und height aus dem allgemeinen rausnehmen und habe dann - wie für waitOption einen Abschnitt eingefügt in meine sendTo Anweisung:

                                        viewportOptions: {
                                            width: viewWidth,
                                            height: viewHeight,
                                            deviceScaleFactor: 4,
                                          },
                                    

                                    Es ginge also der alte Weg - mit dem Umweg über die Datei und einem convert, jetzt müsste man schauen ob man Skalieren auch in JavaScript hinbekommt (aber wie convert mit sample, also ohne das ein Blur hinzukommt)

                                    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                    B 1 Reply Last reply
                                    1
                                    • BananaJoeB BananaJoe

                                      Und das funktioniert.

                                      In meinem Skript musste ich width und height aus dem allgemeinen rausnehmen und habe dann - wie für waitOption einen Abschnitt eingefügt in meine sendTo Anweisung:

                                          viewportOptions: {
                                              width: viewWidth,
                                              height: viewHeight,
                                              deviceScaleFactor: 4,
                                            },
                                      

                                      Es ginge also der alte Weg - mit dem Umweg über die Datei und einem convert, jetzt müsste man schauen ob man Skalieren auch in JavaScript hinbekommt (aber wie convert mit sample, also ohne das ein Blur hinzukommt)

                                      B Offline
                                      B Offline
                                      bimmi
                                      wrote on last edited by
                                      #553

                                      @bananajoe sagte in EPS E-INK Display Ansteuerung -> Statusdisplay für 2€:

                                                                                                                                                                      viewportOptions: {                                                                                                                                                                                    width: viewWidth,                                                                                                                                                                                    height: viewHeight,                                                                                                                                                                                    deviceScaleFactor: 4,                                                                                                                                                                                  },
                                      

                                      ich glaub ich bin doof 😄 mein script sieht so aus:

                                      sendTo('puppeteer.0', 'screenshot', { 
                                          url: myurl,
                                          path: mypath,
                                          width: mywidth,
                                          quality: quality,
                                          height: myheight,
                                          waitOption: {
                                              waitForSelector: myselector,
                                          },
                                          viewport: {
                                              width: mywidth,
                                              height: myheight,
                                              deviceScaleFactor: 4,
                                          },
                                          fullPage: false,
                                          clip: {
                                              x: clipx,
                                              y: clipy,
                                              width: clipwidth,
                                              height: clipheight
                                          }
                                      });
                                      

                                      Da sollte er doch dann skalieren?

                                      Zum anschließenden convert auf /4 wäre evtl. die JS Bibliothek GraphicsMagick anbieten oder?

                                      Gruß Bimmi

                                      iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

                                      B 1 Reply Last reply
                                      0
                                      • B bimmi

                                        @bananajoe sagte in EPS E-INK Display Ansteuerung -> Statusdisplay für 2€:

                                                                                                                                                                        viewportOptions: {                                                                                                                                                                                    width: viewWidth,                                                                                                                                                                                    height: viewHeight,                                                                                                                                                                                    deviceScaleFactor: 4,                                                                                                                                                                                  },
                                        

                                        ich glaub ich bin doof 😄 mein script sieht so aus:

                                        sendTo('puppeteer.0', 'screenshot', { 
                                            url: myurl,
                                            path: mypath,
                                            width: mywidth,
                                            quality: quality,
                                            height: myheight,
                                            waitOption: {
                                                waitForSelector: myselector,
                                            },
                                            viewport: {
                                                width: mywidth,
                                                height: myheight,
                                                deviceScaleFactor: 4,
                                            },
                                            fullPage: false,
                                            clip: {
                                                x: clipx,
                                                y: clipy,
                                                width: clipwidth,
                                                height: clipheight
                                            }
                                        });
                                        

                                        Da sollte er doch dann skalieren?

                                        Zum anschließenden convert auf /4 wäre evtl. die JS Bibliothek GraphicsMagick anbieten oder?

                                        B Offline
                                        B Offline
                                        Beowolf
                                        wrote on last edited by
                                        #554

                                        @bimmi

                                        fehlt hinter clipheight nicht ein Komma?

                                        Die Natur braucht nicht unseren Schutz, sie braucht unsere Abwesenheit.

                                        B 1 Reply Last reply
                                        0
                                        • B Beowolf

                                          @bimmi

                                          fehlt hinter clipheight nicht ein Komma?

                                          B Offline
                                          B Offline
                                          bimmi
                                          wrote on last edited by
                                          #555

                                          @beowolf nein ich denke nicht. Aber so gehts:

                                          sendTo('puppeteer.0', 'screenshot', { 
                                              url: myurl,
                                              path: mypath,
                                              viewportOptions: {
                                                  width: viewWidth,
                                                  height: viewHeight,
                                                  deviceScaleFactor: 4,
                                              },
                                              quality: 100,
                                              waitOption: {
                                                  waitForSelector: myselector,
                                              },
                                              fullPage: false,
                                              clip: {
                                                  x: clipx,
                                                  y: clipy,
                                                  width: clipwidth,
                                                  height: clipheight
                                              }
                                          });
                                          

                                          bbfff21b-b44c-47cd-9af8-7d0ea98b8bab-image.png

                                          4x skaliertes Ergebnis!

                                          Gruß Bimmi

                                          iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          121

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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