Frage zu templateDef

Begonnen von chris1284, 13 Februar 2016, 22:24:23

Vorheriges Thema - Nächstes Thema

chris1284

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

Otto123

#1
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

chris1284

#2
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

Otto123

#3
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

chris1284

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

Otto123

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?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

frank

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.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

chris1284

#7
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

frank

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.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Otto123

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 archConfigoder gibt es andere Methoden?

Und wenn ich eigene gemacht habe, muss? ich dann nach Neustart neuladen.
set hm loadConfig

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

chris1284

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

chris1284

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 ===


Otto123

#13
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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

chris1284

ich habe lediglich ein

set hminfo saveConfig <meinedatei> gemacht. hminfo hat dann alles reingeschrieben inkl template