Files @ b433eae633b8
Branch filter:

Location: HydroBot/hydrobot-software/hydrobot.py - annotation

matthewreed
Added config sensor type and removed old files that are no longer needed.
#!/usr/bin/env python

import sys
import time
import signal
import configparser
import logging

import network
import network_interface
from message import HydroBotMessage
import module
import protocol
from database import Database
from scheduler import Scheduler


#TODO
#add periodic output refresh
#add output cleanup on shutdown
#validate config settings on load

#load config file
config = configparser.ConfigParser(allow_no_value = True)
config.read("hydrobot.conf")

#set up logger
logger = logging.getLogger('hydrobot')
log_level = config.get("system", "log_level")
levels = {"CRITICAL" : 50, "ERROR" : 40, "WARNING" : 30, "INFO" : 20, "DEBUG" : 10, "NOTSET" : 0}
logger.setLevel(levels[log_level])

fh = logging.FileHandler('hydrobot.log')
fh.setLevel(logging.INFO)
formatter = logging.Formatter('[%(asctime)s][%(levelname)s][%(module)s][%(funcName)s] %(message)s') #('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)

ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('[%(asctime)s][%(levelname)s][%(module)s][%(funcName)s] %(message)s') #('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)

logger.info('Logger initialized')

def main(argv):
    
    logger.info("Starting HydroBot!")

    if len(argv) < 1:
        logger.error("Please specify a can interface")
        return 1

    database = Database(config)
    
    module_network = network.Network(database, config)
    module_network.start_all_interfaces()
    
    scheduler = Scheduler(module_network, config)
    scheduler.start()

    while True:
        time.sleep(0.1)
        
def close_program(signum, frame):
    logger.info("Closing now!")
    sys.exit(0)
        
signal.signal(signal.SIGINT, close_program)

if __name__ == "__main__":
    main(sys.argv[1:])