140 lines
6.4 KiB
Python
140 lines
6.4 KiB
Python
import datetime
|
|
|
|
from currentcostdatastore import CurrentCostDataStore
|
|
|
|
# A CurrentCost update (as described in currentcostdata.py) is a relative
|
|
# description of your electricity usage.
|
|
#
|
|
# E.g. you used this much electricity 2 hours ago
|
|
#
|
|
# This class converts this into an absolute description of your electricity
|
|
# usage.
|
|
#
|
|
# E.g. you used this much electricity at 1pm
|
|
#
|
|
#
|
|
# Dale Lane (http://dalelane.co.uk/blog)
|
|
|
|
|
|
class CurrentCostDataFunctions():
|
|
|
|
def ParseCurrentCostXML(self, ccdb, newupd):
|
|
today = datetime.date.today()
|
|
#
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 1), newupd.WattsMonth01)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 2), newupd.WattsMonth02)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 3), newupd.WattsMonth03)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 4), newupd.WattsMonth04)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 5), newupd.WattsMonth05)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 6), newupd.WattsMonth06)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 7), newupd.WattsMonth07)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 8), newupd.WattsMonth08)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 9), newupd.WattsMonth09)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 10), newupd.WattsMonth10)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 11), newupd.WattsMonth11)
|
|
ccdb.StoreMonthData(self.GetOldMonth(today, 12), newupd.WattsMonth12)
|
|
#
|
|
ccdb.StoreDayData(self.GetOldDay(today, 1), newupd.WattsDay01)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 2), newupd.WattsDay02)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 3), newupd.WattsDay03)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 4), newupd.WattsDay04)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 5), newupd.WattsDay05)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 6), newupd.WattsDay06)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 7), newupd.WattsDay07)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 8), newupd.WattsDay08)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 9), newupd.WattsDay09)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 10), newupd.WattsDay10)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 11), newupd.WattsDay11)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 12), newupd.WattsDay12)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 13), newupd.WattsDay13)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 14), newupd.WattsDay14)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 15), newupd.WattsDay15)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 16), newupd.WattsDay16)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 17), newupd.WattsDay17)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 18), newupd.WattsDay18)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 19), newupd.WattsDay19)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 20), newupd.WattsDay20)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 21), newupd.WattsDay21)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 22), newupd.WattsDay22)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 23), newupd.WattsDay23)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 24), newupd.WattsDay24)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 25), newupd.WattsDay25)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 26), newupd.WattsDay26)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 27), newupd.WattsDay27)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 28), newupd.WattsDay28)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 29), newupd.WattsDay29)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 30), newupd.WattsDay30)
|
|
ccdb.StoreDayData(self.GetOldDay(today, 31), newupd.WattsDay31)
|
|
#
|
|
currtime = datetime.datetime.now()
|
|
#
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 0), newupd.kWattsHour02)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 2), newupd.kWattsHour04)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 4), newupd.kWattsHour06)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 6), newupd.kWattsHour08)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 8), newupd.kWattsHour10)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 10), newupd.kWattsHour12)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 12), newupd.kWattsHour14)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 14), newupd.kWattsHour16)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 16), newupd.kWattsHour18)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 18), newupd.kWattsHour20)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 20), newupd.kWattsHour22)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 22), newupd.kWattsHour24)
|
|
ccdb.StoreHourData(self.GetOldHour(currtime, 24), newupd.kWattsHour26)
|
|
|
|
|
|
def GetOldMonth(self, referenceDate, monthsago):
|
|
newmonth = referenceDate.month - monthsago
|
|
newyear = referenceDate.year
|
|
|
|
if newmonth <= 0:
|
|
newmonth += 12
|
|
newyear -= 1
|
|
|
|
return datetime.date(newyear, newmonth, 1)
|
|
|
|
|
|
def GetOldDay(self, referenceDate, daysago):
|
|
newday = referenceDate.day - daysago
|
|
newmonth = referenceDate.month
|
|
newyear = referenceDate.year
|
|
|
|
if newday <= 0:
|
|
d = datetime.timedelta(days=daysago)
|
|
sub = referenceDate - d
|
|
newday = sub.day
|
|
newmonth = sub.month
|
|
newyear = sub.year
|
|
|
|
return datetime.date(newyear, newmonth, newday)
|
|
|
|
|
|
|
|
def GetOldHour(self, referenceDate, hoursago):
|
|
if referenceDate.hour % 2 == 0:
|
|
hoursago = hoursago + 1
|
|
|
|
newhour = referenceDate.hour - hoursago
|
|
newday = referenceDate.day
|
|
newmonth = referenceDate.month
|
|
newyear = referenceDate.year
|
|
|
|
if newhour < -24:
|
|
newhour += 48
|
|
d = datetime.timedelta(hours=hoursago)
|
|
sub = referenceDate - d
|
|
newday = sub.day
|
|
newmonth = sub.month
|
|
newyear = sub.year
|
|
elif newhour < 0:
|
|
newhour += 24
|
|
d = datetime.timedelta(hours=hoursago)
|
|
sub = referenceDate - d
|
|
newday = sub.day
|
|
newmonth = sub.month
|
|
newyear = sub.year
|
|
|
|
return datetime.datetime(newyear, newmonth, newday, newhour, 0, 0)
|
|
|
|
|
|
|