class LazarusProducer(Thread):

    def __init__(self, ip_address, topic='OryxInput', port='9092'):
        super(LazarusProducer, self).__init__()
        self.topic = topic  
        self.kafka = KafkaClient(ip_address + ':' + '9092')
        self.producer = SimpleProducer(self.kafka)
        self.energy = CornellEnergyDataset()
        #EnergyDataset()
        self.weather = MetroDataset()

    def _produce(self):
        date, curr_time = self.energy.current_time()
        data = { 'date': date,
                 'time' : curr_time,
                 'energy': self.energy.energy_consumption(),
                 'weather': self.weather.publish_data()} 
#	self.producer.ensure_topic_exists(self.topic)
        response = self.producer.send_messages(self.topic,json.dumps(data))
	print "\n\n"
	print data
	print "\n\n"
        #print response

    def run(self):
        while True:
            time.sleep(1)
            self._produce()
 def __init__(self, ip_address, topic='OryxInput', port='9092'):
     super(LazarusProducer, self).__init__()
     self.topic = topic  
     self.kafka = KafkaClient(ip_address + ':' + '9092')
     self.producer = SimpleProducer(self.kafka)
     self.energy = CornellEnergyDataset()
     #EnergyDataset()
     self.weather = MetroDataset()
 def publish_weather_data(self):
     metro = MetroDataset()
     while True:
         current_time = datetime.datetime.now().strftime('%d/%m/%y %H:%M')
         date_time = current_time.split(" ")
         time_now = date_time[1]
         time_list = time_now.split(":")
         minutes = time_list[1]
         interval_flag = int(minutes)/30.0
         if interval_flag == 0.0 or interval_flag == 1.0:
             try:
                 response = self.producer.send_messages(self.topic,
                                             json.dumps(metro.publish_data()))
             except LeaderNotAvailableError:
                 time.sleep(1)
                 response = self.producer.send_messages(self.topic,
                                             json.dumps(metro.publish_data()))
             print response
             time.sleep(70)
     self.producer.stop()
 def publish_to_file(self):
     metro = MetroDataset()
     data = {}
     while True:
         try:
             current_time = datetime.datetime.now().strftime('%d/%m/%y %H:%M')
             date_time = current_time.split(" ")
             time_now = date_time[1]
             time_list = time_now.split(":")
             minutes = time_list[1]
             interval_flag = int(minutes)/30.0     
             if interval_flag == 0.0 or interval_flag == 1.0:
                 metro_data = metro.publish_data() 
                 if data.has_key(metro_data['date']):
                     if not data[metro_data['date']].has_key(metro_data['time']):
                         data[metro_data['date']].update({metro_data['time']: metro_data['data']})
                 else:
                     data[metro_data['date']] = {metro_data['time']: metro_data['data']}
             print data
         except:
             with open('data.json', 'w') as outfile:
                 json.dump(data, outfile)
             sys.exit()