Ankündigung

Einklappen
Keine Ankündigung bisher.

Misterhouse - Stromzähler - Zählerstand und Momentanverbrauch

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

  • commander0815
    antwortet
    Also ich verwende mhsend um die Daten an cacti weiterzureichen.
    und cacti legt diese dann als rrd ab.

    hier ein kleines howto:
    • cacti installieren
    • im browser für cacti unter data input methods eine neue hinzufügen mit add
      der Input String lautet dann: perl /usr/share/cacti/misterhouse/mhsend -host <host> -state \<object> (Bild1)
      hierzu muss die mhsend vorher an die stelle kopiert werden
      (ich übergebe auch den host, da es bei mir 2 verschienden rechner sind)
    • dann unter Data Sources eine neue hinzufügen mit add (Bild 2)
      wichtig: unten bei custom data die variable wählen, die man darstellen will (bei mir ist es die $stromzaehler)
    • dann unter Graph Management Add um einen Graphen zu erzeugen (Bild 3)
    • Dann muss in den graphen ein Graph Item rein per add (Bild 4)
    • Die Skalierung kann man per CDEFs erzeugen, (habe ich scale_strom genannt (Bild 5) umd die Leistung richtig darzustellen
    • dann muss noch per cronjob die daten für cacti gepolled werden
      mache ich minütlich per:
      user: wwwrun Commandhp /usr/share/cacti/poller.php > /dev/null 2>&1 jede minute
    wenn ich was vergessen habe sag mir bescheid
    grüsse
    Angehängte Dateien

    Einen Kommentar schreiben:


  • RaK
    antwortet
    Kannst du mir die zeilen von RRD zum Erstellen der Grafik mal zuschicken? LG

    Einen Kommentar schreiben:


  • commander0815
    antwortet
    hi rak

    supi. Nochmals danke für die Einbindung.

    Ich habe die Daten per cacti visualisiert und kann ein kleines howto posten, falls Interesse besteht.

    Ich reiche hier einfach die Daten per modifizierter mhsend.pl an cacti weiter und lasse mir dort die Leistung P darstellen.

    Hab noch ein Problem nach einem Überlauf (von 65535 -> 0) gibt es einen aussreißer nach oben ... der heute nacht um ca 2:00 stattgefunden hat :-)
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Misterhouse - Stromzähler - Zählerstand und Momentanverbrauch

    Hallo Jungs,

    mein BE Eingang ist eingetroffen. Ich hab in angeschlossen und den Stromzahler auf den Bus gebracht. Hier ein kleines Howto.

    Man braucht einen Zahler mit S0 Eingang, einen Binareingang (BE) ohne Abfragespannung und (!) mit Zahlerapplikation.

    Ich habe einfach einen Klingeltraffo genommen und die 12V durch den BE auf den S0 gejagt [(+) -- BE -- S0 -- (-)].

    Die Zahlerapplikation entsprechend eingestellt (+1 bei positiver Flanke, Entprellzeit 30ms, zyklisch senden alle 60sec, bei Wertanderung nicht senden, ..., Datentyp 32bit unsigned) und mit einer Gruppenadresse verbunden.

    In /usr/share/misterhouse/mh/lib/EIB_Item.pm folgendes hinzugefuergt (ging auch schon an die MH ML)
    Code:
    # EIB11_Item: 32-bit unsigned integer
    
    package EIB11_Item;
    
    @EIB11_Item::ISA = ('EIB_Item');
    
    sub eis_type {
        return '11';
    }
    
    sub decode {
        my ($self, @data) = @_;
        my $res;
    
        unless ($#data == 4) {
            &main::print_log("Not EIS type 11 data received for $self->{groupaddr}: \[@data\]") if $main::config_parms{eib_errata} >= 2;
            return;
        }
        my $res = ($data[1] << 24 ) | ($data[2] << 16 ) | ($data[3] << 8 ) | $data[4];
    
    #    &main::print_log("EIS11 for $self->{groupaddr}: >$res<");
        return $res;
    }
    
    sub encode {
        my ($self, $state) = @_;
    
        return([0, ($state & 0xff000000) >> 24, ($state & 0xff0000) >> 16, ($state & 0xff00) >> 8, $state & 0xff]);
    }
    In eib_items.mht einen Zahler eingerichtet

    Code:
    # Stromzaehler
    EIB11, 10/4/1,Stromzaehler32bit, ,
    In strom.pl folgenden Usercode eingegeben

    Code:
    # Zum Abgleich zwischen MH und dem realen Stromzaehler
    # muss einmalig der Eibzaehlerstand, der Stromzaehlerstand
    # und die ZaehlerJekWh eingestellt werden.
    
    use Time::HiRes;
    
    # noloop=start
    my $StromzaehlerOffset = 6992.5;
    my $EibzaehlerOffset   = 1100;
    my $ZaehlerJekWh       = 250;
    my $lasttimestamp      = 0;
    my $lastcounter        = 0;
    my $Stromzaehlerstand     = 0;
    my $Stromzaehlermomentanverbrauch = 0;
    # noloop=stop
    
    if (state_changed $Stromzaehler32bit) {
      my $dt = Time::HiRes::time - $lasttimestamp;
      $lasttimestamp = Time::HiRes::time;
      $Stromzaehlerstand = $StromzaehlerOffset + (((state $Stromzaehler32bit) - $EibzaehlerOffset) / $ZaehlerJekWh);
      if ($lastcounter > 0 ) {
        $Stromzaehlermomentanverbrauch = (state $Stromzaehler32bit - $lastcounter) * 3600/($ZaehlerJekWh* $dt);
      } else {
        $Stromzaehlermomentanverbrauch = 0;
      }
      $lastcounter = state $Stromzaehler32bit;
      #print_log "########## Strom >" . sprintf("avg &#37;.2f kW",$Stromzaehlermomentanverbrauch) ."< >" . sprintf("%.1f kWh",$Stromzaehlerstand) . "<";
    }
    Ich hab dabei die Time::HiRes genutzt. Notfalls kann man auch time() statt
    Time::HiRes::time verwenden. Wenn die Lib nicht vorhanden ist, kann man sie aber auch einfach nachinstallieren mit

    Code:
    # perl -MCPAN -e shell
    cpan> install Time::HiRes
    Thats it.

    PS: Bei der Berechnung des Momentanverbrauchs bin ich mir nicht ganz sicher. Vielleicht schaut ihr da nochmal drüber. Zumindest sind die Werte ganz sinnig und werden größer wenn ich die Herdplatte anmache .

    LG
Lädt...
X