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.
    • R
      ratte-rizzo last edited by ratte-rizzo

      Moin

      Ich habe ein Problem mit dem Luftdaten-Adapter. Starte ich den neu, läuft alles super für ein paar Stunden. Und im Laufe der Zeit kommt dann immer ein Timeout-Fehler, obwohl die Rohdaten in der JSON Datei aktuell und auch erreichbar sind.

      luftdaten.1	2020-06-18 07:45:18.785	info	(23036) Terminated (NO_ERROR): Without reason
      luftdaten.1	2020-06-18 07:45:13.341	warn	(23036) Error: ESOCKETTIMEDOUT
      luftdaten.1	2020-06-18 07:45:08.755	info	(23036) starting. Version 0.0.15 in /opt/iobroker/node_modules/iobroker.luftdaten, node: v10.20.1, js-controller: 3.1.4
      luftdaten.1	2020-06-18 07:30:18.821	info	(9728) Terminated (NO_ERROR): Without reason
      luftdaten.1	2020-06-18 07:30:13.378	warn	(9728) Error: ESOCKETTIMEDOUT
      luftdaten.1	2020-06-18 07:30:08.801	info	(9728) starting. Version 0.0.15 in /opt/iobroker/node_modules/iobroker.luftdaten, node: v10.20.1, js-controller: 3.1.4
      luftdaten.1	2020-06-18 07:15:19.026	info	(29175) Terminated (NO_ERROR): Without reason
      luftdaten.1	2020-06-18 07:15:13.588	warn	(29175) Error: ESOCKETTIMEDOUT
      luftdaten.1	2020-06-18 07:15:09.006	info	(29175) starting. Version 0.0.15 in /opt/iobroker/node_modules/iobroker.luftdaten, node: v10.20.1, js-controller: 3.1.4
      

      Hat jemand eine Idee woran das liegt?
      Dank & Gruß
      Daniel

      Systemdata Bitte Ausfüllen
      Hardwaresystem: NUCi3
      Arbeitsspeicher: 8GB
      Festplattenart: SSD
      Betriebssystem: Ubuntu
      Node-Version: 10.20.1
      Nodejs-Version: 10.20.1
      NPM-Version: 6.14.4
      Installationsart: Skript
      Image genutzt: Nein
      Ort/Name der Imagedatei: Link
      1 Reply Last reply Reply Quote 0
      • 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

                            956
                            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