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.)