Release 1.6 - 11. Mai 2019
Es gibt eine Menge neuer Features im Core von SmartHomeNG und den Plugins.
Unterstützte Python Versionen
Bitte beachten: Seit SmartHomeNG Release 1.4 wollen wir die aktive Unterstützung älterer Python Versionen einstellen. Die älteste offiziell unterstützte Python Version für SmartHomeNG Release 1.6 ist Python 3.5. (Siehe auch Hard- u. Software Anforderungen im Abschnitt Installation zu unterstützten Python Versionen)
Das bedeutet nicht unbedingt, dass SmartHomeNG ab Release 1.6 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.
Die meisten Funktionen werden auch unter Python 3.4 funktionieren. Es werden jedoch zunehmend Features eingesetzt, die erste ab Python 3.5 zur Verfügung stehen.
Absolute minimum Python Version
Die Minimum Python Version in der SmartHomeNG startet wurde bei v3.4 belassen. Bei einer Neuinstallation wird jedoch empfohlen auf einer der neueren Python Versionen (3.6 oder 3.7) aufzusetzen.
Bitte auch die Release Notes für Version 1.6 unter https://www.smarthomeNG.de/user/release beachten.
Bugfixes im CORE
Bugfix für den Interactive Mode
Catch an error in
lib.daemon
where PID read yields a malformed process id and warn about a possible file system problem (especially with Raspberry Pi and SD cards)
Updates im CORE
Vor der Initialisierung prüft SmartHomeNG ob die in requirements/base.txt beschriebenen Python Packages installiert sind und bricht ab, falls nicht.
Requirement für das requests package auf >=2.20.0 heraufgesetzt (wg. CVE-2018-18074)
Bugfix für die Initialisierung von env.system.start
Items:
Funktionen des Python time-Packages können nun in eval genutzt werden.
Werte der Items (z.B.
`var = item1()`
) werden als Deep-Copy ausgeliefert, um bei dicts und lists bei Änderungen anvar`
ungewünschte Änderungen innerhalb des Items zu verhindern.Wenn dict-Items ihren Wert als String zugewiesen bekommen (z.B.
`item1("{'k1': 'v1', 'k2: 'v2}")`
) werden jetzt auch numerische Keys (z.B.`item2("{1: 'v1', 2: 'v2}")`
) richtig verarbeitet.Properties enforce_updates (r/w), trigger (r/w) und eval (r/w) implementiert (die ersten drei primär um dem Plugin stateengine (ehemals autoblind) den Verzicht des Zugriffs auf private Variablen zu ermöglichen)
Public Properties für items implementiert. Sie sind über
`sh.<Item-Pfad>.property.<Property-Name>`
zugänglich. Folgende Properties sind bisher implementiert:enforce_updates (bool, r/w)
eval (str, r/w)
name (str, r/w)
path (str, r/o)
trigger (list of str, r/w)
type (str, r/o)
weitere Properties -> siehe Doku
Die public Properties name und path sollen längerfristig die Nutzung von item (zum Zugriff auf den Item-Namen) und item.id() sowie item.path() (zum Zugriff auf den Item–Pfad) in der Nutzung ersetzen.
Logiken erhalten in trigger[‚source_details‘] Informationen über den Ursprung (z.B. Device ID), falls sie von Items getriggert werden.
Templates für Item-Strukturen implementiert
können in Plugins definiert werden (Metadaten in plugin.yaml)
können individuell definiert werden (../etc/struct.yaml)
sh.find_items(confattribute) und sh.find_children(parent, confattribute) erweitert auf Berücksichtigung der eventuell vorhandenen Instanz Kennung.
Logiken:
Handling korrigiert, wenn Items nicht existieren, die in Szenendefinitionen verwendet werden
lib.shtime erweitert
lib.shpypi hinzugefügt (zur Prüfung von Requirements und der Abfrage von Informationen von pypi.org)
Module:
Fehlgeschlagener Import von Python Packages in Modulen wird mit einer sinnvollen Fehlermeldung abgefangen und das Plugin wird nicht geladen
http:
Wechsel auf WebFonts von Font Awesome, wegen Problemen in der Darstellung mit Bootstrap 4.1.2
Updates der 3rd Party Komponenten
admin:
Initiale Version eines Admin Moduls hinzugefügt, welches das Backend-Plugin ablösen wird.
Plugins:
Fehlgeschlagener Import von Python Packages in Plugins wird mit einer sinnvollen Fehlermeldung abgefangen und das Plugin wird nicht geladen
Bei Multi-Instanz Plugins wird der Name der Plugin-Instanz automatisch zum Logtext hinzugefügt (Voraussetzung: Im Smartplugin wird die Anweisung
`self.logger = logging.getLogger(__name__)`
weggelassen.Metadaten:
Tool zum Prüfen der Vollständigkeit der Metadaten von Plugins
Attribut state für den Status des Plugins hinzugefügt [‚develop‘, ‚ready‘, ‚qa-passed‘,‘deprecated‘]
Hintergrund: Plugins im Status ‚develop‘ sollen nicht in den Releases in den Master übernommen werden.
Wenn state auf deprecated gesetzt wird, ist das eine Vorwarnung, dass das Plugin in kommenden Releases nicht mehr enthalten sin wird. Hierzu wird auch eine Warnung im Admin-Interface angezeigt.
Attribut restartable hinzugefügt (Hintergrund: Kennzeichnung der Plugins für die geplante Funktionalität zum Entladen und neu Laden von Plugins)
Abschnitt zur Definition der Funktionen hinzugefügt, die ein Plugin implementiert.
Allgemeiner Parameter plugin_enabled hinzugefügt, um das Laden von Plugins zu kontrollieren/verhindern
Beispiel Plugin unter dev/sample_plugin aktualisiert
Exception Handling für run() und stop() Methode. Bisher wurden Exceptions, die nicht innerhalb der Methoden gehandled wurden ignoriert (unterdrückt).
Unabhängige Versionsnummer für das Plugin-Repositories eingeführt
Neue Plugins
Für Details zu den inhaltlichen Änderungen der einzelnen Plugins, bitte die Dokumentation des jeweiligen Plugins konsultieren.
Alexa4p3:
Neues Plugin, dass das alte Alexa Plugin in Release 1.6 ablösen wird. Das Plugin kommt mit V3 der Payload Daten klar und sollte zu V2 rückwärtskompatibel sein!
jsonread
Neues Plugin: json parser plugin basierend auf jq This is a generic JSON to smarthome plugin. Fetch any JSON encoded data via http(s) or from a file, extract the interesting data and feed the values to smarthome items.
mailrcv
Neues Plugin zum empfangen von Mails. Ist Multi-Instance fähig
mailsend
Neues Plugin zum senden von Mails. Ist Multi-Instance fähig
openweathermap
Neues Plugin
slack:
neues Benachrichtigungs-Plugin hinzugefügt
Slack steht für „Searchable Log of All Conversation and Knowledge“ (dt. durchsuchbares Protokoll aller Konversationen und des Wissens)
Sofort-Nachrichten mit programmierbarem Text an die Slack Arbeitsgruppen senden
Unterstützt bei der Überwachung definierter Ereignisse
stateengine:
Neues Plugin, das dem ehemaligen autoblind Plugin entspricht (siehe oben) welches einen besseren Namen bekommen hat
Bietet Templates für Item-Strukturen
Plugin Erweiterungen
avm:
CURL zum Test von AHA Devices als Codekommentar hinzugefügt
Plugin API in plugin.yaml beschrieben
item mit name monitor.trigger aus dem README muss in monitor.trigger1 umbenannt werden, da es auf dem ITEM im 1.6er Core die Funktion „trigger()“ gibt!
Englische Übersetzung via locale.yaml für das WebIf
Plugin API wird via WebIf ausgegeben
Reconnect-Handling für den Callmonitor, Vermeidung von „Log-Error-Spam“ im Fall, dass das AVM-Device nicht erreichbar ist.
Plugin „restartable“ in plugin.yaml hinzugefügt
Reconnect (Internet) und Reboot (AVM Device) Buttons in WebIF hinzugefügt
Unterstützung für HKR Module (FritzDECT301)
backend:
Logik-Seite:
Autocomplete für sinnvolle Pluginmethoden
Info beim Autocomplete, ob man ein Plugin oder Item auswählt
Neue Sortierfunktion
Klammern beim Autocomplete von Items
Autocomplete für watch_items
Plugin Seite:
In den Plugin Details werden die durch das Plugin definierten öffentlichen Methoden angezeigt
darksky:
Erweiterung um eine Methode map_icon, mit der die zurückgelieferten Icons auf SmartVisu Icons gemapped werden können (inkl. Beispiel im README)
Erweiterung der Beispiele im README, um die Wettervorhersage für die nächsten 3 Tage auszulesen.
Bietet Templates für Item-Strukturen
dashbutton:
Nutzt jetzt das pypi „kamene“ Paket, das scapy-python3 „beerbt“. Vermeidet so eine Warnung beim Start!
database
Anzeige der Anzahl der Datensätze pro Tag
neue Funktion countall für item.db, die die Anzahl aller Datensätze zählt. Integration dieser in das WebInterface über neuen Button
Plugin API wird via WebIf ausgegeben
Neue Einstellung precision: Gibt an wie viele Nachkommastellen bei Abfragen zurückgeliefert werden sollen
Fix: Datenbankeinträge erhalten beim Starten von SHNG nun den aktuellen Zeitstempel anstatt den letzten aus der Datenbank (Wert wirkt sonst so, als wäre er während SHNG nicht lief gleich geblieben)
Button für den Start eines Datenbank-Cleanups (löscht alle Einträge, für die es kein Item mehr gibt) in Web-GUI integriert
Neue countall Funktion (gibt die Gesamtanzahl der Logeinträge für ein Item zurück)
Neue integrate Funktion
datalog:
Initialisierung auf aktuelle API umgestellt (kwargs, args)
Konfiguration der Dateien (filepatterns) und Patterns (logpatterns) nur noch via YAML-Format möglich (default funktioniert weiterhin)
dlms
logging aktualisiert
Konvertierungsfunktionen bug bereinigt
Prüfung auf fehlende Python library (REQUIRED_PACKAGE_IMPORTED) eingebaut
plugin.yaml erweitert
erstmalige Abfrage des Smartmeters erfolgt nun direkt nach Plugin-Start
Berücksichtigung von lib.shtime
drexelundweiss:
Beim Updaten eines Readonly-Items wird dessen Wert abgefragt
interne Anpassungen im Plugin (Metadaten, Logging, Initialisierung)
ebus
Plugin auf SmartPlugin umgestellt
gpio:
Bereitstellung eines Webinterface im Backend
Logging verbessert
homematic
Source Angaben um Device Adressen erweitert (zur Anzeige im Backend und Nutzung in Logiken)
knx
Source Angaben um Gruppen-Adressen erweitert (zur Anzeige im Backend und Nutzung in Logiken)
dpt 17.001 hinzugefügt (Szenennummer 1-64)
dpt 18.001 hinzugefügt (Szenen-Kontrolle 1-64=abrufen, 129-192=speichern)
dpt 229 hinzugefügt für Smart Metering Anwendungen (z.B. Hager eHZ für Funkumsetzer auf KNX)
dpt 275.100 hinzugefügt (DPT_TempRoomSetpSetF16 4 Bytes)
Fix for knx_cache and knx_init to allow mutlitple GAs to be defined (analog to knx_listen, to allow knx_listen with multiple GAs and initialisation of value
mail
Plugin aufgeteilt um dem SmartHomeNG Standard zu entsprechen (1 Plugin Klasse je Plugin).
Neue Plugins sind mailrcv und mailsend
mqtt
Bugfix
nuki
noWait Flag ist jetzt konfigurierbar
Anpassungen des Loggings (Text)
Web Interface mit Schaltfunktion
Kleiner Fix für Exceptions bei 503er Fehlern von der Nuki Bridge
operationlog
Metadaten des Plugins angelegt
Einstellung logger hinzugefügt um in einen konfigurierten Standard-Logger zusätzlich zu loggen
pushbullet
API Beschreibung in plugin.yaml ergänzt
telegram
Added a plugin parameter pretty_thread_names that defaults to True for a clearer naming of the sub Threads
updater –> Telegram Updater
dispatcher –> Telegram Dispatcher
cryptic-id_0 –> Telegram Worker 0
cryptic-id_1 –> Telegram Worker 1
cryptic-id_2 –> Telegram Worker 2
cryptic-id_3 –> Telegram Worker 3
visu_websocket
Erweitert um
.property.<attributname>
Damit ist es möglich Attribute direkt in der SmartVISU anzuzeigen, also z.B.Schlafzimmer.Fernseher.property.last_change
webservices
neuer Parameter für items und itemsets der mit „?mode=…“ (val oder full) angehängt werden muss. Der Parameter sorgt dafür, dass die in dem Items konfigurierten Werte für webservices_data ignoriert werden und das zurückgeliefert wird, was in mode steht
withings_health (ehemals nokia_health)
Umbenennung des Plugins und der Parameter wegen Rückübernahme durch Withings
Neuimplementierung für OAuth2, und Version 1.0.0-1.1.0 des Nokia Pypi Pakets. Achtung: es müssen 4 neue Items erstellt werden. withings_type: access_token, token_expiry, token_type, refresh_token. Diese müssen mit dem Attribut cache als File, oder in einer Datenbank (sqlite, database plugin) zwischengespeichert werden, da sonst das Plugin nach SHNG Neustart erneut OAuth2 durchlaufen muss!
Durchlauf des OAuth2 Prozesses von der WebGUI gegen (lokale) Callback-URL (ebenfalls via WebGUI)
Englische Version der WebGUI
xiaomi:
Umbenennung des Plugins von „xiaomi“ nach „miflora“
Umbenennung der Itemattribute von „xiaomi_data_type“ zu „miflora_data_type“
xmpp:
Einstellung server hinzugefügt mit der angegeben werden kann zu welchem Server die Verbindung aufgebaut werden soll (optional)
Einstellung use_ipv6 hinzugefügt über die IPv6 deaktiviert werden kann (Default ist IPv6 aktiv)
Einstellung plugins hinzugefügt über die zusätzliche Plugins geladen werden können (z.B. Multi User Chat XEP-45)
Einstellung join hinzugefügt über die eingestellt werden kann in welche Gruppen-Chats automatisch beigetreten wird
Implementierung eines Standard-Log-Handlers um Logs via XMPP an einen XMPP-Server zu schicken
Veraltete Plugins
Die folgenden Plugins wurden als deprecated (veraltet) gekennzeichnet. Dieses Kennzeichen bedeutet, dass die Plugins zwar noch funktionieren, aber nicht mehr weiterentwickelt werden und aus dem kommenden Release von SmartHomeNG entfernt werden. Nutzer dieser Plugins sollten auf entsprechende Nachfolge-Plugins umstellen.
System Plugins
sqlite - auf das database Plugin umstellen
sqlite_visu2_8 - auf das database Plugin umstellen
Gateway Plugins
tellstick - classic Plugin, laut Umfrage nicht genutzt
Interface Plugins
netio230b - classic Plugin, laut Umfrage nicht genutzt
smawb - classic Plugin, laut Umfrage nicht genutzt
Web Plugins
alexa - auf das alexa4p3 Plugin umstellen
boxcar - classic Plugin, laut Umfrage nicht genutzt
mail - auf die Plugins mailsend bzw. mailrcv umstellen
openenergymonitor - classic Plugin, laut Umfrage nicht genutzt
wunderground - das freie API wird durch Wunderground nicht mehr zur Verfügung gestellt
Dokumentation
Anwender Dokumentation
Hinweis zum Neubau der Python Requiremments zur Installationsanleitung hinzugefügt
Beschreibung des neuen Administrations-Interface hinzugefügt
Allgemeine Updates
Entwickler Dokumentation
Plugin-API Dokumentation erweitert
Item-API Dokumentation erweitert
Allgemeine Updates