Ejemplo n.º 1
0
def main():
    #---------------------------------------------------------------------------#
    # Logging - Rotate log file at midnight and keep for 7 days
    #---------------------------------------------------------------------------#
    handler = logging.handlers.TimedRotatingFileHandler(Config.Log_Filename,
                                                        when="midnight",
                                                        interval=1,
                                                        backupCount=7)
    handler.setFormatter(
        logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

    logger = logging.getLogger('cr-smart-home')
    logger.addHandler(handler)
    logger.setLevel(Config.Log_Level)

    log = Log()
    log.info('Server', 'Starting CR Smart Home %s...' % Config.Version)

    #---------------------------------------------------------------------------#
    # Upgrade
    #---------------------------------------------------------------------------#
    upgrade = Upgrade()
    upgrade.Upgrade()

    #---------------------------------------------------------------------------#
    # Startup
    #---------------------------------------------------------------------------#
    weather = Weather()
    sun = Sun()
    lamp = Lamp()
    sensor = Sensor()

    log.info(
        'Server', 'System is running in %s (Lat=%f, Long=%f)' %
        (weather.city, sun.latitude, sun.longitude))
    bStartUp = True

    #---------------------------------------------------------------------------#
    # Run program
    #---------------------------------------------------------------------------#
    while True:
        # Update current weather on startup or every 30 minutes
        if (datetime.now().minute == 0 or datetime.now().minute == 30
                or bStartUp == True):
            weather.UpdateCurrentWeather()

        # Update sun to database every hour
        if (datetime.now().minute == 0 or bStartUp == True):
            sun.UpdateDb()

        # Lamp schedule
        lamp.Schedule()

        # Sensors
        if (datetime.now().minute % 10 == 0 or bStartUp):
            sensor.readAll()

        #Reset startup bool
        bStartUp = False

        #Sleep one minute
        time.sleep(60 - datetime.now().second)