NEWS
ESPeasy: virtuelles Datenfeld
-
Hallo
ich habe am vormittag einen Wemos D1 mini mit ESPeasy geflast und an die S0 eines Zwischenzähler für meine Solaranlage geschlossen. Soweit so gut und klappt auch alles. Die Impulse kommen und sollen nun umgerechnet werden. Den Faktor bestimme ich empirisch.
Nun die Frage: Kann ich auf ESPeasy eine Art "virtuelles Datenfeld" einbauen und über eine kleine Umrechnung den kWh-Wert direkt an den ioBroker geben.
Alternative ist natürlich ein Blockly etc.Die Frage interessiert mich halt auch grundsätzlich.
Danke (ich kopiere mal @Ralla66 und @Einstein67, weil ich lernen durfte, dass ich da mglw. sehr nahe am Thema sein könntet
-
@HeinrichB
mit easyesp “Rules“ kannst du fast alles machen.
Must mal danach googlen, ich nutze easyesp nicht mehr. -
@HeinrichB said in ESPeasy: virtuelles Datenfeld:
Nun die Frage: Kann ich auf ESPeasy eine Art "virtuelles Datenfeld" einbauen und über eine kleine Umrechnung den kWh-Wert direkt an den ioBroker geben.
Wie @stenmic bereits geschrieben hat, sollte das relativ unproblematisch über die rules von espeasy gehen. Genaueres kann ich aber auch nicht sagen, da ich mich auch schon vor geraumer Zeit komplett von espeasy gelöst habe.
Heutzutage (esphome Zeitalter) würde es so aussehen:
sensor: - platform: pulse_counter pin: 12 unit_of_measurement: 'kW' name: 'Power Meter House' filters: - multiply: 0.06
Umweg über ein Datenfeld ist hier gar nicht mehr nötig, direkt den Wert filtern und fertig
Ich achte übrigens immer darauf das meine esp(home) nodes alle Daten fertig aufbereitet und im gewünschten/benötigten Format an die Zentrale schieben.
-
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.