Ankündigung

Einklappen
Keine Ankündigung bisher.

Tagesmaximum abspeichern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [WireGate-Plugin] Tagesmaximum abspeichern

    Hallo zusammen,

    vielleicht habe ich bisher nach dem falschen gesucht, aber da ich mich seit ziemlich genau 2 Tagen mit Perl auseinandersetze und mir mein erstes Plugin angefangen habe, dass die WebSeite meiner Wärmepumpe ausliest und mir manche Daten in RRDs überträgt scheitere ich an einer Problemstellung:
    Die WP zeigt mir keine aktuelle Leistungsdaten an sondern immer Tagessummen und "Gesamtsummen" (ich tippe auf Jahressumme). Dies für Wärmemengen, Laufzeigen und Stromverbrauch.

    Ich würde an dieser Stelle gerne die Tageswerte ausrechnen und "ablegen" um später in einem Diagramm Außentemperaturen, Wärmemengen und Strombedarf vergleichen zu können.

    Wie würden die Experten an so eine Sache herangehen? Oder kann man einfach immer einlesen und ins RRD pumpen und dann beim Auslesen sagen man möchte nur die Tages-Maxima?

    Vielen Dank für eure Hilfe!

    Viele Grüße
    Stefan

    p.s. falls noch jemand eine Tecalor THZ (oder Stiebel Eltron LWZ) 404 sein eigen nennt: ich stelle das parsing-script nach Fertigstellung gerne im zur Verfügung, dann muss nicht jeder die Tabellen manuell ausparsen

    #2
    Ja das geht.
    Am besten mit COUNTER-RRDs ... die kann man so anlegen dass sie mit einfach mit dem aktuellen Zählerstand gefüttert werden. Die Berechnung der Dirfferenz zum Vortag erfolgt dann um 0:00 Uhr automatisch.

    Ich habe diese für den Stromzähler der WP und den Energieertrag den ich aus der WP auslese.

    Jetzt kann man via Script/Plugin die letzten Werte aus dem RRD auslesen und sich z.B. daraus die Tages-Arbeitszahl berechnen lassen.

    Das ist aber nicht in 2 Minuten erklärt ... an sich aber einfach.


    Grüße
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    Kommentar


      #3
      Zitat von JuMi2006 Beitrag anzeigen
      Das ist aber nicht in 2 Minuten erklärt ... an sich aber einfach.
      Grüße
      Servus,
      hast du eventuell einen guten Weblink wo das erklärt ist oder z.B. deine Scripte zum erstellen und auswerten eines solchen RRD's bei der Hand?

      Für mich wäre so eine Lösung auch hilfreich da ich S0-Stromzähler und WP damit verheiraten könnte.

      besten Dank!

      Kommentar


        #4
        Sehr hilfreich dabei sind erst mal die RRD-Seiten selbst:
        RRDtool - About RRDtool

        Insbesondere die Bereiche: »Tutorials« und »Documentation«!


        Ein Beispiel für COUNTER-RRDs findest du hier:
        https://knx-user-forum.de/288215-post2.html
        KNX: MDT, Gira TS3, Berker, Theben, PEAR, Preussen BWM, B.E.G., BMS Quadra, WireGate, Timberwolf 2500 | Baublog

        Kommentar


          #5
          Damit bekommst Du den letzten Wert aus einem 24h-Counter-RRD:

          Code:
          ### Last values from RRD
          
          $plugin_info{$plugname.'_cycle'} = 900; # alle x sekunden
          
          my $RRDName = "WP_1-8-1_1440";
          my $ds   = "AVERAGE"; # Datasource: MIN AVERAGE MAX - egal bei Werten <180h
          my $start = "now-1d"; # AT-STYLE TIME SPECIFICATION 
          my $end   = "now";
          
          my ($dbstart, $step, $names, $data) = RRDs::fetch('/var/www/rrd/'.$RRDName.'.rrd', "--start=$start","--end=$end", $ds);
          
          foreach my $line (@$data) {
             foreach my $val (@$line) {
          	next unless defined $val;
          	return $val; ###Hier steht der Wert
              }
          }
          Grüße
          Umgezogen? Ja! ... Fertig? Nein!
          Baustelle 2.0 !

          Kommentar


            #6
            Hi zusammen,

            ich habe mir jetzt mal aus anderen Threads versucht den RRD Create zu kopieren. Da ich das ja nur einmal brauche, war meine Idee, das einfach per Shell auf dem WG zu machen.

            Hier mal das Kommando mit dem ich es versuche:
            Code:
            rrdtool create --step 300 \
             DS:value:COUNTER:2700:0:2147483647 \
             RRA:AVERAGE:0.5:1:720 \
             RRA:AVERAGE:0.5:4:840 \
             RRA:AVERAGE:0.5:96:1826 \
             RRA:AVERAGE:0.5:672:1300 \
             RRA:MIN:0.5:1:720 \
             RRA:MIN:0.5:4:840 \
             RRA:MIN:0.5:96:1826 \
             RRA:MIN:0.5:672:1300 \
             RRA:MAX:0.5:1:720 \
             RRA:MAX:0.5:4:840 \
             RRA:MAX:0.5:96:1826 \
             RRA:MAX:0.5:672:1300
            Komischerweise bekomme ich immer einen Fehler. Wenn ich es ganz versuche erhalte ich den Fehler, dass ich mindestens eine Data Source angeben muss. Wenn ich dann nur die ersten zwei Zeilen verwende beschwert sich das Tool das ein RRA fehlt. Ich habe es sogar schon von Hand abgetippt um zu verhindern, dass sich irgendwo ein "Steuerzeichen" eingeschlichen hat. Irgendwie sehe ich glaube ich den Wald vor lauter Bäumen nicht mehr.

            Wäre über jede Hilfe dankbar!

            Viele Grüße
            Stefan

            Kommentar


              #7
              Zitat von swingert Beitrag anzeigen
              Irgendwie sehe ich glaube ich den Wald vor lauter Bäumen nicht mehr.
              Das glaube ich auch .
              Sämtliche Systeme dieser Welt sind erstmal brot-dumm ... wenn Du eine Datei erstellen möchtest können die blöden Computer immer noch nicht ahnen:
              - Wie die Datein heißen soll
              - Wo die Datei erstellt werden soll

              Also in kurz: Gib einfach einen Pfad und einen Dateinamen mit an

              Code:
              rrdtool create [B]/tmp/test.rrd[/B] --step 300 \
               DS:value:COUNTER:2700:0:2147483647 \
               RRA:AVERAGE:0.5:1:720 \
               RRA:AVERAGE:0.5:4:840 \
               RRA:AVERAGE:0.5:96:1826 \
               RRA:AVERAGE:0.5:672:1300 \
               RRA:MIN:0.5:1:720 \
               RRA:MIN:0.5:4:840 \
               RRA:MIN:0.5:96:1826 \
               RRA:MIN:0.5:672:1300 \
               RRA:MAX:0.5:1:720 \
               RRA:MAX:0.5:4:840 \
               RRA:MAX:0.5:96:1826 \
               RRA:MAX:0.5:672:1300
              Grüße
              Umgezogen? Ja! ... Fertig? Nein!
              Baustelle 2.0 !

              Kommentar


                #8
                Zitat von JuMi2006 Beitrag anzeigen
                Sämtliche Systeme dieser Welt sind erstmal brot-dumm ... wenn Du eine Datei erstellen möchtest können die blöden Computer immer noch nicht ahnen:
                - Wie die Datein heißen soll
                - Wo die Datei erstellt werden soll

                Also in kurz: Gib einfach einen Pfad und einen Dateinamen mit an
                aaaaaah - jetzt weiß ich, was ich in den X Jahren seit meinem Informatik-Studium schon immer implementieren wollte So schwer kann das doch nicht sein

                das kommt davon, wenn man sich geistig in das Thema versucht einzubraten um dann hochzurechnen wie viele Werte und wie lange ein RRA genutzt werden soll

                Kommentar


                  #9
                  Meine Wetterstation (ELV...) gibt die Regenmenge auch nur aufsummiert aus (was im Rahmen der unzuverlässigen Funk-Übertragung sehr sinnvoll ist!).

                  Kann ich evtl. das COUNTER-RRD auch dazu verwenden die Regenmenge für die letzte Stunde und für die letzten 24 Stunden auszurechnen?
                  TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                  Kommentar


                    #10
                    Ja Chris das geht.
                    Leider hat makki das noch nicht reingepatcht.

                    Wichtig beim COUNTER ist dass der Wert, bevor er ins RRD geschrieben wird mit step des RRD multipliziert wird da sich rrdtool auf "per second" bezieht.

                    Im verlinkten Thema von Dominik ist das ganz gut erörtert.

                    Man könnte sich bis dahin so eine eigene sub machen, hier ist $step dann einfach in Sekunden mitzugeben.

                    Code:
                    my $rrdpath = "/var/www/rrd";
                    ...
                    [B]rrd_counter ("RRD_Name",$val,$step);[/B]
                    
                    sub rrd_counter
                    {
                    my $rrdname = $_[0];
                    my $value = $_[1];
                    my $step = $_[2];
                    $rrdname = $rrdname."\.rrd";
                    my $rrdfile = $rrdpath."\/".$rrdname;
                    unless (-e $rrdfile)
                    {
                    RRDs::create ($rrdfile,"DS:value:COUNTER:".(($step)*3).":0:10000000000","RRA:AVERAGE:0.5:1:365","RRA:AVERAGE:0.5:7:300","-s ".($step));
                    }
                    my $countervalue = int($value*$step);
                    RRDs::update("$rrdfile", "N:$countervalue");
                    }
                    Die Datensätze hier sind auf reinen Tagesverbrauch angelegt und könnten evtl. in der Menge etwas zu wenig sein für z.B. die Regenmengen der letzten 1400 Stunden .
                    Das ist jetzt auch mal ungetestet geändert. Oder einfach den wiregated patchen .

                    Grüße
                    Umgezogen? Ja! ... Fertig? Nein!
                    Baustelle 2.0 !

                    Kommentar

                    Lädt...
                    X