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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Gelöst: Schedule einer Funktion

NEWS

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

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

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

Gelöst: Schedule einer Funktion

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 324 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B Offline
    B Offline
    Butschek
    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        882

        Online

        32.4k

        Benutzer

        81.5k

        Themen

        1.3m

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

        • Du hast noch kein Konto? Registrieren

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