Lukky
8. Mai 2011 um 18:22
1
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
Den laufenden Verbrauch in einer Variablen aufaddieren
Die Variable um 0 Uhr dann wieder löschen
Wer kann mir eine Hilfestellung geben? :rolleyes:
Danke
Lukky
Boui
8. Mai 2011 um 20:15
2
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.
Lukky
8. Mai 2011 um 20:40
3
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
Boui
8. Mai 2011 um 21:40
4
Ich bin auch php und ips Trainee.
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.
Lukky
8. Mai 2011 um 22:56
5
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
Boui
8. Mai 2011 um 23:36
6
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
";
Lukky
9. Mai 2011 um 12:06
7
Hallo Boui,
hatte da einen Gedankenfehler werde es nachher mal ausprobieren.
Danke
Lukky