NEWS
Zähler auslesen und Watt+ und Watt- in Whh rechnen.
-
Hallo,
Ich lese meinen Zähler über Tasmota aus.
Mir wird der aktuelle Verbauch in Watt+ und der Überschuss in Watt- angezeigt.
Ist es möglich das mir die Watt+ Leistung in Kwh errechnet wird und die Watt- Leistung auch in Kwh.
So das ich am Ende des Tages sehen kann wie viel Kwh Verbaucht und erzeugt wurde? Also zwei Werte raus bekomme. -
@schmello sagte:
Mir wird der aktuelle Verbauch in Watt+ und der Überschuss in Watt- angezeigt.
Sind das zwei Datenpunkte oder erkennt man das über das Vorzeichen?
-
Das wird nur durch das Vorzeichen erkannt. Also ein Datenpunkt
Ich müsste jetzt nochmal genau nachsehen. Bin gerade nicht Zuhause.
400W verbrauch = 400W
400W wird eingespeist = -400W -
@schmello sagte: Das wird nur durch das Vorzeichen erkannt.
Versuche mal (nach Anpassung der IDs):
// IDs anpassen! const idLeistung = 'mqtt.0.xyz'; const path = '0_userdata.0.Zaehler.'; const idVStand = path + 'Verbrauch.Zaehlerstand'; const idVStandTag = path + 'Verbrauch.Tagesstand'; const idVTag = path + 'Verbrauch.Tag'; const idUStand = path + 'Ueberschuss.Zaehlerstand'; const idUStandTag = path + 'Ueberschuss.Tagesstand'; const idUTag = path + 'Ueberschuss.Tag'; if(!existsState(idVStand)) { createState(idVStand, 0, {type: 'number', name: 'Zählerstand Verbrauch', role: 'value.power.consumption', unit: 'kWh'}); createState(idVStandTag, 0, {type: 'number', name: 'Tagesstand Verbrauch', role: 'value.power.consumption', unit: 'kWh'}); createState(idVTag, 0, {type: 'number', name: 'Verbrauch gestern', role: 'value.power.consumption', unit: 'kWh'}); createState(idUStand, 0, {type: 'number', name: 'Zählerstand Überschuss', role: 'value.power.consumption', unit: 'kWh'}); createState(idUStandTag, 0, {type: 'number', name: 'Tagesstand Überschuss', role: 'value.power.consumption', unit: 'kWh'}); createState(idUTag, 0, {type: 'number', name: 'Überschuss gestern', role: 'value.power.consumption', unit: 'kWh'}); } var verbrauch = getState(idVStand).val; var ueberschuss = getState(idUStand).val; on(idLeistung, function(dp) { let energy = dp.oldState.val * (dp.state.lc - dp.oldState.lc) / 3600000000; if(dp.oldState.val >= 0) { verbrauch += energy; setState(idVStand, Math.round(verbrauch * 100) / 100, true); } else { ueberschuss -= energy; setState(idUStand, Math.round(ueberschuss * 100) / 100, true); } }); schedule('58 59 23 * * *', function() { let verbrauchTag = verbrauch - getState(idVStandTag).val; let ueberschussTag = ueberschuss - getState(idUStandTag).val; setState(idVTag, Math.round(verbrauchTag * 100) / 100, true); setState(idUTag, Math.round(ueberschussTag * 100) / 100, true); setState(idVStandTag, Math.round(verbrauch * 100) / 100, true); setState(idUStandTag, Math.round(ueberschuss * 100) / 100, true); });
-
@paul53
Danke erstmal.Ich werde das heute Abend testen.
Muss ich die ID nur in die oberste zeile austauschen?
const idLeistung = 'mqtt.0.xyz'; -
@schmello sagte: Muss ich die ID nur in die oberste zeile austauschen?
Ja, wenn die weiteren IDs für Dich passen.