HM-ES-TX-WM/Strom-Script01: Unterschied zwischen den Versionen
Aus Wikimatic
K |
K |
||
Zeile 2: | Zeile 2: | ||
[http://homematic-forum.de/forum/viewtopic.php?f=27&t=23104#p198925_http://homematic-forum.de/forum/viewtopic.php?f=27&t=23104#p198925 http://homematic-forum.de/forum/viewtopic.php?f=27&t=23104#p198925_http://homematic-forum.de/forum/viewtopic.php?f=27&t=23104#p198925] | [http://homematic-forum.de/forum/viewtopic.php?f=27&t=23104#p198925_http://homematic-forum.de/forum/viewtopic.php?f=27&t=23104#p198925 http://homematic-forum.de/forum/viewtopic.php?f=27&t=23104#p198925_http://homematic-forum.de/forum/viewtopic.php?f=27&t=23104#p198925] | ||
+ | |||
+ | |||
__TOC__ | __TOC__ | ||
− | Es werden folgende Systemvariablen für Script 1 und Script 2 benötigt: | + | |
+ | |||
+ | <br/>Es werden folgende Systemvariablen für Script 1 und Script 2 benötigt: | ||
{| border="1" cellpadding="1" cellspacing="1" | {| border="1" cellpadding="1" cellspacing="1" | ||
Zeile 49: | Zeile 53: | ||
Folgende Variablen: | Folgende Variablen: | ||
− | + | {| border="1" cellpadding="1" cellspacing="1" | |
− | + | |- | |
− | Die Variable eStart dient der Differenzrechnung um bei jedem Scriptaufruf auf den aktuellen Zählerstand des richtigen EZählers berechnen zu können | + | | eLastInvoice<br/> |
− | + | | Zahl -> hier den Zählerstand der letzten Energieabrechnung in kWh eintragen<br/> | |
− | + | |- | |
− | + | | eStart<br/> | |
− | var serialCounter | + | | Zeichenkette -> hier den aktuellen Zählerstand und den Zählerstand des Energiemessgerätes in ganzen kWh eintragen und zwar wie folgt:<br/> |
+ | |- | ||
+ | | <br/> | ||
+ | | Zählerstand EZähler|Zählerstand HM Zähler (Beispiel 17456|5 ; wenn der Schwarze Kasten im E-Verteiler 17456 zeigt und gleichzeitig das HM Gerät 5) Achtung das HM Gerät zählt in WattStunden also / 1000<br/> | ||
+ | |- | ||
+ | | eUsedEnergyCost<br/> | ||
+ | | Zahl Einheit :EUR<br/> | ||
+ | |- | ||
+ | | eUsedEnergyCount<br/> | ||
+ | | Zahl Einheit :kWh<br/> | ||
+ | |- | ||
+ | | eTotalEnergyCount<br/> | ||
+ | | Zahl Einheit :kWh<br/> | ||
+ | |- | ||
+ | | <br/> | ||
+ | | Die Variable eStart dient der Differenzrechnung um bei jedem Scriptaufruf auf den aktuellen Zählerstand des richtigen EZählers berechnen zu können<br/> | ||
+ | |- | ||
+ | | var serialCounter<br/> | ||
+ | | "XXXXX"; -> hier wieder Seriennummer anpassen<br/> | ||
+ | |} |
Version vom 12. Februar 2015, 17:48 Uhr
Thomas hat 2 Scripte geschrieben, die den heutigen und gestrigen Verbrauch in eine SysVar schreiben.
Ausserdem werden die Kosten aus dem entsprechenden Strompreis Eintrag in der Systemsteuerung der CCU berechnet.
Inhaltsverzeichnis
Es werden folgende Systemvariablen für Script 1 und Script 2 benötigt:
eCountToday |
Zahl Einheit kWh |
eCountYesterday |
Zahl Einheit kWh |
eCostToday |
Zahl Einheit: EUR |
eCostYesterday |
Zahl Einheit: EUR |
eEXMemory |
Zeichenkette Einheit : WH (Einheit is egal is nur Show) |
var serialCounter |
"XXXXX"; in jedem der Scripts mit der Seriennummer des eigenen Aktors füllen. |
Script 1 darf nur einmal am Tag (um 0 Uhr zweckmässigerweise) laufen und ermittelt den gestrigen Verbrauch und speichert den Zählerstand.
!! Energy Costs Part 1
!!
!! Berechnet die verbrauchten kWh seit dem letzten Aufruf + Preis
!! sollte einmal tgl. um 0 Uhr laufen
!! 02/15
!! (c) by thkl
!!
!! Benötigte SystemVariablen:
!! Name : eCountYesterday Typ: Zahl Einheit kWh
!! Name : eCostYesterday Typ: Zahl Einheit : EUR
!! Name : eEXMemory Typ: Zeichenkette
!!
!! Verbrauchte Energie wird nach Scriptlauf in eCountYesterday in kWh gespeichert Kosten in eCostYesterday
!! serialCounter mit Seriennummer des HM Zählers füllen
var serialCounter = "XXXXX";
var dpname = "ENERGY_COUNTER";
var priceKey = "curPrice";
var eEXMemory = dom.GetObject("eEXMemory");
var svCountYesterday = dom.GetObject("eCountYesterday");
var svCostYesterday = dom.GetObject("eCostYesterday");
object devEnergyDP = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);
string tmpSVal = eEXMemory.State();
real devcount = devEnergyDP.State();
real statelast = tmpSVal.ToFloat();
real cnyday = devcount-statelast;
string stdout;string stderr;
string cmd = "/bin/sh -c 'cat /etc/config/energyPrice|sed -r \"s/\\"//g\"'";
system.Exec(cmd, &stdout, &stderr);
string sep = "\n";
string part;
string strCur;
real price;
foreach(part,stdout.Split(sep)) {
string key = part.StrValueByIndex(":",0);
string val = part.StrValueByIndex(":",1);
if (key==priceKey){
price = val.ToFloat();
}
if (key=="currency") {
strCur=val;
}
}
eEXMemory.State(devcount.ToString());
integer kwf = 1;
if (priceKey=="curPrice") {
kwf = 1000;
}
real costyed = price * (cnyday/kwf);
svCountYesterday.State((cnyday/kwf));
svCostYesterday.State(costyed);
Script 2 kann beliebig oft laufen und ermittelt den Vebrauch des aktuellen Tages
!! Energy Costs Part 2
!!
!! Berechnet die verbrauchten kWh seit dem letzten Aufruf von Script 1 also im Idealfall
!! den Verbrauch seit Mitternacht
!!
!! kann beliebig oft laufen
!! funktioniert nur in Zusammenhang mit Script 1 richtig
!!
!! 02/15
!! (c) by thkl
!!
!! Benötigte SystemVariablen:
!! Name : eCountToday Typ: Zahl Einheit kWh
!! Name : eCostToday Typ: Zahl Einheit: EUR
!! Name : eEXMemory Typ: Zeichenkette
!!
!! Verbrauchte Energie wird nach Scriptlauf in eCountToday in kWh gespeichert Kosten in eCostToday
!! serialCounter mit Seriennummer des HM Zählers füllen
var serialCounter = "XXXXX";
var dpname = "ENERGY_COUNTER";
var priceKey = "curPrice";
var eEXMemory = dom.GetObject("eEXMemory");
var svCountToday = dom.GetObject("eCountToday");
var svCostToday = dom.GetObject("eCostToday");
object devEnergyDP = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);
string tmpSVal = eEXMemory.State();
real devcount = devEnergyDP.State();
real statelast = tmpSVal.ToFloat();
real cntoday = devcount-statelast;
string stdout;string stderr;
string cmd = "/bin/sh -c 'cat /etc/config/energyPrice|sed -r \"s/\\"//g\"'";
system.Exec(cmd, &stdout, &stderr);
string sep = "\n";
string part;
string strCur;
real price;
foreach(part,stdout.Split(sep)) {
string key = part.StrValueByIndex(":",0);
string val = part.StrValueByIndex(":",1);
if (key==priceKey){
price = val.ToFloat();
}
if (key=="currency") {
strCur=val;
}
}
integer kwf = 1;
if (priceKey=="curPrice") {
kwf = 1000;
}
real costtoday = price * (cntoday/kwf);
svCountToday.State((cntoday/kwf));
svCostToday.State(costtoday);
Script 3 für die Berrechnung der jährlichen Energiekosten.
Folgende Variablen:
eLastInvoice |
Zahl -> hier den Zählerstand der letzten Energieabrechnung in kWh eintragen |
eStart |
Zeichenkette -> hier den aktuellen Zählerstand und den Zählerstand des Energiemessgerätes in ganzen kWh eintragen und zwar wie folgt: |
|
Zählerstand EZähler|Zählerstand HM Zähler (Beispiel 17456|5 ; wenn der Schwarze Kasten im E-Verteiler 17456 zeigt und gleichzeitig das HM Gerät 5) Achtung das HM Gerät zählt in WattStunden also / 1000 |
eUsedEnergyCost |
Zahl Einheit :EUR |
eUsedEnergyCount |
Zahl Einheit :kWh |
eTotalEnergyCount |
Zahl Einheit :kWh |
|
Die Variable eStart dient der Differenzrechnung um bei jedem Scriptaufruf auf den aktuellen Zählerstand des richtigen EZählers berechnen zu können |
var serialCounter |
"XXXXX"; -> hier wieder Seriennummer anpassen |