-
Notifications
You must be signed in to change notification settings - Fork 91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Item Funktionen in der plugin.yaml? #645
Comments
Wenn Du mal einen Blick in die Plugin.yaml des database Plugin wirfst, wirrst Du sehen, dass dort die Funktionen bereits in der Sektion plugin_functions dokumentiert sind. Diese Doku wird in die Doku des Plugins übernommen und erscheint auf der Seite der Konfigurations-Doku. https://docs.smarthomeng.de/plugins_doc/config/database.html |
Es gibt neben den Plugin Funktionen wie sh.pluginname.db() aber eben auch noch item.db() und andere Funktionen die auf Itembasis sind. |
Im database Plugin sind die Funktionen .db und .series herausgeführt. Dabei handelt es sich um die Herausführung einer Plugin Funktion mit einem vorbelegtem Parameter:
Solche Funktionen könnte man auch als Plugin Funktionen herausführen. Kennst Du denn noch andere Plugins, die Funktionen an das Item Objekt hängen? Dieser im database Plugin genutzt Mechanismus ist ja in SmartHomeNG für die Plugin Erstellung nicht dokumentiert und meiner Meinung nach der zentralen Funktion des System Plugins (database Plugin) geschuldet. |
Ursprung des Issues war das UZSU Plugin. Dort habe ich Item Funktionen eingeführt und diese fälschlicherweise als Pluginfunktion deklariert ;) |
Item Funktionen können wir (als Core Entwickler) in Sonderfällen bei System-Plugins einsetzen. Die Item Funktionen im database Plugin stammen allerdings bereits aus smarthome.py vor Version 1.0. Das Problem mit Item Funktionen ist, dass sie Core Methoden oder Datenstrukturen überschreiben können und bei der Weiterentwicklung des Cores dann immer geprüft werden muss, ob Plugins Item Funktionen implementiert haben, die mit dem Core in Konflikt stehen (werden). Kurz gesagt: Ich halte item Funktionen für keine gute Idee. |
@msinn Wie würdest Du denn sowas wie im database Plugin alternativ lösen wollen? |
Ich würde es für das database Plugin nicht anders lösen wollen, da diese Lösung schon seit vor smarthome.py 1.0 existiert und das einen breaking Change darstellen würde. Wir haben das Plugin ja im Fokus und unter Kontrolle. Ich hatte auch geschrieben Ich möchte die Büchse der Pandorra jedoch nicht für alle Plugins öffnen. Der Einsatz im database Plugin ist ja nur ein verkürzter Aufruf einer normalen Plugin Funktion. Dadurch, dass die Methode an das item gehängt wird, braucht der letzte Parameter (der Item Pfad) nicht in der Plugin Funktion angegeben zu werden. |
Heißt, beim UZSU Plugin sollte ich das auf die gleiche Weise lösen.. es gibt die Funktionen auf Plugin-Ebene (funzt momentan halt noch nicht wirklich glaub ich.. ;)), wo zB der Itempfad beim Funktionsaufruf mitgegeben wird, zusätzlich funktioniert der Aufruf aber auch mit item.Funktion() ..? Sonst wäre es dort halt auch ein Breaking Change. Sind dort leider eine Menge Funktionen. Und generell denke ich auch, dass Funktionen für Items kritisch sind, da es durchaus Probleme geben kann, wie wir ja von id() und path() etc. kennen ;) |
Wenn Du mal am UZSU PLugin schraubst: Siehst Du eine Möglichkeit dort so Sachen wie Urlaub, Ferien etc. mit unterzubringen? Der Tagesablauf bei meinen Kindern richtet sich durchaus danach ob gerade Feiertage oder Ferien sind. Derzeit habe ich ja nur die Wochentage als Kriterium. Oder soll ich da mal ein Issue aufmachen? |
Gibbet schon seit Jahren ein Issue ;( |
Ich fürchte es ist wohl komplexer als das.... |
Gerne Gedanken und Ideen zum Holiday UZSU Feature hier rein: smarthomeNG/plugins#628 |
Wenn die Funktionen als Plugin-Funtionen getestet sind und mit Abfangen von Fehlern funktionieren - probier es.
Genau. Darum wäre ich da auch bei Martin, dass das (Item-Funktionen) nicht als offizielles Feature angeboten wird. Es gibt dann doch zu viele Möglichkeiten, per Nebeneffekt etwas kaputt zu machen. |
Passt für mich so |
Beispielsweise das Datenbank Plugin ermöglicht es, mit item.db() konkrete DB-Abfragen zu einem Item zu machen. Im WebIF ist das unter "Plugin API" beschrieben: https://github.com/smarthomeNG/plugins/blob/master/database/user_doc.rst
Wollen wir dafür eine Sektion in der plugin.yaml als "item_functions" vorsehen? Dann hätte man da eine saubere Doku zu den versch. Funktionen..
Beim UZSU Plugin hab ich solche Funktionen fälschlicherweise als plugin_functions deklariert, ohne mir dessen bewusst zu sein ;)
The text was updated successfully, but these errors were encountered: