Änderungen
/* Script 4 setzt die CCU interne Zähl-Variable auf den aktuellen Zählerstand */
Thomas hat 2 3 Scripte geschrieben, die den heutigen und gestrigen Verbrauch in eine SysVar schreiben.<br/>Ausserdem werden die Kosten aus dem entsprechenden Strompreis Eintrag in der Systemsteuerung der CCU berechnet.
[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__<br/><span style="line-height: 1.6">Es werden folgende Systemvariablen für Script 1 und Script 2 benötigt:</span>
{| border="1" cellpadding="1" cellspacing="1"
| eEXMemory<br/>
| Zeichenkette Einheit : WH (Einheit is egal is nur Show)<br/>
|}
'''Hinweis''': Bei Nutzung vom mehreren Energierzählern müssen die Variablen für jeden Zähler eindeutig sein. In den Scripten lässt sich das sehr einfach mit einem Texteditor ändern, indem die Funktion Suchen / Ersetzen benutzt wird.<br/>Beispiel: eCountToday -> eCountToday01 oder gasCountToday<div style="background:#eee; border:1px solid #ccc; padding:5px 10px">'''var serialCounter'''<br/>"XXXXX"; in jedem der Scripts mit der Seriennummer des eigenen Aktors füllen<br/></div> ---- === '''Script 1''' darf nur einmal am Tag (um 0 Uhr zweckmässigerweise) laufen und '''ermittelt den gestrigen Verbrauch und speichert den Zählerstand'''. ==== ''Universal für Strom und Gas sowie Einsatz von CuxD Exec. Bitte Hinweise am Anfang des Scrips beachten!!''
<div style="background:#eee; border:1px solid #ccc; padding:5px 10px">
:<codediv id="bloop_customfont" style="margin: 0px">!! Energy Costs Part 1 <br/div><div id="bloop_customfont" style="margin: 0px">!!<br/div><div id="bloop_customfont" style="margin: 0px">!! Berechnet die verbrauchten kWh seit dem letzten Aufruf + Preis<br/div><div id="bloop_customfont" style="margin: 0px">!! sollte einmal tgl. um 0 Uhr laufen<br/div><div id="bloop_customfont" style="margin: 0px">!! 02/15 <br/div><div id="bloop_customfont" style="margin: 0px">!! (c) by thkl<br/div><div id="bloop_customfont" style="margin: 0px">!!<br/div><div id="bloop_customfont" style="margin: 0px">!! Benötigte SystemVariablen:<br/div><div id="bloop_customfont" style="margin: 0px">!! Name : eCountYesterday Typ: Zahl Einheit kWh/m3<br/div><div id="bloop_customfont" style="margin: 0px">!! Name : eCostYesterday Typ: Zahl Einheit : EUR<br/div><div id="bloop_customfont" style="margin: 0px">!! Name : eEXMemory Typ: Zeichenkette<br/div><div id="bloop_customfont" style="margin: 0px">!!<br/div><div id="bloop_customfont" style="margin: 0px">!! Verbrauchte Energie wird nach Scriptlauf in eCountYesterday in kWh /m3 gespeichert Kosten in eCostYesterday<br/div><br/div id="bloop_customfont" style="margin: 0px">!! serialCounter mit Seriennummer des HM Zählers füllen<br/div><div id="bloop_customfont" style="margin: 0px">!! useAsGasCounter = 0 ; Elektroenergie wird gezählt =1 Gas wird gezählt</div><div id="bloop_customfont" style="margin: 0px">!! cuxddevice wenn mit Seriennummer eines CuxD Exec Gerätes gefüllt wird das sonst system.exec verwendet</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">var serialCounter = "XXXXX";</div><div id="bloop_customfont" style="margin: 0px">var useAsGasCounter = 0;</div><div id="bloop_customfont" style="margin: 0px">var cuxddevice = "";</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">var dpname = "ENERGY_COUNTER";<br/div>var priceKey <div id= "curPricebloop_customfont"style="margin: 0px">if (useAsGasCounter==1) {</div><div id="bloop_customfont" style="margin: 0px"> dpname = "GAS_ENERGY_COUNTER";</div><div id="bloop_customfont" style="margin: 0px">}</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">string stdout;string stderr;</div><div id="bloop_customfont" style="margin: 0px">string cmd = "/bin/sh -c 'cat /etc/config/energyPrice|sed -r \"s/\\"//g\"'";</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">var eEXMemory = dom.GetObject("eEXMemory");<br/div><div id="bloop_customfont" style="margin: 0px">var svCountYesterday = dom.GetObject("eCountYesterday");<br/div><div id="bloop_customfont" style="margin: 0px">var svCostYesterday = dom.GetObject("eCostYesterday");<br/div><div id="bloop_customfont" style="margin: 0px">object devEnergyDP = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);<br/div><div id="bloop_customfont" style="margin: 0px">string tmpSVal = eEXMemory.State();<br/div><div id="bloop_customfont" style="margin: 0px">real devcount = devEnergyDP.State();<br/div><div id="bloop_customfont" style="margin: 0px">real statelast = tmpSVal.ToFloat();<br/div><div id="bloop_customfont" style="margin: 0px">real cnyday = devcount-statelast;<br/div><div id="bloop_customfont" style="margin: 0px"><br/>string stdout;string stderr;<br/div>string cmd <div id= "bloop_customfont" style="margin: 0px">if (cuxddevice!="") {</bin/sh -c 'cat /etc/config/energyPrice|sed -r \div><div id="s/\\bloop_customfont"style="margin: 0px"> dom.GetObject("CUxD."#cuxddevice#":1.CMD_SETS").State(cmd);</div><div id="bloop_customfont" style="margin: 0px"> dom.GetObject("CUxD."#cuxddevice#":1.CMD_QUERY_RET").State(1);</g\div><div id="'bloop_customfont"style="margin: 0px"> stdout = dom.GetObject("CUxD."#cuxddevice#":1.CMD_RETS").State();<br/div><div id="bloop_customfont" style="margin: 0px">} else {</div><div id="bloop_customfont" style="margin: 0px"> system.Exec(cmd, &stdout, &stderr);</div><div id="bloop_customfont" style="margin: 0px">}</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">string sep = "\n";<br/div><div id="bloop_customfont" style="margin: 0px">string part;<br/div><div id="bloop_customfont" style="margin: 0px">string strCur;</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">real pricepricekwh=0;<br/div><div id="bloop_customfont" style="margin: 0px">real condvalue=0;</div><div id="bloop_customfont" style="margin: 0px">real heatvalue=0;</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">foreach(part,stdout.Split(sep)) {<br/div><div id="bloop_customfont" style="margin: 0px"> string key = part.StrValueByIndex(":",0);<br/div><div id="bloop_customfont" style="margin: 0px"> string val = part.StrValueByIndex(":",1);<br/div><div id="bloop_customfont" style="margin: 0px"> </div><div id="bloop_customfont" style="margin: 0px"> if (useAsGasCounter==1) {</div><div id="bloop_customfont" style="margin: 0px"> if (key==priceKey"gasHeatingValue"){<br/div><div id="bloop_customfont" style="margin: 0px"> price heatvalue = val.ToFloat();<br/div><div id="bloop_customfont" style="margin: 0px"> }</div><div id="bloop_customfont" style="margin: 0px"> </div><div id="bloop_customfont" style="margin: 0px"> if (key=="gasConditionNumber"){</div><div id="bloop_customfont" style="margin: 0px"> condvalue = val.ToFloat();</div><div id="bloop_customfont" style="margin: 0px"> }</div><div id="bloop_customfont" style="margin: 0px"> </div><div id="bloop_customfont" style="margin: 0px"> if (key=="gasPrice"){</div><div id="bloop_customfont" style="margin: 0px"> pricekwh = val.ToFloat();</div><div id="bloop_customfont" style="margin: 0px"> }</div><div id="bloop_customfont" style="margin: 0px"> } else {</div><div id="bloop_customfont" style="margin: 0px"> if (key=="curPrice"){</div><div id="bloop_customfont" style="margin: 0px"> pricekwh = val.ToFloat();</div><div id="bloop_customfont" style="margin: 0px"> }</div><div id="bloop_customfont" style="margin: 0px"> }</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px"> if (key=="currency") {<br/div><div id="bloop_customfont" style="margin: 0px"> strCur=val;<br/div><div id="bloop_customfont" style="margin: 0px"> }<br/div><div id="bloop_customfont" style="margin: 0px">}<br/div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">eEXMemory.State(devcount.ToString());<br/div><div id="bloop_customfont" style="margin: 0px"><br/>integer kwf </div><div id="bloop_customfont" style="margin: 0px">if (useAsGasCounter== 1) {</div><div id="bloop_customfont" style="margin: 0px"> real consumtion = 0;<br/div><brdiv id="bloop_customfont" style="margin: 0px"> consumtion = heatvalue * condvalue * cnyday;</div>if (priceKey<div id="bloop_customfont" style="curPricemargin: 0px") {> real costyed = pricekwh * consumtion;<br/div><div id="bloop_customfont" style="margin: 0px"> kwf svCountYesterday.State((cnyday));</div><div id= 1000"bloop_customfont" style="margin: 0px"> svCostYesterday.State(costyed);<br/div><div id="bloop_customfont" style="margin: 0px">}else {<br/div><br/div id="bloop_customfont" style="margin: 0px"> real costyed = price pricekwh * (cnyday/kwf1000);<br/div><div id="bloop_customfont" style="margin: 0px"> svCountYesterday.State((cnyday/kwf1000));<br/div><div id="bloop_customfont" style="margin: 0px"> svCostYesterday.State(costyed);</codediv><div id="bloop_customfont" style="margin: 0px">}<br/></div>
</div>
<div style="background:#eee; border:1px solid #ccc; padding:5px 10px">
:<codediv id="bloop_customfont" style="margin: 0px">!! Energy Costs Part 2 <br/div><div id="bloop_customfont" style="margin: 0px">!!<br/div><div id="bloop_customfont" style="margin: 0px">!! Berechnet die verbrauchten kWh seit dem letzten Aufruf von Script 1 also im Idealfall<br/div><div id="bloop_customfont" style="margin: 0px">!! den Verbrauch seit Mitternacht<br/div><div id="bloop_customfont" style="margin: 0px">!!<br/div><div id="bloop_customfont" style="margin: 0px">!! kann beliebig oft laufen<br/div><div id="bloop_customfont" style="margin: 0px">!! funktioniert nur in Zusammenhang mit Script 1 richtig<br/div><div id="bloop_customfont" style="margin: 0px">!!<br/div><div id="bloop_customfont" style="margin: 0px">!! 02/15 <br/div><div id="bloop_customfont" style="margin: 0px">!! (c) by thkl<br/div><div id="bloop_customfont" style="margin: 0px">!!<br/div><div id="bloop_customfont" style="margin: 0px">!! Benötigte SystemVariablen:<br/div><div id="bloop_customfont" style="margin: 0px">!! Name : eCountToday Typ: Zahl Einheit kWh<br/div><div id="bloop_customfont" style="margin: 0px">!! Name : eCostToday Typ: Zahl Einheit: EUR<br/div><div id="bloop_customfont" style="margin: 0px">!! Name : eEXMemory Typ: Zeichenkette<br/div><div id="bloop_customfont" style="margin: 0px">!!<br/div><div id="bloop_customfont" style="margin: 0px">!! Verbrauchte Energie wird nach Scriptlauf in eCountToday in kWh gespeichert Kosten in eCostToday<br/div><br/div id="bloop_customfont" style="margin: 0px">!! serialCounter mit Seriennummer des HM Zählers füllen<br/div><brdiv id="bloop_customfont" style="margin: 0px">!! useAsGasCounter true = Gaszähler ; false = Elektro</div><div id="bloop_customfont" style="margin: 0px"><br/>var </div><div id="bloop_customfont" style="margin: 0px">string serialCounter = "XXXXX";</div><div id="bloop_customfont" style="margin: 0px">boolean useAsGasCounter = false;</div><div id="bloop_customfont" style="margin: 0px">string cuxddevice = "";</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">var dpname = "ENERGY_COUNTER";<br/div>var priceKey <div id= "curPricebloop_customfont" style="margin: 0px">if (useAsGasCounter==true) {</div><div id="bloop_customfont" style="margin: 0px"> dpname = "GAS_ENERGY_COUNTER";</div><div id="bloop_customfont" style="margin: 0px">}</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">string stdout;string stderr;</div><div id="bloop_customfont" style="margin: 0px">string cmd = "/bin/sh -c 'cat /etc/config/energyPrice|sed -r \"s/\\"//g\"'";</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">var eEXMemory = dom.GetObject("eEXMemory");<br/div><div id="bloop_customfont" style="margin: 0px">var svCountToday = dom.GetObject("eCountToday");<br/div><div id="bloop_customfont" style="margin: 0px">var svCostToday = dom.GetObject("eCostToday");<br/div><br/div id="bloop_customfont" style="margin: 0px">object devEnergyDP = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);<br/div><div id="bloop_customfont" style="margin: 0px">string tmpSVal = eEXMemory.State();<br/div><div id="bloop_customfont" style="margin: 0px">real devcount = devEnergyDP.State();<br/div><div id="bloop_customfont" style="margin: 0px">real statelast = tmpSVal.ToFloat();<br/div><div id="bloop_customfont" style="margin: 0px">real cntoday = devcount-statelast;<br/div><div id="bloop_customfont" style="margin: 0px"><br/>string stdout;string stderr;<br/div>string cmd <div id= "bloop_customfont" style="margin: 0px">if (cuxddevice!="") {</bin/sh -c 'cat /etc/config/energyPrice|sed -r \div><div id="sbloop_customfont" style="margin: 0px"> dom.GetObject("CUxD."#cuxddevice#":1.CMD_SETS").State(cmd);</\\div><div id="bloop_customfont" style="margin: 0px"> dom.GetObject("CUxD."#cuxddevice#":1.CMD_QUERY_RET").State(1);<//g\div><div id="'bloop_customfont"style="margin: 0px"> stdout = dom.GetObject("CUxD."#cuxddevice#":1.CMD_RETS").State();<br/div><div id="bloop_customfont" style="margin: 0px">} else {</div><div id="bloop_customfont" style="margin: 0px"> system.Exec(cmd, &stdout, &stderr);</div><div id="bloop_customfont" style="margin: 0px">}</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">string sep = "\n";<br/div><div id="bloop_customfont" style="margin: 0px">string part;<br/div><div id="bloop_customfont" style="margin: 0px">string strCur;<br/div><div id="bloop_customfont" style="margin: 0px">real pricepricekwh=0.0;<br/div><div id="bloop_customfont" style="margin: 0px">real condvalue=0.0;</div><div id="bloop_customfont" style="margin: 0px">real heatvalue=0.0;</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">foreach(part,stdout.Split(sep)) {<br/div><div id="bloop_customfont" style="margin: 0px"> string key = part.StrValueByIndex(":",0);<br/div><div id="bloop_customfont" style="margin: 0px"> string val = part.StrValueByIndex(":",1);<br/div><div id="bloop_customfont" style="margin: 0px"> </div><div id="bloop_customfont" style="margin: 0px"> if (keyuseAsGasCounter==priceKeytrue){<br/div><div id="bloop_customfont" style="margin: 0px"> price if (key=="gasHeatingValue"){heatvalue = val.ToFloat();}<br/div><div id="bloop_customfont" style="margin: 0px"> if (key=="gasConditionNumber"){condvalue = val.ToFloat(); }<br/div><div id="bloop_customfont" style="margin: 0px"> if (key=="currencygasPrice") {pricekwh = val.ToFloat();}<br/div><div id="bloop_customfont" style="margin: 0px"> } else {</div><div id="bloop_customfont" style="margin: 0px"> strCur if (key=="curPrice"){pricekwh =val.ToFloat();}<br/div><div id="bloop_customfont" style="margin: 0px"> }<br/div><div id="bloop_customfont" style="margin: 0px">}<br/div><div id="bloop_customfont" style="margin: 0px"><br/>integer kwf </div><div id= 1"bloop_customfont" style="margin: 0px">if (useAsGasCounter==true) {</div><div id="bloop_customfont" style="margin: 0px"> real consumtion = heatvalue * condvalue * cntoday;<br/div><brdiv id="bloop_customfont" style="margin: 0px"> real costtoday = pricekwh * consumtion;</div>if (priceKey<div id="bloop_customfont" style="curPricemargin: 0px"> svCountToday.State(cntoday) {;<br/></div><div id="bloop_customfont" style="margin: 0px"> kwf = 1000 svCostToday.State(costtoday);<br/div><div id="bloop_customfont" style="margin: 0px">}else {<br/div><div id="bloop_customfont" style="margin: 0px"> real costtoday = price pricekwh * (cntoday/kwf1000);<br/div><div id="bloop_customfont" style="margin: 0px"> svCountToday.State((cntoday/kwf1000));<br/div><div id="bloop_customfont" style="margin: 0px"> svCostToday.State(costtoday);</codediv><div id="bloop_customfont" style="margin: 0px">}<br/></div>
</div>
---- === '''Script 2a''' ist eine Kombination aus Script 1 + 2 === ''(Werte für heute, gestern, universell Strom / Gas und CuxD)'' ''Bitte Hinweise am Anfang des Scrips beachten!!''<div style="background:#eee; border:1px solid #ccc; padding:5px 10px"><div id="bloop_customfont" style="font-family:Helvetica,Arial; font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto"><div id="bloop_customfont" style="margin: 0px">!! Energy Costs Part 2a </div><div id="bloop_customfont" style="margin: 0px">!!</div><div id="bloop_customfont" style="margin: 0px">!! Berechnet die verbrauchten kWh/m3 und den Preis für Gas/Strom für den aktuellen Tag </div><div id="bloop_customfont" style="margin: 0px">!! Der erste Aufruf des Tages speichert den Verbrauch des Vortages </div><div id="bloop_customfont" style="margin: 0px">!!</div><div id="bloop_customfont" style="margin: 0px">!! kann beliebig oft laufen sollte aber günstigerweise mindestens einmal jeden Tag um 0 Uhr laufen</div><div id="bloop_customfont" style="margin: 0px">!!</div><div id="bloop_customfont" style="margin: 0px">!! 02/15 </div><div id="bloop_customfont" style="margin: 0px">!! (c) by thkl</div><div id="bloop_customfont" style="margin: 0px">!!</div><div id="bloop_customfont" style="margin: 0px">!! Benötigte SystemVariablen:</div><div id="bloop_customfont" style="margin: 0px">!! Name : eCountToday Typ: Zahl Einheit kWh / m3</div><div id="bloop_customfont" style="margin: 0px">!! Name : eCostToday Typ: Zahl Einheit: EUR</div><div id="bloop_customfont" style="margin: 0px">!!</div><div id="bloop_customfont" style="margin: 0px">!! Name : eCountYesterday Typ: Zahl Einheit kWh / m3</div><div id="bloop_customfont" style="margin: 0px">!! Name : eCostYesterday Typ: Zahl Einheit: EUR</div><div id="bloop_customfont" style="margin: 0px">!!</div><div id="bloop_customfont" style="margin: 0px">!! Name : eEXMemory Typ: Zeichenkette</div><div id="bloop_customfont" style="margin: 0px">!!</div><div id="bloop_customfont" style="margin: 0px">!! serialCounter mit Seriennummer des HM Zählers füllen</div><div id="bloop_customfont" style="margin: 0px">!! useAsGasCounter = true -> Gaszähler ; false -> Elektrozähler</div><div id="bloop_customfont" style="margin: 0px">!! cuxddevice = Seriennummer des CuxD Exec Devices (optional - sonst wird system.exe genutzt)</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">string serialCounter = "";</div><div id="bloop_customfont" style="margin: 0px">boolean useAsGasCounter = false;</div><div id="bloop_customfont" style="margin: 0px">string cuxddevice = "";</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">!! ================== do not change anything below ==========</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">var dpname = "ENERGY_COUNTER";</div><div id="bloop_customfont" style="margin: 0px">if (useAsGasCounter==true) {dpname = "GAS_ENERGY_COUNTER";}<br/></div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">string stdout;string stderr;</div><div id="bloop_customfont" style="margin: 0px">string cmd = "/bin/sh -c 'cat /etc/config/energyPrice|sed -r \"s/\\"//g\"'";</div><div id="bloop_customfont" style="margin: 0px">object devEnergyDP = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);</div><div id="bloop_customfont" style="margin: 0px">var eEXMemory = dom.GetObject("eEXMemory");</div><div id="bloop_customfont" style="margin: 0px">!! integer lastSetMemory = eEXMemory.Timestamp().ToInteger();<br/>integer day = system.Date("%j").ToInteger();<br/>integer year = system.Date("%Y");<br/>integer lastSetDay = eEXMemory.Timestamp().Yearday();<br/>integer lastSetYear = eEXMemory.Timestamp().Year();<br/>boolean braveNewDay = false;<br/>if ((day>lastSetDay) || (year > lastSetYear)) {<br/> braveNewDay = true;<br/>}<br/></div><div style="margin: 0px"><br/>string tmpSVal = eEXMemory.State();</div><div id="bloop_customfont" style="margin: 0px">real devcount = devEnergyDP.State();</div><div id="bloop_customfont" style="margin: 0px">real statelast = tmpSVal.ToFloat();</div><div id="bloop_customfont" style="margin: 0px">real cnyday = devcount-statelast;</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">if (cuxddevice!="") {</div><div id="bloop_customfont" style="margin: 0px"> dom.GetObject("CUxD."#cuxddevice#":1.CMD_SETS").State(cmd);</div><div id="bloop_customfont" style="margin: 0px"> dom.GetObject("CUxD."#cuxddevice#":1.CMD_QUERY_RET").State(1);</div><div id="bloop_customfont" style="margin: 0px"> stdout = dom.GetObject("CUxD."#cuxddevice#":1.CMD_RETS").State();</div><div id="bloop_customfont" style="margin: 0px">} else {</div><div id="bloop_customfont" style="margin: 0px"> system.Exec(cmd, &stdout, &stderr);</div><div id="bloop_customfont" style="margin: 0px">}</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">string sep = "\n";</div><div id="bloop_customfont" style="margin: 0px">string part;</div><div id="bloop_customfont" style="margin: 0px">string strCur;</div><div id="bloop_customfont" style="margin: 0px">real pricekwh=0.0;</div><div id="bloop_customfont" style="margin: 0px">real condvalue=0.0;</div><div id="bloop_customfont" style="margin: 0px">real heatvalue=0.0;</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">foreach(part,stdout.Split(sep)) {</div><div id="bloop_customfont" style="margin: 0px"> string key = part.StrValueByIndex(":",0);</div><div id="bloop_customfont" style="margin: 0px"> string val = part.StrValueByIndex(":",1);</div><div id="bloop_customfont" style="margin: 0px"> </div><div id="bloop_customfont" style="margin: 0px"> if (useAsGasCounter==true) {</div><div id="bloop_customfont" style="margin: 0px"> if (key=="gasHeatingValue"){heatvalue = val.ToFloat();}</div><div id="bloop_customfont" style="margin: 0px"> if (key=="gasConditionNumber"){condvalue = val.ToFloat();}</div><div id="bloop_customfont" style="margin: 0px"> if (key=="gasPrice"){pricekwh = val.ToFloat();}</div><div id="bloop_customfont" style="margin: 0px"> } else {</div><div id="bloop_customfont" style="margin: 0px"> if (key=="curPrice"){pricekwh = val.ToFloat();}</div><div id="bloop_customfont" style="margin: 0px"> }</div><div id="bloop_customfont" style="margin: 0px">}</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">if (braveNewDay==true) {</div><div id="bloop_customfont" style="margin: 0px"> eEXMemory.State(devcount.ToString());</div><div id="bloop_customfont" style="margin: 0px">}</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">real enerycost = 0.0;</div><div id="bloop_customfont" style="margin: 0px">real enerycount = 0.0;</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">if (useAsGasCounter==true) {</div><div id="bloop_customfont" style="margin: 0px"> real consumtion = 0;</div><div id="bloop_customfont" style="margin: 0px"> consumtion = heatvalue * condvalue * cnyday;</div><div id="bloop_customfont" style="margin: 0px"> enerycost = pricekwh * consumtion;</div><div id="bloop_customfont" style="margin: 0px"> enerycount = cnyday;</div><div id="bloop_customfont" style="margin: 0px">} else {</div><div id="bloop_customfont" style="margin: 0px"> enerycount = (cnyday/1000);</div><div id="bloop_customfont" style="margin: 0px"> enerycost = pricekwh * enerycount;</div><div id="bloop_customfont" style="margin: 0px">}</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px">if (braveNewDay==true) {</div><div id="bloop_customfont" style="margin: 0px"> dom.GetObject("eCountYesterday").State(enerycount);</div><div id="bloop_customfont" style="margin: 0px"> dom.GetObject("eCostYesterday").State(enerycost);</div><div id="bloop_customfont" style="margin: 0px">} else {</div><div id="bloop_customfont" style="margin: 0px"> dom.GetObject("eCountToday").State(enerycount);</div><div id="bloop_customfont" style="margin: 0px"> dom.GetObject("eCostToday").State(enerycost);</div><div id="bloop_customfont" style="margin: 0px">}</div><div id="bloop_customfont" style="margin: 0px"><br/></div><div id="bloop_customfont" style="margin: 0px"><br/></div></div></div>===---- === '''Script 3 ''' für die Berrechnung der ''jährlichen Energiekosten'''Strom oder Gas universell. ==== Hier wird schon zwischen Elektro und Gas Zähler unterschieden. Auch kann optional ein CuxD Exec Device statt system.exec verwendet werden. Siehe Kommentare im Script
Folgende Variablen: