Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Javascript] für Warnungen von Lebensmittelwarnung

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Javascript] für Warnungen von Lebensmittelwarnung

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      MCU last edited by

      @Michi68

      /*VIS Lebensmittelwarnungen
      {1}
      Bringt einen RSS-Feed als Tabelle in ioBroker
      setzt die Library xml2js voraus (in Javascript Einstellungen zufügen)
      {1}
      {1}
      erstellt: 11.05.2017 von Torsten (auf Basis von Bluefox Code und Pix)
      Script angepasst : 28.10.2019 von Oliver
      https://forum.iobroker.net/post/319584
      {1}
      */
       
      var idFeedTabelle = '0_userdata.0.Eigene_Datenpunkte.VIS.Lebensmittelwarnung.Alle.RSS-Feed_Tabelle';
       
      var forceCreation = false;
          
      createState(idFeedTabelle, '', forceCreation, {
          write: true,
          read: true,
          name: 'RSS Feed Lebensmittelwarnung Tabelle',
          type: 'string',
          desc: 'Lebensmittelwarnung RSS Feed als HTML Tabelle',
          role: 'html'
      });
       
      var link = 'https://www.lebensmittelwarnung.de/bvl-lmw-de/opensaga/feed/alle/nordrhein_westfalen.rss';
       
      var quer = false ;
       
      function RSS_einlesen () {
          var parseString = require('xml2js').parseString;
          //var request = require('request');
       
          httpGet(link, function (error, response) {
              if (!error && response.statusCode == 200) {
          
                  parseString(response.data, {
                      explicitArray: false,
                      mergeAttrs: true
                  },
                  function (err, result) {
                      //log(JSON.stringify(result, null, 2));
                      if (err) {
                          log("Fehler: " + err, 'error');
                      } else {    
                          var tabelle;
                          if (quer) {
                              // Titel links, Inhalt rechts
                              tabelle ='<table class="rss_feed"><thead><tr><th>Titel</th><th>Produktwarnungen</th></tr></thead><tbody>';
                              for (var i = 0; i <result.rss.channel.item.length; i++) {
                                  tabelle += '<tr><td>' + result.rss.channel.item[i].title + '</td><td>' + result.rss.channel.item[i].description + '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------</td></tr>';
                              }
                          } else {
                              // Titel oben, INhalt darunter (wie in der Zeitung)
                              tabelle ='<table class="rss_feed"><thead><tr><th>Produktwarnungen</th><tr><tr></tr></thead><tbody>';
                              for (var j = 0; j <result.rss.channel.item.length; j++) {
                                  
                                  //Datum auf dt. Wochentage patchen                                                       
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Mon', 'Mo');                                
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Tue', 'Di');                                
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Wed', 'Mi');                                
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Thu', 'Do');                               
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Fri', 'Fr');                                
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Sat', 'Sa');                                
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Sun', 'So');
       
                                  //Datum auf dt. Monate patchen
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Mar', 'März');                                
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('May', 'Mai');                                
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Oct', 'Okt');                                
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('Dec', 'Dez');                               
                                  result.rss.channel.item[j].pubDate = result.rss.channel.item[j].pubDate.replace('+0000', '');                                                  
                                  
                                  tabelle += '<tr><td>' + result.rss.channel.item[j].title + '</td></tr><tr><td>' + result.rss.channel.item[j].description + '</td></tr><tr><td>' + result.rss.channel.item[j].pubDate + '</td></tr><tr><td>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------</td></tr>';
                              }
                          }
                          tabelle += '</tbody></table>';  
                          setState(idFeedTabelle, tabelle);
                      }
                  });
              } else  {
                  log(error, 'error');
              }
          });   // Ende request 
          log('RSS-Feed ' + link + ' eingelesen');
      }
       
      schedule("*/10 * * * *", RSS_einlesen);  // alle 10 Minuten
      RSS_einlesen();
      
      
      1 Reply Last reply Reply Quote 3
      • SBorg
        SBorg Forum Testing Most Active last edited by

        Status: deprecated

        Leider scheint der Bund den RSS-Feed in seiner alten Version eingestellt zu haben.
        Der neue ist... nennen wir es mal höflich suboptimal und nicht zu gebrauchen.

        Neuschwansteini 1 Reply Last reply Reply Quote 0
        • Neuschwansteini
          Neuschwansteini @SBorg last edited by

          @sborg

          Hmm wie die Regierung.. 🙈

          1 Reply Last reply Reply Quote 0
          • M
            MCU last edited by

            Solange nichts anderes verfügbar, hier ein JSON
            https://mcuiobroker.gitbook.io/jarvis-infos/jarvis-v3/system-effektprog./lebensmittel-warnungen

            M 1 Reply Last reply Reply Quote 1
            • M
              MartyBr @MCU last edited by

              @mcu
              Wie kann ich die json anzeigen? Ich habe als Widget die json-Tabelle genommen, aber die angezeigten Werte sind nicht brauchbar.

              Hier das Widget:

              [{"tpl":"i-vis-jsontable","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","iTblRowLimit":"10","iTableRefreshRate":"0","iTblSortOrder":"asc","iColCount":"5","iColShow1":"true","iTblHeadTextAlign1":"center","iTblTextAlign1":"left","iTblCellFormat1":"normal","iTblCellImageSize1":"200","iTblCellBooleanCheckbox1":"false","iTblCellBooleanColorFalse1":"#ff0000","iTblCellBooleanColorTrue1":"#00ff00","iTblCellNumberDecimals1":"2","iTblCellNumberDecimalSeperator1":".","iTblCellNumberThousandSeperator1":",","iTblCellThresholds-oid1":"","iTblCellThresholdsText1":"","iOpacityAll":"1","iTblRowEvenColor":"#333333","iTblRowUnevenColor":"#455618","iTblHeaderColor":"#333333","iRowSpacing":"10","iTblRowEvenTextColor":"#ffffff","iTblRowUnevenTextColor":"#ffffff","iTblHeaderTextColor":"#ffffff","iBorderSize":"0","iBorderStyleLeft":"none","iBorderStyleRight":"none","iBorderStyleUp":"none","iBorderStyleDown":"none","iBorderColor":"#ffffff","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"oid":"0_userdata.0.Lebensmittel.Warnung.json","iColShow2":"true","iTblHeadTextAlign2":"center","iTblTextAlign2":"left","iTblCellFormat2":"normal","iTblCellImageSize2":"200","iTblCellBooleanCheckbox2":"false","iTblCellBooleanColorFalse2":"#ff0000","iTblCellBooleanColorTrue2":"#00ff00","iTblCellNumberDecimals2":"2","iTblCellNumberDecimalSeperator2":".","iTblCellNumberThousandSeperator2":",","iTblCellThresholds-oid2":"","iTblCellThresholdsText2":"","iColShow3":"true","iTblHeadTextAlign3":"center","iTblTextAlign3":"left","iTblCellFormat3":"normal","iTblCellImageSize3":"200","iTblCellBooleanCheckbox3":"false","iTblCellBooleanColorFalse3":"#ff0000","iTblCellBooleanColorTrue3":"#00ff00","iTblCellNumberDecimals3":"2","iTblCellNumberDecimalSeperator3":".","iTblCellNumberThousandSeperator3":",","iTblCellThresholds-oid3":"","iTblCellThresholdsText3":"","iColShow4":"true","iTblHeadTextAlign4":"center","iTblTextAlign4":"left","iTblCellFormat4":"normal","iTblCellImageSize4":"200","iTblCellBooleanCheckbox4":"false","iTblCellBooleanColorFalse4":"#ff0000","iTblCellBooleanColorTrue4":"#00ff00","iTblCellNumberDecimals4":"2","iTblCellNumberDecimalSeperator4":".","iTblCellNumberThousandSeperator4":",","iTblCellThresholds-oid4":"","iTblCellThresholdsText4":"","iColShow5":"true","iTblHeadTextAlign5":"center","iTblTextAlign5":"left","iTblCellFormat5":"normal","iTblCellImageSize5":"200","iTblCellBooleanCheckbox5":"false","iTblCellBooleanColorFalse5":"#ff0000","iTblCellBooleanColorTrue5":"#00ff00","iTblCellNumberDecimals5":"2","iTblCellNumberDecimalSeperator5":".","iTblCellNumberThousandSeperator5":",","iTblCellThresholds-oid5":"","iTblCellThresholdsText5":""},"style":{"left":"29px","top":"69px"},"widgetSet":"vis-inventwo"}]
              

              und so sieht das aus (sowohl in Editor als auch in VIS):

              Bildschirmfoto 2024-06-20 um 10.02.27.png

              Gruß
              Martin

              M 1 Reply Last reply Reply Quote 0
              • M
                MCU @MartyBr last edited by MCU

                @martybr Muss man die Reihenfolge ändern.?
                Warum nicht brauchbar?
                Rechts sind noch jede Menge Daten?
                In jarvis kann ich die Reihenfolge selbst definieren.

                Für VIS-User habe ich noch eine HTML ergänzt

                8d8e3b04-b610-4afe-8854-3a01ac5b979f-image.png

                M 1 Reply Last reply Reply Quote 0
                • M
                  MartyBr @MCU last edited by

                  @mcu Ich setze Jarvis nicht ein. Wo finde ich die html? Ich sehe unter dem Ordner nur die json-Datei.

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    MCU @MartyBr last edited by

                    @martybr In der Doku, muss ich gerade noch anpassen, dauert noch ein wenig

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      MartyBr @MCU last edited by

                      @mcu
                      Keine Eile. Ich kann warten, so eilig ist das nicht 😀

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        MCU @MartyBr last edited by MCU

                        @martybr Schau mal , reicht das so?
                        Wenn da noch Design-Wünsche sind, bitte mitteilen.

                        M W 2 Replies Last reply Reply Quote 0
                        • M
                          MartyBr @MCU last edited by

                          @mcu
                          Ich teste gerade. Die DPte werden unter javascript.0.VIS.Lebensmittewarnung angelegt.
                          Das Widget habe ich von Github geladen. Ich glaube, da muss ich noch war anpassen.
                          Den ersten Punkt verstehe ich nicht:

                          <h3>{javascript.0.VIS.Lebensmittelwarnung.Nummer_0.Titel}</h3>
                          Link zur Meldung: <a href="{javascript.0.VIS.Lebensmittelwarnung.Nummer_0.Link}" target="_blank"><i>Klick mich...</i></a><br />
                          
                          M 1 Reply Last reply Reply Quote 0
                          • M
                            MCU @MartyBr last edited by MCU

                            @martybr Nein, die DPs werden unter 0_userdata.0 angelegt
                            https://mcuiobroker.gitbook.io/jarvis-infos/jarvis-v3/system-effektprog./lebensmittel-warnungen#javascript-lebensmittelwarnungen

                            https://mcuiobroker.gitbook.io/jarvis-infos/jarvis-v3/system-effektprog./lebensmittel-warnungen#vis-user

                            78b035d2-5429-4e33-b9b5-f67d6f072482-image.png

                            Neuschwansteini M 2 Replies Last reply Reply Quote 1
                            • Neuschwansteini
                              Neuschwansteini @MCU last edited by

                              @mcu

                              Vielen Dank, das sieht ja klasse aus, hier dargestellt mit dem MinuVIS-Adapter:
                              36fdf589-4a32-474b-8f12-3a4b6f751c53-image.png

                              1 Reply Last reply Reply Quote 1
                              • M
                                MartyBr @MCU last edited by

                                @mcu
                                Ich hatte das falsche Script geladen. Nun klappt alles.
                                Vielen Dank 👍

                                1 Reply Last reply Reply Quote 1
                                • W
                                  WernerS @MCU last edited by

                                  @mcu

                                  Hallo

                                  also das Script scheint soweit zu funktionieren, nur der Alarm bei Pushover geht nicht. Der adapter ist installiert und funktioniert auch, aber eine neue Lebensmittelwarnung löst keinen Alarm aus.
                                  Ein Datenpunkt würde mir auch reichen

                                  Gruß
                                  Werner

                                  D4vE 1 Reply Last reply Reply Quote 0
                                  • D4vE
                                    D4vE @WernerS last edited by

                                    Telegram scheint auch nicht zu gehen

                                    Neuschwansteini 1 Reply Last reply Reply Quote 0
                                    • Neuschwansteini
                                      Neuschwansteini @D4vE last edited by

                                      @d4ve @WernerS

                                      welche Benachrichtigung? Welche Version vom Script nutzt ihr denn?
                                      Das von @MCU hat keine Benachrichtigungsfunktion, und das von @SBorg ist depricated, wie unten beschrieben.

                                      D4vE 1 Reply Last reply Reply Quote 0
                                      • D4vE
                                        D4vE @Neuschwansteini last edited by D4vE

                                        @ilovegym sagte in [Javascript] für Warnungen von Lebensmittelwarnung:

                                        @d4ve @WernerS

                                        welche Benachrichtigung? Welche Version vom Script nutzt ihr denn?
                                        Das von @MCU hat keine Benachrichtigungsfunktion, und das von @SBorg ist depricated, wie unten beschrieben.

                                        // ****************************
                                        // lebensmittelWarnung v1.0.3
                                        // ****************************
                                        // Copyright ©MCU 
                                        // v1.0.1 - Abfrage first >=0
                                        // v1.0.2 - html hinzugefügt
                                        // v1.0.3 - Send Message to telegram, pushOver, alexa
                                        
                                        // xml2js in javascript-Instanz eintragen!!!!
                                        // Bild mit Link zum Artikel
                                        
                                        let foodJSONDP = '0_userdata.0.Lebensmittel.Warnung.json'
                                        let foodHTMLDP = '0_userdata.0.Lebensmittel.Warnung.html'
                                        let selectedCountryDP = '0_userdata.0.Lebensmittel.Warnung.country'
                                        let telegramUser = ''; // '' für alle
                                        let telegramInstance = '0';
                                        let sendTelegram = true; // true -> telegram muss installiert sein
                                        let pushOverInstance = '0';
                                        let sendPushOver = false; // true -> pushOver muss installiert sein
                                        let alexaEchoDevice  = 'G070RR1382740311';
                                        let alexaInstance = '0';
                                        let sendAlexa    = true;  // true -> Alexa muss installiert sein
                                        let jarvisInstance = '0'
                                        let sendJarvisPopup = false;
                                        
                                        let newSendSet = false;
                                        

                                        in denn datenpunkt steht was drin also die warnung aber es kommt keine telegram Nachricht

                                        [
                                          {
                                            "pubDate": "Mon, 2 Sep 2024 14:03:59 +0200",
                                            "pubDateTS": 1725278639000,
                                            "title": "Cashewkerne naturell, Ja!, 200 Gramm",
                                            "picture": "<a href=\"https://www.lebensmittelwarnung.de/___lebensmittelwarnung.de/Meldungen/2024/09_September/240902_02_SH_Cashewkerne/240902_02_SH_Cashewkerne.html\"><img src=\"https://www.lebensmittelwarnung.de/___lebensmittelwarnung.de/Meldungen/2024/09_September/240902_02_SH_Cashewkerne/240902_02_SH_Cashewkerne_Bild.jpg?__blob=normal&v=1\" style=\"max-width: 250px; width: auto; height: 100px; \" ></a>",
                                            "pictureSrc": "\"https://www.lebensmittelwarnung.de/___lebensmittelwarnung.de/Meldungen/2024/09_September/240902_02_SH_Cashewkerne/240902_02_SH_Cashewkerne_Bild.jpg?__blob=normal&v=1",
                                            "description": "Cashewkerne naturell, Ja!, 200 Gramm",
                                            "productDurability": "bis Ende Februar 2025",
                                            "packingUnit": "200 Gramm",
                                            "chargeNumber": "58824",
                                            "extDescription": "Cashewkerne naturell, Ja!, 200 Gramm",
                                            "manufacturer": "Inverkehrbringer:<br/>\nJohannes Kordt Handelskontor GmbH,<br/>\nApenraderstraße 13,<br/>\n24939 Flensburg",
                                            "reason": "Fremdkörper",
                                            "information": "Grund für den Rückruf der betroffenen Charge sind mögliche Fremdkörper in Form von Glas.",
                                            "listCountries": [
                                        
                                        Neuschwansteini 1 Reply Last reply Reply Quote 0
                                        • Neuschwansteini
                                          Neuschwansteini @D4vE last edited by

                                          @d4ve
                                          ah, gibt ne neue Version.. danke!

                                          @MCU
                                          funktioniert hier auch nicht.. auch kein Fehler im Debuglog, anscheinend wird die Sendto-funktion garnicht aufgerufen... ?

                                          D4vE 1 Reply Last reply Reply Quote 0
                                          • D4vE
                                            D4vE @Neuschwansteini last edited by D4vE

                                            @ilovegym sagte in [Javascript] für Warnungen von Lebensmittelwarnung:

                                            @d4ve
                                            ah, gibt ne neue Version.. danke!

                                            @MCU
                                            funktioniert hier auch nicht.. auch kein Fehler im Debuglog, anscheinend wird die Sendto-funktion garnicht aufgerufen... ?

                                            du ich hab keine ahnung davon ^^ ich weiß nicht ob man da was via blocky machen kann oder so das man die warnungen bekommt aber so scheid es net zugehen 🙂

                                            // Message senden an telegram
                                                let items = JSON.parse(data);
                                                let x=0;
                                                for(let i=0; i<items.length;i++){
                                                    if(formatDate(items[i].pubDateTS,'DD.MM.YYYY') == formatDate(new Date(), 'DD.MM.YYYY')){
                                                    // Telegram
                                                    // console.log(encodeURIComponent(items[i].pictureSrc))
                                                    if(sendTelegram){
                                                        if(!items[i].send.includes('telegram')){
                                                            sendTo('telegram.'+telegramInstance,{
                                                                user: telegramUser, 
                                                                parse_mode: "HTML", 
                                                                //<b><u>Lebensmittel-Warnung Heute</u></b>\n<b>'+items[i].title +'</b>\n'+
                                                                //\n\nGrund: '+ items[i].reason
                                                                text: '<b><u>Lebensmittel-Warnung  ('+formatDate(new Date(),'DD.MM.YYYY')+')</u></b>\n<b>'+items[i].title +'</b>\n'+'<a href="'+encodeURI(items[i].pictureSrc.substring(1,items[i].pictureSrc.length-1)) +'">Bild-URL</a>'+'\n\nGrund: '+ items[i].reason
                                                                }, function (res) {
                                                                    console.log('Sent to ' + res + ' users');
                                                            });
                                                            items[i].send.push('telegram')
                                                        }
                                                    }
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            920
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript lebensmittelwarnung
                                            24
                                            293
                                            32094
                                            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