Zählersensor HM-ES-TX-WM - Universelle Zählerstandberechnung
Moderator: Co-Administratoren
- shartelt
- Beiträge: 7421
- Registriert: 14.01.2015, 14:59
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 524 Mal
- Danksagung erhalten: 753 Mal
Re: Zählersensor HM-ES-TX-WM - Universelle Zählerstandberech
Dein Zähler zählt aber korrekt? Also ist gut kalibriert?
Abgesehen von dem Startwert für heute....wenn Du in ner Stunde das Delta anschaust, stimmt das mit dem überein, was Dein Zähler sagt?
Abgesehen von dem Startwert für heute....wenn Du in ner Stunde das Delta anschaust, stimmt das mit dem überein, was Dein Zähler sagt?
Re: Zählersensor HM-ES-TX-WM - Universelle Zählerstandberech
Doch, da paßt nun allesBorland hat geschrieben:Ich habe jetzt mal alles (Programm, Variablen) gelöscht und neu angelegt.
Die Bezeichnungen der Variablen habe ich extra aus dem Skript kopiert um keine Schreibfehler zu machen.
Et lüpt wieder nich
Das ist normal. Vom Zählerwert, den Du eingibst, wird der bereits aufgelaufene Zählerstand des Gerätes abgezogen. Schließlich hast Du ja schon Strom verbraucht!Es ist auch eine Differenz zwischen dem Zählerstand den ich im Skript eingebe und dem was bei Skript testen ausgegeben wird.
Wenn Du da jungfräuliche Werte möchtest, mußt Du den Energiezähler nullen und dann das Script für den Referenzzähler ZEITNAH ausführen. Dann wird exakt Dein abgelsener Wert übernommen.
Auch das ist normal. Der Wert für "gestern" wird täglich um Mitternacht geschrieben, der Wochenzähler wöchentlich um Mitternacht von Sonntag auf Montag, der Monatszähler monatlich am 1.Es werden auch gleiche Werte für Woche, heute Monat angezeigt.
Du mußt also einfach nur warten. Bis zu diesen Zeitpunkten laufen alle Zähler synchron.
Re: Zählersensor HM-ES-TX-WM - Universelle Zählerstandberech
Nunja, auf Deinem Zähler befinden sich doch bereits 345 kWh. Die Referenz für heute wird erst um Mitternacht geschrieben, vorher steht 0 in der Referenz. Daher wird der heutige Stromverbrauch auf 345kWh gesetzt.Borland hat geschrieben: Strom Verbrauch heute mit 345kWh ?
Wie gesagt: wenn Du möchtest, daß gleich "korrekt" gerechnet wird, mußt Du den Energiezähler resetten und gleich danach das Script zum Setzen des Referenzzählers ausführen.
-
- Beiträge: 415
- Registriert: 28.10.2015, 21:12
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: Zählersensor HM-ES-TX-WM - Universelle Zählerstandberech
Moin zusammen, hat alles funktioniert.
Zählerstände / Berechnungen Ist und Vortag sind jetzt richtig.
Wochen -Monats und Jahresberechnungen folgen nach und nach.
Ich habe mir auch direkt noch mal eine HM Messsteckdose besorgt um die schlimmsten Stromfresser
zu identifizieren.
Außerdem das Ganze schon mal angefangen auf dem Flurtablet (NEO) zu visualisieren um das auch im Auge zu behalten.
Da CCU Historian im Hintergrund auf meiner Synology läuft schaue ich heute mal wie ich auf dem Flurtablet (auf Folgeseiten) das auch noch als Diagramme darstellen kann.
Danke für die Hilfe und Grüße
B.
Zählerstände / Berechnungen Ist und Vortag sind jetzt richtig.
Wochen -Monats und Jahresberechnungen folgen nach und nach.
Ich habe mir auch direkt noch mal eine HM Messsteckdose besorgt um die schlimmsten Stromfresser
zu identifizieren.
Außerdem das Ganze schon mal angefangen auf dem Flurtablet (NEO) zu visualisieren um das auch im Auge zu behalten.
Da CCU Historian im Hintergrund auf meiner Synology läuft schaue ich heute mal wie ich auf dem Flurtablet (auf Folgeseiten) das auch noch als Diagramme darstellen kann.
Danke für die Hilfe und Grüße
B.
-
- Beiträge: 415
- Registriert: 28.10.2015, 21:12
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: Zählersensor HM-ES-TX-WM - Universelle Zählerstandberech
Gute Morgen,
leider habe ich erst wieder jetzt Zeit gefunden mir das mal anzuschauen.
Irgendwas läuft immer noch nicht richtig.
Die Werte für Vortag, IST, heute etc. werden richtig angezeigt.
Da ist das erst am 10.02. eingerichtet habe ist es ok das noch keine Monatsverbrauch angezeigt wird.
Aber warum wird im Wochenverbrauch immer der Ist Wert aus dem Energiezähler angezeigt?
Ich habe bestimmt was falsch gemacht, weis aber nicht was...
Weis jemand Rat? Was soll ich noch liefern?
VG
B.
Hier das Skript dazu:
Hier die Variablen dazu:
leider habe ich erst wieder jetzt Zeit gefunden mir das mal anzuschauen.
Irgendwas läuft immer noch nicht richtig.
Die Werte für Vortag, IST, heute etc. werden richtig angezeigt.
Da ist das erst am 10.02. eingerichtet habe ist es ok das noch keine Monatsverbrauch angezeigt wird.
Aber warum wird im Wochenverbrauch immer der Ist Wert aus dem Energiezähler angezeigt?
Ich habe bestimmt was falsch gemacht, weis aber nicht was...
Weis jemand Rat? Was soll ich noch liefern?
VG
B.
Hier das Skript dazu:
Code: Alles auswählen
! Universelle Zaehlerstandberechnung fuer HM-ES-TX-WM
!
! Copyright (c) 2016-2018 Jens Maus <mail@jens-maus.de>
!
! Version 1.4 (01.01.2018)
! Nun schauen wir wer uns aufgerufen hat (Device-Channel oder Timer) und welches Device
! es genau war (Nutzung der $src$ Variable) und danach entscheiden wir was wir
! zu tun haben.
object counter = dom.GetObject("$src$");
if(counter)
{
object sysvar = dom.GetObject(ID_SYSTEM_VARIABLES);
! Wenn TypeName vom Typ HSSDP ist dann wurde das Program durch ein Event
! eines Devices erzeugt, ansonsten durch ein CALENDARDP welches der
! Ausfuehrung durch das Zeitmodul entspricht
if(counter.TypeName() == "HSSDP")
{
! Nun holen wir unmittelbar am anfang alle counter relevanten Daten ab
! und speichern sie fuer spaeter zwischen und berechnen auch gleich
! noch differenzwerte
integer diffTime = counter.Timestamp().ToInteger() - counter.LastTimestamp().ToInteger();
real curValue = counter.Value();
real lastValue = counter.LastValue();
! Nun extrahieren wir den Zaehlertyp (Gas, Wasser, Strom)
! aus dem Namen des Channel. Ein Device muss also immer mit "XXXXX-Gas"
! bzw. "XXXXXX-Wasser", etc. enden.
object channel = dom.GetObject(counter.Channel());
string type = channel.Name().StrValueByIndex("-",1);
! Nun holen wir alle notwendigen Systemvariablen zum Lesen und Speichern
! unserer verschiedenen Zaehlerwerte
object c = sysvar.Get(type # " Referenz Zaehlerstand");
object d = sysvar.Get(type # " Zaehlerstand");
object e = sysvar.Get(type # " Verbrauch aktuell");
object f = sysvar.Get(type # " Referenz Ablesung");
object g = sysvar.Get(type # " Verbrauch letzte Ablesung");
object h = sysvar.Get(type # " Referenz heute");
object i = sysvar.Get(type # " Verbrauch heute");
object j = sysvar.Get(type # " Referenz Woche");
object k = sysvar.Get(type # " Verbrauch Woche");
object l = sysvar.Get(type # " Referenz Monat");
object m = sysvar.Get(type # " Verbrauch Monat");
object n = sysvar.Get(type # " Referenz Kalenderjahr");
object o = sysvar.Get(type # " Verbrauch Kalenderjahr");
! Nun schauen wir ob der Zaehler uebergelaufen ist (diffValue < 0) weil
! die Zaehlervariablen des HM-ES-TX-WM gerade beim Stromzaehler regelmaessig
! ueberlaufen.
real diffValue = curValue - lastValue;
if(diffValue < 0.0)
{
! Der Zaehler scheint uebergelaufen zu sein -> ValueMax hinzuaddieren
diffValue = diffValue + counter.ValueMax();
! "Referenz Zaehlerstand" dann um ValueMax erhoehen. Beim Stromzaehler
! muss aber erst das ganze noch in Watt umgerechnet werden.
real a = c.Value();
if(counter.HssType() != "GAS_ENERGY_COUNTER")
{
a = a * 1000.0;
a = a + counter.ValueMax();
c.State(a / 1000.0);
}
else
{
c.State(a + counter.ValueMax());
}
}
! Wenn dies ein Stromzaehler ist muessen wir die Werte von
! Watt zu Kilowatt konvertieren
if(counter.HssType() != "GAS_ENERGY_COUNTER")
{
diffValue = diffValue / 1000.0;
curValue = curValue / 1000.0;
}
! Aktuellen Verbrauch berechnen
if(diffTime > 0) { e.State(3600.0 * diffValue / diffTime); }
! Aktuellen Zaehlerstand berechnen
d.State(c.Value() + curValue);
! Nun alle Systemvariablen die fuer die Berechnung/Darstellung
! des Verbrauches da sind neu berechnen.
g.State(d.Value() - f.Value());
if(h.Value() != 0) { i.State(d.Value() - h.Value()); }
else { i.State(d.Value() - c.Value()); }
if(j.Value() != 0) { k.State(d.Value() - j.Value()); }
else { k.State(d.Value() - c.Value()); }
if(l.Value() != 0) { m.State(d.Value() - l.Value()); }
else { m.State(d.State() - c.State()); }
if(n.Value() != 0) { o.State(d.Value() - n.Value()); }
else { o.State(d.Value() - c.Value()); }
! Wir aktualisieren auch noch den CCU internen Energiezaehler mit
! dem Wert der letzten Ablesung
if(counter.HssType() != "GAS_ENERGY_COUNTER")
{
object oSysVarEnergyCounter = sysvar.Get("svEnergyCounter_" # channel.ID() # "_" # channel.Address());
if(oSysVarEnergyCounter)
{
oSysVarEnergyCounter.State((d.Value() - f.Value()) * 1000.0);
}
}
else
{
object oSysVarEnergyCounter = sysvar.Get("svEnergyCounterGas_" # channel.ID() # "_" # channel.Address());
if(oSysVarEnergyCounter)
{
oSysVarEnergyCounter.State(d.Value() - f.Value());
}
}
! Die aktuelle Zeit in eine separate Systemvariable schreiben
! damit man direkt sehen kann wann die Zaehelrstaende das letzte
! mal aktualisiert wurden.
sysvar.Get(type # " Aktualisierung").State(system.Date("%F %X"));
}
else
{
! Tageszaehleraktualisierung fuer alle Hausanschluss-Zaehler
! Hier wird mittels eines Timers der taeglich immer genau um 00:00
! dieses Programm ausfuehrt die Systemvariablen aktualisiert die
! die Tages/Wochen/Monat/Jahreswerte beinhalten.
! Nur weitermachen wenn es wirklich Mitternacht ist
if(system.Date("%H:%M") == "00:00")
{
string a="Gas,Strom,Wasser";
string b;
object c;
object d;
object e;
object f;
! Nun ueber alle Hauszaehler iterieren
foreach(b, a.Split(","))
{
! momentaner Zaehlerstand
c = sysvar.Get(b # " Zaehlerstand");
if(c)
{
! Nach Wochenanfang pruefen
if(system.Date("%a") == "Mon")
{
d = sysvar.Get(b # " Referenz Woche");
e = sysvar.Get(b # " Verbrauch Woche");
f = sysvar.Get(b # " Verbrauch letzte Woche");
! Verbrauch der letzten Woche speichern
f.State(e.Value());
! Referenzwert der Woche speichern
d.State(c.Value());
! Wochenverbrauch auf 0 setzen
e.State(0);
}
! Nach Monatsanfang pruefen
if(system.Date("%d") == "01")
{
d = sysvar.Get(b # " Referenz Monat");
e = sysvar.Get(b # " Verbrauch Monat");
f = sysvar.Get(b # " Verbrauch letzter Monat");
! Verbrauch des letzten Monats speichern
f.State(e.Value());
! Referenzwert des Monats speichern
d.State(c.Value());
! Monatsverbrauch auf 0 setzen
e.State(0);
! Nach Jahresanfang pruefen
if(system.Date("%m") == "01")
{
d = sysvar.Get(b # " Referenz Kalenderjahr");
e = sysvar.Get(b # " Verbrauch Kalenderjahr");
f = sysvar.Get(b # " Verbrauch letztes Kalenderjahr");
! Verbrauch des letzten Kalenderjahr speichern
f.State(e.Value());
! Referenzwert des Kalenderjahr speichern
d.State(c.Value());
! Jahresverbrauch auf 0 setzen
e.State(0);
}
}
! aktueller Tagesverbrauch speichern
d = sysvar.Get(b # " Referenz heute");
e = sysvar.Get(b # " Verbrauch heute");
f = sysvar.Get(b # " Verbrauch gestern");
! Verbrauch der letzten Woche speichern
f.State(e.Value());
! Referenzwert der Woche speichern
d.State(c.Value());
! Tagesverbrauch auf 0 setzen
e.State(0);
}
}
}
}
}
-
- Beiträge: 415
- Registriert: 28.10.2015, 21:12
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: Zählersensor HM-ES-TX-WM - Universelle Zählerstandberech
So, jetzt läufts.
Ich habe einfach alles noch mal neu gemacht.
Auch den Energiesensor auf Null gesetzt.
Die „Kunst“ ist es einfach richtig zu überlegen.
Um die korrekten Wochenwerte etc. Angezeigt zu bekommen muss man auch alle Variablen
anlegen die im Skript aufgeführt sind
Dann klappt das auch.
VG
B.
Ich habe einfach alles noch mal neu gemacht.
Auch den Energiesensor auf Null gesetzt.
Die „Kunst“ ist es einfach richtig zu überlegen.
Um die korrekten Wochenwerte etc. Angezeigt zu bekommen muss man auch alle Variablen
anlegen die im Skript aufgeführt sind
Dann klappt das auch.
VG
B.
Re: Zählersensor HM-ES-TX-WM - Universelle Zählerstandberech
Man muß sich einfach etwas mit dem Script von Jens beschäftigen. Mittlerweile nutze ich das Script auch in Verbindung mit CUxD und Highchart und lasse mir stündlich, täglich, wöchentlich und monatlich die jeweiligen Gesamtsummen ins Logfile schreiben. Tägliche, wöchentliche und monatliche Durchschnittswerte laß ich mir auch noch berechnen.Borland hat geschrieben: Die „Kunst“ ist es einfach richtig zu überlegen.
-
- Beiträge: 415
- Registriert: 28.10.2015, 21:12
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: Zählersensor HM-ES-TX-WM - Universelle Zählerstandberech
Hmm, zeig mal wie Du das machst;)
Bin ja schon froh das ich das jetzt so weit hinbekommen habe, aber das wäre noch das „i-Tüpfelchen“
Mir würden Tages, Wochen, Monats und Jahreswerte reichen.
VG
B.
Bin ja schon froh das ich das jetzt so weit hinbekommen habe, aber das wäre noch das „i-Tüpfelchen“
Mir würden Tages, Wochen, Monats und Jahreswerte reichen.
VG
B.