From eb970844576f0f9d84b5a385f615582b50e0afa9 Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Tue, 2 Nov 2021 21:29:25 +0300 Subject: implement AC charging program --- src/inverter_wrapper.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/inverter_wrapper.py (limited to 'src/inverter_wrapper.py') diff --git a/src/inverter_wrapper.py b/src/inverter_wrapper.py new file mode 100644 index 0000000..b6494e4 --- /dev/null +++ b/src/inverter_wrapper.py @@ -0,0 +1,47 @@ +import json + +from threading import Lock +from inverterd import ( + Format, + Client as InverterClient, + InverterError +) + +_lock = Lock() + + +class InverterClientWrapper: + def __init__(self): + self._inverter = None + self._host = None + self._port = None + + def init(self, host: str, port: int): + self._host = host + self._port = port + self.create() + + def create(self): + self._inverter = InverterClient(host=self._host, port=self._port) + self._inverter.connect() + + def exec(self, command: str, arguments: tuple = (), format=Format.JSON): + with _lock: + try: + self._inverter.format(format) + response = self._inverter.exec(command, arguments) + if format == Format.JSON: + response = json.loads(response) + return response + except InverterError as e: + raise e + except Exception as e: + # silently try to reconnect + try: + self.create() + except Exception: + pass + raise e + + +wrapper_instance = InverterClientWrapper() -- cgit v1.2.3