diff options
author | Evgeny Zinoviev <me@ch1p.io> | 2021-11-02 21:29:25 +0300 |
---|---|---|
committer | Evgeny Zinoviev <me@ch1p.io> | 2021-11-02 21:59:29 +0300 |
commit | eb970844576f0f9d84b5a385f615582b50e0afa9 (patch) | |
tree | 184992ca7371a48e96afdc88dbe57ab998df59e7 /src/inverter_wrapper.py | |
parent | 3346b29044740090d4ecee0056e456e90888c218 (diff) |
implement AC charging program
Diffstat (limited to 'src/inverter_wrapper.py')
-rw-r--r-- | src/inverter_wrapper.py | 47 |
1 files changed, 47 insertions, 0 deletions
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() |