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. Skripten / Logik
  4. Gelöst: Schedule einer Funktion

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    225

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.5k

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

Gelöst: Schedule einer Funktion

Scheduled Pinned Locked Moved Skripten / Logik
3 Posts 2 Posters 346 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    Butschek
    wrote on last edited by Butschek
    #1

    Hallo zusammen,

    ich versuche alle 15 Minuten mir den neuen RSS Feed der Tagesschau zu laden. Manuell klappt dies, aber nicht zeit gesteuert. Kann mir hier jemand einen Tip geben, was ich falsch mache. Folgend mein Code in Javascript. Es tauchen auch keine Meldungen im Protokoll auf.

    VG Holger

    
    schedule('*/15 * * * *', function () {getTagesschauRssFeed();})
    
    const fetch = require("node-fetch");
    const { parseString } = require("xml2js");
    
    async function getTagesschauRssFeed() {
      const response = await fetch("https://www.tagesschau.de/xml/rss2");
      const xmlText = await response.text();
      return xmlText;
    }
    
    
    
    
    getTagesschauRssFeed()
      .then((xmlText) => {
        parseString(xmlText, (err, result) => {
          if (err) {
            console.error(err);
            return;
          }
          const items = result.rss.channel[0].item;
          // Create datapoints
          var datapoint_Timestamp = '0_userdata.0.RSS.general.timestamp';
          createState(datapoint_Timestamp);
          
          // Set datapoints
          //const currDate = require("javascript.0.scriptEnabled.common.Date-Functions.currDate");
          setState(datapoint_Timestamp, currLocalDate());    /*scriptEnabled common Date-Functions currDate*/
            console.log (currLocalDate());
    
          for (let i = 0; i < 10; i++) {
            const content = items[i]["content:encoded"][0];
            var content_Enc;
            const imgRegex = /<img.*?src="(.*?)"/;
            const imgMatch = content.match(imgRegex);
            const counter = i +1;
    
            var RSSItemLink = items[i].link[0];
            var RSSItemTitle = items[i].title[0];
            var RSSItemImage = imgMatch[1] ;
            var RSSItemDescription = items[i].description[0];
    
            // Create datapoints;
            var datapoint_Title = '0_userdata.0.RSS.' + counter + '.Title';
            var datapoint_Image = '0_userdata.0.RSS.' + counter + '.Image';
            var datapoint_Description = '0_userdata.0.RSS.' + counter + '.Description';
            var datapoint_ContentEnc = '0_userdata.0.RSS.' + counter + '.ContentEnc';
            
    
            // Set datapoints; 
            //console.log(`Item ${counter} title: ${items[i].title[0]}`);
            createState(datapoint_Title);
            setState(datapoint_Title, RSSItemTitle);
    
            //console.log(`Item ${i + 1} image URL: ${imgMatch ? imgMatch[1] : "None"}`);
            createState(datapoint_Image);
            setState(datapoint_Image, RSSItemImage);
            
            //console.log(`Item ${i + 1} description: ${RSSItemDescription}`);
            createState(datapoint_Description);
            setState(datapoint_Description, RSSItemDescription);
    
            //console.log(`Item ${i + 1} description: ${content}`);
            createState(datapoint_ContentEnc);
            content_Enc = "<p><a target='_blank' href='"  + RSSItemLink + "'>" + RSSItemTitle + "</a><br>" + RSSItemDescription + "</p>";
            setState(datapoint_ContentEnc, content_Enc);
          }
        });
      })
      .catch((err) => console.error(err));
    
    
    liv-in-skyL 1 Reply Last reply
    0
    • B Butschek

      Hallo zusammen,

      ich versuche alle 15 Minuten mir den neuen RSS Feed der Tagesschau zu laden. Manuell klappt dies, aber nicht zeit gesteuert. Kann mir hier jemand einen Tip geben, was ich falsch mache. Folgend mein Code in Javascript. Es tauchen auch keine Meldungen im Protokoll auf.

      VG Holger

      
      schedule('*/15 * * * *', function () {getTagesschauRssFeed();})
      
      const fetch = require("node-fetch");
      const { parseString } = require("xml2js");
      
      async function getTagesschauRssFeed() {
        const response = await fetch("https://www.tagesschau.de/xml/rss2");
        const xmlText = await response.text();
        return xmlText;
      }
      
      
      
      
      getTagesschauRssFeed()
        .then((xmlText) => {
          parseString(xmlText, (err, result) => {
            if (err) {
              console.error(err);
              return;
            }
            const items = result.rss.channel[0].item;
            // Create datapoints
            var datapoint_Timestamp = '0_userdata.0.RSS.general.timestamp';
            createState(datapoint_Timestamp);
            
            // Set datapoints
            //const currDate = require("javascript.0.scriptEnabled.common.Date-Functions.currDate");
            setState(datapoint_Timestamp, currLocalDate());    /*scriptEnabled common Date-Functions currDate*/
              console.log (currLocalDate());
      
            for (let i = 0; i < 10; i++) {
              const content = items[i]["content:encoded"][0];
              var content_Enc;
              const imgRegex = /<img.*?src="(.*?)"/;
              const imgMatch = content.match(imgRegex);
              const counter = i +1;
      
              var RSSItemLink = items[i].link[0];
              var RSSItemTitle = items[i].title[0];
              var RSSItemImage = imgMatch[1] ;
              var RSSItemDescription = items[i].description[0];
      
              // Create datapoints;
              var datapoint_Title = '0_userdata.0.RSS.' + counter + '.Title';
              var datapoint_Image = '0_userdata.0.RSS.' + counter + '.Image';
              var datapoint_Description = '0_userdata.0.RSS.' + counter + '.Description';
              var datapoint_ContentEnc = '0_userdata.0.RSS.' + counter + '.ContentEnc';
              
      
              // Set datapoints; 
              //console.log(`Item ${counter} title: ${items[i].title[0]}`);
              createState(datapoint_Title);
              setState(datapoint_Title, RSSItemTitle);
      
              //console.log(`Item ${i + 1} image URL: ${imgMatch ? imgMatch[1] : "None"}`);
              createState(datapoint_Image);
              setState(datapoint_Image, RSSItemImage);
              
              //console.log(`Item ${i + 1} description: ${RSSItemDescription}`);
              createState(datapoint_Description);
              setState(datapoint_Description, RSSItemDescription);
      
              //console.log(`Item ${i + 1} description: ${content}`);
              createState(datapoint_ContentEnc);
              content_Enc = "<p><a target='_blank' href='"  + RSSItemLink + "'>" + RSSItemTitle + "</a><br>" + RSSItemDescription + "</p>";
              setState(datapoint_ContentEnc, content_Enc);
            }
          });
        })
        .catch((err) => console.error(err));
      
      
      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      wrote on last edited by
      #2

      @butschek

      probier mal (axios muss in den javascript settings angegeben worden sein:

      
      const axios=require('axios');
      const { parseString } = require("xml2js");
      //const { parseString } = require("xml2json");
      for (let i = 0; i < 10; i++) {
         let counter = i +1;
             let datapoint_Title = '0_userdata.0.RSS.' + counter + '.Title';
             let datapoint_Image = '0_userdata.0.RSS.' + counter + '.Image';
             let datapoint_Description = '0_userdata.0.RSS.' + counter + '.Description';
             let datapoint_ContentEnc = '0_userdata.0.RSS.' + counter + '.ContentEnc';
          makedp(datapoint_Image)
          makedp(datapoint_Description)
          makedp(datapoint_ContentEnc)
          makedp(datapoint_Title)
         
      }
      var datapoint_Timestamp = '0_userdata.0.RSS.general.timestamp';
      makedp(datapoint_Timestamp)
      
      schedule('*/15 * * * *', async function () { getTagesschauRssFeed()})
      
      
      
      
      async function getTagesschauRssFeed() {
       axios.get('https://www.tagesschau.de/xml/rss2', {
                         headers: { 'User-Agent':`Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36` }
      }).then( async function(response) { //fetch("https://www.tagesschau.de/xml/rss2");
       const xmlText =  response.data; //log(response.data)
      
       
      
      
      
      parseString(xmlText, {explicitArray: true,  mergeAttrs: true, normalize: true, compact: true, spaces: 2 }, (err, result) => { //log(result)
           if (err) {
             console.error(err);
             return;} 
       //log(result.rss.channel[0])
      
           const items = result.rss.channel[0].item;
           
           // Create datapoints
        
           
           // Set datapoints
           //const currDate = require("javascript.0.scriptEnabled.common.Date-Functions.currDate");
           setState(datapoint_Timestamp,formatDate(getDateObject((new Date().getTime())), "JJJJ.MM.TT SS:mm:ss.sss"));    /*scriptEnabled common Date-Functions currDate*/
             //console.log (currLocalDate());
      
           for (let i = 0; i < 10; i++) {
             const content = items[i]["content:encoded"][0];
             var content_Enc;
             const imgRegex = /<img.*?src="(.*?)"/;
             const imgMatch = content.match(imgRegex);
             const counter = i +1;
      
             var RSSItemLink = items[i].link[0];
             var RSSItemTitle = items[i].title[0];
             var RSSItemImage = imgMatch[1] ;
             var RSSItemDescription = items[i].description[0];
      
             // Create datapoints;
             var datapoint_Title = '0_userdata.0.RSS.' + counter + '.Title';
             var datapoint_Image = '0_userdata.0.RSS.' + counter + '.Image';
             var datapoint_Description = '0_userdata.0.RSS.' + counter + '.Description';
             var datapoint_ContentEnc = '0_userdata.0.RSS.' + counter + '.ContentEnc';
             
      
             // Set datapoints; 
             //console.log(`Item ${counter} title: ${items[i].title[0]}`);
             setState(datapoint_Title, RSSItemTitle);
         
      
             //console.log(`Item ${i + 1} image URL: ${imgMatch ? imgMatch[1] : "None"}`);
            
             setState(datapoint_Image, RSSItemImage);
             
             //console.log(`Item ${i + 1} description: ${RSSItemDescription}`);
            
            setState(datapoint_Description, RSSItemDescription);
      
             //console.log(`Item ${i + 1} description: ${content}`);
           //  createState(datapoint_ContentEnc);
             content_Enc = "<p><a target='_blank' href='"  + RSSItemLink + "'>" + RSSItemTitle + "</a><br>" + RSSItemDescription + "</p>";
            setState(datapoint_ContentEnc, content_Enc);
         
           
       } //schleife
         }); //parsing
      
      })
      
      } // async func
       
      
      
      async function makedp(point){
          if (!await existsStateAsync(point)) {
             await createStateAsync(point, "",{type: "string", role: "value", read: true, write: true, } ); } 
      
      }
      
      

      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

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

        @butschek

        probier mal (axios muss in den javascript settings angegeben worden sein:

        
        const axios=require('axios');
        const { parseString } = require("xml2js");
        //const { parseString } = require("xml2json");
        for (let i = 0; i < 10; i++) {
           let counter = i +1;
               let datapoint_Title = '0_userdata.0.RSS.' + counter + '.Title';
               let datapoint_Image = '0_userdata.0.RSS.' + counter + '.Image';
               let datapoint_Description = '0_userdata.0.RSS.' + counter + '.Description';
               let datapoint_ContentEnc = '0_userdata.0.RSS.' + counter + '.ContentEnc';
            makedp(datapoint_Image)
            makedp(datapoint_Description)
            makedp(datapoint_ContentEnc)
            makedp(datapoint_Title)
           
        }
        var datapoint_Timestamp = '0_userdata.0.RSS.general.timestamp';
        makedp(datapoint_Timestamp)
        
        schedule('*/15 * * * *', async function () { getTagesschauRssFeed()})
        
        
        
        
        async function getTagesschauRssFeed() {
         axios.get('https://www.tagesschau.de/xml/rss2', {
                           headers: { 'User-Agent':`Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36` }
        }).then( async function(response) { //fetch("https://www.tagesschau.de/xml/rss2");
         const xmlText =  response.data; //log(response.data)
        
         
        
        
        
        parseString(xmlText, {explicitArray: true,  mergeAttrs: true, normalize: true, compact: true, spaces: 2 }, (err, result) => { //log(result)
             if (err) {
               console.error(err);
               return;} 
         //log(result.rss.channel[0])
        
             const items = result.rss.channel[0].item;
             
             // Create datapoints
          
             
             // Set datapoints
             //const currDate = require("javascript.0.scriptEnabled.common.Date-Functions.currDate");
             setState(datapoint_Timestamp,formatDate(getDateObject((new Date().getTime())), "JJJJ.MM.TT SS:mm:ss.sss"));    /*scriptEnabled common Date-Functions currDate*/
               //console.log (currLocalDate());
        
             for (let i = 0; i < 10; i++) {
               const content = items[i]["content:encoded"][0];
               var content_Enc;
               const imgRegex = /<img.*?src="(.*?)"/;
               const imgMatch = content.match(imgRegex);
               const counter = i +1;
        
               var RSSItemLink = items[i].link[0];
               var RSSItemTitle = items[i].title[0];
               var RSSItemImage = imgMatch[1] ;
               var RSSItemDescription = items[i].description[0];
        
               // Create datapoints;
               var datapoint_Title = '0_userdata.0.RSS.' + counter + '.Title';
               var datapoint_Image = '0_userdata.0.RSS.' + counter + '.Image';
               var datapoint_Description = '0_userdata.0.RSS.' + counter + '.Description';
               var datapoint_ContentEnc = '0_userdata.0.RSS.' + counter + '.ContentEnc';
               
        
               // Set datapoints; 
               //console.log(`Item ${counter} title: ${items[i].title[0]}`);
               setState(datapoint_Title, RSSItemTitle);
           
        
               //console.log(`Item ${i + 1} image URL: ${imgMatch ? imgMatch[1] : "None"}`);
              
               setState(datapoint_Image, RSSItemImage);
               
               //console.log(`Item ${i + 1} description: ${RSSItemDescription}`);
              
              setState(datapoint_Description, RSSItemDescription);
        
               //console.log(`Item ${i + 1} description: ${content}`);
             //  createState(datapoint_ContentEnc);
               content_Enc = "<p><a target='_blank' href='"  + RSSItemLink + "'>" + RSSItemTitle + "</a><br>" + RSSItemDescription + "</p>";
              setState(datapoint_ContentEnc, content_Enc);
           
             
         } //schleife
           }); //parsing
        
        })
        
        } // async func
         
        
        
        async function makedp(point){
            if (!await existsStateAsync(point)) {
               await createStateAsync(point, "",{type: "string", role: "value", read: true, write: true, } ); } 
        
        }
        
        

        B Offline
        B Offline
        Butschek
        wrote on last edited by
        #3

        Die Klammersetzung ist natürlich falsch.
        Habe nun des gesamte Slript quasi in die Schedule Funktion aufgenommen. Dann klappt es auch problemlos.

        VG
        Holger

        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

        336

        Online

        32.7k

        Users

        82.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