Energieberichte

Hallo Lueralba,

erstmal vielen Dank für die Unterstützung. Ich finde dieses Skript überlebenswichtig für ein ordentliches Strom Logging :smiley:

Meine ID´s passen. sie linken alle zu den jeweiligen Zählerständen. Bei diesen läuft auch ein Zähler Logging.

Die Werte für letzte Woche und Monat passt auch. nur die Tageswerte werden nicht mehr angezeigt.

IPS läuft bei mir die aktuelle 5.3

Vielen Dank nochmal!!!

Gruß
STefan

@power dodge:

Jetzt muss ich abwarten, bis da sich die Daten ansammeln, hoffe läuft dann besser.

Ich glaube fest daran :wink:

hätte noch ne kleine Frage.
Soll ich die Wäre als Standard loggen oder als Zähler?

Ich habe die Aggregation auf „Standard“.

Doku:
https://www.symcon.de/service/dokumentation/modulreferenz/archive-control/

@Golly:
Hallo :slight_smile:

Bitte lies mein Debugging Beispiel hier:
https://www.symcon.de/forum/threads/36830-Energieberichte?p=411467#post411467

Bau einfach den Befehl (var_dump) in die "Tageswerte " ein und zeige die Ausgabe.

Magst du zusätzlich deine „Tageswerte“-Variable unter „Kerninstanzen - Achiv Handler“ mal anschauen, was da so gespeichert wird.
Bei mir sehen die Daten so aus (Aufsteigende kWh Werte des Zählers):

@mike_h:
Ich hatte mich nur auf das gemeldete Problem von power dodge aus Post 86 bezogen.
Da ich es zum Testen für mich um die PV Anteile reduziert habe, stelle ich es hier nicht ein.

Wenn man die Verlauf dieses Threads verfolgt, scheinen mehrere angepasste Versionen zu existieren.

Gruß
lueralba

Hallo,

habe mich mit dem Script befasst und habe es doch aufgegeben.
Da ich bei erstellen von WebFront entdeckt habe wie gut es auch einfach mit IPS und den Graphen
funktioniert etwas anzeigen zu lassen und zu berechnen.
Ist echt gelungen, auch sehr übersichtlich.

Habe für Strom 2 Graphen erstellt, eine für Verbräuche und eine für kosten.
Weiter unten zeige ich ich die Bilder dazu.
Nur zu Übersicht: rot ist gekaufter Strom, Blau PV erzeugt / Eingespeist, Grün PV selbst verbrauchter Strom.

Nur eben in den Graphen könnten noch paar genauer Informationen drin stehen. Quasi die Zahlen zu jedem Balken.

Vielleicht reicht dieses Beispiel jemanden.

Gruß

Moin zusammen,

danke für dies tolle Skript! Leider musst ich meinen Zähler neu anlegen und habe damit meine geloggten Werte verloren.

Kann ich den Startstand irgendwie „Nullen“ damit das Skript neu losläuft. Wenn ich mit den 12000 kWh starte wirft es das skript etwas aus der Bahn…

Hallo Nocturne, schade, du hättest die Werte der alten Variable vor dem Löschen ganz einfach auf die neue übertragen können. Jetzt geht das wahrscheinlich nicht mehr. Was passiert denn genau, wenn du mit dem Zählerstand startest? Eigentlich holt das Script sich ja einfach immer nur die geloggten Werte und das sollte bei egal welchem Zählerstand funktionieren.

Die Werte sind „etwas“ hoch… :o

also du hast ja eine Zählervariable die deinen Verbrauch permanent loggt. Wenn du dieser Variable deinen Anfangsstand (egal wie hoch) gibst und die Aggregation auf „Zähler“ stellst, dann sollten deine Werte für den Verbrauch passen. Denn das Script holt sich ja dann einfach nur die Tages- Wochen- Monats- und Jahreswerte dieser Variable. Die Kosten für den jeweiligen Verbrauch würde ich dann an deiner Stelle für jede Variable immer Live berechnen lassen, dann passen sie auch immer zum jeweiligen Verbrauch. Ich mache das ganze über Workflows in IPS Studio, passende Scripte kannst du aber auch in IPS selbst erstellen. Sind ja einfach nur simple Rechnungen, die bei einer Veränderung einer bestimmten Variable ausgeführt werden.

du kannst die neue Variable manuell auf die alte ID anpassen und schon sind alle Werte wieder da.
Erfordert aber Kenntnisse der settings.json

Mahlzeit zusammen,

ich habe das Skript mal ummodelliert um die Regenmenge meines Sensors zu ermitteln. Bekomme aber überall 0 raus.

Mag da mal einer drüber schauen? Bin absoluter PHP Neuling :frowning:

<?php

################################################################################
# Scriptbezeichnung: HM.Consumption.ips.php
# Version:    1.0
# Author:    Heiko Wilknitz
#
# Auswertung Regen
#
# ----------------------------- Konfigruration ---------------------------------
#
# Anzahl Nachkommastellen bei Ergebnissen
$roundTo=2;                //Anzahl Nachkommastellen bei Ergebnissen 
#
# ----------------------------------- ID´s -------------------------------------
#
$parentID = IPS_GetObject($_IPS['SELF']); 
$parentID = $parentID['ParentID']; 

$archiveID = 19641; 
#
################################################################################

// Regenimpulse
$valueID = 15730; 

// Variablen anlegen bzw. auslesen
$lastYearID        = CreateVariableByName($parentID, "Regen letztes Jahr"); 
$lastMonthID    = CreateVariableByName($parentID, 'Regen letzter Monat'); 
$lastWeekID     = CreateVariableByName($parentID, 'Regen letzte Woche'); 
$lastDayID      = CreateVariableByName($parentID, 'Regen letzter Tag'); 
$currDayID      = CreateVariableByName($parentID, 'Regen aktueller Tag'); 


// -------------------------- LETZTE WERTE -------------------------------------
// GESTERN
$data = AC_GetAggregatedValues($archiveID, $valueID, 1 /* Täglich */, strtotime("yesterday"), strtotime("today")-1, 0);  
foreach($data as $wert) {
SetValueFloat($lastDayID, array_sum($wert)); 
}
// LEZTE WOCHE
$data = AC_GetAggregatedValues($archiveID, $valueID, 2 /* Wöchentlich */, strtotime("monday last week"), strtotime("monday this week")-1, 0);  
foreach($data as $wert) {
SetValueFloat($lastWeekID, array_sum($wert));
}
// LETZTER MONAT
$data = AC_GetAggregatedValues($archiveID, $valueID, 3 /* Monatlich */, strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0);  
foreach($data as $wert) {
SetValueFloat($lastMonthID, array_sum($wert));
}
// LETZTES JAHR
$ly = date('Y', strtotime('-1 year'));
$data = AC_GetAggregatedValues($archiveID, $valueID, 4 /* Jährlich */, mktime(0, 0, 0, 1, 1, $ly), mktime(23, 59, 59, 12, 31, $ly), 0);  
foreach($data as $wert) {
SetValueFloat($lastYearID, array_sum($wert));
}

// ------------------------- AKTUELL WERTE -------------------------------------
// HEUTE
$data = AC_GetAggregatedValues($archiveID, $valueID, 1 /* Stündlich */, strtotime("today"), strtotime("now"), 0);
foreach($data as $wert) {
$dataDay = array_sum($wert);
SetValueFloat($currDayID, $dataDay);
}


// Funktion zum addieren der Zählerwerte 


// Variablen erstellen falls nicht vorhanden und ID entsprechend zuordnen 
function CreateVariableByName($id, $name) 
{ 
    $vid = @IPS_GetVariableIDByName($name, $id); 
    if($vid === false) { 
        $vid = IPS_CreateVariable(2); 
        IPS_SetParent($vid, $id); 
        IPS_SetName($vid, $name); 
    } 
    return $vid; 
}
 
// Eine Funktion um ein Script im Script-Verzeichnis zu erzeugen 
// erstellt von hirschbrat, angepasst wgreipl 
function CreateScriptByName($scriptName, $parentId) 
{ 
    $scriptID = @IPS_GetScriptIDByName($scriptName, $parentId); 
    if ($scriptID == 0){ 
        $scriptID = IPS_CreateScript(0); 
        IPS_SetName($scriptID, $scriptName); 
        IPS_SetParent($scriptID, $parentId); 
    } 
    return $scriptID; 
} 
?>

Unbenannt.JPG Daten sind im ArchiveControl vorhanden. Zumindest für heute

Hallo, ich habe das Script aus Kommentar 22 übernommen. Hoffe dies ist das aktuellste…

Energieberichte - Seite 3

Bei diesem Punkt habe ich dann meine Hausstromvariable angegeben.,

// Verbrauchszähler
$valueID = IPS_GetObjectIDByIdent(„ENERGY_COUNTER_TOTAL“, $parentID); // oder alternativ einfach die ID angebe

Es handelt sich hierbei um folgende Hardware: https://www.sms-guard.org/downloads/sensorbus-SS-S0-1wire.pdf

„Außerdem kann das SB-SS-S0-M an einen Sensorbus angeschlossen werden, nun ist der Zählstand[Wh] und der momentane Verbrauch [Wh] am Busmaster IPswitch-SG.1“

Bedeutet also ich bekomme den aktuellen Verbrauch als „Wattwert“. Kann ich damit so arbeiten?

Hier noch die Einstellungen meiner Variable:
[ATTACH=CONFIG]55934[/ATTACH][ATTACH=CONFIG]55933[/ATTACH]



Hallo,
erstmal Danke für das Script,
bei mir läuft das ganze über KNX, bekomme von dort die Zählerwerte, soweit alles gut, ich habe aber folgendes Problem, ich habe einen ein Tarifzähler, und möchte wissen wieviel Strom meine Wärmepumpe zwischen 23 - 6 Uhr verbraucht, hat da einer eine Idee wie man das vernünftig hinbekommt ?
täglicher Stromverbrauch in dem angegebenen Zeitraum, am besten Tag, Monat und Jahr

Wie sehen denn deine Variablen aus? Float? Handelt es sich um direkte Verbrauchswerte - also aktueller Verbrauch in Watt? Oder sind es Zählerstände?

es sind Zählerstände, Integer

Bei INTEGER habe ich ja Ganzzahlen - verstehe ich nicht ganz … Hier werden ja Float Werte dargestellt:https://www.symcon.de/forum/attachment.php?attachmentid=50666&d=1570215131Die Variablen die das Script anlegt, sind ja auch alle Float… Wenn ich dann mit einer Ganzzahl komme, funktioniert das doch nicht. Oder habe ich einenDenkfehler?

Erstmal Danke für dieses super Skript, es funktioniert auch einwandfrei. Da ich mit EKM868 die Werte auslese habe ich das Problem das alles um den Faktor 1000 zu hoch ist. Hat da schon jemand eine Lösung gefunden.

Moin, ich dachte da war schon in 18 gelöst, lies dir mal den fred durch (glaub übers Profil)

Danke für den Tipp, hat jetzt geklappt, alles bestens.

Hallo,
seit dem Update auf die 6.0 bekomme ich folgende Meldung:

12.09.2021, 00:00:00 | ScriptEngine         | Result for Event 24937
Warning: Division by zero in C:\ProgramData\Symcon\scripts\24518.ips.php on line 159
Warning: NaN/INF Werte werden nicht unterstützt in C:\ProgramData\Symcon\scripts\24518.ips.php on line 160

Die beiden Zeilen sind:

$data = round($dataDay*$full/$diff, 2);
SetValueFloat($consDayID, $data);

Werte liegen vor. Wo könnte hier der Fehler liegen. Kann da jemand helfen?

LG Tom

Guten Morgen.
Wo habt ihr genau habt ihr welche Werte eingetragen in eurem Skript?

eigentlich brauchst du nur die (geloggte) Zählervariable eingeben

$valueID 	= 	11339;