From 05d10107acf4530049041b4aa88d6396966694e7 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Wed, 8 Nov 2023 14:37:29 +0100 Subject: [PATCH] adjust for cluster deployment --- deployment/install.yml | 41 +++++++++++++++++++++++++++++++++++++ src/pv_controller/config.py | 31 ++++++++++++++++++++++++++++ src/pv_controller/pvc.py | 13 ++---------- 3 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 deployment/install.yml create mode 100644 src/pv_controller/config.py diff --git a/deployment/install.yml b/deployment/install.yml new file mode 100644 index 0000000..8253519 --- /dev/null +++ b/deployment/install.yml @@ -0,0 +1,41 @@ +apiVersion: v1 +kind: namespace +metadata: + name: pv-controller +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: pv-controller + namespace: pv-controller +data: + MQTT__BROKER: "emqx01-anonymous-cluster-internal.broker.svc.cluster.local" + MQTT__PORT: "1883" + MQTT__METERPUBLISHTOPIC: "IoT/PV/Values" + MQTT__METERPUBLISHPERIOD: "15" + MQTT__RELAISSUBSCRIBETOPIC: "IoT/PV/Cmd" + MODBUS__GATEWAY: "172.16.2.42" +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: pv-controller + namespace: pv-controller + labels: + app: pv-controller +spec: + replicas: 1 + selector: + matchLabels: + app: pv-controller + template: + metadata: + labels: + app: pv-controller + spec: + containers: + - name: pv-controller + image: wollud1969/sinkserver:e5f9d3e3 + envFrom: + - configMapRef: + name: pv-controller diff --git a/src/pv_controller/config.py b/src/pv_controller/config.py new file mode 100644 index 0000000..02e5b4d --- /dev/null +++ b/src/pv_controller/config.py @@ -0,0 +1,31 @@ +import os + +class Config: + OPTIONS = { + 'mqtt': [ 'login', + 'password', + 'ca', + 'cert', + 'key', + 'broker', + 'port', + 'meterPublishTopic', + 'meterPublishPeriod', + 'relaisSubscribeTopic' ], + 'modbus': [ 'gateway' ] + } + + def __init__(self): + self.values = {} + for section, keys in OPTIONS: + self.values[section] = {} + for key in keys: + varname = f"{section}__{key}".upper() + try: + self.values[section][key] = os.environ[varname] + except KeyError: + pass + + def __getitem__(self, section): + return self.values[index] + diff --git a/src/pv_controller/pvc.py b/src/pv_controller/pvc.py index fa2e796..fb6b41d 100644 --- a/src/pv_controller/pvc.py +++ b/src/pv_controller/pvc.py @@ -2,9 +2,8 @@ from MeterPublish import MeterPublish from RelaisSubscribe import RelaisSubscribe from ModbusBase import ModbusHandler from loguru import logger +from config import Config import logging -import argparse -import configparser import threading @@ -23,15 +22,7 @@ def exceptHook(args): 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) +config = Config() modbusHandler = ModbusHandler(config)