Beispiel #1
0
 def __init__(self, context):
     self.params = context.params
     self.status = context.status
     self.raw_data = context.raw_data
     # connect to weather station
     self.ws = WeatherStation(context=context)
     # check computer clock isn't earlier than last stored data
     self.last_stored_time = self.raw_data.before(
         datetime.max) or datetime.min
     if datetime.utcnow() < self.last_stored_time:
         raise ValueError('Computer time is earlier than last stored data')
     # infer pointer of last stored data
     saved_ptr = self.status.get('data', 'ptr')
     if saved_ptr:
         saved_ptr, sep, saved_date = saved_ptr.partition(',')
         if saved_ptr and saved_date:
             saved_ptr = int(saved_ptr, 16)
             saved_date = WSDateTime.from_csv(saved_date)
             saved_date = self.raw_data.nearest(saved_date)
             while saved_date < self.last_stored_time:
                 saved_date = self.raw_data.after(saved_date +
                                                  SECOND) or datetime.max
                 saved_ptr = self.ws.inc_ptr(saved_ptr)
             while saved_date > self.last_stored_time:
                 saved_date = self.raw_data.before(saved_date -
                                                   SECOND) or datetime.min
                 saved_ptr = self.ws.dec_ptr(saved_ptr)
         else:
             saved_ptr = None
     self.last_stored_ptr = saved_ptr
     self.check_fixed_block()
Beispiel #2
0
 def __init__(self, context):
     self.params = context.params
     self.status = context.status
     self.raw_data = context.raw_data
     # connect to weather station
     self.ws = WeatherStation(context=context)
     # check computer clock isn't earlier than last stored data
     self.last_stored_time = self.raw_data.before(datetime.max) or datetime.min
     if datetime.utcnow() < self.last_stored_time:
         raise ValueError('Computer time is earlier than last stored data')
     # infer pointer of last stored data
     if self.status.get('data', 'ptr'):
         saved_ptr, saved_date = self.status.get('data', 'ptr').split(',')
         saved_ptr = int(saved_ptr, 16)
         saved_date = WSDateTime.from_csv(saved_date)
         saved_date = self.raw_data.nearest(saved_date)
         while saved_date < self.last_stored_time:
             saved_date = self.raw_data.after(saved_date + SECOND)
             saved_ptr = self.ws.inc_ptr(saved_ptr)
         while saved_date > self.last_stored_time:
             saved_date = self.raw_data.before(saved_date - SECOND)
             saved_ptr = self.ws.dec_ptr(saved_ptr)
     else:
         saved_ptr = None
     self.last_stored_ptr = saved_ptr
     self.check_fixed_block()
Beispiel #3
0
 def get_datetime(self, section, option, default=None):
     result = self.get(section, option, default)
     if result:
         return WSDateTime.from_csv(result)
     return result
Beispiel #4
0
 def get_datetime(self, section, option, default=None):
     result = self.get(section, option, default)
     if result:
         return WSDateTime.from_csv(result)
     return result