Zählerscript - Aufaddierung Verbrauch

Hallo,

ich verwende dieses Script

//EDV-Zähler Zählerplatz 1
$imp_kw = 1000;         // Impulse pro kw/h
$counter = GetValue(16169 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler]*/);

// 1 minütlicher Verbrauch
//echo  "Counter: $counter
";
$delta = $counter - GetValue(35207 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old 1   Min EDV]*/);
//echo  "Delta: $delta
";
$data =  IPS_GetVariable(35207 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old 1   Min EDV]*/);
$delta_t =time()-($data['VariableUpdated']);
//echo  "delta_t: $delta_t Sekunden
";
SetValue(35207 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old 1   Min EDV]*/, $counter );
$delta = (double)($delta * 3600 / $delta_t / $imp_kw);
SetValue(41055 /*[Erdgeschoss\Zwischenzaehler\EDV-Zähler\EDV durchschnittl. Verbr. ]*/,$delta);
//echo  "Verbrauch: ".$delta ." kW/h
";

// stündlicher Verbrauch
$data =  IPS_GetVariable(22610 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old 60 Min EDV]*/);
$delta_t =time()-($data['VariableUpdated']);
if ($delta_t >= 3600){
   $delta = $counter - GetValue(22610 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old 60 Min EDV]*/);
    SetValue(22610 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old 60 Min EDV]*/, $counter );
    $delta = (double)($delta * 3600 / $delta_t / $imp_kw);
    SetValue(16737 /*[Erdgeschoss\Zwischenzaehler\EDV-Zähler\EDV letzte 60 Min]*/,$delta);
}

// Tages-Verbrauch
$id_event = $IPS_EVENT;
if ($id_event == 49230 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\Zaehlerauslesen\]*/){
      $delta = $counter - GetValue(25427 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old Midnight EDV]*/);
    SetValue(25427 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old Midnight EDV]*/, $counter );
    $delta = (double)($delta / $imp_kw); //Tagesverbrauch  berechnen
    SetValue(59073 /*[Erdgeschoss\Zwischenzaehler\EDV-Zähler\EDV Tagesverbrauch]*/,$delta);
}

und möchte folgendes ergänzen

  1. Den laufenden Verbrauch in einer Variablen aufaddieren
  2. Die Variable um 0 Uhr dann wieder löschen

Wer kann mir eine Hilfestellung geben? :rolleyes:

Danke

Lukky

Das ist doch das Skript von steiner, das im Original alle 15 Minuten und an Mitternacht getriggert wird. Du hast es wohl etwas angepasst, wenn

getriggert alle 60sec und um 00.01.00 täglich
ich das vom August lese.
Im Prinzip hast Du ja schon alles, was Du brauchst. Legst Dir in IPS noch ne Variable für den Tagesverbrauch an. Dort addierts Du den minütlich ermittelten Wert einfach jede Minute drauf. Dann ein Timer, der dir um Mitternacht die Variable wieder auf Null setzt.
Fertig.

Hallo Boui,

danke für die Rückantwort. Aber leider behersche ich PHP nur rudimentär :(. Das ich dazu noch eine Variable brauche war mir schon klar, aber das weitere … bekomme ich alleine nicht hin.

Lukky

Ich bin auch php und ips Trainee. :smiley:

Für die automatische Version müßte ich selbst noch nachschauen, daher manuell.

Legst ne Variable „tagesverbrauch“ an.
Erweiterst Dein Skript.

// 1 minütlicher Verbrauch
//echo  "Counter: $counter
";
$delta = $counter - GetValue(35207 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old 1   Min EDV]*/);
//echo  "Delta: $delta
";
$data =  IPS_GetVariable(35207 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old 1   Min EDV]*/);
$delta_t =time()-($data['VariableUpdated']);
//echo  "delta_t: $delta_t Sekunden
";
SetValue(35207 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\EDV-Zaehler\Counter old 1   Min EDV]*/, $counter );
$delta = (double)($delta * 3600 / $delta_t / $imp_kw);
SetValue(41055 /*[Erdgeschoss\Zwischenzaehler\EDV-Zähler\EDV durchschnittl. Verbr. ]*/,$delta);
//echo  "Verbrauch: ".$delta ." kW/h
";
$tagesverbrauch = GetValue(ID der neu angelegten Variablen tagesverbrauch eintragen);
$tagesverbrauch = $tagesverbrauch + $delta;
SetValue("tagesverbrauch", $tagesverbrauch); 

Dann habe ich bei mir ein eigenes Skript zum Löschen um Mitternacht.

<?
if($IPS_SENDER == "Execute")
 die("Nein... Dieses Skript darf nicht per Execute gestartet werden");

SetValue(ID der neu angelegten Variablen tagesverbrauch eintragen , 0); //$tagesverbrauch zurücksetzen;

?>

Auf das Skript fügst zu ein zyklisches Ereignis hinzu, das Du auf Mitternacht oder ne Sekunde davor danach stellst und Dir Dein Skript zum Rücksetzen aufruft.

Das sollte so aus gehen. Testen kann ich das nicht am Muttertag. Daher aus dem Kopf.

Hallo Boui,

ich hab`s jetzt so angepasst

// 1 minütlicher Verbrauch
//echo  "Counter: $counter
";
$delta = $counter - GetValue(42095 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\Haupt-Zaehler\Counter old 1  Min Summen]*/);
//echo  "Delta: $delta
";
$data =  IPS_GetVariable(42095 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\Haupt-Zaehler\Counter old 1  Min Summen]*/);
$delta_t =time()-($data['VariableUpdated']);
//echo  "delta_t: $delta_t Sekunden
";
SetValue(42095 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\Haupt-Zaehler\Counter old 1  Min Summen]*/, $counter );
$delta = (double)($delta * 3600 / $delta_t / $imp_kw);
SetValue(12888 /*[Erdgeschoss\Zwischenzaehler\Haupt Zähler\Hauptz. durchschn. Verbrauch]*/,$delta);
//echo  "Verbrauch: ".$delta ." kW/h
";
//Tagesverbrauch kummuliert
$tagesverbrauch = GetValue(42914 /*[Erdgeschoss\Zwischenzaehler\Haupt Zähler	agesverbrauch]*/);
$tagesverbrauch = $tagesverbrauch + $delta / 1440;
SetValue(42914 /*[Erdgeschoss\Zwischenzaehler\Haupt Zähler	agesverbrauch]*/, $tagesverbrauch);

korrigiere mich bitte wenn ich falsch liege.
Wenn ich den Minuten-Wert addiere ist der Wert falsch ( zu gross) geteilt durch 1440 müßte es dann den Tagesverbrauch ergeben.

Lukky

Habe das wohl nur überflogen. :o
Das Skript gibt Durchnittswerte an und Du benötigst einfach den Verbrauch, der für den Tag addiert wird.

Wenn ich es nun richtig verstehe, dann enthält das erste $delta die Zählimpule seit der letzten Messung und wenn Du diese durch 1000 teilst, dann hast Du den Verbrauch in Kwh seit der letzen Messung.
Dann müßte das so klappen. Kann ja nicht so schwer sein. :rolleyes:

// 1 minütlicher Verbrauch
//echo  "Counter: $counter
";
$delta = $counter - GetValue(42095 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\Haupt-Zaehler\Counter old 1  Min Summen]*/);
//echo  "Delta: $delta
";

//Tagesverbrauch kummuliert
$tagesverbrauch = GetValue(42914 /*[Erdgeschoss\Zwischenzaehler\Haupt Zähler	agesverbrauch]*/);
$tagesverbrauch = $tagesverbrauch + $delta / 1000;
SetValue(42914 /*[Erdgeschoss\Zwischenzaehler\Haupt Zähler	agesverbrauch]*/, $tagesverbrauch);  

$data =  IPS_GetVariable(42095 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\Haupt-Zaehler\Counter old 1  Min Summen]*/);
$delta_t =time()-($data['VariableUpdated']);
//echo  "delta_t: $delta_t Sekunden
";
SetValue(42095 /*[Erdgeschoss\Zwischenzaehler\ZaehlerPlatz 1\Haupt-Zaehler\Counter old 1  Min Summen]*/, $counter );
$delta = (double)($delta * 3600 / $delta_t / $imp_kw);
SetValue(12888 /*[Erdgeschoss\Zwischenzaehler\Haupt Zähler\Hauptz. durchschn. Verbrauch]*/,$delta);
//echo  "Verbrauch: ".$delta ." kW/h
";

Hallo Boui,

hatte da einen Gedankenfehler werde es nachher mal ausprobieren.

Danke

Lukky