Release 1.4 - December 17th, 2017

There are a lot of new features for the core of SmartHomeNG and the plugins.

Supported Python versions

Please note: Starting from SmartHomeNG Release 1.4 we cease the active support of older Python versions. The oldest supported Python version will be Python 3.4. (See Hard- & Software Requirements in section Installation for supported Python versions)

This does not necessarily mean that SmartHomeNG as of Release 1.4 is no longer running under older Python versions. It means that SmartHomeNG is no longer tested with older Python versions and reported errors with older Python versions are no longer fixed.

Absolute minimum Python versions raised to 3.3

The minimum Python version on which SmartHomeNG starts has been increased from 3.2 to 3.3. By virtue of the major changes between Python 3.2 and 3.3 it has already been problematic in the past to run SmartHomeNG with plugins in a Python 3.2 environment.

New functions

New functions in the CORE

  • Loadable Core Modules:
    • Module Loader: Enables loadable modules to extend core functionality.
    • The module loader supports the checking of parameters against metadata (analogous to the plugins).
    • http module: Allows plugins to provide web interfaces via CherryPy
    • Rudimentary modules API implemented
  • SmartPlugin class extended
  • Warning on startup, if LANG Environment Variable is not meaningfully set.
  • Items:
    • For pre-setting the value of items in the configuration files, initial_value: can now be used in the same way as value. To avoid confusion with the name-like value in expressions such as eval.
    • Added attributes on_update and` on_change`. With the help of these item attributes the values of other items can be set.
    • Added functions prev_update_age() and prev_update().
  • Plugin:
    • Plugins can implement a web interface (by using the http module)
    • Support multiple versions of a plugin. Predecessor versions of plugins can be delivered with a plugin and loaded by offering the version number in /etc/plugin.yaml instead of the current version
    • User and developer documentation can be dynamically supplemented with plugin documentation. (By creating the user_doc.rst or developer_doc.rst files)
  • Scheduler:
    • Implementation of own namespaces for schedulers of items, logics and plugins in order to avoid possible collisions due to name identities. (Note especially if you use sh.scheduler.change () for logics scheduler, where the scheduler name must be preceded by logic.)
  • Introduction of plugin metadata:
    • Extension of the plugins with a metadata file.
    • Metadata for plugins are stored in a plugin.yaml in the plugin directory.
    • For existing plugin metadata, the version compatibility between shNG and plugin is checked.
    • For existing parameter definitions in the plugin metadata, the values configured in /etc/plugin.yaml are checked for formal validity (data type, min / max values, value list, etc.).
    • New parameter interface for plugins: For existing parameter definitions in the plugin metadata, the checked values in the target data type are transferred in a dict to the started plugin.
    • Specifying classname in the metadata allows easier configuration: Only plugin_name: must be specified in /etc/plugin.yaml, instead of class_path: and class_name: ( classname hat been added to the metadata of all existing plugins).
    • Classification of plug-ins in the metadata for a better overview. The classification is used to create the documentation.
  • Scenes:
    • Support of the YAML format for the configuration of scenes
    • Introduction of an API for scenes
    • Instead of defining absolute values for items, scenes can also define Eval expressions. In the Eval expressions, the referencing of items is possible both absolutely and relative to the scene item
    • In YAML format, names for the states of a scene can be assigned
  • Logics:
    • Added method last_run()
    • Logic’s API
      • Implementation of an API for Logics
      • The enable / disable of logics via the API is persisted (thus also remains after a restart of SmartHomeNG)
      • The API allows the backend, blockly and CLI plugins to handle logics more extensively (e.g., update the logic configuration) if the new configuration format (yaml) is used.
      • Details of the API are available in the developer documentation
    • Access to the Logics API from the inside of logics
    • Documented possibility of persistent variables for logics
  • New command line option to change the location of the directories with the configuration files (/etc, /items and /logics).

Remote CORE libraries


New plugins and plugin extensions

  • General:
    • sample_plugin based on extended SmartPlugin class (under /dev/sample_plugin)
    • sample_plugin with web interface (under /dev/sample_plugin_webif)
  • Blockly:
    • Graphical logic editor with integration into the backend plugin (still experimental)
  • WebServices plugin that uses the new web interface
  • Nokia Health Plugin
  • AV Device:
    • Change of the txt configuration file (Attention! Existing files must be updated!)
    • Now supports not only Pioneer AV receivers but also the main features of Denon AV devices
    • Optimized configuration of additional features and devices
    • Support of the configuration check via avdevice/plugin.yaml
    • Optimization of many functions such as resending a command if the expected response can not be received, reset to last known value, query the current settings for all zones, etc.
  • Backend:
    • The backend plugin now uses/needs the http module
    • Integration of the Blockly Plugin to visually configure logics via web interface (via logic list or plugin list)
    • System info:
      • Split into two tabs (System Properties and PyPI Check)
      • PyPi Check now checks against the requirements of SmartHomeNG
    • Services:
      • YAML syntax checker added
      • Added a eval syntax checker
      • Syntax highlighting in the CONF-YAML converter
    • Items:
      • Display of update_age added
      • Display of prev_update_age and prev_update added
    • Logics:
      • Create new logicS
      • Logic configuration (etc/logic.yaml) can be changed at runtime
      • Logics can be unloaded and loaded
      • Edit logic
        • Enhancements to the CodeMirror logic code editor (Python source code)
          • Full Screen mode via F11
          • Automatic adjustment to browser window
          • Autocomplete for Python commands and item paths
          • Optional line breaks
        • Delete logics
        • Integration for the Blockly Plugin
        • Displays the time of the last run on the Logic Detail page
      • Scheduler
        • Item schedules, logic schedules, plugin schedules and other schedules are displayed on their own tabs
      • Plugins:
        • Extended display of the plugin list
        • Display the configuration settings from the plugin.yaml/.conf by clicking on the respective plugin in the list
        • Link to web interfaces of plugins (if implemented)
      • Scenes:
        • Added a new page to display the defined scenes
      • Threads
        • Improved display of active threads
  • CLI:
    • Transition to the Logics API
    • Extended help command: with help [group] (instead of the complete help) the help for a group of commands (item, log, logic, scheduler) can be displayed.
    • New command for displaying detailed information about a logic.
    • Revision of the issue of the thread list.
    • Introduction of a new (more logical) command naming: Example: All commands for logics start with ‘l’. The old commands continue to work (except for name collisions).
  • Simulation:
    • Support of a filter, so that only certain callers are allowed (eg KNX or Visu)
  • Pushover plugin for sending notifications to devices such as smartphones
  • DataLog plugin contains a fix for the field stamp
  • Converted more plugins to being a SmartPlugin: datalog, memlog, comfoair, artnet, luxtronic2
  • SMA Plugin checks for Bluetooth support in Python to alert the user to missing support
  • Enocean:
    • Support for simple switches (protocol D2-01-07), such as Peha d 451 fu-ebi pf o.t. No. 00364476
    • Support for Eltako lightsensor (FAH60)
    • Learning methods restructured and expanded
  • KNX plugin: Typo Fix in enable_stats () / disable_stats ()
  • DLMS Plugin: checksum treatment reintroduced / activated
  • LIRCD Plugin: New plugin to send via lircd IR commands
  • MPD Plugin: Support to load and play playlists
  • Database plugin with new aggregate functions:
    • sum - returns summed values​for the requested period
    • count - returns the accumulated count for the requested period (can be combined with a condition such as count> 10)
    • diff - Returns the respective differences of the values for the requested period
    • raw - Returns all values for the requested period without aggregating
  • XBMC: New command shutdown has been implemented
  • visu_smartvisu:
    • Improved display of the Category page on mobile devices
    • Added initial support for smartVISU v2.9
  • visu_websocket:
    • For logics: Now reacts to changes to visu_acl attribute without rebooting SmartHomeNG
    • Protocol extension for later smartVISU versions

Removed plugins



  • Advanced Developer Documentation (English) on the Web
  • Initial version of the user documentation (German) on the Web