58 lines
1.2 KiB
Python
58 lines
1.2 KiB
Python
from FromDevices import FromDevices
|
|
from ToDevices import ToDevices
|
|
from ModbusBase import ModbusHandler
|
|
from loguru import logger
|
|
from config import Config
|
|
import logging
|
|
import threading
|
|
import sys
|
|
|
|
|
|
|
|
deathBell = threading.Event()
|
|
|
|
def exceptHook(args):
|
|
global deathBell
|
|
logger.error("Exception in thread caught: {}".format(args))
|
|
deathBell.set()
|
|
logger.error("rang the death bell")
|
|
|
|
|
|
logger.info("pv controller starting")
|
|
|
|
config = Config.load_from_file()
|
|
|
|
# configure loguru: only log INFO and above
|
|
logger.remove()
|
|
logger.add(sys.stdout, level=config.global_.log_level)
|
|
|
|
|
|
modbusHandler = ModbusHandler(config)
|
|
|
|
toDevicesThread = ToDevices(config, modbusHandler)
|
|
toDevicesThread.start()
|
|
logger.info("toDevices started")
|
|
|
|
fromDevicesThread = FromDevices(config, modbusHandler)
|
|
fromDevicesThread.start()
|
|
logger.info("fromDevices started")
|
|
|
|
threading.excepthook = exceptHook
|
|
logger.info("Threading excepthook set")
|
|
|
|
logger.info("pv controller is running")
|
|
|
|
|
|
deathBell.wait()
|
|
logger.error("pv controller is dying")
|
|
|
|
toDevicesThread.stop()
|
|
fromDevicesThread.stop()
|
|
|
|
toDevicesThread.join()
|
|
logger.error("toDevices joined")
|
|
fromDevicesThread.join()
|
|
logger.error("fromDevices joined")
|
|
|
|
logger.error("pv controller is terminated")
|