dies ist meine erste Veröffentlichung eines Scripts, dass auf dem Script von Jens Maus basiert:
viewtopic.php?f=27&t=31353&hilit=Z%C3%A ... erechnung
Dort hatte ich zuerst gepostet und Jens und Nick haben empfohlen, einen neuen Beitrag zu starten.
Ich bin in Sachen scripting kein Profi. Von daher bitte ich um Nachsicht. Das Script läuft bei mir ohne Probleme.
An dieser Stelle: Jens hat das Script und die Anweisung geschrieben, auf der ich lediglich mit kleinen Modifikationen aufgesetzt habe. Ich habe auch Textstellen zur Installation aus dem Originalpost von Jens verwendet, weil sie einfach gleich geblieben sind.
Log:
2021-01-24: V1.1:
- Es wird geprüft, ob es eine Änderung im Energiezähler des auslösenden Sensors gegeben hat, nur dann wird gerechnet
- Es gab einen Fehler in der Berechnung des aktuellen Verbrauchs (Faktoren müssen zu korrekten Berechnung mit Komma gesetzt sein
- Entfernung nicht benötigter Variablen (Danke an Baxxy)
2021-01-24: V1.2
- Ich hatte in den CCU internen Energiezähler den aktuellen Zählerstand geschrieben und habe dies analog zum Originalskript von Jens auf den Verbrauch seit der letzten Ablesung (zurück)-geändert (Danke an Bacardy)
2021-01-27: V1.3
- Das zurücksetzen der Variablen für den täglichen Wasserverbrauch in l hatte gefehlt und ist jetzt drin
2021-04-18: V1.3b
- Einige Kommentierung zum besseren Verständnis ergänzt
So jetzt aber zum modifzierten Script und der Motivation:
Ich habe mich in den letzten Tagen mit der Batteriethematik beschäftigt, weil mich die aktuelle Lösung in Verbindung mit der Referenzvariable, die nicht direkt dem Zählerstand entspricht, immer verwirrt hatte.
Ich habe das Script von Jens so modifiziert, dass ein Batteriewechsel ohne zusätzliche Maßnahmen gemacht werden kann. Auch Rebooten der CCU ist kein Problem. Ein Überlauf der Variablen des Energiesensors ist auch nicht zu berücksichtigen.
Das habe ich dadurch erreicht, dass ich die Variable, die den aktuellen Zählerstand enthält, immer um das Inkement zwischen dem aktuellem Wert und dem letzten Wert des Energiesensors erhöhe (und nicht durch die jeweilige Differenz zu der Referenzvariable absolut).
Die Differenz ermittle ich mit dem aktuellen Stand des Energiezählers und dem letzten Stand, den ich in einer neuen Variablen in der CCU speichere. Ich habe bewußt nicht den Wert LastValue des Energiezählers benutzt, damit bei einem Verlustpaket (Signal des Energiesensors zur CCU kommt nicht an) der letzte Zählerstand der in der letzten Inkrementberechnung verwendet wurde, in der CCU vorliegt. Dadurch wird bei der nächsten
erfolgreichen Übertragung das verlorene Datenpaket im Inkrement berücksichtig.
Bei Überlauf oder Batteriwechsel wird die Differenz negativ (das benutzt Jens, um den Überlauf zu identifizieren). Ich erhöhe in diesem Fall einfach den Zählerstand nicht durch das Inkrement, sondern direkt durch den Wert des Energiesensores (der ist ja jetzt knapp über Null). Dadurch geht, wenn überhaupt, die Differenz zwischen letztem Wert des Energiesensors bis zum Batteriewechsel / Überlauf verloren. Bei mir sind das (maximal) 50 Wh beim Strom, 0,1 m3 bei Gas und 0,001 m3 beim Wasser. Wenn man den Batteriewechsel macht, bevor der nächste Impuls kommt, dann hat man gar keine Lücke. Damit kann ich gut leben.
Falls man solche kleinen Differenzen beheben will, dann kann man den Zählerstand ablesen und diesen Wert direkt in der Variablen "XXX aktueller Zaehlerstand" abspeichern (im Sinne wysiwyg). Keine verwirrenden Referenzwerte mehr.
Zusätzlich habe ich die Variablen teilweise anders benannt (damit hatte ich im Script eine bessere Übersicht, was jetzt gemeint ist). Ich habe auch zusätzliche Variablen eingeführt (Tageswasserverbrauch in l, Gasverbrauch in kWh, Gartenwasserzähler, ...).
Damit kann es (leider) nicht einfach 1:1 mit den existierenden Variablen übernommen werden.
Folgende Anmerkungen:
- ich habe einige neue Variablen eingeführt
- Gasverbrauch in kWh (die dafür notwendigen Werte für die Zustandszahl und den Faktor habe ich im Script selbst hinterlegt)
- den Tagesverbrauch von Wasser in l
- den Wert des Energiezählers als Logvariable in der CCU (wird für die Inkrementbildung benötigt)
- Variablen zur Erfassung der letzten Werte (gestern, letzte Woche, letzter Monat, letztes Jahr)
Da ich einen Zähler für das Gartenwasser habe, taucht im Script teilweise die Abfrage danach auf.
An dieser Stelle übernehme ich die Anweisung von Jens, um die notwendigen Schritte zur Installation zu nehmen:
Installation/Inbetriebnahme:
Namensgebung der HM-ES-TX-WM Damit das Auswerteprogramm und der Skript korrekt funktionieren müssen alle eingesetzten HM-ES-TX-WM Geräte eine eineindeutige Namensgebung besitzen die den jeweiligen Zählertyp (Strom, Gas, Wasser, ...) wiedergeben. Wichtig ist hierbei das der Name jeweils mit "-Typ" endet. D.h. für einen Stromzähler eben z.B. "Hausanschluss-Strom". Hier einmal ein Screenshot der Benennung meiner eingesetzten HM-ES-TX-WM:
Auf Anregung hier auch nochmal ein Screenshot der aufgeklappten Zähler. Bitte darauf achten, dass der Name für den Kanal stimmt, auf dem auch die Übertragung der Daten stattfindet:
Anlegen der notwendigen Systemvariablen
Für jeden Typ (Strom, Gas, Wasser, ...) eines eingesetzten HM-ES-TX-WM müssen in der CCU eine gewisse Menge an Systemvariablen eingerichtet werden. Der folgende Screenshot zeigt hierbei den Auszug der benötigten Systemvariablen für einen HM-ES-TX-WM der an einem Wasserzähler betrieben wird. Wichtig ist hierbei das die Systemvariablen immer mit der jeweiligen Typenbezeichnung beginnen, in dem Falle eben "Wasser ":
Bitte bedenken, dass für einen Gaszähler die Systemvariable für die Angabe in kWh erforderlich ist:
Anlegen eines neuen Programmes + Skriptes für Zählerauswertung
Damit die Zählerauswertung regelmäßig erfolgt muss am Schluss in der CCU ein neues Programm angelegt werden das auf der einen Seite bei Veränderungen der Energie-Zähler werte bei Aktualisierung ausgelöst wird, aber eben auch durch einen täglichen Timer um genau 0:01 Uhr. Wichtig ist hierbei das man in dem Programm ALLE seine HM-ES-TX-WM Geräte in die erste "Wenn..." Bedingung einträgt und nicht für jedes HM-ES-TX-WM ein separates Programm macht. Das Programm sollte z.B. bei Einsatz von drei HM-ES-TX-WM Geräten (Gas, Strom, Wasser, ...) wie folgt aussehen:
HINWEIS: Wenn man als Stromzähler die IEC Variante zum abgreifen der Zahlenwerte nutzt muss natürlich in dem Programm bei der Bedingung entsprechend "IEC Energie-Zähler Gerät" ausgewählt werden.
Einfügen des notwendigen Skriptes zur Verbrauchsberechnung
Damit die Verbrauchsberechnung durchführt wird muss nun am Schluss noch das folgende Skript unter "Aktivität: Dann..." eingefügt werden (Eigene Modifikationen/Anpassungen müssten daran eigentlich nicht notwendig sein):
Code: Alles auswählen
! Universelle Zaehlerstandberechnung fuer HM-ES-TX-WM
!
! Copyright (c) 2016-2018 Jens Maus <mail@jens-maus.de>
! Adaptiert Michael Hansen, 01/2021, V1.0; neue Kommentare sind mit ! * gekennzeichnet
! * V1.1 - Abfrage eingefügt, ob sich das Inkrement geändert hat. Nur dann wird gerechnet
! * Fehler in der Berechnung des aktuellen Verbrauchs beseitigt
! * V1.2 - Änderung, dass in den CCU internen Energiezähler der Verbrauch seit der letzten
! * Ablesung geschrieben wird (wie beim Originalskript von Jens)#
! * V1.3 - Zurücksetzen des täglichen Wasserverbrauchs in l ist ergänzt
! * V1.3b - Einige Kommentierungen ergänzt
! 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();
real vVeraenderung_Zaehlerstand = ( curValue - lastValue );
! * Wir prüfen, ob es überhaupt einen Energieverbrauch gegeben hat und nur dann geht es in die
! * Berechnungen
if (vVeraenderung_Zaehlerstand <> 0)
{
! Nun extrahieren wir den Zaehlertyp (Gas, Wasser, Strom) -> hier muss Garten erweitert werden
! 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 oAktueller_Zaehlerstand = sysvar.Get(type # " aktueller Zaehlerstand");
! * oZaehlerstand_Messgeraet_Log benötigt man nur für die Inkrementberechnung mit
! * interner Variable
object oZaehlerstand_Messgeraet_Log = sysvar.Get(type # " Zaehlerstand Messgeraet Log");
object oVerbrauch_Aktuell = sysvar.Get(type # " Verbrauch aktuell");
object oVerbrauch_Ablesung = sysvar.Get(type # " Verbrauch Ablesung");
object oLetzte_Ablesung = sysvar.Get(type # " Zaehlerstand letzte Ablesung");
object oZaehlerstand_gestern = sysvar.Get(type # " Zaehlerstand gestern");
object oVerbrauch_heute = sysvar.Get(type # " Verbrauch heute");
object oZaehlerstand_letzte_Woche = sysvar.Get(type # " Zaehlerstand letzte Woche");
object oVerbrauch_Woche = sysvar.Get(type # " Verbrauch Woche");
object oZaehlerstand_letzter_Monat = sysvar.Get(type # " Zaehlerstand letzter Monat");
object oVerbrauch_Monat = sysvar.Get(type # " Verbrauch Monat");
object oZaehlerstand_letztes_Jahr = sysvar.Get(type # " Zaehlerstand letztes Jahr");
object oVerbrauch_Jahr = sysvar.Get(type # " Verbrauch Jahr");
! * vUmrechnungsfaktor wird später nur geändert, wenn es der Stromzähler war (Wh vs. kWh)
real vUmrechnungsfaktor = 1.0;
! * vFaktor_l Für die Umrechnung von m3 in l für den Tagesverbrauch Wasser.
! * Falls Gas oder Strom, dann wird der Wert auf 1 gesetzt
real vFaktor_l = 1000.0;
! * Wenn der Gassensor aufgerufen hat, dann müssen wir die die Variable "Gas Verbrauch Jahr kWh"
! * für Gas laden
if ( type == ( "Gas" ) )
{
object oVerbrauch_Jahr_kWh = sysvar.Get(type # " Verbrauch Jahr kWh");
! * Damit wir die kWh berechnen können, werden die Faktoren für die Umrechnung bei Gas
! * m3 -> kWh benötigt
real vZustandszahl = 0.9639;
real vFaktor = 10.039;
}
! * Wenn der Wasser- oder Gartensensor aufgerufen hat, dann müssen wir die entsprechende
! * Variable für "XXX Verbrauch heute l" laden
if ( (type == "Wasser") || (type == "Garten"))
{
object oVerbrauch_heute_l = sysvar.Get(type # " Verbrauch heute l");
}
! Jetzt machen wir die Inkrementberechnung
! * Wenn die Variable "XXX Zaehlerstand Messgeraet Log" noch nicht gesetzt wurde (= 0), dann
! * wird der letzte Zaehlerstand des Messgerätes verwendet
if ( oZaehlerstand_Messgeraet_Log.Value() == 0 )
{
oZaehlerstand_Messgeraet_Log.State(lastValue);
}
real vInkrement_Geraetezaehler = ( curValue - oZaehlerstand_Messgeraet_Log.Value() );
! * Der Faktor wird für den aktuellen Verbrauch benötigt, da der bei Wasser nur als Angabe in
! * l Sinn macht
if ( (type == "Wasser") || (type == "Garten"))
{
vFaktor_l = 1000.0;
}
else
{
vFaktor_l = 1.0;
}
! Jetzt wird das Inkrement zum letzten Zaehlerstand berechnet
! * Dabei muss der Umrechnungsfaktor für die Wasserzaehlung identifiziert und gesetzt werden
! * Strom und Gas benötigen keine Umrechnung (Wasser = l; Strom = kWh; Gas = m3).
! * vUmrechnungsfaktor wird für den Fall des Batteriewechsels bzw. Zählerüberlaufs benötigt
! * (auch noch später)
if ( type == "Strom" )
{
vUmrechnungsfaktor = 1000.0;
vInkrement_Geraetezaehler = vInkrement_Geraetezaehler / vUmrechnungsfaktor;
}
! Aktuellen Verbrauch berechnen
if(diffTime > 0)
{
oVerbrauch_Aktuell.State(3600.0 * vFaktor_l * vInkrement_Geraetezaehler * vUmrechnungsfaktor / diffTime);
}
! Aktuellen Zaehlerstand berechnen
if (vInkrement_Geraetezaehler < 0)
{
! * Wenn Batteriewechsel, dann direkt den Zaehlerstand des Gerätes addieren
oAktueller_Zaehlerstand.State( (oAktueller_Zaehlerstand.Value() + curValue / vUmrechnungsfaktor));
}
else
{
! * Wenn kein Batteriewechsel stattgefunden hat, dann das Inkrement addieren
oAktueller_Zaehlerstand.State( (oAktueller_Zaehlerstand.Value() + vInkrement_Geraetezaehler ));
}
! Nun alle Systemvariablen die fuer die Berechnung/Darstellung
! des Verbrauches da sind neu berechnen.
oVerbrauch_heute.State( ( oAktueller_Zaehlerstand.Value() - oZaehlerstand_gestern.Value()) );
oVerbrauch_Woche.State( ( oAktueller_Zaehlerstand.Value() - oZaehlerstand_letzte_Woche.Value()) );
oVerbrauch_Monat.State( ( oAktueller_Zaehlerstand.Value() - oZaehlerstand_letzter_Monat.Value()) );
oVerbrauch_Jahr.State( ( oAktueller_Zaehlerstand.Value() - oZaehlerstand_letztes_Jahr.Value()) );
oVerbrauch_Ablesung.State( ( oAktueller_Zaehlerstand.Value() - oLetzte_Ablesung.Value()) );
! * Wenn es der Wasser- oder Gartewasserzähler ist, dann berechnen wir noch den Tagesverbrauch
! * in l
if (( type == "Wasser") || ( type == "Garten"))
{
oVerbrauch_heute_l.State(oVerbrauch_heute.Value() * vFaktor_l);
}
! * Wenn es der Gaszähler ist, dann berechnen wir den Jahresverbrauch für Gas in kWh
if (type == "Gas" )
{
oVerbrauch_Jahr_kWh.State( (oVerbrauch_Jahr.Value() * vZustandszahl * vFaktor) );
}
! * Jetzt schreiben wir den aktuellen Zaehlerstand des Sensors in unsere Log Variable
oZaehlerstand_Messgeraet_Log.State(curValue);
! 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)
{
! * Aktueller Zaehlerstand ist kWh. Die Variable erwartet Wh und rechnet dies dann ggf. in der Anzeige
! * selbst in kWh um
oSysVarEnergyCounter.State(oVerbrauch_Ablesung.Value() * 1000 );
}
}
else
{
object oSysVarEnergyCounter = sysvar.Get("svEnergyCounterGas_" # channel.ID() # "_" # channel.Address());
if(oSysVarEnergyCounter)
{
oSysVarEnergyCounter.State(oVerbrauch_Ablesung.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:01
! 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:01")
{
! * Für 'string a=""' jetzt die Zähler aufzählen, die ihr am Laufen habt.
! * für z.B. Strom- und Wasserzähler muss die Zeile wie folgt geändert werden
! * string a="Strom,Wasser";
string a="Gas,Strom,Wasser,Garten";
string b;
object oAktueller_Zaehlerstand;
object oZaehlerstand_letzte_Woche;
object oVerbrauch_Woche;
object oVerbrauch_letzte_Woche;
object oZaehlerstand_letzter_Monat;
object oVerbrauch_Monat;
object oVerbrauch_letzter_Monat;
object oZaehlerstand_letztes_Jahr;
object oVerbrauch_Jahr;
object oVerbrauch_letztes_Jahr;
object oZaehlerstand_gestern;
object oVerbrauch_heute;
object oVerbrauch_gestern;
! Nun ueber alle Hauszaehler iterieren
foreach(b, a.Split(","))
{
! momentaner Zaehlerstand
oAktueller_Zaehlerstand = sysvar.Get(b # " aktueller Zaehlerstand");
if(oAktueller_Zaehlerstand)
{
! Nach Wochenanfang pruefen
if(system.Date("%a") == "Mon")
{
oZaehlerstand_letzte_Woche = sysvar.Get(b # " Zaehlerstand letzte Woche");
oVerbrauch_Woche = sysvar.Get(b # " Verbrauch Woche");
oVerbrauch_letzte_Woche = sysvar.Get(b # " Verbrauch letzte Woche");
! Verbrauch der letzten Woche speichern
oVerbrauch_letzte_Woche.State( oVerbrauch_Woche.Value() );
! Referenzwert der Woche speichern
oZaehlerstand_letzte_Woche.State( oAktueller_Zaehlerstand.Value() );
! Wochenverbrauch auf 0 setzen
oVerbrauch_Woche.State(0);
}
! Nach Monatsanfang pruefen
if(system.Date("%d") == "01")
{
oZaehlerstand_letzter_Monat = sysvar.Get(b # " Zaehlerstand letzter Monat");
oVerbrauch_Monat = sysvar.Get(b # " Verbrauch Monat");
oVerbrauch_letzter_Monat = sysvar.Get(b # " Verbrauch letzter Monat");
! Verbrauch des letzten Monats speichern
oVerbrauch_letzter_Monat.State( oVerbrauch_Monat.Value() );
! Referenzwert des Monats speichern
oZaehlerstand_letzter_Monat.State( oAktueller_Zaehlerstand.Value() );
! Monatsverbrauch auf 0 setzen
oVerbrauch_Monat.State(0);
! Nach Jahresanfang pruefen
if(system.Date("%m") == "01")
{
oZaehlerstand_letztes_Jahr = sysvar.Get(b # " Zaehlerstand letztes Jahr");
oVerbrauch_Jahr = sysvar.Get(b # " Verbrauch Jahr");
oVerbrauch_letztes_Jahr = sysvar.Get(b # " Verbrauch letztes Jahr");
! Verbrauch des letzten Kalenderjahr speichern
oVerbrauch_letztes_Jahr.State( oVerbrauch_Jahr.Value() );
! Referenzwert des Kalenderjahr speichern
oZaehlerstand_letztes_Jahr.State( oAktueller_Zaehlerstand.Value() );
! Jahresverbrauch auf 0 setzen
oVerbrauch_Jahr.State(0);
}
}
! aktueller Tagesverbrauch speichern
oZaehlerstand_gestern = sysvar.Get(b # " Zaehlerstand gestern");
oVerbrauch_heute = sysvar.Get(b # " Verbrauch heute");
oVerbrauch_gestern = sysvar.Get(b # " Verbrauch gestern");
oVerbrauch_heute_l = sysvar.Get(b # " Verbrauch heute l");
! Verbrauch gestern speichern
oVerbrauch_gestern.State(oVerbrauch_heute.Value());
! Referenzwert des Tages speichern
oZaehlerstand_gestern.State(oAktueller_Zaehlerstand.Value());
! Tagesverbrauch auf 0 setzen
oVerbrauch_heute.State(0);
if (( b == "Wasser") || ( b == "Garten"))
{
oVerbrauch_heute_l.State(0);
}
}
}
}
}
}
Initiale Einrichtung/Anpassung Zählerstande:
Damit die Berechnung des aktuellen Zählerstandes funktioniert muss man mittels des folgenden Skriptes verschiedene Variablen setzen:
Man geht zum jeweiligen Hausanschluss-Zähler (z.B. Stromzähler) und liest dort den aktuellen Verbrauchswert möglichst genau ab und schreibt sich diesen auf. Ebenfalls die Zählerstände der letzten Ablesung des Energieversorgers sowie der Zählerstand zum Jahreswechsels.
Nun führt man mittels "Skript testen" unter der CCU zeitnah das folgende Skript aus. Hierbei die entsprechenden Werte eintragen. Jens hat das mit zwei Scripten gemacht. Ich habe das in ein Script gepackt. Bitte bedenken, dass man ggf. hier einzelne Zeilen löscht oder hinzufügt, wenn man den entpsrechenden Zähler nicht hat (hier ist Strom, Gas, Wasser und Garten berücksichtigt).
Code: Alles auswählen
real Energiezaehler_Strom = 000.000; ! kWh für Strom aktueller Zaehlerstand
real LetzteAblesung_Strom = 000.000; ! kWh
real Zaehlerstand_letztes_Jahr_Strom = 000.000; ! m3
real Energiezaehler_Gas = 000.000; ! m3 für Gas aktueller Zaehlerstand
real LetzteAblesung_Gas = 000.000; ! m3
real Zaehlerstand_letztes_Jahr_Gas = 000.000; ! m3
real Energiezaehler_Wasser = 000.000; ! m3 für Wasser aktueller Zaehlerstand
real LetzteAblesung_Wasser = 000.000; ! m3
real Zaehlerstand_letztes_Jahr_Wasser = 000.000; ! m3
real Energiezaehler_Garten = 000.000; ! m3 für Garten aktueller Zaehlerstand
real LetzteAblesung_Garten = 000.000; ! m3
real Zaehlerstand_letztes_Jahr_Garten = 000.000; ! m3
if (Energiezaehler_Strom > 0)
{
(dom.GetObject("Strom aktueller Zaehlerstand")).State(Energiezaehler_Strom);
WriteLine("Variable Energiezähler wurde gesetzt auf: " # Energiezaehler_Strom);
}
if (LetzteAblesung_Strom > 0)
{
(dom.GetObject("Strom Zaehlerstand letzte Ablesung")).State(LetzteAblesung_Strom);
WriteLine("Letzte Ablesung Strom wurde gesetzt auf: " # LetzteAblesung_Strom);
}
if (Zaehlerstand_letztes_Jahr_Strom > 0)
{
(dom.GetObject("Strom Zaehlerstand letztes Jahr")).State(Zaehlerstand_letztes_Jahr_Strom);
WriteLine("Zaehlerstand Strom vom letzten Jahr wurde gesetzt auf: " # Zaehlerstand_letztes_Jahr_Strom);
}
if (Energiezaehler_Gas > 0)
{
(dom.GetObject("Gas aktueller Zaehlerstand")).State(Energiezaehler_Gas);
WriteLine("Variable Energiezähler Gas wurde gesetzt auf: " # Energiezaehler_Gas);
}
if (LetzteAblesung_Gas > 0)
{
(dom.GetObject("Gas Zaehlerstand letzte Ablesung")).State(LetzteAblesung_Gas);
WriteLine("Letzte Ablesung Gas wurde gesetzt auf: " # LetzteAblesung_Gas);
}
if (Zaehlerstand_letztes_Jahr_Gas > 0)
{
(dom.GetObject("Gas Zaehlerstand letztes Jahr")).State(Zaehlerstand_letztes_Jahr_Gas);
WriteLine("Zaehlerstand Gas vom letzten Jahr wurde gesetzt auf: " # Zaehlerstand_letztes_Jahr_Gas);
}
if (Energiezaehler_Wasser > 0)
{
(dom.GetObject("Wasser aktueller Zaehlerstand")).State(Energiezaehler_Wasser);
WriteLine("Variable Energiezähler Wasser wurde gesetzt auf: " # Energiezaehler_Wasser);
}
if (LetzteAblesung_Wasser > 0)
{
(dom.GetObject("Wasser Zaehlerstand letzte Ablesung")).State(LetzteAblesung_Wasser);
WriteLine("Letzte Ablesung Wasser wurde gesetzt auf: " # LetzteAblesung_Wasser);
}
if (Zaehlerstand_letztes_Jahr_Wasser > 0)
{
(dom.GetObject("Wasser Zaehlerstand letztes Jahr")).State(Zaehlerstand_letztes_Jahr_Wasser);
WriteLine("Zaehlerstand Wasser vom letzten Jahr wurde gesetzt auf: " # Zaehlerstand_letztes_Jahr_Wasser);
}
if (Energiezaehler_Garten > 0)
{
(dom.GetObject("Garten aktueller Zaehlerstand")).State(Energiezaehler_Garten);
WriteLine("Variable Energiezähler Garten wurde gesetzt auf: " # Energiezaehler_Garten);
}
if (LetzteAblesung_Garten > 0)
{
(dom.GetObject("Garten Zaehlerstand letzte Ablesung")).State(LetzteAblesung_Garten);
WriteLine("Letzte Ablesung Garten wurde gesetzt auf: " # LetzteAblesung_Garten);
}
if (Zaehlerstand_letztes_Jahr_Garten > 0)
{
(dom.GetObject("Garten Zaehlerstand letztes Jahr")).State(Zaehlerstand_letztes_Jahr_Garten);
WriteLine("Zaehlerstand Garten vom letzten Jahr wurde gesetzt auf: " # Zaehlerstand_letztes_Jahr_Garten);
}
Alle anderen Systemvariablen zu Zählerständen sollten sich dann nach verstreichen der jeweiligen Zeit (Tag, Woche, Monat) entsprechend selbst aktualisieren.
So, ich hoffe, ich habe das einigermaßen verständlich hier gepostet.
Viel Spaß mit dem Script.