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. Visualisierung
  4. HTML Canvas Zeichnung Farbwerte aus DP übernehmen

NEWS

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

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

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

HTML Canvas Zeichnung Farbwerte aus DP übernehmen

Scheduled Pinned Locked Moved Visualisierung
27 Posts 3 Posters 1.5k Views 3 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.
  • dirk_1930D dirk_1930

    @liv-in-sky
    Wie erstellst Du denn das Bild ohne das Canvas Element?

    Mein Bilde erstelle ich aktuell wie folgt...

     let dataDayRain ="2222222222222222222222222222222222222222222122222";
    let color = "#fff,#3aaadc,#1774c4,#a4c639,#22d690";
    let farben = color.split(',');
    
    let startWert = 0;
    let elementId;
    let element=dataDayRain;
    let elementGroesse = 7;
    let center = (elementGroesse*elementGroesse)/2;
    let doubleElement = elementGroesse * elementGroesse;
    
    for (let y = 0; y <= 6; y++){
    for (x = 0; x <= 6; x++) {
      elementWert = element.charAt((y*7)+x);
      switch (elementWert) {
        case "0":
          elementId = farben[0];
          break;
        case "1":
          elementId = farben[1];
          break;
        case "2":
          elementId = farben[2];
          break;
        case "3":
          elementId = farben[3];
          break;
        case "9":
          elementId = farben[4];
          break;
      }
      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      ctx.fillStyle = elementId;
      ctx.strokeStyle='black';
      ctx.fillRect((x*elementGroesse), 7*elementGroesse - (elementGroesse*(y+1)), elementGroesse, elementGroesse); 
    }
    
    }
      ctx.strokeStyle='black';
      ctx.lineWidth = 0.5;
      ctx.beginPath();
      ctx.arc(center, center, elementGroesse * 0.5, 1.5*Math.PI, 3.5*Math.PI);
      ctx.stroke();
      ctx.beginPath();
      ctx.arc(center, center, elementGroesse * 1.5, 1.5*Math.PI, 3.5*Math.PI);
      ctx.stroke();
      ctx.beginPath();
      ctx.arc(center, center, elementGroesse * 2.5, 1.5*Math.PI, 3.5*Math.PI);
      ctx.stroke();
      ctx.beginPath();
      ctx.arc(center, center, elementGroesse * 3.5, 1.5*Math.PI, 3.5*Math.PI);
      ctx.stroke();
      
      ctx.lineWidth=0.5;
      ctx.strokeRect(0.5,0.5,elementGroesse*elementGroesse-2,elementGroesse*elementGroesse-2);
      
      ctx.beginPath();              
      ctx.lineWidth = 0.5;
      ctx.moveTo(center, 0);
      ctx.lineTo(center, elementGroesse);
      ctx.stroke();  // Draw it
      
      ctx.beginPath();              
      ctx.lineWidth = 0.5;
      ctx.moveTo(doubleElement, center);
      ctx.lineTo(doubleElement - elementGroesse, center);
      ctx.stroke();  // Draw it
      
      ctx.beginPath();              
      ctx.lineWidth = 0.5;
      ctx.moveTo(center, doubleElement);
      ctx.lineTo(center, doubleElement - elementGroesse);
      ctx.stroke();  // Draw it
      
      ctx.beginPath();              
      ctx.lineWidth = 0.5;
      ctx.moveTo(0, center);
      ctx.lineTo(0 + elementGroesse, center);
      ctx.stroke();  // Draw it
        
      console.log("Data URL");
      var dataURL = c.toDataURL();
      console.log(dataURL);  
    

    Die dataURL müsste ich dann im Datenpunkt schreiben, allerdings läuft das Script nur als "Javascript" ohne den Browser nicht durch

    liv-in-skyL Offline
    liv-in-skyL Offline
    liv-in-sky
    wrote on last edited by
    #13

    @dirk_1930

    https://forum.iobroker.net/topic/28789/script-fürtabelle-der-batterie-zustände/833?lang=de

    beispiel 2

    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

    dirk_1930D 1 Reply Last reply
    0
    • liv-in-skyL liv-in-sky

      @dirk_1930

      bevor du den spoiler anwendest musst du die codetags ins forum setzen - und über die code tags den spoiler und dann das sript in die code tags kopieren

      ist sonst schwer lesbar

      dirk_1930D Offline
      dirk_1930D Offline
      dirk_1930
      wrote on last edited by
      #14

      @liv-in-sky hab ich geändert - sorry...

      1 Reply Last reply
      0
      • liv-in-skyL liv-in-sky

        @dirk_1930

        https://forum.iobroker.net/topic/28789/script-fürtabelle-der-batterie-zustände/833?lang=de

        beispiel 2

        dirk_1930D Offline
        dirk_1930D Offline
        dirk_1930
        wrote on last edited by
        #15

        @liv-in-sky said in [gelöst] HTML Canvas Zeichnung Farbwerte aus DP übernehmen:

        @dirk_1930

        https://forum.iobroker.net/topic/28789/script-fürtabelle-der-batterie-zustände/833?lang=de

        beispiel 2

        ... " Beispiel 2" bezog sich auf den falsch verwendeten Spoiler - richtig?

        1 Reply Last reply
        0
        • dirk_1930D dirk_1930

          Hallo zusammen,
          ich versuche in einem basic-HTML Widget ein Rechteck mit dem fillStyle Farbwert aus einem Datenpunkt zu erstellen.

          Testweise hatte ich folgendes probiert:

          <!DOCTYPE html>
          <html>
          <body>
          
          <h1>The canvas element</h1>
          
          <canvas id="myCanvas"></canvas>
          
          <script>
          var c = document.getElementById("myCanvas");
          var ctx = c.getContext("2d");
          ctx.fillStyle = "#FF0000";
          ctx.fillRect(0, 42, 70, 70);
          </script>
          
          </body>
          </html>
          

          Das zeichnet ein schönes rotes Rechteck...

          Im Datenpunkt "0_userdata.day_0.spot.1" habe ich einen Hexwert als String hinterlegt.
          Wie bekomme ich jetzt den Farbwert aus dem Datenpunkt übertragen, bzw. geht das überhaupt?

          Besten Dank für Eure Hilfe :-)

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          wrote on last edited by OliverIO
          #16

          @dirk_1930

          Auch wenn es schon als gelöst dran steht, evtl mal der Hinweis wie binding auch noch eingesetzt werden kann:

          Wenn man den folgenden Inhalt in ein HTML-widget hinzufügt, dann träg vis den Inhalt des Datenpunktes genau an der stelle ein, wo der Datenpunktname in geschweiften Klammern steht und kann dann im folgenden im code weiterverwendet werden.
          Das widget wird bei einer Änderung automatisch immer wieder neu erzeugt.
          Wenn da jetzt relativ viel code drin steht und/oder der Datenpunkt sich sehr schnell hintereinander ändert, kann es beim zeichnen der Grafik uU zum flackern kommen.
          Aber das muss man ausprobieren.

          <script>
              var datenpunktinhalt = "{0_userdata.0.test1}"
          </script>
          

          Bei der Lösung mit setInterval wird der Server halt regelmäßig mit einer Anfrage (ob sich Wert geändert hat oder nicht) befeuert. Bei 2000ms ist das zwar unproblematisch, wenn es aber öfters passieren soll oder vielfach eingesetzt wird, auch wieder performance-relevant für die serverseite.

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          dirk_1930D 1 Reply Last reply
          0
          • OliverIOO OliverIO

            @dirk_1930

            Auch wenn es schon als gelöst dran steht, evtl mal der Hinweis wie binding auch noch eingesetzt werden kann:

            Wenn man den folgenden Inhalt in ein HTML-widget hinzufügt, dann träg vis den Inhalt des Datenpunktes genau an der stelle ein, wo der Datenpunktname in geschweiften Klammern steht und kann dann im folgenden im code weiterverwendet werden.
            Das widget wird bei einer Änderung automatisch immer wieder neu erzeugt.
            Wenn da jetzt relativ viel code drin steht und/oder der Datenpunkt sich sehr schnell hintereinander ändert, kann es beim zeichnen der Grafik uU zum flackern kommen.
            Aber das muss man ausprobieren.

            <script>
                var datenpunktinhalt = "{0_userdata.0.test1}"
            </script>
            

            Bei der Lösung mit setInterval wird der Server halt regelmäßig mit einer Anfrage (ob sich Wert geändert hat oder nicht) befeuert. Bei 2000ms ist das zwar unproblematisch, wenn es aber öfters passieren soll oder vielfach eingesetzt wird, auch wieder performance-relevant für die serverseite.

            dirk_1930D Offline
            dirk_1930D Offline
            dirk_1930
            wrote on last edited by dirk_1930
            #17

            @oliverio @liv-in-sky

            Ich helfe mir jetzt, indem ich das Element mit Hilfe von Node-Canvas generiere. Damit bekomme ich ein PNG Bild, dass ich abspeichern möchte.

            Die Syntax zum abspeichern lautet:

            .pipe(fs.createWriteStream(path.join(__dirname, "day0.png")));
            

            Was muss ich hier als 'dirname' angeben, damit ich unter 0_userdata darauf zugreifen kann?

            In Visual Studio Code speichert er das dann im gleichen Ordner, nur im IOBroker meldet er __dirname is not defined

            OliverIOO 1 Reply Last reply
            0
            • dirk_1930D dirk_1930

              @oliverio @liv-in-sky

              Ich helfe mir jetzt, indem ich das Element mit Hilfe von Node-Canvas generiere. Damit bekomme ich ein PNG Bild, dass ich abspeichern möchte.

              Die Syntax zum abspeichern lautet:

              .pipe(fs.createWriteStream(path.join(__dirname, "day0.png")));
              

              Was muss ich hier als 'dirname' angeben, damit ich unter 0_userdata darauf zugreifen kann?

              In Visual Studio Code speichert er das dann im gleichen Ordner, nur im IOBroker meldet er __dirname is not defined

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              wrote on last edited by
              #18

              @dirk_1930

              du verwechselst client(browser) und server(iobroker)

              die geposteten befehle funktionieren nur unter node auf dem server.
              der browser kann diese befehle nicht.
              der server hat keinen zugriff auf die dom (document object model) des browsers.

              über javascript im browser kannst du einen download anstoßen und das bild dann abspeichern auf den server transferieren und dort dann an eine bestimmte stelle abspeichern. aber evtl ist eine andere vorgehensweise zielführender.
              warum willst du die grafik speichern? sie wird ja bei jedem aufruf immer neu gemalt
              zur archivierung? zur wiederverwendung? dann sollte man lieber die grafik auf dem server erzeugen.

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              dirk_1930D 1 Reply Last reply
              0
              • OliverIOO OliverIO

                @dirk_1930

                du verwechselst client(browser) und server(iobroker)

                die geposteten befehle funktionieren nur unter node auf dem server.
                der browser kann diese befehle nicht.
                der server hat keinen zugriff auf die dom (document object model) des browsers.

                über javascript im browser kannst du einen download anstoßen und das bild dann abspeichern auf den server transferieren und dort dann an eine bestimmte stelle abspeichern. aber evtl ist eine andere vorgehensweise zielführender.
                warum willst du die grafik speichern? sie wird ja bei jedem aufruf immer neu gemalt
                zur archivierung? zur wiederverwendung? dann sollte man lieber die grafik auf dem server erzeugen.

                dirk_1930D Offline
                dirk_1930D Offline
                dirk_1930
                wrote on last edited by dirk_1930
                #19

                @oliverio
                Ich habe das als Script auf dem IOBroker laufen, nicht im Browser. Abgespeichert unter "common".

                Ich habe sehr viele Elemente, die gezeichnet werden, und habe festgestellt, dass der Browser dabei immer eine Gedenkminute einlegt.

                Ich würde mir die Elemente nach dem API Aufruf erstellen, und dann als Bild in der VIS einfügen.

                1 Reply Last reply
                0
                • OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  wrote on last edited by
                  #20

                  @dirk_1930
                  ah ok du bist auf server-seite gewechselt.

                  Zum Speicherort: du kannst dir einen ort hier drunter suchen
                  /opt/iobroker/iobroker-data/

                  Wenn du die Datei über vis bzw den webserver von iobroker anzeigen lassen möchtest, musst du diese datei erst bekannt machen, sonst kennt der webserver die datei nicht.
                  da bin ich nicht ganz so firm, evtl kann da jemand anderes helfen

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  dirk_1930D 1 Reply Last reply
                  0
                  • OliverIOO OliverIO

                    @dirk_1930
                    ah ok du bist auf server-seite gewechselt.

                    Zum Speicherort: du kannst dir einen ort hier drunter suchen
                    /opt/iobroker/iobroker-data/

                    Wenn du die Datei über vis bzw den webserver von iobroker anzeigen lassen möchtest, musst du diese datei erst bekannt machen, sonst kennt der webserver die datei nicht.
                    da bin ich nicht ganz so firm, evtl kann da jemand anderes helfen

                    dirk_1930D Offline
                    dirk_1930D Offline
                    dirk_1930
                    wrote on last edited by dirk_1930
                    #21

                    @oliverio @liv-in-sky

                    Ich habe jetzt

                    __dirname = '/opt/iobroker/iobroker-data/files/vis.0'
                    

                    gesetzt, sehe aber im Dateimanager die Datei nicht (wie du schon vermutet hast)
                    (über die Konsole sehe ich die Datei)

                    Wer könnte mir jetzt dabei helfen?

                    /// Nachtrag

                    Man muss die writeFile Methode benutzen. Ich lese jetzt das File aus (welches mit dem Stream erzeugt wurde) und schreibe mit writeFile zurück.
                    Problem ist jetzt, das der Stream noch nicht fertig ist, wenn der writeFile Befehl ausgeführt ist. Wie bekomme ich das hin, dass er wartet?

                    console.log("Datei erstellen");
                    
                    let dateiName = 'day.png';
                    __dirname = '/opt/iobroker/iobroker-data/files/vis.0/'
                     canvas
                       .createPNGStream()
                       .pipe(fs.createWriteStream(path.join(__dirname,dateiName))); //png schreiben
                     
                    const picture= fs.readFileSync('/opt/iobroker/iobroker-data/files/vis.0/'+ dateiName); //liest linux-datei-system
                    writeFile('vis.0', 'test.png', picture, function (error) { });   //schreibt in iobroker system
                    
                    
                    OliverIOO 1 Reply Last reply
                    0
                    • dirk_1930D dirk_1930

                      @oliverio @liv-in-sky

                      Ich habe jetzt

                      __dirname = '/opt/iobroker/iobroker-data/files/vis.0'
                      

                      gesetzt, sehe aber im Dateimanager die Datei nicht (wie du schon vermutet hast)
                      (über die Konsole sehe ich die Datei)

                      Wer könnte mir jetzt dabei helfen?

                      /// Nachtrag

                      Man muss die writeFile Methode benutzen. Ich lese jetzt das File aus (welches mit dem Stream erzeugt wurde) und schreibe mit writeFile zurück.
                      Problem ist jetzt, das der Stream noch nicht fertig ist, wenn der writeFile Befehl ausgeführt ist. Wie bekomme ich das hin, dass er wartet?

                      console.log("Datei erstellen");
                      
                      let dateiName = 'day.png';
                      __dirname = '/opt/iobroker/iobroker-data/files/vis.0/'
                       canvas
                         .createPNGStream()
                         .pipe(fs.createWriteStream(path.join(__dirname,dateiName))); //png schreiben
                       
                      const picture= fs.readFileSync('/opt/iobroker/iobroker-data/files/vis.0/'+ dateiName); //liest linux-datei-system
                      writeFile('vis.0', 'test.png', picture, function (error) { });   //schreibt in iobroker system
                      
                      
                      OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      wrote on last edited by
                      #22

                      @dirk_1930
                      in dem du den callback verwendest
                      https://github.com/ioBroker/ioBroker.javascript/blob/11a8a28d70cb68a28b28440e41f0b2c9dbb7132d/docs/en/javascript.md#writefile

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      dirk_1930D 1 Reply Last reply
                      0
                      • OliverIOO OliverIO

                        @dirk_1930
                        in dem du den callback verwendest
                        https://github.com/ioBroker/ioBroker.javascript/blob/11a8a28d70cb68a28b28440e41f0b2c9dbb7132d/docs/en/javascript.md#writefile

                        dirk_1930D Offline
                        dirk_1930D Offline
                        dirk_1930
                        wrote on last edited by
                        #23

                        @oliverio

                        … den nutze ich doch schon, oder nicht.

                        OliverIOO 1 Reply Last reply
                        0
                        • dirk_1930D dirk_1930

                          @oliverio

                          … den nutze ich doch schon, oder nicht.

                          OliverIOO Offline
                          OliverIOO Offline
                          OliverIO
                          wrote on last edited by
                          #24

                          @dirk_1930
                          ah sorry, nicht genau genug gelesen.
                          probier mal das folgende.
                          mehr oder weniger das gleiche, aber weniger kompakt,
                          dafür kann da das Ereignis abgegriffen werden, wenn der stream fertig geschrieben ist.
                          ich habe es nur schnell zusammenkopiert und grob angepasst.
                          kann noch fehler enthalten, aber das grundprinzip stimmt.

                          console.log("Datei erstellen");
                           
                          let dateiName = 'day.png';
                          __dirname = '/opt/iobroker/iobroker-data/files/vis.0/';
                          
                           
                          const fs = require('fs')
                          const out = fs.createWriteStream(__dirname + '/test.png')
                          const stream = canvas.createPNGStream()
                          stream.pipe(out)
                          out.on('finish', () =>  {
                              console.log('The PNG file was written.');
                              const picture= fs.readFileSync('/opt/iobroker/iobroker-data/files/vis.0/'+ dateiName); 
                              writeFile('vis.0', 'test.png', picture, function (error) { });   
                          )
                           
                          

                          Meine Adapter und Widgets
                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                          Links im Profil

                          dirk_1930D 1 Reply Last reply
                          0
                          • OliverIOO OliverIO

                            @dirk_1930
                            ah sorry, nicht genau genug gelesen.
                            probier mal das folgende.
                            mehr oder weniger das gleiche, aber weniger kompakt,
                            dafür kann da das Ereignis abgegriffen werden, wenn der stream fertig geschrieben ist.
                            ich habe es nur schnell zusammenkopiert und grob angepasst.
                            kann noch fehler enthalten, aber das grundprinzip stimmt.

                            console.log("Datei erstellen");
                             
                            let dateiName = 'day.png';
                            __dirname = '/opt/iobroker/iobroker-data/files/vis.0/';
                            
                             
                            const fs = require('fs')
                            const out = fs.createWriteStream(__dirname + '/test.png')
                            const stream = canvas.createPNGStream()
                            stream.pipe(out)
                            out.on('finish', () =>  {
                                console.log('The PNG file was written.');
                                const picture= fs.readFileSync('/opt/iobroker/iobroker-data/files/vis.0/'+ dateiName); 
                                writeFile('vis.0', 'test.png', picture, function (error) { });   
                            )
                             
                            
                            dirk_1930D Offline
                            dirk_1930D Offline
                            dirk_1930
                            wrote on last edited by
                            #25

                            @oliverio

                            Habe es noch etwas geändert und jetzt geht es wie gewünscht :+1: :blush:

                            Was würde ich nur ohne Euch machen...

                            let dateiName = 'dayTest.png';
                            __dirname = '/opt/iobroker/iobroker-data/files/vis.0/';
                            const out = fs.createWriteStream(__dirname + dateiName);
                            const stream = canvas.createPNGStream();
                            stream.pipe(out);
                            out.on('finish', () => {
                                const picture = fs.readFileSync(__dirname + dateiName);
                                writeFile('vis.0' , '/myfiles/img/' + dateiName, picture, function (error) { });
                                console.log('The PNG file was written.');
                            })
                            
                            liv-in-skyL 1 Reply Last reply
                            0
                            • dirk_1930D dirk_1930

                              @oliverio

                              Habe es noch etwas geändert und jetzt geht es wie gewünscht :+1: :blush:

                              Was würde ich nur ohne Euch machen...

                              let dateiName = 'dayTest.png';
                              __dirname = '/opt/iobroker/iobroker-data/files/vis.0/';
                              const out = fs.createWriteStream(__dirname + dateiName);
                              const stream = canvas.createPNGStream();
                              stream.pipe(out);
                              out.on('finish', () => {
                                  const picture = fs.readFileSync(__dirname + dateiName);
                                  writeFile('vis.0' , '/myfiles/img/' + dateiName, picture, function (error) { });
                                  console.log('The PNG file was written.');
                              })
                              
                              liv-in-skyL Offline
                              liv-in-skyL Offline
                              liv-in-sky
                              wrote on last edited by
                              #26

                              @dirk_1930 du könntest doch mal etwas zeigen,von dem, was du da gezaubert hast

                              mit dem programm : ScreenToGif https://www.screentogif.com/downloads.html -

                              wäre das schnell gemacht

                              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                              dirk_1930D 1 Reply Last reply
                              0
                              • liv-in-skyL liv-in-sky

                                @dirk_1930 du könntest doch mal etwas zeigen,von dem, was du da gezaubert hast

                                mit dem programm : ScreenToGif https://www.screentogif.com/downloads.html -

                                wäre das schnell gemacht

                                dirk_1930D Offline
                                dirk_1930D Offline
                                dirk_1930
                                wrote on last edited by
                                #27

                                @liv-in-sky
                                Gerne... allerdings bin ich noch weit davon entfernt fertig zu sein.
                                Ich nutze die API von Meteoblue. Dort gibt es den sogenannten Rain Spot, der die Niederschlagsverteilung innerhalb von 15 km um deinen Standort herum zeigt. Da die API nur einen Farbcodierten String liefert, musste ich das aufdröseln. Da ich nun wirklich nicht der begnadete Programmierer bin, braucht das halt ewig und es tauchen ständig neue Fragen und Wünsche / Ideen auf. Allerdings lernt man auf diese Art am Praxisprojekt auch am meisten.
                                So sehen die gerenderten Rainspots für die nächsten 5 Tage aus.
                                Da es jetzt auch noch stündliche Auflösungen gibt, dachte ich mir es macht mehr Sinn diese Bilder einmalig nach API Aufruf zu rendern und dann nur jeweils das Bild einzufügen. Sonst müsste ich ja unter Umständen dann bei x-HTML Widgets den Code ändern.
                                Wenn ich das ganze mal als Card fertig habe poste ich gerne einen Screenshot.

                                Screenshot 2022-03-15 075449.png

                                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

                                430

                                Online

                                32.4k

                                Users

                                81.5k

                                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