Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. [gelöst] Luftdaten-Adapter mit Timeout

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Luftdaten-Adapter mit Timeout

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

      Kann mich da nur anschließen. Seitdem ich mein System auf die aktuellen Versionen gebracht habe, bekomme ich auch nur noch die folgende Meldung :

      020-08-15 17:39:11.013	warn	(3844) Error: ESOCKETTIMEDOUT
      

      Habe mal versucht, die Daten direkt auszulesen, da bekomme ich auch den Fehler obwohl die WebSite sofort antwortet:

          var url = 'https://data.sensor.community/airrohr/v1/sensor/4106/';
          log(url,'info');
          request(url, function(err, stat, body) {
              if(err) console.warn('Error: ' + err);
              else if(body) {
                  log('*** READ ***',LogLevel);
                  var sensor = JSON.parse(body);
              }    
      
      

      Scheint ein generelles Node.js-Problem zu sein und damit bin ich mit meinem Latein am Ende 😞

      Gruß, Ralf

      Thomas Braun 1 Reply Last reply Reply Quote 0
      • Thomas Braun
        Thomas Braun Most Active @RK62 last edited by Thomas Braun

        @RK62 @ratte-rizzo
        node ist aber schön sauber installiert?

        lsb_release -a && whoami && which nodejs && nodejs -v && which node && node -v && which npm && npm -v && apt policy nodejs
        
        RK62 R 2 Replies Last reply Reply Quote 0
        • RK62
          RK62 @Thomas Braun last edited by

          @Thomas-Braun Davon gehe ich aus. Ich habe das aktuelle Docker-Image von Buanet laufen. Andere Websites werden auch ohne jegliche Probleme ausgelesen. Hat sich da ggf. was im Securityumfeld / Zertifikaten getan dass die Website ggf. nicht mehr ausgelesen werden kann?

          root@iobroker:/opt/iobroker# lsb_release -a && whoami && which nodejs && nodejs -v && which node && node -v && which npm && npm -v && apt policy nodejs
          No LSB modules are available.
          Distributor ID: Debian
          Description:    Debian GNU/Linux 10 (buster)
          Release:        10
          Codename:       buster
          root
          /usr/bin/nodejs
          v12.18.3
          /usr/bin/node
          v12.18.3
          /usr/bin/npm
          sudo: Hostname iobroker kann nicht aufgelöst werden: Der Name oder der Dienst ist nicht bekannt
          6.14.6
          nodejs:
            Installiert:           12.18.3-1nodesource1
            Installationskandidat: 12.18.3-1nodesource1
            Versionstabelle:
           *** 12.18.3-1nodesource1 100
                  100 /var/lib/dpkg/status
          
          1 Reply Last reply Reply Quote 0
          • R
            ratte-rizzo @Thomas Braun last edited by

            @Thomas-Braun bei mir ist auch alles sauber (außer, dass ich auf v10 laufe und nicht v12)

            RK62 1 Reply Last reply Reply Quote 0
            • RK62
              RK62 @ratte-rizzo last edited by RK62

              zur Info, Habe da einen Issue eröffnet:
              https://github.com/klein0r/ioBroker.luftdaten/issues/44

              Übrigens lese ich die Werte jetzt mit dem Parser und einem kleinen Javascript aus. Bei Interesse melden.

              Gruß Ralf

              RK62 created this issue in klein0r/ioBroker.luftdaten

              closed Werte werden nicht gelesen (ESOCKETTIMEDOUT) #44

              SpikeNbg 1 Reply Last reply Reply Quote 0
              • SpikeNbg
                SpikeNbg @RK62 last edited by

                @rk62 Hi Ralf!
                Hier auch Ralf 🙂

                Ich wollte dich fragen, ob du mir dein Script zum Luftdaten Adapter Problem mit den Timeouts senden könntest bzw. hier rein stellen? Achja, evtl. kannst du auch noch den Code oder einen Screenshot für den Parser mitschicken!

                Besten Dank! und Grüße Ralf

                RK62 1 Reply Last reply Reply Quote 0
                • RK62
                  RK62 @SpikeNbg last edited by

                  @spikenbg Anbei meine Lösung via Parser & Script.
                  Bin mir aber nicht sicher ob das noch notwendig ist, der Luftdaten-Adapter wurde ja mittlerweile renoviert.

                  Gruß, Ralf

                  EINSTELLUNG PARSER

                  2021-06-12 18_52_27-ioBroker-ESK01.png

                  2021-06-13 09_32_13-ioBroker-ESK01.png

                  SCRIPT FÜR AUSWERTUNG

                  /*  =====================================================================
                      Ermittelt die aktuellen Luftdaten 
                      15.08.2020 R.Krüger --- 
                      14.03.2021 R.Krüger --- Luftqualitätsbewertung aufgenommen
                      ===================================================================== */
                  
                  const jsH           = 'esk.Luftdaten'; 
                  const LogLevel      = 'info';
                  const ParserState   = 'parser.0.Luftdaten';
                  
                  // Benötigte States anlegen
                  createState(jsH+'.SDS_P1',   { name: 'SDS_P1',        role: 'value.ppm', type: 'number', unit: "µg/m³", write: false});
                  createState(jsH+'.SDS_P2',   { name: 'SDS_P2',        role: 'value.ppm', type: 'number', unit: "µg/m³", write: false});
                  createState(jsH+'.Station',  { name: 'StationsID',    role: 'Info',      type: 'number', write: false});
                  createState(jsH+'.TimeStamp',{ name: 'TimeStamp',     role: 'Timestamp', type: 'string', write: false});
                  createState(jsH+'.Qualität', { name: 'Luft-Qualität', role: 'esk.value', type: 'string', write: false});
                  
                  
                  // Luftinfo JSON aus Parser auslesen
                  function GetLuftInfo() {
                  // ======================================================================================    
                      var Luftdaten = getState(ParserState).val;
                      var j = JSON.parse(Luftdaten);
                      
                      // Station ermitteln
                      var l = j[0].sensor.id;
                      setState(jsH+'.Station', String(l));
                      
                      // Zeit ermitteln
                      let d0  = esk_convertUTCDateToLocalDate(new Date(j[0].timestamp)); 
                      var d01 = esk_formatdate(d0);
                      setState(jsH+'.TimeStamp', d01);
                      l += '|'+j[0].timestamp+'|'+d01;
                              
                      // Werte ermitteln
                      for (var i = 0; i <= 1; i++) {
                      //  log('Value: '+  j[0].sensordatavalues[i].value_type+'='+j[0].sensordatavalues[i].value, LogLevel);
                          l += '|'+ j[0].sensordatavalues[i].value_type+'='+j[0].sensordatavalues[i].value;
                          switch (j[0].sensordatavalues[i].value_type) {
                          case 'P1':
                              var vP1 = parseFloat(j[0].sensordatavalues[i].value);
                              setState(jsH+'.SDS_P1', vP1);
                              break;
                          case 'P2':
                              var vP2 = parseFloat(j[0].sensordatavalues[i].value);
                              setState(jsH+'.SDS_P2', vP2);
                              break;
                          }
                      }
                  
                      // Qualität bewerten
                      if      (vP1 < 10 && vP2 < 10)  var vLQ = 'top'
                      else if (vP1 < 30 && vP2 < 20)      vLQ = 'gut'
                      else if (vP1 < 50 && vP2 < 30)      vLQ = 'mittel'
                      else                                vLQ = 'schlecht';
                      setState(jsH+'.Qualität', vLQ);
                      l += '|'+vLQ;
                      log(l, LogLevel)
                  // ======================================================================================    
                  }
                  
                  // Umrechnung  UTC-Zeit auf lokale Zeit
                  function esk_convertUTCDateToLocalDate(pDate, pFormat = 'DD.MM.YY hh:mm') {
                  //  ---------------------------------------------------------------------      	
                      var newDate = new Date(pDate.getTime() + pDate.getTimezoneOffset()*60*1000);
                      var offset  = pDate.getTimezoneOffset()/60;
                      var hours   = pDate.getHours();
                      newDate.setHours(hours - offset);
                      return newDate;   
                  //  ---------------------------------------------------------------------      
                  }
                  
                  // Formatieren Datum als String 
                  function esk_formatdate(pDate) {
                  //  ---------------------------------------------------------------------      
                      return     ("0" + pDate.getDate()).slice(-2) + "." 
                               + ("0" +(pDate.getMonth()+1)).slice(-2) + "." 
                               + ("0" + pDate.getFullYear()).slice(-2) + " " 
                               + ("0" + pDate.getHours()).slice(-2) + ":" 
                               + ("0" + pDate.getMinutes()).slice(-2);
                  //  ---------------------------------------------------------------------      
                  }
                  
                  // Einmal sofort ausführen 
                  GetLuftInfo();                                       
                  
                  // Bei jeder Parser-Aktualisierung ausführen
                  on({id: ParserState, change: "any"}, function (obj) {
                      GetLuftInfo();                                  
                  });
                  
                  SpikeNbg S 2 Replies Last reply Reply Quote 0
                  • SpikeNbg
                    SpikeNbg @RK62 last edited by

                    @rk62 Ui, Danke dir! Hab es erst jetzt gerade gelesen.. Bau ich gleich um!

                    Beste Grüße Ralf

                    1 Reply Last reply Reply Quote 0
                    • S
                      StefanH 0 @RK62 last edited by

                      Bei mir kommt immer noch sporadisch diese Fehlermeldung

                      2021-11-15 19:40:16.719	error	timeout of 10000ms exceeded
                      

                      obwohl ich die aktuelle Version des Adapters 1.0.3 einsetze.

                      R 1 Reply Last reply Reply Quote 0
                      • R
                        ratte-rizzo @StefanH 0 last edited by

                        Moin @stefanh-0

                        Also das ist meiner Interpretation nach ganz normal und kann vorkommen, wenn der Sensor nur ein schwaches WLAN Signal empfängt. Ist bei mir häufig so.

                        In einer vorherigen Version des Adapter hat sich der Adapter jedoch aufgehängt und konnte nach dem Timeout nicht erneut gestartet werden, war also bis zur manuellen de- und reaktivierung komplett lahmgelegt. Das letzte Update hat das behoben.

                        Die Fehlermeldung gab es vorher auch schon und jetzt immer noch. Und sie erscheint mir sinnvoll.

                        Grüße
                        Daniel

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          StefanH 0 @ratte-rizzo last edited by

                          Moin Stefan-0,

                          danke für deine Infos und dass ich nun weiss das es kein Bug sondern ein Feature ist.

                          Ich frage mich natürlich, was die Meldung mir sagen soll und was ich tun könnte.

                          Eine Meldung in Dauerschleife immer wieder auszugeben, mach meines Erachtens nicht wirklich Sinn.

                          Wäre schön, wenn der User in der Adapter-Config selbst entscheiden könnte, ob er diese Meldung auf Dauer haben will. Ansonsten läuft man Gefahr, wenn dies alle Adapter so machen würden, dass man irgendwann bei den Fehlermeldungen den Überblick verliert. Ich persöhnlich versuche mein Log eigentlich möglichst immer sauber zu halten.

                          Grüße Stefan

                          1 Reply Last reply Reply Quote 1
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          1.0k
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          luftdaten timeout
                          5
                          12
                          800
                          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