HM templates - wie Register setzen, verwalten, verwenden

Begonnen von martinp876, 04 Juni 2017, 12:21:57

Vorheriges Thema - Nächstes Thema

martinp876

habe gerade ein update von HMtemplate eingespielt.
Der Editor bietet eine Möglichkeit, register zu setzen - wie ich meine einfacher als bisher.
Zu beachten: Um eine geführte Steuerung der Parameter anzubieten werden die Parameter (also z.B. Registerwerte") erst einmal in den Attribute festgelegt. erst mit einem "save" wird das Template definiert oder geändert.

Vorgehen:
define ht HMtemplate
Wenn man noch nichts hat erst einmal ein define
set ht defTmpl meinTemplate
Beachte die schritte in "internals":
1) wähle, welche Regisergruppe du ändern willt. Das sind entweder die basics (Rollofahrzeiten,... alles war KEINEN peer hat) oder die peer-aktionen Diese können nur short, nur long oder beides sein. Der Peer selbst ist erst einmal egal
2) wähle eine "Source". Das ist die entity aus welcher die Register gelesen werden. incl deren aktueller Wert
3) wähle peers wenn es ein "peer-template" ist
4) falls das Template  mit parametern bestückt werden soll kann man diese hier angeben.
5) Beschreibung - ist gelegentlich hilfreich
6) save
7) dismiss - damit verlässt man den zustand und kann nun nach "edit" gehen

8) nun also
set ht edit myTemplate

9) bearbeite die Attribute. Lösche register (attribute) welche du nicht im template haben willst. Wenn das Register literals hat kannst du diese in der drop-down liste wählen. ein
get ht regInfo
zeigt die Wertegereiche der register
10) save => das template ist gesichert
11) dismiss => zurück in die hauptauswahl

Zuweisen des templates
set ht select myTemplate
attr ht tpl_entity myEntity    ### wem will ich das template zu weisen?
attr ht tpl_param_<tmplParams> <value>    ### template parametrieren - wenn man das will. Cool, aber vielleicht nich tder erste Schritt
set ht apply   ## - das template wird dem Device zugewiesen


Man hat sicher HMinfo am laufen (wer nicht kann auch keine Templates - selbst schuld)
mit
set hm templateExe
kann man nun alle ( ALLE) zugewiesenen templates "ausführen". Also die Register werden gesetzt entsprechend der Template definition. Achtung:  geschrieben wird nur, wenn auch etwas zu ändern ist. Man kann das also ohne Performance-probleme immer wieder ausführen. Ist das template gesetzt und sind die Register gelesen - passiert KEIN Funkverkehr.

Es gibt noch mehr Funktionen... das ist der Einstieg.
Anregungen gerne

arthur_dent_2015

#1
Hallo Martin,
irgendwie funktioniert diese Anleitung nicht oder ich bin zu blöd... Ich habe die folgenden templates angelegt:

Internals:
   CFGFN     
   NAME       ht
   NR         914
   NTFY_ORDER 50-ht
   STATE      edit
   TYPE       HMtemplate
   tpl_Info0  change attr Reg_ as desired
   tpl_Info1  change attr tpl_params ':' separated
   tpl_Info2  save    if finished
   tpl_Info3  saveAs  to create a copy
   tpl_Info4  dismiss will reset HMtemplate
   tpl_Name   motionOnSw
   tpl_Param  ontime brightness
   tpl_type   peer-Long
   Helper:
     DBLOG:
       usage_1:
         fhemlogDB:
           TIME       1541943969.03211
           VALUE      Schalter_Bad        _ESC_BM_HM_Bad:short_ESC_ontime:65 brightness:100
       usage_2:
         fhemlogDB:
           TIME       1541943969.03211
           VALUE      Schalter_Flur       _ESC_BM_HM_Flur:short_ESC_ontime:65 brightness:31
   READINGS:
     2018-11-11 14:46:09   state           edit
     2018-11-11 14:46:09   usage_1         Schalter_Bad        |BM_HM_Bad:short|ontime:65 brightness:100
     2018-11-11 14:46:09   usage_2         Schalter_Flur       |BM_HM_Flur:short|ontime:65 brightness:31
   helper:
     attrList   tpl_params tpl_description event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading
     cSt        s1
     role:
Attributes:
   Reg_ActionType jmpToTarget
   Reg_CtDlyOff ltLo
   Reg_CtDlyOn ltLo
   Reg_CtOff  ltLo
   Reg_CtOn   ltLo
   Reg_CtValHi 100
   Reg_CtValLo brightness
   Reg_MultiExec on
   Reg_OffDly 0
   Reg_OffTime unused
   Reg_OffTimeMode absolut
   Reg_OnDly  0
   Reg_OnTime ontime
   Reg_OnTimeMode absolut
   Reg_SwJtDlyOff dlyOn
   Reg_SwJtDlyOn on
   Reg_SwJtOff dlyOn
   Reg_SwJtOn on
   room       CUL_HM
   tpl_description Switch: on for time if MDIR-brightness below level
   tpl_params ontime brightness

Jetzt habe ich aber festgestellt dass der Helligkeitswert beim Schalter_Bad zu gering gewählt ist und ich beim (längeren) duschen hin und wieder mal im Dunklen stehe :(
Bin nach der obigen Anleitung vorgegangen
Edit ht motionOnSw
set importReg Schalter_Bad
set attr Reg_CtValHi 180
save
motionOnSw already defned - please choose a different name  :(

Was mache ich falsch?
Gruß
Arthur

arthur_dent_2015