Energieberichte

das ist der wichtigste Hinweis! Da bin ich auch drüber gestolpert :cool::cool:

Ich habe bei mir ja drei SDM630 Zähler laufen:
Gesamtverbrauch seriell zum Versorger-Abrechnungszähler,
Verbrauch für Wärmepumpenheizungs-System (Unterzähler)
Verbrauch für Elektroauto-Ladestationen (Unterzähler)

Für den Verbrauch im Haus, ohne Heizung und Auto hatte ich keinen Zähler. Den habe ich mir nun als „virtuellen Zähler“ ein Rechen-Script erstellt. Die Werte dieses virtuellen Zählers lasse ich mitloggen (ja, als „Zähler“) und dann wieder von diesem Script als Energiebericht berechnen. Das macht Spaß!

Hallo zusammen,

ich wollte mich mal für das coole Skript bei allen beteiligten bedanken. Es läuft bei mir seit ca. 2 Wochen ohne Probleme.

Ich benutze das Skript von #32. Eine Anmerkung an manchen bei dem zu hohe Werte angezeigt werden. Das kleine Problem hatte ich zu Anfang auch aber ich fand den Fehler gleich.
Der Zählerstand wurde um 00:00:10 in die Variable geschrieben und da knallt mein Zähler eine Null rein warum auch immer, :confused:beim nächsten logg kommt der richtige Zählerstand und darauf baut er den Verbrauch auf und dann ist dies logischer Weise ein viel zu hoher Verbrauchswert. Jetzt lass ich den Wert um 00:03 abholen und alles ist gut. Vielleicht ist dies auch bei dem einen oder anderendie Ursach für zu hohe Werte.

Jedenfalls DANKE noch mal an alle die da Mitgewirkt haben.:wink:

Viele Grüße
Thomas

Hallo
Ich verwende das Script aus Beitrag #45 das funktioniert perfekt.
Danke an die Ersteller.:slight_smile:

Aber noch eine Frage:
Meine Integervariable Gesamtzähler hat z. B. den Wert 2874 Wh

Verbrauch aktueller Tag wird dann als 2,00 angezeigt?

Wie könnte ich die 2,00 in z.B. 2,874 angezeigt bekommen.
Wo im Script wird da auf oder abgerundet?

Schönen Gruß:)
Egon

Hallo Egon,

ich bin Anfänger aber ich würde im Profil aus der Integervariable eine Floatvariable machen. Standartprofil „Electricity“.

So ist es bei mir und er zeigt die Werte an wie Du möchtest.

Ich weiß nicht ob es daran liegt aber einen Versuch ist es Wert.:wink:

Gruß
Thomas

Hi Thomas
Danke dafür. Geht…
Schönen Gruß:)
Egon

Immer gerne, ich bin froh das ich auch mal einen Tipp geben konnte. Meist bin ich immer der der Hilfe braucht.:wink:

Hallo zusammen. Erst einmal vielen Dank für das tolle Script. Das funktioniert bei mir super. Jetzt würde ich das ganze aber gerne umstellen auf meine Abrechnungsperiode (ich lese den Hauptsromzähler meiner Wohnung aus), die nicht zum Jahreswechsel ist, sondern Start ist immer der 1. August. Daher dachte ich mir ich änder einfach die Zeile

„$data = AC_GetAggregatedValues($archiveID, $valueID, 4 /* Jährlich */, strtotime(„first day of January“), strtotime(„now“), 0);“

in

"$data = AC_GetAggregatedValues($archiveID, $valueID, 4 /* Jährlich */, strtotime(„first day of August“), strtotime(„now“), 0);

und

$data = AC_GetAggregatedValues($archiveID, $valueID, 4 /* Jährlich */, mktime(0, 0, 0, 8, 1, $ly), mktime(23, 59, 59, 7, 31, $ly), 0);

aber das scheint leider nicht zu funktionieren.

Ist das überhaupt möglich, das Jahr quasi im August beginnen zu lassen?

Du kannst das Jahr jeden Tag beginnen lassen! Ich habe in meiner Statistik immer

[ul]
[li]den aktuellen Tag und den Tag davor
[/li][li]die aktuelle Woche, die letzte Woche und die letzten 7 Tage
[/li][li]den aktuellen Monat, den letzten Monat und die letzten 30 Tage
[/li][li]das aktuelle Jahr, das letzte Jahr und die zurückliegenden 365 Tage
[/li][/ul]

Das hat sich sehr bewährt! Mir ist der Jahresanfang auf dem 1.1. herzlich egal und rein zufällig.

Aber kannst du mir sagen wie, oder was ich falsch gemacht habe?

Liebe Community,
ich komme mit meinem Problem leider immer noch nicht weiter. Wie gesagt würde ich das Script gerne so ändern, dass der Jahreszeitraum = meiner Abrechnungsperiode entspricht. Wenn ich das aber so eingebe:

$data = AC_GetAggregatedValues($archiveID, $valueID, 4 /* Jährlich */, strtotime(„sixth day of last December“), strtotime(„now“), 0);

dann werden alle Werte vom 01.01.2018 bis heute zusammengerechnet. Ich möchte aber, dass nur vom 6.12.2018 bis heute addiert wird, ohne aber die Jahreszahl exakt festzulegen, denn sonst stimmt es ja im nächsten Jahr wieder nicht. Kann mir hier jemand weiterhelfen?

Du musst dann leider auf die Tagesaggregation gehen und die relevanten Tage zusammenaddieren.

paresy

Hi Paresy
Habe das gleiche Problemchen.
Ich möchte auch vom 1.8.1918 bis heute in einer Variablen anzeigen.
Jeweils am 1. 8. aber mit Startwert 0 anfangen.

Schönen Gruß:)
Egon

Hallo Egon,

ich habe das für mich jetzt so gelöst, indem ich drei zusätzliche Variablen angelegt habe in die die Jahreszahlen geschrieben werden. Das sieht dann bei mir so aus:

$date1 = "Variable 1"   / $date2 = "Variable 2"  / $dayCounter = "Variable 3"

// LETZTES JAHR
$data = AC_GetAggregatedValues($archiveID, $valueID, 1 /* Täglich */, mktime(0, 0, 0, 12, 6, $date2), mktime(23, 59, 59, 12, 5, $date1), 0);   
SetValueFloat($lastYearID, CalcConsumption($data)); 

// AKTUELLES JAHR 
$data = AC_GetAggregatedValues($archiveID, $valueID, 1 /* Täglich */, mktime(0, 0, 0, 12, 6, $date1), strtotime("now"), 0);   
$dataYear = CalcConsumption($data); 
SetValueFloat($currYearID, $dataYear); 

// Hochrechnung JAHR 
$diff = 60*60*24*$dayCounter; //1 Jahr 
$full = 60*60*24*$tage; // 1 Jahr 
$data = round($dataYear*$full/$diff, 2); 
SetValueFloat($consYearID, $data); 
$date1

ist das Jahr, in dem die aktuelle Periode startet, hier z.B. 2018.

$date2

ist dann immer das Vorjahr, hier also 2017. Diese beiden Variablen müssen dann um 0:00 Uhr am Startdatum der Periode mit „1“ addiert werden, damit sich der Berechnungszeitraum um ein Jahr verschiebt. Wichtig ist auch, wie Parsey das schon geschrieben hat, dass die „Tägliche Aggregation“ eingestellt ist.

Für die Hochrechnung habe ich mir einen einen Tageszähler

$dayCounter

angelegt, der die Tage der aktuellen Periode hochzählt und sich natürlich zum Start der neuen Periode wieder resettet.

$tage

diese Variable berücksichtigt noch, ob die aktuelle Periode in einem Schaltjahr liegt, also 366 Tage hat, oder nicht.

Wahrscheinlich ist das alles sehr umständlich, wie ich das mache, aber es funktioniert super. So wird dir immer genau der Zeitraum angezeigt, den man haben möchte.

Hi Seebter

Danke für das Script.
Dass das so komplizert ist hätte ich nicht gedacht…
Modul wäre halt einfacher-für mich:D

Schönen Gruß:)
Egon

Hallo
So hab ichs jetzt gemacht:
Problem : Fortlaufender Zähler ich will aber immer am 1. 8. jedes Jahr bei 0 beginnen.
Den Abrechnungszeitraum sehen…

<?php

// Ich habe einen Wärmezähler der nur fortlaufend die Daten liefert.
//Ich möchte aber immer am 1.8 bei 0 beginnen.................

$aktuelljahr = GetValue(58602 /*[00 Wärmezähler\Gesamt kW erzeugt\Gesamt kWh Integer in Float umgerechnet]*/);

// Könnte ich auch mit einem Ereignis machen das am 1.8. jedes Jahr den "alten" Zählerstand speichert

//Hier noch alter (Vorjahr) von Hand gesetzt:
$vorjahr=11323;
$aktuell=$aktuelljahr-$vorjahr;

SetValueFloat(23936 /*[00 Wärmezähler\Zähler mit Startdatum
euer Zähler fängt bei 0 an\Aktuelles Jahr]*/,$aktuell);


Was zu verbessern?:o

Schönen Gruß:)
Egon

Danke an den Ersteller und an die Modifizierer!
Funktioniert einwandfrei, toll!

Frage 1:
Muss nur noch eine Grafik basteln. Wie habt ihr das gemacht?
Wochenansicht mit täglichen kWh und tägliche Kosten wäre cool.

Frag 2:
Wie macht man im Webfront ein Eingabefeld, in dem man - wenn nötig - den kWh Preis ändern kann?

Danke und lg

na, so oft ändert sich der Preis nicht, vllt wenn du den Vertrag wechselst. IPS hat alles an Board für eineGrafik, wenn deine Vari geloggt ist.
ansonsten gibt es auch noch 3thdparty Lösungen.

Jo verstanden, Boardmittel reichen. Was ich aber erst jetzt gecheckt habe ist, das man das Logging aktivieren muss - im Skript wohlgemerkt!

Jetzt habe ich aber noch eine Frage:
Was muss geändert werden, damit man dieses genial Skript für den Wasserzähler verwenden könnte?

Danke und lg

Bei mir sieht das für Wasser so aus.

Ich weiß nicht ob Du das gemeint hast.:confused: