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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

NEWS

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

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

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

E-INK Display OpenEPaperLink - Displayanzeige mit Batterie

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
1.0k Beiträge 49 Kommentatoren 346.4k Aufrufe 52 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B bimmi

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

    Hatte ich gelesen und auch auf Github den Kommentar zu dem „Problem“.
    Finde ich ein wenig ignorant vom Entwickler eine Version rauszubringen, die augenscheinlich ein Kosmetikproblem hat und dann den Bug nicht beheben zu wollen .
    Ich denke, dass wird ne Minutensache sein , den Fix online zu stellen.
    Ich selber habe ewig damit verbracht , dass zu korrigieren.
    Und ich denke viele werden sich das System zerschiessen bei der Korrektur.
    Das Verhalten ist wirklich schade , weil ich echt viel von ihm halte.

    Ich kann deinen Frust absolut nicht nachvollziehen.

    Bitte bedenke, dass Entwickler bei Projekten – gerade Open-Source – oft Prioritäten setzen müssen. Auch wenn es "nur" ein kosmetischer Fehler ist, wird für jede Änderung Zeit in Tests und Qualitätssicherung investiert, um sicherzustellen, dass nichts anderes kaputtgeht. Das kann manchmal mehr Aufwand bedeuten, als es zunächst scheint.

    Außerdem ist es gut möglich, dass der Code inzwischen weiterentwickelt wurde. Ein erneutes Kompilieren könnte nicht nur diesen kosmetischen Fehler beheben, sondern auch Verbesserungen oder Verschlechterungen mit sich bringen.

    Letztendlich bleibt es schade, dass dieser Bug bisher nicht angegangen wurde, aber solche Abwägungen gehören leider zum Entwicklungsprozess dazu.

    haselchenH Offline
    haselchenH Offline
    haselchen
    Most Active
    schrieb am zuletzt editiert von
    #815

    @bimmi

    Mir ging es hauptsächlich um die Reaktion des Entwicklers .
    Wenn ein User höflich fragt und er dann „nö“ sagt.

    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

    S 1 Antwort Letzte Antwort
    1
    • haselchenH haselchen

      @bimmi

      Mir ging es hauptsächlich um die Reaktion des Entwicklers .
      Wenn ein User höflich fragt und er dann „nö“ sagt.

      S Offline
      S Offline
      sameOne
      schrieb am zuletzt editiert von
      #816

      @haselchen Ohne mich irgendwie einklinken zu wollen aber nun tue ich es doch ^^
      Er hat ja nicht "nö" gesagt sondern das er nur deswegen kein neues Release macht nur um diesen Fehler zu beseitigen, sprich v2.70a nur dafür, wie er ja auch sagte ist es bereits gefixt und wird im nächsten Release enthalten sein

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

        In den Einstellungen gibt es den Punkt "AP discovery method".

        Dort kann man zwischen "Multicast" und "Broadcast" wählen.

        Was ist das und wird es benötigt?

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

        M 1 Antwort Letzte Antwort
        0
        • B Beowolf

          In den Einstellungen gibt es den Punkt "AP discovery method".

          Dort kann man zwischen "Multicast" und "Broadcast" wählen.

          Was ist das und wird es benötigt?

          M Online
          M Online
          micklafisch
          schrieb am zuletzt editiert von
          #818

          @beowolf
          wenn du nur einen AP in Betrieb hast ist es egal. Erst wenn mehrere im gleichen Netz sind und die sich finden sollen dann ist die Einstellung wichtig.

          Manche Netze bzw. deren Router haben mit UDP Multicast Paketen Probleme, von daher wurde der UDP Broadcast eingebaut (damit wiederum geht dann aber z.b. kein VLAN/Subnetze).

          F B 2 Antworten Letzte Antwort
          1
          • M micklafisch

            @beowolf
            wenn du nur einen AP in Betrieb hast ist es egal. Erst wenn mehrere im gleichen Netz sind und die sich finden sollen dann ist die Einstellung wichtig.

            Manche Netze bzw. deren Router haben mit UDP Multicast Paketen Probleme, von daher wurde der UDP Broadcast eingebaut (damit wiederum geht dann aber z.b. kein VLAN/Subnetze).

            F Offline
            F Offline
            Flowski
            schrieb am zuletzt editiert von
            #819

            Jemand eine Idee woher man aktuell einen fertigen Access Point zu kaufen bekommt?

            EisbaeeerE S 2 Antworten Letzte Antwort
            0
            • M micklafisch

              @beowolf
              wenn du nur einen AP in Betrieb hast ist es egal. Erst wenn mehrere im gleichen Netz sind und die sich finden sollen dann ist die Einstellung wichtig.

              Manche Netze bzw. deren Router haben mit UDP Multicast Paketen Probleme, von daher wurde der UDP Broadcast eingebaut (damit wiederum geht dann aber z.b. kein VLAN/Subnetze).

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

              @micklafisch
              Ich habe drei im Einsatz. Jede Etage hat einen eigenen.

              Ich bin dazu übergegangen, jedem TAG den festen Kanal zu seinem AP zu geben. Das läuft im Momemt am besten.

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

              1 Antwort Letzte Antwort
              -1
              • F Flowski

                Jemand eine Idee woher man aktuell einen fertigen Access Point zu kaufen bekommt?

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

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

                Jemand eine Idee woher man aktuell einen fertigen Access Point zu kaufen bekommt?

                Ich hätte noch einen neuen hier liegen. Es ist ein Yellow_AP Zigbee & sub_GHz Modul. Also dualband.
                Post: https://forum.iobroker.net/post/1180802

                Meld dich mal per PM falls du Interesse hast.
                Gruß Lars

                Kein support per PM. Bitte im Forum Fragen stellen!

                1 Antwort Letzte Antwort
                0
                • B Offline
                  B Offline
                  bimmi
                  schrieb am zuletzt editiert von
                  #822

                  Gab wieder neue Firmware Version. Da muss glaub ich @BananaJoe wieder ran.

                  Für ap und die solum tags

                  Die Bildqualität leidet leider mit dem up und downscale 😅 es wird nie langweilig!

                  Gruß Bimmi

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

                  BananaJoeB 1 Antwort Letzte Antwort
                  0
                  • B bimmi

                    Gab wieder neue Firmware Version. Da muss glaub ich @BananaJoe wieder ran.

                    Für ap und die solum tags

                    Die Bildqualität leidet leider mit dem up und downscale 😅 es wird nie langweilig!

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

                    @bimmi Schaue ich morgen mal an.
                    Mit welcher Lösung skalierst du im Moment? Ich nutze ja nur noch Playwright (wobei ich mal schauen muss, da müsste inzwischen endlich eine Version verfügbar sein die unter Ubuntu 24.04 läuft)

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

                    B 1 Antwort Letzte Antwort
                    0
                    • BananaJoeB BananaJoe

                      @bimmi Schaue ich morgen mal an.
                      Mit welcher Lösung skalierst du im Moment? Ich nutze ja nur noch Playwright (wobei ich mal schauen muss, da müsste inzwischen endlich eine Version verfügbar sein die unter Ubuntu 24.04 läuft)

                      B Offline
                      B Offline
                      bimmi
                      schrieb am zuletzt editiert von
                      #824

                      @bananajoe ich nutze puppeteer in Verbindung mit convert. Es läuft auch super soweit.

                      Ich muss ebenfalls noch ein bisschen testen. Ist mir nur an einem Tag bisher aufgefallen und ich hab alle schon geupdatet.

                      Gruß Bimmi

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

                      BananaJoeB 1 Antwort Letzte Antwort
                      0
                      • F Flowski

                        Jemand eine Idee woher man aktuell einen fertigen Access Point zu kaufen bekommt?

                        S Offline
                        S Offline
                        sameOne
                        schrieb am zuletzt editiert von
                        #825

                        @flowski Hier gibt es auch einen AP
                        https://www.kleinanzeigen.de/s-anzeige/50x-e-paper-elektronische-preisschild-2-6-und-2-2-/2902317130-168-2829

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

                          @Eisbaeeer irgendwie zickt mein Yellow nach dem Upgrade herum:
                          8e408e48-b53f-44aa-a06a-e104b7d50e3d-image.png
                          3e114ad7-2991-4d79-8a61-df2da63bbec2-image.png
                          Die Anzeige ist ja auch neu ... meine ich. Auch auf meinem alten AP dauert das nun einige Sekunden bis die auf "Online" umspringt.
                          93075718-0bdc-496b-a8d8-4206fee40ef0-image.png
                          Was funktioniert und was nicht bin ich noch am schauen ...

                          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

                          S 1 Antwort Letzte Antwort
                          0
                          • BananaJoeB BananaJoe

                            @Eisbaeeer irgendwie zickt mein Yellow nach dem Upgrade herum:
                            8e408e48-b53f-44aa-a06a-e104b7d50e3d-image.png
                            3e114ad7-2991-4d79-8a61-df2da63bbec2-image.png
                            Die Anzeige ist ja auch neu ... meine ich. Auch auf meinem alten AP dauert das nun einige Sekunden bis die auf "Online" umspringt.
                            93075718-0bdc-496b-a8d8-4206fee40ef0-image.png
                            Was funktioniert und was nicht bin ich noch am schauen ...

                            S Offline
                            S Offline
                            sameOne
                            schrieb am zuletzt editiert von
                            #827

                            @bananajoe Es gibt derzeit einen Bug in der C6 Firmware,
                            Um den erst einmal zu Fixen diese 4 dateien einer alten C6 Firmware in den base Ordner vom AP hochladen und dann unter update "Update ESP32-C6" Klicken jedoch vorher den hacken von download latest version entfernen

                            https://github.com/OpenEPaperLink/OpenEPaperLink/tree/ddd043f44fae702f82c7132008a323d5e8301a0f/binaries/ESP32-C6

                            BananaJoeB 1 Antwort Letzte Antwort
                            1
                            • S sameOne

                              @bananajoe Es gibt derzeit einen Bug in der C6 Firmware,
                              Um den erst einmal zu Fixen diese 4 dateien einer alten C6 Firmware in den base Ordner vom AP hochladen und dann unter update "Update ESP32-C6" Klicken jedoch vorher den hacken von download latest version entfernen

                              https://github.com/OpenEPaperLink/OpenEPaperLink/tree/ddd043f44fae702f82c7132008a323d5e8301a0f/binaries/ESP32-C6

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

                              @atc Danke, hast mir den Tag gerettet.
                              Ich hatte mir das schon gedacht (nachdem ich gesehen habe das in der aktuellen Version irgendeine Pin-Belegung geändert wurde) und war auf der Suche nach einer älteren, bin aber noch nicht fündig geworden.

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

                              1 Antwort Letzte Antwort
                              0
                              • B bimmi

                                @bananajoe ich nutze puppeteer in Verbindung mit convert. Es läuft auch super soweit.

                                Ich muss ebenfalls noch ein bisschen testen. Ist mir nur an einem Tag bisher aufgefallen und ich hab alle schon geupdatet.

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

                                @bimmi warum sollte sich da eigentlich was am Bild ändern nach dem Update?

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

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

                                  Ich habe drei von den yellow APs hier laufen. Damit habe ich keine Probleme.

                                  Ich hatte allerdings erst auf "Update latest Version" geklickt und musste danach noch einmal bei "Environment" den "ESP32_S3_16_8_YELLOW_AP" auswählen.
                                  Dann habe ich bei ESP32 und Filesystem das Update noch mal manuell angestossen.

                                  Habe 75 TAGs am laufen.

                                  72.jpg

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

                                  O BananaJoeB 3 Antworten Letzte Antwort
                                  1
                                  • B Beowolf

                                    Ich habe drei von den yellow APs hier laufen. Damit habe ich keine Probleme.

                                    Ich hatte allerdings erst auf "Update latest Version" geklickt und musste danach noch einmal bei "Environment" den "ESP32_S3_16_8_YELLOW_AP" auswählen.
                                    Dann habe ich bei ESP32 und Filesystem das Update noch mal manuell angestossen.

                                    Habe 75 TAGs am laufen.

                                    72.jpg

                                    O Offline
                                    O Offline
                                    oxident
                                    schrieb am zuletzt editiert von
                                    #831

                                    @beowolf 75 Tags? Hast Du damit tapeziert??

                                    B 1 Antwort Letzte Antwort
                                    0
                                    • B Beowolf

                                      Ich habe drei von den yellow APs hier laufen. Damit habe ich keine Probleme.

                                      Ich hatte allerdings erst auf "Update latest Version" geklickt und musste danach noch einmal bei "Environment" den "ESP32_S3_16_8_YELLOW_AP" auswählen.
                                      Dann habe ich bei ESP32 und Filesystem das Update noch mal manuell angestossen.

                                      Habe 75 TAGs am laufen.

                                      72.jpg

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

                                      @beowolf Ich hatte erst danach geschnallt das es schlich verstellt war, gibt ja auch schon ein Issue dazu auf Github:
                                      https://github.com/OpenEPaperLink/OpenEPaperLink/issues/409
                                      Und dann unten den ESP geupdated, das war wohl mein Problem

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

                                      1 Antwort Letzte Antwort
                                      0
                                      • B Beowolf

                                        Ich habe drei von den yellow APs hier laufen. Damit habe ich keine Probleme.

                                        Ich hatte allerdings erst auf "Update latest Version" geklickt und musste danach noch einmal bei "Environment" den "ESP32_S3_16_8_YELLOW_AP" auswählen.
                                        Dann habe ich bei ESP32 und Filesystem das Update noch mal manuell angestossen.

                                        Habe 75 TAGs am laufen.

                                        72.jpg

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

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

                                        Habe 75 TAGs am laufen.

                                        Ist man da nicht recht viel mit Batteriewechseln beschäftigt? Wie behältst du da den Überblick wo ein Wechsel Notwendig ist? So etwas wie den Device-Watcher gibt es hier ja nicht.

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

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

                                          Die Batteriespannung kann ich mir aber holen.

                                          batterie.jpg

                                          Ich habe dieses Skript ja am laufen.

                                          // HIER DIE IP ADRESSE VOM OEPL ACCESS POINT EINTRAGEN
                                          const serverIP = 'xxx.xxx.xxx.xxx';  // z.B. 192.168.1.71
                                          
                                          // 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_Dachgeschoss';  // Datenpunkt zur Steuerung des Skripts
                                          
                                          function ensureOpenEPaperLinkFolderExists(callback) {
                                              const OpenEPaperLinkFolderPath = '0_userdata.0.Tag_Buttons.Dachgeschoss';
                                              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.Dachgeschoss.${tag.mac.replace(/:/g, '')}`;
                                                      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();
                                          

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

                                          BananaJoeB 1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          815

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe