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

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

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

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

E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
1.0k BeitrÀge 48 Kommentatoren 344.3k 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.
  • EisbaeeerE Eisbaeeer

    Hat schon jemand das Blockly zum Screenshotten von request befreit?
    Nach update auf die neuste Version vom Controller wird request nicht mehr akzeptiert.

    BananaJoeB Online
    BananaJoeB Online
    BananaJoe
    Most Active
    schrieb am zuletzt editiert von BananaJoe
    #683

    @eisbaeeer ich hatte es versucht ... aber nicht hinbekommen. Zur Zeit triggere ich playwright alle 3 Minuten an, die Bilder landen in einem Ordner meines Webservers (lÀuft mit auf dem ioBroker Server auf Port 80) und die Tags stehen auf Image URL

    Dazu habe ich ein Python-Skript hinterlegt das 3 VIS-Seiten besucht und die Screenshots hinterlegt:

    #!/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()
    
    

    und das ich per Blockly alle 3 Minuten triggere:
    664810da-ac2c-4098-8cfe-bda12090caa6-image.png

    In dem Skript gibt es Zeilen fĂŒr alle 3 Browser, Firefox sah bei mir am besten aus. Playwright installiert alle 3 Engines.
    Die Screenshots werden doppelt so groß gefertigt und dann herunterskaliert, dafĂŒr muss Imagemagick evenfalls installiert sein (fĂŒr den Befehl convert)

    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
    • EisbaeeerE Eisbaeeer

      Hat schon jemand das Blockly zum Screenshotten von request befreit?
      Nach update auf die neuste Version vom Controller wird request nicht mehr akzeptiert.

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

      @eisbaeeer sagte in E-INK Display OpenEPaperLink - Displayanzeige mit Batterie:

      Hat schon jemand das Blockly zum Screenshotten von request befreit?
      Nach update auf die neuste Version vom Controller wird request nicht mehr akzeptiert.

      Was ist daran falsch? Oder meinst du ein anderes Skript?

      https://forum.iobroker.net/topic/66380/e-ink-display-openepaperlink-displayanzeige-mit-batterie/586?_=1722257902094

      GrĂŒĂŸe

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

      EisbaeeerE 1 Antwort Letzte Antwort
      0
      • B Beowolf

        @eisbaeeer sagte in E-INK Display OpenEPaperLink - Displayanzeige mit Batterie:

        Hat schon jemand das Blockly zum Screenshotten von request befreit?
        Nach update auf die neuste Version vom Controller wird request nicht mehr akzeptiert.

        Was ist daran falsch? Oder meinst du ein anderes Skript?

        https://forum.iobroker.net/topic/66380/e-ink-display-openepaperlink-displayanzeige-mit-batterie/586?_=1722257902094

        GrĂŒĂŸe

        EisbaeeerE Offline
        EisbaeeerE Offline
        Eisbaeeer
        Developer
        schrieb am zuletzt editiert von
        #685

        @beowolf Mit dem neusten js-controller lÀuft request und somit das Blockly Script nicht mehr.

        Kein support per PM. Bitte im Forum Fragen stellen!

        B ? 2 Antworten Letzte Antwort
        0
        • EisbaeeerE Eisbaeeer

          @beowolf Mit dem neusten js-controller lÀuft request und somit das Blockly Script nicht mehr.

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

          @eisbaeeer

          Muß jetzt mal unwissend fragen. Mit js-controller meinst du den javaskript Adapter?

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

          1 Antwort Letzte Antwort
          0
          • EisbaeeerE Eisbaeeer

            @beowolf Mit dem neusten js-controller lÀuft request und somit das Blockly Script nicht mehr.

            ? Offline
            ? Offline
            Ein ehemaliger Benutzer
            schrieb am zuletzt editiert von
            #687

            @eisbaeeer

            hat mit dem js-controller weniger zu tun, nur der Javascript-Adapter unterstuetzt das lange depricated request nicht mehr im Blockly, dafuer gibts ja fuer Blockly httpget und post usw.. also genug alternativen.

            Einfach mal in der Doku und hier im Forum nachlesen, da gibts auch genug Anleitungen zum umbauen.

            1 Antwort Letzte Antwort
            0
            • B Offline
              B Offline
              Beowolf
              schrieb am zuletzt editiert von
              #688

              Genau fĂŒr den Fall, weil "request" nicht mehr geht, hatte ich doch das Skript geĂ€ndert.

              Hier lÀuft es ohne Probleme mit der Java-Skriptversion 8.3.1

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

              EisbaeeerE 1 Antwort Letzte Antwort
              1
              • B Beowolf

                Genau fĂŒr den Fall, weil "request" nicht mehr geht, hatte ich doch das Skript geĂ€ndert.

                Hier lÀuft es ohne Probleme mit der Java-Skriptversion 8.3.1

                EisbaeeerE Offline
                EisbaeeerE Offline
                Eisbaeeer
                Developer
                schrieb am zuletzt editiert von
                #689

                @beowolf sagte in E-INK Display OpenEPaperLink - Displayanzeige mit Batterie:

                Genau fĂŒr den Fall, weil "request" nicht mehr geht, hatte ich doch das Skript geĂ€ndert.

                Hier lÀuft es ohne Probleme mit der Java-Skriptversion 8.3.1

                Top! Einfach ausgetauscht und lÀuft.
                Danke!

                Kein support per PM. Bitte im Forum Fragen stellen!

                B 1 Antwort Letzte Antwort
                0
                • EisbaeeerE Eisbaeeer

                  @beowolf sagte in E-INK Display OpenEPaperLink - Displayanzeige mit Batterie:

                  Genau fĂŒr den Fall, weil "request" nicht mehr geht, hatte ich doch das Skript geĂ€ndert.

                  Hier lÀuft es ohne Probleme mit der Java-Skriptversion 8.3.1

                  Top! Einfach ausgetauscht und lÀuft.
                  Danke!

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

                  @eisbaeeer

                  Aber bitte beachten. Ich hatte das Skript durch Chatgpt Àndern lassen.

                  Ich habe keine Ahnung ob das "programmiertechnisch" alles so Top in Ordnung ist. :blush:

                  Nur weil es funktioniert bedeutet es nicht, das es komplett richtig ist.

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

                  EisbaeeerE 1 Antwort Letzte Antwort
                  1
                  • B Beowolf

                    @eisbaeeer

                    Aber bitte beachten. Ich hatte das Skript durch Chatgpt Àndern lassen.

                    Ich habe keine Ahnung ob das "programmiertechnisch" alles so Top in Ordnung ist. :blush:

                    Nur weil es funktioniert bedeutet es nicht, das es komplett richtig ist.

                    EisbaeeerE Offline
                    EisbaeeerE Offline
                    Eisbaeeer
                    Developer
                    schrieb am zuletzt editiert von Eisbaeeer
                    #691

                    @beowolf sagte in [E-INK Display OpenEPaperLink - Displayanzeige mit Batterie]

                    Nur weil es funktioniert bedeutet es nicht, das es komplett richtig ist.

                    Ich schau mir es noch an. Der erste Blick sah gut aus.

                    --- EDIT ---
                    Im Code ist nichts problematisches. Alles gut!

                    Kein support per PM. Bitte im Forum Fragen stellen!

                    B 1 Antwort Letzte Antwort
                    1
                    • EisbaeeerE Eisbaeeer

                      @beowolf sagte in [E-INK Display OpenEPaperLink - Displayanzeige mit Batterie]

                      Nur weil es funktioniert bedeutet es nicht, das es komplett richtig ist.

                      Ich schau mir es noch an. Der erste Blick sah gut aus.

                      --- EDIT ---
                      Im Code ist nichts problematisches. Alles gut!

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

                      @eisbaeeer
                      Vielen Dank 😊

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

                      1 Antwort Letzte Antwort
                      0
                      • B Beowolf

                        Ich habe ab chatgpt wieder ein wenig gequÀlt.

                        Es geht um die Abfrage der Buttons bei den schwarzen Displays.

                        Diese meine ich

                        https://github.com/OpenEPaperLink/OpenEPaperLink/wiki/2.9″-EL029H3WRA

                        Hier das Skript

                        // HIER DIE IP ADRESSE VOM OEPL ACCESS POINT EINTRAGEN
                        const serverIP = '192.168.49.185';  // z.B. 192.168.1.71
                        
                        
                        //Im Skript mĂŒssen noch zwei weiter EintrĂ€ge event. der eigenen Umgebung angepasst werden
                        // Zeile 17  -  "Datenpunkt zur Steuerung des Skripts"
                        // Zeile 21  -  "Datenordner der empfangenen TAGs"
                        // Zeile 176 -  "Diesen Eintrag auch noch entsprechend der eigenen Umgebung anpassen"
                        
                        // AB HIER NICHTS MEHR ÄNDERN!
                        const WebSocket = require('ws');
                        const http = require('http');
                        const wsUrl = `ws://${serverIP}/ws`;  // WebSocket-URL
                        
                        let ws;
                        let pingInterval;
                        let scriptStopping = false;  // Flag, um zu prĂŒfen, ob das Skript gestoppt wird
                        
                        const controlState = '0_userdata.0.Tag_Buttons.Button_Skript_Steuerung.Button_Tags_Erdgeschoss';  // Datenpunkt zur Steuerung des Skripts
                        
                        function ensureOpenEPaperLinkFolderExists(callback) {
                            const OpenEPaperLinkFolderPath = '0_userdata.0.Tag_Buttons.Erdgeschoss'; // Datenordner der empfangenen TAGs
                            getObject(OpenEPaperLinkFolderPath, (err, obj) => {
                                if (err || !obj) {
                                    setObject(OpenEPaperLinkFolderPath, {
                                        type: 'channel',
                                        common: { name: 'Open E-Paper Link' },
                                        native: {}
                                    }, callback);
                                } else {
                                    callback();
                                }
                            });
                        }
                        
                        function ensureChannelExists(path, alias, callback) {
                            getObject(path, (err, obj) => {
                                if (err || !obj) {
                                    setObject(path, {
                                        type: 'channel',
                                        common: { name: alias || 'Unbekanntes GerÀt' },
                                        native: {}
                                    }, callback);
                                } else if (obj.common.name !== alias) {
                                    extendObject(path, { common: { name: alias } }, callback);
                                } else {
                                    callback();
                                }
                            });
                        }
                        
                        function createStateAndSet(statePath, value) {
                            setObject(statePath, {
                                type: 'state',
                                common: {
                                    name: statePath.split('.').pop(),
                                    type: 'string',
                                    role: 'value',
                                    read: true,
                                    write: true
                                },
                                native: {}
                            }, (err) => {
                                if (!err) {
                                    setState(statePath, String(value), true);
                                }
                            });
                        }
                        
                        function updateStateIfChanged(statePath, value) {
                            getState(statePath, (err, state) => {
                                if (err || !state) {
                                    createStateAndSet(statePath, String(value));
                                } else if (state.val !== String(value)) {
                                    setState(statePath, String(value), true);
                                }
                            });
                        }
                        
                        function fetchDimensions(hwType, callback) {
                            const hwTypeHex = hwType.toString(16).padStart(2, '0').toUpperCase();  // Convert hwType to two-digit uppercase hexadecimal
                            const url = `http://${serverIP}/tagtypes/${hwTypeHex}.json`;
                            http.get(url, (res) => {
                                let data = '';
                                res.on('data', (chunk) => data += chunk);
                                res.on('end', () => {
                                    if (res.statusCode === 200) {
                                        try {
                                            const dimensions = JSON.parse(data);
                                            callback(null, dimensions);
                                        } catch (e) {
                                            callback(`Error parsing JSON from ${url}: ${e}`);
                                        }
                                    } else {
                                        callback(`HTTP Error ${res.statusCode} from ${url}`);
                                    }
                                });
                            }).on('error', (err) => {
                                callback(`Error fetching ${url}: ${err.message}`);
                            });
                        }
                        
                        function handleHWType(basePath, hwType) {
                            createStateAndSet(`${basePath}.hwType`, String(hwType));  // Save hwType as a state
                            fetchDimensions(hwType, (err, dimensions) => {
                                if (!err && dimensions) {
                                    createStateAndSet(`${basePath}.height`, String(dimensions.height));
                                    createStateAndSet(`${basePath}.width`, String(dimensions.width));
                                    createStateAndSet(`${basePath}.name`, String(dimensions.name));
                                    if (dimensions.colors) {
                                        createStateAndSet(`${basePath}.colors`, String(dimensions.colors));
                                    }
                                    if (dimensions.colortable) {
                                        createStateAndSet(`${basePath}.colortable`, JSON.stringify(dimensions.colortable));
                                    }
                                } else {
                                    console.error(`Failed to fetch or set dimensions for hwType ${hwType}: ${err}`);
                                }
                            });
                        }
                        
                        function connectWebSocket() {
                            if (scriptStopping) {
                                return;  // Wenn das Skript gestoppt wird, keine Verbindung mehr herstellen
                            }
                        
                            ws = new WebSocket(wsUrl);
                            ws.on('open', function open() {
                                console.log('Verbunden mit WebSocket');
                                startHeartbeat();
                            });
                        
                            ws.on('message', function incoming(data) {
                                console.log('Daten empfangen:', data);
                                if (data) {
                                    try {
                                        let parsedData = JSON.parse(data);
                                        console.log('Verarbeitete Daten:', JSON.stringify(parsedData, null, 2));
                                        handleData(parsedData);
                                    } catch (err) {
                                        console.error('Fehler bei der Verarbeitung der Daten:', err);
                                    }
                                } else {
                                    console.log('Keine Daten oder leere Nachricht empfangen');
                                }
                            });
                        
                            ws.on('close', function close() {
                                if (!scriptStopping) {
                                    console.log('WebSocket-Verbindung geschlossen, versuche neu zu verbinden...');
                                    clearInterval(pingInterval);
                                    setTimeout(connectWebSocket, 5000);
                                }
                            });
                        
                            ws.on('error', function error(err) {
                                console.error('WebSocket-Fehler:', err);
                            });
                        }
                        
                        function startHeartbeat() {
                            pingInterval = setInterval(() => {
                                if (ws.readyState === WebSocket.OPEN) {
                                    ws.ping(() => console.log('Ping sent'));
                                }
                            }, 10000); // Send ping every 10 seconds
                        
                            ws.on('pong', () => {
                                console.log('Pong received');
                            });
                        }
                        
                        function handleData(parsedData) {
                            if (parsedData.tags && Array.isArray(parsedData.tags)) {
                                parsedData.tags.forEach(tag => {
                                    let basePath = `0_userdata.0.Tag_Buttons.Erdgeschoss.${tag.mac.replace(/:/g, '')}`;  //Diesen Eintrag auch noch entsprechend der eigenen Umgebung anpassen
                                    ensureChannelExists(basePath, tag.alias, () => {
                                        Object.keys(tag).forEach(key => {
                                            let statePath = `${basePath}.${key}`;
                                            let value = tag[key];
                                            updateStateIfChanged(statePath, value);
                                            if (key === 'hwType') {
                                                handleHWType(basePath, tag.hwType);
                                            }
                                        });
                                    });
                                });
                            }
                        }
                        
                        function disconnectWebSocket() {
                            if (ws) {
                                ws.close();
                                ws = null;
                            }
                            clearInterval(pingInterval);
                        }
                        
                        // Skript-Start und -Stopp basierend auf einem Datenpunkt steuern
                        function setupScriptControl() {
                            setObject(controlState, {
                                type: 'state',
                                common: {
                                    name: 'EPaper Script Control',
                                    type: 'boolean',
                                    role: 'switch',
                                    read: true,
                                    write: true,
                                    def: false
                                },
                                native: {}
                            });
                        
                            on({id: controlState, change: 'ne'}, (obj) => {
                                const state = obj.state.val;
                                if (state) {
                                    // Skript starten
                                    scriptStopping = false;
                                    ensureOpenEPaperLinkFolderExists(connectWebSocket);
                                } else {
                                    // Skript stoppen
                                    scriptStopping = true;
                                    disconnectWebSocket();
                                    console.log('Skript beendet durch Steuer-Datenpunkt');
                                }
                            });
                        }
                        
                        // Initiale Einrichtung
                        setupScriptControl();
                        

                        Jetzt kann das Skript durch Setzen des Datenpunkts 0_userdata.0.ScriptControl.EPaperScript auf true oder false gestartet und gestoppt werden.

                        Bei mir funktioniert es.

                        Bitte die Einstellung im Skript beachten !!!

                        Die Fehlermeldungen bei dem ersten Durchlauf sind wohl normal.

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

                        @beowolf sagte in E-INK Display OpenEPaperLink - Displayanzeige mit Batterie:

                        Ich habe ab chatgpt wieder ein wenig gequÀlt.

                        Es geht um die Abfrage der Buttons bei den schwarzen Displays.

                        Diese meine ich

                        https://github.com/OpenEPaperLink/OpenEPaperLink/wiki/2.9″-EL029H3WRA

                        Hier das Skript

                        // HIER DIE IP ADRESSE VOM OEPL ACCESS POINT EINTRAGEN
                        const serverIP = '192.168.49.185';  // z.B. 192.168.1.71
                        
                        
                        //Im Skript mĂŒssen noch zwei weiter EintrĂ€ge event. der eigenen Umgebung angepasst werden
                        // Zeile 17  -  "Datenpunkt zur Steuerung des Skripts"
                        // Zeile 21  -  "Datenordner der empfangenen TAGs"
                        // Zeile 176 -  "Diesen Eintrag auch noch entsprechend der eigenen Umgebung anpassen"
                        
                        // AB HIER NICHTS MEHR ÄNDERN!
                        const WebSocket = require('ws');
                        const http = require('http');
                        const wsUrl = `ws://${serverIP}/ws`;  // WebSocket-URL
                        
                        let ws;
                        let pingInterval;
                        let scriptStopping = false;  // Flag, um zu prĂŒfen, ob das Skript gestoppt wird
                        
                        const controlState = '0_userdata.0.Tag_Buttons.Button_Skript_Steuerung.Button_Tags_Erdgeschoss';  // Datenpunkt zur Steuerung des Skripts
                        
                        function ensureOpenEPaperLinkFolderExists(callback) {
                            const OpenEPaperLinkFolderPath = '0_userdata.0.Tag_Buttons.Erdgeschoss'; // Datenordner der empfangenen TAGs
                            getObject(OpenEPaperLinkFolderPath, (err, obj) => {
                                if (err || !obj) {
                                    setObject(OpenEPaperLinkFolderPath, {
                                        type: 'channel',
                                        common: { name: 'Open E-Paper Link' },
                                        native: {}
                                    }, callback);
                                } else {
                                    callback();
                                }
                            });
                        }
                        
                        function ensureChannelExists(path, alias, callback) {
                            getObject(path, (err, obj) => {
                                if (err || !obj) {
                                    setObject(path, {
                                        type: 'channel',
                                        common: { name: alias || 'Unbekanntes GerÀt' },
                                        native: {}
                                    }, callback);
                                } else if (obj.common.name !== alias) {
                                    extendObject(path, { common: { name: alias } }, callback);
                                } else {
                                    callback();
                                }
                            });
                        }
                        
                        function createStateAndSet(statePath, value) {
                            setObject(statePath, {
                                type: 'state',
                                common: {
                                    name: statePath.split('.').pop(),
                                    type: 'string',
                                    role: 'value',
                                    read: true,
                                    write: true
                                },
                                native: {}
                            }, (err) => {
                                if (!err) {
                                    setState(statePath, String(value), true);
                                }
                            });
                        }
                        
                        function updateStateIfChanged(statePath, value) {
                            getState(statePath, (err, state) => {
                                if (err || !state) {
                                    createStateAndSet(statePath, String(value));
                                } else if (state.val !== String(value)) {
                                    setState(statePath, String(value), true);
                                }
                            });
                        }
                        
                        function fetchDimensions(hwType, callback) {
                            const hwTypeHex = hwType.toString(16).padStart(2, '0').toUpperCase();  // Convert hwType to two-digit uppercase hexadecimal
                            const url = `http://${serverIP}/tagtypes/${hwTypeHex}.json`;
                            http.get(url, (res) => {
                                let data = '';
                                res.on('data', (chunk) => data += chunk);
                                res.on('end', () => {
                                    if (res.statusCode === 200) {
                                        try {
                                            const dimensions = JSON.parse(data);
                                            callback(null, dimensions);
                                        } catch (e) {
                                            callback(`Error parsing JSON from ${url}: ${e}`);
                                        }
                                    } else {
                                        callback(`HTTP Error ${res.statusCode} from ${url}`);
                                    }
                                });
                            }).on('error', (err) => {
                                callback(`Error fetching ${url}: ${err.message}`);
                            });
                        }
                        
                        function handleHWType(basePath, hwType) {
                            createStateAndSet(`${basePath}.hwType`, String(hwType));  // Save hwType as a state
                            fetchDimensions(hwType, (err, dimensions) => {
                                if (!err && dimensions) {
                                    createStateAndSet(`${basePath}.height`, String(dimensions.height));
                                    createStateAndSet(`${basePath}.width`, String(dimensions.width));
                                    createStateAndSet(`${basePath}.name`, String(dimensions.name));
                                    if (dimensions.colors) {
                                        createStateAndSet(`${basePath}.colors`, String(dimensions.colors));
                                    }
                                    if (dimensions.colortable) {
                                        createStateAndSet(`${basePath}.colortable`, JSON.stringify(dimensions.colortable));
                                    }
                                } else {
                                    console.error(`Failed to fetch or set dimensions for hwType ${hwType}: ${err}`);
                                }
                            });
                        }
                        
                        function connectWebSocket() {
                            if (scriptStopping) {
                                return;  // Wenn das Skript gestoppt wird, keine Verbindung mehr herstellen
                            }
                        
                            ws = new WebSocket(wsUrl);
                            ws.on('open', function open() {
                                console.log('Verbunden mit WebSocket');
                                startHeartbeat();
                            });
                        
                            ws.on('message', function incoming(data) {
                                console.log('Daten empfangen:', data);
                                if (data) {
                                    try {
                                        let parsedData = JSON.parse(data);
                                        console.log('Verarbeitete Daten:', JSON.stringify(parsedData, null, 2));
                                        handleData(parsedData);
                                    } catch (err) {
                                        console.error('Fehler bei der Verarbeitung der Daten:', err);
                                    }
                                } else {
                                    console.log('Keine Daten oder leere Nachricht empfangen');
                                }
                            });
                        
                            ws.on('close', function close() {
                                if (!scriptStopping) {
                                    console.log('WebSocket-Verbindung geschlossen, versuche neu zu verbinden...');
                                    clearInterval(pingInterval);
                                    setTimeout(connectWebSocket, 5000);
                                }
                            });
                        
                            ws.on('error', function error(err) {
                                console.error('WebSocket-Fehler:', err);
                            });
                        }
                        
                        function startHeartbeat() {
                            pingInterval = setInterval(() => {
                                if (ws.readyState === WebSocket.OPEN) {
                                    ws.ping(() => console.log('Ping sent'));
                                }
                            }, 10000); // Send ping every 10 seconds
                        
                            ws.on('pong', () => {
                                console.log('Pong received');
                            });
                        }
                        
                        function handleData(parsedData) {
                            if (parsedData.tags && Array.isArray(parsedData.tags)) {
                                parsedData.tags.forEach(tag => {
                                    let basePath = `0_userdata.0.Tag_Buttons.Erdgeschoss.${tag.mac.replace(/:/g, '')}`;  //Diesen Eintrag auch noch entsprechend der eigenen Umgebung anpassen
                                    ensureChannelExists(basePath, tag.alias, () => {
                                        Object.keys(tag).forEach(key => {
                                            let statePath = `${basePath}.${key}`;
                                            let value = tag[key];
                                            updateStateIfChanged(statePath, value);
                                            if (key === 'hwType') {
                                                handleHWType(basePath, tag.hwType);
                                            }
                                        });
                                    });
                                });
                            }
                        }
                        
                        function disconnectWebSocket() {
                            if (ws) {
                                ws.close();
                                ws = null;
                            }
                            clearInterval(pingInterval);
                        }
                        
                        // Skript-Start und -Stopp basierend auf einem Datenpunkt steuern
                        function setupScriptControl() {
                            setObject(controlState, {
                                type: 'state',
                                common: {
                                    name: 'EPaper Script Control',
                                    type: 'boolean',
                                    role: 'switch',
                                    read: true,
                                    write: true,
                                    def: false
                                },
                                native: {}
                            });
                        
                            on({id: controlState, change: 'ne'}, (obj) => {
                                const state = obj.state.val;
                                if (state) {
                                    // Skript starten
                                    scriptStopping = false;
                                    ensureOpenEPaperLinkFolderExists(connectWebSocket);
                                } else {
                                    // Skript stoppen
                                    scriptStopping = true;
                                    disconnectWebSocket();
                                    console.log('Skript beendet durch Steuer-Datenpunkt');
                                }
                            });
                        }
                        
                        // Initiale Einrichtung
                        setupScriptControl();
                        

                        Jetzt kann das Skript durch Setzen des Datenpunkts 0_userdata.0.ScriptControl.EPaperScript auf true oder false gestartet und gestoppt werden.

                        Bei mir funktioniert es.

                        Bitte die Einstellung im Skript beachten !!!

                        Die Fehlermeldungen bei dem ersten Durchlauf sind wohl normal.

                        Ich habe noch einmal zu diesem Skript eine Frage.

                        Wenn ich die Buttons nutzen möchte, muß das Skript laufen.

                        Wenn es aber lÀuft, habe ich das im Protokoll stehen:

                        javascript.0	15:57:27.401	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:27.402	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:28.822	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Ping sent
                        javascript.0	15:57:28.928	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Pong received
                        javascript.0	15:57:31.304	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:31.304	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:31.726	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:31.727	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:35.154	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:35.155	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:35.651	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:35.652	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:36.787	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:36.788	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:38.823	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Ping sent
                        javascript.0	15:57:38.854	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Pong received
                        javascript.0	15:57:39.271	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:39.272	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:40.007	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:40.007	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:40.342	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:40.343	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:41.007	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:41.007	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:41.790	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:41.790	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:42.276	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:42.277	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:43.525	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:43.526	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:44.582	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:44.583	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:46.853	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:46.854	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:48.441	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:48.441	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:48.824	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Ping sent
                        javascript.0	15:57:48.847	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Pong received
                        javascript.0	15:57:50.673	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:50.673	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:52.308	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:52.308	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:52.501	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:52.501	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:52.761	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:52.762	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:55.489	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:55.490	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:57.005	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:57.005	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:57.257	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:57.258	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:57.424	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:57.425	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:57.594	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:57.594	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:58.106	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:58.107	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:58.234	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:58.234	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:57:58.823	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Ping sent
                        javascript.0	15:57:58.936	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Pong received
                        javascript.0	15:57:59.522	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:57:59.522	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:58:00.619	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:58:00.620	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:58:02.135	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:58:02.135	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        javascript.0	15:58:03.096	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                        javascript.0	15:58:03.096	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                        
                        

                        Da ist also heftig was los.

                        Gibt es keine Möglichkeit, das das Skript auf eine "ButtonbetÀtigung" wartet?

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

                        S 1 Antwort Letzte Antwort
                        0
                        • B Beowolf

                          @beowolf sagte in E-INK Display OpenEPaperLink - Displayanzeige mit Batterie:

                          Ich habe ab chatgpt wieder ein wenig gequÀlt.

                          Es geht um die Abfrage der Buttons bei den schwarzen Displays.

                          Diese meine ich

                          https://github.com/OpenEPaperLink/OpenEPaperLink/wiki/2.9″-EL029H3WRA

                          Hier das Skript

                          // HIER DIE IP ADRESSE VOM OEPL ACCESS POINT EINTRAGEN
                          const serverIP = '192.168.49.185';  // z.B. 192.168.1.71
                          
                          
                          //Im Skript mĂŒssen noch zwei weiter EintrĂ€ge event. der eigenen Umgebung angepasst werden
                          // Zeile 17  -  "Datenpunkt zur Steuerung des Skripts"
                          // Zeile 21  -  "Datenordner der empfangenen TAGs"
                          // Zeile 176 -  "Diesen Eintrag auch noch entsprechend der eigenen Umgebung anpassen"
                          
                          // AB HIER NICHTS MEHR ÄNDERN!
                          const WebSocket = require('ws');
                          const http = require('http');
                          const wsUrl = `ws://${serverIP}/ws`;  // WebSocket-URL
                          
                          let ws;
                          let pingInterval;
                          let scriptStopping = false;  // Flag, um zu prĂŒfen, ob das Skript gestoppt wird
                          
                          const controlState = '0_userdata.0.Tag_Buttons.Button_Skript_Steuerung.Button_Tags_Erdgeschoss';  // Datenpunkt zur Steuerung des Skripts
                          
                          function ensureOpenEPaperLinkFolderExists(callback) {
                              const OpenEPaperLinkFolderPath = '0_userdata.0.Tag_Buttons.Erdgeschoss'; // Datenordner der empfangenen TAGs
                              getObject(OpenEPaperLinkFolderPath, (err, obj) => {
                                  if (err || !obj) {
                                      setObject(OpenEPaperLinkFolderPath, {
                                          type: 'channel',
                                          common: { name: 'Open E-Paper Link' },
                                          native: {}
                                      }, callback);
                                  } else {
                                      callback();
                                  }
                              });
                          }
                          
                          function ensureChannelExists(path, alias, callback) {
                              getObject(path, (err, obj) => {
                                  if (err || !obj) {
                                      setObject(path, {
                                          type: 'channel',
                                          common: { name: alias || 'Unbekanntes GerÀt' },
                                          native: {}
                                      }, callback);
                                  } else if (obj.common.name !== alias) {
                                      extendObject(path, { common: { name: alias } }, callback);
                                  } else {
                                      callback();
                                  }
                              });
                          }
                          
                          function createStateAndSet(statePath, value) {
                              setObject(statePath, {
                                  type: 'state',
                                  common: {
                                      name: statePath.split('.').pop(),
                                      type: 'string',
                                      role: 'value',
                                      read: true,
                                      write: true
                                  },
                                  native: {}
                              }, (err) => {
                                  if (!err) {
                                      setState(statePath, String(value), true);
                                  }
                              });
                          }
                          
                          function updateStateIfChanged(statePath, value) {
                              getState(statePath, (err, state) => {
                                  if (err || !state) {
                                      createStateAndSet(statePath, String(value));
                                  } else if (state.val !== String(value)) {
                                      setState(statePath, String(value), true);
                                  }
                              });
                          }
                          
                          function fetchDimensions(hwType, callback) {
                              const hwTypeHex = hwType.toString(16).padStart(2, '0').toUpperCase();  // Convert hwType to two-digit uppercase hexadecimal
                              const url = `http://${serverIP}/tagtypes/${hwTypeHex}.json`;
                              http.get(url, (res) => {
                                  let data = '';
                                  res.on('data', (chunk) => data += chunk);
                                  res.on('end', () => {
                                      if (res.statusCode === 200) {
                                          try {
                                              const dimensions = JSON.parse(data);
                                              callback(null, dimensions);
                                          } catch (e) {
                                              callback(`Error parsing JSON from ${url}: ${e}`);
                                          }
                                      } else {
                                          callback(`HTTP Error ${res.statusCode} from ${url}`);
                                      }
                                  });
                              }).on('error', (err) => {
                                  callback(`Error fetching ${url}: ${err.message}`);
                              });
                          }
                          
                          function handleHWType(basePath, hwType) {
                              createStateAndSet(`${basePath}.hwType`, String(hwType));  // Save hwType as a state
                              fetchDimensions(hwType, (err, dimensions) => {
                                  if (!err && dimensions) {
                                      createStateAndSet(`${basePath}.height`, String(dimensions.height));
                                      createStateAndSet(`${basePath}.width`, String(dimensions.width));
                                      createStateAndSet(`${basePath}.name`, String(dimensions.name));
                                      if (dimensions.colors) {
                                          createStateAndSet(`${basePath}.colors`, String(dimensions.colors));
                                      }
                                      if (dimensions.colortable) {
                                          createStateAndSet(`${basePath}.colortable`, JSON.stringify(dimensions.colortable));
                                      }
                                  } else {
                                      console.error(`Failed to fetch or set dimensions for hwType ${hwType}: ${err}`);
                                  }
                              });
                          }
                          
                          function connectWebSocket() {
                              if (scriptStopping) {
                                  return;  // Wenn das Skript gestoppt wird, keine Verbindung mehr herstellen
                              }
                          
                              ws = new WebSocket(wsUrl);
                              ws.on('open', function open() {
                                  console.log('Verbunden mit WebSocket');
                                  startHeartbeat();
                              });
                          
                              ws.on('message', function incoming(data) {
                                  console.log('Daten empfangen:', data);
                                  if (data) {
                                      try {
                                          let parsedData = JSON.parse(data);
                                          console.log('Verarbeitete Daten:', JSON.stringify(parsedData, null, 2));
                                          handleData(parsedData);
                                      } catch (err) {
                                          console.error('Fehler bei der Verarbeitung der Daten:', err);
                                      }
                                  } else {
                                      console.log('Keine Daten oder leere Nachricht empfangen');
                                  }
                              });
                          
                              ws.on('close', function close() {
                                  if (!scriptStopping) {
                                      console.log('WebSocket-Verbindung geschlossen, versuche neu zu verbinden...');
                                      clearInterval(pingInterval);
                                      setTimeout(connectWebSocket, 5000);
                                  }
                              });
                          
                              ws.on('error', function error(err) {
                                  console.error('WebSocket-Fehler:', err);
                              });
                          }
                          
                          function startHeartbeat() {
                              pingInterval = setInterval(() => {
                                  if (ws.readyState === WebSocket.OPEN) {
                                      ws.ping(() => console.log('Ping sent'));
                                  }
                              }, 10000); // Send ping every 10 seconds
                          
                              ws.on('pong', () => {
                                  console.log('Pong received');
                              });
                          }
                          
                          function handleData(parsedData) {
                              if (parsedData.tags && Array.isArray(parsedData.tags)) {
                                  parsedData.tags.forEach(tag => {
                                      let basePath = `0_userdata.0.Tag_Buttons.Erdgeschoss.${tag.mac.replace(/:/g, '')}`;  //Diesen Eintrag auch noch entsprechend der eigenen Umgebung anpassen
                                      ensureChannelExists(basePath, tag.alias, () => {
                                          Object.keys(tag).forEach(key => {
                                              let statePath = `${basePath}.${key}`;
                                              let value = tag[key];
                                              updateStateIfChanged(statePath, value);
                                              if (key === 'hwType') {
                                                  handleHWType(basePath, tag.hwType);
                                              }
                                          });
                                      });
                                  });
                              }
                          }
                          
                          function disconnectWebSocket() {
                              if (ws) {
                                  ws.close();
                                  ws = null;
                              }
                              clearInterval(pingInterval);
                          }
                          
                          // Skript-Start und -Stopp basierend auf einem Datenpunkt steuern
                          function setupScriptControl() {
                              setObject(controlState, {
                                  type: 'state',
                                  common: {
                                      name: 'EPaper Script Control',
                                      type: 'boolean',
                                      role: 'switch',
                                      read: true,
                                      write: true,
                                      def: false
                                  },
                                  native: {}
                              });
                          
                              on({id: controlState, change: 'ne'}, (obj) => {
                                  const state = obj.state.val;
                                  if (state) {
                                      // Skript starten
                                      scriptStopping = false;
                                      ensureOpenEPaperLinkFolderExists(connectWebSocket);
                                  } else {
                                      // Skript stoppen
                                      scriptStopping = true;
                                      disconnectWebSocket();
                                      console.log('Skript beendet durch Steuer-Datenpunkt');
                                  }
                              });
                          }
                          
                          // Initiale Einrichtung
                          setupScriptControl();
                          

                          Jetzt kann das Skript durch Setzen des Datenpunkts 0_userdata.0.ScriptControl.EPaperScript auf true oder false gestartet und gestoppt werden.

                          Bei mir funktioniert es.

                          Bitte die Einstellung im Skript beachten !!!

                          Die Fehlermeldungen bei dem ersten Durchlauf sind wohl normal.

                          Ich habe noch einmal zu diesem Skript eine Frage.

                          Wenn ich die Buttons nutzen möchte, muß das Skript laufen.

                          Wenn es aber lÀuft, habe ich das im Protokoll stehen:

                          javascript.0	15:57:27.401	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:27.402	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:28.822	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Ping sent
                          javascript.0	15:57:28.928	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Pong received
                          javascript.0	15:57:31.304	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:31.304	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:31.726	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:31.727	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:35.154	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:35.155	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:35.651	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:35.652	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:36.787	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:36.788	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:38.823	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Ping sent
                          javascript.0	15:57:38.854	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Pong received
                          javascript.0	15:57:39.271	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:39.272	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:40.007	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:40.007	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:40.342	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:40.343	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:41.007	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:41.007	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:41.790	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:41.790	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:42.276	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:42.277	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:43.525	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:43.526	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:44.582	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:44.583	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:46.853	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:46.854	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:48.441	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:48.441	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:48.824	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Ping sent
                          javascript.0	15:57:48.847	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Pong received
                          javascript.0	15:57:50.673	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:50.673	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:52.308	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:52.308	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:52.501	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:52.501	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:52.761	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:52.762	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:55.489	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:55.490	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:57.005	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:57.005	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:57.257	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:57.258	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:57.424	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:57.425	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:57.594	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:57.594	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:58.106	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:58.107	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:58.234	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:58.234	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:57:58.823	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Ping sent
                          javascript.0	15:57:58.936	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Pong received
                          javascript.0	15:57:59.522	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:57:59.522	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:58:00.619	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:58:00.620	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:58:02.135	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:58:02.135	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          javascript.0	15:58:03.096	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Daten empfangen:
                          javascript.0	15:58:03.096	info	script.js.common.EPaper-Displays.Erdgeschoss.Buttons_der_Erdgeschoss_TAGs: Verarbeitete Daten:
                          
                          

                          Da ist also heftig was los.

                          Gibt es keine Möglichkeit, das das Skript auf eine "ButtonbetÀtigung" wartet?

                          S Nicht stören
                          S Nicht stören
                          stenmic
                          schrieb am zuletzt editiert von stenmic
                          #694

                          Ich bin mir nicht sicher, ob es hier schon eine Lösung fĂŒr nen Json-String gibt.
                          Hab beim Durchlesen jedenfalls keine gefunden.

                          Hier ist meine Lösung.

                          Als erstes muss "axios" im Javascript Adapter hinzugefĂŒgt werden:
                          2024-08-03 07 08 27.jpg

                          Der Tag muss auf "Json template" eingestellt werden:
                          2024-08-03 07 07 34.jpg

                          Und hier das Blockly, sollte selbsterklÀrend sein:

                          2024-08-03 07 06 18.jpg

                          Die Funktion:
                          2024-08-03 07 06 27.jpg

                          Blockly:


                          <xml xmlns="https://developers.google.com/blockly/xml">
                          <variables>
                          <variable id="^bhgSAw+X+YJvf?RhU3">AP_IP</variable> <variable id="uc8fh+2kjeHGm-/vox=3">TAG_MAC</variable> <variable id="$Ig5a7mq0|-|sEkjT7ur">JS</variable> </variables> <block type="procedures_defcustomnoreturn" id="l{VWT5d2R8(RDtcq_L|-" x="163" y="-787"> <mutation statements="false"> <arg name="AP_IP" varid="^bhgSAw+X+YJvf?RhU3"></arg>
                          <arg name="TAG_MAC" varid="uc8fh+2kjeHGm-/vox=3"></arg>
                          <arg name="JS" varid="$Ig5a7mq0|-|sEkjT7ur"></arg>
                          </mutation>
                          <field name="NAME">OpenEPaperJson</field>
                          <field name="SCRIPT">Y29uc3QgYXhpb3MgPSByZXF1aXJlKCdheGlvcycpOw0KDQpjb25zdCBvYmogPSB7DQogIG1hYzogVEFHX01BQywNCiAganNvbjogSlMsDQp9Ow0KDQpjb25zdCBkYXRhID0gT2JqZWN0LmtleXMob2JqKQ0KICAubWFwKChrZXkpID0+IGAke2tleX09JHtlbmNvZGVVUklDb21wb25lbnQob2JqW2tleV0pfWApDQogIC5qb2luKCcmJyk7DQoNCmNvbnN0IG9wdGlvbnMgPSB7DQogIG1ldGhvZDogJ1BPU1QnLA0KICBoZWFkZXJzOiB7ICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9LA0KICB1cmw6ICdodHRwOi8vJytBUF9JUCsnL2pzb251cGxvYWQnLA0KICBkYXRhDQp9Ow0KDQphd2FpdCBheGlvcyhvcHRpb25zKTsNCi8vY29uc29sZS5sb2cob3B0aW9ucyk7</field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion 
</comment>
                          </block>
                          <block type="procedures_callcustomnoreturn" id="ZR0:KP{+eKkQUre=m" x="163" y="-737"> <mutation name="OpenEPaperJson"> <arg name="AP_IP"></arg> <arg name="TAG_MAC"></arg> <arg name="JS"></arg> </mutation> <value name="ARG0"> <block type="text" id="8m.We}frb),Frmeu7S(?"> <field name="TEXT">192.168.178.xxx</field> </block> </value> <value name="ARG1"> <block type="text" id="yk4}TL@=?^fe$@Tct/B">
                          <field name="TEXT">0000021F1D31xxxx</field>
                          </block>
                          </value>
                          <value name="ARG2">
                          <block type="text" id="Jq[@4;8ac*CU/g}jB82I">
                          <field name="TEXT">[ {"text": [5,5,"Bahnschrift 20","fonts/bahnschrift20",1]}, {"box": [10,30,20,20,1]}, {"box": [35,30,20,20,2]}, {"triangle": [60,30,60,50,80,40,1]}, {"text": [5,80,"Plain text glasstown_nbp_tf","glasstown_nbp_tf",1]}, {"text": [5,95,"Plain text 7x14_tf","7x14_tf",2]}, {"text": [5,110,"Plain text t0_14b_tf","t0_14b_tf",1]}, {"text": [135,5,"30","fonts/bahnschrift30",2]}, {"text": [215,5,"70","fonts/bahnschrift70",1]}, {"text": [150,80,"50","fonts/calibrib50",2,0]}, {"text": [205,60,"80","fonts/calibrib80",2]}, {"text": [90,35,"calibrib30","fonts/calibrib30",1]}, {"line": [10,120,290,120,1]}, {"line": [10,115,290,115,2]} ]</field>
                          </block>
                          </value>
                          </block>
                          </xml>

                          Hier noch die ErklÀrung wie der json String aussehen muss

                          1 Antwort Letzte Antwort
                          3
                          • F Offline
                            F Offline
                            Freak
                            schrieb am zuletzt editiert von
                            #695

                            Hallo Zusammen,

                            ich habe ein Problem mit einem Tag.
                            Ich hatte den Accesspoint einige Zeit außer Betrieb. Als ich ihn wieder verwenden wollte zeigte eines meiner Displays folgendes Bild:
                            1.jpg

                            Auch beim wechseln der Batterien scheint das Display nicht zu starten. Der Bildschirm bleibt immer gleich.
                            Neue Batterien haben auch nicht geholfen.
                            Alle anderen Tags funktionieren Tadellos mit dem Accesspoint.
                            Gibt es einen Trick um den Tag aus dem Sleepmode zu holen?
                            Batteriekontakte kurzschließen bringt leider auch nichts.

                            Ich hoffe einer von euch kann mir weiterhelfen.

                            danke

                            BananaJoeB 1 Antwort Letzte Antwort
                            0
                            • F Freak

                              Hallo Zusammen,

                              ich habe ein Problem mit einem Tag.
                              Ich hatte den Accesspoint einige Zeit außer Betrieb. Als ich ihn wieder verwenden wollte zeigte eines meiner Displays folgendes Bild:
                              1.jpg

                              Auch beim wechseln der Batterien scheint das Display nicht zu starten. Der Bildschirm bleibt immer gleich.
                              Neue Batterien haben auch nicht geholfen.
                              Alle anderen Tags funktionieren Tadellos mit dem Accesspoint.
                              Gibt es einen Trick um den Tag aus dem Sleepmode zu holen?
                              Batteriekontakte kurzschließen bringt leider auch nichts.

                              Ich hoffe einer von euch kann mir weiterhelfen.

                              danke

                              BananaJoeB Online
                              BananaJoeB Online
                              BananaJoe
                              Most Active
                              schrieb am zuletzt editiert von
                              #696

                              @freak Hast du zwischenzeitlich den Kanal gewechselt? Falls du den Tag vorher auf einen festen Kanal gestellt hast und das Roaming deaktiviert hattest, könnte das ein Problem sein.

                              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

                              O 1 Antwort Letzte Antwort
                              0
                              • F Offline
                                F Offline
                                Freak
                                schrieb am zuletzt editiert von
                                #697

                                @BananaJoe Danke fĂŒr deine RĂŒckmeldung. Nein, daran habe ich nichts geĂ€ndert. Schau ich mir aber nochmal an.

                                Beim Einlegen der Batterien sollte ja normalerweise auch der Openepaperlink startbildschirm auf dem Display erscheinen, aber das passiert auch nicht. Ich habe eher die Vermutung, dass das Display gar nichts macht.

                                D 1 Antwort Letzte Antwort
                                0
                                • F Freak

                                  @BananaJoe Danke fĂŒr deine RĂŒckmeldung. Nein, daran habe ich nichts geĂ€ndert. Schau ich mir aber nochmal an.

                                  Beim Einlegen der Batterien sollte ja normalerweise auch der Openepaperlink startbildschirm auf dem Display erscheinen, aber das passiert auch nicht. Ich habe eher die Vermutung, dass das Display gar nichts macht.

                                  D Offline
                                  D Offline
                                  diwoma
                                  schrieb am zuletzt editiert von
                                  #698

                                  @freak sagte in E-INK Display OpenEPaperLink - Displayanzeige mit Batterie:

                                  Beim Einlegen der Batterien sollte ja normalerweise auch der Openepaperlink startbildschirm auf dem Display erscheinen, aber das passiert auch nicht. Ich habe eher die Vermutung, dass das Display gar nichts macht.

                                  Ja, so einen habe ich auch. Liegt gleich neben dem AP.
                                  Ich erklĂ€re ihn fĂŒr tot.

                                  -- diwoma

                                  ioBroker in LX-Container in Proxmox
                                  Zigbee-Coordinator: CC2652P2-TCP FW: 20230507

                                  1 Antwort Letzte Antwort
                                  0
                                  • BananaJoeB Online
                                    BananaJoeB Online
                                    BananaJoe
                                    Most Active
                                    schrieb am zuletzt editiert von
                                    #699

                                    Man könnte neu flashen versuchen ... aber wer hat schon die AusrĂŒstung dafĂŒr.

                                    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

                                    F 1 Antwort Letzte Antwort
                                    0
                                    • BananaJoeB BananaJoe

                                      Man könnte neu flashen versuchen ... aber wer hat schon die AusrĂŒstung dafĂŒr.

                                      F Offline
                                      F Offline
                                      Freak
                                      schrieb am zuletzt editiert von
                                      #700

                                      @bananajoe Ja genau. das Flasher Kabel hab ich mir damals gespart leider.

                                      B 1 Antwort Letzte Antwort
                                      0
                                      • F Freak

                                        @bananajoe Ja genau. das Flasher Kabel hab ich mir damals gespart leider.

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

                                        @freak

                                        Hast du die Kontakte fĂŒr die Batterien kurzgeschlossen als sie draussen waren?

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

                                        F 1 Antwort Letzte Antwort
                                        0
                                        • B Beowolf

                                          @freak

                                          Hast du die Kontakte fĂŒr die Batterien kurzgeschlossen als sie draussen waren?

                                          F Offline
                                          F Offline
                                          Freak
                                          schrieb am zuletzt editiert von
                                          #702

                                          @beowolf Ja, hab ich mehrmals versucht. Danke fĂŒr die Erinnerung.

                                          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

                                          481

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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