Release 1.9.4 - 14. März 2023
Dieses Release ist ein Wartungs-Release. Außer Bugfixes gibt es einige neue Features im Core von SmartHomeNG, sowie einige neue Plugins.
Überblick
Dieses ist neues Release für SmartHomeNG. Die Änderungen gegenüber dem Release v1.9.3 sind im folgenden in diesen Release Notes beschrieben.
Minimum Python Version
Die absolute Minimum Python Version ist in der Dokumentation unter Hard- u. Software Anforderungen im Abschnitt Python Versionen dokumentiert.
Für das SmartHomeNG Release 1.10 wird die absolute Minimum Python Version evtl. auf Python 3.8 angehoben, zumal der Security support für Pyton 3.7 im Juni 2023 endet.
Bei einer Neuinstallation wird jedoch empfohlen auf einer der neueren Python Versionen (3.9, 3.10 oder 3.11) aufzusetzen.
Unterstützte Python Versionen
Die älteste offiziell unterstützte Python Version für SmartHomeNG Release 1.9.x ist Python 3.7. Automatisierte Tests von SmartHomeNG werden nur in den unterstützten Python Versionen durchgeführt. (Siehe auch Hard- u. Software Anforderungen im Abschnitt Installation zu unterstützten Python Versionen)
Änderungen am Core
Allgmein
Workflows:
Added Github actions workflow to successfully test pull requests
Updates in the CORE
Configuration:
logging.yaml.default: Modified LEVEL for plugins: to NOTICE to reflect the ability of plugins to log NOTICEs
Libs:
lib.config:
Adjusting log levels for missing module/plugin config
Fix startup error on empty plugins/modules config
lib-daemon:
Fix for issue #498 - Error on restarting if SmartHomeNG is not running
lib.item:
Fix startup error on empty plugins/modules config
Delete invalid cahe files (size=0 bytes), so a new cache file is created
Bugfix for relative path expansion
Bugfix for relative destination item pathes in on_update/on_change if ‚=‘ assignement is used
lib.metadata:
Moved definition of global plugin parameter ‚instance‘ from shngadmin to lib.metadata
Implemented global plugin parameter ‚webif_pagelength‘ (takes definition from parameter with same name in module.http)
Added plugin parameter ‚startorder‘
lib.model.smartplugin:
Preparing SmartPlugin for editable items
Minor fixes
Fix to create local _plg_item_dict and _item_lookup_dict for each plugin (that calls super().__init__)
Adjust add_item functionality
add_item(): Updating parameter
add_item(): Prevent default parameters from being changed in method
Added SmartPlugin doc (to temporary location at lib.model)
add_item() corrected, get_device_commands() added and get_items() renamed to get_item_list()
Changed ‚device_command‘ to ‚mapping‘
added get_item_mapping()
Added filter_key and filter_value as arguments for get_item_list() and get_item_path_list()
Renamed get_items_for_command() to get_items_for_mapping()
Updated inline documentation
lib.network:
Catch (ignore) errors if socket is no longer connected on shutdown
lib.plugin:
Implemented extended logging levels (NOTICE, DBGHIGH, DBGMED, DBGLOW) for plugins too
Added plugin parameter ‚startorder‘
Reversed stop order of plugins. Now they are stopped in the oposite order they were started
Info added to plugin exception log entries
lib.scheduler:
Catch more exceptions outside scheduler to prevent thread end
Adjusted logging on leaving run method
Added set_worker_warn_count() method
lib.shpypi:
Bugfix
lib.shtime:
current_monthname() implemented
lib.smarthome:
Added reload_translations() to smarthome object to enable reload of translations during runtime through eval syntax-checker (evaluate: sh.reload_translations())
Info added to log entires of not catched exceptions
Modifications to use lib.systeminfo
Added call lib.systeminfo to measure cpu speed and set worker-warn-count in scheduler acordingly
Adjusted startorder
lib.systeminfo:
New library to get info about the system, SmartHomeNG is running on
lib.triggertimes:
Added info to error log message
lib.translation:
Enhanced translations to accept module specific translations (for module/http)
lib.utils:
Corrected handling of is_knx_groupaddress() when parameter ‚groupaddress‘ is no string
Modules:
admin:
Fix for reading of logfiles if folder contains files without extension .log
Updated module to reflect new url of documentation and allow access to documentation of defelop branch
Updated shngAdmin to v0.6.1
Moved definition of global plugin parameter ‚instance‘ from shngadmin to lib.metadata
Updated shngAdmin to v0.6.3
Fix for displaying on_update and on_change in item details
Updated shngAdmin to v0.6.4
Fixed issue #522: Warning after changing plugin loglevel
shngadmin: Modifications to system ovwerview (show if running in virtual environment, …)
Updated shngAdmin to v0.6.5
Modified to use systeminfo from smarthome object
http:
Datatables: put responsive hide/show child into separate first column to avoid conflicts with truncate functionality in first column. Be aware: a new th/td html element needs to be put into all datatables!
Made top row/table responsive using javascript
Margins for autorefresh elements
Make headtable responsive - calculate table min-width automatically if not provided manually
Improve table td widths
Implement webif_pagelength to globally define standard page length of datatables (set to „auto fit to page height by default)
Implement option to disable buttons in header
Throw console warning if first column has some content (it should be empty!)
Make web interfaces more responsive (width of top table, height of header) - updates
Bump version to 1.7.0 (as lots of changes were made ;))
Show auto refresh options only if update_interval is defined
Avoid errors and warnings if auto refresh options are not shown as well as when table has no data
Add some more date/time formats for correct sorting
Fix header min-width calculation
Fix and improve responsive header
Webinterfaces: Bug fix for reload-button
Webinterfaces: Improved datatable implementation (fix responsive issues on tab load/change, include <div> above datatable in resize calculation)
Webinterfaces: Fix resize calculation.. consider all divs with class mb-2 for resize
Webinterfaces: Instant update table refresh if checkbox for autoupdate is activated
Webinterfaces: Included javascript file for codemirror
Webinterfaces: When creating an icon on the homescreen on iPhones and iPads, the created icon is the plugin logo if the plugin logo is an png file
Introduce connectionretries parameter, improve datatables handling
mqtt:
Fixed a runtime error „dictionary changed size during iteration“
websocket:
Added canceling of all smartVISU abos when websocket connection is dropped
Adjusted log levels for lost connections
Added cancel_log to sv payload protocol
Bumped sv payload protocol version to 4.1
Fixed bug trying do cancel a log, when no logs are monitored for that client
Seperated example protocol ‚sync example‘ to it’s own class
Improved handling in cancel_log, if log subscription is not found
Some code streamlining
Completed isolation of payload protocols
Bumped to v1.0.9
Improved handling in cancel_log, if log subscription is not found
tests:
Updated core mockup for extended log levels for plugins
Änderungen bei Plugins
Allgmein
Workflows:
Added Python 3.11 to unit tests
Added Github actions workflow to successfully test pull requests
Neue Plugins
Für Details zu den neuen Plugins, bitte die Dokumentation des jeweiligen Plugins unter http://www.smarthomeng.de/user/plugins_all.html konsultieren.
indego4shng: Plugin, the original indego-plugin is deprecated
piratewthr: Weather plugin as a replacement for the darksky plugin. It is (almost) a dropin replacement
rcs1000n: Plugin for 433 MHz wireless sockets e.g. for Brennenstuhl RCS 1000 N
sml2: Plugin to read out smartmeter information with SML protocol
webpush: Plugin to send web push messages to clients
db_addon: Add-On for the database plugin for data evaluation
Plugin Updates
Für Details zu den Änderungen an den einzelnen Plugins, bitte die Dokumentation des jeweiligen Plugins unter http://www.smarthomeng.de/user/plugins_all.html konsultieren.
avdevice:
Fix web interface to work with newest datatables changes
Update and improve web interface and webif_pagelength handling
avm:
Minor clean-up for user_doc and metadata
Complete re-writing of plugin, putting TR064, AHA und CallMonitor in separate Classes for better readability and maintenance
Available services and actions will be read at startup from device itself and are in general available within the plugin all known item attributes and functions are available
Deprecated warning for some item attributes will be put to logger
Please change to new attributes (e.g. ain –> avm_ain)
Items with avm_attribute causing errors (e.g. read of deflection of not set) will be blacklisted after error occurred 3 times, Reset of blacklist is available during runtime via WebIF
Some new functions implemented
beolink:
Bugfix in webinterface
blockly:
Fix for failing unittests. The unittests imported tests from the (now retired) backend plugin instead of defining the tests localy.
casambi:
Fixed switch on/off state readback due to API or firmware change
Added handling for networkLog events from backend as debug outputs
Separated WebIf into separate file
Cleaned-up user_doc
Added changelog to user_doc
Minor change to user_doc
cli:
Adjust web interface
Updates to documentation
database:
Include webif_pagelength from module.yaml, move column classes to dt init function
Minor webif fixes and improvements
Simplify and improve web interface
Added parameter to set a default maxage for items w/o individual one
Optimized remove of log entries older as maxage (extreme speed increase)
Reimplemented cleanup (removal of orphans) to be able to run parallel to normal operation
Corrected download filename for csv dump
Implemented sql dump for sqlite3 databases
Added orphan-tab to web interface; enhanced/fixed ude of http-module translations;
Code cleanup
Updated user dorumentation
Implemented separate db connection for maintenance (orphan handling) to fix problems with mysql driver (whiwch allows only one cursor per connection)
Fix showing of orphaned items if logcount is disabled.
Bumped version to 1.6.9
Minor adjustments in metadata and documentation
Adjusted a log message
Set startorder to ‚early‘
dlms:
Add logo to user_doc
enocean:
Separated WebIf from main file
New user_doc
Fixed EEP F6_10_00, further work on user_doc
Improved user_doc
executor:
Remove eval capability, add script listbox, load, save and delete
Enhancement - autocomplete for codemirror
gpio:
Fix minor typos, add user doc, implement webif_pagelength and correct automatic page length on browser window resize
Adjust webif_pagelength handling
harmony:
Added item attribute to metadata
Bumped version to 1.4.2
Fixed bug ‚PowerOff handling not correct‘ from issue #674
helios:
Changes to Helios Modbus RTU plugin (metadata only)
helios_tcp:
Fixes to work with newer pymodbus versions
homeconnect:
Clean-up for code and metadata
hue2:
Implemented for lights: read from bridge für items with function ‚dict‘
Added Modell ID to web interface
Added more verbose log messages for deCONZ software bridge
Added function ‚modify_scene‘
Incorporated fixes/additions from pr #667 for bridge discovery, typo for „hue_refence_light_id“
Implementation On-State retrieval for groups through parsing groups „any_on“ state
Added handling for sensors and a couple of hue2_functions for sensors
Bump to v2.3.0
Added reading of some config parameters for sensors
Removed some logging
Added enforce_updates to dict item in struct _light_basic
husky2:
Updated refresh of token
ical:
Fixed decoding of calendar events that have the same identifiers, e.g. happens if single events of a calendar series are rescheduled once.
Minor adaptions in user_doc
influxdata:
Set startorder to ‚early‘
influxdb:
Set startorder to ‚early‘
influxdb2:
Updates to documentation
Set startorder to ‚early‘
join:
Added say and language parameters, see issue #673
jsonread:
Adjusted requirements.txt
knx:
Improve structure (introduce globals, put webif in separate init file)
Introduce webif_pagelength and improve web interface
Improve web interface
Fix values being None for plugin with instance defined
Adjust webif_pagelength handling, first preparation for automatic data update in webif
Webif: Adapt handling of knx_Listen: If knx_listen just contains 1 entry, it will be shown directly, if knx_listen contains more than 1 entry, it will be shown as list.
Updated metadata definition
Corrected description of knx_cache in metadata
Fixed call to _cacheread() in handle_connect(), if ga is an empty string
Bumped version to 1.8.5
kostalmodbus:
Fixes to work with new version of pymodbus and add registers includes #658 and adds missing registeres for KSEM and Kostal inverters
Fixes to work with newer pymodbus versions
ksemmodbus:
Fixes to work with new version of pymodbus and add registers includes #658 and adds missing registeres for KSEM and Kostal inverters
Fixes to work with newer pymodbus versions
Modbus_tcp:
Fixes to work with newer pymodbus versions
mqtt:
Update webif_pagelength implementation, small webif adjustments
Adjust webif_pagelength handling, minor fixes in user_doc and webif
neato:
Log only one error if robot is not reachable via backend
Seperated WebInterface into separate file
Cleaned-up user_doc
Added warning message for server return code 500
network:
Minor adaptations in user_doc
onewire:
Several enhancements and fixes
Vastly extended webinterface
Documentation updates
Implemented auto refresh for the webinterface
Added plugin parameter ‚warn_after‘
Disabled reload button in web interface (the web interface now does a complete auto update for all data)
Clean-up for user_doc and metadata
Streamlined handling of webif_pagelength
Changed to use new SmartPlugin (core v1.9.3.4)
Bumped version to 1.9.1
Update for changed SmartPlugin method name get_items_for_mapping()
Modified some log messages
openweathermap:
Update Error-Handling mechanism and set version to 1.8.6
Improve error handling
Made API version configurable. Recently registered new users shall use API version 3.0 instead of version 2.5 which will run out
Degraded subsequent error messages following login errors to debug level to avoid spamming of the error log file.
Partly reverted API version configuration: Make only the OnceCall API configurable to 2.5 or 3.0, all other APIs(pollution, weather etc.) remain at version 2.5
Clean-up for user_doc and metadata
philips_tv:
Separated WebIf
Cleaned-up user_doc
Mark plugin as ready
Fixed translation in locale.yaml
pluggit:
Fixes to work with newer pymodbus versions
resol:
Catched socket timeout exception which occurs if ethernet is temporarily not available.
Extended user_doc
rtr2:
F2ixes the configuration of Kp and Ki for individual rtrs using the rtr2_controller_settings item attribute
Added english descriptions vor plugin parameters
Added a section to user_doc.rst from PR #648
Added ‚cache: True‘ to item stellwert‘ in struct to prevent mis-regulations when restarting SmartHomeNG
Implemented autoupdate for webinterface
Bumped version to 2.2.0
Disabled reload button in web interface (the web interface now does a complete auto update for all data)
Added plugin-logo to user_doc.rst
Changed default values in metadata
sma_mb:
Fixes to work with newer pymodbus versions
smartvisu:
Updates to documentation
Implemented auto refresh for clients tab in web interface;
Extended protocol documentation (log_cancel)
Modified to work with websocket module 1.0.9
Set sh_minversion to 1.9.3.5
Fixed bug ‚error reading deprecated.yaml‘ from issue #670
Simplify webif_pagelength in index.html
Support for darkmode handling of smartvisu 3.3 and above added
Bumped version to 1.8.9
sml:
Added missing requirement for pyserial
smlx:
Add files via upload
solarforecast:
Catch error, if solarforecast webservice is temporarily not reachable
Separated WebIf from main file
Cleaned-up user_doc and metadata
sonos:
Fix for mute does not work for coupled speakers. -> Fixed by making mute a group command.
Updated underlying SoCo framework to version 29.0, which amongst others fixes exception in unsubscribe function. Catched pipe error that could occur in play_snippet for local sound files.
Added play_sharelink command (to support Spotify sharelinks)
Added user_doc
Separated WebIf from main file
Massive rework of user_doc
Several changes (description in commit 6761e43)
Added methods to class speaker
Added handling of play_favorite_title, play_favorite_number, play_favorite_radio_number, play_favorite_radio_title, _play_sonos_radio to class Sonos
Added attribute ‚send_attributes‘ to metadata
Documentation update
Bumped version to 1.8.0
minor fix for play_favorite_number function, catching exception that occurs if index position 0 is passed as argument
stateengine:
Improve web interface - automatic refresh, show loglevel on item basis, show visu on button click. Needs most recent http module update (Nov, 8) to work correctly
Implement webif_pagelength from module, slight webif adjustments
Bump to v 1.9.3
Fix log message for delay
Fix error on startup (important)
Fix metadata and implement webif in docu
Adjust webif_pagelength handling
Simplify webif_pagelength in index.html
tasmota:
Bumped to Version 1.3
Implement Cluster und Group Commands for Zigbee
Improved parsing of discovery message to detect and identify existing devices
Improved start of subscriptions to notice all discovery messages
Easy Zigbee data handling (more flat dict structure)
Define allowed attribute values for tasmota_zb_attr
Added support for SHT3x sensor connected to Tasmota device
Updated WebIF to latest http-module
Code Cleanup and beautifying for better readability
Implement Tasmota SML; Add further Zigbee attributes
Update WebIF
Use pagelength for http module
Support ESP32 temps and temps an analog pin
User docu update
tankerkoenig:
Bumped to Version 2
Added support of items (No need for logic anymore) but keep recent public functions identical
Add WebIF
Reducing available functions
Named _full function back to old name
Added cast to float to rad value
Added check for Nonetype results
telegram:
Control SH-item in the bot
Example in readme.rst.off
Bak to control-menu after „on“ or „off“
Small optical cosmetics
Adjust web interface, include webif_pagelength
Bump version to 1.7.1
trovis557x:
Changes to Samson Trovis 557x plugin (for new pymodbus versions)
uzsu:
Get webif_pagelength from module.yaml if possible, adjust webif accordingly
Bump to v1.6.4
Adjusted requirements.txt for scipy to run unit tests under Python 3.11
Adjust webif_pagelength handling to new parameter handling
Removed deprecated required_package check for scipy module
xiaomi_vac:
Fix docu, adjust web interface, implement webif_pagelength from http module
Adjust webif_pagelength handling
Fix docu
Outdated Plugins
Die folgenden Plugins wurden bereits in v1.6 als deprecated (veraltet) markiert. Das bedeutet, dass diese Plugins zwar noch funktionsfähig sind, aber nicht mehr weiter entwickelt werden. Sie werden in einem kommenden Release von SmartHomeNG entfernt werden. Anwender dieser Plugins sollten auf geeignete Nachfolge-Plugins wechseln.
System Plugins
sqlite_visu2_8 - switch to the database plugin
Web Plugins
wunderground - The free API is not provided anymore by Wunderground
darksky - The api will stop working on end of march 2023 - switch to piratewthr plugin
Die folgenden Plugins wurden in v1.7 als deprecated (veraltet) markiert, weil kein Nutzer oder Tester dieser Plugins gefunden werden konnte. Falls sich kein Nutzer findet, werden sie mit SmartHomeNG v1.10 retired:
Gateway Plugins
ecmd
elro
iaqstick
snom
tellstick
Interface Plugins
easymeter
smawb
vr100
Web Plugins
nma
Weiterhin wurde das bisherige mqtt Plugin zu mqtt1 umbenannt und als deprecated markiert, da das neue mqtt Plugin diese Funktionalität übernimmt. Das neue mqtt Plugin nutzt dazu das mqtt Modul des aktuellen Cores von SmartHomeNG.
Retired Plugins
Die folgenden Plugins wurden retired (in den RUhestand geschickt). Sie waren in einem der vorangegangenen Releases von SmartHomeNG als deprecated markiert worden. Diese Plugins wurden aus dem plugins Repository entfernt, stehen jedoch als Referenz weiterhin zur Verfügung. Diese Plugins wurden in das plugin_archive Repositiory aufgenommen.
backend: Since there is a security flaw in the depricated plugin, it has been retired
Weitere Änderungen
Tools
backup_restore.py:
Proposed fix for tarfile extractall
check_plugin.py:
Initial development version of check_plugin.py (a formal plugin checker)
Option added to check all plugins
setpermissions:
New tool to set permissions after checkout from github
measure_cpu_speed.py:
New tool to set permissions after checkout from github
Dokumentation
Changed builddevdoc to use Python 3.9
Updates to icons and widgets in docu „visu: automatich generation“
fix and improve logging (filter) docu
Corrected link for Google translation of documentation
Sample Plugins:
Adjust mqtt and standard sample plugin to reflect the newest changes (webif_pagelength, additional column for responsive in datatables)
http module:
Update documentation (include webif_pagelength updates, minor fixes, additional options to show/hide buttons, etc.)