logger.info('callback: topic={}, payload={}'.format(topic, payload)) self.cmdq.put(topic.split('/')[-1]) except: logger.error('unhandled exception') def send_mail(self): with tempfile.NamedTemporaryFile(suffix='.png') as imgfile: cam = webcam.OpenCVCamera() # must be initialized in main thread cam.capture_to_file(imgfile.name) self.proxy.sendmail_with_media(self.proxy.get_account('personal')['email'], 'Live Image by Web Camera', str(datetime.datetime.now()), xmlrpclib.Binary(imgfile.read())) def main(): import argparse parser = argparse.ArgumentParser(description='Web Camera Controller') parser.add_argument('--delay', type=int, default=0) args = parser.parse_args() print args time.sleep(args.delay) wc = WebCameraControl() wc.start() if __name__ == '__main__': with locking('wcserver.lock', 1): main()
logger.info('setup done.') except: logger.critical('unhandled exception') raise def loop(self): try: values = localsensor.getvalues() for k, v in values.items(): self.mqttc.publish('sensors/{}/temperature'.format(k), '%2.2f' % v) except: logger.error('unhandled exception') def main(): import argparse parser = argparse.ArgumentParser(description='Local Sensor Monitor') parser.add_argument('--delay', type=int, default=0) args = parser.parse_args() print args time.sleep(args.delay) monitor = LocalSensorMonitor() monitor.start() if __name__ == '__main__': with locking('localsensormonitor.lock'): main()
args = parse_args() try: if args.show: print args print config return if args.temperature: tweet_temperature(config) if args.solar: tweet_solar(config) finally: config.close() if __name__ == '__main__': # Configures logging logfile = os.path.join(os.path.dirname(__file__), '.tweetbot-log') logging.basicConfig(filename=logfile, level=logging.WARNING, format='%(asctime)s [%(process)d] %(levelname)s: %(message)s') try: with locking('/tmp/tweetbot.lock', 120): main() except Exception as e: logging.exception('Error')
values = json.dumps(cur_values) self.rs.set(topic, values) self.rs.set(topic + '/datetime', timestamp) upload = '{0}/kv/{1}'.format(self.heroku, topic) r = requests.put(url=upload, data=values) if r.status_code != 200: logger.warning('status_code != 200: upload={}, data={}'.format(upload, value)) upload = upload + '/datetime' r = requests.put(url=upload, data=timestamp) if r.status_code != 200: logger.warning('status_code != 200: upload={}, data={}'.format(upload, timestamp)) except: logger.error('unhandled exception') def main(): import argparse parser = argparse.ArgumentParser(description='Solar data subscriber') parser.add_argument('--delay', type=int, default=0) args = parser.parse_args() print args time.sleep(args.delay) s = SolarMonitor() s.start() if __name__ == '__main__': with locking('/tmp/solarmonitor.lock', 1): main()
continue msg = '{} is inactive.'.format(client) logger.warning(msg) proxy.line_me({'value1': msg}) self.last_access[client] = datetime.datetime.now() def store(self, topic, value): # Redis self.rs.set(topic, value) # Heroku upload = '{}/kv/{}'.format(self.heroku, topic) r = requests.put(url=upload, data=value) if r.status_code != 200: logger.error('status_code != 200: upload={}, date={}'.format(upload, value)) def main(): import argparse parser = argparse.ArgumentParser(description='Environment data subscriber') args = parser.parse_args() print args m = EnvironmentMonitor() m.start() if __name__ == '__main__': with locking('envmonitor.lock', 1): main()
time.sleep(10) self.bind() def bind(self): self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind(('', self.port)) self.sock.settimeout(self.timeout) logger.info('bind: done.') def publish(self, msg): values = json.loads(msg) values['Time'] = time.time() self.mqttc.publish('solar/values', json.dumps(values)) def main(): import argparse parser = argparse.ArgumentParser(description='Solar Xbee Reciever') parser.add_argument('--delay', type=int, default=0) args = parser.parse_args() print args time.sleep(args.delay) reciever = SolarReciever() reciever.start() if __name__ == '__main__': with locking('solarreciever.lock'): main()
def send_mail(self): with tempfile.NamedTemporaryFile(suffix=".png") as imgfile: cam = webcam.OpenCVCamera() # must be initialized in main thread cam.capture_to_file(imgfile.name) self.proxy.sendmail_with_media( self.proxy.get_account("personal")["email"], "Live Image by Web Camera", str(datetime.datetime.now()), xmlrpclib.Binary(imgfile.read()), ) def main(): import argparse parser = argparse.ArgumentParser(description="Web Camera Controller") parser.add_argument("--delay", type=int, default=0) args = parser.parse_args() print args time.sleep(args.delay) wc = WebCameraControl() wc.start() if __name__ == "__main__": with locking("wcserver.lock", 1): main()
def getvalues(): with locking('localsensor.lock', 120): return _getvalues() return {}
# server = SimpleXMLRPCServer(('', PORT), requestHandler=RequestHandler) server.register_introspection_functions() def log(client, temperature): print 'client=', repr(client) print 'temperature=', repr(temperature) return True def echo(value): print 'value=', repr(value) return value def terminate(): server.socket.close() return True server.register_function(log) server.register_function(echo) server.register_function(terminate) try: server.serve_forever() except Exception as e: print '[MAIN:%d] ERROR' % os.getpid(), e if __name__ == '__main__': with locking('/tmp/xmlrpcsrv.lock', 1): main()
"SolarVoltage-day.png", ] proxy = appservice.ServiceProxy() self.heroku = proxy.get_account("heroku")["URL"] def upload(self): for url in (self.urlbase + x for x in self.images): self.upload_image(url) def upload_image(self, url): name = url.split("/")[-1] upload = "{}/images/{}".format(self.heroku, name) print "url:", url print "upload", upload buf = requests.get(url).content print "name:", name, "size:", len(buf) r = requests.put(url=upload, data=buf, headers={"Content-Type": "application/octet-stream"}) if r.status_code != 200: print r def main(): m = MuninUploader() m.upload() if __name__ == "__main__": with locking("/tmp/muninuploader.lock", 1): main()