- Verbrauch heute:
- Verbrauch gestern:
- Verbrauch vergangene 7 Tage:
- Verbrauch vergangene 30 Tage:
Die gute Nachricht:
Das gibt es ab CCU3/RM-FW: 3.73.9 (vermutlich*) für alle energiemessenden HmIP-Geräte. (*getestet aktuell nur mit FSM16 und PSM)
Die inzwischen nicht mehr ganz so schlechte Nachricht:
Das geht (wohl*) nur über die eQ-3 Holzhammer Methode, also Gerät aus der Zentrale löschen und neu Anlernen.
(*ein lokaler Werksreset des Gerätes hatte es nicht gebracht)
Weiter unten werde ich eine Anleitung veröffentlichen (samt "Hilfs-Script") mit der man das auch ohne Holzhammer Methode hinbekommt.
Ein bisschen Handarbeit bleibt aber.
>> Anleitung verfügbar! <<
Voilà: Und wer nun die passenden "counter-SysVars" sucht, die gibt es nicht.
Es wird alles in den Metadaten des Messwertkanals abgelegt.
(und da sag mal noch einer wir sollen nicht so viel in die Metadaten schreiben, oder Jens? ) Und der Vollständigkeit halber das aktualisierte "Counter-Script" aus dem zugehörigem internen WebUI-Programm:
Code: Alles auswählen
object chn = dom.GetObject('24054');
object oOverflow = chn.DPByControl('POWERMETER_PSM.ENERGY_COUNTER_OVERFLOW');
object oEnergyCounter = chn.DPByControl('POWERMETER_PSM.ENERGY_COUNTER');
object oSysVarEnergyCounter = dom.GetObject('svEnergyCounter_24054_000B98A9AB90C2:5');
object oSysVarEnergyCounterOldVal = dom.GetObject('svEnergyCounterOldVal_24054');
boolean overFlowFlag = oOverflow.Value();
real devVal = oEnergyCounter.Value();
real devValMax = oEnergyCounter.ValueMax();
real oldDevVal = oSysVarEnergyCounterOldVal.Value();
real diffVal = 0.0;
real sysVarVal = oSysVarEnergyCounter.Value();
integer tmp_devVal = (devVal.ToString().ToFloat() * 1000).ToInteger();
integer tmp_oldDevVal = (oldDevVal.ToString().ToFloat() * 1000).ToInteger();
real energy0 = chn.MetaData('energy0').ToFloat();
if (overFlowFlag == false) {
! Normal conditions
if (tmp_oldDevVal <= tmp_devVal) {
diffVal = devVal - oldDevVal;
}
! Device has rebooted
if (tmp_oldDevVal > tmp_devVal) {
diffVal = devVal;
}
} else {
!overFlow is true
if (tmp_oldDevVal > tmp_devVal) {
! An device overflow has occured
diffVal = (devVal + devValMax) - oldDevVal;
} else {
! Once the overflow flag has been set it will only be false when the device reboots
! Therefore this is the normal condition after an device overflow
diffVal = devVal - oldDevVal;
}
}
if (tmp_devVal != 0) {oSysVarEnergyCounterOldVal.State(devVal);
oSysVarEnergyCounter.State(sysVarVal + diffVal);
! Save todays energy consumption
chn.MetaData('energy0',energy0 + diffVal);
}
Oder es gibt noch irgendwo eine andere Funktion für die anderen 3 neuen Verbrauchszähler.