diff --git a/srnemqtt/__main__.py b/srnemqtt/__main__.py index 70cb669..4470d7b 100755 --- a/srnemqtt/__main__.py +++ b/srnemqtt/__main__.py @@ -5,7 +5,8 @@ import time from decimal import Decimal from typing import cast -from bluepy import btle +from bluepy.btle import BTLEDisconnectError +from serial import SerialException from .config import get_config, get_consumers from .constants import MAC @@ -15,12 +16,19 @@ from .solar_types import DataName from .util import Periodical, log +class CommunicationError(BTLEDisconnectError, SerialException): + pass + + def main(): conf = get_config() consumers = get_consumers(conf) per_voltages = Periodical(interval=15) per_current_hist = Periodical(interval=60) + # import serial + + # ser = serial.Serial() try: while True: @@ -96,7 +104,7 @@ def main(): # else: # write(wd, CMD_ENABLE_LOAD) - except btle.BTLEDisconnectError: + except CommunicationError: log("ERROR: Disconnected") time.sleep(1) diff --git a/srnemqtt/config.py b/srnemqtt/config.py index de435eb..2b680a7 100644 --- a/srnemqtt/config.py +++ b/srnemqtt/config.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import importlib import os +from io import RawIOBase from time import sleep from typing import Any, Dict, List, Optional, Type @@ -52,6 +53,23 @@ def get_consumers(conf: Optional[Dict[str, Any]] = None) -> List[BaseConsumer]: return consumers +def get_producers(conf: Optional[Dict[str, Any]] = None) -> List[RawIOBase]: + raise NotImplementedError + if conf is None: + conf = get_config() + + consumers = [] + for name, consumer_config in conf["consumers"].items(): + # print(name, consumer_config) + mod = get_consumer(name) + if mod: + # print(mod) + consumers.append(mod(consumer_config)) + + write_config(conf) + return consumers + + if __name__ == "__main__": conf = get_config() diff --git a/srnemqtt/sources/__init__.py b/srnemqtt/sources/__init__.py new file mode 100644 index 0000000..5d697bc --- /dev/null +++ b/srnemqtt/sources/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +from abc import ABCMeta +from io import RawIOBase + + +class BaseSource(RawIOBase, metaclass=ABCMeta): + pass diff --git a/srnemqtt/sources/feasycom.py b/srnemqtt/sources/feasycom.py new file mode 100644 index 0000000..c3c0859 --- /dev/null +++ b/srnemqtt/sources/feasycom.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# from ..lib.feasycom_ble import BTLEUart +from . import BaseSource + + +class FeasycomSource(BaseSource): + pass diff --git a/srnemqtt/sources/serial.py b/srnemqtt/sources/serial.py new file mode 100644 index 0000000..7322a31 --- /dev/null +++ b/srnemqtt/sources/serial.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# import serial + +from . import BaseSource + + +class SerialSource(BaseSource): + pass