Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Hilfe bei RSS-feed benötigt !

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Hilfe bei RSS-feed benötigt !

    This topic has been deleted. Only users with topic management privileges can see it.
    • J.A.R.V.I.S.
      J.A.R.V.I.S. Developer @sigi234 last edited by

      @sigi234 das anlegen?

      Einfach mit createState();

      sigi234 1 Reply Last reply Reply Quote 0
      • sigi234
        sigi234 Forum Testing Most Active @J.A.R.V.I.S. last edited by

        @J-A-R-V-I-S sagte in Hilfe bei RSS-feed benötigt !:

        @sigi234 das anlegen?

        Einfach mit createState();

        javascript.0	2020-01-28 20:37:34.503	warn	(12144) State "neuerAlarm" not found
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at process._tickCallback (internal/process/next_tick.js:63:19)
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at endReadableNT (_stream_readable.js:1145:12)
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at IncomingMessage.emit (events.js:203:15)
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at Object.onceWrapper (events.js:286:20)
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at IncomingMessage.<anonymous> (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\node_modules\request\request.js:1083:12)
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at Request.emit (events.js:198:13)
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at Request.<anonymous> (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\node_modules\request\request.js:1161:10)
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at Request.emit (events.js:198:13)
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at Request.self.callback (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\node_modules\request\request.js:185:22)
        javascript.0	2020-01-28 20:37:34.503	warn	(12144) at Request.request [as _callback] (script.js.Eigene_Datenpunkte.RSS.Feuerwehr1:41:33)
        javascript.0	2020-01-28 20:37:34.502	warn	(12144) getState "alarme" not found (3)
        
        J.A.R.V.I.S. 1 Reply Last reply Reply Quote 0
        • J.A.R.V.I.S.
          J.A.R.V.I.S. Developer @sigi234 last edited by

          @sigi234

          createState(neuerAlarm) und createState(alarme)

          sigi234 1 Reply Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @J.A.R.V.I.S. last edited by sigi234

            @J-A-R-V-I-S sagte in Hilfe bei RSS-feed benötigt !:

            @sigi234

            createState(neuerAlarm) und createState(alarme)

            Im Skript ? Wo?
            Ich habe es unter Objekte angelegt, stehe auf den Schlauch.

            Screenshot (1496).png

            Hab es so gemacht:

            const request = require('request');
             
            const fwArray = ['xyz', 'FF Sandl '];
             
            const dpObj = {};
             
            const neuerAlarm = 'neuerAlarm';
            const alarme = 'alarme';
            
            let   DP       = "javascript.0.Feuerwehr2";
            
            //Datenpunkt anlegen
            createState(DP+'.neuerAlarm', '', { name: "Feuerwehreinsatzmeldungen", type: "boolean",    role: "state" });
            createState(DP+'.alarme', '', { name: "neue Meldung",              type: "boolean", role: "state" });
             
            request('http://intranet.ooelfv.at/webext2/rss/json_laufend.txt', (err, res, body) => {
             
                if(err || res.statusCode != 200) {
                    log(body, 'error');
                    return;
                }
             
                const obj = JSON.parse(body);
                const einsaetze = obj.einsaetze;
                const einsatzCount = Object.keys(einsaetze).length;
             
                for(let i = 0; i < einsatzCount; i++) {
             
                    const einsatz = einsaetze[i].einsatz;
                    const feuerwehren = einsatz.feuerwehrenarray;
             
                    const feuerwehrCount = Object.keys(feuerwehren).length;
             
                    for(let j = 0; j < feuerwehrCount; j++) {
             
                        const feuerwehr = feuerwehren[j];
                        
                        for(let k = 0; k < fwArray.length; k++) {
                            if(feuerwehr.fwname == fwArray[k]) {
             
                                dpObj[einsatz.num1] = {id: einsatz.num1, alarmstufe: einsatz.alarmstufe};
                            }
                        }
                    }
                }
             
                const oldState = JSON.parse(getState(alarme).val);
             
                let newAlarm = false;
             
                if(oldState && Object.keys(oldState).length == Object.keys(dpObj).length) {
                    for(let key in dpObj) {
                        if(dpObj[key].id == oldState[key].id) {
                            continue;
                        } else newAlarm = true; 
                    }
                } else newAlarm = true;
             
                setState(neuerAlarm, newAlarm);
                setState(alarme, JSON.stringify(dpObj));
            });
            
            
            1 Reply Last reply Reply Quote 0
            • J.A.R.V.I.S.
              J.A.R.V.I.S. Developer last edited by

              @sigi234 du hast den unter "Eigene_Datenpunkte" angelegt. Dann musst du dies auch in den Variablen hinzufügen.

              sigi234 1 Reply Last reply Reply Quote 0
              • sigi234
                sigi234 Forum Testing Most Active @J.A.R.V.I.S. last edited by sigi234

                @J-A-R-V-I-S sagte in Hilfe bei RSS-feed benötigt !:

                @sigi234 du hast den unter "Eigene_Datenpunkte" angelegt. Dann musst du dies auch in den Variablen hinzufügen.

                Nein hier:

                javascript.0.Feuerwehr2

                @J-A-R-V-I-S sagte in Hilfe bei RSS-feed benötigt !:

                Dann musst du dies auch in den Variablen hinzufügen

                Wo?

                Oh Mann das ist nicht meins.

                J.A.R.V.I.S. 1 Reply Last reply Reply Quote 0
                • J.A.R.V.I.S.
                  J.A.R.V.I.S. Developer @sigi234 last edited by J.A.R.V.I.S.

                  @sigi234 du musst folgende Variablen auf deine Bedürfnisse anpassen:

                  const neuerAlarm = 'neuerAlarm';
                  const alarme = 'alarme';
                  

                  Das sind die beiden Namen der DPs.

                  sigi234 1 Reply Last reply Reply Quote 0
                  • sigi234
                    sigi234 Forum Testing Most Active @J.A.R.V.I.S. last edited by

                    @J-A-R-V-I-S sagte in Hilfe bei RSS-feed benötigt !:

                    @sigi234 du musst folgende Variablen auf deine Bedürfnisse anpassen:

                    const neuerAlarm = 'neuerAlarm';
                    const alarme = 'alarme';
                    

                    Das sind die beiden Namen der DPs.

                    const request = require('request');
                     
                    const fwArray = ['FF xy', 'FF Lasberg '];
                     
                    const dpObj = {};
                     
                    const neuerAlarm = 'javascript.0.Feuerwehr2.neuerAlarm';
                    const alarme = 'javascript.0.Feuerwehr2.alarme';
                    
                    let   DP       = "javascript.0.Feuerwehr2";
                    
                    //Datenpunkt anlegen
                    createState(DP+'.neuerAlarm', '', { name: "Feuerwehreinsatzmeldungen", type: "boolean",    role: "state" });
                    createState(DP+'.alarme', '', { name: "neue Meldung",              type: "boolean", role: "state" });
                     
                    request('http://intranet.ooelfv.at/webext2/rss/json_laufend.txt', (err, res, body) => {
                     
                        if(err || res.statusCode != 200) {
                            log(body, 'error');
                            return;
                        }
                     
                        const obj = JSON.parse(body);
                        const einsaetze = obj.einsaetze;
                        const einsatzCount = Object.keys(einsaetze).length;
                     
                        for(let i = 0; i < einsatzCount; i++) {
                     
                            const einsatz = einsaetze[i].einsatz;
                            const feuerwehren = einsatz.feuerwehrenarray;
                     
                            const feuerwehrCount = Object.keys(feuerwehren).length;
                     
                            for(let j = 0; j < feuerwehrCount; j++) {
                     
                                const feuerwehr = feuerwehren[j];
                                
                                for(let k = 0; k < fwArray.length; k++) {
                                    if(feuerwehr.fwname == fwArray[k]) {
                     
                                        dpObj[einsatz.num1] = {id: einsatz.num1, alarmstufe: einsatz.alarmstufe};
                                    }
                                }
                            }
                        }
                     
                        const oldState = JSON.parse(getState(alarme).val);
                     
                        let newAlarm = false;
                     
                        if(oldState && Object.keys(oldState).length == Object.keys(dpObj).length) {
                            for(let key in dpObj) {
                                if(dpObj[key].id == oldState[key].id) {
                                    continue;
                                } else newAlarm = true; 
                            }
                        } else newAlarm = true;
                     
                            setState(neuerAlarm, newAlarm);
                        setState(alarme, JSON.stringify(dpObj));
                    });
                    
                    21:32:03.675	info	javascript.0 (14352) Stop script script.js.Eigene_Datenpunkte.RSS.Feuerwehr1
                    21:32:03.678	info	javascript.0 (14352) Start javascript script.js.Eigene_Datenpunkte.RSS.Feuerwehr1
                    21:32:03.680	info	javascript.0 (14352) script.js.Eigene_Datenpunkte.RSS.Feuerwehr1: registered 0 subscriptions and 0 schedules
                    21:32:03.721	error	javascript.0 (14352) script.js.Eigene_Datenpunkte.RSS.Feuerwehr1: TypeError: Cannot convert undefined or null to object
                    21:32:03.722	error	javascript.0 (14352) at Request.request [as _callback] (script.js.Eigene_Datenpunkte.RSS.Feuerwehr1:25:33)
                    
                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @sigi234 last edited by

                      @sigi234 sagte in Hilfe bei RSS-feed benötigt !:

                      const einsatzCount = Object.keys(einsaetze).length;                                                                                                                                                                            
                      

                      Ändere Zeile 25 in

                          const einsatzCount = obj.cnt_einsaetze;
                      
                      sigi234 1 Reply Last reply Reply Quote 0
                      • sigi234
                        sigi234 Forum Testing Most Active @paul53 last edited by sigi234

                        @paul53 sagte in Hilfe bei RSS-feed benötigt !:

                        @sigi234 sagte in Hilfe bei RSS-feed benötigt !:

                        const einsatzCount = Object.keys(einsaetze).length;                                                                                                                                                                            
                        

                        Ändere Zeile 25 in

                            const einsatzCount = obj.cnt_einsaetze;
                        
                        21:38:45.482	info	javascript.0 (14352) script.js.Eigene_Datenpunkte.RSS.Feuerwehr1: registered 0 subscriptions and 0 schedules
                        21:38:45.511	warn	javascript.0 (14352) at Request.request [as _callback] (script.js.Eigene_Datenpunkte.RSS.Feuerwehr1:60:5)
                        21:38:49.268	info	javascript.0 (14352) Stop script script.js.Eigene_Datenpunkte.RSS.Feuerwehr1
                        21:38:49.271	info	javascript.0 (14352) Start javascript script.js.Eigene_Datenpunkte.RSS.Feuerwehr1
                        21:38:49.272	info	javascript.0 (14352) script.js.Eigene_Datenpunkte.RSS.Feuerwehr1: registered 0 subscriptions and 0 schedules
                        21:38:49.306	warn	javascript.0 (14352) at Request.request [as _callback] (script.js.Eigene_Datenpunkte.RSS.Feuerwehr1:60:5)
                        

                        Hinweis:.
                        Derzeit läuft kein Einsatz

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @sigi234 last edited by paul53

                          @sigi234
                          Ändere beim DP "alarme" den Datenpunkttyp von "boolean" in "string".

                          sigi234 1 Reply Last reply Reply Quote 1
                          • sigi234
                            sigi234 Forum Testing Most Active @paul53 last edited by

                            @paul53 sagte in Hilfe bei RSS-feed benötigt !:

                            @sigi234
                            Ändere beim DP "alarme" den Datenpunkttyp von "boolean" in "string".

                            Sollte da jetzt nicht was stehen ?

                            Screenshot (1499).png

                            J.A.R.V.I.S. 1 Reply Last reply Reply Quote 0
                            • J.A.R.V.I.S.
                              J.A.R.V.I.S. Developer @sigi234 last edited by J.A.R.V.I.S.

                              @sigi234 eigentlich schon. Bei mir hat das Skript gut funktioniert. Werde ich mir morgen nochmal anschauen.

                              sigi234 1 Reply Last reply Reply Quote 1
                              • sigi234
                                sigi234 Forum Testing Most Active @J.A.R.V.I.S. last edited by sigi234

                                @J-A-R-V-I-S sagte in Hilfe bei RSS-feed benötigt !:

                                @sigi234 eigentlich schon. Bei mir hat das Skript gut funktioniert. Werde ich mir morgen nochmal anschauen.

                                06:30:13.382	info	javascript.0 (14352) Stop script script.js.Eigene_Datenpunkte.RSS.Feuerwehr1
                                06:30:13.386	info	javascript.0 (14352) Start javascript script.js.Eigene_Datenpunkte.RSS.Feuerwehr1
                                06:30:13.390	info	javascript.0 (14352) script.js.Eigene_Datenpunkte.RSS.Feuerwehr1: registered 0 subscriptions and 0 schedules
                                06:30:13.418	error	javascript.0 (14352) script.js.Eigene_Datenpunkte.RSS.Feuerwehr1: SyntaxError: Unexpected end of JSON input
                                06:30:13.418	error	javascript.0 (14352) at Request.request [as _callback] (script.js.Eigene_Datenpunkte.RSS.Feuerwehr1:47:27)
                                
                                const request = require('request');
                                 
                                const fwArray = ['FF Pucking-Hasenufer', 'FF Enns '];
                                 
                                const dpObj = {};
                                 
                                const neuerAlarm = 'javascript.0.Feuerwehr2.neuerAlarm';
                                const alarme = 'javascript.0.Feuerwehr2.alarme';
                                
                                let   DP       = "javascript.0.Feuerwehr2";
                                
                                //Datenpunkt anlegen
                                createState(DP+'.neuerAlarm', '', { name: "Feuerwehreinsatzmeldungen", type: "boolean",    role: "state" });
                                createState(DP+'.alarme', '', { name: "neue Meldung",              type: "string", role: "state" });
                                 
                                request('http://intranet.ooelfv.at/webext2/rss/json_laufend.txt', (err, res, body) => {
                                 
                                    if(err || res.statusCode != 200) {
                                        log(body, 'error');
                                        return;
                                    }
                                 
                                    const obj = JSON.parse(body);
                                    const einsaetze = obj.einsaetze;
                                    const einsatzCount = obj.cnt_einsaetze;
                                 
                                    for(let i = 0; i < einsatzCount; i++) {
                                 
                                        const einsatz = einsaetze[i].einsatz;
                                        const feuerwehren = einsatz.feuerwehrenarray;
                                 
                                        const feuerwehrCount = Object.keys(feuerwehren).length;
                                 
                                        for(let j = 0; j < feuerwehrCount; j++) {
                                 
                                            const feuerwehr = feuerwehren[j];
                                            
                                            for(let k = 0; k < fwArray.length; k++) {
                                                if(feuerwehr.fwname == fwArray[k]) {
                                 
                                                    dpObj[einsatz.num1] = {id: einsatz.num1, alarmstufe: einsatz.alarmstufe};
                                                }
                                            }
                                        }
                                    }
                                 
                                    const oldState = JSON.parse(getState(alarme).val);
                                 
                                    let newAlarm = false;
                                 
                                    if(oldState && Object.keys(oldState).length == Object.keys(dpObj).length) {
                                        for(let key in dpObj) {
                                            if(dpObj[key].id == oldState[key].id) {
                                                continue;
                                            } else newAlarm = true; 
                                        }
                                    } else newAlarm = true;
                                 
                                        setState(neuerAlarm, newAlarm);
                                    setState(alarme, JSON.stringify(dpObj));
                                });
                                
                                1 Reply Last reply Reply Quote 0
                                • SBorg
                                  SBorg Forum Testing Most Active @paul53 last edited by

                                  @paul53 sagte in Hilfe bei RSS-feed benötigt !:

                                  @SBorg sagte:

                                  Bei XML kann ich den ganzen Feed auf einmal einlesen (braucht aber mehr Speicher) und dann durchforsten.

                                  Einfacher ist es, den JSON-Feed einzulesen, da man den in JS direkt auswerten kann.

                                  Hätte mir beides das Leben leichter gemacht, wenn ich von Anfang an gewusst hätte, dass es nicht nur den Atom-Feed gibt 😉
                                  Da wäre sogar ich mit meinem Javascript-Kenntnisstand zu potte gekommen. Aber als stream... 😞

                                  sigi234 2 Replies Last reply Reply Quote 0
                                  • sigi234
                                    sigi234 Forum Testing Most Active @SBorg last edited by

                                    @SBorg sagte in Hilfe bei RSS-feed benötigt !:

                                    Hätte mir beides das Leben leichter gemacht, wenn ich von Anfang an gewusst hätte, dass es nicht nur den Atom-Feed gibt

                                    Sorry, aber dein Skript funktioniert trotzdem gut.

                                    1 Reply Last reply Reply Quote 0
                                    • sigi234
                                      sigi234 Forum Testing Most Active @SBorg last edited by

                                      @SBorg sagte in Hilfe bei RSS-feed benötigt !:

                                      @paul53 sagte in Hilfe bei RSS-feed benötigt !:

                                      @SBorg sagte:

                                      Bei XML kann ich den ganzen Feed auf einmal einlesen (braucht aber mehr Speicher) und dann durchforsten.

                                      Einfacher ist es, den JSON-Feed einzulesen, da man den in JS direkt auswerten kann.

                                      Hätte mir beides das Leben leichter gemacht, wenn ich von Anfang an gewusst hätte, dass es nicht nur den Atom-Feed gibt 😉
                                      Da wäre sogar ich mit meinem Javascript-Kenntnisstand zu potte gekommen. Aber als stream... 😞

                                      Ev. mehrere Meldungen jetzt möglich?

                                      SBorg 1 Reply Last reply Reply Quote 0
                                      • sigi234
                                        sigi234 Forum Testing Most Active @paul53 last edited by

                                        @paul53 sagte in Hilfe bei RSS-feed benötigt !:

                                        und weitere Attribute der Einsätze abfragen.

                                        Wie mache ich das?

                                        1 Reply Last reply Reply Quote 0
                                        • SBorg
                                          SBorg Forum Testing Most Active @sigi234 last edited by

                                          @sigi234 sagte in Hilfe bei RSS-feed benötigt !:

                                          Ev. mehrere Meldungen jetzt möglich?

                                          Leider nein, es hätte dann nur von Anfang an so ähnlich ausgesehen wie die Version von @J-A-R-V-I-S und ich hätte mich nicht mit dem Atom-Feed als stream herum gequält 😉

                                          sigi234 1 Reply Last reply Reply Quote 0
                                          • sigi234
                                            sigi234 Forum Testing Most Active @SBorg last edited by

                                            @SBorg sagte in Hilfe bei RSS-feed benötigt !:

                                            @sigi234 sagte in Hilfe bei RSS-feed benötigt !:

                                            Ev. mehrere Meldungen jetzt möglich?

                                            Leider nein, es hätte dann nur von Anfang an so ähnlich ausgesehen wie die Version von @J-A-R-V-I-S und ich hätte mich nicht mit dem Atom-Feed als stream herum gequält 😉

                                            Ok, werde da mal selber ein wenig experimentieren.😀

                                            SBorg J.A.R.V.I.S. 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            901
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            13
                                            426
                                            47202
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo