Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. [gelöst] Dynamische URL aus Datenpunkt als View-Hintergrund

NEWS

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

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

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

[gelöst] Dynamische URL aus Datenpunkt als View-Hintergrund

Scheduled Pinned Locked Moved Visualisierung
vis
30 Posts 6 Posters 6.9k Views 10 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.
  • opossumO opossum

    Hallo, @J-A-R-V-I-S ,

    danke für die Antwort. Wo genau muss ich das einstellen, habe da schon alle Varianten probiert. Wenn ich das in der View mache, wird das Binding nicht aufgelöst. Ich hoffe, ich habe die richtige Stelle genommen und habe das richtig eingetragen?

    7e0d3fd6-a977-4ec0-ad5a-0377934396e6-image.png
    Auch mit dieser Einstellung wird das nicht aufgelöst, dann bleibt der Hintergrund weiß.
    bccf4151-e713-4092-9564-3997090ee5e3-image.png

    crunchipC Away
    crunchipC Away
    crunchip
    Forum Testing Most Active
    wrote on last edited by
    #7

    @opossum villt, hilft das, ich habe als direktes Hintergrundbild, ein Bild in vis.0 hinterlegt
    eventuell klappt das bei dir, wenn du es so einträgst
    Pfad natürlich anpassen

    url(http://IPIOBROKER:8082/vis.0/foto1.png)
    

    umgestiegen von Proxmox auf Unraid

    1 Reply Last reply
    0
    • opossumO Offline
      opossumO Offline
      opossum
      wrote on last edited by opossum
      #8

      Hallo, @crunchip ,

      danke für den Tipp. Mit einem lokal gespeicherten Foto oder Bild keine Probleme. Aber mit einem Binding wird das nicht aufgelöst.
      Ich hole mit einem Script jede Nacht um 00:05 Uhr den Link für das Bing-Bild des Tages. Der Link wird in den Datenpunkt JavaScript.0.Bild eingetragen, etwa so:
      https://bing.com//th?id=OHR.RossmarktBerching_DE-DE9110933252_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
      Jetzt habe ich versucht, diese Adresse in den Dialog für das Hintergrundimage einzutragen. Die Syntax ist ja url("Pfad auf das Bild") - also geht url("https://bing.com//th?id=OHR.RossmarktBerching_DE-DE9110933252_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp") ohne Probleme. Aber da sich ja der Link jede Nacht ändert, wollte ich das jetzt mit einem Binding versuchen, habe die vielfältigsten Formate versucht, nix.
      Also {JavaScript.0.Bild} geht nur in einem Widget und wird auch sauber aufgelöst. Eingetragen im CSS als Klasse für das Hintergrundimage, geht nicht. Ich werde jetzt mal versuchen, ein Issue für VIS zu eröffnen. Vielleicht klappt es ja. Die Funktion ist ja bereits bei den Widgets implementiert. Wobei ich bei meinen Recherchen dazu auch nichts im Web gefunden habe. Da geht immer nur der Pfad auf eine lokal gespeicherte Bilddatei. Ein Workaround wäre es, wenn ich mittels Script dieses Bild jeden Tag lokal in einem Pfad auf dem iobroker-Rechner ablegen könnte. Aber auch das ist nicht trivial. Da geht's dann um Rechte zur Speicherung und solch Kram. Mal schauen, wie ich das löse. Danke Euch.

      https://schlepper-petersdorf.jimdofree.com/

      crunchipC 1 Reply Last reply
      0
      • opossumO opossum

        Hallo, @crunchip ,

        danke für den Tipp. Mit einem lokal gespeicherten Foto oder Bild keine Probleme. Aber mit einem Binding wird das nicht aufgelöst.
        Ich hole mit einem Script jede Nacht um 00:05 Uhr den Link für das Bing-Bild des Tages. Der Link wird in den Datenpunkt JavaScript.0.Bild eingetragen, etwa so:
        https://bing.com//th?id=OHR.RossmarktBerching_DE-DE9110933252_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
        Jetzt habe ich versucht, diese Adresse in den Dialog für das Hintergrundimage einzutragen. Die Syntax ist ja url("Pfad auf das Bild") - also geht url("https://bing.com//th?id=OHR.RossmarktBerching_DE-DE9110933252_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp") ohne Probleme. Aber da sich ja der Link jede Nacht ändert, wollte ich das jetzt mit einem Binding versuchen, habe die vielfältigsten Formate versucht, nix.
        Also {JavaScript.0.Bild} geht nur in einem Widget und wird auch sauber aufgelöst. Eingetragen im CSS als Klasse für das Hintergrundimage, geht nicht. Ich werde jetzt mal versuchen, ein Issue für VIS zu eröffnen. Vielleicht klappt es ja. Die Funktion ist ja bereits bei den Widgets implementiert. Wobei ich bei meinen Recherchen dazu auch nichts im Web gefunden habe. Da geht immer nur der Pfad auf eine lokal gespeicherte Bilddatei. Ein Workaround wäre es, wenn ich mittels Script dieses Bild jeden Tag lokal in einem Pfad auf dem iobroker-Rechner ablegen könnte. Aber auch das ist nicht trivial. Da geht's dann um Rechte zur Speicherung und solch Kram. Mal schauen, wie ich das löse. Danke Euch.

        crunchipC Away
        crunchipC Away
        crunchip
        Forum Testing Most Active
        wrote on last edited by
        #9

        @opossum sagte in dynamische URL aus Datenpunkt als View-Hintergrund:

        Da geht's dann um Rechte zur Speicherung und solch Kram.

        wäre dann eine option, das Speicher des Bildes noch in deinem Script zu integrieren
        sollte ja kein Problem sein, wenn du ausserhalb von /opt/iobroker/iobroker-data speicherst
        z.b. in
        /opt/iobroker/Bingbild

        umgestiegen von Proxmox auf Unraid

        1 Reply Last reply
        0
        • opossumO Offline
          opossumO Offline
          opossum
          wrote on last edited by opossum
          #10

          Hallo,
          wir (@Glasfaser und ich) haben es nun hinbekommen. Mittels Script hole ich mir jeden Tag den Link zum Bild. Dann mache ich einen Download, wobei der Dateiname fest vergeben ist. Das Script erneuert die Datei also einmal in 24 Stunden. Auf den Views habe ich den Hintergrund auf diese Datei eingetragen.
          Man muss in den Einstellungen des Javascript-Adapters folgendes Modul hinzufügen:
          request

          Hier das Script:

          schedule('10 0 * * *' , function()
          {
          const id_uri = 'javascript.0.Bild';
          var uri = getState(id_uri).val; 
          var fs = require('fs');
          var request = require('request');
          
          createState('javascript.0.Bild', "");
          createState('javascript.0.Title', "");
          BilddesTages();
          function BilddesTages(){
                  var url = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=de-DE';
                  request(url, function (err, state, body){
                      if (body) {
                          body = JSON.parse(body);
                          var bild = "https://bing.com/" + body.images[0].url;
                          var title = body.images[0].title;
                          setState("javascript.0.Bild", bild);
                          setState("javascript.0.Title", title);
                      } else {
                      }
                  });
          }
          exec('rm -f /media/backup/bild.jpg');
          setTimeout(function(){
          var download = function(uri, filename, callback){
            request.head(uri, function(err, res, body){
              console.log('content-type:', res.headers['content-type']);
              console.log('content-length:', res.headers['content-length']);
              request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
            });
          };
          download(uri, '/media/backup/bild.jpg', function(){
            console.log('Bild heruntergeladen');
           
          setTimeout(function(){
          const bild1 = fs.readFileSync('/media/backup/bild.jpg');
          writeFile('vis.0','/main/img/bild_des_tages/bild.jpg', bild1);
          console.log('Bild kopiert')
          }, 30000);           
          });
          }, 30000);
          });
          
          

          Ich habe dabei den Pfad /media/backup als Downloadpfad genommen, vor dem Download wird die vorhandene Datei gelöscht. Das Script kopiert dann die Datei von /media/backup/ nach /opt/iobroker/iobroker-data/files/vis.0/main/img/bild_des_tages/. Der Link auf die Datei in der View sieht wie folgt aus:

          url(http://192.168.1.100:8082/vis.0/main/img/bild_des_tages/bild.jpg)
          

          04cd2131-2754-41fc-8a49-1b98f8c1f684-image.png
          … und die View sieht dann wie folgt aus:
          82665c25-21ee-4283-89dd-4e596a129a82-image.png

          https://schlepper-petersdorf.jimdofree.com/

          Basti97B 1 Reply Last reply
          3
          • opossumO Offline
            opossumO Offline
            opossum
            wrote on last edited by opossum
            #11

            Hallo,

            andere Variante mit CSS geht nun auch. In der View in der globalen CSS-Sektion folgendes eintragen:
            d723a3d3-c330-43ca-beb8-bdce9f4db5ab-image.png
            Hier noch mal der Code zum Kopieren. Man kann hier natürlich noch mehr Eigenschaften für das Image festlegen, wenn man das möchte.

            .hintergrund{
                background-image: url(http://192.168.1.100:8082/vis.0/main/img/bild_des_tages/bild.jpg);
            }
            

            Dann in den View-Eigenschaften noch die CSS-Klasse eintragen, fertig.
            f3bb7ad8-1d88-49ea-ac22-1aeadb55ecdb-image.png und die View sieht dann wie folgt aus, hier mal meine Seitenvorlage:

            5fed9398-d12e-4312-9663-a98beff0ca70-image.png

            https://schlepper-petersdorf.jimdofree.com/

            GlasfaserG TG70T 2 Replies Last reply
            1
            • opossumO opossum

              Hallo,

              andere Variante mit CSS geht nun auch. In der View in der globalen CSS-Sektion folgendes eintragen:
              d723a3d3-c330-43ca-beb8-bdce9f4db5ab-image.png
              Hier noch mal der Code zum Kopieren. Man kann hier natürlich noch mehr Eigenschaften für das Image festlegen, wenn man das möchte.

              .hintergrund{
                  background-image: url(http://192.168.1.100:8082/vis.0/main/img/bild_des_tages/bild.jpg);
              }
              

              Dann in den View-Eigenschaften noch die CSS-Klasse eintragen, fertig.
              f3bb7ad8-1d88-49ea-ac22-1aeadb55ecdb-image.png und die View sieht dann wie folgt aus, hier mal meine Seitenvorlage:

              5fed9398-d12e-4312-9663-a98beff0ca70-image.png

              GlasfaserG Online
              GlasfaserG Online
              Glasfaser
              wrote on last edited by
              #12

              @opossum

              Sehr schön erklärt ,dein ToDo 👍

              Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

              1 Reply Last reply
              1
              • opossumO Offline
                opossumO Offline
                opossum
                wrote on last edited by opossum
                #13

                Hallo,

                ich musste das Script im ersten Beitrag noch einmal anpassen, da das Überschreiben der Datei nicht funktionierte. Ich downloade die Datei jetzt erst einmal nach /media/backup. Hier muss man eventuell im Terminalfenster das Verzeichnis mit entsprechenden Rechten ausstatten -

                sudo chmod 777 media
                

                und dann auch im Verzeichnis media das backup-Verzeichnis entsprechend anpassen

                sudo chmod 777 backup
                

                , wenn der Download nicht klappt. Dann kopiere ich die Datei in den vis.0...-Pfad. Muss das jetzt beobachten, ob es so funktioniert.

                https://schlepper-petersdorf.jimdofree.com/

                GlasfaserG 1 Reply Last reply
                0
                • opossumO opossum

                  Hallo,

                  ich musste das Script im ersten Beitrag noch einmal anpassen, da das Überschreiben der Datei nicht funktionierte. Ich downloade die Datei jetzt erst einmal nach /media/backup. Hier muss man eventuell im Terminalfenster das Verzeichnis mit entsprechenden Rechten ausstatten -

                  sudo chmod 777 media
                  

                  und dann auch im Verzeichnis media das backup-Verzeichnis entsprechend anpassen

                  sudo chmod 777 backup
                  

                  , wenn der Download nicht klappt. Dann kopiere ich die Datei in den vis.0...-Pfad. Muss das jetzt beobachten, ob es so funktioniert.

                  GlasfaserG Online
                  GlasfaserG Online
                  Glasfaser
                  wrote on last edited by Glasfaser
                  #14

                  @opossum

                  Vielleicht so:

                  
                  download(uri, '/tmp/bild.jpg', function(){
                  
                   
                  
                  // Bild kopieren in VIS Verzeichnis für Anzeige im Webübersichtsbild      
                  
                  setTimeout(function(){
                  
                            const bild1 = fs.readFileSync('/tmp/bild.jpg');
                  
                            writeFile('vis.0','/main/img/bild_des_tages/bild.jpg', bild1);
                  
                            console.log('Bild kopiert')    
                  
                           });
                  
                          }, 30000); // 20 sek warten bevor man das JPG umkopiert   
                  
                  

                  Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                  1 Reply Last reply
                  2
                  • opossumO Offline
                    opossumO Offline
                    opossum
                    wrote on last edited by opossum
                    #15

                    Hallo, @Glasfaser ,

                    danke Dir, habe das Script oben mal angepasst. Heute hat es nicht funktioniert, da ich die Ermittlung des Bildes nicht mehr im Script hatte 😕 . Mal sehen, wie das heute nacht aussieht. Das umkopieren funktioniert.
                    EDIT: Ich habe noch den Löschbefehl für die vorhandene Bilddatei eingefügt. Das Löschen passiert vor dem erneuten Download. Jetzt bleibt nur noch, in das Script die Error-Behandlung einzubauen.

                    https://schlepper-petersdorf.jimdofree.com/

                    1 Reply Last reply
                    0
                    • opossumO opossum

                      Hallo,

                      andere Variante mit CSS geht nun auch. In der View in der globalen CSS-Sektion folgendes eintragen:
                      d723a3d3-c330-43ca-beb8-bdce9f4db5ab-image.png
                      Hier noch mal der Code zum Kopieren. Man kann hier natürlich noch mehr Eigenschaften für das Image festlegen, wenn man das möchte.

                      .hintergrund{
                          background-image: url(http://192.168.1.100:8082/vis.0/main/img/bild_des_tages/bild.jpg);
                      }
                      

                      Dann in den View-Eigenschaften noch die CSS-Klasse eintragen, fertig.
                      f3bb7ad8-1d88-49ea-ac22-1aeadb55ecdb-image.png und die View sieht dann wie folgt aus, hier mal meine Seitenvorlage:

                      5fed9398-d12e-4312-9663-a98beff0ca70-image.png

                      TG70T Offline
                      TG70T Offline
                      TG70
                      Forum Testing
                      wrote on last edited by
                      #16

                      Hallo,
                      geht die Änderung des Hintergrundes auch wenn ich nur einen Farbcode verwenden möchte.
                      Mein Vorhaben: Alle Views gleichzeitig ändern zu können?

                      ∘ MB ASRock J4105M Intel J4105 CPU M-ATX | 16 GB RAM | 480 GB SSD ∘ PROXMOX LCX-Container > IoBroker

                      opossumO 1 Reply Last reply
                      0
                      • TG70T TG70

                        Hallo,
                        geht die Änderung des Hintergrundes auch wenn ich nur einen Farbcode verwenden möchte.
                        Mein Vorhaben: Alle Views gleichzeitig ändern zu können?

                        opossumO Offline
                        opossumO Offline
                        opossum
                        wrote on last edited by
                        #17

                        Hallo, @tg70,

                        das habe ich nicht probiert, müsste man das Hintergrund CSS vielleicht anpassen?

                        https://schlepper-petersdorf.jimdofree.com/

                        TG70T 1 Reply Last reply
                        0
                        • opossumO opossum

                          Hallo, @tg70,

                          das habe ich nicht probiert, müsste man das Hintergrund CSS vielleicht anpassen?

                          TG70T Offline
                          TG70T Offline
                          TG70
                          Forum Testing
                          wrote on last edited by
                          #18

                          @opossum ... Ok schade, denn genau sowas suche ich gerade

                          ∘ MB ASRock J4105M Intel J4105 CPU M-ATX | 16 GB RAM | 480 GB SSD ∘ PROXMOX LCX-Container > IoBroker

                          1 Reply Last reply
                          0
                          • Basti97B Offline
                            Basti97B Offline
                            Basti97
                            Most Active
                            wrote on last edited by
                            #19

                            Ich bin gerade auf dein Post gestoßen. Funktoniert dein Script noch? Ich wollte für meine vis auch ein veränderbares Hindergrund Bild einfügen.

                            Iobroker läuft als VM auf Proxmoxserver x folgende Hersteller im Einsatz Sonoff, Gosund, Siemens x Aofo über Tasmota x Zigbee x das Smarthome wächst und wächst

                            opossumO 1 Reply Last reply
                            0
                            • Basti97B Basti97

                              Ich bin gerade auf dein Post gestoßen. Funktoniert dein Script noch? Ich wollte für meine vis auch ein veränderbares Hindergrund Bild einfügen.

                              opossumO Offline
                              opossumO Offline
                              opossum
                              wrote on last edited by opossum
                              #20

                              Hallo, @basti97,

                              ja, das funktioniert noch. Habe gerade geschaut, wurde um gestern um 02:30 Uhr heruntergeladen und kopiert.

                              https://schlepper-petersdorf.jimdofree.com/

                              Basti97B 1 Reply Last reply
                              0
                              • opossumO opossum

                                Hallo, @basti97,

                                ja, das funktioniert noch. Habe gerade geschaut, wurde um gestern um 02:30 Uhr heruntergeladen und kopiert.

                                Basti97B Offline
                                Basti97B Offline
                                Basti97
                                Most Active
                                wrote on last edited by
                                #21

                                @opossum Super Danke also brauche ich nur das Script einfügen und dann habe ich das Bild. Ich probiere es mal aus.

                                Iobroker läuft als VM auf Proxmoxserver x folgende Hersteller im Einsatz Sonoff, Gosund, Siemens x Aofo über Tasmota x Zigbee x das Smarthome wächst und wächst

                                1 Reply Last reply
                                0
                                • opossumO opossum

                                  Hallo,
                                  wir (@Glasfaser und ich) haben es nun hinbekommen. Mittels Script hole ich mir jeden Tag den Link zum Bild. Dann mache ich einen Download, wobei der Dateiname fest vergeben ist. Das Script erneuert die Datei also einmal in 24 Stunden. Auf den Views habe ich den Hintergrund auf diese Datei eingetragen.
                                  Man muss in den Einstellungen des Javascript-Adapters folgendes Modul hinzufügen:
                                  request

                                  Hier das Script:

                                  schedule('10 0 * * *' , function()
                                  {
                                  const id_uri = 'javascript.0.Bild';
                                  var uri = getState(id_uri).val; 
                                  var fs = require('fs');
                                  var request = require('request');
                                  
                                  createState('javascript.0.Bild', "");
                                  createState('javascript.0.Title', "");
                                  BilddesTages();
                                  function BilddesTages(){
                                          var url = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=de-DE';
                                          request(url, function (err, state, body){
                                              if (body) {
                                                  body = JSON.parse(body);
                                                  var bild = "https://bing.com/" + body.images[0].url;
                                                  var title = body.images[0].title;
                                                  setState("javascript.0.Bild", bild);
                                                  setState("javascript.0.Title", title);
                                              } else {
                                              }
                                          });
                                  }
                                  exec('rm -f /media/backup/bild.jpg');
                                  setTimeout(function(){
                                  var download = function(uri, filename, callback){
                                    request.head(uri, function(err, res, body){
                                      console.log('content-type:', res.headers['content-type']);
                                      console.log('content-length:', res.headers['content-length']);
                                      request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
                                    });
                                  };
                                  download(uri, '/media/backup/bild.jpg', function(){
                                    console.log('Bild heruntergeladen');
                                   
                                  setTimeout(function(){
                                  const bild1 = fs.readFileSync('/media/backup/bild.jpg');
                                  writeFile('vis.0','/main/img/bild_des_tages/bild.jpg', bild1);
                                  console.log('Bild kopiert')
                                  }, 30000);           
                                  });
                                  }, 30000);
                                  });
                                  
                                  

                                  Ich habe dabei den Pfad /media/backup als Downloadpfad genommen, vor dem Download wird die vorhandene Datei gelöscht. Das Script kopiert dann die Datei von /media/backup/ nach /opt/iobroker/iobroker-data/files/vis.0/main/img/bild_des_tages/. Der Link auf die Datei in der View sieht wie folgt aus:

                                  url(http://192.168.1.100:8082/vis.0/main/img/bild_des_tages/bild.jpg)
                                  

                                  04cd2131-2754-41fc-8a49-1b98f8c1f684-image.png
                                  … und die View sieht dann wie folgt aus:
                                  82665c25-21ee-4283-89dd-4e596a129a82-image.png

                                  Basti97B Offline
                                  Basti97B Offline
                                  Basti97
                                  Most Active
                                  wrote on last edited by
                                  #22

                                  @opossum said in [gelöst] Dynamische URL aus Datenpunkt als View-Hintergrund:

                                  Hallo,
                                  wir (@Glasfaser und ich) haben es nun hinbekommen. Mittels Script hole ich mir jeden Tag den Link zum Bild. Dann mache ich einen Download, wobei der Dateiname fest vergeben ist. Das Script erneuert die Datei also einmal in 24 Stunden. Auf den Views habe ich den Hintergrund auf diese Datei eingetragen.
                                  Man muss in den Einstellungen des Javascript-Adapters folgendes Modul hinzufügen:
                                  request

                                  Hier das Script:

                                  schedule('10 0 * * *' , function()
                                  {
                                  const id_uri = 'javascript.0.Bild';
                                  var uri = getState(id_uri).val; 
                                  var fs = require('fs');
                                  var request = require('request');
                                  
                                  createState('javascript.0.Bild', "");
                                  createState('javascript.0.Title', "");
                                  BilddesTages();
                                  function BilddesTages(){
                                          var url = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=de-DE';
                                          request(url, function (err, state, body){
                                              if (body) {
                                                  body = JSON.parse(body);
                                                  var bild = "https://bing.com/" + body.images[0].url;
                                                  var title = body.images[0].title;
                                                  setState("javascript.0.Bild", bild);
                                                  setState("javascript.0.Title", title);
                                              } else {
                                              }
                                          });
                                  }
                                  exec('rm -f /media/backup/bild.jpg');
                                  setTimeout(function(){
                                  var download = function(uri, filename, callback){
                                    request.head(uri, function(err, res, body){
                                      console.log('content-type:', res.headers['content-type']);
                                      console.log('content-length:', res.headers['content-length']);
                                      request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
                                    });
                                  };
                                  download(uri, '/media/backup/bild.jpg', function(){
                                    console.log('Bild heruntergeladen');
                                   
                                  setTimeout(function(){
                                  const bild1 = fs.readFileSync('/media/backup/bild.jpg');
                                  writeFile('vis.0','/main/img/bild_des_tages/bild.jpg', bild1);
                                  console.log('Bild kopiert')
                                  }, 30000);           
                                  });
                                  }, 30000);
                                  });
                                  
                                  

                                  Ich habe dabei den Pfad /media/backup als Downloadpfad genommen, vor dem Download wird die vorhandene Datei gelöscht. Das Script kopiert dann die Datei von /media/backup/ nach /opt/iobroker/iobroker-data/files/vis.0/main/img/bild_des_tages/. Der Link auf die Datei in der View sieht wie folgt aus:

                                  url(http://192.168.1.100:8082/vis.0/main/img/bild_des_tages/bild.jpg)
                                  

                                  04cd2131-2754-41fc-8a49-1b98f8c1f684-image.png
                                  … und die View sieht dann wie folgt aus:
                                  82665c25-21ee-4283-89dd-4e596a129a82-image.png

                                  Ist es das aktuelle???

                                  Iobroker läuft als VM auf Proxmoxserver x folgende Hersteller im Einsatz Sonoff, Gosund, Siemens x Aofo über Tasmota x Zigbee x das Smarthome wächst und wächst

                                  opossumO 1 Reply Last reply
                                  0
                                  • Basti97B Basti97

                                    @opossum said in [gelöst] Dynamische URL aus Datenpunkt als View-Hintergrund:

                                    Hallo,
                                    wir (@Glasfaser und ich) haben es nun hinbekommen. Mittels Script hole ich mir jeden Tag den Link zum Bild. Dann mache ich einen Download, wobei der Dateiname fest vergeben ist. Das Script erneuert die Datei also einmal in 24 Stunden. Auf den Views habe ich den Hintergrund auf diese Datei eingetragen.
                                    Man muss in den Einstellungen des Javascript-Adapters folgendes Modul hinzufügen:
                                    request

                                    Hier das Script:

                                    schedule('10 0 * * *' , function()
                                    {
                                    const id_uri = 'javascript.0.Bild';
                                    var uri = getState(id_uri).val; 
                                    var fs = require('fs');
                                    var request = require('request');
                                    
                                    createState('javascript.0.Bild', "");
                                    createState('javascript.0.Title', "");
                                    BilddesTages();
                                    function BilddesTages(){
                                            var url = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=de-DE';
                                            request(url, function (err, state, body){
                                                if (body) {
                                                    body = JSON.parse(body);
                                                    var bild = "https://bing.com/" + body.images[0].url;
                                                    var title = body.images[0].title;
                                                    setState("javascript.0.Bild", bild);
                                                    setState("javascript.0.Title", title);
                                                } else {
                                                }
                                            });
                                    }
                                    exec('rm -f /media/backup/bild.jpg');
                                    setTimeout(function(){
                                    var download = function(uri, filename, callback){
                                      request.head(uri, function(err, res, body){
                                        console.log('content-type:', res.headers['content-type']);
                                        console.log('content-length:', res.headers['content-length']);
                                        request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
                                      });
                                    };
                                    download(uri, '/media/backup/bild.jpg', function(){
                                      console.log('Bild heruntergeladen');
                                     
                                    setTimeout(function(){
                                    const bild1 = fs.readFileSync('/media/backup/bild.jpg');
                                    writeFile('vis.0','/main/img/bild_des_tages/bild.jpg', bild1);
                                    console.log('Bild kopiert')
                                    }, 30000);           
                                    });
                                    }, 30000);
                                    });
                                    
                                    

                                    Ich habe dabei den Pfad /media/backup als Downloadpfad genommen, vor dem Download wird die vorhandene Datei gelöscht. Das Script kopiert dann die Datei von /media/backup/ nach /opt/iobroker/iobroker-data/files/vis.0/main/img/bild_des_tages/. Der Link auf die Datei in der View sieht wie folgt aus:

                                    url(http://192.168.1.100:8082/vis.0/main/img/bild_des_tages/bild.jpg)
                                    

                                    04cd2131-2754-41fc-8a49-1b98f8c1f684-image.png
                                    … und die View sieht dann wie folgt aus:
                                    82665c25-21ee-4283-89dd-4e596a129a82-image.png

                                    Ist es das aktuelle???

                                    opossumO Offline
                                    opossumO Offline
                                    opossum
                                    wrote on last edited by opossum
                                    #23

                                    Hallo, @basti97 ,
                                    stelle das aktuelle Script zur Sicherheit hier noch mal ein, um 02:30 Uhr wird das Bild täglich heruntergeladen.

                                    schedule('30 2 * * *' , function()
                                    {
                                    var fs = require('fs');
                                    //Neue URL holen
                                    const id_uri = '0_userdata.0.Bild';
                                    var uri = getState(id_uri).val; 
                                    //Löschen Bild vom Vortag
                                    exec('rm -f /media/bild.jpg');
                                    //Neues Bild Download
                                    setTimeout(function(){
                                    var download = function(uri, filename, callback){
                                      request(uri, function(err, res, body){
                                        console.log('content-type:', res.headers['content-type']);
                                        console.log('content-length:', res.headers['content-length']);
                                        request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
                                      });
                                    };
                                    download(uri, '/media/bild.jpg', function(err){
                                        if(err) {
                                            console.log('Fehler beim Herunterladen des Bildes');
                                        } else {
                                            console.log('Bild heruntergeladen');
                                        }
                                    // Bild kopieren in VIS Verzeichnis für Anzeige im Webübersichtsbild      
                                    setTimeout(function(){
                                    const bild1 = fs.readFileSync('/media/bild.jpg');
                                    delFile('vis.0', '/main/img/bild_des_tages/bild.jpg', function (err) {}); 
                                    writeFile('vis.0','/main/img/bild_des_tages/bild.jpg', bild1);
                                    console.log('Bild kopiert')
                                    }, 30000);           
                                    });
                                    }, 30000);
                                    });
                                    

                                    Habe die Datenpunkte mittlerweile in den Userdata-Bereich umgezogen.

                                    Habe jetzt noch ein zusätzliches Script, das mir die Bildurl täglich 02.15 Uhr in meine Datenpunkte schreibt.

                                    schedule('15 2 * * *' , function()
                                    {
                                    createState('0_userdata.0.Bild_des_Tages.Bild', "");
                                    createState('0_userdata.0.Bild_des_Tages.Title', "");
                                    BilddesTages();
                                    function BilddesTages(){
                                            var url = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=de-DE';
                                            request(url, function (err, state, body){
                                                if (body) {
                                                    body = JSON.parse(body);
                                                    var bild = "https://bing.com/" + body.images[0].url;
                                                    var title = body.images[0].title;
                                                    setState("0_userdata.0.Bild_des_Tages.Bild", bild);
                                                    setState("0_userdata.0.Bild_des_Tages.Title", title);
                                                } else {
                                                }
                                            });
                                    }
                                    });
                                    

                                    Liegt daran, dass ich auf meiner VIS einen Copyrighthinweis eingebaut habe. Man weiß ja nie.

                                    https://schlepper-petersdorf.jimdofree.com/

                                    Basti97B 2 Replies Last reply
                                    0
                                    • opossumO opossum

                                      Hallo, @basti97 ,
                                      stelle das aktuelle Script zur Sicherheit hier noch mal ein, um 02:30 Uhr wird das Bild täglich heruntergeladen.

                                      schedule('30 2 * * *' , function()
                                      {
                                      var fs = require('fs');
                                      //Neue URL holen
                                      const id_uri = '0_userdata.0.Bild';
                                      var uri = getState(id_uri).val; 
                                      //Löschen Bild vom Vortag
                                      exec('rm -f /media/bild.jpg');
                                      //Neues Bild Download
                                      setTimeout(function(){
                                      var download = function(uri, filename, callback){
                                        request(uri, function(err, res, body){
                                          console.log('content-type:', res.headers['content-type']);
                                          console.log('content-length:', res.headers['content-length']);
                                          request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
                                        });
                                      };
                                      download(uri, '/media/bild.jpg', function(err){
                                          if(err) {
                                              console.log('Fehler beim Herunterladen des Bildes');
                                          } else {
                                              console.log('Bild heruntergeladen');
                                          }
                                      // Bild kopieren in VIS Verzeichnis für Anzeige im Webübersichtsbild      
                                      setTimeout(function(){
                                      const bild1 = fs.readFileSync('/media/bild.jpg');
                                      delFile('vis.0', '/main/img/bild_des_tages/bild.jpg', function (err) {}); 
                                      writeFile('vis.0','/main/img/bild_des_tages/bild.jpg', bild1);
                                      console.log('Bild kopiert')
                                      }, 30000);           
                                      });
                                      }, 30000);
                                      });
                                      

                                      Habe die Datenpunkte mittlerweile in den Userdata-Bereich umgezogen.

                                      Habe jetzt noch ein zusätzliches Script, das mir die Bildurl täglich 02.15 Uhr in meine Datenpunkte schreibt.

                                      schedule('15 2 * * *' , function()
                                      {
                                      createState('0_userdata.0.Bild_des_Tages.Bild', "");
                                      createState('0_userdata.0.Bild_des_Tages.Title', "");
                                      BilddesTages();
                                      function BilddesTages(){
                                              var url = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=de-DE';
                                              request(url, function (err, state, body){
                                                  if (body) {
                                                      body = JSON.parse(body);
                                                      var bild = "https://bing.com/" + body.images[0].url;
                                                      var title = body.images[0].title;
                                                      setState("0_userdata.0.Bild_des_Tages.Bild", bild);
                                                      setState("0_userdata.0.Bild_des_Tages.Title", title);
                                                  } else {
                                                  }
                                              });
                                      }
                                      });
                                      

                                      Liegt daran, dass ich auf meiner VIS einen Copyrighthinweis eingebaut habe. Man weiß ja nie.

                                      Basti97B Offline
                                      Basti97B Offline
                                      Basti97
                                      Most Active
                                      wrote on last edited by
                                      #24

                                      @opossum Super Danke und die beiden Scripte muss ich dann einfach einfügen. Wird eigentlich ein Datenpunk benötigt?

                                      Iobroker läuft als VM auf Proxmoxserver x folgende Hersteller im Einsatz Sonoff, Gosund, Siemens x Aofo über Tasmota x Zigbee x das Smarthome wächst und wächst

                                      opossumO 1 Reply Last reply
                                      0
                                      • Basti97B Basti97

                                        @opossum Super Danke und die beiden Scripte muss ich dann einfach einfügen. Wird eigentlich ein Datenpunk benötigt?

                                        opossumO Offline
                                        opossumO Offline
                                        opossum
                                        wrote on last edited by
                                        #25

                                        Hallo, @basti97,

                                        ja, ich habe die beiden Datenpunkte 0_userdata.0.Bild_des_Tages.Bild und 0_userdata.0.Bild_des_Tages.Title angelegt.

                                        https://schlepper-petersdorf.jimdofree.com/

                                        Basti97B 1 Reply Last reply
                                        0
                                        • opossumO opossum

                                          Hallo, @basti97,

                                          ja, ich habe die beiden Datenpunkte 0_userdata.0.Bild_des_Tages.Bild und 0_userdata.0.Bild_des_Tages.Title angelegt.

                                          Basti97B Offline
                                          Basti97B Offline
                                          Basti97
                                          Most Active
                                          wrote on last edited by
                                          #26

                                          @opossum Also muss ich sie per Hand in den Ordner erstellen oder geht das automatisch??

                                          Iobroker läuft als VM auf Proxmoxserver x folgende Hersteller im Einsatz Sonoff, Gosund, Siemens x Aofo über Tasmota x Zigbee x das Smarthome wächst und wächst

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          623

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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