NEWS
Ölverbrauch berechnen?
-
ist es möglich, den Ölverbrauch mittels Script zu berechnen? Ich mache das zur Zeit mit der CCU2.
Der Trigger für die bereits vorhandenen Scripte ist das Magnetventil der Ölheizung. Die Variablen der CCU würde ich behalten, da die CCU zur Zeit wesentlich stabiler läuft als der ioBroker. Können die Skripte übernommen werden (natürlich müssen die jetzigen internen Adressen angepasst werden) oder ist muss komplett neu programmiert werden?
Script 1 im dem Trigger auf das Ausschalten des Magnetventils:
!
var AusZeit= dom.GetObject("Brenner letzte Ausschaltzeit"); var EinZeit= dom.GetObject("Brenner letzte Einschaltzeit"); var TankGes= dom.GetObject("Brenner Tankinhalt bei letzter Fuellung").Value(); var KumTankAkt= dom.GetObject("Brenner Tankinhalt aktuell"); var KumZeitF= dom.GetObject("Brenner Betriebsstunden seit letzter Fuellung"); var KumVerbrauchF= dom.GetObject("Brenner Verbrauch seit letzter Fuellung"); var KumZeitJ= dom.GetObject("Brenner Betriebsstunden laufendes Kalenderjahr"); var KumVerbrauchJ= dom.GetObject("Brenner Verbrauch laufendes Kalenderjahr"); var KumZeitM= dom.GetObject("Brenner Betriebsstunden laufender Monat"); var KumVerbrauchM= dom.GetObject("Brenner Verbrauch laufender Monat"); var KumZeitW= dom.GetObject("Brenner Betriebsstunden laufende Woche"); var KumVerbrauchW= dom.GetObject("Brenner Verbrauch laufende Woche"); var KumZeitT= dom.GetObject("Brenner Betriebsstunden heute"); var KumVerbrauchT= dom.GetObject("Brenner Verbrauch heute"); ! AusZeit.State(system.Date("%F %T")); / Speichern der Ausschaltzeit time t = EinZeit.Variable().ToTime(); / Den Einschaltzeit String aus der Systemvariablen in ein Zeitobjekt umwandeln time t1 = system.Date("%F %T").ToTime(); / Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln var x = t.ToInteger(); ! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln var x1 = t1.ToInteger(); ! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln var x0 = 0.01*(x1-x)/36; /Die Differenz ist die Einschaltdauer in Stunden umgerechnet var gelaufenF = x0 + KumZeitF.Variable(); / Die Einschaltdauer seit der letzten Füllung kumulieren = Betriebsstunden seit der letzten Füllung KumZeitF.State (gelaufenF); / Die Betriebsstunden seit der letzten Füllung in die Systemvariable einstellen var verbrauchtF = gelaufenF * 1.15 * 1.197; / Berechnung von Verbrauch in Liter mit 1,15 kg/h seit der letzten Füllung KumVerbrauchF.State (verbrauchtF); / Verbrauch seit der letzten Füllung in die Systemvariable einstellen var tankinhalt = TankGes - verbrauchtF; / Berechnung Tankinhalts in Litern KumTankAkt.State (tankinhalt); /Tankinhalt in die Systemvariable einstellen var gelaufenJ = x0 + KumZeitJ.Variable(); / Die Einschaltdauer im laufenden Kalenderjahr kumulieren = Betriebsstunden KumZeitJ.State (gelaufenJ); / Die Betriebsstunden im laufenden Kalenderjahr in die Systemvariable einstellen var verbrauchtJ = gelaufenJ * 1.15 * 1.197; / Berechnung von Verbrauch in Liter mit 1,15 kg/h im laufenden Kalenderjahr KumVerbrauchJ.State (verbrauchtJ); / Verbrauch im laufenden Kalenderjahr in die Systemvariable einstellen var gelaufenM = x0 + KumZeitM.Variable(); / Die Einschaltdauer im laufenden Kalendermonat kumulieren = Betriebsstunden KumZeitM.State (gelaufenM); / Die Betriebsstunden im laufenden Kalendermonat in die Systemvariable einstellen var verbrauchtM = gelaufenM * 1.15 * 1.197; / Berechnung von Verbrauch in Liter mit 1,15 kg/h im laufenden Kalendermonat KumVerbrauchM.State (verbrauchtM); /Verbrauch im laufenden Kalendermonat in die Systemvariable einstellen var gelaufenW = x0 + KumZeitW.Variable(); /Die Einschaltdauer in der laufenden Kalenderwoche kumulieren = Betriebsstunden KumZeitW.State (gelaufenW); /Die Betriebsstunden in der laufenden Kalenderwoche in die Systemvariable einstellen var verbrauchtW = gelaufenW * 1.15 * 1.197; / Berechnung von Verbrauch in Liter mit 1,15 kg/h in der laufenden Kalenderwoche KumVerbrauchW.State (verbrauchtW); / Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen var gelaufenT = x0 + KumZeitT.Variable(); / Die Einschaltdauer heute kumulieren = Betriebsstunden KumZeitT.State (gelaufenT); /Die Betriebsstunden heute in die Systemvariable einstellen var verbrauchtT = gelaufenT * 1.15 * 1.197; /Berechnung von Verbrauch in Liter mit 1,15 kg/h heute KumVerbrauchT.State (verbrauchtT); /Verbrauch heute in die Systemvariable einstellen !
Script 2 mit dem Trigger auf dem Einschalten des Magnetventils:
! ````
var EinZeit = dom.GetObject("Brenner letzte Einschaltzeit");
EinZeit.State(system.Date("%F %T")) /Speichern der EinschaltzeitGruß Thomas
-
Hi Thomas,
ich habe das gerade programmiert, eher als Betriebszeitenzähler mit Verbrauchsberechnungslogik.
sieht dann so z.B. aus anhand von Strom (ist aber das gleiche für Oel von der Logik her)
Ich werde die neue Funktion wahrscheinlich morgen veröffentlichen
vG
-
das find ich ja klasse!
Für die Stromberechnung nutze ich ich einen Hauptstromzähler mit Impulsausgang und ein völlig anderes Script:
! ````
var zA = dom.GetObject('Strom Zaehlerstand');
var aA = dom.GetObject('Strom aktuell');
var vLg = dom.GetObject('Strom Verbrauch seit letzter Ablesung');
var vTg = dom.GetObject('Strom Verbrauch heute');
var vWg = dom.GetObject('Strom Verbrauch laufende Woche');
var vMg = dom.GetObject('Strom Verbrauch laufender Monat');
var vJg = dom.GetObject('Strom Verbrauch laufendes Kalenderjahr');
zA.State(zA.State()+(1.0/100));
vLg.State(vLg.State()+(1.0/100));
vTg.State(vTg.State()+(1.0/100));
vWg.State(vWg.State()+(1.0/100));
vMg.State(vMg.State()+(1.0/100));
vJg.State(vJg.State()+(1.0/100));
var ts1 = zA.Timestamp();
var ts2 = aA.Timestamp();
var tz = aA.State(36000/(ts1.ToInteger()-ts2.ToInteger()));Die Skripte sind beide nicht auf meinem mist gewachsen. hab ich mir irgendwo (weiß leider nicht mehr wo, sonst würde ich gerne drauf verlinken) zusammen geklaut… Speicherst du die Daten in internen Variablen oder gibst du diese wieder an die CCU zurück? Gruß Thomas
-
Hi Thomas,
die werden in ioBroker gespeichert. Die Datenpunkte aus der CCU stehen aber zur Verfügung und können als Trigger eingetragen werden.
Die Anzahl der verwendeten Datenpunkte hängt von den Einstellungen ab, z.B. mit Historie oder ohne, mit Tages, Wochen, Monats, Jahreskumulation oder ohne etc.
Bisher ist es als Betriebszeitenscript veröffentlicht, allerdings habe ich das Script komplett umgeschrieben und erweitert. Damit sind Verbrauchdarstellungen möglich, auch bewertete Verbräuche, Umrechnungen anderer Art etc.
link zum Beitrag:
http://forum.iobroker.com/viewtopic.php?f=21&t=2175
aber wie gesagt. Diese Version enthält noch nicht die neuen Funktionen. Ich schicke dir mal die letzte Version via PN. Mal zum schauen.
vG