Exemplo n.º 1
0
            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()
Exemplo n.º 2
0
            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()
Exemplo n.º 3
0
    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')
Exemplo n.º 4
0
            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()
Exemplo n.º 5
0
                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()
Exemplo n.º 6
0
            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()
Exemplo n.º 7
0
    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()
Exemplo n.º 8
0
def getvalues():
    with locking('localsensor.lock', 120):
        return _getvalues()

    return {}
Exemplo n.º 9
0
    #
    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()
Exemplo n.º 10
0
            "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()