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. Praktische Anwendungen (Showcase)
  4. E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill lĂ€uft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • MonatsrĂŒckblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
1.0k BeitrÀge 49 Kommentatoren 348.0k Aufrufe 52 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.
  • 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 Online
    BananaJoeB Online
    BananaJoe
    Most Active
    schrieb am zuletzt editiert von
    #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 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

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

      @bananajoe ach richtig :deer: .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 Antwort Letzte Antwort
      0
      • B bimmi

        @bananajoe ach richtig :deer: .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 Online
        BananaJoeB Online
        BananaJoe
        Most Active
        schrieb am zuletzt editiert von
        #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 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

        B 1 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
          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 Online
            BananaJoeB Online
            BananaJoe
            Most Active
            schrieb am zuletzt editiert von 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 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

            B 1 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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 Online
                BananaJoeB Online
                BananaJoe
                Most Active
                schrieb am zuletzt editiert von
                #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 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                B 1 Antwort Letzte Antwort
                1
                • BananaJoeB BananaJoe

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

                  B Offline
                  B Offline
                  bimmi
                  schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #549

                        @bimmi

                        Ist ja jetzt laaaannnnges Wochenende. :blush:

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

                        1 Antwort Letzte Antwort
                        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 Online
                          BananaJoeB Online
                          BananaJoe
                          Most Active
                          schrieb am zuletzt editiert von 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 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                          1 Antwort Letzte Antwort
                          1
                          • BananaJoeB Online
                            BananaJoeB Online
                            BananaJoe
                            Most Active
                            schrieb am zuletzt editiert von 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.

                            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 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                            1 Antwort Letzte Antwort
                            0
                            • BananaJoeB Online
                              BananaJoeB Online
                              BananaJoe
                              Most Active
                              schrieb am zuletzt editiert von
                              #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 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                              B 1 Antwort Letzte Antwort
                              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
                                schrieb am zuletzt editiert von
                                #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 :D 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 Antwort Letzte Antwort
                                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 :D 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
                                  schrieb am zuletzt editiert von
                                  #554

                                  @bimmi

                                  fehlt hinter clipheight nicht ein Komma?

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

                                  B 1 Antwort Letzte Antwort
                                  0
                                  • B Beowolf

                                    @bimmi

                                    fehlt hinter clipheight nicht ein Komma?

                                    B Offline
                                    B Offline
                                    bimmi
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    0
                                    • B Offline
                                      B Offline
                                      bimmi
                                      schrieb am zuletzt editiert von bimmi
                                      #556

                                      Vorsicht, ich habe aus versehen ein hochskaliertes Bild an meinen Chroma74 geschickt. Jetzt muss ich ihn neu flashen weil EEPROM FAILED.

                                      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 Antwort Letzte Antwort
                                      0
                                      • B Offline
                                        B Offline
                                        bimmi
                                        schrieb am zuletzt editiert von
                                        #557

                                        Also mit puppeteer, scale und anschließendem convert schaut das ganz schon um einiges besser aus!!!

                                        Quick and dirty getestet:

                                        convert Chroma74-Schreibtisch.jpg -sample 640x384 -quality 100 -sampling-factor 4:4:4 /var/www/html/openepaperlink/Chroma74-Schreibtisch_2.jpg
                                        

                                        Was mir jedoch fehlt ist die Farbe grau. Die wird im jpg zwar angezeigt, jedoch nicht am Bildschirm ĂŒbertragen.

                                        Original 4x Skaliert:
                                        73718044-6bc3-4058-bc29-28466a652d58-Chroma74-Schreibtisch.jpg

                                        Konvertiertes Bild ohne brightness-contrast:
                                        1839fb54-2b29-4f96-b821-bc1664da947f-Chroma74-Schreibtisch_2.jpg

                                        Konvertiertes Bild mit brightness-contrast:
                                        f3590810-1a88-4bdc-8678-86d7f62b0919-image.png

                                        d3a8a671-b764-4a7e-8189-ad3cd4bbb578-IMG_20240520_174037.jpg

                                        Hochgeladen habe ich das Bild wo das grau Sichtbar war. Es wird wohl durch das sampling der Farbwert geÀndert.

                                        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 Antworten Letzte Antwort
                                        0
                                        • B bimmi

                                          Also mit puppeteer, scale und anschließendem convert schaut das ganz schon um einiges besser aus!!!

                                          Quick and dirty getestet:

                                          convert Chroma74-Schreibtisch.jpg -sample 640x384 -quality 100 -sampling-factor 4:4:4 /var/www/html/openepaperlink/Chroma74-Schreibtisch_2.jpg
                                          

                                          Was mir jedoch fehlt ist die Farbe grau. Die wird im jpg zwar angezeigt, jedoch nicht am Bildschirm ĂŒbertragen.

                                          Original 4x Skaliert:
                                          73718044-6bc3-4058-bc29-28466a652d58-Chroma74-Schreibtisch.jpg

                                          Konvertiertes Bild ohne brightness-contrast:
                                          1839fb54-2b29-4f96-b821-bc1664da947f-Chroma74-Schreibtisch_2.jpg

                                          Konvertiertes Bild mit brightness-contrast:
                                          f3590810-1a88-4bdc-8678-86d7f62b0919-image.png

                                          d3a8a671-b764-4a7e-8189-ad3cd4bbb578-IMG_20240520_174037.jpg

                                          Hochgeladen habe ich das Bild wo das grau Sichtbar war. Es wird wohl durch das sampling der Farbwert geÀndert.

                                          B Offline
                                          B Offline
                                          Beowolf
                                          schrieb am zuletzt editiert von
                                          #558

                                          @bimmi

                                          Kannst du keinen Farbverlauf von weiß nach schwarz zum TAG senden? So sollte man do sehen welcher "Grau"-Wert dann grau ist, oder?

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

                                          B 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

                                          967

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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