74 lines
1.8 KiB
Python
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")
|