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);
});