HM-ES-TX-WM/Strom-Script01: Unterschied zwischen den Versionen
Aus Wikimatic
K |
K |
||
Zeile 5: | Zeile 5: | ||
Es werden folgende Systemvariablen benötigt: | Es werden folgende Systemvariablen benötigt: | ||
− | Name : eCountToday Typ: Zahl Einheit kWh<br/>Name : eCountYesterday Typ: Zahl Einheit kWh<br/>Name : eCostToday Typ: Zahl Einheit: EUR<br/>Name : eCostYesterday Typ: Zahl Einheit : EUR<br/>Name : eEXMemory Typ: Zeichenkette Einheit : WH (Einheit is egal is nur Show) | + | Name : eCountToday Typ: Zahl Einheit kWh<br/>Name : eCountYesterday Typ: Zahl Einheit kWh<br/>Name : eCostToday Typ: Zahl Einheit: EUR<br/>Name : eCostYesterday Typ: Zahl Einheit : EUR<br/>Name : eEXMemory Typ: Zeichenkette Einheit : WH (Einheit is egal is nur Show) |
<br/>var serialCounter = "XXXXX"; in jedem der Scripts mit der Seriennummer des eigenen Aktors füllen. | <br/>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. | Script 1 darf nur einmal am Tag (um 0 Uhr zweckmässigerweise) laufen und ermittelt den gestrigen Verbrauch und speichert den Zählerstand. | ||
+ | <div style="background:#eee; border:1px solid #ccc; padding:5px 10px"> | ||
+ | :<code>!! Energy Costs Part 1 <br/>!!<br/>!! Berechnet die verbrauchten kWh seit dem letzten Aufruf + Preis<br/>!! sollte einmal tgl. um 0 Uhr laufen<br/>!! 02/15 <br/>!! (c) by thkl<br/>!!<br/>!! Benötigte SystemVariablen:<br/>!! Name : eCountYesterday Typ: Zahl Einheit kWh<br/>!! Name : eCostYesterday Typ: Zahl Einheit : EUR<br/>!! Name : eEXMemory Typ: Zeichenkette<br/>!!<br/>!! Verbrauchte Energie wird nach Scriptlauf in eCountYesterday in kWh gespeichert Kosten in eCostYesterday<br/><br/>!! serialCounter mit Seriennummer des HM Zählers füllen<br/><br/>var serialCounter = "XXXXX";<br/>var dpname = "ENERGY_COUNTER";<br/>var priceKey = "curPrice";<br/><br/>var eEXMemory = dom.GetObject("eEXMemory");<br/>var svCountYesterday = dom.GetObject("eCountYesterday");<br/>var svCostYesterday = dom.GetObject("eCostYesterday");<br/>object devEnergyDP = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);<br/>string tmpSVal = eEXMemory.State();<br/>real devcount = devEnergyDP.State();<br/>real statelast = tmpSVal.ToFloat();<br/>real cnyday = devcount-statelast;<br/><br/>string stdout;string stderr;<br/>string cmd = "/bin/sh -c 'cat /etc/config/energyPrice|sed -r \"s/\\"//g\"'";<br/>system.Exec(cmd, &stdout, &stderr);<br/>string sep = "\n";<br/>string part;<br/>string strCur;<br/>real price;<br/><br/>foreach(part,stdout.Split(sep)) {<br/> string key = part.StrValueByIndex(":",0);<br/> string val = part.StrValueByIndex(":",1);<br/> if (key==priceKey){<br/> price = val.ToFloat();<br/> }<br/> if (key=="currency") {<br/> strCur=val;<br/> }<br/>}<br/><br/>eEXMemory.State(devcount.ToString());<br/><br/>integer kwf = 1;<br/><br/>if (priceKey=="curPrice") {<br/> kwf = 1000;<br/>}<br/><br/>real costyed = price * (cnyday/kwf);<br/>svCountYesterday.State((cnyday/kwf));<br/>svCostYesterday.State(costyed);</code><br/> | ||
+ | </div> |
Version vom 12. Februar 2015, 17:21 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.
Es werden folgende Systemvariablen benötigt:
Name : eCountToday Typ: Zahl Einheit kWh
Name : eCountYesterday Typ: Zahl Einheit kWh
Name : eCostToday Typ: Zahl Einheit: EUR
Name : eCostYesterday Typ: Zahl Einheit : EUR
Name : eEXMemory Typ: 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);