Changeset - 4ccedc2f8509
[Not reviewed]
default
0 2 0
matthewreed - 9 years ago 2016-08-17 21:36:57

Added logging to replace debug print statements
2 files changed with 29 insertions and 26 deletions:
0 comments (0 inline, 0 general)
hydrobot.py
Show inline comments
 
@@ -13,18 +13,30 @@ from influxdb import SeriesHelper
 
from apscheduler.schedulers.background import BackgroundScheduler
 
import PID
 
from pytz import timezone
 
import logging
 
import signal
 

	
 
#TODO
 
#fix temperature offsets
 
#database time interval logging
 
#set initial state for cron timers
 
#add periodic output refresh
 

	
 
# load config file
 
config = configparser.ConfigParser(allow_no_value = True)
 
config.read("hydrobot.conf")
 
DEBUG_CAN = config.getboolean("debug", "can")
 
DEBUG_CAN_DETAIL = config.getboolean("debug", "can_detail")
 
DEBUG_TIMER = config.getboolean("debug", "timer")
 

	
 
# 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 - %(name)s - %(levelname)s - %(message)s')
 
fh.setFormatter(formatter)
 
logger.addHandler(fh)
 

	
 
logger.info("Starting HydroBot!")
 
    
 
class MySeriesHelper(SeriesHelper):
 
    
 
@@ -104,12 +116,7 @@ class CanBus:
 
            frame = self.dev.recv()
 
            message = self.msgdb.decode(frame)
 
            if message:
 
                if DEBUG_CAN:
 
                    print("Received CAN message! ID: " + hex(message.id))
 
                for s in message._signals.values():
 
                    if DEBUG_CAN_DETAIL:
 
                        print(s)
 
                        print(s.value)
 
                logger.debug("Received CAN message! ID: " + hex(message.id))
 
                self.database.log_data(self.msgdb, message)
 
                
 
    def send_can(self):
 
@@ -121,14 +128,11 @@ class CanBus:
 
        self.relay_send_msg.Output2.value = 1
 
        self.relay_send_msg.Output3.value = 1
 
        self.relay_send_msg.Output4.value = 1
 
        if DEBUG_CAN:
 
            print("Send CAN message! ID: " + hex(self.relay_send_msg.id))
 
        if DEBUG_CAN_DETAIL:
 
            print(self.relay_send_msg)
 
        logger.debug("Send CAN message! ID: " + hex(self.relay_send_msg.id) + " Data: " + str(self.relay_send_msg.data))
 
        self.dev.send(self.relay_send_msg.encode())
 
        
 
    def set_output(self, module, output, state):
 
        print("Output! " + module + " " + output + " " + str(state))
 
        logger.info("Output! " + module + " " + output + " " + str(state))
 
        msg = self.msgdb.lookup_message(module)
 
        msg.lookup_signal(output).value = state
 
        self.dev.send(msg.encode())
 
@@ -222,16 +226,14 @@ class Scheduler:
 
        self.apscheduler.get_job(timer_on).reschedule("interval", weeks = on_duration[0], days = on_duration[1], hours = on_duration[2], minutes = on_duration[3], seconds = on_duration[4])
 
        self.apscheduler.get_job(timer_on).resume()
 
        self.apscheduler.get_job(timer_off).pause()
 
        if DEBUG_TIMER:
 
            print("Turning " + timer_on + "! " + str(datetime.datetime.now().time()))
 
        logger.info("Turning " + timer_on + "!")
 
        
 
    def interval_on(self, module, output, timer_off, timer_on, off_duration):
 
        self.canbus.set_output(module, output, 0)
 
        self.apscheduler.get_job(timer_off).reschedule("interval", weeks = off_duration[0], days = off_duration[1], hours = off_duration[2], minutes = off_duration[3], seconds = off_duration[4])
 
        self.apscheduler.get_job(timer_off).resume()
 
        self.apscheduler.get_job(timer_on).pause()
 
        if DEBUG_TIMER:
 
            print("Turning " + timer_off + "! " + str(datetime.datetime.now().time()))
 
        logger.info("Turning " + timer_off + "!")
 
            
 
    def process_PID(self, pid, module_out, signal_out, module_in, signal_in):
 
        msg = self.canbus.msgdb.lookup_message(module_in)
 
@@ -261,6 +263,11 @@ def main():
 
    while True:
 
        time.sleep(0.001)
 
        
 
def close_program(signum, frame):
 
    logger.info("Closing now!")
 
    sys.exit(0)
 
        
 
signal.signal(signal.SIGINT, close_program)
 

	
 
if __name__ == "__main__":
 
    main()
 
    sys.exit(main())
hydrobot_example.conf
Show inline comments
 
[system]
 
name: my-system
 
log_level: INFO
 

	
 
[database]
 
host: www.example.org
 
@@ -8,11 +9,6 @@ username: admin
 
password: admin
 
database: hydrobot
 

	
 
[debug]
 
can: True
 
can_detail: False
 
timer: False
 

	
 
[timer1]
 
module: RelayDriveOut
 
output: Output1
0 comments (0 inline, 0 general)