HM-ES-TX-WM/Strom-Script01: Unterschied zwischen den Versionen
K |
K |
||
Zeile 3: | Zeile 3: | ||
[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] | ||
− | Es werden folgende Systemvariablen benötigt: | + | <code>__TOC__</code> |
+ | |||
+ | 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" |
Version vom 12. Februar 2015, 17:40 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.
__TOC__
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:
Name :eLastInvoice Typ:Zahl -> hier den Zählerstand der letzten Energieabrechnung in kWh eintragen.
Name : eStart Typ: 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
Name : eUsedEnergyCost Typ: Zahl Einheit :EUR
Name : eUsedEnergyCount Typ: Zahl Einheit :kWh
Name : eTotalEnergyCount Typ: 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.
Script :
var serialCounter = "XXXXX"; -> hier wieder Seriennummer anpassen