TODOs for Juham™ ================ An exceptionally well structured almost priorized list of TODOs for Juham™ Automation ---------- * [_] Feature to optimize the balance between solar power production and electricity consumption to minimize costs associated with electricity transmission. * [_] Support for the current 1-Hour, and the forthcoming 15-Minute Imbalance Settlement Period * [_] Bought five small solar panel elements, capable to produce electricity up to 5 volts. This could be used as a real time solar radiation sensor with Shelly Plus 1 wifi relay. * [_] ... Python ------ * [X] Class registration methods have to call cls.load_json() and atexit.register() methods, could this be automated? * [X] Long imports e.g. `juham.shelly.jshellymotion import JShellyMotion`? * [_] Major design decision: continue with the current multi-threading architecture (which Python currently does not really support well), or move to multi-processing or asyncio instead? * [_] Python type annotations (type hinting). Design ------ * [_] Decouple threads and functionality: any task should be runnable by a thread, an external process (perhaps run via cron), or by using an async IO approach. * [_] Support for MQTT password, encrypted in the .json configuration file, for security. * [_] Simulation classes for essential data sources, for development, testing, and demonstration purposes. * [_] ... Documentation ------------- * [X] Replace the current Doxygen (C++) with some native python documentation too e.g. Sphinx? * [_] Extract FIXME and TODO inline comments from the source code with the autogenerated Sphinx docs * [_] Design and integrate a distinctive and highly professional Juham™ look with an outstanding logo and other graphics. * [_] ... Testing ------- * [X] Support multiple configurations via startup arguments (one for testing, one for real) * [_] Write unit tests for all classes * [_] Mocking (e.g. unittest.mock?)