Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. Netatmo Crawler Durchschnittswerte errechnen [Script]

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    5
    1
    66

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.8k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    756

Netatmo Crawler Durchschnittswerte errechnen [Script]

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
netatmojavascriptwetterweatherscriptaveragedurchschnitt
1 Beiträge 1 Kommentatoren 189 Aufrufe
  • Ä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.
  • L Offline
    L Offline
    loverz
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    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!

    Folgende Einstellungen sind möglich:
    -Zeile 2: Hier kann man den gesuchten Wert einstellen wie z.B. temperature, oder humidity.

    -Zeile 3: Hier kann ein Datenpunkt angegeben werden, in den der errechnete Durchschnittswert geschrieben wird.

    -Zeile 4: Hier kommt die Einheit rein.

    -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].

    -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".

    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.

    Freue mich über euer Feedback!

    Hier das Script:

    //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<arrVal.length;i++){
            diff=jetzt-arrUpdate[i];
            if(diff < maxDelay * 60 * 1000 && 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<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
     
     
     
     
    
    1 Antwort Letzte Antwort
    0

    Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

    Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

    Mit deinem Input könnte dieser Beitrag noch besser werden 💗

    Registrieren Anmelden
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate
    FAQ Cloud / IOT
    HowTo: Node.js-Update
    HowTo: Backup/Restore
    Downloads
    BLOG

    583

    Online

    32.9k

    Benutzer

    83.0k

    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