Release 1.9 - 28. Dezember 2021

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

Überblick

Dieses ist neues Release für SmartHomeNG. Die Änderungen gegenüber dem Release v1.8.x sind im folgenden in diesen Release Notes beschrieben.

Unterstützte Python Versionen

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

Das bedeutet nicht unbedingt, dass SmartHomeNG ab Release 1.9 nicht mehr unter älteren Python Versionen läuft, sondern das SmartHomeNG nicht mehr mit älteren Python Versionen getestet wird und das gemeldete Fehler mit älteren Python Versionen nicht mehr zu Buxfixen führen.

Minimum Python Version

Die absolute Minimum Python Version in der SmartHomeNG startet wurde auf v3.6 angehoben, da Python 3.5 im September 2020 End-of-Life (End of security fixes) gegangen ist. Bei einer Neuinstallation wird jedoch empfohlen auf einer der neueren Python Versionen (3.7 oder 3.8) aufzusetzen.

Änderungen am Core

Bugfixes in the CORE

  • Fixes in lib.network

  • Fixes in lib.utils

  • Fixes in modules.mqtt

  • Fixes in modules.websocket

  • modules.websocket: Bugfix for smartVISU payload protocol (command ‚log‘)

  • create var/log directory prior recording output from pip

Updates in the CORE

  • Removed references to lib.connection

  • etc.logging.yaml.default: Changes to new logging handlers

  • move crontab in lib.triggertimes, extend syntax for crontabs

  • Logics:

    • Logic check_items.py: Check items for damaged items (created in logics) It is not possible with Python to intercept an assignment to a variable or an objects‘ attribute. The only thing one can do is search all items for a mismatching item type.

It is not possible with Python to intercept an assignment to a variable or an objects‘ attribute. The only thing one can do is search all items for a mismatching item type.

  • lib.backup:

    • Added new struct files of ../etc directory to configuration backup

    • Added *.pem to backup of certificate files

    • Certificate backup now backs up *.pem files for certificates that are not named *.cer

  • lib.env.location:

    • Added lat, lon and elev settings from smarthome.yaml to items

  • lib.item:

    • Added loading of structs from multiple files (etc/struct_xyz.yaml) in addition to loading from etc/struct.yaml

    • Extended functionallity for item logging (incl. shngadmin and documentation)

    • Added attribute source to timer function

    • Improved logging for items with cache attribute

    • items: optionally return items sorted

    • Bugfix for autotimer method of an item

  • lib.log:

    • Improved handling of loglevel NOTICE

  • lib.metadata

    • bugfix in version checking

  • lib.network:

    • first udp server implementation

    • Removed setting of loglevel for logger lib.network (should be defined in etc/logging.yaml)

    • Handle ‚broken pipe‘ error on remote disconnect

    • added log entry for truncated send

    • Fix received data processing

    • Fix missing bytes/str conversion

    • Better and faster shutdown handling

    • Fix callback syntax

    • Exception handling for callbacks

  • lib.scene:

    • Extended eval to use shtime, userfunctions and math (analog to eval attribute of items)

    • Implemented reload of all scenes

    • implemented multi language support for log entries

  • lib.smarthome:

    • Added loglevel NOTICE

    • Improved handling of memory logs

  • lib.tools:

    • Fix for daylight saving time in tools.dt2ts() and tools.dt2js()

  • lib.userfunctions

    • New library, that implements userfunctions for eval-statements and logics

    • Implemented userfunctions for evalchecker in admin gui

  • Modules:

    • admin:

      • Display of structs in shngadmin is now sorted and grouped by plugin

      • Randomized calls to find blog articles on smarthomeng.de

      • Added level NOTICE to api

      • GUI: Added loglevel NOTICE

      • GUI Added reload button for scenes

      • Implemented html escape for dicts and lists in item detail view

      • Bugfix for list loggers (Issue #411) „dictionary changed size during iteration“

      • GUI: Fix for handling/editing custom holidays

      • Fix for compatibility to newer PyJWT versions

      • Added support for user functions

      • Added button to reload scenes

      • Added shngadmin version to system property page

    • http:

      • update chartjs to 2.9.4

      • added Datatables Javascript v1.11.0 to allow table sorting in WebIFs, updated documentation

      • updated bootstrap to 4.6.0

      • updated bootstrap datepicker to 1.9.0

      • updated Font Awesome to 5.15.4

      • updated jquery to 3.6.0

      • updated popper.js to 2.10.1

    • websocket:

      • Changes to memory logging in core

      • Added missing requirements.txt

      • Exitcode 1001 is now logged as info, not as exception

  • Plugins:

  • tests:

    • mock.core: Read core version from bin.shngversion.py

    • migrated tests to Travis-CI.com, updated Readme

Änderungen bei Plugins

New Plugins

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

  • avm_smarthome: AVM smarthome plugin for DECT sockes, smart radiator control DECT301 and Comet DECT and DECT smarthome sensors based on HTTP GET Request

  • homeconnect: usage of the BSH/Siemens HomeConnect interface with oauth2

  • husky: plugin to control Husqvarna automower

  • modbus_tcp: New plugin to read registers from modbusTcp-device

  • philips_tv: Added initial support for Philips TV with OAuth2 authentication

  • sma_mb: this plug-in reads the current values of an SMA inverter via SMA Speedwire fieldbus/Modbus

  • text_display: New text display Plugin

  • timmy: Plugin für Ein-/Ausschaltverzögerung und Blinken

Plugin Updates

  • asterix:

    • adjusted plugin to lib.network

  • avm:

    • handle callmonitor reconnect

    • avoid error message on requested shutdown

    • moved webif to seperate file

    • fixed rare error in function _update_home_automation

    • catching exceptions when Ethernet is temporary unavailable

  • bose_soundtouch:

    • Improved error handling

  • bsblan:

    • revised README

    • compatibility check for BSB-LAN Version 2.x

    • adjusted link to icon in readme.md

  • casambi:

    • Catch socket errors leading to unintentional termination of EventHandlerThread

    • deleted readme and improved user_doc

    • added automatic sessionID request, e.g. after Casambi API key validity has been extended

    • improved webinterface

    • added english translation for webinterface

    • added python websocket to plugin requirements

    • fixed requirement websocket-client

    • added tunable white (CCT) support

    • added extended debugging for CCT commands

    • debugging setups with more than one Casambi network

    • removed unjustified error/warning messages

    • fixed status decode error

    • added backend online status parsing to item

    • fixed unknown variable error in debug message

    • Trigger socket reinitialization after pipe error

    • Switched logger outputs to f-strings

  • cli:

    • adjustments to new network classes

    • fixed error - self.alive

    • added ‚logl‘ (log-list) command

    • updated output of command ‚logd‘

    • updated to conform with changes to memory logging in core

  • comfoair:

    • removed lib.connection references for cleanup

  • darksky:

    • added URL for data retrieval to webif

    • switched default to „ca“ to have wind in kmh

    • added some more attributes to webif

    • set to deprecated for next plugin release, API ends 2021

  • database:

    • updated to use newest version of datepicker

    • Improved robustness, limit reconnects improved plugin robustness, if db is not available (e.g. temporarily missing ethernet)

    • Limit number of reconnects

    • Fixed bug in item_detail page

    • added Datatable to overview and details

  • dlms:

    • added parameter to allow listen only mode

    • extend webinterface with list of common obis codes

    • allow crontab timings, enhance listen only smartmeter handling, improve getting manufacturer list

  • ebus:

    • removed lib.connection references for cleanup

  • ecmd:

    • removed lib.connection references for cleanup

  • enocean:

    • added debug infos for powermeter devices

    • changed to new is_alive() syntax for python 3.9

    • updated to use newest version of datepicker

    • removed datepicker includes, which are no longer necessary for this plugin

    • Added debug info to BaseID error message

    • Adapted logging to fstrings

    • Added optional item attribute „enocean_device“ to select appropriate learn message

  • garminconnect:

    • Updated to use newest version of datepicker

  • gpio:

    • fix local variable ‚err‘ referenced before assignment in line 126

    • implement datatables JS in webif

    • rename webif tables correctly

    • improve error handling on startup and bump version to 1.5.1

  • hue:

    • Small BugFix in UpdateGoupItems

  • hue2:

    • Changed create_new_username() to support qhue v2.0.0 and up

    • Implemented bridge discovery via mdns (for bridges v2)

    • Reimplemented bridge discovery via upnp (for bridges v1)

    • Removed bridge discovery through hue portal (old Philips site)

    • Implemented new Signify broker discovery methods

    • automatic discovery at startup takes place only if stored ip address does not point to a hue bridge

  • husky:

    • added error/debug message if model, id or name cannot be extracted from json response

    • added logger to Mower class

    • degraded error message on missing model type to debug level

  • ical:

    • adapted to new lib.network

    • made cycle to a class attribute (self._cycle)

  • jsonread:

    • now has a webinterface

    • some minor text changes to metadata (plugin.yaml)

    • remove old readme.md

    • corrected plugin.yaml (it was not a valid yaml file any more)

  • knx:

    • adjusted plugin to lib.network

    • added DPT 251.600 RGBW

    • fix webinterface fix mixup

    • add password for knxproj to webif, introduce knxd namespace for constants, update doku

    • removed local redundant datatables

  • kodi:

    • make favourites type dict instead of str

  • mailrcv: catch exception when trying to close imap even if it’s not possible

  • memlog:

    • updated to conform with changes to memory logging in core

  • mpd:

    • adjusted plugin to lib.network

  • mqtt:

    • updated to use newest version of datepicker

  • neato:

    • added new function start_robot to enable single room cleaning; added new function get_map_boundaries to request available map boundaries (rooms) for a given map; added new function dismiss_current_alert to reset current alerts

    • fix for clean_room command

    • bugfix in metadata (plugin-function definition hat indentation error)

    • added option to clear errors/alarms in neato/vorwerk backend via plugin’s webif

    • added english translation for webinterface

    • deactivate SSL verify

    • added return values for plugin commands

    • added function list available rooms to plugin webif

    • improved map cleaning control

    • Added return values for plugin commands; added function list available rooms to plugin webif. Improved map cleaning control

    • Added ‚robot not online‘ warning

    • Added command to dismiss backend alerts (dustbin full etc.) via item

    • Modifications by ivan73 (without desciption)

  • network:

    • adapted plugin to lib.network

    • improved plugin parameter handling

    • fixed starting server only on run()

    • adjusted logging

  • nuki:

    • fixed get_local_ipv4_address handling

  • nut:

    • catching exception if network is not available

    • added UPS via Synology disk station example to readme

    • fixed error occurring after exception of type „network not available“

  • odlinfo:

  • onewire:

    • improve error handling

    • enhanced tree function in owbase

  • openweathermap:

    • corrected user_doc (replaced all references to darksky plugin)

    • multiple changes, bumped version to 1.8.2

    • Fixed bug in metadaa (plugin.yaml)

    • Removed extra line with API-key which displayed only asterixes from web interface

    • Added name of location to locals-struct

    • Bumped version to 1.8.3

  • raumfeld

    • removed lib.connection references for cleanup

    • some cleanup

  • raumfeld_ng:

    • Bugfix in poll_device (get_sh())

    • Added get_mediainfo to valid_list of rf_attr item attribute

  • resol:

    • Catch wrong message sizes

    • Fixed scheduler stop on plugin exit

    • Robustness measures when Ethernet is temporary not available

    • Added socket shutdown on plugin stop

    • Plugin performance: Do not register receive only attributes for update_item function

    • Modifications by ivan73 (without desciption)

  • robonect:

    • corrected datatype for unix timestamp error_unix

    • extended by some MQTT commands

    • changed indent of mode item

    • changed „and not“ to „or“

    • added keychecks to avoid exceptions

    • added buttons in webif to switch modes

    • don’t try to iterate error list in case robonect has no wifi connection (error list is None then)

    • caching full error list

    • added mode to webservices set for automower (helps only, if webservices plugin is used)

    • added check for mqtt mode

  • rpi1wire:

    • Updated user docu, webif and Code cleanup

    • Corrected errors in structure of user documentation

  • russound:

    • adjusted plugin to lib.network

  • shelly:

    • add support for Shelly H&T

    • Some updates

    • bumped version to 1.2.0

  • simulation:

    • fix parameters

  • smartvisu:

    • added parameter create_masteritem_file

    • adjusted web interface

    • improve descriptions for widget names and blocks

  • sml:

    • removed lib.connection references for cleanup

  • smlx:

    • changed from readme to user_doc docu, provide a requirements.txt

    • removed lib.connection references for cleanup

  • snmp:

    • functional update of plugin incl enhancement of WebIF

  • sonos:

    • added plugin webinterface

    • added name for SoCo EventServerThread

    • catching rare exception that could occur during automatic IP detection and invalid network connectivity

    • adapted behavior of play_snippet if stop() functionality is currently not supported by the respective speaker

    • upgrade to SoCo 0.22 framework

    • display number of online speakers on Webinterface

    • pgrade SoCo base framework to Version 0.24.0; additional robustness improvements

  • speech:

    • adjusted plugin to lib.network

  • squeezebox:

    • change struct wipecache to str as the value might also be a string like „queue“

  • stateengine:

    • moved web interface to a separate file

    • change logging: general log is plugins.stateengine and se_item logs are logged to „stateengine“ (without plugins. prefix)

    • improve log handling

    • handle problem when SE item has name, bump version to 1.9.2

    • improve logging and source for item update

    • fix docu example for south and se_use

    • lower case log directory

    • optional offset for sun_tracking function

    • moved webif to external file

    • new logger names, fix items having a name

    • corrected intentation in user_doc/13_sonstiges.rst

    • add offset and value for open lamella value parameters to improve sun_tracking function

    • replace sh.tools.dt2ts() by timestamp() for evaluating the start_time of the suspend state

    • change web visu - condition rectangle now has dynamic width

    • better sun_tracking offset handling

    • correct webif colors and conditionlist if no conditionsets given

  • tasmota:

    • Functional Update of Tasmota Plugin incl WebIF Rework

  • telegram:

    • add new attribut telegram_condition to suppress multiple messages upon update

    • Add possibility to send telegram message zu just 1 chat-id

    • Add chat-if to „telegram-info“ to allow response depending on chat-id

    • Updated user docu, webif and code cleanup

  • unifi:

    • moved dependency from lib.network to lib.utils

  • uzsu:

    • outsource webif and fix webinterface problem with showing the whole dictionary when a rule contains a „<“

    • update webif to use datatables JS

    • Update req. for python 3.7 and 3.9

    • Minimize dict item renewal: lastvalue not written to dict anymore, fix bug in sun calculated values

    • Remove lastvalue from dict on start as it is not used anymore

    • Fix webIF overlay when clicking on entry

    • Improve last value struct and handling

    • xtensions for series - second try

    • Sun calculation cron is now adjustable in plugin settings

    • Modifications by ivan73 (without desciption)

  • viessmann:

    • fixes webif includes

    • fix cyclic due calculation

  • visu_websocket:

    • updated to conform with changes to memory logging in core

    • fix parameters in widget call

  • webservices:

    • moveed and translated readme.md documentation to user_doc.rst

    • remove readme.md, create user_doc.rst, use sphinx-tabs

  • withings_health:

    • updated to newest version of withings-api

    • moved webif to seperate file

  • wol:

    • now has a web interface with items and interactive wol

    • Corrected metadata - changed type of wol_ip from ip4 to ipv4

  • xiaomi_vac:

    • use datatables js in webif

    • fix problem with newer miio module (>=0.5.8) that doesn’t accept return_list argument for clean_details method

    • Bump version to 1.1.2

    • ompatibility with newer python-miio modules (0.5.9+)

    • Bump version to 1.2.0

  • xmpp:

    • Try to reconnect when loosing connection

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

    • backend - use the administration interface instead

    • sqlite_visu2_8 - switch to the database plugin

  • Web Plugins

    • 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

    • smawb

    • vr100

  • Web Plugins

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

Retired Plugins

The following plugins have been retired. They had been deprecated in one of the preceding releases of SmartHomeNG. They have been removed from the plugins repository, but they can still be found on github. Now they reside in the plugin_archive repository from where they can be downloaded if they are still needed.

  • 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

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

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

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

  • sqlite - switch to the database plugin

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

Weitere Änderungen

Documentation

  • Changed Requirements for documentation build, added tab extension to sphinx, introduced MyST

  • Documentation build should now run under Windows