Ankündigung

Einklappen
Keine Ankündigung bisher.

Stromverbrauch aufzeichnen mit ABB Energieaktor SE/S 3.16.1

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] Stromverbrauch aufzeichnen mit ABB Energieaktor SE/S 3.16.1

    Hallo,

    ich möchte möglichst kontinuierlich den Stromverbrauch aufzeichnen.
    Mich interessiert Eure Meinung wie ich das mit dem Wiregate am besten löse.
    Die ABB Engerieaktoren können entweder zyklisch oder auf Anforderung die Messwerte senden (Strom, Spannung, Wirkenergie, etc.).

    Folgende Möglichkeiten habe ich mir per Wiregate Plugin überlegt (ich habe 6 Energieaktoren mit je 3 Kanälen):

    A: Ich programmiere die Aktoren so, dass zyklisch alle 5 Minuten die Messwerte pro Kanal auf den Bus geschickt werden. Ein Plugin reagiert auf die GA und schreibt den Wert in die rrd

    B: Ich programmiere die Aktoren so, dass jede Änderung des Verbauchs auf den Bus geschickt wird. Aufzeichnung wie bei "A".

    C: Ein Wiregate Plugin liest alle 5 Minüten den Verbrauch aller 18 Kanäle und schreibt den Verbrauch in die rrd

    Welche der 3 Möglichkeiten würdet Ihr empfehlen? Ziel ist, den Bus so wenig wie möglich zu belasten, aber trotzdem den Verbrauch möglichst aktuell aufzuzeichnen.
    Die Buslast soll deshlab nicht zu hoch sein, weil ich im Wiregate auch das Licht dimme (nach Schalten eines PM). Teilweise wird das Licht nach Einschalten erst spürbar (1sec?) später gedimmt, wenn gerade irgendein anderes Plugin läuft (meine Vermuting). Deshalb soll die Last mit der Verbrauchsmessung auf den Bus nicht zu hoch sein bzw. das Plugin zur Aufzeichnung der Verbäuche nicht zu lange laufen.

    Gruß
    Thomas

    #2
    Ich denke das Variante B in der Praxis den geringsten Traffic erzeugen wird. Es sei denn du hast wirklich alle 18 Kanäle regelmäßig in Betrieb und die Last der angeschlossenen Verbraucher ändert sich auch noch ständig. Ich denke aber das während der meisten Zeit eine große Anzahl der Kanäle ohnehin auf Nullleistung sein wird und somit keine Änderung erfolgt.

    Wenn die Möglichkeit besteht die Schwelle ab der bei Änderung ein Telegramm gesendet wird, einzustellen, lässt sich die Buslast zu Lasten der Genauigkeit nahezu beliebig einstellen.
    Endlich umgezogen. Fertig? Noch lange nicht... ;-)

    Kommentar


      #3
      Zitat von Hauke Beitrag anzeigen
      Wenn die Möglichkeit besteht die Schwelle ab der bei Änderung ein Telegramm gesendet wird, einzustellen, lässt sich die Buslast zu Lasten der Genauigkeit nahezu beliebig einstellen.
      Meine Präferenz ist auch Lösung B. Man kann in den AKtoren auch die Schwelle einstellen.

      Gruß, Thomas

      Kommentar


        #4
        Mit RRD gibt es bei Lösung B ein Problem:

        heartbeat defines the maximum number of seconds that may pass between two updates of this data source before the value of the data source is assumed to be *UNKNOWN*.
        RRD sind so eingestellt, dass sie in einem Messzeitraum (bspw. 15 Minuten) mindestens einen Wert eintragen, sonst wird der Wert als "nicht vorhanden" markiert (unknown).

        Wenn sich einer deiner Werte nicht ausreichend oft ändert, (und deshalb nicht auf dem Bus und damit nicht im rrd landet) schaut das aus dem rrd resultierende Diagramm nicht besonders hilfreich aus weil an den Stellen dann einfach nichts eingezeichnet wird.

        Man kann rrds zum Erstellungszeitpunkt so konfigurieren dass der Messzeitraum größer ist, siehe hierzu rrd-Doku zum Thema "heartbeat".

        Ich habs bei mir in A+C umgesetzt, wobei das Wiregate-Plugin so eingestellt ist, dass das knx_read(GA, MaxCachealter, DPT) maximal 5 Minuten alte Daten aus dem Cache liest. Sind die Daten älter oder nicht vorhanden wird ein Lesetelegramm erzeugt.

        Grüße,
        Julian

        Kommentar


          #5
          Zitat von netzkind Beitrag anzeigen
          Wenn sich einer deiner Werte nicht ausreichend oft ändert, (und deshalb nicht auf dem Bus und damit nicht im rrd landet) schaut das aus dem rrd resultierende Diagramm nicht besonders hilfreich aus weil an den Stellen dann einfach nichts eingezeichnet wird.
          danke für die Info. Klingt plausibel.

          Zitat von netzkind Beitrag anzeigen
          Man kann rrds zum Erstellungszeitpunkt so konfigurieren dass der Messzeitraum größer ist, siehe hierzu rrd-Doku zum Thema "heartbeat".
          funktioniert das noch zusammen mit den wiregate plugins?

          Zitat von netzkind Beitrag anzeigen
          Ich habs bei mir in A+C umgesetzt, wobei das Wiregate-Plugin so eingestellt ist, dass das knx_read(GA, MaxCachealter, DPT) maximal 5 Minuten alte Daten aus dem Cache liest. Sind die Daten älter oder nicht vorhanden wird ein Lesetelegramm erzeugt.
          Kannst Du dein plugin hier posten?

          danke,thomas

          Kommentar


            #6
            Zitat von taichber Beitrag anzeigen
            funktioniert das noch zusammen mit den wiregate plugins?
            Kannst Du dein plugin hier posten?
            Ja und Ja:

            Code:
            # Eigenen Aufruf-Zyklus auf 300 Sekunden (Default globales RRD-Intervall) setzen
            $plugin_info{$plugname.'_cycle'} = $wg_config{''}{'rrd_interval'};
            
            my $maxLifetime = ($wg_config{''}{'rrd_interval'});
            
            # Wirkenergie COUNTER Wh
            update_rrd("Stromzaehler_", "Wirkenergie_Wh", knx_read("7/7/5", $maxLifetime), "COUNTER");
            
            # Wirkenergie COUNTER kWh
            update_rrd("Stromzaehler_", "Wirkenergie_kWh", knx_read("7/7/4", $maxLifetime), "COUNTER");
            
            
            # Wirkleistung gesamt 7/7/61
            update_rrd("Stromzaehler_", "Wirkleistung_L1L2L3", knx_read("7/7/61", $maxLifetime));
            
            # Wirkleistung L1 7/7/61
            update_rrd("Stromzaehler_", "Wirkleistung_L1", knx_read("7/7/73", $maxLifetime));
            
            # Wirkleistung L2 7/7/61
            update_rrd("Stromzaehler_", "Wirkleistung_L2", knx_read("7/7/76", $maxLifetime));
            
            # Wirkleistung L3 7/7/61
            update_rrd("Stromzaehler_", "Wirkleistung_L3", knx_read("7/7/79", $maxLifetime));
            
            # Wirkleistung 15min-Summe
            if (!-e '/var/www/rrd/Stromzaehler_Wirkleistung_15min.rrd') {
                  RRDs::create('/var/www/rrd/Stromzaehler_Wirkleistung_15min.rrd',
                    '--step' => 900,
                    'DS:value:GAUGE:2700:-55:255000',
                    'RRA:AVERAGE:0.5:1:2160','RRA:AVERAGE:0.5:5:2016','RRA:AVERAGE:0.5:15:2880','RRA:AVERAGE:0.5:180:8760',
                    'RRA:MIN:0.5:1:2160','RRA:MIN:0.5:5:2016','RRA:MIN:0.5:15:2880','RRA:MIN:0.5:180:8760',
                    'RRA:MAX:0.5:1:2160','RRA:MAX:0.5:5:2016','RRA:MAX:0.5:15:2880','RRA:MAX:0.5:180:8760');
            }
            update_rrd("Stromzaehler_", "Wirkleistung_15min", knx_read("7/7/6", 15*60));
            # Wirkleistung 60min-Summe
            if (!-e '/var/www/rrd/Stromzaehler_Wirkleistung_60min.rrd') {
                  RRDs::create('/var/www/rrd/Stromzaehler_Wirkleistung_60min.rrd',
                    '--step' => 3600,
                    'DS:value:GAUGE:10800:-55:255000',
                    'RRA:AVERAGE:0.5:1:2160','RRA:AVERAGE:0.5:5:2016','RRA:AVERAGE:0.5:15:2880','RRA:AVERAGE:0.5:180:8760',
                    'RRA:MIN:0.5:1:2160','RRA:MIN:0.5:5:2016','RRA:MIN:0.5:15:2880','RRA:MIN:0.5:180:8760',
                    'RRA:MAX:0.5:1:2160','RRA:MAX:0.5:5:2016','RRA:MAX:0.5:15:2880','RRA:MAX:0.5:180:8760');
            }
            update_rrd("Stromzaehler_", "Wirkleistung_60min", knx_read("7/7/7", 60*60));
            Datennbasis ist bei mir zwar ein Lingg&Janke-Zähler, aber Verbrauchswert ist Verbrauchswert, ist also auch auf andere Zähler anwendbar. Ich hab bei keinem der Werte den DPT angegeben, weil ich die Adressen aus der ETS exportiert und ins Wiregate importiert habe, dort sind die DPT also hinterlegt. Wenn das nicht der Fall ist kommt nur murks bei raus.

            Die 15min und 60min-Codes zum Ende hin sind etwas unübersichtlicher: damit erzeuge ich die RRDs selbst, falls sie nicht existieren, um eben den heartbeat, step und weißgarnichtmehrgenauwasnochalles selbst einzustellen und nicht die Defaults vom Wiregate zu verwenden.

            Weiter vorne im Code sind "counter", das sind Werte die sich von Abruf zu Abruf erhöhen und keinen Durchschnitt angeben (wie bspw. "Gesamtverbrauch seit Start").

            Bei konkreten Fragen bitte fragen.

            Grüße,
            Julian

            Kommentar


              #7
              Zitat von netzkind Beitrag anzeigen
              Ja und Ja:

              Bei konkreten Fragen bitte fragen.
              danke für das Beispiel. habe das prinzip verstanden. das mit dem anlegen der rrd datei im plugin ist eine gute idee.
              werde am wochende damit experimentieren und mich melden falls ich fragen habe.

              gruss, thomas

              Kommentar

              Lädt...
              X