Files
pv-controller/src/pv_controller/pvc.py
2022-11-22 21:15:38 +01:00

74 lines
1.8 KiB
Python

from MeterPublish import MeterPublish
from RelaisPublish import RelaisPublish
from RelaisSubscribe import RelaisSubscribe
from ModbusBase import ModbusHandler
from loguru import logger
import logging
import argparse
import configparser
import threading
l = logging.getLogger()
for h in l.handlers:
l.removeHandler(h)
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")
parser = argparse.ArgumentParser(description="pv controller")
parser.add_argument('--config', '-f',
help='Config file, default is $pwd/config.ini',
required=False,
default='./config.ini')
args = parser.parse_args()
config = configparser.ConfigParser()
config.read(args.config)
modbusHandler = ModbusHandler(config)
relaisSubscribeThread = RelaisSubscribe(config, modbusHandler)
relaisSubscribeThread.start()
logger.info("relaisSubscribe started")
meterPublishThread = MeterPublish(config, modbusHandler)
meterPublishThread.start()
logger.info("meterPublishThread started")
relaisPublishThread = RelaisPublish(config, modbusHandler)
relaisPublishThread.start()
logger.info("relaisPublishThread started")
threading.excepthook = exceptHook
logger.info("Threading excepthook set")
logger.info("pv controller is running")
deathBell.wait()
logger.error("pv controller is dying")
relaisSubscribeThread.stop()
meterPublishThread.stop()
relaisPublishThread.stop()
relaisSubscribeThread.join()
logger.error("relaisSubscribe joined")
meterPublishThread.join()
logger.error("meterPublishThread joined")
relaisPublishThread.join()
logger.error("relaisPublishThread joined")
logger.error("pv controller is terminated")