Changelog¶
[0.0.2] - June 21, 2024¶
Key updates include:
Extended Shelly device support to include the ‘Shelly Motion Sensor’, which helps determine if anyone is at home and controls the hot water circulator pump accordingly.
Implemented several simulation classes for testing environments without actual sensor data:
Shelly Motion Sensor Simulator
Shelly Plus 1 Simulator
Replaced the Doxygen (C++) documentation tool with Python’s native Sphinx.
Fully implemented the plugin architecture; all existing classes are now genuine plugins, even though they are deployed in a single package.
Introduced a serialization system based on JSON format.
Reformatted Python code using the ‘black’ code formatter.
Automated class initialization e.g. calling of cls.load_json() and atexit.register() methods upon import.
Shortened long imports (e.g., from juham.shelly.jshellymotion import ShellyMotion) using __init__.py, resulting in cleaner imports (e.g., from juham.shelly import ShellyMotion).
Updated filename and classname conventions from C-style to Pythonic (e.g., JShellyMotion to ShellyMotion).
Added support for multiple configurations via startup arguments: –configuration-folder [path]. This allows running the same automation app on different sites or for various purposes (e.g., production, testing).
Started transition to Python type annotations. Installed mypy and wooah, I’w missed type checking so much!
Adopted f-string convention, e.g. self.log(f”Forecast for {days} days acquired”).
UML class diagrams.
[snip]
[0.0.1] - May 23, 2024¶
Private in-house releases, not published to the Python repository — for everyone’s sake.
Added support for more devices:
Shelly PRO Energy Meter
HomeWizard Water Meter
Introduced the class factory method pattern.
Added class-specific JSON configuration files, allowing automation classes to be configured instead of hardcoding settings in Python.
More refined class hierarchy, for minimizing code/functionality ratio.
First unit tests added
[snip]
[0.0.0] - May 21, 2024¶
Initial release featuring:
A functioning system
Some unconventional use of the Python programming language
Mosquitto MQTT via Paho
InfluxDB V3 time series recording
Python package installable via pip, based on pyproject.toml
MIT license
README, CHANGELOG, and other standard files in .rst format
A cool project name, ‘Juham™’, with a note: M currently stands for mission rather than masterpiece
Initial support for Shelly WiFi relays with temperature sensors
Some docstrings and related developer documentation generated with Doxygen