END_TIME - timestamp string in ISO8601 AM_DEVICE_NAME - AlertMe device name string, required if multiple MeterReaders devices exist PW_METER_ID - PlotWatt meter id int, required if multiple meters exist ''' # parse start and end times utc_format = '%Y-%m-%dT%H:%M:%SZ' try: start = datetime2.strptime(START_TIME, utc_format) end = datetime2.strptime(END_TIME, utc_format) except ValueError, e: print 'start or end time not in ', utc_format, 'format' return -1 # PlotWatt API pw = Plotwatt(PW_HOUSE_ID, PW_API_KEY) try: pw.list_meters() except urllib2.HTTPError, e: print 'bad PlotWatt credentials' return -1 if not PW_METER_ID: print 'PlotWatt meter not specified' pw_meter_list = pw.list_meters() if len(pw_meter_list) == 0: print 'No PlotWatt meters found. Creating meter' pw_meter_list = pw.create_meters(1) PW_METER_ID = pw_meter_list[0] print 'Using PlotWatt meter ', PW_METER_ID # AlertMe API
def setUp(self): self.pw = Plotwatt(2517, "3b0f9e9a9d98137c") # clear any old meters for meter_id in self.pw.list_meters() : self.pw.delete_meter(meter_id)
class TestDisagDayGeneration(unittest.TestCase): def setUp(self): self.pw = Plotwatt(2517, "3b0f9e9a9d98137c") # clear any old meters for meter_id in self.pw.list_meters() : self.pw.delete_meter(meter_id) def test_list_and_create_meters(self): assert self.pw.list_meters() == [] self.pw.create_meters(1) assert len(self.pw.list_meters()) == 1 def test_push_readings(self): new_meter_ids = self.pw.create_meters(1) meter_id = self.pw.list_meters()[0] # testing the return value of create_meters against the return value of list_meters assert meter_id == new_meter_ids[0] assert len(new_meter_ids) == 1 now = datetime.now() second = timedelta(seconds=1) self.pw.push_readings(meter_id, [1, 2, 3], [now, now + 1*second, now + 2*second]) # overwrite old readings self.pw.push_readings(meter_id, [4, 5, 6], [now, now + 1*second, now + 2*second]) def test_push_invalid_readings(self): self.pw.create_meters(1) meter_id = self.pw.list_meters()[0] now = datetime.now() + timedelta(days = 2) second = timedelta(seconds=1) try : self.pw.push_readings(meter_id, [1, 2, 3], [now, now + 1*second, now + 2*second]) assert 'the previous line should have raised an error' except PlotwattError, e: assert 'Unprocessable' in str(e)
class TestDisagDayGeneration(unittest.TestCase): def setUp(self): self.pw = Plotwatt(2517, "3b0f9e9a9d98137c") # clear any old meters for meter_id in self.pw.list_meters() : self.pw.delete_meter(meter_id) def test_list_and_create_meters(self): assert self.pw.list_meters() == [] self.pw.create_meters(1) assert len(self.pw.list_meters()) == 1 def test_push_readings(self): new_meter_ids = self.pw.create_meters(1) meter_id = self.pw.list_meters()[0] # testing the return value of create_meters against the return value of list_meters assert meter_id == new_meter_ids[0] assert len(new_meter_ids) == 1 now = datetime.now() second = timedelta(seconds=1) self.pw.push_readings(meter_id, [1, 2, 3], [now, now + 1*second, now + 2*second]) # overwrite old readings self.pw.push_readings(meter_id, [4, 5, 6], [now, now + 1*second, now + 2*second]) def test_push_invalid_readings(self): self.pw.create_meters(1) meter_id = self.pw.list_meters()[0] now = datetime.now() + timedelta(days = 2) second = timedelta(seconds=1) try : self.pw.push_readings(meter_id, [1, 2, 3], [now, now + 1*second, now + 2*second]) assert 'the previous line should have raised an error' except PlotwattError as e: assert 'Unprocessable' in str(e)
END_TIME - timestamp string in ISO8601 AM_DEVICE_NAME - AlertMe device name string, required if multiple MeterReaders devices exist PW_METER_ID - PlotWatt meter id int, required if multiple meters exist ''' # parse start and end times utc_format = '%Y-%m-%dT%H:%M:%SZ' try: start = datetime2.strptime(START_TIME, utc_format) end = datetime2.strptime(END_TIME, utc_format) except ValueError, e: print 'start or end time not in ',utc_format,'format' return -1 # PlotWatt API pw = Plotwatt(PW_HOUSE_ID, PW_API_KEY) try: pw.list_meters() except urllib2.HTTPError, e: print 'bad PlotWatt credentials' return -1 if not PW_METER_ID: print 'PlotWatt meter not specified' pw_meter_list = pw.list_meters() if len(pw_meter_list) == 0: print 'No PlotWatt meters found. Creating meter' pw_meter_list = pw.create_meters(1) PW_METER_ID = pw_meter_list[0] print 'Using PlotWatt meter ', PW_METER_ID # AlertMe API