diff --git a/hydrobot.py b/hydrobot.py old mode 100644 new mode 100755 --- a/hydrobot.py +++ b/hydrobot.py @@ -1,4 +1,7 @@ +#!/usr/bin/env python + import sys +import os import time import _thread import ast @@ -36,6 +39,8 @@ formatter = logging.Formatter('%(asctime fh.setFormatter(formatter) logger.addHandler(fh) + + logger.info("Starting HydroBot!") class MySeriesHelper(SeriesHelper): @@ -95,12 +100,16 @@ class Database: class CanBus: - def __init__(self, database): - + def __init__(self, database, interface): + + # Bring up CAN interface (maybe do this in a systemd service file) + # Passing random arguments to sudo is super dangerous + os.system("sudo ip link set " + interface + " up type can bitrate 500000") + self.database = database - self.dev = socketcan.SocketCanDev("can0") + self.dev = socketcan.SocketCanDev(interface) self.queue = queue.CanQueue(self.dev) - + parser = jsondb.JsonDbParser() self.msgdb = parser.parse('hydrobot_can.json') @@ -263,11 +272,15 @@ def func(): print(1) -def main(): - +def main(argv): + + if len(argv) < 1: + print("Error: please specify a can interface") + return 1 + database = Database() - canbus = CanBus(database) + canbus = CanBus(database, argv[0]) canbus.start() scheduler = Scheduler(canbus) @@ -283,4 +296,4 @@ def close_program(signum, frame): signal.signal(signal.SIGINT, close_program) if __name__ == "__main__": - sys.exit(main()) + sys.exit(main(sys.argv[1:])) diff --git a/hydrobot@.service b/hydrobot@.service --- a/hydrobot@.service +++ b/hydrobot@.service @@ -5,7 +5,7 @@ BindsTo=sys-subsystem-net-devices-%i.dev After=sys-subsystem-net-devices-%i.device [Service] -ExecStart=/usr/bin/python hydrobot.py +ExecStart=/opt/hydrobot-software/hydrobot.py %i WorkingDirectory=/opt/hydrobot-software User=hydrobot