Autor Thema: Templates in FHEM  (Gelesen 1204 mal)

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 3517
Templates in FHEM
« am: 05 März 2017, 11:58:33 »
Hallo,

ich schlage den Einbau von Templates als neue Funktionalität in FHEM vor. Ich schreibe dazu drei Beiträge.

  • Anwendungsfälle (dieser Beitrag)
  • Implementierung (nächster Beitrag mit Patch für fhem.pl)
  • Problem/Diskussion (übernächster Beitrag)

Viele Grüße
Boris

Anwendungsfälle:
  • Zur Definition von gleichartigen Geräten wiederholt sich die Konfiguration regelmäßig mit meist nur geringen Abweichungen bei den Parametern. Die sich wiederholende Konfiguration wird daher in einem Template abgelegt. Das Template wird dann in der Konfiguration unter Angabe der für die variablen Teile zu ersetzenden Parameter aufgerufen.
  • Um mehrere Kommandos hinter at und notify zusammenzuhalten, muss das Semikolon als Befehlstrenner als ;; maskiert angegeben und alles in einer Zeile geschrieben werden. Die Auslagerung der Kommandofolge in ein Template soll diese Maskierungen überflüssig machen und die Benutzung klarer machen.
  • Bei Verwendung von Perl-Kode in FHEM müssen Zeilenenden mit \ und Semikolons mit ;; maskiert werden. Die Verwendung von Templates soll es erlauben, unmaskierten Perl-Kode zu schreiben.

Beispiel zu einem FHEM-Template:

define %name% FHT %fhtcode%
attr %name% IODev CUN
attr %name% alias %alias%
attr %name% group %group%
attr %name% icon icoTempHeizung.png
attr %name% room %room%,Anlagen/Heizungen

define watchdog.%name% watchdog %name% 00:15:00 SAME set %name% report2 255
attr watchdog.%name% group %group%
attr watchdog.%name% room Control/Heizungen

define %name%.log FileLog /opt/fhem/log/%name%-%Y%m.log %name%:.*
attr %name%.log group %group%
attr %name%.log icon icoLog.png
attr %name%.log logtype fht
attr %name%.log room Control/Heizungen

define %name%.weblink SVG %name%.log:%name%:CURRENT
attr %name%.weblink label sprintf("Temperatur: %.0f °C (%.0f °C .. %.0f °C)  Aktor: %.0f %% (%.0f %% .. %.0f %%)", $data{currval1}, $data{min1}, $data{max1}, $data{currval2}, $data{min2}, $data{max2} )
attr %name%.weblink room %room%
attr %name%.weblink alias %alias%

So sehen bei mir alle Definitionen von FHTs aus. Die Zeichenketten in der Form %...% sind die variablen Elemente.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 3517
Antw:Templates in FHEM
« Antwort #1 am: 05 März 2017, 12:03:51 »
Der beigefügte experimentelle Patch fügt einen Befehl template zu FHEM hinzu:

Usage: template def fhem|perl <name>(<args>) fileName
       template del <name>
       template list

Beispiel für Definition:

templ def fhem Heizung(fhtcode,name,alias,room,group) Heizung.templ
templ list

Beispiel für Verwendung:

$Heizung(1B2B,hzgwz,Heizung Wohnzimmer,Wohnzimmer,Heizung)
Die Datei Heizung.templ hat genau den Inhalt aus dem vorigen Beitrag.

Es ist nur der Teil ausprogrammiert, der dem ersten Anwendungsfall entspricht.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 3517
Antw:Templates in FHEM
« Antwort #2 am: 05 März 2017, 12:06:41 »
Ich habe den Kode nicht weiter ausprogrammiert, bevor ich nicht Gewissheit habe, dass er auch eine Chance hat, aufgenommen zu werden.

Die Schwierigkeit liegt in AnalyzeCommandChain, wo man die Unterscheidung zwischen Kommando, Subkommando (hinter at und notify) und Perl explizit ausprogrammieren muss.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 15689
Antw:Templates in FHEM
« Antwort #3 am: 05 März 2017, 12:25:23 »
Ohne es naeher angeschaut zu haben: kann man das nicht als Modul anlegen?
Dann brauchst du gar nicht zu fragen, ob es aufgenommen wird.

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15727
Antw:Templates in FHEM
« Antwort #4 am: 05 März 2017, 12:35:53 »
es gibt von igami ein modul das glaube ich in diese richtung geht. mit fällt nur gerade her name nicht ein ...
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 3517
Antw:Templates in FHEM
« Antwort #5 am: 05 März 2017, 12:36:55 »
Der erste Anwendungfall ginge wohl noch als Modul. Bei den beiden anderen muss man aber doch AnalyzeCommandChain aufbohren, nicht wahr?

Die Anwendungsfälle 2 und 3 ließen sich aber auch lösen, wenn wir einen Parser einführen (Parse-RecDescent). Aber wo ist der Freiwillige dafür?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15727
Antw:Templates in FHEM
« Antwort #6 am: 05 März 2017, 12:41:01 »
das modul heißt archetype.

zum parsen und den ; ... dazu hatte ich in dem ParseParams thread schon mal einen vorschlag gemacht. vielleicht können wir das wiederbeleben
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 12730
  • Probleme sind auch keine Lösung.
Antw:Templates in FHEM
« Antwort #7 am: 05 März 2017, 12:50:06 »
Hallo Boris,

willst Du nicht erstmal die Baustelle "RTypes", die vor langer Zeit auf Dein Bestreben in die fhem.pl eingebaut wurde, zuende bringen, bevor jetzt eine neue Baustelle eröffnet wird?

Grundsätzlich sind templates eine gute Idee. Aber in Homematic gibt es solche Templates seit Jahren. Aber ausser martin und mir nutzt die offenbar niemand, wenn man sich viele Homematic Probleme anschaut, die immer wieder im Homematic-Bereich diskutiert werden und die sich vermeiden ließen, wenn man mit templates arbeiten würde.

Wenn man wirklich

Zitat
Zur Definition von gleichartigen Geräten wiederholt sich die Konfiguration regelmäßig mit meist nur geringen Abweichungen bei den Parametern.

betrachtet, kann man das auch in vielen Fällren mit dem bereits vorhandenen Befehl "copy" abfackeln, dem man ja die abweichenden Parameter im define für das Zieldevice einfach mitgeben kann.

So ganz erschließt sich mir der Nutzen Deines Vorschlages noch nicht wirklich, wenn ich mir den dagegenstehenden Aufwand betrachte und außerdem in Betracht ziehe, welche Möglichkeiten FHEM bereits bietet (setdefaultattr, copy, ...), um solche wiederkehrenden Dinge einfacher zu erledigen.
« Letzte Änderung: 05 März 2017, 12:52:00 von betateilchen »
Aus technischen Gründen befindet sich die Signatur auf der Rückseite dieses Beitrages.
Zustimmung Zustimmung x 1 Liste anzeigen

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2278
    • _.:|:._
Antw:Templates in FHEM
« Antwort #8 am: 05 März 2017, 13:04:40 »
Aber in Homematic gibt es solche Templates seit Jahren. Aber ausser martin und mir nutzt die offenbar niemand,

Aus FHEM Anwendersicht:

Als ich vorzeiten gelesen hatte, dass es Homematic Templates gibt, fande ich das sehr spannend. Die Details hatte ich aber auf Anhieb nicht verstanden und da es eine "homematic only Lösung" war auch nicht weiter verfolgt. Ich hätte mich halt einarbeiten müssen, aber das war es mir, für 1(!) Modul, an der Stelle nicht wert. Es lief ja schon alles.
Wäre es ein generelles Konzept gewesen, dass an allen möglichen Stellen zu verwänden wäre, dann hätte ich das mit bestimmt gemacht...

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 12730
  • Probleme sind auch keine Lösung.
Antw:Templates in FHEM
« Antwort #9 am: 05 März 2017, 13:13:29 »
Wäre es ein generelles Konzept gewesen, dass an allen möglichen Stellen zu verwänden wäre, dann hätte ich das mit bestimmt gemacht...

Ein generelles Konzept, wie jetzt hier diskutiert, würde aber höchstwahrscheinlich bei den vielen Sonderlocken, die Homematic hat/braucht, auch nicht funktionieren. Somit hätten wir dann schon

  • Homematic templates
  • "generelles Konzept"
  • FHEM-interne, bereits vorhandene Möglichkeiten, wie oben schon beschrieben
  • archetype

Aus Entwickler- und Supportersicht:

Wie willst Du den Anwendern eine Vielzahl solcher "Ideen" für ähnliche Aufgabenstellungen so vermitteln, dass sie verständlich bleiben und so, dass auch Otto Normalverbraucher und Lieschen Müller weiß, wann welcher Ansatz der "richtige" ist? Meiner Ansicht nach schaffen wir damit nur noch mehr Unverständnis und noch mehr Probleme als jetzt schon existieren.
Aus technischen Gründen befindet sich die Signatur auf der Rückseite dieses Beitrages.

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2278
    • _.:|:._
Antw:Templates in FHEM
« Antwort #10 am: 05 März 2017, 13:29:12 »
Meiner Ansicht nach schaffen wir damit nur noch mehr Unverständnis und noch mehr Probleme als jetzt schon existieren.

Wenn man aber keine neuen Weg testet, dann wird sich auch nichts weiterentwickeln. FHEM ist kein out-of-the-box Produkt. Das weiß Du, als "alter Hase", wahrscheinlich viel besser als ich. Ob es sich durchsetzt oder auch nicht, wird man sehen... mMn hat die Idee zumindest Potenzial dazu.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 15689
Antw:Templates in FHEM
« Antwort #11 am: 05 März 2017, 14:45:10 »
Zitat
Die Schwierigkeit liegt in AnalyzeCommandChain, wo man die Unterscheidung zwischen Kommando, Subkommando (hinter at und notify) und Perl explizit ausprogrammieren muss.

Ich verstehe dieses Problem immer noch nicht. Kann jemand bitte so nett sein, und fuer einen "csrfToken" Geschaedigten das ganz langsam erklaeren? :)

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1113
    • HMCCU
Antw:Templates in FHEM
« Antwort #12 am: 08 März 2017, 08:55:30 »
Könnte man nicht anstelle der Einführung von Templates den Copy-Befehl erweitern? Der Befehl unterstützt ja schon die variable Angabe des DEF-Teils.
Wären eigentlich nur noch optionale Parameter zu ergänzen, die Attribute ersetzen.

Beispiel:

copy olddev newdev mydefpar1 attr1=val1 attr2=val2
CCU2 mit diversen Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für den Rest (Sonos, AVR, Meteohub, Beacons, Heizung, Hue, Tablet-UI)
HMCCU: Schnittstelle CCU2 - FHEM (best of both worlds approach)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 12730
  • Probleme sind auch keine Lösung.
Antw:Templates in FHEM
« Antwort #13 am: 08 März 2017, 11:13:23 »
Das fände ich auch einen guten (und verständlichen) Weg zur Umsetzung.
Aus technischen Gründen befindet sich die Signatur auf der Rückseite dieses Beitrages.

Online KernSani

  • Sr. Member
  • ****
  • Beiträge: 801
Antw:Templates in FHEM
« Antwort #14 am: 08 März 2017, 15:26:27 »
Könnte man nicht anstelle der Einführung von Templates den Copy-Befehl erweitern? Der Befehl unterstützt ja schon die variable Angabe des DEF-Teils.
Wären eigentlich nur noch optionale Parameter zu ergänzen, die Attribute ersetzen.

Beispiel:

copy olddev newdev mydefpar1 attr1=val1 attr2=val2

Dies entspricht im Wesentlichen der bereits vorhandenen "import raw" Funktionalität, die ich persönlich für ausreichend halte, um schnell bestehende Definitionen in ein neues Device zu übernehmen.
Auch das Sharing komplexer Szenarien lässt sich über "import raw" leicht realisieren.

Einen echten Mehrwert hätten Templates für mich dann, wenn ich an einer zentralen Stelle Änderungen vornehmen kann, die dann Auswirkungen auf alle auf dem Template basierenden Devices hat.
 
Grüße,

Oli
Vom Arzt oder Apotheker empfohlen: https://fhem.de/commandref.html