Oil usage from on of time of the heater

hello
i am new in homeassistant. i like to see my oil usage. i made a template which shows on and of of my heater. now i like to know the time it was running and this i can then multiply by a no so i know the usage. i made it in iobroker like this:

aka / important is actually just runningtime (einschaltdauer) and this multiply with the factor 1.68 and 1.197

var GelaufenD, Betriebsstunden_Brenner, gelaufenF, GelaufenM, GelaufenJ, Tankinhalt, Einschaltsdauer_in_ms, Einschaltzeit, Einschaltdauer_in_h, Ausschaltzeit, Verbrauch_KG_h, kg_in_l_umrechnungsfaktor;
 
// Beschreibe diese Funktion …
async function Einschaltdauer() {
  // Addieren zu vorhanden
  Einschaltsdauer_in_ms = Ausschaltzeit - Einschaltzeit;
  Einschaltdauer_in_h = Einschaltsdauer_in_ms / 3600000;
}
 
// Beschreibe diese Funktion …
async function laufender_Tag_aktuallisieren() {
  GelaufenD = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_heute").val + Einschaltdauer_in_h;
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_heute"/*Brenner_Betriebsstunden_heute*/, GelaufenD, true);
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_heute"/*Brenner_Verbrauch_heute*/, (GelaufenD * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor), true);
}
 
// Beschreibe diese Funktion …
async function Betriebsstunden_aktuallisieren() {
  Betriebsstunden_Brenner = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebstunden_Total").val + Einschaltdauer_in_h;
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebstunden_Total"/*Brenner_Betriebstunden_Total*/, Betriebsstunden_Brenner, true);
}
 
// Beschreibe diese Funktion …
async function Seit_letzter_Fuellung_aktualisieren() {
  gelaufenF = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_seit_letzter_Fuellung").val + Einschaltdauer_in_h;
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_seit_letzter_Fuellung"/*Brenner_Betriebsstunden_seit_letzter_Fuellung*/, gelaufenF, true);
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_seit_letzter_Fuellung"/*Brenner_Verbrauch_seit_letzter_Fuellung*/, (gelaufenF * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor), true);
}
 
// Beschreibe diese Funktion …
async function laufender_Monat_aktuallisieren() {
  GelaufenM = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufender_Monat").val + Einschaltdauer_in_h;
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufender_Monat"/*Brenner_Betriebsstunden_laufender_Monat*/, GelaufenM, true);
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_laufender_Monat"/*Brenner_Verbrauch_laufender_Monat*/, (GelaufenM * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor), true);
}
 
// Beschreibe diese Funktion …
async function laufendes_Jahr_aktuallisieren() {
  GelaufenJ = getState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufendes_Kalenderjahr").val + Einschaltdauer_in_h;
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufendes_Kalenderjahr"/*Brenner_Betriebsstunden_laufendes_Kalenderjahr*/, GelaufenJ, true);
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_laufendes_Kalenderjahr"/*Brenner_Verbrauch_laufendes_Kalenderjahr*/, (GelaufenJ * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor), true);
}
 
// Beschreibe diese Funktion …
async function Tankinhalt2() {
  Tankinhalt = getState("EigeneDatenpunkte.0.Heizung.Tankinhalt_nach_letzter_fuellung").val - getState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_seit_letzter_Fuellung").val;
  setState("EigeneDatenpunkte.0.Heizung.Tankinhalt_aktuell"/*Tankinhalt_aktuell*/, Tankinhalt, true);
}
 
// Beschreibe diese Funktion …
async function Telegrammeldung() {
  sendTo("telegram", "send", {
      text: (['Brenner ist gelaufen für:  ',Math.round(Einschaltdauer_in_h*100)/100,'\n','Verbrauch: ',Math.round((Einschaltdauer_in_h * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor)*100)/100,'\n','Total Betriebsstunden heute: ',Math.round(GelaufenD*100)/100].join(''))
  });
  console.debug("telegram: " + (['Brenner ist gelaufen für:  ',Math.round(Einschaltdauer_in_h*100)/100,'\n','Verbrauch: ',Math.round((Einschaltdauer_in_h * Verbrauch_KG_h * kg_in_l_umrechnungsfaktor)*100)/100,'\n','Total Betriebsstunden heute: ',Math.round(GelaufenD*100)/100].join('')));
}
 
 
// Shellystatus an BrennerStatus übergeben
on({id: "shelly.0.SHEM#062243#1.Emeter0.Power"/*Power*/, change: "ne"}, async function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  if ((obj.state ? obj.state.val : "") >= 150) {
    setState("EigeneDatenpunkte.0.Heizung.Brenner_Status"/*Brenner_Status*/, true);
  }
  if ((obj.state ? obj.state.val : "") < 150) {
    setState("EigeneDatenpunkte.0.Heizung.Brenner_Status"/*Brenner_Status*/, false);
  }
});
 
schedule('{"time":{"exactTime":true,"start":"00:00"},"period":{"days":1}}', async function () {
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_heute"/*Brenner_Betriebsstunden_heute*/, 0, true);
  setState("EigeneDatenpunkte.0.Heizung.Brenner_verbrauch_heute", 0, true);
});
 
on({id: "EigeneDatenpunkte.0.Heizung.Brenner_Status"/*Brenner_Status*/, change: "ne"}, async function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  // Brenner Ein
  if ((obj.state ? obj.state.val : "") == true) {
    Einschaltzeit = (new Date().getTime());
    setState("EigeneDatenpunkte.0.Heizung.Brenner_last_on"/*Brenner_last_on*/, formatDate(getDateObject(Einschaltzeit), "JJJJ.MM.TT SS:mm:ss.sss"), true);
  }
  // Brenner aus
  if ((obj.state ? obj.state.val : "") == false) {
    // Variabeln setzen
    Verbrauch_KG_h = 1.68;
    kg_in_l_umrechnungsfaktor = 1.197;
    // Kommentar
    Ausschaltzeit = (new Date().getTime());
    setState("EigeneDatenpunkte.0.Heizung.Brenner_last_off"/*Brenner_last_off*/, formatDate(getDateObject(Ausschaltzeit), "JJJJ.MM.TT SS:mm:ss.sss"), true);
    await Einschaltdauer();
    await Seit_letzter_Fuellung_aktualisieren();
    await Tankinhalt2();
    await laufendes_Jahr_aktuallisieren();
    await laufender_Monat_aktuallisieren();
    await laufender_Tag_aktuallisieren();
    await Betriebsstunden_aktuallisieren();
    await Telegrammeldung();
  }
});
 
schedule("0 0 30 * *", async function () {
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufender_Monat"/*Brenner_Betriebsstunden_laufender_Monat*/, 0, true);
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_laufender_Monat"/*Brenner_Verbrauch_laufender_Monat*/, 0, true);
});
 
schedule("0 0 31 12 *", async function () {
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Betriebsstunden_laufendes_Kalenderjahr"/*Brenner_Betriebsstunden_laufendes_Kalenderjahr*/, 0, true);
  setState("EigeneDatenpunkte.0.Heizung.Brenner_Verbrauch_laufendes_Kalenderjahr"/*Brenner_Verbrauch_laufendes_Kalenderjahr*/, 0, true);
});
 
 

1 Like