mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-04 11:26:55 +00:00
73_ElectricityCalculator: bugfix: Corrected month of annual reading
git-svn-id: https://svn.fhem.de/fhem/trunk@12845 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
bdebf72d65
commit
4a0aa27436
@ -590,6 +590,9 @@ sub ElectricityCalculator_Notify($$)
|
|||||||
my $ElectricityCountReadingTimestampCurrentRelative = time_str2num($ElectricityCountReadingTimestampCurrent);
|
my $ElectricityCountReadingTimestampCurrentRelative = time_str2num($ElectricityCountReadingTimestampCurrent);
|
||||||
my($ElectricityCountReadingTimestampCurrentSec,$ElectricityCountReadingTimestampCurrentMin,$ElectricityCountReadingTimestampCurrentHour,$ElectricityCountReadingTimestampCurrentMday,$ElectricityCountReadingTimestampCurrentMon,$ElectricityCountReadingTimestampCurrentYear,$ElectricityCountReadingTimestampCurrentWday,$ElectricityCountReadingTimestampCurrentYday,$ElectricityCountReadingTimestampCurrentIsdst) = localtime($ElectricityCountReadingTimestampCurrentRelative);
|
my($ElectricityCountReadingTimestampCurrentSec,$ElectricityCountReadingTimestampCurrentMin,$ElectricityCountReadingTimestampCurrentHour,$ElectricityCountReadingTimestampCurrentMday,$ElectricityCountReadingTimestampCurrentMon,$ElectricityCountReadingTimestampCurrentYear,$ElectricityCountReadingTimestampCurrentWday,$ElectricityCountReadingTimestampCurrentYday,$ElectricityCountReadingTimestampCurrentIsdst) = localtime($ElectricityCountReadingTimestampCurrentRelative);
|
||||||
|
|
||||||
|
### Correct current month by one month since Unix/Linux start January with 0 instead of 1
|
||||||
|
$ElectricityCountReadingTimestampCurrentMon = $ElectricityCountReadingTimestampCurrentMon + 1;
|
||||||
|
|
||||||
### Create Log entries for debugging
|
### Create Log entries for debugging
|
||||||
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - Reading Name : " . $ElectricityCountReadingName;
|
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - Reading Name : " . $ElectricityCountReadingName;
|
||||||
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - Previous Reading Value : " . $ElectricityCountReadingTimestampPrevious;
|
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - Previous Reading Value : " . $ElectricityCountReadingTimestampPrevious;
|
||||||
@ -612,14 +615,15 @@ sub ElectricityCalculator_Notify($$)
|
|||||||
my $ElectricityCalcPowerCurrent = ReadingsVal($ElectricityCalcReadingDestinationDeviceName, $ElectricityCalcReadingPrefix . "_PowerCurrent", "0");
|
my $ElectricityCalcPowerCurrent = ReadingsVal($ElectricityCalcReadingDestinationDeviceName, $ElectricityCalcReadingPrefix . "_PowerCurrent", "0");
|
||||||
|
|
||||||
### Save Electricity pure cost of previous day, current electric Energy as first reading of day = first after midnight and reset min, max value, value counter and value sum
|
### Save Electricity pure cost of previous day, current electric Energy as first reading of day = first after midnight and reset min, max value, value counter and value sum
|
||||||
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyCostDayLast", (sprintf('%.3f', ($ElectricityCalcEnergyCostDayLast ))), 1);
|
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyCostDayLast", (sprintf('%.3f', ($ElectricityCalcEnergyCostDayLast ))), 1);
|
||||||
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyDayLast", (sprintf('%.3f', ($ElectricityCalcEnergyDayLast ))), 1);
|
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyDayLast", (sprintf('%.3f', ($ElectricityCalcEnergyDayLast ))), 1);
|
||||||
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_PowerDaySum", 0 , 1);
|
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_CounterDay1st", (sprintf('%.3f', ($ElectricityCountReadingValueCurrent ))), 1);
|
||||||
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_PowerDayCount", 0 , 1);
|
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_CounterDayLast", (sprintf('%.3f', ($ElectricityCountReadingValuePrevious ))), 1);
|
||||||
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_PowerDayMin", (sprintf('%.3f', ($ElectricityCalcPowerCurrent ))), 1);
|
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, "." . $ElectricityCalcReadingPrefix . "_PowerDaySum", 0 , 1);
|
||||||
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_PowerDayMax", 0 , 1);
|
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, "." . $ElectricityCalcReadingPrefix . "_PowerDayCount", 0 , 1);
|
||||||
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_CounterDay1st", (sprintf('%.3f', ($ElectricityCountReadingValueCurrent ))), 1);
|
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_PowerDayMin", (sprintf('%.3f', ($ElectricityCalcPowerCurrent ))), 1);
|
||||||
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_CounterDayLast", (sprintf('%.3f', ($ElectricityCountReadingValuePrevious ))), 1);
|
readingsSingleUpdate( $ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_PowerDayMax", 0 , 1);
|
||||||
|
|
||||||
|
|
||||||
### Check whether the current value is the first one after change of month
|
### Check whether the current value is the first one after change of month
|
||||||
if ($ElectricityCountReadingTimestampCurrentMday < $ElectricityCountReadingTimestampPreviousMday)
|
if ($ElectricityCountReadingTimestampCurrentMday < $ElectricityCountReadingTimestampPreviousMday)
|
||||||
@ -726,13 +730,13 @@ sub ElectricityCalculator_Notify($$)
|
|||||||
|
|
||||||
### Calculate the payment month since the year of Electricity meter reading started
|
### Calculate the payment month since the year of Electricity meter reading started
|
||||||
my $ElectricityCalcMeterYearMonth=0;
|
my $ElectricityCalcMeterYearMonth=0;
|
||||||
if (($ElectricityCountReadingTimestampCurrentMon + 1 - $attr{$ElectricityCalcName}{MonthOfAnnualReading} + 1) < 1)
|
if (($ElectricityCountReadingTimestampCurrentMon - $attr{$ElectricityCalcName}{MonthOfAnnualReading} + 1) < 1)
|
||||||
{
|
{
|
||||||
$ElectricityCalcMeterYearMonth = 12 + $ElectricityCountReadingTimestampCurrentMon + 1 - $attr{$ElectricityCalcName}{MonthOfAnnualReading} + 1;
|
$ElectricityCalcMeterYearMonth = 12 + $ElectricityCountReadingTimestampCurrentMon - $attr{$ElectricityCalcName}{MonthOfAnnualReading};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$ElectricityCalcMeterYearMonth = $ElectricityCountReadingTimestampCurrentMon + 1 - $attr{$ElectricityCalcName}{MonthOfAnnualReading} + 1;
|
$ElectricityCalcMeterYearMonth = 1 + $ElectricityCountReadingTimestampCurrentMon - $attr{$ElectricityCalcName}{MonthOfAnnualReading};
|
||||||
}
|
}
|
||||||
|
|
||||||
### Calculate reserves at electricity supplier based on monthly advance payments within year of Electricity meter reading
|
### Calculate reserves at electricity supplier based on monthly advance payments within year of Electricity meter reading
|
||||||
@ -747,6 +751,7 @@ sub ElectricityCalculator_Notify($$)
|
|||||||
|
|
||||||
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - _______Times__________________________________________";
|
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - _______Times__________________________________________";
|
||||||
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - ElectricityCalcMeterYearMonth : " . $ElectricityCalcMeterYearMonth;
|
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - ElectricityCalcMeterYearMonth : " . $ElectricityCalcMeterYearMonth;
|
||||||
|
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - Current Month : " . $ElectricityCountReadingTimestampCurrentMon;
|
||||||
|
|
||||||
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - _______Energy_________________________________________";
|
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - _______Energy_________________________________________";
|
||||||
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - ElectricityCalcEnergyDay : " . sprintf('%.3f', ($ElectricityCalcEnergyDay)) . " kWh";
|
Log3 $ElectricityCalcName, 5, $ElectricityCalcName. " : ElectricityCalculator - ElectricityCalcEnergyDay : " . sprintf('%.3f', ($ElectricityCalcEnergyDay)) . " kWh";
|
||||||
@ -815,7 +820,7 @@ sub ElectricityCalculator_Notify($$)
|
|||||||
readingsBulkUpdate($ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyMeter", sprintf('%.3f', ($ElectricityCalcEnergyMeter)));
|
readingsBulkUpdate($ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyMeter", sprintf('%.3f', ($ElectricityCalcEnergyMeter)));
|
||||||
|
|
||||||
### Write pure energy costs since midnight
|
### Write pure energy costs since midnight
|
||||||
readingsBulkUpdate($ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyCostDay", sprintf('%.3f', ($ElectricityCalcEnergyCostDay)));
|
readingsBulkUpdate($ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyCostDay", sprintf('%.3f', ($ElectricityCalcEnergyCostDay)));
|
||||||
|
|
||||||
### Write pure energy costs since beginning of month
|
### Write pure energy costs since beginning of month
|
||||||
readingsBulkUpdate($ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyCostMonth", sprintf('%.3f', ($ElectricityCalcEnergyCostMonth)));
|
readingsBulkUpdate($ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_EnergyCostMonth", sprintf('%.3f', ($ElectricityCalcEnergyCostMonth)));
|
||||||
@ -832,6 +837,9 @@ sub ElectricityCalculator_Notify($$)
|
|||||||
### Write current meter reading as sshown on the mechanical meter
|
### Write current meter reading as sshown on the mechanical meter
|
||||||
readingsBulkUpdate($ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_CounterCurrent", sprintf('%.3f', ($ElectricityCountReadingValueCurrent)));
|
readingsBulkUpdate($ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_CounterCurrent", sprintf('%.3f', ($ElectricityCountReadingValueCurrent)));
|
||||||
|
|
||||||
|
### Write months since last meter reading
|
||||||
|
readingsBulkUpdate($ElectricityCalcReadingDestinationDevice, $ElectricityCalcReadingPrefix . "_MonthMeterReading", sprintf('%.0f', ($ElectricityCalcMeterYearMonth)));
|
||||||
|
|
||||||
### Finish and execute Bulkupdate
|
### Finish and execute Bulkupdate
|
||||||
readingsEndUpdate($ElectricityCalcReadingDestinationDevice, 1);
|
readingsEndUpdate($ElectricityCalcReadingDestinationDevice, 1);
|
||||||
}
|
}
|
||||||
@ -1378,6 +1386,17 @@ sub ElectricityCalculator_Notify($$)
|
|||||||
</table>
|
</table>
|
||||||
</ul></ul>
|
</ul></ul>
|
||||||
|
|
||||||
|
<ul><ul>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<tr><td><li><code><DestinationDevice>_<SourceCounterReading>_MonthMeterReading</code> : </li></td><td>Number of month since last meter reading. The month when the reading occured is the first month = 1.<BR>
|
||||||
|
</td></tr>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</ul></ul>
|
||||||
|
|
||||||
<ul><ul>
|
<ul><ul>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
@ -1936,6 +1955,17 @@ sub ElectricityCalculator_Notify($$)
|
|||||||
</table>
|
</table>
|
||||||
</ul></ul>
|
</ul></ul>
|
||||||
|
|
||||||
|
<ul><ul>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<tr><td><li><code><DestinationDevice>_<SourceCounterReading>_MonthMeterReading</code> : </li></td><td>Anzahl der Monate seit der letzten Zählerablesung. Der Monat der Zählerablesung ist der erste Monat = 1.<BR>
|
||||||
|
</td></tr>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</ul></ul>
|
||||||
|
|
||||||
<ul><ul>
|
<ul><ul>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user