Es werden folgende Systemvariablen benötigt:
Name : {| border="1" cellpadding="1" cellspacing="1"|-| eCountToday Typ: <br/>| Zahl Einheit kWh<br/>Name : |-| eCountYesterday Typ: <br/>| Zahl Einheit kWh<br/>Name : |-| eCostToday Typ: <br/>| Zahl Einheit: EUR<br/>Name : |-| eCostYesterday Typ: <br/>| Zahl Einheit : EUR<br/>Name : |-| eEXMemory Typ: <br/>| Zeichenkette Einheit : WH (Einheit is egal is nur Show)<br/>|-| var serialCounter<br/>| "XXXXX"; in jedem der Scripts mit der Seriennummer des eigenen Aktors füllen.<br/>|}
<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'''.====
<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>
==== <br/>'''Script 2''' kann beliebig oft laufen und ermittelt den '''Vebrauch des aktuellen Tages''' ====
<div style="background:#eee; border:1px solid #ccc; padding:5px 10px">
:<code>!! Energy Costs Part 2 <br/>!!<br/>!! Berechnet die verbrauchten kWh seit dem letzten Aufruf von Script 1 also im Idealfall<br/>!! den Verbrauch seit Mitternacht<br/>!!<br/>!! kann beliebig oft laufen<br/>!! funktioniert nur in Zusammenhang mit Script 1 richtig<br/>!!<br/>!! 02/15 <br/>!! (c) by thkl<br/>!!<br/>!! Benötigte SystemVariablen:<br/>!! Name : eCountToday Typ: Zahl Einheit kWh<br/>!! Name : eCostToday Typ: Zahl Einheit: EUR<br/>!! Name : eEXMemory Typ: Zeichenkette<br/>!!<br/>!! Verbrauchte Energie wird nach Scriptlauf in eCountToday in kWh gespeichert Kosten in eCostToday<br/><br/>!! serialCounter mit Seriennummer des HM Zählers füllen<br/><br/><br/>var serialCounter = "XXXXX";<br/>var dpname = "ENERGY_COUNTER";<br/>var priceKey = "curPrice";<br/><br/>var eEXMemory = dom.GetObject("eEXMemory");<br/>var svCountToday = dom.GetObject("eCountToday");<br/>var svCostToday = dom.GetObject("eCostToday");<br/><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 cntoday = 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/>integer kwf = 1;<br/><br/>if (priceKey=="curPrice") {<br/> kwf = 1000;<br/>}<br/>real costtoday = price * (cntoday/kwf);<br/>svCountToday.State((cntoday/kwf));<br/>svCostToday.State(costtoday);</code><br/>
</div>
==== '''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.<br/>Name : '''eStart''' Typ: Zeichenkette -> hier den aktuellen Zählerstand und den Zählerstand des Energiemessgerätes in ganzen kWh eintragen und zwar wie folgt:<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/>Name : eUsedEnergyCost Typ: Zahl Einheit :EUR<br/>Name : eUsedEnergyCount Typ: Zahl Einheit :kWh<br/>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