Release 1.4 - 17. Dezember 2017

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

Unterstützte Python Versionen

Bitte beachten: Ab SmartHomeNG Release 1.4 wollen wir die aktive Unterstützung älterer Python Versionen einstellen. Die älteste unterstützte Python Version wird dann Python 3.4 sein. (Siehe Hard- u. Software Anforderungen im Abschnitt Installation zu unterstützten Python Versionen)

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

Absolute minimum Python Versionen auf 3.3 angehoben

Die Minimum Python Version in der SmartHomeNG startet wurde von 3.2 auf 3.3 erhöht. Aufgrund der größeren Änderungen zwischen Python 3.2 und 3.3 war es schon bisher problematisch SmartHomeNG mit Plugins in eine Python 3.2 zum Laufen zu bringen.

Neue Funktionen

Neue Funktionen im CORE

  • Ladbare Core Module:
    • Module-Loader: Ermöglicht ladbare Module zur Erweiterung der Core Funktionalität.
    • Der Module-Loader unterstützt die Prüfung der Parameter gegen Metadaten (analog zu den Plugins).
    • http-Modul: Ermöglicht Plugins selbst über CherryPy Webinterfaces zur Verfügung zu stellen
    • Rudimentäres Module API implementiert
  • SmartPlugin Klasse erweitert
  • Warnung, falls LANG Environment Variable nicht sinnvoll gesetzt ist.
  • Items:
    • Für die Vorbelegung des Wertes von Items in den Konfigurationsdateien kann nun initial_value: analog zu value verwendet werden.Zur Vermeidung von Verwechslungen zum namensgleichen value in Ausdrücken wie bei eval.
    • Attribute on_update und on_change eingeführt. Mit Hilfe dieser Item Attribute können die Werte anderer Items gesetzt werden.
    • Funktionen prev_update_age() und prev_update() hinzugefügt.
  • Plugins:
    • Plugins können ein Webinterface implementieren (durch Nutzung des http-Moduls)
    • Unterstützung mehrerer Versionen eines Plugins. Vorgänger-Versionen von Plugins können mit einem Plugin ausgeliefert werden und durch Angebe der Versionsnummer in /etc/plugin.yaml statt der aktuellen Version geladen werden.
    • Anwender und Entwickler Dokumentation kann dynamisch um Plugin Dokumentation ergänzt werden. (Durch Erstellen der Dateien user_doc.rst bzw. develpoer_doc.rst)
  • Scheduler:
    • Implementierung eigener Nammensräume für Scheduler von Items, Logiken und Plugins, um mögliche Kollisionen durch Namensgleichheiten zu vermeiden. (ist besonders zu beachten, fall man sh.scheduler.change() für Scheduler von Logiken nutzt. Dort muss dem Scheduler Namen ein logic. vorangestellt werden)
  • Einführung von Plugin Metadaten:
    • Erweiterung der Plugins um eine Metadaten-Datei.
    • Metadaten zu Plugins werden in einer plugin.yaml im Plugin Verzeichnis abgelegt.
    • Bei existierenden Plugin-Metadaten wird die Versionsverträglichkeit zwischen SmartHomeNG und Plugin geprüft
    • Bei existierenden Parameter Definitionen in den Plugin-Metadaten werden die in /etc/plugin.yaml konfigurierten Werte auf formale Gültigkeit (Datentyp, min/max Werte, Werteliste, etc.) geprüft.
    • Neues Parameter Interface für Plugins: Bei existierenden Parameter Definitionen in den Plugin-Metadaten werden die geprüften Werte im Ziel-Datentyp in einem Dict an das gestartete Plugin übergeben.
    • Angabe des classname in den Metadaten ermöglicht einfachere Konfiguration: Nur plugin_name: muss in /etc/plugin.yaml angegeben werden, statt class_path: und class_name: (classname ist zu den Metadaten aller Plugins hinzugefügt worden)
    • Klassifizierung der Plugins in den Metadaten zur bessern Übersicht. Die Klassifizierung wird zur Erstellung der Doku herangezogen.
  • Szenen:
    • Unterstützung des YAML Formates für die Konfiguration von Szenen
    • Einführung eines API für Szenen
    • Szenen können statt absolute Werte für Items zu definieren, auch Eval-Ausdrücke definieren. In den Eval-Ausdrücken ist die Referenzierung von Items sowohl absolut, als auch relativ zum Szenen-Item möglich
    • Im YAML Format können Namen für die Stati einer Szene vergeben werden
  • Logiken:
    • Methode last_run() hinzugefügt
    • Logics API:
      • Implementierung eines APIs für Logiken
      • Das enable/disable von Logiken über das API wird persistiert (bleibt also auch über einen Neustart von SmartHomeNG erhalten)
      • Das API ermöglicht den Plugins Backend, Blockly und CLI ein erweitertes Handling von Logiken (z.B. Update der Logik-Konfiguration) falls das neue Konfigurationsformat (yaml) verwendet wird.
      • Details des API sind der Entwickler Dokumentation zu entnehmen
    • Zugriff auf das Logics-API aus Logiken heraus
    • Möglichkeit persistenter Variablen für Logiken dokumentiert
  • Neue Kommandozeilen Option um den Ort der Verzeichnisse mit den Konfigurationsdateien (/etc, /items und /logics) ändern zu können.

Entfernte CORE Bibliotheken

Keine

Neue Plugins und Plugin-Erweiterungen

  • Allgemein:
    • sample_plugin basierend auf erweiterter SmartPlugin Klasse (unter /dev/sample_plugin)
    • sample_plugin mit Web-Interface (unter /dev/sample_plugin_webif)
  • Blockly: Graphischer Logik Editor mit Integration in das Backend Plugin (noch Expermental)
  • WebServices Plugin, dass das neue Web-Interface nutzt
  • Nokia Health Plugin
  • AV Device:
    • Änderung der txt Konfigurationsdatei (Achtung! Bestehende Dateien müssen aktualisiert werden!)
    • Unterstützt nun neben Pioneer AV Receivern auch die wichtigsten Funktionen von Denon AV-Geräten
    • Optimierte Konfiguration von zusätzlichen Funktionen und Geräten
    • Unterstützung der Konfigurationsüberprüfung mittels avdevice/plugin.yaml
    • Optimierung vieler Funktionen wie erneutes Senden eines Befehl, wenn die erwartete Antwort nicht empfangen werden kann, Reset auf letzten bekannten Wert, Abfrage der aktuellen Einstellungen für sämtliche Zonen, etc.
  • Backend:
    • Das Backend Plugin nutzt/benötigt nun das http-Modul
    • Integration des Blockly Plugins um Logiken über Webinterface visuell zu konfigurieren (über Logik-Liste oder Plugin-Liste)
    • Systeminfo:
      • Aufteilung in zwei Reiter (Systemeigenschaften und PyPI Check)
      • PyPi Check prüft nun gegen die Requirements von SmartHomeNG
    • Dienste:
      • YAML Syntax Checker hinzugefügt
      • Eval Syntax Checker hinzugefügt
      • Syntax Highlighting im CONF-YAML Konverter
    • Items:
      • Anzeige von update_age „Alter (Update)“ hinzugefügt
      • Anzeige von prev_update_age „vorh. Alter (Update)“ und prev_update „vorheriges Update“ hinzugefügt
    • Logiken:
      • Erstellen neuer Logiken
      • Konfiguration der Logiken (etc/logic.yaml) ist zur Laufzeit änderbar
      • Logiken können entladen und geladen werden.
      • Editieren von Logiken
        • Erweiterungen des CodeMirror Logikeditors (Python Sourcecode)
          • Full Screen Modus via F11
          • Automatische Anpassung an Browserfenster
          • Autocomplete für Python Befehle und Item-Pfade
          • Optionale Zeilenumbrüche
        • Löschen von Logiken
        • Integration für das Blockly Plugin
        • Anzeige des Zeitpunkts des letzten Laufs auf der Logik-Detail Seite
      • Scheduler:
        • Anzeige der Item-Schedules, Logik-Schedules, Plugin-Schedules und sonstiger Schedules erfolgt auf eigenen Reitern
      • Plugins:
        • Erweiterte Anzeige der Pluginliste
        • Anzeige der Konfigurationseinstellungen aus der plugin.yaml/.conf durch Klick auf das jeweilige Plugin in der Liste
        • Verlinkung auf Webinterfaces von Plugins (falls diese implementiert sind)
      • Szenen:
        • Neue Seite zur Anzeige der definierten Szenen hinzugefügt
      • Threads:
        • Verbesserte Anzeige der aktiven Threads
  • CLI:
    • Umstellung auf das Logics-API
    • Erweiterter Hilfe Befehl: mit help [group] kann (statt der vollständigen Hilfe) die Hilfe zu einer Gruppe von Befehlen (item, log, logic, scheduler) angezeigt werden.
    • neuer Befehl zu Anzeige detaillierter Informationen zu einer Logik
    • Überarbeitung der Ausgabe der Threadliste
    • Einführung einer neuen (logischeren) Befehlsbenennung: Beispiel: Alle Befehle für Logiken beginnen mit ‚l‘. Die alten Befehle funktionieren weiterhin (bis auf Namens-Kollisionen).
  • Simulation:
    • Unterstützung eines Filters, so dass nur bestimmte caller erlaubt sind (bspw. KNX oder Visu)
  • Pushover Plugin zum Versenden von Notifizierungen auf Geräte wie z.B. Smartphones
  • DataLog Plugin enthaelt ein Fix fuer das Feld stamp
  • Weitere Plugins auf SmartPlugin umgestellt: datalog, memlog, comfoair, artnet, luxtronic2
  • SMA Plugin prueft auf Bluetooth Support in Python um den Nutzer auf fehlende Unterstuetzung hinzuweisen
  • Enocean:
    • Unterstützung für einfache Schalter (Protokoll D2-01-07), wie z.B. Peha d 451 fu-ebi pf o.t. nr. 00364476
    • Unterstützung für Eltako Heligkeitssensor (FAH60)
    • Lernmethoden restrukturiert und erweitert
  • KNX Plugin: Typo Fix in enable_stats() / disable_stats()
  • DLMS Plugin: Pruefsummenbehandlung wieder eingefuehrt/aktiviert
  • LIRCD Plugin: Neues Plugin um via lircd IR Kommandos zu verschicken
  • MPD Plugin: Unterstützung um Playlists zu laden und abzuspielen
  • Database-Plugin mit neuen Aggregatsfunktionen:
    • sum - Liefert summierte Werte über den abgefragten Zeitraum zurück
    • count - Liefert summierte Anzahl über den abgefragen Zeitraum zurück (kann mit einer Bedingung kombiniert werden z.B. count>10)
    • diff - Liefert die jeweiligen Differenzen der Werte über den abgefragten Zeitraum zurück
    • raw - Liefert alle Werte für den abgefragten Zeitraum zurück ohne eine Aggregation durchzuführen
  • XBMC: Neues Kommando shutdown wurde implementiert
  • visu_smartvisu:
    • Verbesserte Anzeige der Category Seite auf mobilen Endgeräten
    • Initialer Support für smartVISU v2.9 hinzugefügt
  • visu_websocket:
    • Reagiert nun bei Logiken auf Änderungen an visu_acl ohne Neustart von SmartHomeNG
    • Protokollerweiterung für spätere smartVISU Versionen

Entfernte Plugins

Bisher keine

Dokumentation

  • Erweiterte Entwickler Dokumentation (English) im Web
  • Initiale Version der Anwenderdokumentation (Deutsch) im Web