<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Netatmo Crawler Durchschnittswerte errechnen [Script]]]></title><description><![CDATA[<p dir="auto">Hallo zusammen,</p>
<p dir="auto">ich bin auf Facebook auf einen netten Herren gestoßen, der mir geholfen hat ein JavaScript zu schreiben, welches Durchschnittswerte für den Netatmo-Crawler-Adapter errechnet. Das möchte ich euch nicht vorenthalten!</p>
<p dir="auto">Folgende Einstellungen sind möglich:<br />
-Zeile 2: Hier kann man den gesuchten Wert einstellen wie z.B. temperature, oder humidity.</p>
<p dir="auto">-Zeile 3: Hier kann ein Datenpunkt angegeben werden, in den der errechnete Durchschnittswert geschrieben wird.</p>
<p dir="auto">-Zeile 4: Hier kommt die Einheit rein.</p>
<p dir="auto">-Zeile 5: Hier können Stationen ausgeklammert werden. Wenn man z.B. 10 Stationen mit dem Adapter "crawlt", jedoch nur die ersten 3 für z.B. die Temperatur verwenden möchte dann tragt man das so ein: [1,1,1,0,0,0,0,0,0,0].</p>
<p dir="auto">-Zeile 6: Hier kann noch eine Zeit in Minuten eingetragen werden, nach welcher der Adapter die ausgewählten Daten ignoriert. Das ist gut, damit alte Werte nicht den Durschnitt "versauen".</p>
<p dir="auto">Ich selbst habe mit JavaScript kaum Erfahrungen und kann daher eher keinen Support bieten, denke aber dennoch, dass das hier der ein oder andere User gebrauchen könnte.</p>
<p dir="auto">Freue mich über euer Feedback!</p>
<p dir="auto">Hier das Script:</p>
<pre><code>//Netatmo Abruf und Durchschnittberechnung (Wert wird nur verwendet wenn aktuell)
var selVal = $('netatmo-crawler.0.stationData.*.temperature');//Pfad zum Messwert der Stationen
var idAvgVal = '0_userdata.0.*Datenpunkt*';//Datenpunkt wo der Durchschnittswert hin gespeichert wird
var unit = "°C";
var arrFilter=[1,1,1,1,1,1,1,1,1,1];//Station manuell deaktivieren: 0=deaktiviert, 1=aktiviert
var maxDelay = 30;//Minuten
//############################## Ab hier nichts mehr ändern ################################
var idAlive = 'system.adapter.netatmo-crawler.0.alive';
var i, ii, j, k, l, jetzt, diff, val, unreachSta, avgVal;
var arrStaName, arrVal, arrUpdate;
 
on({id:idAlive, val:false}, function(obj){
    setTimeout(function(){//Verzögerter Funktionsaufruf um sicher Daten zu haben
        f_getValues();
    },1000);
});
 
f_getValues();
 
function f_getValues(){
    arrVal=[];
    arrUpdate=[];
    arrStaName=[];
    val=[];
    unreachSta=[];
    jetzt = new Date().getTime();
    selVal.each(function (id, i) {
        if(getObject(id).common.name.indexOf("lastUpdated") == -1){//Werte
            ii=Math.floor(i/2);
            arrVal[ii]=getState(id).val;
            arrStaName[ii]=getObject(id).common.name.substring(12);
        }else if(getObject(id).common.name.indexOf("lastUpdated") == 14){//Update
            ii=Math.floor(i/2);
            arrUpdate[ii]=getState(id).val;
        }//end if 
    });//end each
    j=0;
    k=0;
    for(i=0;i&lt;arrVal.length;i++){
        diff=jetzt-arrUpdate[i];
        if(diff &lt; maxDelay * 60 * 1000 &amp;&amp; arrFilter[i] == 1){
            val[j] = arrVal[i];
            j++;
        }else{
            unreachSta[k] = arrStaName[i];
            k++
        }//end if
    }//end for
    log("Gültige Werte: " + val);
    log("Offline Stationen (älter "+ maxDelay +"  Minuten) oder abgewählte Stationen: " + unreachSta);
    avgVal=0;
    for(l=0;l&lt;val.length;l++){
        avgVal += val[l];
    }
    avgVal = Math.round((avgVal / val.length) * 100)/100;
    log("Durchschnittswert aus " + val.length + " Werten = "+ avgVal + unit);
    setState(idAvgVal, avgVal, true);
}//end function
 
 
 
 
</code></pre>
]]></description><link>https://forum.iobroker.net/topic/56212/netatmo-crawler-durchschnittswerte-errechnen-script</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 13:31:02 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/56212.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jul 2022 10:57:33 GMT</pubDate><ttl>60</ttl></channel></rss>