Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. [Linux Shell-Skript] WLAN-Wetterstation

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    209

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

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

[Linux Shell-Skript] WLAN-Wetterstation

[Linux Shell-Skript] WLAN-Wetterstation

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
linuxshell-scriptwetterstationwlan-wetterstation
5.7k Posts 152 Posters 3.8m Views 134 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • NegaleinN Negalein

    @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

    Ad hoc müssten sich die Werte aber einfacher aus bspw. InfluxDB ziehen lassen.

    Influx läuft bei mir bereits. Da könnt ich alle benötigten DP vom Script mal mitschreiben lassen.

    Dann stehts bei mir aber schon an. Da bist für den weiteren Weg du meine Hilfe 😉

    SBorgS Offline
    SBorgS Offline
    SBorg
    Forum Testing Most Active
    wrote on last edited by
    #1222

    @Negalein Ich muss mal schauen was performanter in der Abfrage ist. Habe mal ein kleines JS "zusammen gehämmert" was die Daten per History (hab aber erst gegen Mittag mit dem sammeln begonnen) zieht:
    Bild 1.png
    Macht aktuell nur Min/Max/Durchschnitt und °C über 20°C?

    Mir war schon klar, dass ich es machen "darf" 😇
    Daran liegt es auch nicht, nur ist es direkt über das Script viel zu Ressourcen fressend, dass geht per DB/History und JS performanter (und auch einfacher).
    Dann muss ich mir noch was mit dem Datenmanagement und den Datenpunkten überlegen.

    • Die Tagestemperaturen sollten so bleiben? Ein 31°C-Tag zählt zu >30 und zu >25 und zu >20 (ja, es war ja auch einer über 20/25°).
    • soll(te) das 1x täglich (bspw. Mitternacht) aktualisiert werden? Die Datenmenge wären pro Datenpunkt 86400 / 16 = 5.600 DPs die sonst abgefragt werden müssen. Das sollte man nicht im Minutentakt ausführen ^^

    LG SBorg ( SBorg auf GitHub)
    Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

    NegaleinN R 2 Replies Last reply
    0
    • SBorgS SBorg

      @Negalein Ich muss mal schauen was performanter in der Abfrage ist. Habe mal ein kleines JS "zusammen gehämmert" was die Daten per History (hab aber erst gegen Mittag mit dem sammeln begonnen) zieht:
      Bild 1.png
      Macht aktuell nur Min/Max/Durchschnitt und °C über 20°C?

      Mir war schon klar, dass ich es machen "darf" 😇
      Daran liegt es auch nicht, nur ist es direkt über das Script viel zu Ressourcen fressend, dass geht per DB/History und JS performanter (und auch einfacher).
      Dann muss ich mir noch was mit dem Datenmanagement und den Datenpunkten überlegen.

      • Die Tagestemperaturen sollten so bleiben? Ein 31°C-Tag zählt zu >30 und zu >25 und zu >20 (ja, es war ja auch einer über 20/25°).
      • soll(te) das 1x täglich (bspw. Mitternacht) aktualisiert werden? Die Datenmenge wären pro Datenpunkt 86400 / 16 = 5.600 DPs die sonst abgefragt werden müssen. Das sollte man nicht im Minutentakt ausführen ^^
      NegaleinN Offline
      NegaleinN Offline
      Negalein
      Global Moderator
      wrote on last edited by
      #1223

      @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

      Mir war schon klar, dass ich es machen "darf"

      kennst mich doch. 😉 Du bist da der King 😁

      Daran liegt es auch nicht, nur ist es direkt über das Script viel zu Ressourcen fressend, dass geht per DB/History und JS performanter (und auch einfacher).

      kein Problem.

      Die Tagestemperaturen sollten so bleiben? Ein 31°C-Tag zählt zu >30 und zu >25 und zu >20 (ja, es war ja auch einer über 20/25°).

      genau. Am liebsten so wie am Screenshot. Auch mit den kalten Tagen

      soll(te) das 1x täglich (bspw. Mitternacht) aktualisiert werden? Die Datenmenge wären pro Datenpunkt 86400 / 16 = 5.600 DPs die sonst abgefragt werden müssen. Das sollte man nicht im Minutentakt ausführen ^^

      Ja, 1x am Tag sollte reichen. Geht eh nur um Tageswerte

      ° Node.js: 20.17.0 NPM: 10.8.2
      ° Proxmox, Ubuntu 22.04.3 LTS
      ° Fixer ---> iob fix

      SBorgS 1 Reply Last reply
      0
      • NegaleinN Negalein

        @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

        Mir war schon klar, dass ich es machen "darf"

        kennst mich doch. 😉 Du bist da der King 😁

        Daran liegt es auch nicht, nur ist es direkt über das Script viel zu Ressourcen fressend, dass geht per DB/History und JS performanter (und auch einfacher).

        kein Problem.

        Die Tagestemperaturen sollten so bleiben? Ein 31°C-Tag zählt zu >30 und zu >25 und zu >20 (ja, es war ja auch einer über 20/25°).

        genau. Am liebsten so wie am Screenshot. Auch mit den kalten Tagen

        soll(te) das 1x täglich (bspw. Mitternacht) aktualisiert werden? Die Datenmenge wären pro Datenpunkt 86400 / 16 = 5.600 DPs die sonst abgefragt werden müssen. Das sollte man nicht im Minutentakt ausführen ^^

        Ja, 1x am Tag sollte reichen. Geht eh nur um Tageswerte

        SBorgS Offline
        SBorgS Offline
        SBorg
        Forum Testing Most Active
        wrote on last edited by
        #1224

        @Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

        Auch mit den kalten Tagen

        Das ist auch easy going und recht einfach umzusetzen, ich habe zum testen aber erst mal nur die 4 Werte genutzt.
        Aber egal ob es dann per Influx oder History wird, die Anzahl der "warmen/kalten" Tage ist etwas tricky. Ich möchte eigentlich eine Einzelabfrage umgehen, d.h. zB. für August 19 wären das 31 Tage x 13 Messwerte x Anzahl der Messwerte...
        Deswegen wird es wohl auf einen JSON-Datenpunkt hinauslaufen, der dann täglich um die entsprechenden Gradtage erhöht wird. Dann brauche ich die Vorjahresmonatsabfrage immer nur einmalig für den Monat ausführen.
        ...mal drüber schlafen 😉

        LG SBorg ( SBorg auf GitHub)
        Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

        NegaleinN 1 Reply Last reply
        0
        • SBorgS SBorg

          @Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

          Auch mit den kalten Tagen

          Das ist auch easy going und recht einfach umzusetzen, ich habe zum testen aber erst mal nur die 4 Werte genutzt.
          Aber egal ob es dann per Influx oder History wird, die Anzahl der "warmen/kalten" Tage ist etwas tricky. Ich möchte eigentlich eine Einzelabfrage umgehen, d.h. zB. für August 19 wären das 31 Tage x 13 Messwerte x Anzahl der Messwerte...
          Deswegen wird es wohl auf einen JSON-Datenpunkt hinauslaufen, der dann täglich um die entsprechenden Gradtage erhöht wird. Dann brauche ich die Vorjahresmonatsabfrage immer nur einmalig für den Monat ausführen.
          ...mal drüber schlafen 😉

          NegaleinN Offline
          NegaleinN Offline
          Negalein
          Global Moderator
          wrote on last edited by
          #1225

          @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

          mal drüber schlafen

          Ich werde dich virtuell dabei unterstützen 😂

          ° Node.js: 20.17.0 NPM: 10.8.2
          ° Proxmox, Ubuntu 22.04.3 LTS
          ° Fixer ---> iob fix

          SBorgS 2 Replies Last reply
          0
          • NegaleinN Negalein

            @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

            mal drüber schlafen

            Ich werde dich virtuell dabei unterstützen 😂

            SBorgS Offline
            SBorgS Offline
            SBorg
            Forum Testing Most Active
            wrote on last edited by
            #1226

            @Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

            Ich werde dich virtuell dabei unterstützen 😂

            War auch teilweise erfolgreich, wenn auch mehr Fragen offen sind als ich derzeit Antworten habe. Die Werte ermitteln ist "easy peasy", aber die Statistik hat doch so ihre Fallstricke.
            Zumindest läuft es aktuell auf InfluxDB hinaus, da es viele (auch wg. Grafana) eh am laufen haben. History produziert nur zusätzlich eine Menge an Daten, ist deutlich langsamer und ineffizient in der Abfrage zu handeln.
            Ich hatte zwar zuvor schon eine tägliche Auswertung angedacht, dass muss aber nun so sein, denn eine monatliche Auswertung würde zu lange dauern. Bei einem Turnus von 16 Sekunden der Wetterstation haben wir ~ 5.600 Messwerte pro Tag pro Unit. Wir bräuchten also die Aussentemperaturwerte, Regenmenge und Windgeschwindigkeit. Eine Abfrage der Tageswerte dauert per Influx aber schon 2-3 Sekunden (die Ermittlung der div. Werte ist dabei so gut wie nicht messbar). Da ist die monatliche Abfrage nicht mehr zu handeln: 3 Sek x 3 Abfragen x 30 Tage = ~fast 5(!) Minuten...
            ...also täglich speichern, einlesen, addieren...
            ...und so nebenbei mal Gedanken gemacht, wie denn die DPs überhaupt aussehen müssen damit man die dynamisch in der VIS anzeigen kann...

            btw: Fragen etc. zum eigentlichen Thread natürlich weiter gerne hier, aber IMHO sind die letzten Posts nicht OT, sondern gehören doch irgendwie zum Thema und es "dürfen" sich auch gerne mehr beteiligen 😉 🙂

            LG SBorg ( SBorg auf GitHub)
            Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

            1 Reply Last reply
            1
            • NegaleinN Negalein

              @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

              mal drüber schlafen

              Ich werde dich virtuell dabei unterstützen 😂

              SBorgS Offline
              SBorgS Offline
              SBorg
              Forum Testing Most Active
              wrote on last edited by
              #1227

              @Negalein Dann mal ein erster Test. Neues JS anlegen (am besten in einer neuen Instanz, dann knallt es dir nicht im Fehlerfall den eigentlichen JS-Adapter weg. Sollte zwar nicht, aber man weiß ja nie... 😉 ) :

              /* Wetterstation-Statistiken 
                 (c)2020 by SBorg 
                 V0.0.1 - 05.09.2020   erste Alpha + Min/Max/Durchschnitt/Temp über 20°?
                 holt die Messwerte aus einer InfluxDB und erstellt eine Statistik
                ToDo: vieles ;)
                known issues: keine
              */
              
              let werte = [];
              let zeitstempel = new Date();
              let start = new Date(zeitstempel.getFullYear(),zeitstempel.getMonth(),zeitstempel.getDate(),0,0,0);
              start = start.getTime();
              let end = new Date(zeitstempel.getFullYear(),zeitstempel.getMonth(),zeitstempel.getDate(),23,59,59);
              end = end.getTime();
              
              sendTo('influxdb.0', 'query', 'select * FROM "javascript.0.Wetterstation.Aussentemperatur" WHERE time >= ' + (start *1000000) + ' AND time <= ' + (end *1000000), function (result) {
              
                  if (result.error) {
                      console.error('Fehler: '+result.error);
                  } else {
                      //console.log('Rows: ' + JSON.stringify(result.result[0]));
                      for (let i = 0; i < result.result[0].length; i++) {
                      werte[i] = result.result[0][i].value;
                      }
                  }
              
               /*   const json = JSON.stringify(result.result[0][0]);
                  const obj = JSON.parse(json);
                  console.log(obj.ts);
                  console.log(obj.value); */
              
                  Math.sum = (...werte) => Array.prototype.reduce.call(werte,(a,b) => a+b);
                  let Durchschnitt = (Math.sum(...werte)/werte.length).toFixed(2);
                  if (Math.max(...werte) > 20) {console.log('Temperatur lag heute über 20°C');}
                  console.log('Tiefstwert: ' + Math.min(...werte) + '°C');
                  console.log('Höchstwert: ' + Math.max(...werte) + '°C');
                  console.log('Durchschnitt: ' + Durchschnitt + '°C');
                  console.log('Erster Messwert: ' + new Date(result.result[0][0].ts).toISOString() + ' ***' + result.result[0][0].value);
                  console.log('Letzter Messwert: ' + new Date(result.result[0][werte.length-1].ts).toISOString() + ' ***' + result.result[0][werte.length-1].value);
                  console.log('Anzahl Datensätze: ' + werte.length);
              });
              
              function timeConverter(UNIX_timestamp){
                let a = new Date(UNIX_timestamp);
                let months = ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
                let year = a.getFullYear();
                let month = months[a.getMonth()];
                let date = a.getDate();
                let hour = a.getHours();
                let min = a.getMinutes();
                let sec = a.getSeconds();
                let time = pad(date) + '. ' + month + ' ' + year + ' ' + pad(hour) + ':' + pad(min) + ':' + pad(sec) ;
                return time;
              }
              
              function pad(n) {
                  return n<10 ? '0'+n : n;
              }
              
              console.log('Daten ab ' + timeConverter(start));
              console.log('Daten bis ' + timeConverter(end)); 
              
              

              Anpassen musst du nur #16 ob dein Influx unter Instanz "0" läuft und den DP-Zweig für die Aussentemperatur.
              Sollte dann so nach dem starten aussehen:
              Bild 1.png
              Interessieren würde mich dann

              • allgemeine Laufzeit
              • dein System (PI, bzw. CPU + RAM)
              • sind die Werte plausibel
              • speziell gegen ~23:5x Uhr
                • Laufzeit
                • Anzahl der Datensätze

              Wenn der Ansatz so funktioniert werde ich zum "master-Branch" auf GitHub einen "Beta" anlegen, um dort dann das aktuelle JS vor zu halten.

              LG SBorg ( SBorg auf GitHub)
              Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

              NegaleinN 2 Replies Last reply
              0
              • S Offline
                S Offline
                skokarl
                wrote on last edited by skokarl
                #1228

                OT

                nur für Euch zur Info, Montag Aldi Nord, allerdings nur Online, Gruß Bernd

                1.PNG

                IOBroker mit Proxmox auf Celeron Nuc mit 16 GB und Debian11, Sonos API, Echo Show 15 als Wandtablet, Homematic IP, HUE, Sonos, Echos, DS718+ als Backup

                GlasfaserG 1 Reply Last reply
                1
                • S skokarl

                  OT

                  nur für Euch zur Info, Montag Aldi Nord, allerdings nur Online, Gruß Bernd

                  1.PNG

                  GlasfaserG Offline
                  GlasfaserG Offline
                  Glasfaser
                  wrote on last edited by
                  #1229

                  ++++ inklusiv Support von @skokarl , der demnächst für Neulinge hier kommt 😀 .... 😉

                  Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                  S 1 Reply Last reply
                  0
                  • GlasfaserG Glasfaser

                    ++++ inklusiv Support von @skokarl , der demnächst für Neulinge hier kommt 😀 .... 😉

                    S Offline
                    S Offline
                    skokarl
                    wrote on last edited by
                    #1230

                    @Glasfaser sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                    ++++ inklusiv Support von @skokarl , der demnächst für Neulinge hier kommt 😀 .... 😉

                    Ich komm seit nem halben Jahr zu nix mehr, eine Baustelle nach der anderen, Corona Mist,
                    und noch nen Mops Welpen für die Frau....also, Support erst ab 2022 😬
                    😀
                    außerdem bin ich bei Euren geilen Views und Datenbanken schon lange raus ...

                    IOBroker mit Proxmox auf Celeron Nuc mit 16 GB und Debian11, Sonos API, Echo Show 15 als Wandtablet, Homematic IP, HUE, Sonos, Echos, DS718+ als Backup

                    SBorgS 1 Reply Last reply
                    0
                    • SBorgS SBorg

                      @Negalein Dann mal ein erster Test. Neues JS anlegen (am besten in einer neuen Instanz, dann knallt es dir nicht im Fehlerfall den eigentlichen JS-Adapter weg. Sollte zwar nicht, aber man weiß ja nie... 😉 ) :

                      /* Wetterstation-Statistiken 
                         (c)2020 by SBorg 
                         V0.0.1 - 05.09.2020   erste Alpha + Min/Max/Durchschnitt/Temp über 20°?
                         holt die Messwerte aus einer InfluxDB und erstellt eine Statistik
                        ToDo: vieles ;)
                        known issues: keine
                      */
                      
                      let werte = [];
                      let zeitstempel = new Date();
                      let start = new Date(zeitstempel.getFullYear(),zeitstempel.getMonth(),zeitstempel.getDate(),0,0,0);
                      start = start.getTime();
                      let end = new Date(zeitstempel.getFullYear(),zeitstempel.getMonth(),zeitstempel.getDate(),23,59,59);
                      end = end.getTime();
                      
                      sendTo('influxdb.0', 'query', 'select * FROM "javascript.0.Wetterstation.Aussentemperatur" WHERE time >= ' + (start *1000000) + ' AND time <= ' + (end *1000000), function (result) {
                      
                          if (result.error) {
                              console.error('Fehler: '+result.error);
                          } else {
                              //console.log('Rows: ' + JSON.stringify(result.result[0]));
                              for (let i = 0; i < result.result[0].length; i++) {
                              werte[i] = result.result[0][i].value;
                              }
                          }
                      
                       /*   const json = JSON.stringify(result.result[0][0]);
                          const obj = JSON.parse(json);
                          console.log(obj.ts);
                          console.log(obj.value); */
                      
                          Math.sum = (...werte) => Array.prototype.reduce.call(werte,(a,b) => a+b);
                          let Durchschnitt = (Math.sum(...werte)/werte.length).toFixed(2);
                          if (Math.max(...werte) > 20) {console.log('Temperatur lag heute über 20°C');}
                          console.log('Tiefstwert: ' + Math.min(...werte) + '°C');
                          console.log('Höchstwert: ' + Math.max(...werte) + '°C');
                          console.log('Durchschnitt: ' + Durchschnitt + '°C');
                          console.log('Erster Messwert: ' + new Date(result.result[0][0].ts).toISOString() + ' ***' + result.result[0][0].value);
                          console.log('Letzter Messwert: ' + new Date(result.result[0][werte.length-1].ts).toISOString() + ' ***' + result.result[0][werte.length-1].value);
                          console.log('Anzahl Datensätze: ' + werte.length);
                      });
                      
                      function timeConverter(UNIX_timestamp){
                        let a = new Date(UNIX_timestamp);
                        let months = ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
                        let year = a.getFullYear();
                        let month = months[a.getMonth()];
                        let date = a.getDate();
                        let hour = a.getHours();
                        let min = a.getMinutes();
                        let sec = a.getSeconds();
                        let time = pad(date) + '. ' + month + ' ' + year + ' ' + pad(hour) + ':' + pad(min) + ':' + pad(sec) ;
                        return time;
                      }
                      
                      function pad(n) {
                          return n<10 ? '0'+n : n;
                      }
                      
                      console.log('Daten ab ' + timeConverter(start));
                      console.log('Daten bis ' + timeConverter(end)); 
                      
                      

                      Anpassen musst du nur #16 ob dein Influx unter Instanz "0" läuft und den DP-Zweig für die Aussentemperatur.
                      Sollte dann so nach dem starten aussehen:
                      Bild 1.png
                      Interessieren würde mich dann

                      • allgemeine Laufzeit
                      • dein System (PI, bzw. CPU + RAM)
                      • sind die Werte plausibel
                      • speziell gegen ~23:5x Uhr
                        • Laufzeit
                        • Anzahl der Datensätze

                      Wenn der Ansatz so funktioniert werde ich zum "master-Branch" auf GitHub einen "Beta" anlegen, um dort dann das aktuelle JS vor zu halten.

                      NegaleinN Offline
                      NegaleinN Offline
                      Negalein
                      Global Moderator
                      wrote on last edited by Negalein
                      #1231

                      @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                      Dann mal ein erster Test.

                      Du bist der Hammer 🙂

                      Also, das Log sieht gut aus.

                      javascript.1	2020-09-05 17:10:20.786	info	(1029) script.js.common.Wetterstatistik: Anzahl Datensätze: 939
                      javascript.1	2020-09-05 17:10:20.785	info	(1029) script.js.common.Wetterstatistik: Letzter Messwert: 2020-09-05T15:09:15.128Z ***27.5
                      javascript.1	2020-09-05 17:10:20.785	info	(1029) script.js.common.Wetterstatistik: Erster Messwert: 2020-09-04T22:02:36.676Z ***17.27
                      javascript.1	2020-09-05 17:10:20.785	info	(1029) script.js.common.Wetterstatistik: Durchschnitt: 20.48°C
                      javascript.1	2020-09-05 17:10:20.785	info	(1029) script.js.common.Wetterstatistik: Höchstwert: 28.72°C
                      javascript.1	2020-09-05 17:10:20.784	info	(1029) script.js.common.Wetterstatistik: Tiefstwert: 12.88°C
                      javascript.1	2020-09-05 17:10:20.775	info	(1029) script.js.common.Wetterstatistik: Temperatur lag heute über 20°C
                      javascript.1	2020-09-05 17:10:20.671	info	(1029) script.js.common.Wetterstatistik: registered 0 subscriptions and 0 schedules
                      javascript.1	2020-09-05 17:10:20.671	info	(1029) script.js.common.Wetterstatistik: Daten bis 05. Sep 2020 23:59:59
                      javascript.1	2020-09-05 17:10:20.670	info	(1029) script.js.common.Wetterstatistik: Daten ab 05. Sep 2020 00:00:00
                      javascript.1	2020-09-05 17:10:20.663	info	(1029) Start javascript script.js.common.Wetterstatistik
                      javascript.1	2020-09-05 17:10:20.532	info	(1029) Stop script script.js.common.Wetterstatistik
                      javascript.1	2020-09-05 17:10:18.149	info	(1029) script.js.common.Wetterstatistik: Anzahl Datensätze: 939
                      javascript.1	2020-09-05 17:10:18.149	info	(1029) script.js.common.Wetterstatistik: Letzter Messwert: 2020-09-05T15:09:15.128Z ***27.5
                      javascript.1	2020-09-05 17:10:18.148	info	(1029) script.js.common.Wetterstatistik: Erster Messwert: 2020-09-04T22:02:36.676Z ***17.27
                      javascript.1	2020-09-05 17:10:18.148	info	(1029) script.js.common.Wetterstatistik: Durchschnitt: 20.48°C
                      javascript.1	2020-09-05 17:10:18.148	info	(1029) script.js.common.Wetterstatistik: Höchstwert: 28.72°C
                      javascript.1	2020-09-05 17:10:18.145	info	(1029) script.js.common.Wetterstatistik: Tiefstwert: 12.88°C
                      javascript.1	2020-09-05 17:10:18.145	info	(1029) script.js.common.Wetterstatistik: Temperatur lag heute über 20°C
                      javascript.1	2020-09-05 17:10:17.534	info	(1029) script.js.common.Wetterstatistik: registered 0 subscriptions and 0 schedules
                      javascript.1	2020-09-05 17:10:17.533	info	(1029) script.js.common.Wetterstatistik: Daten bis 05. Sep 2020 23:59:59
                      javascript.1	2020-09-05 17:10:17.533	info	(1029) script.js.common.Wetterstatistik: Daten ab 05. Sep 2020 00:00:00
                      javascript.1	2020-09-05 17:10:17.416	info	(1029) Start javascript script.js.common.Wetterstatistik
                      

                      Interessieren würde mich dann

                      allgemeine Laufzeit

                      wie meinst du das?

                      dein System (PI, bzw. CPU + RAM)

                      Synology 718+, 10 GB RAM, im Docker

                      sind die Werte plausibel

                      Ja, auf den ersten Blick sind sie es

                      speziell gegen ~23:5x Uhr
                      Laufzeit

                      wie meinst du das?

                      Anzahl der Datensätze

                      stehen die auch wieder im Log? Um 23:59? Oder sind die dann anders zu finden?

                      ° Node.js: 20.17.0 NPM: 10.8.2
                      ° Proxmox, Ubuntu 22.04.3 LTS
                      ° Fixer ---> iob fix

                      1 Reply Last reply
                      0
                      • SBorgS SBorg

                        @Negalein Ich muss mal schauen was performanter in der Abfrage ist. Habe mal ein kleines JS "zusammen gehämmert" was die Daten per History (hab aber erst gegen Mittag mit dem sammeln begonnen) zieht:
                        Bild 1.png
                        Macht aktuell nur Min/Max/Durchschnitt und °C über 20°C?

                        Mir war schon klar, dass ich es machen "darf" 😇
                        Daran liegt es auch nicht, nur ist es direkt über das Script viel zu Ressourcen fressend, dass geht per DB/History und JS performanter (und auch einfacher).
                        Dann muss ich mir noch was mit dem Datenmanagement und den Datenpunkten überlegen.

                        • Die Tagestemperaturen sollten so bleiben? Ein 31°C-Tag zählt zu >30 und zu >25 und zu >20 (ja, es war ja auch einer über 20/25°).
                        • soll(te) das 1x täglich (bspw. Mitternacht) aktualisiert werden? Die Datenmenge wären pro Datenpunkt 86400 / 16 = 5.600 DPs die sonst abgefragt werden müssen. Das sollte man nicht im Minutentakt ausführen ^^
                        R Offline
                        R Offline
                        Rushmed
                        Most Active
                        wrote on last edited by
                        #1232

                        @SBorg Ich sehe wie sich die Umsetzung der von mir lang erwarteten Extremwerte anbahnt und stehe gern für Tests bereit. Ich hab mir das für bestimmte Werte per Blockly schon selber hemdsärmelig zusammengebastelt indem ich jeweils den aktuellen Wert mit dem Extremwert vergleiche und ggf. in den Extremwert Datenpunkt schreibe.
                        ff7cda49-e0c3-4fd7-9566-60b18f719ce4-grafik.png
                        Das direkte Außlesen aus der DB gefällt mir aber viel besser.

                        1 Reply Last reply
                        0
                        • S skokarl

                          @Glasfaser sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                          ++++ inklusiv Support von @skokarl , der demnächst für Neulinge hier kommt 😀 .... 😉

                          Ich komm seit nem halben Jahr zu nix mehr, eine Baustelle nach der anderen, Corona Mist,
                          und noch nen Mops Welpen für die Frau....also, Support erst ab 2022 😬
                          😀
                          außerdem bin ich bei Euren geilen Views und Datenbanken schon lange raus ...

                          SBorgS Offline
                          SBorgS Offline
                          SBorg
                          Forum Testing Most Active
                          wrote on last edited by
                          #1233

                          @skokarl sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                          Ich komm seit nem halben Jahr zu nix mehr, eine Baustelle nach der anderen

                          Willkommen im Club 😢

                          @Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                          wie meinst du das?

                          Wie lange das Skript für die Bearbeitung braucht. Bei dir auf der Synology waren es bei ~900 Datensätze 700ms. Das ist absolut akzeptabel.
                          Auf meinem performanten Quad Core, bei der ungefähr selben Anzahl an Datensätzen, aber schon mit drei Abfragen (Temp, Wind und Regen): 35ms
                          Bild 1.png
                          rot: Start | grün Ende

                          @Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                          speziell gegen ~23:5x Uhr
                          Laufzeit

                          wie meinst du das?

                          Anzahl der Datensätze

                          stehen die auch wieder im Log? Um 23:59? Oder sind die dann anders zu finden?

                          Die Datensätze stehen bei jedem Aufruf zum Ende der Skriptverarbeitung immer da. Die variieren halt je nach deinem Intervall der Station, ob du in Influx alles loggst, oder nur Änderungen, oder...
                          Ein Test kurz vor Mitternacht verarbeitet dann in etwa die maximal auftretenden Datensätze. Aber es muss nicht unbedingt 23:59 Uhr sein, denn die paar Datensätze wenn du es um 23:55 Uhr ausführst machen den Bock nicht wirklich fett.
                          Zumindest sieht es nach einer zufriedenstellenden Performance aus. Ich habe aus versehen einen Fehler bei den Timecodes gemacht und alle Datensätze abgefragt. 173.000 Datensätze in 5 Sekunden. Influx ist echt flott 😊

                          @Rushmed Ich hatte das schon lange auf der Agenda, nur nie direkt beim Shell-Skript. Das taugt an der Stelle einfach nicht. Da ist JS einfach die bessere/performantere Wahl.

                          LG SBorg ( SBorg auf GitHub)
                          Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                          R 1 Reply Last reply
                          0
                          • SBorgS SBorg

                            @skokarl sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                            Ich komm seit nem halben Jahr zu nix mehr, eine Baustelle nach der anderen

                            Willkommen im Club 😢

                            @Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                            wie meinst du das?

                            Wie lange das Skript für die Bearbeitung braucht. Bei dir auf der Synology waren es bei ~900 Datensätze 700ms. Das ist absolut akzeptabel.
                            Auf meinem performanten Quad Core, bei der ungefähr selben Anzahl an Datensätzen, aber schon mit drei Abfragen (Temp, Wind und Regen): 35ms
                            Bild 1.png
                            rot: Start | grün Ende

                            @Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                            speziell gegen ~23:5x Uhr
                            Laufzeit

                            wie meinst du das?

                            Anzahl der Datensätze

                            stehen die auch wieder im Log? Um 23:59? Oder sind die dann anders zu finden?

                            Die Datensätze stehen bei jedem Aufruf zum Ende der Skriptverarbeitung immer da. Die variieren halt je nach deinem Intervall der Station, ob du in Influx alles loggst, oder nur Änderungen, oder...
                            Ein Test kurz vor Mitternacht verarbeitet dann in etwa die maximal auftretenden Datensätze. Aber es muss nicht unbedingt 23:59 Uhr sein, denn die paar Datensätze wenn du es um 23:55 Uhr ausführst machen den Bock nicht wirklich fett.
                            Zumindest sieht es nach einer zufriedenstellenden Performance aus. Ich habe aus versehen einen Fehler bei den Timecodes gemacht und alle Datensätze abgefragt. 173.000 Datensätze in 5 Sekunden. Influx ist echt flott 😊

                            @Rushmed Ich hatte das schon lange auf der Agenda, nur nie direkt beim Shell-Skript. Das taugt an der Stelle einfach nicht. Da ist JS einfach die bessere/performantere Wahl.

                            R Offline
                            R Offline
                            Rushmed
                            Most Active
                            wrote on last edited by
                            #1234

                            @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                            @Rushmed Ich hatte das schon lange auf der Agenda, nur nie direkt beim Shell-Skript. Das taugt an der Stelle einfach nicht. Da ist JS einfach die bessere/performantere Wahl.

                            Du bist der Spezialist, ich freu mich nur auf die Lösung und kann helfen die lauffähig zu bekommen.

                            1 Reply Last reply
                            0
                            • SBorgS SBorg

                              @Negalein Dann mal ein erster Test. Neues JS anlegen (am besten in einer neuen Instanz, dann knallt es dir nicht im Fehlerfall den eigentlichen JS-Adapter weg. Sollte zwar nicht, aber man weiß ja nie... 😉 ) :

                              /* Wetterstation-Statistiken 
                                 (c)2020 by SBorg 
                                 V0.0.1 - 05.09.2020   erste Alpha + Min/Max/Durchschnitt/Temp über 20°?
                                 holt die Messwerte aus einer InfluxDB und erstellt eine Statistik
                                ToDo: vieles ;)
                                known issues: keine
                              */
                              
                              let werte = [];
                              let zeitstempel = new Date();
                              let start = new Date(zeitstempel.getFullYear(),zeitstempel.getMonth(),zeitstempel.getDate(),0,0,0);
                              start = start.getTime();
                              let end = new Date(zeitstempel.getFullYear(),zeitstempel.getMonth(),zeitstempel.getDate(),23,59,59);
                              end = end.getTime();
                              
                              sendTo('influxdb.0', 'query', 'select * FROM "javascript.0.Wetterstation.Aussentemperatur" WHERE time >= ' + (start *1000000) + ' AND time <= ' + (end *1000000), function (result) {
                              
                                  if (result.error) {
                                      console.error('Fehler: '+result.error);
                                  } else {
                                      //console.log('Rows: ' + JSON.stringify(result.result[0]));
                                      for (let i = 0; i < result.result[0].length; i++) {
                                      werte[i] = result.result[0][i].value;
                                      }
                                  }
                              
                               /*   const json = JSON.stringify(result.result[0][0]);
                                  const obj = JSON.parse(json);
                                  console.log(obj.ts);
                                  console.log(obj.value); */
                              
                                  Math.sum = (...werte) => Array.prototype.reduce.call(werte,(a,b) => a+b);
                                  let Durchschnitt = (Math.sum(...werte)/werte.length).toFixed(2);
                                  if (Math.max(...werte) > 20) {console.log('Temperatur lag heute über 20°C');}
                                  console.log('Tiefstwert: ' + Math.min(...werte) + '°C');
                                  console.log('Höchstwert: ' + Math.max(...werte) + '°C');
                                  console.log('Durchschnitt: ' + Durchschnitt + '°C');
                                  console.log('Erster Messwert: ' + new Date(result.result[0][0].ts).toISOString() + ' ***' + result.result[0][0].value);
                                  console.log('Letzter Messwert: ' + new Date(result.result[0][werte.length-1].ts).toISOString() + ' ***' + result.result[0][werte.length-1].value);
                                  console.log('Anzahl Datensätze: ' + werte.length);
                              });
                              
                              function timeConverter(UNIX_timestamp){
                                let a = new Date(UNIX_timestamp);
                                let months = ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
                                let year = a.getFullYear();
                                let month = months[a.getMonth()];
                                let date = a.getDate();
                                let hour = a.getHours();
                                let min = a.getMinutes();
                                let sec = a.getSeconds();
                                let time = pad(date) + '. ' + month + ' ' + year + ' ' + pad(hour) + ':' + pad(min) + ':' + pad(sec) ;
                                return time;
                              }
                              
                              function pad(n) {
                                  return n<10 ? '0'+n : n;
                              }
                              
                              console.log('Daten ab ' + timeConverter(start));
                              console.log('Daten bis ' + timeConverter(end)); 
                              
                              

                              Anpassen musst du nur #16 ob dein Influx unter Instanz "0" läuft und den DP-Zweig für die Aussentemperatur.
                              Sollte dann so nach dem starten aussehen:
                              Bild 1.png
                              Interessieren würde mich dann

                              • allgemeine Laufzeit
                              • dein System (PI, bzw. CPU + RAM)
                              • sind die Werte plausibel
                              • speziell gegen ~23:5x Uhr
                                • Laufzeit
                                • Anzahl der Datensätze

                              Wenn der Ansatz so funktioniert werde ich zum "master-Branch" auf GitHub einen "Beta" anlegen, um dort dann das aktuelle JS vor zu halten.

                              NegaleinN Offline
                              NegaleinN Offline
                              Negalein
                              Global Moderator
                              wrote on last edited by Negalein
                              #1235

                              @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                              speziell gegen ~23:5x Uhr

                              5.9.2020, 23:56:34.980	[info ]: javascript.1 (1029) Start javascript script.js.common.Wetterstatistik
                              5.9.2020, 23:56:34.989	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Daten ab 05. Sep 2020 00:00:00
                              5.9.2020, 23:56:34.990	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Daten bis 05. Sep 2020 23:59:59
                              5.9.2020, 23:56:34.990	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: registered 0 subscriptions and 0 schedules
                              5.9.2020, 23:56:35.080	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Temperatur lag heute über 20°C
                              5.9.2020, 23:56:35.080	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Tiefstwert: 12.88°C
                              5.9.2020, 23:56:35.081	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Höchstwert: 28.72°C
                              5.9.2020, 23:56:35.081	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Durchschnitt: 20.73°C
                              5.9.2020, 23:56:35.081	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Erster Messwert: 2020-09-04T22:02:36.676Z ***17.27
                              5.9.2020, 23:56:35.082	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Letzter Messwert: 2020-09-05T21:53:45.795Z ***17.5
                              5.9.2020, 23:56:35.082	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Anzahl Datensätze: 1319
                              

                              Wenn ich das richtig sehe, sind es 102 ms für 1319 Datensätze.

                              Und kurz nach Mitternacht mit nur 2 Datensätzen auch 100 ms.

                              00:05:09.123	info	javascript.1 (1029) Start javascript script.js.common.Wetterstatistik
                              00:05:09.135	info	javascript.1 (1029) script.js.common.Wetterstatistik: Daten ab 06. Sep 2020 00:00:00
                              00:05:09.135	info	javascript.1 (1029) script.js.common.Wetterstatistik: Daten bis 06. Sep 2020 23:59:59
                              00:05:09.135	info	javascript.1 (1029) script.js.common.Wetterstatistik: registered 0 subscriptions and 0 schedules
                              00:05:09.221	info	javascript.1 (1029) script.js.common.Wetterstatistik: Tiefstwert: 17.38°C
                              00:05:09.221	info	javascript.1 (1029) script.js.common.Wetterstatistik: Höchstwert: 17.5°C
                              00:05:09.222	info	javascript.1 (1029) script.js.common.Wetterstatistik: Durchschnitt: 17.44°C
                              00:05:09.222	info	javascript.1 (1029) script.js.common.Wetterstatistik: Erster Messwert: 2020-09-05T22:01:30.847Z ***17.5
                              00:05:09.223	info	javascript.1 (1029) script.js.common.Wetterstatistik: Letzter Messwert: 2020-09-05T22:02:02.616Z ***17.38
                              00:05:09.223	info	javascript.1 (1029) script.js.common.Wetterstatistik: Anzahl Datensätze: 2
                              

                              Spielt dann eigentlich keine Rolle, ob 2 oder 1300 Datensätze.

                              ° Node.js: 20.17.0 NPM: 10.8.2
                              ° Proxmox, Ubuntu 22.04.3 LTS
                              ° Fixer ---> iob fix

                              SBorgS 1 Reply Last reply
                              0
                              • NegaleinN Negalein

                                @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                speziell gegen ~23:5x Uhr

                                5.9.2020, 23:56:34.980	[info ]: javascript.1 (1029) Start javascript script.js.common.Wetterstatistik
                                5.9.2020, 23:56:34.989	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Daten ab 05. Sep 2020 00:00:00
                                5.9.2020, 23:56:34.990	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Daten bis 05. Sep 2020 23:59:59
                                5.9.2020, 23:56:34.990	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: registered 0 subscriptions and 0 schedules
                                5.9.2020, 23:56:35.080	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Temperatur lag heute über 20°C
                                5.9.2020, 23:56:35.080	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Tiefstwert: 12.88°C
                                5.9.2020, 23:56:35.081	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Höchstwert: 28.72°C
                                5.9.2020, 23:56:35.081	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Durchschnitt: 20.73°C
                                5.9.2020, 23:56:35.081	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Erster Messwert: 2020-09-04T22:02:36.676Z ***17.27
                                5.9.2020, 23:56:35.082	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Letzter Messwert: 2020-09-05T21:53:45.795Z ***17.5
                                5.9.2020, 23:56:35.082	[info ]: javascript.1 (1029) script.js.common.Wetterstatistik: Anzahl Datensätze: 1319
                                

                                Wenn ich das richtig sehe, sind es 102 ms für 1319 Datensätze.

                                Und kurz nach Mitternacht mit nur 2 Datensätzen auch 100 ms.

                                00:05:09.123	info	javascript.1 (1029) Start javascript script.js.common.Wetterstatistik
                                00:05:09.135	info	javascript.1 (1029) script.js.common.Wetterstatistik: Daten ab 06. Sep 2020 00:00:00
                                00:05:09.135	info	javascript.1 (1029) script.js.common.Wetterstatistik: Daten bis 06. Sep 2020 23:59:59
                                00:05:09.135	info	javascript.1 (1029) script.js.common.Wetterstatistik: registered 0 subscriptions and 0 schedules
                                00:05:09.221	info	javascript.1 (1029) script.js.common.Wetterstatistik: Tiefstwert: 17.38°C
                                00:05:09.221	info	javascript.1 (1029) script.js.common.Wetterstatistik: Höchstwert: 17.5°C
                                00:05:09.222	info	javascript.1 (1029) script.js.common.Wetterstatistik: Durchschnitt: 17.44°C
                                00:05:09.222	info	javascript.1 (1029) script.js.common.Wetterstatistik: Erster Messwert: 2020-09-05T22:01:30.847Z ***17.5
                                00:05:09.223	info	javascript.1 (1029) script.js.common.Wetterstatistik: Letzter Messwert: 2020-09-05T22:02:02.616Z ***17.38
                                00:05:09.223	info	javascript.1 (1029) script.js.common.Wetterstatistik: Anzahl Datensätze: 2
                                

                                Spielt dann eigentlich keine Rolle, ob 2 oder 1300 Datensätze.

                                SBorgS Offline
                                SBorgS Offline
                                SBorg
                                Forum Testing Most Active
                                wrote on last edited by
                                #1236

                                @Negalein Sieht gut aus 🙂
                                Wenn man noch Zeit für die Ausgabe abzieht absolut ideal. Auch die Durchschnittsberechnung funktioniert.
                                Auf GitHub gibt es nun einen "beta-Branch", dort liegt zukünftig das aktuelle JS. Bitte mal testen wie schnell das ist.

                                6.9.2020, 10:33:34.308	[info ]: javascript.1 (3402) Start javascript script.js.common.Test.Wetterstation_Statistik
                                6.9.2020, 10:33:34.316	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: registered 0 subscriptions and 0 schedules
                                6.9.2020, 10:33:35.529	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Daten ab 06. Aug 2020 00:00:00
                                6.9.2020, 10:33:35.530	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Daten bis 06. Sep 2020 23:59:59
                                6.9.2020, 10:33:35.540	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Temperatur lag heute über 20 °C
                                6.9.2020, 10:33:35.545	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Temperatur lag heute über 25 °C
                                6.9.2020, 10:33:35.549	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Tiefstwert: 9.61 °C
                                6.9.2020, 10:33:35.553	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Höchstwert: 37.11 °C
                                6.9.2020, 10:33:35.553	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Durchschnitt: 23.03 °C
                                6.9.2020, 10:33:35.557	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Maximum Windböe: 36.69 km/h
                                6.9.2020, 10:33:35.558	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Regenmenge: 2326.40 l/m²
                                6.9.2020, 10:33:35.558	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Regenmenge/Tag: 17.2 l/m²
                                6.9.2020, 10:33:35.559	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Erster Messwert: 2020-08-05T22:02:25.825Z ***19.11
                                6.9.2020, 10:33:35.559	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Letzter Messwert: 2020-09-06T08:32:04.253Z ***16.77
                                6.9.2020, 10:33:35.559	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Anzahl Datensätze: 33552
                                6.9.2020, 10:33:39.592	[info ]: javascript.1 (3402) Stop script script.js.common.Test.Wetterstation_Statistik
                                

                                Bei mir ~1.2 Sekunden, allerdings werden hier schon drei Datenbankabfragen über einen Zeitraum von einem Monat gefahren. Sind bei mir immerhin 33k Datensätze und dann noch die Auswertung. Ist ein reiner Performancetest ob auch notfalls eine Monatsauswertung durchführbar wäre.
                                Die Daten sollten auch soweit stimmen, nur über 20/25° stimmt dann nicht mehr und die Regenmenge ist nonsens. Die ist kein Einzelwert wie die anderen Messwerte, sondern addiert sich auf. Dann darf ich aber nicht jeden Messwert nochmals aufaddieren...

                                LG SBorg ( SBorg auf GitHub)
                                Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                                NegaleinN 1 Reply Last reply
                                0
                                • SBorgS SBorg

                                  @Negalein Sieht gut aus 🙂
                                  Wenn man noch Zeit für die Ausgabe abzieht absolut ideal. Auch die Durchschnittsberechnung funktioniert.
                                  Auf GitHub gibt es nun einen "beta-Branch", dort liegt zukünftig das aktuelle JS. Bitte mal testen wie schnell das ist.

                                  6.9.2020, 10:33:34.308	[info ]: javascript.1 (3402) Start javascript script.js.common.Test.Wetterstation_Statistik
                                  6.9.2020, 10:33:34.316	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: registered 0 subscriptions and 0 schedules
                                  6.9.2020, 10:33:35.529	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Daten ab 06. Aug 2020 00:00:00
                                  6.9.2020, 10:33:35.530	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Daten bis 06. Sep 2020 23:59:59
                                  6.9.2020, 10:33:35.540	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Temperatur lag heute über 20 °C
                                  6.9.2020, 10:33:35.545	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Temperatur lag heute über 25 °C
                                  6.9.2020, 10:33:35.549	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Tiefstwert: 9.61 °C
                                  6.9.2020, 10:33:35.553	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Höchstwert: 37.11 °C
                                  6.9.2020, 10:33:35.553	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Durchschnitt: 23.03 °C
                                  6.9.2020, 10:33:35.557	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Maximum Windböe: 36.69 km/h
                                  6.9.2020, 10:33:35.558	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Regenmenge: 2326.40 l/m²
                                  6.9.2020, 10:33:35.558	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Regenmenge/Tag: 17.2 l/m²
                                  6.9.2020, 10:33:35.559	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Erster Messwert: 2020-08-05T22:02:25.825Z ***19.11
                                  6.9.2020, 10:33:35.559	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Letzter Messwert: 2020-09-06T08:32:04.253Z ***16.77
                                  6.9.2020, 10:33:35.559	[info ]: javascript.1 (3402) script.js.common.Test.Wetterstation_Statistik: Anzahl Datensätze: 33552
                                  6.9.2020, 10:33:39.592	[info ]: javascript.1 (3402) Stop script script.js.common.Test.Wetterstation_Statistik
                                  

                                  Bei mir ~1.2 Sekunden, allerdings werden hier schon drei Datenbankabfragen über einen Zeitraum von einem Monat gefahren. Sind bei mir immerhin 33k Datensätze und dann noch die Auswertung. Ist ein reiner Performancetest ob auch notfalls eine Monatsauswertung durchführbar wäre.
                                  Die Daten sollten auch soweit stimmen, nur über 20/25° stimmt dann nicht mehr und die Regenmenge ist nonsens. Die ist kein Einzelwert wie die anderen Messwerte, sondern addiert sich auf. Dann darf ich aber nicht jeden Messwert nochmals aufaddieren...

                                  NegaleinN Offline
                                  NegaleinN Offline
                                  Negalein
                                  Global Moderator
                                  wrote on last edited by Negalein
                                  #1237

                                  @SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                  Bei mir ~1.2 Sekunden, allerdings werden hier schon drei Datenbankabfragen über einen Zeitraum von einem Monat gefahren. Sind bei mir immerhin 33k Datensätze

                                  15:36:18.125	info	javascript.1 (1029) Start javascript script.js.common.Wetterstatistik
                                  15:36:18.137	info	javascript.1 (1029) script.js.common.Wetterstatistik: registered 0 subscriptions and 0 schedules
                                  15:36:27.631	info	javascript.1 (1029) script.js.common.Wetterstatistik: Daten ab 06. Aug 2020 00:00:00
                                  15:36:27.632	info	javascript.1 (1029) script.js.common.Wetterstatistik: Daten bis 06. Sep 2020 23:59:59
                                  15:36:27.664	info	javascript.1 (1029) script.js.common.Wetterstatistik: Temperatur lag heute über 20 °C
                                  15:36:27.665	info	javascript.1 (1029) script.js.common.Wetterstatistik: Temperatur lag heute über 25 °C
                                  15:36:27.666	info	javascript.1 (1029) script.js.common.Wetterstatistik: Tiefstwert: 9.5 °C
                                  15:36:27.667	info	javascript.1 (1029) script.js.common.Wetterstatistik: Höchstwert: 32.77 °C
                                  15:36:27.668	info	javascript.1 (1029) script.js.common.Wetterstatistik: Durchschnitt: 20.78 °C
                                  15:36:27.669	info	javascript.1 (1029) script.js.common.Wetterstatistik: Maximum Windböe: 60.51 km/h
                                  15:36:27.689	info	javascript.1 (1029) script.js.common.Wetterstatistik: Regenmenge: 97581.90 l/m²
                                  15:36:27.700	info	javascript.1 (1029) script.js.common.Wetterstatistik: Regenmenge/Tag: 21.1 l/m²
                                  15:36:27.700	info	javascript.1 (1029) script.js.common.Wetterstatistik: Erster Messwert: 2020-08-05T22:00:01.627Z ***14.72
                                  15:36:27.700	info	javascript.1 (1029) script.js.common.Wetterstatistik: Letzter Messwert: 2020-09-06T13:33:04.987Z ***18.88
                                  15:36:27.700	info	javascript.1 (1029) script.js.common.Wetterstatistik: Anzahl Datensätze: 37375
                                  

                                  Was sagt der Meister? 😉

                                  Mir ist noch was aufgefallen.
                                  Die Daten sind vom 6. 9. 2020
                                  Heute hatten wir aber definitiv keinen Höchstwert von 32,77 °C
                                  Oder von welchem Zeitraum nimmt er diesen Wert?

                                  Ah, sehe gerade, beim Regen 97581 l/m²
                                  Das dürfte utopisch sein. 😁
                                  wären 251 l/m² seit Betreb der Station.

                                  ° Node.js: 20.17.0 NPM: 10.8.2
                                  ° Proxmox, Ubuntu 22.04.3 LTS
                                  ° Fixer ---> iob fix

                                  1 Reply Last reply
                                  0
                                  • R Offline
                                    R Offline
                                    Rushmed
                                    Most Active
                                    wrote on last edited by
                                    #1238
                                    19:37:01.630	info	javascript.0 (3836) Start javascript script.js.Wetterstation_Statistik
                                    19:37:01.650	info	javascript.0 (3836) script.js.Wetterstation_Statistik: registered 0 subscriptions and 0 schedules
                                    19:37:11.462	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Daten ab 06. Aug 2020 00:00:00
                                    19:37:11.463	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Daten bis 06. Sep 2020 23:59:59
                                    19:37:11.468	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Temperatur lag heute über 20 °C
                                    19:37:11.469	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Temperatur lag heute über 25 °C
                                    19:37:11.471	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Tiefstwert: 8.61 °C
                                    19:37:11.472	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Höchstwert: 39.11 °C
                                    19:37:11.472	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Durchschnitt: 23.30 °C
                                    19:37:11.475	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Maximum Windböe: 47.96 km/h
                                    19:37:11.476	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Regenmenge: 11029.90 l/m²
                                    19:37:11.476	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Regenmenge/Tag: 47.1 l/m²
                                    19:37:11.476	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Erster Messwert: 2020-08-05T22:00:29.754Z ***16.5
                                    19:37:11.477	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Letzter Messwert: 2020-09-06T17:36:35.284Z ***17.61
                                    19:37:11.477	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Anzahl Datensätze: 30343
                                    

                                    Meine Zeitmessung auf nem PI4.

                                    NegaleinN 1 Reply Last reply
                                    0
                                    • R Rushmed
                                      19:37:01.630	info	javascript.0 (3836) Start javascript script.js.Wetterstation_Statistik
                                      19:37:01.650	info	javascript.0 (3836) script.js.Wetterstation_Statistik: registered 0 subscriptions and 0 schedules
                                      19:37:11.462	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Daten ab 06. Aug 2020 00:00:00
                                      19:37:11.463	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Daten bis 06. Sep 2020 23:59:59
                                      19:37:11.468	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Temperatur lag heute über 20 °C
                                      19:37:11.469	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Temperatur lag heute über 25 °C
                                      19:37:11.471	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Tiefstwert: 8.61 °C
                                      19:37:11.472	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Höchstwert: 39.11 °C
                                      19:37:11.472	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Durchschnitt: 23.30 °C
                                      19:37:11.475	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Maximum Windböe: 47.96 km/h
                                      19:37:11.476	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Regenmenge: 11029.90 l/m²
                                      19:37:11.476	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Regenmenge/Tag: 47.1 l/m²
                                      19:37:11.476	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Erster Messwert: 2020-08-05T22:00:29.754Z ***16.5
                                      19:37:11.477	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Letzter Messwert: 2020-09-06T17:36:35.284Z ***17.61
                                      19:37:11.477	info	javascript.0 (3836) script.js.Wetterstation_Statistik: Anzahl Datensätze: 30343
                                      

                                      Meine Zeitmessung auf nem PI4.

                                      NegaleinN Offline
                                      NegaleinN Offline
                                      Negalein
                                      Global Moderator
                                      wrote on last edited by
                                      #1239

                                      @Rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                      Meine Zeitmessung auf nem PI4.

                                      Höchstwert: 39.11 °C
                                      😎 WOW, wo wohnst? 😉

                                      ° Node.js: 20.17.0 NPM: 10.8.2
                                      ° Proxmox, Ubuntu 22.04.3 LTS
                                      ° Fixer ---> iob fix

                                      R 1 Reply Last reply
                                      0
                                      • NegaleinN Negalein

                                        @Rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                        Meine Zeitmessung auf nem PI4.

                                        Höchstwert: 39.11 °C
                                        😎 WOW, wo wohnst? 😉

                                        R Offline
                                        R Offline
                                        Rushmed
                                        Most Active
                                        wrote on last edited by
                                        #1240

                                        @Negalein Jena City und ich wohne im Dachgeschoss 😰

                                        1 Reply Last reply
                                        0
                                        • SBorgS Offline
                                          SBorgS Offline
                                          SBorg
                                          Forum Testing Most Active
                                          wrote on last edited by
                                          #1241

                                          Danke euch beiden.

                                          @Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                          Heute hatten wir aber definitiv keinen Höchstwert von 32,77 °C
                                          Oder von welchem Zeitraum nimmt er diesen Wert?

                                          Ist ja auch nicht von heute (siehe meinen letzten Post "... über einen Zeitraum von einem Monat gefahren...". Schau mal genau auf ab wann die Daten ausgewertet werden ("Aug." 😉 ), und da war halt wohl so ein heißer Tag dabei. Es ging hier um den Test wie schnell eine kpl. Monatsauswertung durchgeführt werden kann. Hintergrund: s.u.

                                          @Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                          Ah, sehe gerade, beim Regen 97581 l/m²
                                          Das dürfte utopisch sein.
                                          wären 251 l/m² seit Betreb der Station.

                                          Steht auch im vorherigen Post 😇
                                          Kleiner Denkfehler meinerseits. Ich addiere jeden Messwert auf. Das ist aber falsch, da sich der Messwert nur erhöht wenn es regnet. Beispiel Messwertereihe: 0-0-0-1(es regnet einen Liter und hört dann auf)-1-1-3(regnet wieder zwei Liter)-3-3...
                                          Korrekt ist jetzt natürlich nur drei Liter, da ich aber munter addiere: 1+1+1+3+3+3... = 12 und mehr Liter.

                                          Hintergrund für den Test der Monatsauswertung ist auch "einfach" erklärt:
                                          Die Auswertung für den heutigen Monat ist recht einfach/schnell. Dazu wird nach Mitternacht das JS gestartet. Es wertet dann den Vortag aus und schreibt die Daten zum aktuellen Monat hinzu. Soweit so gut (und auch einfach).
                                          Was ist aber mit den Daten aus dem Vorjahr (also aktuell Sep. 2019)?
                                          Ich kann natürlich den aktuellen Monat immer in einem zusätzlichen Datenpunkt ablegen, dann hätte man die Vorjahreswerte aber erst in einem Jahr (also Sep. 2020 im Sep. 2021) zur Verfügung. Die DPs müssten dann auch dynamisch angelegt werden. Sind zum einen dann sehr viele, ich lege im Grunde schon wieder eine Datenbank an (obwohl ja alles schon in der Influx steht) und in der VIS kommt man wg. der dynamischen DPs nicht um Bindings herum. In Summe nicht gerade sehr prickelnd und innerhalb der VIS performant...
                                          Deswegen möchte ich zum 1. des Monats immer eine kpl. Monatsauswertung des entsprechenden Monats aus dem Vorjahr fahren. Das dauert bei euch zwar 8-10 Sekunden, ist aber einmalig im Monat Nachts um x:xx Uhr IMHO vertretbar. Bei Multihost kann man es ggf. sogar auslagern, bei Single Host kommt es im ioB halt schlimmstenfalls mal zu einem kurzen lagg.
                                          Dann hätte man aber keine unnütze 2. Datenbank. Der Hauptvorteil wäre aber für die VIS, man kann mit festen DPs arbeiten, also bspw. Order "aktueller Monat" und den x-DPs mit aktuellen Werten darin, und Ordner "Vorjahr" mit den entsprechenden selben fixen DPs und Vorjahreswerten. Macht den Umgang/Gestaltung in der VIS flexibler und einfacher.

                                          LG SBorg ( SBorg auf GitHub)
                                          Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                                          NegaleinN 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          92

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe