Licht aus, an und dann dimmen

Begonnen von TWART016, 31 März 2020, 00:37:43

Vorheriges Thema - Nächstes Thema

TWART016

Hallo,

ich habe Homematic Unterputzdimmer.

Wenn ich nun das Licht zwischen 20 und 02 Uhr ausschalte und innerhalb von 3 Sekunden  wieder einschalte, soll es gedimmt werden. Dimmen funktioniert, nur weiß ich nicht wie die Logik dahinter aussehen muss. Ich verstehe die Readings nicht.

Um 00:25:29 habe ich das Gerät eingeschalten.
Event-Monitor:
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 set_on
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 trigLast: fhem:02
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 deviceMsg: on (to Homematic_LAN_Gateway)
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 dim: stop:on
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 level: 100
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 overheat: off
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 overload: off
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 pct: 100
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 reduced: off
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 chn:on phys:0
2020-03-31 00:25:29 CUL_HM Licht_Wohnzimmer_2 timedOn: off
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 deviceMsg: on (to Homematic_LAN_Gateway)
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 dim: stop:on
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 level: 100
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 overheat: off
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 overload: off
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 pct: 100
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 phyLevel: 100
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 reduced: off
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 on
2020-03-31 00:25:36 CUL_HM Licht_Wohnzimmer_2 timedOn: off


Warum wird 7 Sekunden nachdem das Licht eingeschalten wurde, nochmal fast die gleichen Events generiert?

Readings:
2020-03-31 00:25:29   CommandAccepted yes
2017-12-30 17:48:57   R-logicCombination or
2017-12-30 17:48:57   R-powerUpAction off
2017-12-30 17:49:08   RegL_01.        30:06 32:50 33:64 34:4B 35:50 56:00 57:24 59:01 00:00
2020-03-31 00:25:36   deviceMsg       on (to Homematic_LAN_Gateway)
2020-03-31 00:25:36   dim             stop:on
2020-03-31 00:25:36   level           100
2018-01-15 21:02:19   levelMissed     desired:0
2020-03-31 00:25:36   overheat        off
2020-03-31 00:25:36   overload        off
2020-03-31 00:25:36   pct             100
2020-03-31 00:25:36   phyLevel        100
2020-03-31 00:25:36   recentStateType info
2020-03-31 00:25:36   reduced         off
2020-03-31 00:25:36   state           on
2020-03-31 00:25:36   timedOn         off
2020-03-31 00:25:29   trigLast        fhem:02


Daher meine Frage
1) Auf welche Readings muss ich triggern
2) Mit welchem Modul ist es am einfachsten innerhalb von 3 Sekunden ein Event zu triggern?


Gruß
TWART016

Otto123

#1
Moin,

ich behaupte mal: mit einem HM Dimmer "in der Wand" wird das nichts.

Dein Beispiel ist mit FHEM oder mit dem Taster vor Ort erzeugt?

Dein Beispiel zeigt: set_on ist eine Art Zwischenschritt - der Aktor bekommt den Befehl gesendet (bei fehlender Quittung würde der wiederholt) und irgendwann (bei Dir nach 7 sec) kommt die Quittung vom Aktor.
Die Zeit ist bei HM aus gutem Grund variabel, damit die Chance besteht, das der Empfänger (die Zentrale) bei heftigem Funkverkehr auch alles mit bekommt.

Eine Folge im Abstand von weinigen (3) sekunden halte ich für kaum realisierbar.

Das funktioniert nur, wenn Du Aktor (Dimmer) und Taster getrennt hast. D.h. Du reagierst auf eine Folge am Taster und wartest nicht auf die Reaktion des Aktors.

Abhängig vom Aktor gibt es da ev. alternative Firmware, die Taster und Aktor trennen kann.

Tipp: mit attr <device> event-on-change-reading .*  kannst Du die Anzahl an Events drastisch reduzieren. Für alle Deine Geräte mit einem Befehl:
attr TYPE=CUL_HM event-on-change-reading .*

Vorher besser schauen ob schon individuell gesetzt:
list TYPE=CUL_HM event-on-change-reading

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

Pfriemler

Ich vermute mal, es ist NICHT mit den aktoreigenen Tasten erzeugt, diese senden nämlich keinen set_-Zwischenstatus an die Zentrale, wenn der Schaltvorgang von einem Peer ausgelöst wurde. set_ gibt es nmE nur wenn FHEM sendet. Allerdings senden Dimmer einen ersten Zwischenstatus, wenn sie eine Rampe fahren.

Aber auch so sehe ich keine Möglichkeit für eine vernünftige Reaktion. Reaktionen des Aktors auf gepeerte Geräte sind immer ohne Zeitbezug - den kann nur FHEM von außen liefern, müsste also in die Kommunikation zwischen Taster und Aktor korrigierend eingreifen.
Alternativ ist ein Betrieb ohne Direktkopplung denkbar - mit einer Zeitabfrage nach dem Empfangen des Tasterevents könnte man zumindest zeitabhängig reagieren und auch das Alter des letzten state-readings des Aktors auswerten (um auf die 3s zu checken), damit verliert man aber wieder deren Vorteile wie Funktionssicherheit bei FHEM-Ausfall und deutlich beschleunigte Reaktion.

Ich verstehe auch nicht ganz, welchen Sinn es haben soll, durch diese Bedienkombination ein Dimmen zu erzeugen. Das Verhalten kennt man von dimmfähigen Leuchtmitteln für Schalterbetrieb, die man durch kurzes Ein- und Ausschalten zwischen verschiedenen Dimmstufen umschalten kann (ich finde die Dinger schon recht praktisch, weil man ohne Dimmer auskommt und sogar 0 Standby hat). Aber warum sollte man das simulieren wollen?

Vielleicht kann uns der TE erklären, was genau er eigentlich erreichen möchte, und wir finden ein Ersatzbedienszenario, was HM bewältigen kann. Die genauen Bezeichnungen der beteiligten Geräte können dabei nüttzlich sein...


"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

TWART016

Tatsächlich wurde das von FHEM ausgelöst.

Wenn ich über den Dimmer HM-LC-DIM1TPBU-FM schalte sieht es besser aus.

2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 deviceMsg: on (to Homematic_LAN_Gateway)
2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 dim: stop:on
2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 level: 100
2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 overheat: off
2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 overload: off
2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 pct: 100
2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 phyLevel: 100
2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 reduced: off
2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 on
2020-03-31 12:17:42 CUL_HM Licht_Wohnzimmer_2 timedOn: off
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 deviceMsg: off (to Homematic_LAN_Gateway)
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 dim: stop:off
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 level: 0
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 overheat: off
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 overload: off
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 pct: 0
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 phyLevel: 0
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 reduced: off
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 off
2020-03-31 12:18:07 CUL_HM Licht_Wohnzimmer_2 timedOn: off


Gibt es da eine einfachere Methode wie über Userreading stateOn und stateOff die Zeit zu berechnen?

Ich möchte wenn ich abends aus und gleich wieder an mache, auf 5 pct gedimmt wird. Manuell über die Schaltwippen das einzustellen ist quasi unmöglich.

frank

#4
ich denke, man könnte für short zb eine kontinuierliche 3'er sequenz programmieren:
... => on100 => on5 => off => on100 => ...

der zustand on5 würde dann zb im dlyoff timer realisiert werden mit einer sehr grossen verweildauer.

falls die sequenz nicht grundsätzlich gewünscht wäre, könnte man über zb ein at den dimmer zu gewünschten zeiten umprogrammieren.

edit:
da muss ich noch mal genauer schauen.
1. hast du ja eventuell für einen btn short => off und den anderen short => on.
2. gibt es keinen expliziten level im dlyoff timer.

aber irgendeine short sequenz sollte man bei den vielen möglichkeiten irgendwie hinbekommen.
virtuelle channel gibt es ja sogar auch noch.

vielleicht zeigst du mal deine aktuellen register mit "get regTable". eventuell zuerst die "internen taster" sichtbar machen.
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

#5
Zitat von: TWART016 am 31 März 2020, 12:22:38
Ich möchte wenn ich abends aus und gleich wieder an mache, auf 5 pct gedimmt wird. Manuell über die Schaltwippen das einzustellen ist quasi unmöglich.
Ich habe meine Dimmer so eingestellt, dass er bei 5 pct "aufhört". Das heisst einfach ein langer Tastendruck und er ist maximal gedimmt. Wäre das eine Alternative?
Bei mir so (nur ein Teil der Registerprogrammierung):
set LichtWzR_Dim regSet prep lgOffLevel 5 self01
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

TWART016

Zitat von: frank am 31 März 2020, 12:54:07
ich denke, man könnte für short zb eine kontinuierliche 3'er sequenz programmieren:
... => on100 => on5 => off => on100 => ...

der zustand on5 würde dann zb im dlyoff timer realisiert werden mit einer sehr grossen verweildauer.

Sequenz hört sich schon gut an.
defmod sequenceTEST sequence Licht_Wohnzimmer_4:on 10 Licht_Wohnzimmer_4:off

Das erstellt ein Event:
2020-03-31 13:58:01 Global global MODIFIED sequenceTEST


Ein trigger greift jedoch nicht
defmod sequenceTESTon notify sequenceTEST:trigger set Licht_Wohnzimmer_4 pct 5

Nur das erschient im Event Monitor
2020-03-31 14:01:46 notify sequenceTESTon active


btn habe ich nicht. Wie mache ich das und was ist es?

Es gibt nur regList:
list:         register | range              | peer     | description
   1: fuseDelay        | 0.00 to 2.55s       |          | fuse delay
   1: logicCombination |     literal        |          |  options:nand,mul,and,minusinv,andinv,invPlus,orinv,inactive,minus,plusinv,nor,or,invMinus,mulinv,invMul,plus,xor
   1: ovrTempLvl       |  30 to 100C        |          | overtemperatur level
   1: powerUpAction    |     literal        |          | on: simulate short press of peer self01 (self02 if dual buttons) after power up options:on,off
   1: redLvl           | 0.0 to 100%        |          | reduced power level
   1: redTempLvl       |  30 to 100C        |          | reduced temperatur recover
   1: sign             |     literal        |          | signature (AES) options:off,on
   1: statusInfoMinDly | 0.0 to 15.5s       |          | status message min delay special:unused
   1: statusInfoRandom |   0 to 7s          |          | status message random delay
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit
   3: lgActionTypeDim  |     literal        | required |  options:downDim,upDim,jmpToTarget,toggelDim,toggleToCntInv,toggelDimToCntInv,off,toggelDimToCnt,toggleToCnt
   3: lgCtDlyOff       |     literal        | required | Jmp on condition from delayOff options:outside,geHi,ltHi,between,ltLo,geLo
   3: lgCtDlyOn        |     literal        | required | Jmp on condition from delayOn options:ltLo,geLo,outside,geHi,ltHi,between
   3: lgCtOff          |     literal        | required | Jmp on condition from off options:between,ltHi,geHi,outside,geLo,ltLo
   3: lgCtOn           |     literal        | required | Jmp on condition from on options:ltLo,geLo,geHi,outside,between,ltHi
   3: lgCtRampOff      |     literal        | required | Jmp on condition from rampOff options:geLo,ltLo,ltHi,between,outside,geHi
   3: lgCtRampOn       |     literal        | required | Jmp on condition from rampOn options:outside,geHi,between,ltHi,ltLo,geLo
   3: lgCtValHi        |   0 to 255         | required | Condition value high for CT table
   3: lgCtValLo        |   0 to 255         | required | Condition value low for CT table
   3: lgDimElsActionType |     literal        | required |  options:toggelDimToCnt,toggleToCnt,toggelDim,toggleToCntInv,toggelDimToCntInv,off,upDim,jmpToTarget,downDim
   3: lgDimElsJtDlyOff |     literal        | required | else Jump from delayOff options:off,rampOn,dlyOff,on,rampOff,dlyOn,no
   3: lgDimElsJtDlyOn  |     literal        | required | else Jump from delayOn options:rampOff,no,dlyOn,off,rampOn,on,dlyOff
   3: lgDimElsJtOff    |     literal        | required | else Jump from off options:rampOff,dlyOn,no,rampOn,off,dlyOff,on
   3: lgDimElsJtOn     |     literal        | required | else Jump from on options:rampOff,dlyOn,no,rampOn,off,on,dlyOff
   3: lgDimElsJtRampOff |     literal        | required | else Jump from rampOff options:dlyOff,on,rampOn,off,dlyOn,no,rampOff
   3: lgDimElsJtRampOn |     literal        | required | else Jump from rampOn options:dlyOn,no,rampOff,on,dlyOff,off,rampOn
   3: lgDimElsOffTimeMd |     literal        | required |  options:minimal,absolut
   3: lgDimElsOnTimeMd |     literal        | required |  options:absolut,minimal
   3: lgDimJtDlyOff    |     literal        | required | Jump from delayOff options:rampOff,dlyOn,no,off,rampOn,dlyOff,on
   3: lgDimJtDlyOn     |     literal        | required | Jump from delayOn options:off,rampOn,dlyOff,on,rampOff,no,dlyOn
   3: lgDimJtOff       |     literal        | required | Jump from off options:dlyOff,on,rampOn,off,no,dlyOn,rampOff
   3: lgDimJtOn        |     literal        | required | Jump from on options:off,rampOn,on,dlyOff,rampOff,dlyOn,no
   3: lgDimJtRampOff   |     literal        | required | Jump from rampOff options:off,rampOn,on,dlyOff,rampOff,no,dlyOn
   3: lgDimJtRampOn    |     literal        | required | Jump from rampOn options:off,rampOn,on,dlyOff,rampOff,no,dlyOn
   3: lgDimMaxLvl      | 0.0 to 100%        | required | dimMaxLevel
   3: lgDimMinLvl      | 0.0 to 100%        | required | dimMinLevel
   3: lgDimStep        | 0.0 to 100%        | required | dimStep
   3: lgMultiExec      |     literal        | required | execution per repeat message options:off,on
   3: lgOffDly         | 0.0 to 111600s     | required | off delay
   3: lgOffDlyBlink    |     literal        | required | blink when in off delay options:on,off
   3: lgOffDlyNewTime  | 0.1 to 25.6s       | required | off delay blink time for low
   3: lgOffDlyOldTime  | 0.1 to 25.6s       | required | off delay blink time for high
   3: lgOffDlyStep     | 0.1 to 25.6%       | required | off delay step if blink is active
   3: lgOffLevel       | 0.0 to 100%        | required | PowerLevel off
   3: lgOffTime        | 0.0 to 111600s     | required | off time special:unused
   3: lgOffTimeMode    |     literal        | required | off time meant absolut or at least options:minimal,absolut
   3: lgOnDly          | 0.0 to 111600s     | required | on delay
   3: lgOnDlyMode      |     literal        | required |  options:setToOff,NoChange
   3: lgOnLevel        | 0.0 to 100.5%      | required | PowerLevel on special:oldLevel
   3: lgOnLvlPrio      |     literal        | required |  options:low,high
   3: lgOnMinLevel     | 0.0 to 100%        | required | minimum PowerLevel
   3: lgOnTime         | 0.0 to 111600s     | required | on time special:unused
   3: lgOnTimeMode     |     literal        | required | on time meant absolut or at least options:minimal,absolut
   3: lgRampOffTime    | 0.0 to 111600s     | required | rampOffTime
   3: lgRampOnTime     | 0.0 to 111600s     | required | rampOnTime
   3: lgRampSstep      | 0.0 to 100%        | required | rampStartStep
   3: shActionTypeDim  |     literal        | required |  options:downDim,upDim,jmpToTarget,toggelDim,toggleToCntInv,toggelDimToCntInv,off,toggelDimToCnt,toggleToCnt
   3: shCtDlyOff       |     literal        | required | Jmp on condition from delayOff options:outside,geHi,ltHi,between,ltLo,geLo
   3: shCtDlyOn        |     literal        | required | Jmp on condition from delayOn options:ltLo,geLo,outside,geHi,ltHi,between
   3: shCtOff          |     literal        | required | Jmp on condition from off options:between,ltHi,geHi,outside,geLo,ltLo
   3: shCtOn           |     literal        | required | Jmp on condition from on options:ltLo,geLo,geHi,outside,between,ltHi
   3: shCtRampOff      |     literal        | required | Jmp on condition from rampOff options:geLo,ltLo,ltHi,between,outside,geHi
   3: shCtRampOn       |     literal        | required | Jmp on condition from rampOn options:outside,geHi,between,ltHi,ltLo,geLo
   3: shCtValHi        |   0 to 255         | required | Condition value high for CT table
   3: shCtValLo        |   0 to 255         | required | Condition value low for CT table
   3: shDimElsActionType |     literal        | required |  options:toggelDimToCnt,toggleToCnt,toggelDim,toggleToCntInv,toggelDimToCntInv,off,upDim,jmpToTarget,downDim
   3: shDimElsJtDlyOff |     literal        | required | else Jump from delayOff options:off,rampOn,dlyOff,on,rampOff,dlyOn,no
   3: shDimElsJtDlyOn  |     literal        | required | else Jump from delayOn options:rampOff,no,dlyOn,off,rampOn,on,dlyOff
   3: shDimElsJtOff    |     literal        | required | else Jump from off options:rampOff,dlyOn,no,rampOn,off,dlyOff,on
   3: shDimElsJtOn     |     literal        | required | else Jump from on options:rampOff,dlyOn,no,rampOn,off,on,dlyOff
   3: shDimElsJtRampOff |     literal        | required | else Jump from rampOff options:dlyOff,on,rampOn,off,dlyOn,no,rampOff
   3: shDimElsJtRampOn |     literal        | required | else Jump from rampOn options:dlyOn,no,rampOff,on,dlyOff,off,rampOn
   3: shDimElsOffTimeMd |     literal        | required |  options:minimal,absolut
   3: shDimElsOnTimeMd |     literal        | required |  options:absolut,minimal
   3: shDimJtDlyOff    |     literal        | required | Jump from delayOff options:rampOff,dlyOn,no,off,rampOn,dlyOff,on
   3: shDimJtDlyOn     |     literal        | required | Jump from delayOn options:off,rampOn,dlyOff,on,rampOff,no,dlyOn
   3: shDimJtOff       |     literal        | required | Jump from off options:dlyOff,on,rampOn,off,no,dlyOn,rampOff
   3: shDimJtOn        |     literal        | required | Jump from on options:off,rampOn,on,dlyOff,rampOff,dlyOn,no
   3: shDimJtRampOff   |     literal        | required | Jump from rampOff options:off,rampOn,on,dlyOff,rampOff,no,dlyOn
   3: shDimJtRampOn    |     literal        | required | Jump from rampOn options:off,rampOn,on,dlyOff,rampOff,no,dlyOn
   3: shDimMaxLvl      | 0.0 to 100%        | required | dimMaxLevel
   3: shDimMinLvl      | 0.0 to 100%        | required | dimMinLevel
   3: shDimStep        | 0.0 to 100%        | required | dimStep
   3: shMultiExec      |     literal        | required | reg unused, placeholder only options:on,off
   3: shOffDly         | 0.0 to 111600s     | required | off delay
   3: shOffDlyBlink    |     literal        | required | blink when in off delay options:on,off
   3: shOffDlyNewTime  | 0.1 to 25.6s       | required | off delay blink time for low
   3: shOffDlyOldTime  | 0.1 to 25.6s       | required | off delay blink time for high
   3: shOffDlyStep     | 0.1 to 25.6%       | required | off delay step if blink is active
   3: shOffLevel       | 0.0 to 100%        | required | PowerLevel off
   3: shOffTime        | 0.0 to 111600s     | required | off time special:unused
   3: shOffTimeMode    |     literal        | required | off time meant absolut or at least options:minimal,absolut
   3: shOnDly          | 0.0 to 111600s     | required | on delay
   3: shOnDlyMode      |     literal        | required |  options:setToOff,NoChange
   3: shOnLevel        | 0.0 to 100.5%      | required | PowerLevel on special:oldLevel
   3: shOnLvlPrio      |     literal        | required |  options:low,high
   3: shOnMinLevel     | 0.0 to 100%        | required | minimum PowerLevel
   3: shOnTime         | 0.0 to 111600s     | required | on time special:unused
   3: shOnTimeMode     |     literal        | required | on time meant absolut or at least options:minimal,absolut
   3: shRampOffTime    | 0.0 to 111600s     | required | rampOffTime
   3: shRampOnTime     | 0.0 to 111600s     | required | rampOnTime
   3: shRampSstep      | 0.0 to 100%        | required | rampStartStep



Zitat von: Otto123 am 31 März 2020, 13:57:08
Ich habe meine Dimmer so eingestellt, dass er bei 5 pct "aufhört". Das heisst einfach ein langer Tastendruck und er ist maximal gedimmt. Wäre das eine Alternative?
Bei mir so:
set LichtWzR_Dim regSet prep lgOffLevel 5 self01
Ich möchte zusätzlich noch normal dimmen können. Macht das der Code? Wenn ich auf dem Taster nach unten dimmen bleibe, wäre es für mich in Ordnung wenn das bis maximal pct 5 geht. Ausmachen kann ich über einen kurzen Druck.

Otto123

#7
ZitatIch möchte zusätzlich noch normal dimmen können. Macht das der Code?
genau das. Er geht beim Dim Vorgang eben nur nicht am Ende aus sondern bleibt. Ich finde einfacher geht es nicht, zumal ohne FHEM. Ist ja nur ein Register.

Sorry mein Code war nur eine kopierte Zeile, da muss dann noch ein mit exec folgen! Mir ging es nur um das Register

Komplett:

In Summe habe ich folgendes gemacht, da ich LEDs dran habe:
set LichtWzR_Dim regSet intKeyVisib visib

# shOnLevel setzt den Einschaltlevel herunter
# dann fängt das runter dimmen beim DimMaxLvl an und nicht bei 100%
set LichtWzR_Dim regSet prep lgOffLevel 5 self01
set LichtWzR_Dim regSet prep shOnLevel 55 self02

# minimale Register für bessere Dim Kurve

set LichtWzR_Dim regSet prep lgDimMaxLvl 55 self02
set LichtWzR_Dim regSet prep lgDimMinLvl 5 self01
set LichtWzR_Dim regSet prep lgDimStep 2.5 self01
set LichtWzR_Dim regSet exec lgDimStep 2.5 self02

set LichtWzR_Dim regSet intKeyVisib invisib


Den Max Wert habe ich nach Gefühl ermittelt. Bei mir ist bei den LEDs fast kein Unterschied zwischen 100 und 55 %. Mit der Programmierung hat man eine halbwegs bedienbare Dimmkurve.

@Frank Beim Template bauen bin ich letztens abgestorben 🤔
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

Zitat@Frank Beim Template bauen bin ich letztens abgestorben
das solltest du mal genauer ausführen.
vielleicht besser im hm.js thread.
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

TWART016

Zitat von: Otto123 am 31 März 2020, 14:42:43
set LichtWzR_Dim regSet prep lgOffLevel 5 self01
set LichtWzR_Dim regSet prep shOnLevel 55 self02

Also muss ich nur das ausführen? Einmal oder immer?
Was ist der default Wert?

Oder benötige ich das auch noch?
Zitat von: Otto123 am 31 März 2020, 14:42:43
set LichtWzR_Dim regSet prep lgDimMaxLvl 55 self02
set LichtWzR_Dim regSet prep lgDimMinLvl 5 self01
set LichtWzR_Dim regSet prep lgDimStep 2.5 self01
set LichtWzR_Dim regSet exec lgDimStep 2.5 self02

set LichtWzR_Dim regSet intKeyVisib invisib

Otto123

#10
Was meinst Du mit default Wert?

Die von mir gezeigten Zeilen programmieren den Dimmer, sie schreiben in die Register! Das ist ein einmaliger Vorgang!
Wenn Du unsicher bist, lass es lieber. Ich darf momentan nicht zu Dir kommen :)
Der Dimmer muss im Standardzustand sein! Nicht das Du schon die Tastenfunktion getauscht hast? Oben (self02) an Unten (self01) aus!
Die internen Taster müssen sichtbar sein:
set LichtWzR_Dim regSet intKeyVisib visib
Bitte kontrollieren, das der Dimmer den Befehl akzeptiert hat.
Die folgenden Registerbefehle sind ein Block! prep -> vorbereiten exec -> ausführen
Der Level für lange Drücken runter dimmen wird gesetzt
set LichtWzR_Dim regSet prep lgOffLevel 5 self01
Der Level für kurz drücken an wird gesetzt
set LichtWzR_Dim regSet prep shOnLevel 55 self02
Der maximale und minimale Dimm Level wird gesetzt
set LichtWzR_Dim regSet prep lgDimMaxLvl 55 self02
set LichtWzR_Dim regSet prep lgDimMinLvl 5 self01

Die Schrittweite wird gesetzt, der letzte Befehl überträgt alles zum Dimmer!
set LichtWzR_Dim regSet prep lgDimStep 2.5 self01
set LichtWzR_Dim regSet exec lgDimStep 2.5 self02


Jetzt kann man den Erfolg testen! Indem man prep / exec weglässt kann man auch jedes Register einzeln setzen (mehr Funkverkehr)

Funktioniert alles, kann man die internen Taster wieder unsichtbar machen
set LichtWzR_Dim regSet intKeyVisib invisib

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

frank

ich hätte noch eine idee.  :)

im moment wird mit taster1-short on und taster2-short off geschaltet.

nun könnte man taster1-short umprogrammieren, so dass dieser immer zwischen on und off toggelt. zusätzlich wird bei diesem taster shOffLevel auf 5 gesetzt, wodurch dieser immer zwischen 100 und 5 toggelt.

der taster2-short macht dann weiterhin richtig aus.
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

frank

#12
ich habe mal ein generisches template für dimmer erstellt, also jeweils eins für short oder long:

toggleMaxMin_dimmer_short und toggleMaxMin_dimmer_long
(toggle a dimmer between on (maxLevel) and off (minLevel) within rampTime. )
das template hat 3 parameter für maxLevel, minLevel und rampTime.

wenn dein hminfo device "hminfo" heisst, einfach den folgenden befehl in die fhem befehlseingabe eingeben. ansonsten den entsprechenden namen ändern.

set hminfo templateDef toggleMaxMin_dimmer maxLevel:minLevel:rampTime "toggle a dimmer between on (maxLevel) and off (minLevel) within rampTime. " ActionTypeDim:jmpToTarget CtDlyOff:geLo CtDlyOn:geLo CtOff:geLo CtOn:geLo CtRampOff:geLo CtRampOn:geLo CtValHi:100 CtValLo:50 DimJtDlyOff:rampOff DimJtDlyOn:rampOn DimJtOff:dlyOn DimJtOn:dlyOff DimJtRampOff:off DimJtRampOn:on DimMaxLvl:100 DimMinLvl:0 DimStep:5 MultiExec:off OffDly:0 OffDlyBlink:off OffDlyNewTime:0.4 OffDlyOldTime:0.4 OffDlyStep:5 OffLevel:p1 OffTime:unused OffTimeMode:absolut OnDly:0 OnDlyMode:setToOff OnLevel:p0 OnLvlPrio:high OnMinLevel:p1 OnTime:unused OnTimeMode:absolut RampOffTime:p2 RampOnTime:p2 RampSstep:0

anschliessend sollte das template beim dimmer in der set liste unter tpl_<peername> zu finden sein.
also einfach die "_short" version des templates für den entsprechenden taster auswählen und set klicken. dadurch wird das template zugewiesen und register entsprechend gesetzt. die parameter bekommen in diesem fall die aktuellen registerwerte.

zum ändern der parameter einfach die entsprechenden "set tplPara... " befehle auswählen und werte setzen.


ein webui zum einfachen register ändern und einfacher templateunterstützung gibt es hier:
https://forum.fhem.de/index.php/topic,106959.0.html


falls das ausschalten des anderen tasters zb beim minLevel nicht funktionieren sollte, sag bescheid dann mache ich dafür auch ein template.

edit: templatename geändert.
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

frank

passend zum template toggleMaxMin_dimmer[_short|_long] noch 2 templates, die entweder nur on oder off schalten.
aber auch mit parametern zum setzen des levels und der ramptime.


switchToOffLevel_dimmer[_short|_long]
(switch dimmer to off (offLevel) within rampTime.)

set hminfo templateDef switchToOffLevel_dimmer offLevel:rampTime "switch dimmer to off (offLevel) within rampTime. " ActionTypeDim:jmpToTarget CtDlyOff:geLo CtDlyOn:geLo CtOff:geLo CtOn:geLo CtRampOff:geLo CtRampOn:geLo CtValHi:100 CtValLo:50 DimJtDlyOff:rampOff DimJtDlyOn:rampOff DimJtOff:rampOff DimJtOn:rampOff DimJtRampOff:off DimJtRampOn:dlyOff DimMaxLvl:100 DimMinLvl:0 DimStep:5 MultiExec:off OffDly:0 OffDlyBlink:off OffDlyNewTime:0.4 OffDlyOldTime:0.4 OffDlyStep:5 OffLevel:p0 OffTime:unused OffTimeMode:absolut OnDly:0 OnDlyMode:setToOff OnLevel:100 OnLvlPrio:high OnMinLevel:p0 OnTime:unused OnTimeMode:absolut RampOffTime:p1 RampOnTime:p1 RampSstep:0


switchToOnLevel_dimmer[_short|_long]
(switch dimmer to on (onLevel) within rampTime.)

set hminfo templateDef switchToOnLevel_dimmer onLevel:rampTime "switch dimmer to on (onLevel) within rampTime." ActionTypeDim:jmpToTarget CtDlyOff:geLo CtDlyOn:geLo CtOff:geLo CtOn:geLo CtRampOff:geLo CtRampOn:geLo CtValHi:100 CtValLo:50 DimJtDlyOff:rampOn DimJtDlyOn:rampOn DimJtOff:rampOn DimJtOn:rampOn DimJtRampOff:dlyOn DimJtRampOn:on DimMaxLvl:100 DimMinLvl:0 DimStep:5 MultiExec:off OffDly:0 OffDlyBlink:off OffDlyNewTime:0.4 OffDlyOldTime:0.4 OffDlyStep:5 OffLevel:0 OffTime:unused OffTimeMode:absolut OnDly:0 OnDlyMode:setToOff OnLevel:p0 OnLvlPrio:high OnMinLevel:0 OnTime:unused OnTimeMode:absolut RampOffTime:p1 RampOnTime:p1 RampSstep:0
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

TWART016

Zitat von: Otto123 am 31 März 2020, 17:06:57
Was meinst Du mit default Wert?
Es gibt ja jetzt einen eingestellten Wert, den ich ändere.

Zitat von: Otto123 am 31 März 2020, 17:06:57
Die von mir gezeigten Zeilen programmieren den Dimmer, sie schreiben in die Register! Das ist ein einmaliger Vorgang!
Das Register ist also sowas eine config für den Dimmer?

Zitat von: Otto123 am 31 März 2020, 17:06:57
Der Dimmer muss im Standardzustand sein! Nicht das Du schon die Tastenfunktion getauscht hast? Oben (self02) an Unten (self01) aus!
Wo sieht man den Wert self01 und self02? Ich wüsste nicht, dass ich da was geändert habe, also nein.

Zitat von: Otto123 am 31 März 2020, 17:06:57
Die internen Taster müssen sichtbar sein:
set LichtWzR_Dim regSet intKeyVisib visib
Bitte kontrollieren, das der Dimmer den Befehl akzeptiert hat.
Habe ich gemacht.
Internals:
   DEF        53014701
   FUUID      5c7197ee-f33f-50ef-d504-00939d7172be358e
   FVERSION   10_CUL_HM.pm:0.210930/2020-02-02
   NAME       Licht_Wohnzimmer_4
   NOTIFYDEV  global
   NR         779
   NTFY_ORDER 50-Licht_Wohnzimmer_4
   STATE      off
   TYPE       CUL_HM
   chanNo     01
   device     HM_530147
   peerList   self01,self02,
   READINGS:
     2020-04-01 18:26:33   CommandAccepted yes
     2017-12-30 17:51:38   R-fuseDelay     1 s
     2017-12-30 17:51:38   R-logicCombination or
     2017-12-30 17:51:38   R-ovrTempLvl    80 C
     2017-12-30 17:51:38   R-powerUpAction off
     2017-12-30 17:51:38   R-redLvl        40 %
     2017-12-30 17:51:38   R-redTempLvl    75 C
     2020-04-01 23:16:25   R-self01-lgActionTypeDim downDim
     2020-04-01 23:16:25   R-self01-lgCtDlyOff geLo
     2020-04-01 23:16:25   R-self01-lgCtDlyOn geLo
     2020-04-01 23:16:25   R-self01-lgCtOff geLo
     2020-04-01 23:16:25   R-self01-lgCtOn geLo
     2020-04-01 23:16:25   R-self01-lgCtRampOff geLo
     2020-04-01 23:16:25   R-self01-lgCtRampOn geLo
     2020-04-01 23:16:25   R-self01-lgCtValHi 100
     2020-04-01 23:16:25   R-self01-lgCtValLo 50
     2020-04-01 23:16:25   R-self01-lgDimElsActionType off
     2020-04-01 23:16:25   R-self01-lgDimElsJtDlyOff rampOff
     2020-04-01 23:16:25   R-self01-lgDimElsJtDlyOn rampOn
     2020-04-01 23:16:25   R-self01-lgDimElsJtOff dlyOn
     2020-04-01 23:16:25   R-self01-lgDimElsJtOn dlyOff
     2020-04-01 23:16:25   R-self01-lgDimElsJtRampOff off
     2020-04-01 23:16:25   R-self01-lgDimElsJtRampOn on
     2020-04-01 23:16:25   R-self01-lgDimElsOffTimeMd absolut
     2020-04-01 23:16:25   R-self01-lgDimElsOnTimeMd absolut
     2020-04-01 23:16:25   R-self01-lgDimJtDlyOff rampOff
     2020-04-01 23:16:25   R-self01-lgDimJtDlyOn dlyOff
     2020-04-01 23:16:25   R-self01-lgDimJtOff dlyOff
     2020-04-01 23:16:25   R-self01-lgDimJtOn dlyOff
     2020-04-01 23:16:25   R-self01-lgDimJtRampOff off
     2020-04-01 23:16:25   R-self01-lgDimJtRampOn dlyOff
     2020-04-01 23:16:25   R-self01-lgDimMaxLvl 100 %
     2020-04-01 23:16:25   R-self01-lgDimMinLvl 0 %
     2020-04-01 23:16:25   R-self01-lgDimStep 5 %
     2020-04-01 23:16:25   R-self01-lgMultiExec on
     2020-04-01 23:16:25   R-self01-lgOffDly 0 s
     2020-04-01 23:16:25   R-self01-lgOffDlyBlink on
     2020-04-01 23:16:25   R-self01-lgOffDlyNewTime 0.4 s
     2020-04-01 23:16:25   R-self01-lgOffDlyOldTime 0.4 s
     2020-04-01 23:16:25   R-self01-lgOffDlyStep 5 %
     2020-04-01 23:16:25   R-self01-lgOffLevel 0 %
     2020-04-01 23:16:25   R-self01-lgOffTime unused
     2020-04-01 23:16:25   R-self01-lgOffTimeMode absolut
     2020-04-01 23:16:25   R-self01-lgOnDly 0 s
     2020-04-01 23:16:25   R-self01-lgOnDlyMode setToOff
     2020-04-01 23:16:25   R-self01-lgOnLevel 100 %
     2020-04-01 23:16:25   R-self01-lgOnLvlPrio high
     2020-04-01 23:16:25   R-self01-lgOnMinLevel 10 %
     2020-04-01 23:16:25   R-self01-lgOnTime 1 s
     2020-04-01 23:16:25   R-self01-lgOnTimeMode minimal
     2020-04-01 23:16:25   R-self01-lgRampOffTime 0.5 s
     2020-04-01 23:16:25   R-self01-lgRampOnTime 0.5 s
     2020-04-01 23:16:25   R-self01-lgRampSstep 5 %
     2020-04-01 23:16:25   R-self01-shActionTypeDim jmpToTarget
     2020-04-01 23:16:25   R-self01-shCtDlyOff geLo
     2020-04-01 23:16:25   R-self01-shCtDlyOn geLo
     2020-04-01 23:16:25   R-self01-shCtOff geLo
     2020-04-01 23:16:25   R-self01-shCtOn geLo
     2020-04-01 23:16:25   R-self01-shCtRampOff geLo
     2020-04-01 23:16:25   R-self01-shCtRampOn geLo
     2020-04-01 23:16:25   R-self01-shCtValHi 100
     2020-04-01 23:16:25   R-self01-shCtValLo 50
     2020-04-01 23:16:25   R-self01-shDimElsActionType off
     2020-04-01 23:16:25   R-self01-shDimElsJtDlyOff rampOff
     2020-04-01 23:16:25   R-self01-shDimElsJtDlyOn rampOn
     2020-04-01 23:16:25   R-self01-shDimElsJtOff dlyOn
     2020-04-01 23:16:25   R-self01-shDimElsJtOn dlyOff
     2020-04-01 23:16:25   R-self01-shDimElsJtRampOff off
     2020-04-01 23:16:25   R-self01-shDimElsJtRampOn on
     2020-04-01 23:16:25   R-self01-shDimElsOffTimeMd absolut
     2020-04-01 23:16:25   R-self01-shDimElsOnTimeMd absolut
     2020-04-01 23:16:25   R-self01-shDimJtDlyOff rampOff
     2020-04-01 23:16:25   R-self01-shDimJtDlyOn dlyOff
     2020-04-01 23:16:25   R-self01-shDimJtOff dlyOff
     2020-04-01 23:16:25   R-self01-shDimJtOn dlyOff
     2020-04-01 23:16:25   R-self01-shDimJtRampOff off
     2020-04-01 23:16:25   R-self01-shDimJtRampOn dlyOff
     2020-04-01 23:16:25   R-self01-shDimMaxLvl 100 %
     2020-04-01 23:16:25   R-self01-shDimMinLvl 0 %
     2020-04-01 23:16:25   R-self01-shDimStep 5 %
     2020-04-01 23:16:25   R-self01-shMultiExec off
     2020-04-01 23:16:25   R-self01-shOffDly 0 s
     2020-04-01 23:16:25   R-self01-shOffDlyBlink on
     2020-04-01 23:16:25   R-self01-shOffDlyNewTime 0.4 s
     2020-04-01 23:16:25   R-self01-shOffDlyOldTime 0.4 s
     2020-04-01 23:16:25   R-self01-shOffDlyStep 5 %
     2020-04-01 23:16:25   R-self01-shOffLevel 0 %
     2020-04-01 23:16:25   R-self01-shOffTime unused
     2020-04-01 23:16:25   R-self01-shOffTimeMode absolut
     2020-04-01 23:16:25   R-self01-shOnDly 0 s
     2020-04-01 23:16:25   R-self01-shOnDlyMode setToOff
     2020-04-01 23:16:25   R-self01-shOnLevel 100 %
     2020-04-01 23:16:25   R-self01-shOnLvlPrio high
     2020-04-01 23:16:25   R-self01-shOnMinLevel 10 %
     2020-04-01 23:16:25   R-self01-shOnTime unused
     2020-04-01 23:16:25   R-self01-shOnTimeMode absolut
     2020-04-01 23:16:25   R-self01-shRampOffTime 0.5 s
     2020-04-01 23:16:25   R-self01-shRampOnTime 0.5 s
     2020-04-01 23:16:25   R-self01-shRampSstep 5 %
     2020-04-01 23:16:27   R-self02-lgActionTypeDim upDim
     2020-04-01 23:16:27   R-self02-lgCtDlyOff geLo
     2020-04-01 23:16:27   R-self02-lgCtDlyOn geLo
     2020-04-01 23:16:27   R-self02-lgCtOff geLo
     2020-04-01 23:16:27   R-self02-lgCtOn geLo
     2020-04-01 23:16:27   R-self02-lgCtRampOff geLo
     2020-04-01 23:16:27   R-self02-lgCtRampOn geLo
     2020-04-01 23:16:27   R-self02-lgCtValHi 100
     2020-04-01 23:16:27   R-self02-lgCtValLo 50
     2020-04-01 23:16:27   R-self02-lgDimElsActionType off
     2020-04-01 23:16:27   R-self02-lgDimElsJtDlyOff rampOff
     2020-04-01 23:16:27   R-self02-lgDimElsJtDlyOn rampOn
     2020-04-01 23:16:27   R-self02-lgDimElsJtOff dlyOn
     2020-04-01 23:16:27   R-self02-lgDimElsJtOn dlyOff
     2020-04-01 23:16:27   R-self02-lgDimElsJtRampOff off
     2020-04-01 23:16:27   R-self02-lgDimElsJtRampOn on
     2020-04-01 23:16:27   R-self02-lgDimElsOffTimeMd absolut
     2020-04-01 23:16:27   R-self02-lgDimElsOnTimeMd absolut
     2020-04-01 23:16:27   R-self02-lgDimJtDlyOff rampOn
     2020-04-01 23:16:27   R-self02-lgDimJtDlyOn rampOn
     2020-04-01 23:16:27   R-self02-lgDimJtOff dlyOn
     2020-04-01 23:16:27   R-self02-lgDimJtOn rampOn
     2020-04-01 23:16:27   R-self02-lgDimJtRampOff rampOn
     2020-04-01 23:16:27   R-self02-lgDimJtRampOn on
     2020-04-01 23:16:27   R-self02-lgDimMaxLvl 100 %
     2020-04-01 23:16:27   R-self02-lgDimMinLvl 0 %
     2020-04-01 23:16:27   R-self02-lgDimStep 5 %
     2020-04-01 23:16:27   R-self02-lgMultiExec on
     2020-04-01 23:16:27   R-self02-lgOffDly 0 s
     2020-04-01 23:16:27   R-self02-lgOffDlyBlink on
     2020-04-01 23:16:27   R-self02-lgOffDlyNewTime 0.4 s
     2020-04-01 23:16:27   R-self02-lgOffDlyOldTime 0.4 s
     2020-04-01 23:16:27   R-self02-lgOffDlyStep 5 %
     2020-04-01 23:16:27   R-self02-lgOffLevel 0 %
     2020-04-01 23:16:27   R-self02-lgOffTime unused
     2020-04-01 23:16:27   R-self02-lgOffTimeMode absolut
     2020-04-01 23:16:27   R-self02-lgOnDly 0 s
     2020-04-01 23:16:27   R-self02-lgOnDlyMode setToOff
     2020-04-01 23:16:27   R-self02-lgOnLevel 100 %
     2020-04-01 23:16:27   R-self02-lgOnLvlPrio high
     2020-04-01 23:16:27   R-self02-lgOnMinLevel 10 %
     2020-04-01 23:16:27   R-self02-lgOnTime unused
     2020-04-01 23:16:27   R-self02-lgOnTimeMode absolut
     2020-04-01 23:16:27   R-self02-lgRampOffTime 0.5 s
     2020-04-01 23:16:27   R-self02-lgRampOnTime 0.5 s
     2020-04-01 23:16:27   R-self02-lgRampSstep 5 %
     2020-04-01 23:16:27   R-self02-shDimElsActionType off
     2020-04-01 23:16:27   R-self02-shDimElsJtDlyOff rampOff
     2020-04-01 23:16:27   R-self02-shDimElsJtDlyOn rampOn
     2020-04-01 23:16:27   R-self02-shDimElsJtOff dlyOn
     2020-04-01 23:16:27   R-self02-shDimElsJtOn dlyOff
     2020-04-01 23:16:27   R-self02-shDimElsJtRampOff off
     2020-04-01 23:16:27   R-self02-shDimElsJtRampOn on
     2020-04-01 23:16:27   R-self02-shDimElsOffTimeMd absolut
     2020-04-01 23:16:27   R-self02-shDimElsOnTimeMd absolut
     2020-04-01 23:16:27   R-self02-shDimMaxLvl 100 %
     2020-04-01 23:16:27   R-self02-shDimMinLvl 0 %
     2020-04-01 23:16:27   R-self02-shDimStep 5 %
     2020-04-01 23:16:27   R-self02-shOffDlyNewTime 0.4 s
     2020-04-01 23:16:27   R-self02-shOffDlyOldTime 0.4 s
     2020-04-01 23:16:27   R-self02-shOffDlyStep 5 %
     2020-04-01 23:16:27   R-self02-shOnLevel 100 %
     2020-04-01 23:16:27   R-self02-shOnMinLevel 10 %
     2020-04-01 23:16:27   R-self02-shRampOffTime 0.5 s
     2020-04-01 23:16:27   R-self02-shRampOnTime 0.5 s
     2020-04-01 23:16:27   R-self02-shRampSstep 5 %
     2020-04-01 23:06:55   R-sign          off
     2017-12-30 17:51:38   R-statusInfoMinDly 2 s
     2017-12-30 17:51:38   R-statusInfoRandom 1 s
     2017-12-30 17:51:38   R-transmitTryMax 6
     2020-04-01 18:26:39   deviceMsg       off (to Homematic_LAN_Gateway)
     2020-04-01 18:26:39   dim             stop:off
     2020-04-01 18:26:39   level           0
     2017-12-30 17:51:44   levelMissed     desired:100
     2020-04-01 18:26:39   overheat        off
     2020-04-01 18:26:39   overload        off
     2020-04-01 18:26:39   pct             0
     2020-04-01 23:16:20   peerList        self01,self02,
     2020-04-01 18:26:39   phyLevel        0
     2020-04-01 18:26:39   recentStateType info
     2020-04-01 18:26:39   reduced         off
     2020-04-01 18:26:39   state           off
     2020-04-01 18:26:39   timedOn         off
     2020-04-01 18:26:33   trigLast        fhem:02
   helper:
     dlvlCmd    ++A0116873675301470201000000
     peerFriend peerSens,peerVirt
     peerIDsRaw ,53014701,53014702,00000000
     peerOpt    3:dimmer
     regLst     1,3p
     dir:
       cur        stop
       rct        up
     expert:
       def        1
       det        1
       raw        0
       tpl        0
     regCollect:
     role:
       chn        1
     shadowReg:
     tmpl:
     vDim:
       idPhy      53014701
       idV2       53014702
       idV3       53014703
Attributes:
   FTUI_at    1
   alexaName  Decken Licht 4 im Wohnzimmer
   expert     1_allReg
   fhem_widget_channels [{"allowed_values":["off","on"],"controlled_attribute":"state"}]
   group      Deckenlicht
   model      HM-LC-DIM1TPBU-FM
   peerIDs    00000000,53014701,53014702,
   room       10_Wohnzimmer,70_Licht,Homekit,alexa
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
   webCmd     statusRequest:toggle:on:off:up:down



Zitat von: frank am 31 März 2020, 21:09:43
ich habe mal ein generisches template für dimmer erstellt, also jeweils eins für short oder long:

toggleMaxMin_dimmer_short und toggleMaxMin_dimmer_long
(toggle a dimmer between on (maxLevel) and off (minLevel) within rampTime. )
das template hat 3 parameter für maxLevel, minLevel und rampTime.

wenn dein hminfo device "hminfo" heisst, einfach den folgenden befehl in die fhem befehlseingabe eingeben. ansonsten den entsprechenden namen ändern.

set hminfo templateDef toggleMaxMin_dimmer maxLevel:minLevel:rampTime "toggle a dimmer between on (maxLevel) and off (minLevel) within rampTime. " ActionTypeDim:jmpToTarget CtDlyOff:geLo CtDlyOn:geLo CtOff:geLo CtOn:geLo CtRampOff:geLo CtRampOn:geLo CtValHi:100 CtValLo:50 DimJtDlyOff:rampOff DimJtDlyOn:rampOn DimJtOff:dlyOn DimJtOn:dlyOff DimJtRampOff:off DimJtRampOn:on DimMaxLvl:100 DimMinLvl:0 DimStep:5 MultiExec:off OffDly:0 OffDlyBlink:off OffDlyNewTime:0.4 OffDlyOldTime:0.4 OffDlyStep:5 OffLevel:p1 OffTime:unused OffTimeMode:absolut OnDly:0 OnDlyMode:setToOff OnLevel:p0 OnLvlPrio:high OnMinLevel:p1 OnTime:unused OnTimeMode:absolut RampOffTime:p2 RampOnTime:p2 RampSstep:0

anschliessend sollte das template beim dimmer in der set liste unter tpl_<peername> zu finden sein.
also einfach die "_short" version des templates für den entsprechenden taster auswählen und set klicken. dadurch wird das template zugewiesen und register entsprechend gesetzt. die parameter bekommen in diesem fall die aktuellen registerwerte.

zum ändern der parameter einfach die entsprechenden "set tplPara... " befehle auswählen und werte setzen.



Ich habe ein hminfo erstellt. Es gibt keine Readings, ist das normal?

Internals:
   CFGFN     
   FUUID      5e8501f6-f33f-50ef-d785-23103b5108a10834
   NAME       hminfo
   NR         32900
   NTFY_ORDER 50-hm
   STATE      ???
   TYPE       HMinfo
   Version    01
   helper:
     cfgChkResult configCheck done:
   nb:
     cnt        1
Attributes:
   event-on-change-reading .*
   sumERROR   battery:ok,sabotageError:off,powerError:ok,overload:off,overheat:off,reduced:off,motorErr:ok,error:none,uncertain:[no|yes],smoke_detect:none,cover:closed
   sumStatus  battery,sabotageError,powerError,motor
   webCmd     update:protoEvents short:rssi:peerXref:configCheck:models


Die Register muss ich aber trotzdem bearbeiten, per command oder dem Tool, korrekt?

Was ist der Vorteil von dem Template anstatt die command direkt zu setzen?

Und wie würde ich von einem Template wieder auf meinen jetzigen Standard kommen?




Offtopic: Ich habe 4 Devices für den Dimmer:
<Name> zum Schalten
HM_530147
HM_530147_Dim_V_01
HM_530147_Dim_V_02

Für was sind die da und brauche ich die alle?