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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
1.0k Posts 49 Posters 366.1k 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 Offline
    B Offline
    Beowolf
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          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
            wrote on last edited by
            #692

            @eisbaeeer
            Vielen Dank 😊

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

            1 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              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 Do not disturb
                S Do not disturb
                stenmic
                wrote on last edited by 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 Reply Last reply
                3
                • F Offline
                  F Offline
                  Freak
                  wrote on last edited by
                  #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 Reply Last reply
                  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 Offline
                    BananaJoeB Offline
                    BananaJoe
                    Most Active
                    wrote on last edited by
                    #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 Reply Last reply
                    0
                    • F Offline
                      F Offline
                      Freak
                      wrote on last edited by
                      #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 Reply Last reply
                      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 Online
                        D Online
                        diwoma
                        wrote on last edited by
                        #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 Reply Last reply
                        0
                        • BananaJoeB Offline
                          BananaJoeB Offline
                          BananaJoe
                          Most Active
                          wrote on last edited by
                          #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 Reply Last reply
                          0
                          • BananaJoeB BananaJoe

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

                            F Offline
                            F Offline
                            Freak
                            wrote on last edited by
                            #700

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

                            B 1 Reply Last reply
                            0
                            • F Freak

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

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

                                @freak

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

                                F Offline
                                F Offline
                                Freak
                                wrote on last edited by
                                #702

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

                                1 Reply Last reply
                                0
                                • B Offline
                                  B Offline
                                  Beowolf
                                  wrote on last edited by
                                  #703

                                  Wie lange sind denn neue Batterien drin? Ich meine, das die TAGs es immer wieder versuchen. Aber das dauert glaube ich.

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

                                  F 1 Reply Last reply
                                  0
                                  • B Beowolf

                                    Wie lange sind denn neue Batterien drin? Ich meine, das die TAGs es immer wieder versuchen. Aber das dauert glaube ich.

                                    F Offline
                                    F Offline
                                    Freak
                                    wrote on last edited by
                                    #704

                                    @beowolf Ok die Batterien sind jetzt zwei Tage drin. Dann lass ich ihn mal ne weile so liegen. Werde ja sehen. ob er sich nochmal meldet. Danke

                                    haselchenH 1 Reply Last reply
                                    0
                                    • B Offline
                                      B Offline
                                      Beowolf
                                      wrote on last edited by
                                      #705

                                      Event. kannst du es hier versuchen. Er kann den TAG neu flashen. Ich habe für diesen Typ von TAG keinen Pogo-Pin Adapter.

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

                                      Ist halt mit Portokosten verbunden.

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

                                      1 Reply Last reply
                                      0
                                      • D Online
                                        D Online
                                        diwoma
                                        wrote on last edited by
                                        #706

                                        Oder gleich fragen, ob er noch welche geflasht hat.
                                        Ich habe ihn nach dem Post von @Beowolf kontaktiert, wo man Tag's bekommen kann und er hat mir gleich eine Liste von vorgeflashten Tag's gesendet, die er verkauft. Und ich habe mal gleich bei verschiedenen Größen zugeschlagen. Ist dann nur einmal Porto mit größerem Mehrwert :)

                                        -- diwoma

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

                                        1 Reply Last reply
                                        2
                                        • F Freak

                                          @beowolf Ok die Batterien sind jetzt zwei Tage drin. Dann lass ich ihn mal ne weile so liegen. Werde ja sehen. ob er sich nochmal meldet. Danke

                                          haselchenH Offline
                                          haselchenH Offline
                                          haselchen
                                          Most Active
                                          wrote on last edited by
                                          #707

                                          @freak

                                          Probier es einfach weiter mit kurzschliessen über die Batterien.
                                          Es braucht manchmal sehr, sehr viele Anläufe dafür.
                                          Eventuell zeitgleich den AP neu starten. Da hilft nur ausprobieren.
                                          Den Tag neu flashen, ich denke, dass ist nicht nötig.

                                          Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          356

                                          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