Release 1.7.2 - 23. June 2020

Es gibt eine Menge neuer Features im Core von SmartHomeNG und den Plugins.

Überblick

Dieses ist ein Wartungs-Release für SmartHomeNG v1.7. Die Änderungen gegenüber dem Release v1.7.1 sind im folgenden in diesen Release Notes beschrieben.

Unterstützte Python Versionen

Die älteste offiziell unterstützte Python Version für SmartHomeNG Release 1.7 ist Python 3.5 und die neueste unterstützte Python Version ist 3.7. (Siehe auch Hard- u. Software Anforderungen im Abschnitt Installation zu unterstützten Python Versionen)

Absolute Minimum Python Version

Die Minimum Python Version in der SmartHomeNG startet wurde auf v3.5 angehoben, da Python 3.4 im Jahr 2019 End-of-Life (End of security fixes) gegangen ist. Bei einer Neuinstallation wird jedoch empfohlen auf einer der neueren Python Versionen (3.6 oder 3.7) aufzusetzen.

Wichtig

Mit dem kommenden Release 1.8 werden die unterstützten Python Versionen (wie hier beschrieben) auf Python 3.6, 3.7, 3.8 angehoben. Python 3.6 hat eine Reihe sehr interessanter Features und Verbesserungen gebracht, die dann in SmartHomeNG genutzt werden können.

Sollten solche neuen Features in den Core Einzug halten, wird die Absolute Minimum Python Version auf 3.6 angehoben werden. Sollten die Features nur in Plugins genutzt werden, so können nur solche Plugins nicht genutzt werden, wenn eine ältere Python Version als 3.6 eingesetzt wird.

Änderungen am Core

Bugfixes in the CORE

  • lib.shtime: fixed bug in beginning_of_week() that returned the date of the monday of the following week

  • tools: Bugfix in plugin_metadata_checker when checking parameters for mandatory and default parameters

Updates in the CORE

  • bin.smarthome: Logging more detailed platform information on startup

  • Translations: Added the option to have variables within the translation strings

  • Changed default files in /etc

  • Items:

  • Logics:

    • Added sh, items, shtime to context ‚logic‘ to increase support for functions in logics

  • lib:

    • class SmartPlugin: variable self.alive is initialized (even before __init__ is called)

    • class SmartPlugin: init_webinterface() added

    • lib.connection: Bugfix in Client.close()

    • lib.db: Changed error handling, if api initialization fails

    • lib.env:

      • Added env items for scheduler’s worker thread information

      • Added enfoce_change to Items written to database

      • Added items with information for system swap and memory use

    • lib.item: Added enforce_change attribute

    • lib.metadata: Added py_minversion an py_maxversion to plugin and module metadata for pluguins/modules that are not compatible with every Python version that is supported by SmartHomeNG

    • lib.scheduler:

      • Implemented restart of SmartHomeNG if number of worker threads goes through the roof

      • Added methods to export worker thread information to env items

    • lib.shpypi:

      • Changed to avoid loading the wrong PIP command for package installation

      • Bugfix for existing etc/plugin.yaml without any configured plugin

  • Modules:

    • admin:

      • shngadmin:

        • Implemented chart for scheduler workers

        • shngadmin: Adjusted Resource-Graph tab to fit on iPad in landscape mode

        • Added charts with system memory ans swap used

        • Chart tab changed to css grid layout

        • Improvements to system information

        • Improvements to services information

    • http:

      • Disabled cherrypy logging to screen; Added instance name to title of web interface

    • mqtt:

      • Changed initialization in case the broker is not running/reachable on startup of SmartHomeNG

      • Fix for subscriptions placed before connection initialization with broker was complete

      • Bugfix for topics with wildcards (‚+‘ and ‚#‘)

      • Bugfix for multiple plugins subscribing to the same topic

Änderungen bei Plugins

New Plugins

For details of the changes of the individual plugins, please refer to the documentation of the respective plugin.

  • casambi: Gateway plugin for controlling and reading Casambi devices via the Casambi backend API

  • deebot_ozmo: This plugin can control and monitor an Ecovacs Deebot Ozmo series vaccum cleaner robot

  • raumfeld_ng: Alternative plugin to contol raumfeld devices

  • robonect: Plugin for reading data from Husqvarna, Gardena, Flymo or McCulloch robotic lawnmowers, equipped with the Robonect Hx module (STILL UNDER DEVELOPMENT)

  • tasmota: New plugin to control devices with tasmota firmware (STILL UNDER DEVELOPMENT)

Plugin Updates

  • alexarc4shng:

    • Added some french translations

  • apcups:

    • now uses get_param_value

    • fixed scheduler.add to scheduler_add

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • appletv:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • avdevice:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • avm:

    • new arguments for hkr_device added

    • Fixed instance handling for hkr dect devices

    • added instance name to examples in README.md

  • Buderus:

    • now supports get_param_value and start/stop

    • Bugfix: Removed wrong (duplicate) if statement in line 169

  • darksky:

    • redesigned structs (use of sub-structs); choice if data is written to database

    • Fixed bug ‚dictionary keys changed during iteration‘ that showed under Python 3.8

  • database:

    • Isolated web interface to seperate file

    • added sourcecode documentation

    • fixed bug that prevented data being written to database if ‚database_acl: rw‘ was specified

    • added support for type foo in webinterface details; documented sourcecode

    • Added total number of records and timestamp of oldest value for an item to thw web interface (page details)

    • Implemented job to remove records older than maxage

    • Added column with number of log entries to web interface; removed ‚count LOG‘ button

    • Additional parameter to configure if log entries should be counted for all items

    • Changed __init__() to reflect changed error handling in lib.db

    • Corrected logging

    • Changed translations to use variable parameters in text

    • fixed bug that wrote value to database for items with attribute database_acl set to ro

    • Fixed bug when trying to read cache value on initialization and log table has no entries for item

    • Clarified warning message when skipping dumps

    • Added multiple entry parsing in series duration parsing for visu_websocket (‚1w 2y 3h 1d 39i 15s‘) - for smartVISU requesting series

    • Ignore negative duration in timestamp/duration parser - for SV requesting series

    • Modified timestamp/duration parser to ignore timestamps inthe future (return now insteead) - for smartVISU requesting series

  • dlms:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • executor:

    • update plugin.yaml

    • translation corrected

    • include possibility to test evals with relative items

    • added user_doc

  • gpio:

    • added pullup config, fixed startup handling, cleaned code

    • changed startup behaviour, new item attribute gpio_init

    • added gpio_invert parameter to invert gpio levels

    • fixed errors, completed documentation

    • log current value of output on startup

    • logging and reporting streamlined

    • added english translation for web interface

  • helios:

    • update plugin.yaml

  • helios_tcp:

    • Corrected update_item not to send value to device if item was updated by the plugin itself

    • added name of plugin to assignment of item (for update_item() and display in admin GUI)

    • changed „manual_mode“ type from bool to int (line 97)

  • homematic:

    • Support Thread added to metadata

  • ical:

    • Added shtime call for tzinfo()

    • scheduler_add to assign icalUpdate and Refresh schedulers correctly

    • import all methods from smartplugin API

    • scheduler use smartplugin method

    • init super on start

    • remove schedulers on stop

  • indego:

    • update plugin.yaml

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • influxdb:

    • use self.get_parameter

    • fix plugin.yaml

    • fix udp_port

    • added http_port metadata

  • join:

    • now uses get_param_value

  • jsonread:

    • update plugin.yaml

  • kathrein:

    • update plugin.yaml

  • knx:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • kodi:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

    • extended update command to initiate connect if necessary

    • check parameter value for type conformance to bounds, convert if necessary, fixed error in _update_status()

    • set power item on connect/disconnect

    • final adjustments and fixes, update struct definitions, adjust documentation for autoreconnect features

    • changes to handling of stale commands, reduced redundant info queries

  • kostalmodbus:

    • Added minimum Python Version to metadata

  • lirc:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • mailrcv:

    • update plugin.yaml

  • mailsend:

    • now uses get_param_value and writes more debug output

  • mpd:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • mqtt:

    • Bugfix for retain attribute in items

  • onewire:

    • Fixes ValueError: cannot switch from automatic field numbering to manual field specification

    • Fixes for some debug string formats

    • should be able to run as multiinstance plugin now

    • Log warning about unknown 1-wire device only once

    • Added a further submodel of multisensor (xf7) for test purpose

  • pushover:

    • Missing assignement to self.alive added in run() and stop()

  • rrd:

    • fixes typo in plugin.yaml (as described in issue #386)

    • added item overview to WebIF

  • rtr:

    • update plugin.yaml

  • russound:

    • fixes a str conversion bug in _decode()

  • shelly:

    • Added documentation how to configure a shelly device for use with mqtt

    • Addes item-structs for shellyplug and shellyplug-s

    • sorted shelly Items in web interface

    • Correction to display discovered shelly devices even if they are not configured in items

  • slack:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • smarttv:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • sml:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • snap7_logo:

    • Dummy translation file added

  • sonos:

    • Fixed proper plugin shutdown.

    • Adapted plugin parameter handling to recommended get_parameter_value function.

  • squeezebox:

    • struct tweaks and playstop optimize

    • fix logging when having problems with connection

    • re-fix stop and pause handling

    • fix delay at plugin startup for sending commands

  • stateengine:

    • cast values for evals correctly

    • webinterface translation

    • Improvement of struct definitions and documentation

    • don’t update manual item (for suspend) when change comes from stateengine plugin

    • replace condition re.match by re.fullmatch to allow more specific conditionset regex

    • change „original changed by“ evaluation to „original updated by“ (used for manual item check)

    • fix cycle and crontab check at startup

    • all schedulers are now correctly defined as smartplugin schedulers

    • adjust crontab and cycle entries for SE item correctly

  • telegram:

    • ids must be int, fixed some bugs, validate commands

  • visu_websocket:

    • avoid error when monitor item does not exist

    • Added command ‚series_cancel‘ to websocket protocol

  • volkszaehler:

    • update plugin.yaml

  • withings_health:

    • Removed instance parameter from metadata (is globally defined for MI plugins)

    • Changed plugin logo

  • wunderground:

    • now uses get_param_value

    • fixed scheduler.add to scheduler_add

    • Removed instance parameter from metadata (is globally defined for MI plugins)

  • xiaomi_vac:

    • enable segment clean

    • updated struct definitions

    • assign scheduler correctly to the plugin by using smartplugin method scheduler_add

    • remove scheduler on stop method

    • update_item only if plugin is alive

  • yamahayxc:

    • updated struct definition with relativ item references

    • fixed plugin.yaml

  • Several plugins:

    • Changed README.md and other files to conform with new Sphinx / recommonmark versions

Outdated Plugins

The following plugins were already marked in version v1.6 as deprecated. This means that the plugins are still working, but are not developed further anymore and are removed from the release of SmartHomeNG in the next release. User of these plugins should switch to corresponding succeeding plugins.

  • System Plugins

    • sqlite - switch to the database plugin

    • sqlite_visu2_8 - switch to the database plugin

  • Gateway Plugins

    • tellstick - classic Plugin, not used according to survey in knx-user-forum

  • Interface Plugins

    • netio230b - classic plugin, not used according to survey in knx-user-forum

    • smawb - classic plugin, not used according to survey in knx-user-forum

  • Web Plugins

    • alexa - switch to the alexa4p3 plugin

    • boxcar - classic Plugin, not used according to survey in knx-user-forum

    • mail - switch to the mailsend and mailrcv plugin

    • openenergymonitor - classic plugin, not used according to survey in knx-user-forum

    • wunderground - the free API is not provided anymore by Wunderground

The following plugins are marked as deprecated with SmartHomeNG v1.7, because neither user nor tester have been found:

  • Gateway Plugins

    • ecmd

    • elro

    • iaqstick

    • snom

    • tellstick

  • Interface Plugins

    • easymeter

    • netio230b

    • smawb

    • vr100

  • Web Plugins

    • boxcar

    • nma

Moreover, the previous mqtt plugin was renamed to mqtt1 and marked as deprecated, because the new mqtt plugin takes over the functionality. This plugin is based on the mqtt module and the recent core.

Documentation

  • User Documentation

    • fix of wrong description of knxd router setup in komplettanleitung

    • Updated build process to work with actual versions of sphinx and recommonmark

    • Reworked documentation to implement better navigation though sidebar

    • Updates to sample plugins

  • Developer Documentation

    • Updated build process to work with actual versions of sphinx and recommonmark