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. Tester
  4. Beta-Test Android App ioGo 2.1.x

NEWS

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

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

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

Beta-Test Android App ioGo 2.1.x

Geplant Angeheftet Gesperrt Verschoben Tester
iogoandroidgeofencetestbeta
272 Beiträge 10 Kommentatoren 28.8k Aufrufe 7 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.
  • crunchipC crunchip

    @sigi234 weiss du zufällig, ob an dem script was geändert wurde?

    sigi234S Online
    sigi234S Online
    sigi234
    Forum Testing Most Active
    schrieb am zuletzt editiert von sigi234
    #63

    @crunchip sagte in Beta-Test Android App ioGo 2.1.x:

    @sigi234 weiss du zufällig, ob an dem script was geändert wurde?

    Nö, ID Richtig? Gib dir mal meines was geht. WARNCELLID ändern

    var debuglevel = 1;
    var debugchannel = 'debug';
    
    function dwmlog( message, level, channel) {
        if (typeof channel === 'undefined') {
            channel = debugchannel;
        }
        if ( typeof level === 'undefined')
        {
            level = debuglevel;
        }
        if ( debuglevel >= level ) {
            log (message, channel );
        }
    }
    
    var AdapterId = "javascript."+instance;
    var ChannelId = "UWZ";
    
    var forceInitStates = false;
    var numOfWarnings = 7;
    
    var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
    
    
    /********************* Hier die Warnzellen-Id's eintragen *****************************/
    var warncellid = ['xxxxxxxxx'];
    /**************************************************************************************/
    
    
    var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
    
    function createStates(n){
        var AreaChannelID = null;
        
        for (var j=0; j<warncellid.length; j++) {
            AreaChannelId=ChannelId+"."+warncellid[j];        
            for (var i=0; i<n; i++) {
                createState(AreaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                createState(AreaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                createState(AreaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                createState(AreaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                createState(AreaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                createState(AreaChannelId+".warning."+i+".severity",0,forceInitStates,{type: 'number'});
                createState(AreaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                createState(AreaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                createState(AreaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                createState(AreaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                createState(AreaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
            }
        }
    }
    
    function getUWZLevel (warnName){
        var result = -1; // -1 is an error!
        var alert = warnName.split("_");
        var colors = ["green","darkgreen","yellow","orange","red","violet"];
        
        if (alert[0]=="notice") { result = 1; }
        else if (alert[1] == "forewarn") { result = 2; }
        else {
            result = colors.indexOf(alert[2]);
        }
        return result;
    }
    
    function getUWZUrgency (warnName){
        var result = 0;
        
        var alert = warnName.split("_");
        if (alert[1] == "forewarn") { 
            result = 1; 
        }
        else {
            result = 2; // immediate;
        }
        return result;
    }
    
    function getLevelColor(uwzLevel) {
        var uwzColor = [
            0x00ff00, // 0 - Grün
            0x009b00, // 1 - Dunkelgrün
            0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
            0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
            0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
            0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
        ];
        if (uwzLevel>=0 && uwzLevel<=5)
            return uwzColor[uwzLevel];
        else
            return 0;
    }
    
    function createHTMLShort(w){
        var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
        
        var theData = JSON.parse(w.object);
        
        html += '<h3>';
        if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
        html += UWZTypesArray[w.type];
        html +="</h3>";
        html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
        html += '<p>'+w.ShortText+'</p>';
        html += "</div>";
        return html;
    }
    
    function createHTMLLong(w){
        var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
        
        var theData = JSON.parse(w.object);
        
        html += '<h3>';
        if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
        html += UWZTypesArray[w.type];
        html +="</h3>";
        html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
        html += '<p>'+w.LongText+'</p>';
        html += "</div>";
        return html;    
    }
    
    function processResultEntry(w) {
        this.object = JSON.stringify(w);
    
        this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
        this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
        
        // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
        // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
        
        this.LongText = w.payload.translationsLongText.DE;
        this.ShortText = w.payload.translationsShortText.DE;
        
        this.severity = w.severity;
        this.type = w.type;
        this.uwzLevel = getUWZLevel(w.payload.levelName);
        this.uwzUrgency = getUWZUrgency(w.payload.levelName);
        this.uwzColor = getLevelColor(this.uwzLevel);
        var x = this;
        this.HTMLShort = createHTMLShort(x);
        this.HTMLLong  = createHTMLLong(x);
    }
    
    function processData(Area,data) {
        if (!data) {
           return;
        }
        var AreaChannelId=ChannelId+"."+Area;
        
        var thedata = JSON.parse(data);
        var warnings= [];
        
        if (thedata.results.length>0) {
            for (i=0; i<thedata.results.length; i++) {
                warnings.push(new processResultEntry(thedata.results[i]));
            }
        }
        
        warnings.sort(function(a,b){
            var asort = a.severity; 
            var bsort = b.severity;
            
            return bsort-asort;
        });
        
        
        dwmlog(JSON.stringify(warnings));
        
        for (i=0; i<numOfWarnings; i++) {
            if (i<warnings.length) {
                setState(AreaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                setState(AreaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                setState(AreaChannelId+".warning."+i+".object",warnings[i].object);
                setState(AreaChannelId+".warning."+i+".begin",warnings[i].begin);
                setState(AreaChannelId+".warning."+i+".end",warnings[i].end);
                setState(AreaChannelId+".warning."+i+".severity",warnings[i].severity);
                setState(AreaChannelId+".warning."+i+".type",warnings[i].type);
                setState(AreaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                setState(AreaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                setState(AreaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                setState(AreaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
            } else {
                setState(AreaChannelId+".warning."+i+".LongText","");
                setState(AreaChannelId+".warning."+i+".ShortText","");
                setState(AreaChannelId+".warning."+i+".object","{}");
                setState(AreaChannelId+".warning."+i+".begin","");
                setState(AreaChannelId+".warning."+i+".end","");
                setState(AreaChannelId+".warning."+i+".severity",0);
                setState(AreaChannelId+".warning."+i+".type",0);
                setState(AreaChannelId+".warning."+i+".uwzLevel",0);
                setState(AreaChannelId+".warning."+i+".uwzColor",0);
                setState(AreaChannelId+".warning."+i+".HTMLShort","");
                setState(AreaChannelId+".warning."+i+".HTMLLong","");
          }
        }
    }
    
    function getAreaFromURI(uri) {
        var searchstr = "&areaID=";
        var n = uri.search(searchstr);
        var result = uri.slice(n+searchstr.length,uri.length);
        return result;
    }
    
    createStates(numOfWarnings);
    // processData(jsond2);
    
    var request = require('request');
    schedule ("* * * * *", function(){
        for (var i=0; i<warncellid.length; i++) {
                request({  
                    uri: url.replace("XXXAREAXXX",warncellid[i]),
                    method: "GET",
                    timeout: 10000,
                    followRedirect: true,
                    maxRedirects: 10
                }, function(error, response, body) {
                    // dwmlog("UWZ Error" + error,2);
                    // dwmlog("UWZ Response: " + JSON.stringify(response),4);
                    dwmlog("AREA: "+getAreaFromURI(response.request.uri.href),4);
                    dwmlog("UWZ Body: " + body,4);
                    if (response.statusCode == 200) {
                        processData(getAreaFromURI(response.request.uri.href),body);
                    }
                });    
        }
    });
    
    

    Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
    Immer Daten sichern!

    crunchipC 2 Antworten Letzte Antwort
    1
    • sigi234S sigi234

      @crunchip sagte in Beta-Test Android App ioGo 2.1.x:

      @sigi234 weiss du zufällig, ob an dem script was geändert wurde?

      Nö, ID Richtig? Gib dir mal meines was geht. WARNCELLID ändern

      var debuglevel = 1;
      var debugchannel = 'debug';
      
      function dwmlog( message, level, channel) {
          if (typeof channel === 'undefined') {
              channel = debugchannel;
          }
          if ( typeof level === 'undefined')
          {
              level = debuglevel;
          }
          if ( debuglevel >= level ) {
              log (message, channel );
          }
      }
      
      var AdapterId = "javascript."+instance;
      var ChannelId = "UWZ";
      
      var forceInitStates = false;
      var numOfWarnings = 7;
      
      var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
      
      
      /********************* Hier die Warnzellen-Id's eintragen *****************************/
      var warncellid = ['xxxxxxxxx'];
      /**************************************************************************************/
      
      
      var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
      
      function createStates(n){
          var AreaChannelID = null;
          
          for (var j=0; j<warncellid.length; j++) {
              AreaChannelId=ChannelId+"."+warncellid[j];        
              for (var i=0; i<n; i++) {
                  createState(AreaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                  createState(AreaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                  createState(AreaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                  createState(AreaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                  createState(AreaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                  createState(AreaChannelId+".warning."+i+".severity",0,forceInitStates,{type: 'number'});
                  createState(AreaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                  createState(AreaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                  createState(AreaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                  createState(AreaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                  createState(AreaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
              }
          }
      }
      
      function getUWZLevel (warnName){
          var result = -1; // -1 is an error!
          var alert = warnName.split("_");
          var colors = ["green","darkgreen","yellow","orange","red","violet"];
          
          if (alert[0]=="notice") { result = 1; }
          else if (alert[1] == "forewarn") { result = 2; }
          else {
              result = colors.indexOf(alert[2]);
          }
          return result;
      }
      
      function getUWZUrgency (warnName){
          var result = 0;
          
          var alert = warnName.split("_");
          if (alert[1] == "forewarn") { 
              result = 1; 
          }
          else {
              result = 2; // immediate;
          }
          return result;
      }
      
      function getLevelColor(uwzLevel) {
          var uwzColor = [
              0x00ff00, // 0 - Grün
              0x009b00, // 1 - Dunkelgrün
              0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
              0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
              0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
              0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
          ];
          if (uwzLevel>=0 && uwzLevel<=5)
              return uwzColor[uwzLevel];
          else
              return 0;
      }
      
      function createHTMLShort(w){
          var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
          
          var theData = JSON.parse(w.object);
          
          html += '<h3>';
          if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
          html += UWZTypesArray[w.type];
          html +="</h3>";
          html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
          html += '<p>'+w.ShortText+'</p>';
          html += "</div>";
          return html;
      }
      
      function createHTMLLong(w){
          var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
          
          var theData = JSON.parse(w.object);
          
          html += '<h3>';
          if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
          html += UWZTypesArray[w.type];
          html +="</h3>";
          html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
          html += '<p>'+w.LongText+'</p>';
          html += "</div>";
          return html;    
      }
      
      function processResultEntry(w) {
          this.object = JSON.stringify(w);
      
          this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
          this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
          
          // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
          // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
          
          this.LongText = w.payload.translationsLongText.DE;
          this.ShortText = w.payload.translationsShortText.DE;
          
          this.severity = w.severity;
          this.type = w.type;
          this.uwzLevel = getUWZLevel(w.payload.levelName);
          this.uwzUrgency = getUWZUrgency(w.payload.levelName);
          this.uwzColor = getLevelColor(this.uwzLevel);
          var x = this;
          this.HTMLShort = createHTMLShort(x);
          this.HTMLLong  = createHTMLLong(x);
      }
      
      function processData(Area,data) {
          if (!data) {
             return;
          }
          var AreaChannelId=ChannelId+"."+Area;
          
          var thedata = JSON.parse(data);
          var warnings= [];
          
          if (thedata.results.length>0) {
              for (i=0; i<thedata.results.length; i++) {
                  warnings.push(new processResultEntry(thedata.results[i]));
              }
          }
          
          warnings.sort(function(a,b){
              var asort = a.severity; 
              var bsort = b.severity;
              
              return bsort-asort;
          });
          
          
          dwmlog(JSON.stringify(warnings));
          
          for (i=0; i<numOfWarnings; i++) {
              if (i<warnings.length) {
                  setState(AreaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                  setState(AreaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                  setState(AreaChannelId+".warning."+i+".object",warnings[i].object);
                  setState(AreaChannelId+".warning."+i+".begin",warnings[i].begin);
                  setState(AreaChannelId+".warning."+i+".end",warnings[i].end);
                  setState(AreaChannelId+".warning."+i+".severity",warnings[i].severity);
                  setState(AreaChannelId+".warning."+i+".type",warnings[i].type);
                  setState(AreaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                  setState(AreaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                  setState(AreaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                  setState(AreaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
              } else {
                  setState(AreaChannelId+".warning."+i+".LongText","");
                  setState(AreaChannelId+".warning."+i+".ShortText","");
                  setState(AreaChannelId+".warning."+i+".object","{}");
                  setState(AreaChannelId+".warning."+i+".begin","");
                  setState(AreaChannelId+".warning."+i+".end","");
                  setState(AreaChannelId+".warning."+i+".severity",0);
                  setState(AreaChannelId+".warning."+i+".type",0);
                  setState(AreaChannelId+".warning."+i+".uwzLevel",0);
                  setState(AreaChannelId+".warning."+i+".uwzColor",0);
                  setState(AreaChannelId+".warning."+i+".HTMLShort","");
                  setState(AreaChannelId+".warning."+i+".HTMLLong","");
            }
          }
      }
      
      function getAreaFromURI(uri) {
          var searchstr = "&areaID=";
          var n = uri.search(searchstr);
          var result = uri.slice(n+searchstr.length,uri.length);
          return result;
      }
      
      createStates(numOfWarnings);
      // processData(jsond2);
      
      var request = require('request');
      schedule ("* * * * *", function(){
          for (var i=0; i<warncellid.length; i++) {
                  request({  
                      uri: url.replace("XXXAREAXXX",warncellid[i]),
                      method: "GET",
                      timeout: 10000,
                      followRedirect: true,
                      maxRedirects: 10
                  }, function(error, response, body) {
                      // dwmlog("UWZ Error" + error,2);
                      // dwmlog("UWZ Response: " + JSON.stringify(response),4);
                      dwmlog("AREA: "+getAreaFromURI(response.request.uri.href),4);
                      dwmlog("UWZ Body: " + body,4);
                      if (response.statusCode == 200) {
                          processData(getAreaFromURI(response.request.uri.href),body);
                      }
                  });    
          }
      });
      
      
      crunchipC Abwesend
      crunchipC Abwesend
      crunchip
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #64

      @sigi234 ja, ist richtig, hab grad den Thread rausgesucht...da hatte ich schon mal die Probleme, deshalb war das auch nicht mehr im gebrauch
      https://forum.iobroker.net/post/270175

      umgestiegen von Proxmox auf Unraid

      1 Antwort Letzte Antwort
      0
      • sigi234S sigi234

        @crunchip sagte in Beta-Test Android App ioGo 2.1.x:

        @sigi234 weiss du zufällig, ob an dem script was geändert wurde?

        Nö, ID Richtig? Gib dir mal meines was geht. WARNCELLID ändern

        var debuglevel = 1;
        var debugchannel = 'debug';
        
        function dwmlog( message, level, channel) {
            if (typeof channel === 'undefined') {
                channel = debugchannel;
            }
            if ( typeof level === 'undefined')
            {
                level = debuglevel;
            }
            if ( debuglevel >= level ) {
                log (message, channel );
            }
        }
        
        var AdapterId = "javascript."+instance;
        var ChannelId = "UWZ";
        
        var forceInitStates = false;
        var numOfWarnings = 7;
        
        var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
        
        
        /********************* Hier die Warnzellen-Id's eintragen *****************************/
        var warncellid = ['xxxxxxxxx'];
        /**************************************************************************************/
        
        
        var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
        
        function createStates(n){
            var AreaChannelID = null;
            
            for (var j=0; j<warncellid.length; j++) {
                AreaChannelId=ChannelId+"."+warncellid[j];        
                for (var i=0; i<n; i++) {
                    createState(AreaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                    createState(AreaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                    createState(AreaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                    createState(AreaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                    createState(AreaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                    createState(AreaChannelId+".warning."+i+".severity",0,forceInitStates,{type: 'number'});
                    createState(AreaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                    createState(AreaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                    createState(AreaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                    createState(AreaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                    createState(AreaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
                }
            }
        }
        
        function getUWZLevel (warnName){
            var result = -1; // -1 is an error!
            var alert = warnName.split("_");
            var colors = ["green","darkgreen","yellow","orange","red","violet"];
            
            if (alert[0]=="notice") { result = 1; }
            else if (alert[1] == "forewarn") { result = 2; }
            else {
                result = colors.indexOf(alert[2]);
            }
            return result;
        }
        
        function getUWZUrgency (warnName){
            var result = 0;
            
            var alert = warnName.split("_");
            if (alert[1] == "forewarn") { 
                result = 1; 
            }
            else {
                result = 2; // immediate;
            }
            return result;
        }
        
        function getLevelColor(uwzLevel) {
            var uwzColor = [
                0x00ff00, // 0 - Grün
                0x009b00, // 1 - Dunkelgrün
                0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
                0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
                0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
                0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
            ];
            if (uwzLevel>=0 && uwzLevel<=5)
                return uwzColor[uwzLevel];
            else
                return 0;
        }
        
        function createHTMLShort(w){
            var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
            
            var theData = JSON.parse(w.object);
            
            html += '<h3>';
            if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
            html += UWZTypesArray[w.type];
            html +="</h3>";
            html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
            html += '<p>'+w.ShortText+'</p>';
            html += "</div>";
            return html;
        }
        
        function createHTMLLong(w){
            var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
            
            var theData = JSON.parse(w.object);
            
            html += '<h3>';
            if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
            html += UWZTypesArray[w.type];
            html +="</h3>";
            html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
            html += '<p>'+w.LongText+'</p>';
            html += "</div>";
            return html;    
        }
        
        function processResultEntry(w) {
            this.object = JSON.stringify(w);
        
            this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
            this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
            
            // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
            // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
            
            this.LongText = w.payload.translationsLongText.DE;
            this.ShortText = w.payload.translationsShortText.DE;
            
            this.severity = w.severity;
            this.type = w.type;
            this.uwzLevel = getUWZLevel(w.payload.levelName);
            this.uwzUrgency = getUWZUrgency(w.payload.levelName);
            this.uwzColor = getLevelColor(this.uwzLevel);
            var x = this;
            this.HTMLShort = createHTMLShort(x);
            this.HTMLLong  = createHTMLLong(x);
        }
        
        function processData(Area,data) {
            if (!data) {
               return;
            }
            var AreaChannelId=ChannelId+"."+Area;
            
            var thedata = JSON.parse(data);
            var warnings= [];
            
            if (thedata.results.length>0) {
                for (i=0; i<thedata.results.length; i++) {
                    warnings.push(new processResultEntry(thedata.results[i]));
                }
            }
            
            warnings.sort(function(a,b){
                var asort = a.severity; 
                var bsort = b.severity;
                
                return bsort-asort;
            });
            
            
            dwmlog(JSON.stringify(warnings));
            
            for (i=0; i<numOfWarnings; i++) {
                if (i<warnings.length) {
                    setState(AreaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                    setState(AreaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                    setState(AreaChannelId+".warning."+i+".object",warnings[i].object);
                    setState(AreaChannelId+".warning."+i+".begin",warnings[i].begin);
                    setState(AreaChannelId+".warning."+i+".end",warnings[i].end);
                    setState(AreaChannelId+".warning."+i+".severity",warnings[i].severity);
                    setState(AreaChannelId+".warning."+i+".type",warnings[i].type);
                    setState(AreaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                    setState(AreaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                    setState(AreaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                    setState(AreaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
                } else {
                    setState(AreaChannelId+".warning."+i+".LongText","");
                    setState(AreaChannelId+".warning."+i+".ShortText","");
                    setState(AreaChannelId+".warning."+i+".object","{}");
                    setState(AreaChannelId+".warning."+i+".begin","");
                    setState(AreaChannelId+".warning."+i+".end","");
                    setState(AreaChannelId+".warning."+i+".severity",0);
                    setState(AreaChannelId+".warning."+i+".type",0);
                    setState(AreaChannelId+".warning."+i+".uwzLevel",0);
                    setState(AreaChannelId+".warning."+i+".uwzColor",0);
                    setState(AreaChannelId+".warning."+i+".HTMLShort","");
                    setState(AreaChannelId+".warning."+i+".HTMLLong","");
              }
            }
        }
        
        function getAreaFromURI(uri) {
            var searchstr = "&areaID=";
            var n = uri.search(searchstr);
            var result = uri.slice(n+searchstr.length,uri.length);
            return result;
        }
        
        createStates(numOfWarnings);
        // processData(jsond2);
        
        var request = require('request');
        schedule ("* * * * *", function(){
            for (var i=0; i<warncellid.length; i++) {
                    request({  
                        uri: url.replace("XXXAREAXXX",warncellid[i]),
                        method: "GET",
                        timeout: 10000,
                        followRedirect: true,
                        maxRedirects: 10
                    }, function(error, response, body) {
                        // dwmlog("UWZ Error" + error,2);
                        // dwmlog("UWZ Response: " + JSON.stringify(response),4);
                        dwmlog("AREA: "+getAreaFromURI(response.request.uri.href),4);
                        dwmlog("UWZ Body: " + body,4);
                        if (response.statusCode == 200) {
                            processData(getAreaFromURI(response.request.uri.href),body);
                        }
                    });    
            }
        });
        
        
        crunchipC Abwesend
        crunchipC Abwesend
        crunchip
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #65

        @sigi234 jetzt kommt wieder was :+1:
        scheinbar ein Fehler bei mir im script gewesen
        ich teste gleich mal, wegen pushbenachrichtigung

        umgestiegen von Proxmox auf Unraid

        1 Antwort Letzte Antwort
        0
        • sigi234S sigi234

          @crunchip sagte in Beta-Test Android App ioGo 2.1.x:

          @sigi234 ja kommt doch

          Nein, vielleicht weil es aus einen Skript kommt?

          Screenshot (1625)_LI.jpg

          crunchipC Abwesend
          crunchipC Abwesend
          crunchip
          Forum Testing Most Active
          schrieb am zuletzt editiert von crunchip
          #66

          @sigi234 also, als Push Benachrichtigung klappt es nicht.
          eingetragen bei Funktion, hab ich die Meldung drin, jedoch unschön, wegen dem "zweizeiler"
          Screenshot_20200210-004645_iogo.jpg

          umgestiegen von Proxmox auf Unraid

          sigi234S ? 3 Antworten Letzte Antwort
          0
          • crunchipC crunchip

            @sigi234 also, als Push Benachrichtigung klappt es nicht.
            eingetragen bei Funktion, hab ich die Meldung drin, jedoch unschön, wegen dem "zweizeiler"
            Screenshot_20200210-004645_iogo.jpg

            sigi234S Online
            sigi234S Online
            sigi234
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #67

            @crunchip

            Jupp bei mir auch.

            Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Immer Daten sichern!

            1 Antwort Letzte Antwort
            0
            • crunchipC crunchip

              @sigi234 also, als Push Benachrichtigung klappt es nicht.
              eingetragen bei Funktion, hab ich die Meldung drin, jedoch unschön, wegen dem "zweizeiler"
              Screenshot_20200210-004645_iogo.jpg

              ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #68

              @crunchip @sigi234 ich kann euch nicht ganz folgen. Klappen die Push Messages oder gibt es da noch Fragen?

              E 1 Antwort Letzte Antwort
              0
              • ? Ein ehemaliger Benutzer

                @crunchip @sigi234 ich kann euch nicht ganz folgen. Klappen die Push Messages oder gibt es da noch Fragen?

                E Offline
                E Offline
                e-s
                schrieb am zuletzt editiert von
                #69

                @nis
                Ich glaube die meinen das selbe wie ich. wenn man einen langen Text in einem dp hat, dann wird dieser als massege super angezeigt.
                Als dp in Funktionen oder Räume aber falsch und nicht vollständig.

                crunchipC 1 Antwort Letzte Antwort
                0
                • E e-s

                  @nis
                  Ich glaube die meinen das selbe wie ich. wenn man einen langen Text in einem dp hat, dann wird dieser als massege super angezeigt.
                  Als dp in Funktionen oder Räume aber falsch und nicht vollständig.

                  crunchipC Abwesend
                  crunchipC Abwesend
                  crunchip
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von crunchip
                  #70

                  @e-s @nis ein DP mit Text, wird abgeschnitten angezeigt, wenn man den DP z.b. einer Funktion zu weißt.
                  Wenn ich aber einen DP via Push einrichte. Funktioniert es eben nicht mit allen DP.
                  Als Beispiel gestern, die Wettermeldung vom DWD Adapter als push funktioniert.
                  Wenn man aber Z.b die Wettermeldung, welche über das UWZ- Script erzeugt wird, als Push einrichte, funktioniert es nicht.
                  In beiden Fällen ein String vom Typ state

                  umgestiegen von Proxmox auf Unraid

                  ? 1 Antwort Letzte Antwort
                  0
                  • crunchipC crunchip

                    @e-s @nis ein DP mit Text, wird abgeschnitten angezeigt, wenn man den DP z.b. einer Funktion zu weißt.
                    Wenn ich aber einen DP via Push einrichte. Funktioniert es eben nicht mit allen DP.
                    Als Beispiel gestern, die Wettermeldung vom DWD Adapter als push funktioniert.
                    Wenn man aber Z.b die Wettermeldung, welche über das UWZ- Script erzeugt wird, als Push einrichte, funktioniert es nicht.
                    In beiden Fällen ein String vom Typ state

                    ? Offline
                    ? Offline
                    Ein ehemaliger Benutzer
                    schrieb am zuletzt editiert von
                    #71

                    @crunchip sagte in Beta-Test Android App ioGo 2.1.x:

                    @e-s @nis ein DP mit Text, wird abgeschnitten angezeigt, wenn man den DP z.b. einer Funktion zu weißt.

                    Verstande, das ist einfach zu viel Text. Ich werde den versuchen automatisch etwas zu kürzen. Und dann per Klick in einem neuen View komplett anzuzeigen.

                    Wenn ich aber einen DP via Push einrichte. Funktioniert es eben nicht mit allen DP.

                    Das verstehe ich noch nicht. Was genau funktioniert nicht? Kommt die Push Message nicht an? Wird etwas falsch angezeigt?

                    crunchipC 1 Antwort Letzte Antwort
                    0
                    • ? Ein ehemaliger Benutzer

                      @crunchip sagte in Beta-Test Android App ioGo 2.1.x:

                      @e-s @nis ein DP mit Text, wird abgeschnitten angezeigt, wenn man den DP z.b. einer Funktion zu weißt.

                      Verstande, das ist einfach zu viel Text. Ich werde den versuchen automatisch etwas zu kürzen. Und dann per Klick in einem neuen View komplett anzuzeigen.

                      Wenn ich aber einen DP via Push einrichte. Funktioniert es eben nicht mit allen DP.

                      Das verstehe ich noch nicht. Was genau funktioniert nicht? Kommt die Push Message nicht an? Wird etwas falsch angezeigt?

                      crunchipC Abwesend
                      crunchipC Abwesend
                      crunchip
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von crunchip
                      #72

                      @nis sagte in Beta-Test Android App ioGo 2.1.x:

                      Was genau funktioniert nicht?

                      das sind die Objekte aus dem UWZ Script, wenn ich eine Push Benachrichtigung einstelle, kommt gar nix.
                      1755d8c8-4684-44f6-b1d4-f1e03a2f3626-image.png
                      mach ich das selbe mit dem DP aus dem DWD Adapter funktioniert es
                      da257a53-2ea2-4477-9ba4-27a8f9a3eefb-image.png

                      umgestiegen von Proxmox auf Unraid

                      ? 1 Antwort Letzte Antwort
                      0
                      • crunchipC crunchip

                        @nis sagte in Beta-Test Android App ioGo 2.1.x:

                        Was genau funktioniert nicht?

                        das sind die Objekte aus dem UWZ Script, wenn ich eine Push Benachrichtigung einstelle, kommt gar nix.
                        1755d8c8-4684-44f6-b1d4-f1e03a2f3626-image.png
                        mach ich das selbe mit dem DP aus dem DWD Adapter funktioniert es
                        da257a53-2ea2-4477-9ba4-27a8f9a3eefb-image.png

                        ? Offline
                        ? Offline
                        Ein ehemaliger Benutzer
                        schrieb am zuletzt editiert von
                        #73

                        @crunchip kann es sein dass bei den DP wo es nicht geht die neuen Werte nicht mit ack=true gesetzt werden? Es werden nur Push Messages versendet, wenn der Wert mit ack=true gesetzt wird.

                        crunchipC 1 Antwort Letzte Antwort
                        0
                        • ? Ein ehemaliger Benutzer

                          @crunchip kann es sein dass bei den DP wo es nicht geht die neuen Werte nicht mit ack=true gesetzt werden? Es werden nur Push Messages versendet, wenn der Wert mit ack=true gesetzt wird.

                          crunchipC Abwesend
                          crunchipC Abwesend
                          crunchip
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von crunchip
                          #74

                          @nis der Tip war richtig, hab auf true gesetzt und sofort kam die Meldung
                          das heisst dann, müsste von seitens script dann angepasst werden?

                          umgestiegen von Proxmox auf Unraid

                          sigi234S ? 2 Antworten Letzte Antwort
                          0
                          • crunchipC crunchip

                            @nis der Tip war richtig, hab auf true gesetzt und sofort kam die Meldung
                            das heisst dann, müsste von seitens script dann angepasst werden?

                            sigi234S Online
                            sigi234S Online
                            sigi234
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #75

                            @crunchip sagte in Beta-Test Android App ioGo 2.1.x:

                            @nis der Tip war richtig, hab auf true gesetzt und sofort kam die Meldung
                            das heisst dann, müsste von seitens script dann angepasst werden?

                            Ja geht bei mir auch, aber nur einmal. Was ist dann der Trigger bzw. wie löse ich ein senden der Meldung aus?

                            Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                            Immer Daten sichern!

                            1 Antwort Letzte Antwort
                            0
                            • crunchipC crunchip

                              @nis der Tip war richtig, hab auf true gesetzt und sofort kam die Meldung
                              das heisst dann, müsste von seitens script dann angepasst werden?

                              ? Offline
                              ? Offline
                              Ein ehemaliger Benutzer
                              schrieb am zuletzt editiert von
                              #76

                              @crunchip ack=false bedeutet es ist ein "Command" was an eine weitere Hardware übertragen werden soll und von dort bestätigt wird mit dem gleichen Wert und ack=true. Daher habe ich die ack=false ausgenommen von den Push Messages.

                              Wenn der Wert von einem Skript gesetzt wird und es niemanden gibt der den Wert nochmal bestätigen soll, dann macht es nur Sinn den Wert gleich mit ack=true zu setzen vom Skript.

                              crunchipC 1 Antwort Letzte Antwort
                              0
                              • ? Ein ehemaliger Benutzer

                                @crunchip ack=false bedeutet es ist ein "Command" was an eine weitere Hardware übertragen werden soll und von dort bestätigt wird mit dem gleichen Wert und ack=true. Daher habe ich die ack=false ausgenommen von den Push Messages.

                                Wenn der Wert von einem Skript gesetzt wird und es niemanden gibt der den Wert nochmal bestätigen soll, dann macht es nur Sinn den Wert gleich mit ack=true zu setzen vom Skript.

                                crunchipC Abwesend
                                crunchipC Abwesend
                                crunchip
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von
                                #77

                                @nis ok, dann weiss ich Bescheid, bei Javascript bin ich leider raus:grin:

                                und Danke nochmal für die Info

                                umgestiegen von Proxmox auf Unraid

                                1 Antwort Letzte Antwort
                                0
                                • crunchipC crunchip

                                  @sigi234 also, als Push Benachrichtigung klappt es nicht.
                                  eingetragen bei Funktion, hab ich die Meldung drin, jedoch unschön, wegen dem "zweizeiler"
                                  Screenshot_20200210-004645_iogo.jpg

                                  ? Offline
                                  ? Offline
                                  Ein ehemaliger Benutzer
                                  schrieb am zuletzt editiert von
                                  #78

                                  @sigi234 @e-s @crunchip @ilovegym @Alex-0

                                  Es ist eine neue Beta Version (2.1.0-beta5) ist unterwegs...

                                  Ein paar Verbesserungen die enthalten sind:

                                  • Anzeige von langen Texten wie z.B. dem Wetterbericht von ioBroker.daswetter
                                  • Layout für Slider angepasst, damit dieser nicht die aktuelle Zahl überlappt
                                  • Layout auf CardStyle umgestellt
                                  ? crunchipC E 3 Antworten Letzte Antwort
                                  3
                                  • ? Ein ehemaliger Benutzer

                                    @sigi234 @e-s @crunchip @ilovegym @Alex-0

                                    Es ist eine neue Beta Version (2.1.0-beta5) ist unterwegs...

                                    Ein paar Verbesserungen die enthalten sind:

                                    • Anzeige von langen Texten wie z.B. dem Wetterbericht von ioBroker.daswetter
                                    • Layout für Slider angepasst, damit dieser nicht die aktuelle Zahl überlappt
                                    • Layout auf CardStyle umgestellt
                                    ? Offline
                                    ? Offline
                                    Ein ehemaliger Benutzer
                                    schrieb am zuletzt editiert von
                                    #79

                                    Ganz vergessen, es wurde auch noch ein Bug behoben bei den Locations.
                                    Nach einem Reboot des Smartphone sind die Überwachungen der Geofence teilweise verloren gegangen, daher wird nun automatisch nach jedem Reboot die gesamte Liste der Geofence neu registriert zur Überwachung

                                    crunchipC 1 Antwort Letzte Antwort
                                    0
                                    • ? Ein ehemaliger Benutzer

                                      Ganz vergessen, es wurde auch noch ein Bug behoben bei den Locations.
                                      Nach einem Reboot des Smartphone sind die Überwachungen der Geofence teilweise verloren gegangen, daher wird nun automatisch nach jedem Reboot die gesamte Liste der Geofence neu registriert zur Überwachung

                                      crunchipC Abwesend
                                      crunchipC Abwesend
                                      crunchip
                                      Forum Testing Most Active
                                      schrieb am zuletzt editiert von
                                      #80

                                      @nis hab übrigens vorhin von unterwegs eine 2. Location angelegt, selbe Koordinaten, mit Radius 101m, wurde sofort in IoBroker mit false angezeigt. Mal sehn ob es wechselt, wenn ich zu hause bin.

                                      umgestiegen von Proxmox auf Unraid

                                      1 Antwort Letzte Antwort
                                      0
                                      • ? Ein ehemaliger Benutzer

                                        @sigi234 @e-s @crunchip @ilovegym @Alex-0

                                        Es ist eine neue Beta Version (2.1.0-beta5) ist unterwegs...

                                        Ein paar Verbesserungen die enthalten sind:

                                        • Anzeige von langen Texten wie z.B. dem Wetterbericht von ioBroker.daswetter
                                        • Layout für Slider angepasst, damit dieser nicht die aktuelle Zahl überlappt
                                        • Layout auf CardStyle umgestellt
                                        crunchipC Abwesend
                                        crunchipC Abwesend
                                        crunchip
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von crunchip
                                        #81

                                        @nis sieht gut aus 👌
                                        Wenn ich in der App auf Hosts klick, wird immer offline angezeigt, erst wenn man einmalig drauf klickt, wird es online. Passiert nach updates.
                                        Die Anzeige mit dem langen Text ist prima, dazu gleich mal eine Frage.
                                        Woran machst du das fest, das es so angezeigt wird?
                                        Hatte schonmal in der Vergangenheit danach gefragt, da ich z.b. mir die Raumnamen der geöffneten Fenster/Türen oder wo noch Licht brennt, anzeigen lasse. Da wäre so eine Anzeige auch super, da aktuell gerade mal 1 oder 2 Räume lesbar sind, je nach Wortlänge eben.
                                        Ansonsten aktuell nichts weiter negatives aufgefallen
                                        So sieht es aktuell aus
                                        Screenshot_20200227-034902_iogo.jpg
                                        Wäre natürlich cool, wenn das auch so wie hier gehen würde.
                                        20200227_035347.jpg

                                        umgestiegen von Proxmox auf Unraid

                                        1 Antwort Letzte Antwort
                                        0
                                        • ? Ein ehemaliger Benutzer

                                          @sigi234 @e-s @crunchip @ilovegym @Alex-0

                                          Es ist eine neue Beta Version (2.1.0-beta5) ist unterwegs...

                                          Ein paar Verbesserungen die enthalten sind:

                                          • Anzeige von langen Texten wie z.B. dem Wetterbericht von ioBroker.daswetter
                                          • Layout für Slider angepasst, damit dieser nicht die aktuelle Zahl überlappt
                                          • Layout auf CardStyle umgestellt
                                          E Offline
                                          E Offline
                                          e-s
                                          schrieb am zuletzt editiert von
                                          #82

                                          @nis
                                          Neue Ansicht sieht top aus, besonders gut gefallen mir die slider.

                                          Habe aber auch das selbe Problem noch mit den langen Texten, wie werden diese erkannt? Brauchst du eine bestimmte Rolle dafür?

                                          ? 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

                                          828

                                          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