Skip to content
  • Home
  • 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
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

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
1.0k Posts 49 Posters 365.4k Views 52 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.
  • 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 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 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 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 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. :blush:

                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 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 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.

                    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 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 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 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 :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 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 :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
                          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
                            • B Offline
                              B Offline
                              bimmi
                              wrote on last edited by 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 Reply Last reply
                              0
                              • B Offline
                                B Offline
                                bimmi
                                wrote on last edited by
                                #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 Replies Last reply
                                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
                                  wrote on last edited by
                                  #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 Reply Last reply
                                  0
                                  • B Beowolf

                                    @bimmi

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

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

                                    @beowolf grau ist 150 150 150 das passt schon. auch das konvertierte hat die 150 150 150 auch im grau. komisch. muss ich weiter beobachten!

                                    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
                                    • BananaJoeB Offline
                                      BananaJoeB Offline
                                      BananaJoe
                                      Most Active
                                      wrote on last edited by
                                      #560

                                      Aber ansonsten schon mal gestochen scharf :-)

                                      Aber ernsthaft? eine Uhr mit Sekunden ? Das erste was ich einem Freund von mir - der das nun auch nutzt - erklärt habe war: "Also als Uhr ist das nicht gedacht oder geeignet" ... der hatte es nämlich auch genau damit ausprobiert.

                                      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 Reply Last reply
                                      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.

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

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

                                        Es wird wohl durch das sampling der Farbwert geändert

                                        Schon getestet? Auf welchen Wert wird es denn geändert? Das Sampling 4:4:4 ist ja kein muss, ich hatte das nur reingenommen weil das des AP Liebling sein soll

                                        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 Reply Last reply
                                        0
                                        • BananaJoeB BananaJoe

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

                                          Es wird wohl durch das sampling der Farbwert geändert

                                          Schon getestet? Auf welchen Wert wird es denn geändert? Das Sampling 4:4:4 ist ja kein muss, ich hatte das nur reingenommen weil das des AP Liebling sein soll

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

                                          @bananajoe ich hatte heute nicht so viel zeit zum testen. Musste versuchen meinen Display wieder herzustellen.

                                          Imagemagic hat sehr viele Parameter. Was mich auch wundert, ein einfaches herunter skalieren und die Grafiken sehen irgendwie nicht so gut aus. Aber für das Display wohl das beste!

                                          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
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          710

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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