Meiner Meinung nach geht das mit EPSEasy nicht einfach, weil ESPEasy den kumulierten Energiewert zwar berechnen aber nicht persistent speichern kann. Nach einem Neustart von ESPEasy startet der wieder bei 0
Deshalb mache ich diese Akkumulation der Einzelticks der S0 Schnittstelle in ioBroker, wobei ich kein JS-Viruose bin
/* S0-conter converter for heating electical energy
inrements ticks
calculates energy
calculates power */
const timeBase = 60; //seconds
const ticksPerKWhOfCounter = 2000; // 2000 ticks per kWh for Eltaco S0 counter
const kWhPerTick = 1/ticksPerKWhOfCounter; //
const ticksToPower = 3600/ticksPerKWhOfCounter / timeBase ;
const initialEnergyValue = 1234.567; // kWh value of the counter when installing the S0 interface and starting this script
const ticksName = 'mqtt.0.Heizraum-Energy.Heizraum-Energy-S0.ticks'/*Heizraum-Energy/Heizraum-Energy-S0/ticks*/;
const ticksSumName = 'data.0.heating.Heizraum.Electricity.ticksSum'/*ticksSum*/;
const energyName = 'data.0.heating.Heizraum.Electricity.Energy'/*Energy*/;
const powerName = 'data.0.heating.Heizraum.Electricity.Power'/*Power*/;
function calculatePowerEnergy (ticksSumName, energyName, powerName, ticks){
var ticksSum = getState(ticksSumName).val;
ticksSum = ticksSum + ticks;
var Energy = initialEnergyValue + ticksSum * kWhPerTick;
/*var EnergyDeltaKWh = ticks * kWhPerTick;
var EnergyDeltaKWs= EnergyDeltaKWh / 3600;
var Power = EnergyDeltaKWs/ timeBase; */
var Power = ticks * ticksToPower;
setState(ticksSumName, ticksSum);
setState(energyName, Energy);
setState(powerName, Power);
}
// start subscriptions Add an subscription for each sensor
on({id: ticksName, change: "any" },
function (obj) {
ticks = getState(ticksName).val;
calculatePowerEnergy (ticksSumName, energyName, powerName, ticks);
});
Bei meinem Selbstgebastelten Wasserzähler habe ich 2 alternative Methoden implementiert, um dieses Problem zu umgehen:
Nach einem Neustart holt sich der ESP8266 den akkumulierten Wert wieder vom Server (dort was es Homematic)
Der kumulierte Wert wird in ein I2C EEPROM geschrieben. Für einen Wasserzähler reichen dessen Schreibzyklen für viele Jahre. Bei einem Stromzähler mit minütlicher Speicherung muß man nach knapp 2 Jahren die Speicherzelle wechseln, was auch wieder einen speziellen Mechanismus erfordert.
Ich bei ESPEasy habe ich solche persistenten Mechanismen nicht gefunden, bei ESPHome weiß ich es nicht. Deshalb die Kumulation in ioBroker.