Hallo,
ich komme nicht so recht mit den templates zu gange. aktuell stelle ich nach dem peeren von zb zwischenstecker und remote immer von hand ein das links on (nur on9) und rechts nur off ist:
set wz_sw_ledtv regSet shSwJtDlyOff no wz_rt_Btn_01
set wz_sw_ledtv regSet shSwJtDlyOn no wz_rt_Btn_01
set wz_sw_ledtv regSet shSwJtOff on wz_rt_Btn_01
set wz_sw_ledtv regSet shSwJtOn no wz_rt_Btn_01
set wz_sw_ledtv regSet shSwJtDlyOff no wz_rt_Btn_02
set wz_sw_ledtv regSet shSwJtDlyOn no wz_rt_Btn_02
set wz_sw_ledtv regSet shSwJtOff no wz_rt_Btn_02
set wz_sw_ledtv regSet shSwJtOn off wz_rt_Btn_02
das sidn jed emenge befehle und bei 4 tastenpaaren einer fb ist das extrem viel. nun habe ich das wiki gelesen und versuch gerade (angelent an das vordefineirte template SwOff) diese einstellungen in ein template zu schreiben per
set hminfo templateDef template_shSw shSwJtDlyOff:no shSwJtDlyOn:no shSwJtOff:on shSwJtOn:no
nun sieht das ergebnis nicht i.O. aus
list des templates:
Zitattemplate_shSw params:shSwJtDlyOff no Info:shSwJtDlyOn:no
shSwJtOff :on
shSwJtOn :no
so sollte es aussehen
Zitattemplate_shSw params: Info:
shSwJtDlyOn :no
shSwJtDlyOff :no
shSwJtOff :on
shSwJtOn :no
leider löscht set templateDel die templist nicht wieder so das ich (versuchen kann) sie korekt unter dem selben namen neu anlegen kann
Hi,
ich behaupte mal templateDel ist nicht zum löschen der Definition sondern der Zuweisung
ZitattemplateDel
eine zuweisung des Templates kann gelöscht werden
set hm templateDel <entity> <template>
Wenn ich in meinem fast leeren System mit templateDef ein myTemplate anlege und anschließend mit
set templateDel myTemplate
versuche zu löschen - beendet sich FHEM :o
Ich habe es:
ZitattemplateDef <name> <param> <desc> <reg1:val1> [<reg2:val2>] ...
define a template.
param gives the names of parameter necesary to execute the template. It is template dependant and may be onTime or brightnesslevel. A list of parameter needs to be separated with colon
param1:param2:param3
if del is given as parameter the template is removed
also
set hm templateDef myTemplate del
Gruß Otto
Zitat von: Otto123 am 13 Februar 2016, 22:46:33
Wenn ich in meinem fast leeren System ... versuche zu löschen - beendet sich FHEM :o
bei mir passiert einfach nichts ???
danke für den hinwies, habs wohl überlesen aber es funktionierte und ich habe mittlerweile das templat so wieich es brauche. nun muss ich sehen wie ich es zu weisen kann ;)
am aktor ein
set hminfo templateSet wz_sw_ledTube template_shSw wz_rt_Btn_03:short
brint
ZitatDevice doesn't support shshSwJtOn - template template_shSw not applicable
wäre die template definition eigentlich auch ehr so richtiger für das was ich will?
set hminfo templateDef template_shSw Info: Switch: ActionType:jmpToTarget shSwJtDlyOff:no shSwJtDlyOn:no shSwJtOff:on shSwJtOn:no
Moin,
kann es erstmal sein, dass ein simpler Schreibfehler drin ist? -->
shshSwJtOn
Das andere schau ich mir an, brauche ich etwas Ruhe. Ich habe das mit den Templates auch erst vor kurzem "entdeckt und gelernt" selbst welche verfasst habe ich noch nicht.
Zitat aus dem Wiki:
ZitatDie Definition von Templates ist für erfahrene User gedacht, im Gegensatz zur Nutzung eines Templates mit set - das ist für Anfänger gedacht.
Mal schauen ob wir das hinbekommen 8)
Also ich schlage es so vor:
set hminfo templateDef template_shSw 0 "MeineInfo" shSwJtDlyOff:no shSwJtDlyOn:no shSwJtOff:on shSwJtOn:no
Abgeleitet aus dem Beispiel aus dem Wiki:
Zitatset hm templateDef <templateName> <param1[:<param2>...] <description> <reg1>:<val1> [<reg2>:<val2>] ...
set hm templateDef t1 0 "TP1" OnTime:10 OffTime:20 OnDly:0
Gruß Otto
richtiger tip otto, danke!
den schreibfehler habe ich aber nicht reingemacht das setzt hminfo offenbar wenn man dem short mitgibt
so wird aus dem temlate shSwJtOn ---> shshSwJtOn
der hinweis wäre im wiki sicher nicht schlecht ;) für leute wie mich die in den beispielen nicht sehen das weder sh noch ln vor den optionen steht
ich habe darauf das template geäbder und bei allen option sh weggelassen
set hminfo templateDef tmpl_SwOnOnly 0 "Template für nur an" ActionType:jmpToTarget SwJtDlyOff:no SwJtDlyOn:no SwJtOff:on SwJtOn:no
set hminfo templateDef tmpl_SwOffOnly 0 "Template für nur aus" ActionType:jmpToTarget SwJtDlyOff:no SwJtDlyOn:no SwJtOff:no SwJtOn:off
und konnte dann die jmplist übertragen
set hminfo templateSet wz_sw_ledTube tmpl_SwOnOnly wz_rt_Btn_03:short
set hminfo templateSet wz_sw_ledtv tmpl_SwOnOnly wz_rt_Btn_01:short
set hminfo templateSet wz_sw_ledTube tmpl_SwOffOnly wz_rt_Btn_04:short
set hminfo templateSet wz_sw_ledtv tmpl_SwOffOnly wz_rt_Btn_02:short
Ok das mit dem Wiki übernehme ich mal, ich habe da eh zwei drei kleine Schreibfehler gefunden und würde mal Dein Beispiel als Step by Step dort mit reinschreiben.
Um nochmal "verbal" zu verstehen was Du damit erreichst:
Originalbelegung links = off , rechts = on tauschen so dass: links = on und rechts = off ist.
Aber was genau bewirkt dass SwJtDlyOff:no SwJtDlyOn:no
dass kein long erkannt wird?
hi otto,
long wird schon erkannt, sonst nutz das longregister ja nichts.
SwJtDlyOn:no => bei einem long im zustand DlyOn wird nicht gesprungen. der timer läuft also normal weiter.
ZitatOriginalbelegung links = off , rechts = on tauschen so dass: links = on und rechts = off ist.
ja genau.
peered man dual ist der erste button des dual peering off und der 2. on. ich will es genau anderst rum. 1. button on, 2. off.
peered man single ist der erste klick der taste on, der 2. off. das wollte ich auch nicht
ZitatAber was genau bewirkt dass
Code: [Auswählen]
SwJtDlyOff:no SwJtDlyOn:no
dass kein long erkannt wird?
nein. die optionen haben erstmal nichts mit long oder short zu tun die in dem template stehen
für ON
Zitat
SwJtDlyOff:no --> keine aktion
SwJtDlyOn:no --> keine aktion
SwJtOff:on --> bewirkt das wenn aktor off dann beim klick auf on springen
SwJtOn:no --> bewirkt das wenn aktor on beim klick nichts passiert
für OFF
ZitatSwJtDlyOff:no --> keine aktion
SwJtDlyOn:no --> keine aktion
SwJtOff:no --> bewirkt das wenn aktor on beim klick nichts passiert
SwJtOn:off --> bewirkt das wenn aktor on dann beim klick auf off springen
führ man jetzt ein
set hminfo templateSet <device> tmpl_SwOnOnly <peer>:short
aus wird diese konfig in der jmplist (einsehbar mit dem befehl
get regTable
) für die einträge aus der dem template mit vorangestelltem
sh gesetzt
die long-optionen werden dabei nicht verändert und bleiben default (wie beim standard peering gesetzt)
nimst du
set hminfo templateSet <device> tmpl_SwOnOnly <peer>:long
aus wird diese konfig in der jmplist (einsehbar mit dem befehl
get regTable
) für die einträge aus der dem template mit vorangestelltem
lg gesetzt.
die short-optionen werden dabei nicht verändert und bleiben default (wie beim standard peering gesetzt)
nimmst du <peer>:both wird es für lg und sh gesetzt (dann hätten short und long die selbe auswirkung)
so ist nach dem probieren heute meine erkenntnis.
Martin oder frank sollte evtl noch mal drüber schauen.... frank hat wir damals geholfen jmptotaget besser zu verstehen
anbei mal die regTable und was verändert wurde. rot ist die änderung durch das template, blau wie die werte vorher in etwa aussahen
btn1 schaltet nur on, wenn off ist und short kommt. (rot)
btn1 schaltet immer off, wenn long kommt.
btn2 schaltet nur off, wenn on ist und short kommt. (rot)
btn2 schaltet immer on, wenn long kommt.
Die Sache mit dem template löschen habe ich im Wiki schon eingefügt. Ich würde den hminfo Artikel nicht weiter aufblasen und ein HowTo extra machen, was meint ihr?
Wenn ich jetzt ein kleines HowTo schreibe noch die konkrete Frage:
Wie speicher ich meine eigenen Templates? So richtig?
set hm archConfig
oder gibt es andere Methoden?
Und wenn ich eigene gemacht habe, muss? ich dann nach Neustart neuladen.
set hm loadConfig
hätte auf http://fhem.de/commandref.html#CUL_HMsaveConfig saveConfig getippt denn so wie es sich liest mach archConfig auch nur ein saveConfig
ZitatarchConfig [filter] [<file>]
performs saveConfig for entities that appeare to have achanged configuration. It is more conservative that saveConfig since incomplete sets are not stored.
Option -a force an archieve for all devices that have a complete set of data
ok schau ich mir an.
Ich habe das HowTo als erste Version erstellt, sagt mal was dazu. Ich will es noch etwas abrunden 8)
http://www.fhemwiki.de/wiki/HmInfo_Templates_erstellen
liest sich schlüssig.
saveconfig sepiechert die templates mit, sowie die templateSet's
Zitat
templateDef templateStart Block stored:2016-02-14 16:00:15*******************
templateDef =>BlStopDnLg=>0=>Blind: stop drive on any key - for long drive down=>BlJtDlyOn:dlyOff BlJtRefOn:on ActionType:jmpToTarget BlJtRefOff:rampOff BlJtRampOff:rampOff BlJtOn:dlyOff BlJtRampOn:on BlJtDlyOff:refOff BlJtOff:dlyOff
templateDef =>BlStopDnSh=>0=>Blind: stop drive on any key - for short drive down=>BlJtOff:dlyOff BlJtDlyOff:refOff BlJtRampOn:on BlJtOn:dlyOff BlJtRampOff:off BlJtRefOff:rampOff ActionType:jmpToTarget BlJtRefOn:on BlJtDlyOn:dlyOff
templateDef =>BlStopUpLg=>0=>Blind: stop drive on any key - for long drive up=>BlJtDlyOff:dlyOn BlJtRampOn:rampOn BlJtOff:dlyOn BlJtRefOn:rampOn BlJtDlyOn:refOn BlJtRampOff:off BlJtOn:dlyOn BlJtRefOff:off ActionType:jmpToTarget
templateDef =>BlStopUpSh=>0=>Blind: stop drive on=>BlJtDlyOn:refOn BlJtRefOn:rampOn ActionType:jmpToTarget BlJtRefOff:off BlJtRampOff:off BlJtOn:dlyOn BlJtRampOn:on BlJtDlyOff:dlyOn BlJtOff:dlyOn
templateDef =>DimOff=>0=>Dimmer: off if trigger=>DimJtDlyOn:dlyOff OnTime:unused DimJtRampOff:dlyOff DimJtOff:no DimJtRampOn:dlyOff ActionTypeDim:jmpToTarget DimJtOn:dlyOff DimJtDlyOff:off OffTime:unused
templateDef =>DimOn=>0=>Dimmer: on if trigger=>DimJtDlyOn:on DimJtRampOff:dlyOn OnTime:unused ActionTypeDim:jmpToTarget DimJtRampOn:dlyOn DimJtOff:dlyOn DimJtDlyOff:dlyOn OffTime:unused DimJtOn:no
templateDef =>SwCondAbove=>condition=>Switch: execute only if condition level is above limit=>CtOff:geLo CtValLo:p0 CtDlyOff:geLo CtOn:geLo CtDlyOn:geLo
templateDef =>SwCondBelow=>condition=>Switch: execute only if condition level is below limit=>CtOn:ltLo CtDlyOn:ltLo CtDlyOff:ltLo CtOff:ltLo CtValLo:p0
templateDef =>SwOff=>0=>Switch: off if trigger=>OffTime:unused OnTime:unused SwJtOff:no ActionType:jmpToTarget SwJtDlyOff:off SwJtOn:dlyOff SwJtDlyOn:dlyOff
templateDef =>SwOn=>0=>Switch: on if trigger=>OffTime:unused OnTime:unused SwJtDlyOff:dlyOn ActionType:jmpToTarget SwJtOn:no SwJtDlyOn:on SwJtOff:dlyOn
templateDef =>SwOnCond=>level:cond=>switch: execute only if condition [geLo|ltLo] level is below limit=>CtOff:p1 CtValLo:p0 CtOn:p1 CtDlyOn:p1 CtDlyOff:p1
templateDef =>SwToggle=>0=>Switch: toggle on trigger=>SwJtOn:dlyOff SwJtDlyOn:on ActionType:jmpToTarget SwJtDlyOff:off SwJtOff:dlyOn OnTime:unused OffTime:unused
templateDef =>autoOff=>time=>staircase - auto off after -time-, extend time with each trigger=>OffTime:unused OnTime:p0 ActionType:jmpToTarget SwJtDlyOff:dlyOn SwJtOn:on SwJtDlyOn:no SwJtOff:dlyOn
templateDef =>motionOnDim=>ontime:brightness=>Dimmer: on for time if MDIR-brightness below level=>CtOn:ltLo CtOff:ltLo OffTime:unused DimJtDlyOn:rampOn CtDlyOn:ltLo DimJtOff:dlyOn CtRampOff:ltLo DimJtRampOn:on ActionTypeDim:jmpToTarget DimJtOn:on DimJtDlyOff:dlyOn CtDlyOff:ltLo OnTime:p0 CtValLo:p1 CtRampOn:ltLo DimJtRampOff:dlyOn
templateDef =>motionOnSw=>ontime:brightness=>Switch: on for time if MDIR-brightness below level=>OnTime:p0 CtValLo:p1 ActionType:jmpToTarget CtDlyOff:ltLo CtDlyOn:ltLo SwJtOn:on OffTime:unused CtOff:ltLo SwJtDlyOff:dlyOn CtOn:ltLo SwJtDlyOn:on SwJtOff:dlyOn
templateDef =>tmpl_SwOffOnly=>0=>Template für nur aus=>SwJtDlyOn:no SwJtOn:off ActionType:jmpToTarget SwJtDlyOff:no SwJtOff:no
templateDef =>tmpl_SwOnOnly=>0=>Template für nur an=>ActionType:jmpToTarget SwJtDlyOff:no SwJtDlyOn:no SwJtOn:no SwJtOff:on
templateDef =>wmClose=>speed=>winmatic: close window=>WinJtRampOn:on RampOffSp:p0 WinJtRampOff:rampOnFast WinJtOff:rampOff WinJtOn:rampOff
templateDef =>wmClosed=>0=>winmatic: lock window=>OffLevelKm:0
templateDef =>wmLock=>0=>winmatic: lock window=>OffLevelKm:127.5
templateDef =>wmOpen=>speed=>winmatic: open window=>WinJtRampOn:on WinJtRampOff:rampOnFast WinJtOn:rampOn WinJtOff:rampOn RampOnSp:p0
======= finished templates ===
templateSet =>wz_sw_ledTube=>start
templateSet =>wz_sw_ledTube=>wz_rt_Btn_03:short>tmpl_SwOnOnly=>
templateSet =>wz_sw_ledTube=>wz_rt_Btn_04:short>tmpl_SwOffOnly=>
templateSet =>wz_sw_ledtv=>start
templateSet =>wz_sw_ledtv=>wz_rt_Btn_01:short>tmpl_SwOnOnly=>
templateSet =>wz_sw_ledtv=>wz_rt_Btn_02:short>tmpl_SwOffOnly=>
======= finished templates ===
Ich stehe irgendwie auf dem Schlauch.
Wie genau hast Du saveConfig angestoßen?
Ok jetzt geht was set hm saveConfig config.txt
schreibt einfach eine Datei in /opt/fhem/config.txt
Nur für ein Device Filter bin ich wieder zu blöd.
Und dass er templates sichert sehe ich auch nicht.
ich habe lediglich ein
set hminfo saveConfig <meinedatei> gemacht. hminfo hat dann alles reingeschrieben inkl template
ich schlage archconfig vor. fast gleich. optionen möglich.
loadconfig nicht vergessen, nach reboot. fhemUser.cfg dazu anlegen. ein reload wird aus normalen .cfg gelöscht (beim save).
ach ja:
attr hm autoArchive 1
halte ich für unabdingbar. dann spart man das archive manuell. dauert aber ein wenig.... da es erst einmal sammelt. wegen der Performance.
auch zu beachten:
attr hm configDir setup
attr hm configFilename regConfig.cfg
Hallo Martin,
danke für die Info, das baue ich noch ein, in das howto.
Mir ist eine Kleinigkeit aufgefallen: in der deutschen commandref zu hminfo
ZitatDeteil
im Abschnitt get configsave ...
Falls Du dort vorbeikommst ;)
Gruß Otto
Zitat von: martinp876 am 14 Februar 2016, 20:33:30
loadconfig nicht vergessen, nach reboot. fhemUser.cfg dazu anlegen. ein reload wird aus normalen .cfg gelöscht (beim save).
das scheint der grund warum ich meine templates heute nicht finden konnte. ;)
unschön wenn man die config nach einem reboot ändert und tage später merkt das was fehlt. zurück will man dann auch nicht und muss zb die templates neu anlegen uns nochmal saven/arch.
warum wird das load eigentlich icht autom. durchgeführt, gerade wenn zb autoarchive 1 und autoupdate gestetzt ist macht es doch sinn nach einem reboot die config selbstständig zu laden damit sie ggf nicht überschrieben wird mit altem zeug (weil zb kein load stattgefundne hat)? kann das passieren?
Es kann nicht an diese Parameter gehängt werden. Es koennte ein weiterer Parameter werden.
Das sichernist eine Sache einspielen eine andere.
Man kann (sollte) die Register bis und da sichern. Wie alles. Einspielen kann man auch selektiv.
Man kann ggf fehlende Register über autoreadreg aus den devices lesen lassen. Daher kann man wie empfohlen ein loadConfig im fhemuser.cfg ( mein Name für ein postinitconfig ) einbaut ist alles wie gewuenscht