Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. DasIch83

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 21
    • Best 3
    • Groups 1

    DasIch83

    @DasIch83

    3
    Reputation
    13
    Profile views
    21
    Posts
    0
    Followers
    0
    Following
    Joined Last Online
    Location Hagen Age 42

    DasIch83 Follow
    Starter

    Best posts made by DasIch83

    • RE: [Javascript] für Warnungen von Lebensmittelwarnung

      @nashra komplette Meldung: Meldung 1.png
      Einzelner Datenpunkt: DP1.png
      dp2.png
      Widget: widget.png

      Hoffe das hilft dir weiter

      posted in Praktische Anwendungen (Showcase)
      DasIch83
      DasIch83
    • RE: [Verkaufe] CC2531 geflasht

      Hallo und guten Abend,

      Hattest du noch einen Stick zum Verkauf?
      Bezahlung via Paypal FF?

      Schon einmal vielen Dank vorab.
      Gruß
      David

      posted in Marktplatz
      DasIch83
      DasIch83
    • RE: Test Adapter mihome-vacuum 3.8.x

      @dirkhe Nabend,
      also ich hab mir das jetzt mal alles etwas angeschaut und komme leider mit meinem Basiswissen nicht weiter.
      Allerdings wird aktuell ein weiterer Adapter für die ganzen Xiaomi Geräte entwickelt.
      Ich habe dort auch einmal mein Gerät zum testen angeboten und vermute ganz stark, dass der neue Adapter diesen hier ablösen könnte, da dort ein Vielfaches mehr an Geräten unterstützt werden kann.
      Eventuell könntest du dich auch mit @tombox zusammen tun um einen "Ultimativen Xiaomi Adapter" zu generieren.
      Hier der Link: https://forum.iobroker.net/topic/59636/test-adapter-mihome-cloud/75

      BG
      David

      posted in Tester
      DasIch83
      DasIch83

    Latest posts made by DasIch83

    • RE: contrib-amazon-echo: Farbkonvertierung?

      Besten Dank an @Hc-Yami und @vikk88.
      Ich habe mir meine Lampen nochmal etwas genauer angeschaut und dabei ist mir aufgefallen, dass zudem noch ein weiterer State geändert werden muss, damit die Birnen auf weiß schalten. 😰

      posted in Node-Red
      DasIch83
      DasIch83
    • RE: Test Adapter mihome-cloud

      @tombox Ich habe dir die Freigabe in der MiHome App eingerichtet

      posted in Tester
      DasIch83
      DasIch83
    • RE: [Javascript] für Warnungen von Lebensmittelwarnung

      @nashra komplette Meldung: Meldung 1.png
      Einzelner Datenpunkt: DP1.png
      dp2.png
      Widget: widget.png

      Hoffe das hilft dir weiter

      posted in Praktische Anwendungen (Showcase)
      DasIch83
      DasIch83
    • RE: Test Adapter mihome-cloud

      @tombox Die Datenpunkte General und Extra werden sauber ausgelesen.
      Ab Remote kommen nur teilweise Datenpunkte rein:

      2920fa10-8336-4103-b4e4-6e02032c5260-image.png
      9e1a76de-9b26-47e5-a2da-0c5c6c59c6aa-image.png
      01140778-900e-4b65-be6d-2258609ac9ee-image.png
      250bed82-149a-4f5e-bd76-bf9fc387ee97-image.png

      Steuern lässt sich nichts.

      posted in Tester
      DasIch83
      DasIch83
    • RE: [Javascript] für Warnungen von Lebensmittelwarnung

      @nashra könnte an den Gruppen ,liegen.
      Meine VIS ist etwas rudimentär, da ich nicht so viele Views anlegen wollte.
      Wichtig waren mir ehh nur die einzelnen Datenpunkte um die Daten nicht im Block abrufen zu müssen.

      posted in Praktische Anwendungen (Showcase)
      DasIch83
      DasIch83
    • RE: [Javascript] für Warnungen von Lebensmittelwarnung

      @nashra Ja klar, kein Thema.
      Ist allerdings noch nicht ganz fertig. Zugeschnitten auf ein iPad Air 2.
      View Lebensmittelwarnung.txt

      posted in Praktische Anwendungen (Showcase)
      DasIch83
      DasIch83
    • RE: [Javascript] für Warnungen von Lebensmittelwarnung

      @sborg Danke für dein Script.
      Ich habe dein Script etwas umgeschrieben um #Grund der Warnung #Hersteller und#"betroffene Bundesländer als separate Datenpunkte zu erhalten.
      Falls das wer benötigt:

      //09.01.2023 by DasIch83
      //Grund der Warnung, Hersteller und betroffene Bundesländer als Datenpunkte hinzugefügt 
      //Anzahl auf 6 erhöht wegen eigener VIS
      
      /*
         (c)2019 by SBorg 
         V0.0.8 - 31.10.2019 + Meldungen für mehrere Bundesländer möglich
         V0.0.7 - 03.10.2019 ~ mehrere Filter möglich
         V0.0.6 - 02.09.2019 ~ Wochentage und Monate auf dt. Datumsformat gepatcht
                             + Produktart als Datenpunkt
                             ~ Datum neu formatiert (Sekunden entfernt und "Uhr" hinzugefügt)
         V0.0.5 - 31.08.2019 ~ Bilder als eigener Datenpunkt ausgelagert
         V0.0.4 - 29.08.2019 + Fehlermanagement Webserver
                             + Datenpunkt für "neue Warnung" / true bei neuer Warnung
                             + filtern eines Suchbegriffes (minimal)
         V0.0.3 - 28.08.2019 ~ Datum formatiert
                             + betroffene Bundesländer anzeigen? 
                             ~ Fehler beim ersten Start des Skripts behoben
         V0.0.2 - 27.08.2019 + Titel, Datum und Link  
         V0.0.1 - 26.08.2019   erste Alpha
      
         holt die Warnungen von Lebensmittelwarnung.de aus deren RSS-Feed
         benötigt 'rss-parser': cd /opt/iobroker && npm install --save rss-parser
      
            ToDo: - besseres Datenpunktmanagment
         
         known issues: keine
      
      */
      //START User-Einstellungen ***********************************************************************************************
      const debug    = false;                                  //debuggen [true/false]?
      const Anzahl   = 6;                                      //wie viele Warnungen sollen gelesen werden?
      const BuLand   = true;                                   //zeige Bundesländer an [true/false]?
      const DP       = '0_userdata.0.News.Lebensmittelwarnung'; //Datenpunkt
      var   FILTER   = ['false'];                              //ausfiltern bestimmter Suchbegriffe (auch RegEx) oder 'false' für keinen Filter
      var   LAENDER  = [10];                                    /*Warnung für welches Bundesland/-länder; kommasepariert
                                                                1=Baden-Württemberg, 2=Bayern, 3=Berlin, 4=Brandenburg, 5=Bremen, 
                                                                6=Hamburg, 7=Hessen, 8=Mecklenburg-Vorpommern, 9=Niedersachsen, 
                                                                10=Nordrhein-Westfalen, 11=Rheinland-Pfalz, 12=Saarland, 13=Sachsen, 
                                                                14=Sachsen-Anhalt, 15=Schleswig-Holstein, 16=Thüringen oder 0=alle */
      const Zeitplan = "3 */2 * * *";                          /* wann soll die Abfrage stattfinden (Minuten Stunde * * *)
         die Minuten sollten auf eine "krumme" Zeit gesetzt werden, damit nicht jeder zur selben Zeit eine Anfrage an den
         Webserver von Lebensmittelwarnung.de schickt und diesen ggf. überlastet... 
         Hier: alle 8 Stunden UND 3 Minuten = 8:03 Uhr, 16:03 Uhr und 0:03 Uhr
         siehe auch cron-Syntax z.B. unter https://de.wikipedia.org/wiki/Cron */
      //END User-Einstellungen *************************************************************************************************
      
      //ab hier gibt es nix mehr zu ändern :)
      //firstStart?
      if (!isState(DP, false)) { createDP(); }
      
      //globale Nicht-User-Variablen
      const URL      = 'https://www.lebensmittelwarnung.de/bvl-lmw-de/opensaga/feed/alle/alle_bundeslaender.rss'
      let Laender    = ['alle','Baden-Württemberg','Bayern','Berlin','Brandenburg','Bremen','Hamburg','Hessen','Mecklenburg-Vorpommern',
                        'Niedersachsen','Nordrhein-Westfalen','Rheinland-Pfalz','Saarland','Sachsen','Sachsen-Anhalt', 'Schleswig-Holstein','Thüringen'];
      
      //Daten beim Start des Scripts abrufen
      polldata();
      console.log('Hole Daten...');
      
      //neue Warnung?
      on({id: DP+".Nummer_0.Datum", change: "ne"}, function (obj) {
        console.log('Neue Warnmeldung vorhanden...');
        setTimeout(function() { setState(DP+".neue_Warnung", 'true'); }, 3000);
      });
      
      //scheduler
      schedule(Zeitplan, polldata);
      
      function polldata() {
       let Parser = require('rss-parser');
       let parser = new Parser({
          xml2js: { emptyTag: '--EMPTY--', },
          maxRedirects: 50,
          timeout: 60000,
          customFields: { item: [['description','description', {keepArray: true}],] }
       });
      
       (async () => {
       
        try {
              let feed = await parser.parseURL(URL);
              var i=0, Treffer, HitBuL, Beschreibung, Bild, Produktart, Grund, Hersteller, Bundeslaender;
              if (debug === true) {console.log(feed.title);}
       
              feed.items.forEach(function(entry) {
                  if (debug === true) {console.log(entry.title + ': ' + entry.link + ' ' + entry.description + ' ' + entry.pubDate);}
                  if (i<Anzahl) {
                      
                     //Filter Bundesländer
                     HitBuL=false;
                     for(let anzBuLand=0; anzBuLand<LAENDER.length; anzBuLand++) { 
                        if (entry.description[0].indexOf(Laender[LAENDER[anzBuLand]], entry.description[0].lastIndexOf('<b>Betroffene Länder:</b>')) != -1) { HitBuL=true; }
                     }
                     if (HitBuL === true || LAENDER[0] == 0) { 
                     
                      //Suchfilter auf Beschreibung anwenden
                      Treffer=0;
                      for(let anzFilter=0; anzFilter<FILTER.length; anzFilter++) { 
                          if (entry.description[0].search(FILTER[anzFilter]) == -1) { Treffer++; } 
                      }
                      if (Treffer==FILTER.length || FILTER[0] == "false") {
                          //Bundesländer anzeigen?
                          if (BuLand === true) { Beschreibung = entry.description[0] } else { Beschreibung = entry.description[0].substring(0, entry.description[0].lastIndexOf('<b>Betroffene Länder:</b>')); }
                          //prüfen ob Bild vorhanden ist und ggf. parsen
                          if (Beschreibung.search('<img src="http') != -1) {
                              Bild = Beschreibung.substring(0, Beschreibung.indexOf('<br/>')+5);
                              Beschreibung = Beschreibung.replace(Bild, ''); 
                              Bild = Bild.substring(Bild.indexOf('"')+1, Bild.lastIndexOf('"'));
                              Bild = Bild.substring(0, Bild.indexOf('"'));
                          } else {Bild = '';}
      
                          //Datum auf dt. Wochentage patchen
                          let WT = entry.pubDate.substring(0, 3);
                          switch (WT) {
                              case "Mon":
                                  entry.pubDate = entry.pubDate.replace('Mon', 'Mo');
                                  break;
                              case "Tue":
                                  entry.pubDate = entry.pubDate.replace('Tue', 'Di');
                                  break;    
                              case "Wed":
                                  entry.pubDate = entry.pubDate.replace('Wed', 'Mi');
                                  break;
                              case "Thu":
                                  entry.pubDate = entry.pubDate.replace('Thu', 'Do');
                                  break;
                              case "Fri":
                                  entry.pubDate = entry.pubDate.replace('Fri', 'Fr');
                                  break;
                              case "Sat":
                                  entry.pubDate = entry.pubDate.replace('Sat', 'Sa');
                                  break;
                              case "Sun":
                                  entry.pubDate = entry.pubDate.replace('Sun', 'So');
                                  break;    
                              default:
                                  console.log('Fehler beim Datum parsen...: '+WT);
                          }
      
                          //Monate auf dt. Format patchen
                          if (entry.pubDate.search('Mar')) {entry.pubDate = entry.pubDate.replace('Mar', 'März');}
                          if (entry.pubDate.search('May')) {entry.pubDate = entry.pubDate.replace('May', 'Mai');}
                          if (entry.pubDate.search('Oct')) {entry.pubDate = entry.pubDate.replace('Oct', 'Okt');}
                          if (entry.pubDate.search('Dec')) {entry.pubDate = entry.pubDate.replace('Dec', 'Dez');}
      
                          //Produktart filtern
                          Produktart = Beschreibung.substring(Beschreibung.indexOf('<b>Typ:</b>'));
                          Produktart = Produktart.substring(12, Produktart.indexOf('<br/>'));
      					
      					//Grund filtern
      					Grund = Beschreibung.substring(Beschreibung.indexOf('<b>Grund der Warnung:</b>'));
      					Grund = Grund.substring(25, Grund.indexOf('<br/>'));
      					
      					//Hersteller filtern
      					Hersteller = Beschreibung.substring(Beschreibung.indexOf('<b>Hersteller '));
      					Hersteller = Hersteller.substring(38, Hersteller.indexOf('<br/>'));
      					
      					//Bundesländer filtern
      					Bundeslaender = Beschreibung.substring(Beschreibung.indexOf('<b>Betroffene'));
      					Bundeslaender = Bundeslaender.substring(26, Bundeslaender.indexOf('<br/>'));
      
                          setState(DP+'.Nummer_'+i+'.Titel', entry.title);
                          setState(DP+'.Nummer_'+i+'.Link', entry.link);
                          setState(DP+'.Nummer_'+i+'.Datum', entry.pubDate.substring(0, entry.pubDate.lastIndexOf(':'))+' Uhr');
                          setState(DP+'.Nummer_'+i+'.Beschreibung', Beschreibung);
                          setState(DP+'.Nummer_'+i+'.Produktbild', Bild);
                          setState(DP+'.Nummer_'+i+'.Produktart', Produktart);
      					setState(DP+'.Nummer_'+i+'.Grund', Grund);
                          setState(DP+'.Nummer_'+i+'.Hersteller', Hersteller);
      					setState(DP+'.Nummer_'+i+'.Bundeslaender', Bundeslaender);
                          i++;
                      } // end Filter Produkte
                     } //end Filter Bundesländer
                  } // end Anzahl
              })
              console.log('Daten aktualisiert...');
          } catch (e) {
              console.warn('Fehler beim Datenabruf...');
              return;
              }
      
          })(); //end async
      } //end func
      
      /*
        Checks if a a given state or part of state is existing.
        This is a workaround, as getObject() or getState() throw warnings in the log.
        Set strict to true if the state shall match exactly. If it is false, it will add a wildcard * to the end.
        See: https://forum.iobroker.net/topic/11354/
        @param {string}    strStatePath     Input string of state, like 'javas-cript.0.switches.Osram.Bedroom'
        @param {boolean}   [strict=false]   Optional: if true, it will work strict, if false, it will add a wildcard * to the end of the string
        @return {boolean}                   true if state exists, false if not
       */
      
      function isState(strStatePath, strict) {
      
          let mSelector;
          if (strict) {
              mSelector = $('state[id=' + strStatePath + '$]');
          } else {
              mSelector = $('state[id=' + strStatePath + ']');
          }
      
          if (mSelector.length > 0) {
              return true;
          } else {
              return false;
          }
      }
      
      // Pause einlegen
      function Sleep(milliseconds) {
       return new Promise(resolve => setTimeout(resolve, milliseconds));
      }
      
      //Datenpunkte anlegen
      async function createDP() {
          console.log(DP + ' existiert nicht... Lege Datenpunkte an...');
          createState(DP, '', { name: 'Warnungen von Lebensmittelwarnung.de' });
          createState(DP+'.neue_Warnung', '', { name: "neue Warnung vorhanden", type: "string", role: "state" });
          for(var i=0; i<Anzahl; i++) { 
              createState(DP+'.Nummer_'+i, '', { name: 'Warnung Nummer #'+i }); 
              createState(DP+'.Nummer_'+i+'.Beschreibung', '', { name: "HTML-Text der Warnung",
                                                                  type: "string",
                                                                  role: "state"
                                                               }); 
              createState(DP+'.Nummer_'+i+'.Titel', '', { name: "Titel der Warnung",
                                                          type: "string",
                                                          role: "state"
                                                       });
              createState(DP+'.Nummer_'+i+'.Link', '', { name: "Link zur Meldung",
                                                          type: "string",
                                                          role: "state"
                                                       });
              createState(DP+'.Nummer_'+i+'.Datum', '', { name: "Datum der Meldung",
                                                          type: "string",
                                                          role: "state"
                                                       });
              createState(DP+'.Nummer_'+i+'.Produktbild', '', { name: "Produktbild zur Warnung",
                                                          type: "string",
                                                          role: "state"
                                                       });
              createState(DP+'.Nummer_'+i+'.Produktart', '', { name: "Produktart zur Warnung",
                                                          type: "string",
                                                          role: "state"
                                                       });
              createState(DP+'.Nummer_'+i+'.Grund', '', { name: "Grund der Warnung",
                                                          type: "string",
                                                          role: "state"
                                                       });
              createState(DP+'.Nummer_'+i+'.Hersteller', '', { name: "Hersteller",
                                                          type: "string",
                                                          role: "state"
                                                       });
      		createState(DP+'.Nummer_'+i+'.Bundeslaender', '', { name: "Bundeslaender",
                                                          type: "string",
                                                          role: "state"
                                                       });										 
      
              
          }
          await Sleep(5000);
      }
      
      posted in Praktische Anwendungen (Showcase)
      DasIch83
      DasIch83
    • RE: contrib-amazon-echo: Farbkonvertierung?

      @hc-yami Hab ich doch schon 😜
      Aber irgendwie verstehe ich die Logik dahinter nicht.

      Farbe wird nach dem Flow ober sauber geändert. Aber wenn ich Alexa sage schalte die Lampen (als Gruppe den Datenpunkt abgegriffen) auf weiß oder warmweiß bleibt die Farbe wie sie vorher eingestellt war.

      Muss ich da an den Werten noch spielen? Beim Datenpunkt sind von 1 - 6000 möglich.

      posted in Node-Red
      DasIch83
      DasIch83
    • RE: contrib-amazon-echo: Farbkonvertierung?

      @vikk88 Hast du das mit dem Warmweiß bereits realisiert?
      Bin seit gestern Abend in dem Thema Alexa mit Node Red und soweit (An/Aus, Dimmen und Farbe) läuft auch alles.
      Momentan stehe ich nur auf dem Schlauch was das Thema ct Werte angeht.
      Wenn du oder jemand da einen Denkanstoß für mich hätte, wäre ich sehr Dankbar dafür 🙂

      posted in Node-Red
      DasIch83
      DasIch83
    • RE: Test Adapter mihome-vacuum 3.8.x

      @dirkhe Nabend,
      also ich hab mir das jetzt mal alles etwas angeschaut und komme leider mit meinem Basiswissen nicht weiter.
      Allerdings wird aktuell ein weiterer Adapter für die ganzen Xiaomi Geräte entwickelt.
      Ich habe dort auch einmal mein Gerät zum testen angeboten und vermute ganz stark, dass der neue Adapter diesen hier ablösen könnte, da dort ein Vielfaches mehr an Geräten unterstützt werden kann.
      Eventuell könntest du dich auch mit @tombox zusammen tun um einen "Ultimativen Xiaomi Adapter" zu generieren.
      Hier der Link: https://forum.iobroker.net/topic/59636/test-adapter-mihome-cloud/75

      BG
      David

      posted in Tester
      DasIch83
      DasIch83
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo