Release 1.11.0 - tt. mmm 2025
Dieses Release ist ein Wartungs-Release. Außer Bugfixes gibt es einige neue Features im Core von SmartHomeNG, sowie einige neue Plugins.
Bemerkung
Diese Release Notes sind ein Arbeitsstand des develop Branches.
Berücksichtigt sind Commits im smarthome Repository bis incl. 31. Dezember 2024 (…)
Berücksichtigt sind Commits im plugins Repository bis incl. 31. Dezember 2024 (…)
Überblick
Dieses ist neues Release für SmartHomeNG. Die Änderungen gegenüber dem Release v1.10.0 sind im folgenden in diesen Release Notes beschrieben.
Minimum Python Version
Die absolute Minimum Python Version in der SmartHomeNG startet, ist Python 3.8.
Bereits für das SmartHomeNG Release 1.10 wurde die absolute Minimum Python Version auf Python 3.8 angehoben, da der Community Support für Python 3.7 am 27. Juni 2023 endete.
Bei einer Neuinstallation wird jedoch empfohlen auf einer der neueren Python Versionen (3.10 oder 3.11) aufzusetzen.
Unterstützte Python Versionen
Die älteste offiziell unterstützte Python Version für SmartHomeNG Release 1.11.0 ist Python 3.8. 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
github:
Workflows: Fix unittest for forked repos in core
Modify gitignore structure
Bugfixes im CORE
Fix pathname/conffile access
Updates in the CORE
Move templates for logics and userfucntions to new template dir, adjust api_files
Replace static file/dir references by constants
Move to get_config_dir/get_config_file
Rename templates_dir var
Add metadata checks for sdp version
Add pyrightconfig.json to gitignore
bin
smarthome
Added option -e (–config_etc)
shngversion:
Bumped core version to 1.10.0.2 -> added support for asyncio in plugins
Bumped core version to 1.10.0.3 -> Added support for suspend/resume and functions for pause_item
Items:
…
Logics:
…
Libs:
requirements.txt: Some libs received overhauling and bugs were fixed
lib.backup:
Added support for option -e (–config_etc)
Added the output of ‚pip list‘ to the configuration backup file
Added support for subdirectory common in esphome_config directory
lib.config:
Remove name attribute from struct root before merging
Add struct syntax checking
Small fix
lib.db:
Handle numeric passwords and OrderedDict lists
lib.env:
Modified error handling for location_name()
Added some logging
Adjusted a log level
lib.item:
Replace item.path() with item.property.path
Added warning for collision of name and class method
Speedup name collision check
Add methods for list/dict manipulation
Remove old list/dict methods
Add ancestor item/attr methods
Replace return_parent and _get_attribute_value
Rename find_attr to find_attribute
find_attribute: Return default value
Allow log level to be set by eval expression
Fader introduce stop_fade, continue_fade, instant_set and update functionality
Fader check if stop/continue_fade is list and handle issues
on_update and on_change now support special vars ‚caller‘, ‚source‘ and ‚dest‘ in addition to ‚value‘
Fix dynamic log_level
Allow for default log text in smarthome.yaml, used by log_change
log_mapping and log_rules are now expected to be stated as a list. However, putting a dict as string is still possible (non-breaking)
Revert _items_instance.return_item
Fader method: fix caching after successful fade
Log rules: log warning if invalid parameter is set
Remove debug code
log_rules: Detailed warnings on wrong configuration, only log the same entry once
log_rules: Ignore same low- and highlimit values, only lowlimit counts
lib.log:
Mutable etc_dir not persited in lib/log.py
Log issues with logging.yaml to standard shng logger additionally
Allow weekly, monthly and yearly rotation when using DateTimeRotatingFileHandler
Fix for bug introduced with v 1.10 in ShngTimedRotatingFileHandler: Log content and file name had an offset
custom_replace function: add r in front of regex including d
Add develop level (9) for easier debugging when developing
lib.logic:
Introduce class-wide logic conf filename
lib.model:
mqttplugin:
Replace item.path() with item.property.path
sdp:
Improvements
Add version, cyclic error detection/reconnect
Implement read after write
Fix attr resolving
Fix long cyclic recovery
Several minor fixes/updates
Adjust to smartplugin changes
suspend/resume
Fix missing parameter
Move to sdp v1.0.2
Pass plugin reference to connection/protocol
Change to scheduler_remove_all
Modify run logics
Propose resend protocol
Move command storing
Set protocol to resend if send_retries > 0
Query current value for command that was not successfully sent
Fix and improve read command for querying after resend is not successful
Rename check_command to check_reply as this is more suitable
Join resend/jsonrpc parameters, cleanup
Add minimum version check
Make resending work with custom command values
Correctly handle reply_patterns defined as lists for resend protocol
Parse custom_parameters correctly for reply_pattern used for resend protocol
Improve struct generation
Add delivery queue to serial connection for better timing
Connection.py aktualisieren
Fix order of connect initialization, fix struct generation
Fix sdp references
smartplugin:
Replace item.path() with item.property.path
Added support for the use of asyncio in plugins
Improved error handling in stop_asyncio()
run_async_coro can now return the result of the coro to the calling method
Added option to run_async_coro to return Exception to the calling method
Added method asyncio_state()
Implemented _start_known_asyncio_coro()
Implemented put_command_to_run_queue() and get_command_from_run_queue()
Alternative way to track schedulers
Move suspend item to pause item, cleanup
Add mqttplugin
Fix default _cycle
Remove warning if scheduler entry not found
Added timeout parameter to run_asyncio_coro
lib.network:
Add serial connection reset error handling
lib.shpypi:
Bugfix to prevent plugin requirements from being written to base.txt
Calculate versions for requiremens above/below given version
Added the output of ‚pip list‘ to the configuration backup file
Removed logging from create_pip_list method
Fixed bug in installing requirements, when a wrong pip-command was used
lib.smarthome:
Added support for option -e (–config_etc)
Log issues with logging.yaml to standard shng logger additionally
Added state print when running in forground mode
Catched exception in objects_refcount()
Fix directory calculation for external configuration
Clean up directory vars
Add generic get conffile/confdir method
Create necessary dirs
Skip deprecation warnings for decrepit ciphers on macOS
lib.struct:
Add struct syntax checking
lib.utils:
Added functions to return lists with all local ipv4/ipv6 addresses
Removed logging info and changed parameter typing to be compatible with Python 3.9 and under
lib.whocalledme:
New module to help debugging core and plugin code
Modules:
module.admin:
Adjusted a loglevel
Display all local ipv4 addresses in systemdata
Added option to handle a second webinterface (admin gui)
Implemented CORS support in rest.py
Addition to /api/server
api_config.py updates hashed_password for running instance after password change
Added SystemController()
Added gui_type for boolean parameters
Changed requirements for pyjwt because new version of pyjwt has a breaking change
modules.http:
Extended base_plugin to support 8 tabs in webinterface
Fix issue with datatable when bodytab count changed after cookies have been set
Ensure that actual value of password_hash is used for login
Added gui_type for boolean parameters
Not only update responsive cell when hidden but also when visible
modules.mqtt:
Changed requirements - the lately released paho client 2.0 has breaking changes
Added gui_type for boolean parameters
modules.websocket:
Added attributes to identity message in smartvisu payload protocol
Added gui_type for boolean parameters
Added some logging to smartvisu payload protocol
Fix for smartvisu protocol
Fix item access for smartvisu protocol
Requirements: Limit websocket version to prevent error due to incompatible changes in websocket lib with version 13.0
Fix smartvisu item monitoring
Plugins:
…
tests:
Update mock core
tools:
tools/cpuusage:
Wait for pid file creation
Fix output buffering
Änderungen bei Plugins
Allgmein
Workflows:
Removed Python3.8 from unittests
gitignore:
Adjust gitignore for symlinked priv_* dirs
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.
githubplugin:
Initial commit
Improve api, add binding methods, add error checking
Webif part 1
Implemented plugin selection
Implemented plugin installation
Webif, install working
Enable updating forks/branches/PRs from github
Use user-definable name as plugin name, removed repoitem item
Improve code, show rate limit, check clean work tree
Rework error signaling, refactor WebIf code
Fixed error signaling
Let github signal rate limits
Fix WebIf error display, name suggestion, cleanup code
Fix integrating of datatables
Fix dir scanning for branches with underscores
Fix datatables init, sort fork list
Remove init_repos, update error handling, improve rate limit display
Fix error handling, add pull repo feature
Updated docs, added plugin logo
Prepare dynamic datatable (still disabled)
Create priv_repos dir at startup
Fix possible path/cwd issues
Use get_basedir
Fix all occurrences, not only one…
[wip] rename old version, disable install on rate limit
Rename old version, improve error logging
Keep wt if still used, fix permissions for rmtree
Try to solve non-empty dir problem
Final changes for v1.0.0
Fix detection of clean/ahead/behind
hue3: Anbindung des Philips/Signify Hue Systems über eine Hue Bridge unter Nutzung des neuen API v2
set version to 3.0.1
panasonic_ac:
New plugin to control Panasonic air conditioning units, still in develop state
Updated user_doc.rst and added plugin logo
Update to use released package pcomfortcloud from pypi
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.
alexa4p3:
Added description for alexa-item-properties
Update plugin.yaml: Removed duplicate entry for alexa_item_range
avm:
Catch exception after maximum retries exceeded
Bugfix get_calllist and get_contact_name_by_phone_number
Compatibility edit
beolink:
Bug fixes
Bumped version to 0.8.1
database:
Corrected inline comment
Fix logging error
Fixed log message during exception
Improve getting sqlite3 file method
Copy_database does not disable itself after success anymore (why should it…?)
Change log message of copy database to info (instead of warning)
Added logging
Add orphan reassignment
Remove debug code
Move to REST communication
Remove debug info from index.html
Raw string for regex
Add max_reassign_logentries parameter
Fix sql query
Added time_precision in plugin.yaml
Added _time_precision_query
Applied _time_precision_query
Typo fix
Bumped version to 1.16.14
Added min and max values for plugin time precision plugin attribute
db_addon:
Fix bug in wachstumsgradtage
Fix bug in database queries for „next“-function
Fix bug in database queries for „next“-function
Fix bug in kaeltesumme
Bugfix in wachstumsgradtage and docu update
Bugfix in _query_log_timestamp for „next“ function
Bugfix handling on-change items
Ease dbaddon function parameter set
Adjust to smartplugin changes
Bugfix use of oldest entry
use item_attributes direct from item_attributes_master.py
Add handling of pause_item
Add deinit() if plugin start fails
Rework parse_item sub methods
Extend some functions to get result as sum or list
Use item_attributes direct from item_attributes_master.py
Aadd handling of pause_item
Add deinit() if plugin start fails
Rework parse_item sub methods
Extend some functions to get result as sum or list
Bump to 1.2.10
Bugfix verbrauch
denon:
Fix initial maxvolume check (it’s not available)
Add readafterwrite parameter
Add resend options on plugin.yaml
Query most relevant commands after powering on a zone
Add resend function
Add on_suspend/resume functions
Implement delay for initial value read
Fix resend_info
Add resume_initial_read and protocol (for resend)
Revert resend changes as it is now included as a protocol on a global level
Remove reading of volumemax from structs (it is not available)
Remove threading import
Remove protocol and command_class from plugin.yaml
Auto set command class
Add sdp metadata
Move custom inputnames to dataype
Update plugin.yaml
Do not overwrite on_connect anymore, but read custom inputs with other „initial reads“
Update commands and plugin.yaml
dlms:
Fix typos in user_doc
drexelundweiss:
Prevent division by 0
Fix all configs were divisor is 0
enocean:
Adapted caller to global smarthomeNG convention -> enocean instead of EnOcean
Modify connect logics, include refactoring by hasenradball
Added 0 connect retries for unlimited
Update plugin.yaml
Fix sh min version number
Marked the plugin as being restartable
Fix shift errors
homematic:
Added name to an unnamed thread
Fixed webinterface for items with the same name
hue2:
Small improvement to webinterface
Modified requirements.txt for zeroconf
husky2:
Fixed loop caused by caller name check
ical:
Fix issue when timezone info contains : e.g. „timezone://…“
Bump v to 1.6.4
jsonread:
Update docu
Update maintainer, tester
Remove pyminversion
Bump version to 1.0.4
knx:
Improve logging for sending and polling
Only log poll when plugin is alive
Add super().__init__() to init
kodi:
Update plugin.yaml
Adjust to current sdp version
Adjust to latest sdp changes, cleanup plugin.yaml
ksemmodbus:
Removed support for pymodbus2
lms:
Fix commands for querying data
Fix reply pattern for some commands
Fix and update structs
Autoset command class and connection
Add resend and initial read parameters
Add sdp metadata
Adjust sdp metadata
Convert specific replies to correct boolean
Update some commands
Test current playlist rename
Improve/fix database scan commands
Fix alarm circle of death
Fix syncgroup commands/items
Fix/improve alarm commands
Fix mute and volume commands
Update commands, min SDP 1.0.4
Bump version
Further commands updates
Trigger syncgroups query when syncing two players, update syncgroups with empty value if currently no groups exist
Query power at startup
Query shuffle and repeat at start
Adjust clear command, however should still not be used (might depend on setup/server?)
modbus_tcp:
Fixed error writing registers, conversion byte/word to endian
Reduced logger output during repeated connection issues, connection pause/resume controllable
Suspend and resume the connection via item
Fixed issue with writing without modBusObjectType
Fixed startup issue with active suspend
Move to pause_item support
mqtt:
Added item attribute mqtt_topic_prefix
Bumped version to 2.0.6
mvg_live:
Fixed an issue in station_id setting when not using async io with pypi lib
Updated dependency, as MVG lib was updated to new api endpoints
neato:
Removed debug output
Added proper backend online status decoding
Marked as restartable
Minor fix for plugin online status after plugin stop
nuki:
Changes on request lock mechanism
Added debug logging
Fixed README.md
Renamed remotestart_1/2.path to remotestart_1/2.rstart_path
Added timeout to request handling against api to prevent unlimited blocks of lock
onewire:
Changed some Log levels from info to dbghigh
openweathermap:
Fix struct items
Bump version to 1.8.8
Move beaufort calculation from struct to plugin
oppo:
Remove _send method, not needed
Set command class automatically, remove some unneccessary entries from plugin.yaml
Add parameters to plugin.yaml
Add min_sdp_version and bump version to 1.0.1
Fix metadata, remove protocol from plugin.yaml
Fix command class
Add sdp metadata
Remove useless lists in commands
Fix reply for current subtitle
pioneer:
Set command class automatically
Add resend and initial_read parameters
Bump version to 1.0.3
Add sdp metadata
Adjust sdp metadata
Fix command class handling
Fix multizone command
Fix plugin.yaml (instance included, other fixes)
raumfeld_ng:
Fix typos in user_doc
resol:
Fixed an issue preventing the plugin from being restartable
robonect:
Removed strange / in version number
rrd:
Remove useless webinterface code and folder
Fix docu
russound:
Move to pause_item support
Fix lib.network response handling
shelly:
Extended plugin to support generation 3 devices
Catch exception in update_item if ID is not known yet
Minor typo fixes in documentation
Fix docu
Bumped version to 1.8.3
simulation:
sv_widget option to avoid block with headline
sma_mb:
Removed support for pymodbus2
smartvisu:
Fix for display of datetime object
Avoid nested anchors
Improve z-index
Added attributes to identity message in smartvisu payload protocol
Fixed version-check bug in widget installation
Bumped version to 1.8.16
Important fix in logger message when visu style unknown
solarforecast:
Catch exception if return value is not json conform
Add hourly forecase and power checks as items and plugin function
sonos:
Minor robustness fix
Adjusted requirements
Update to SoCo 0.30.4 (refer to SoCo changelog for a full list of robustness fixes)
Fix for collections import for python >= 3.10
Removed debug logs with warning level
Introduce item handling from smartplugin
Code cleanup
Update WebIf
Bugfix
Bump to 1.8.9
Improve _handle_dpt3
Make plugin restartable
stateengine:
Fix logging of header when directory is not created yet
Update logging
Remove status from action log, not needed
Correct eval_status evaluation order
Fix issues finding attributes when using se_use
Fix status_eval
try/except finding parent item as this is not always possible (esp. when using structs)
Get correct current item for action when using se_eval
Fix value conversion for strings!
Fix se_status_eval when using structs (e.g. in se_use)
Add se_name to attribute parameters
Fix docu
Fix web interface.. corrct handling of „force set“, delay and conditions
Fix condition handling, now it’s working as OR, was AND first by accident
Update SetForce Action
Code cleanup, fixes, improvements
Write log message when log is turned off (set to 0)
Improve and extend issue reporting when getting values
Attributes from items, structs, etc. referenced by se_use are now evaluated correctly, even if they are defined as lists
Don’t expand item pathes at beginning so relative item attributes are correctly assigned when using structs and se_use
Improve se_use handling when searching for attributes (gets evaluated only once in the beginning)
„set“ function now also returns original value, necessary for optimal „se_use“ handling
set_from_attribute function now takes an ignore list of entries that should not be checked
Massive update of se_use handling. Now the item config gets correctly scanned and only at init. Multiple fixes, improvements and better issue handling
Improve condition check of actions (much faster)
Fix previousstate_conditions set valuation
Introduce next_conditionset to check conditionset of upcoming state(condition)
Update docu for next conditionset
Introduce caching of eval results to improve performance
Add nextconditionset to web interface
Add nextcondition to source evaluation method
Minor improvements
Add action_type to action(s) for better webif handling (coming)
Fix previousonditionset variable
Import fix when checking regexes for conditions
Improve web interface
Major code updates, introduce eval cache feature, improve web interface update, improve data handling when writing logs, etc.
Introduce actions_pass, first step
Run pass actions
Important fix when logging wrongly defined item for action
Fix on_pass actions and implement function to suspend state
Improve on_pass actions
Fix variable logging/handling
Improve web interface - include pass actions, optimize visualization, optimize info text for actions that are not run, some fixes
Introduce delta attribute for single actions, introduce minagedelta to run actions in a specific interval only
Simplify log entry when having issues with value casting
Highly improve and simplify issue finder and logger at startup
Improve struct and add se_minagedelta to plugin.yaml
Bump version to 2.2.0
Fix pass_state webif handling on first run
Re-fix next conditionset when using released_by states
Improve logging (e.g. for handling released_by), introducing internal prefix for log messages
Fix and improve logging
Introduce regex casting, used for conditionset comparison for actions
Fix/improve conversion of lists in items
Correctly parse values in item, you can now also define regex, eval, etc. in an item(value)!
Fix string to list conversion
Reset issues list when setting a value (internal use only)
Fix logging of action count
Fix list actions
Fix issue tracking for action definitions, minor updates
Re-fix time handling
Make it possible to set value of list item by se_set_..: [foo, bar]
Improve zoom/scroll handling (esp. on page update, using cookies now)
Improve visu compactness
Use sh.items.return_item instead of sh.return_item
Important fix for issue tracking at init
Further issue handling fixes
Improve visu, now compressed and less white space, no overlaps hopefully
Adjust conditionlist content in visu to avoid overlap
Use itemsApi approach for diverse methods (return_item, find_items)
Avoid overlaps in visu when only one conditionset given
Improve visu overlap for actions
Logging update
Add empty icon for visu to make all entries the same height (nicer visu)
Highly improve visu overlapping and white space, some additional visu fixes
Minor code improvement
tasmota:
Add input button
telegram:
Plugin controllable with stop/run/pause_item
uzsu:
Fix previously introduced problem with series rrule
Improve handling of invalid items
Improve logging
Remove old version due to scipy security issues
Add seconds to info on next UZSU setting
Add „next“ item to struct to read value and time of next UZSU setting
Update parameters for plugin functions
Remove English user doc as it is outdated
Update docu on new struct as well as item functions
Add super().__init__() to init
Improve struct for „next“ item
„once“ feature to trigger uzsu entry only once and deactivate afterwards
Logging improvement
Make once work with individual list entries
Make ‚once‘ work with interpolation
Implement once for series, part 1
Make once work with series
Bump version to 2.1.0
Fix scheduling for series once
Fix once for series
Update webif and docu
Fix series interval calculation. Actually, now end of series is the last time the series is triggered
Implement activeToday for smartvisu, fix once for series
Fix comparison of new and old dictionary
Update handling of once for series. might work now? ;)
Fix once handling . . again
Adjust struct
Introduce „perday“ interpolation feature
Minimize/optimize dict writing to item
Improve web interface
Fix extra-long debug messages
Code improvements, fix lastvalue handling, update activeToday on first run to False if time is in the future, etc.
Further lastvalue improvements/fixes
Improve documentation, add info on once feature
Fix evaluation of upcoming setting when once feature is used
Global once deactivates uzsu on first setting, no matter if it is a series or not
Introduce set_activetoday plugin function
Introduce ignore_once_entries parameter for (not) using once set entries for interpolation
Fix and improve perday interpolation
Avoid wrong value when 2 entries set a value at the same time and interpolation is activated
Update docu
Fix wrong logger entry
Improve item writing, fix issue when uzsu has no active entries
Avoid cycle of schedule and item update
vicare:
If multiple devices are available, readout the first device with valid boiler serial number
Added list of available devices to webinterface
Allow commands without additional parameters (only command urls)
Minor fixes for update_item function shortly after start-up (commands are not read out yet)
Added control helper items for „one time charge“ command feature to plugin.yaml struct
Added preliminary webinterface feature description
Further work on plugin docu
Fix table in user_doc
visu_smartvisu:
Important log message updates when visu style unknoen and copying template failed
withings_health:
Changed methode to derive callback IPv4 address
Updated Doku
yamahayxc:
Minor fixes
Fix startup
zigbee2mqtt:
Add new structs
Accept mixed case topics
Shorten bridge messages for INFO logging
Adjust for suspend updates
Add pause_item functions
Fix pause item
Fix item() caller settings
Multiple plugins:
Replace item.path() with item.property.path
Move sh|py_min|max_version to str definition in plugin.yaml
Outdated Plugins
Die folgenden Plugins wurden als veraltet (deprecated markiert und werden in einem der nächsten Releases aus dem Plugin-Repo entfernt und in das Archive-Repo verschoben:
System Plugins
datalog
influxdata
memlog
operationlog
visu_smartvisu
visu_websocket
Gateway Plugins
raumfeld
Interface Plugins
avdevice
avm_smarthome
husky
Web/Cloud Plugins
alexa
darksky - the free API is not provided anymore - switch to the piratewthr or openweathermap plugin
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 - switch to the piratewthr or openweathermap plugin
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.
…
Weitere Änderungen
Tools
…
Dokumentation
Sample Plugin: Updated with asyncio handling
Sample plugins: Aet version numbers in quotes
Sample MQTT Plugin: Fix pause item name
Update crontab description for items and logics
Updates for asyncio support for plugins
Added installation of ESPHome dashboard
Extended lib.backup to backup and restore ESPHome configurations
Added info for ESPHome
Updated/corrected docu on log_text
Add info on log_level via eval expression
Fader update docu for new functionality
Update NGINX Reverse Proxy
Fix log_change default
Komplettanleitung smartVISU updated
Build doc local: make script work on Mac OS X, too
Build docu: Fallback for locale