Hi Leute!
Was das Thema Homematic angeht bin ich gerade noch am Anfang beim Lernen ... ;)
Bisher habe ich einen Max Cube zum Cuno/CUL umgeflasht. Darüber "funke" ich nun zu Homematic.
Das ganze läuft auch über eine virtuelle CCU (VCCU).
Den Rolladenaktor HM-LC-Bl1PBU-FM mit integrierten Tastern habe ich mit der VCCU gepairt und kann ihn problemlos aus Fhem ansteuern bzw bekomme alle Rückmeldungen. Per Fhem kann ich auch vorgeben " Fahre auf die Position 60%".
Nun würde ich das gerne per Tastendruck am Gerät selbst auch machen....
...um die Sonneneintrahlung und damit das Aufheizen des Raumes zu verhindern, soll das Rollo bei einem langen Tastendruck des HM-LC-Bl1PBU-FM auf 60% fahren.
Bei einem kurzen Tastendruck soll ganz normal die jeweilige Endlage angefahren werden.
Kann ich das irgendwie einstellen???
Über das Attribut "expert 1_allReg" sehe ich bereits eine lange Liste mit den den Registerinhalten.
Über deren Funktionen kann ich leider nur spekulieren. :o
Im Forum habe ich leider nur die Info gefunden, wie man die Unterscheidung von langen und kurzen Tastendruck vertauschen kann.
https://forum.fhem.de/index.php?topic=34575.0
Wäre super wenn jemand helfen kann!
Danke schonmal!
Gruß,
Christian
Hat keiner ein Idee? :-\
Hast du es mit schon onlevel probiert?
Hallo Martin!
Ich habe mal testweise:set HM_29CFE2 regSet lgOnLevel 60 self01
und
set HM_29CFE2 regSet lgOnLevel 60 self02
eingegeben, in der Hoffnung dass beim langen drücken der Rollo auf 60% fährt und dann stoppt.
In den Readings hat das Gerät die 60% übernommen.
Die Funktion hat sich leider nicht geändert.... das Rollo fährt solange, wie ich die Taste gedrückt halte und stoppt sobald ich loslasse. :-[
Noch eine Idee??? ::)
Anbei noch eine Liste mit den vorhandenen Readings.
Vielleicht bekommt einer eine Idee wenn er die Readings sieht.
Hallo Ihr HomeMatic´ler!
Ich möchte dieses Thema nochmal hochholen, in der Hoffnung dass vielleicht mittlerweile jemand eine Idee hat. :)
Wie geschrieben, ich möchte eigentlich "nur", dass mein Rollo bei kurzem Tastendruck in Endlage fährt (das tut er bereits standartmäßig) und bei langem Tastendruck soll er die Position 60% anfahren.
Ist das wirklich nicht möglich? :o
Gruß,
Christian
Hallo,
ich habe genau das gleiche Problem und würde mich um eine Lösung freuen.
Zitat von: dbox2user am 13 Mai 2017, 22:05:33
Ist das wirklich nicht möglich? :o
Hi Christian,
meine erste antwort wäre: das ist mit dem Standard ( also ohne Modifikation des Gerätes) nicht möglich.
Mit einem separaten Taster ginge das einfach.
Allerdings bin ich über die Registerprogrammierung zu unwissend, kann sein, dass damit doch was geht. Dazu müsste dann nach meiner Überlegung nicht nur lgOnLevel gesetzt werden sondern auch die Standardreaktion (langer Tastendruck fährt solange wie gedrückt) abgeschaltet und auf lgOnLevel "umgelenkt" werden - Stichwort Statemachine.
Gruß Otto
Hallo Otto,
danke schonmal dass Du überhaupt eine Antwort geschrieben hast! :)
Bisher hatten nicht sehr viele eine Idee , wie man das Problem lösen kann.
Achja ... und noch ein großes Lob für Deine tollen Blog mit den ganzen Anleitungen! :)
Dass die Grundfunktion (Taster fährt so lange wie gedrückt) erstmal raus muss klingt einleuchtend.
Da werde ich noch etwas herumprobieren.
Leider habe ich mit Homematic und dessen Registern noch nicht viel Ahnung... habe produktiv bisher gar kein Homematic im Einsatz.
Habe bisher nur zum "Herumspielen" einen umgeflashten Cube als CUL, einen Heizkörperthermostat und diesen Rolladenschalter.
Wobei der Rolladenschalter sofort eingebaut werden würde, wenn ich das mit dem Zielposition anfahren hinbekommen würde. :)
@ MasterCom: "Schön" , dass es noch weitere Leidensgenossen gibt. ;)
Gruß,
Christian
Hallo,
und wenn Du mal versuchst "lgOnDly" auf eine größere Zeit als 0 s einzustellen. Ich weis ja jetzt nicht wie lange dein Rollo läuft aber bei mir sind es etwas über 30 s also denke ich müssten es vielleicht 20 s sein?
Gruß Rolf
Spannende Sache ...
Klar: Extra Taster, Notify/Doif, pct setzen, fertich. Aber Register?
Also ich habe jetzt mal die Register durchsucht zur Frage "Betriebsmodus bei langem Tastendruck" ... ich habe das Teil seit drei Tagen im Produktiveinsatz für eine Markise und kann daher nicht wirklich mitreden. Trotzdem nur als Idee ...
lgMultiExec von "on" auf "off" - möglich dass das die Statemachine beeinflusst und so ein langer Tastendruck nur als einmaliger Trigger interpretiert wird, wie bei Schaltern. Allerdings ist das bei denen auch "on".
"lgOnDelay" würde ich als Verzögerung bezüglich einer Reaktion auf langen Trigger interpretieren, d.h. der Rolladen fährt erst nach x Wartezeit tatsächlich los. Bei Rolläden macht das irgendwie wenig Sinn ...
Manipulationen bezüglich "driveUp" und driveDown" beziehen sich ja auf den Aktor als ganzes.
Aber die Idee mit lgOnLevel klingt dennoch plausibel. Beim internen Taster sind die Richtungen ja bereits "entzerrt".
Aber die Idee insgesamt interessiert mich auch, stay tuned :-)
Klar. Multiexec Off. Long soll nur als ein Kommando erkannt werden.
Dann über die statemachine festlegen, was gemacht werden soll. Auf oder zu. Und die Endstellung. Eigentlich kannst du die Register des short kopieren und den Endwert einstellen.
Tip (auch wenn ich nerve) erstellen aus den short ein template. Setze den Endwert als Parameter und los geht's. Wende das template auf short mit 100% an und auf Long mit 50%. Sollte bedienerfreundlich sein.
Moin,
ich habe etwas Ähnliches mit einem externen Device als Taster in Betrieb, allerdings mit einem HM-LC-BL1-FM. Ich glaube aber, dass der Unterschied zum HM-LC-Bl1PBU-FM nur in Bezug auf die eingebauten Tasten besteht.
Also, für den Taster den Du nutzen willlst (self01 oder self02) :
lgMultiExec off
lgOnLevel 60 (für 60% -> Fahrtrichtung 1)
lgOffLevel 60 (für 60% -> Fahrtrichtung 2)
Das mit der Fahrtrichtung (hoch oder runter) und den Schaltern self01 und self02 ist tricki, weil es von Deiner Verkabelung und der Einbaulage des Schalters abhängt. Eventuell musst Du den Level auch auf 40% setzen. Ist alles sehr individuell !
Und dann gibt es noch ein kleines Problem, die Level lassen sich nicht wieder auf 100 setzen, sondern nur max auf 99. Da scheint mir ein Fehler im fhem zu sein. Ein Rücksetzen ist dann nur noch über ein Reset des Devices möglich (vielleicht ist dieser Fehler inzwischen auch weg, habe ich lange nicht mehr probiert...)
Viel Erfolg !
Bernd
Hey,
Danke für die vielen Antworten! :)
Ich habe jetzt mal vieles herum probiert und grundsätzlich funktioniert das schonmal! ;D
Mein Testaufbau ist so, dass die Endlagen jeweils nach 10 Sekunden anfahren sind.
(Also driveDown & Up jeweils 10 Sekunden)
Taster 1:
set HM_29CFE2 regSet lgMultiExec off self01 Damit grundsätzlich die Unterscheidung zwischen lang und kurz funktioniert;
set HM_29CFE2 regSet lgMaxTimeF 8 self01 Bei langem Tastendruck fährt der Motor MAXIMAL für 8 Sekunden
set HM_29CFE2 regSet lgOnTime unused self01
set HM_29CFE2 regSet lgOnLevel 50 self01 Motor fährt auf Position 50% --geht aber nicht--
Taster 2:
set HM_29CFE2 regSet lgMultiExec off self02 Damit grundsätzlich die Unterscheidung zwischen lang und kurz funktioniert;
set HM_29CFE2 regSet lgMaxTimeF 8 self02 Bei langem Tastendruck fährt der Motor MAXIMAL für 8 Sekunden
set HM_29CFE2 regSet lgOnTime unused self02
set HM_29CFE2 regSet lgOnLevel 60 self02 Motor fährt auf Position 60% --> fährt aber 40% an. (100%-60% = 40%)
Komisch ist nur, dass beim Taster "self01" nicht die 50% angefahren werden, sondern der Motor erst nach den 8 Sekunden anhält. :o
Notfalls kann ich damit leben und setze einfach die maximale Fahrzeit auf die Fahrzeit zu dem gewünschten Punkt... aber merkwürdig ist das schon, da es beim "self02" sauber funktioniert.
Gruß,
Christian
:D :D :D
1. zu den Prozenten: Hast Du evtl. "attr ... param levelInverse" in FHEM gesetzt? Dann interpretiert FHEM den Aktor stets mit 100%= ausgefahren und 0% = eingefahren - default ist es umgekehrt. Ich habe das z.B. bei mir gesetzt, damit es kompatibel zu den Rademacher-Rolläden ist (und vielen anderen). Mit meiner Displayfernbedienung (HM-RC-Dis-H-x-EU) sehe ich die Pegel dann auch "verkehrtrum" (rsp. original). Das könnte auch eine mögliche Erklärung für die Differenz 60-40 sein.
2. self01 ist doch unten, resp. normalerweise aus. Probiere doch mal stattdessen lgOffLevel:
set HM_29CFE2 regSet lgOffLevel 50 self01
Das ist auch genau das was User pwlr alias Bernd meint.
MaxTimeF kannte ich noch nicht, danke für den Tipp.
Moin,
ich würde den maxTimeF wieder auf "unused" stellen. Die Laufzeit und damit die Position bestimmst Du ja über die Register driveUp und driveDown im Zusammenspiel mit den lgOnLevel oder lgOfflevel. Sonst hast Du eine Doppeldefinition - allerdings ist mir die Auswirkung von maxTimeF nicht wirklich klar. In meiner Installation nutze ich das Register nicht.
Mal ne Frage zum Verständnis : Wenn die Jalousie oben ist, hast Du dann 100% oder 0% im Reading pct ??
Hier mal meine Register zur Info, allerdings für short. Damit wird von einem Peer gezielt auf 12% gefahren.
shActionType jmpToTarget
shCtDlyOff geLo
shCtDlyOn geLo
shCtOff geLo
shCtOn geLo
shCtRampOff geLo
shCtRampOn geLo
shCtRefOff geLo
shCtRefOn geLo
shCtValHi 100
shCtValLo 50
shMultiExec off
shOffDly 0 s
shOffTime unused
shOffTimeMode absolut
shOnDly 0 s
shOnTime unused
shOnTimeMode absolut
shBlJtDlyOff no
shBlJtDlyOn no
shBlJtOff refOn
shBlJtOn refOn
shBlJtRampOff refOn
shBlJtRampOn on
shBlJtRefOff off
shBlJtRefOn on
shDriveMode direct
shMaxTimeF unused
shOffLevel 0%
shOnLevel 12%
Moin
Bernd
]] (//http://)https://forum.fhem.de/index.php/topic,25118.msg183262.html#msg183262[/url]
Bei mir gehen die Storren beim kurzen drücken nach unten auf die Position 40%
Das hab ich am Aktor mit der Homematic Software eingestellt.
Geht da über die Experteneinstellungen.
Das sollte aber glaube ich auch für langes drücken möglich sein.
Muss mal schauen wie ich die eingestellten Werte über Fhem auslesen kann.
Dann sollte es ersichtlich sein, hab nur einen Aktor der so ist.
ZitatStore_Parkplatz type:blindActuator -
list:peer register :value
0: intKeyVisib :visib
0: pairCentral :0x2572A2
1: driveDown :38 s
1: driveTurn :2 s
1: driveUp :37 s
1: refRunCounter :0
1: sign :off
3:FB_A_Bnt_11 lgActionType :jmpToTarget
3:FB_A_Bnt_11 lgBlJtDlyOff :refOff
3:FB_A_Bnt_11 lgBlJtDlyOn :dlyOff
3:FB_A_Bnt_11 lgBlJtOff :dlyOff
3:FB_A_Bnt_11 lgBlJtOn :dlyOff
3:FB_A_Bnt_11 lgBlJtRampOff :rampOff
3:FB_A_Bnt_11 lgBlJtRampOn :on
3:FB_A_Bnt_11 lgBlJtRefOff :rampOff
3:FB_A_Bnt_11 lgBlJtRefOn :on
3:FB_A_Bnt_11 lgCtDlyOff :geLo
3:FB_A_Bnt_11 lgCtDlyOn :geLo
3:FB_A_Bnt_11 lgCtOff :geLo
3:FB_A_Bnt_11 lgCtOn :geLo
3:FB_A_Bnt_11 lgCtRampOff :geLo
3:FB_A_Bnt_11 lgCtRampOn :geLo
3:FB_A_Bnt_11 lgCtRefOff :geLo
3:FB_A_Bnt_11 lgCtRefOn :geLo
3:FB_A_Bnt_11 lgCtValHi :100
3:FB_A_Bnt_11 lgCtValLo :50
3:FB_A_Bnt_11 lgDriveMode :direct
3:FB_A_Bnt_11 lgMaxTimeF :0.8 s
3:FB_A_Bnt_11 lgMultiExec :on
3:FB_A_Bnt_11 lgOffDly :0 s
3:FB_A_Bnt_11 lgOffLevel :0 %
3:FB_A_Bnt_11 lgOffTime :unused
3:FB_A_Bnt_11 lgOffTimeMode :absolut
3:FB_A_Bnt_11 lgOnDly :0 s
3:FB_A_Bnt_11 lgOnLevel :100 %
3:FB_A_Bnt_11 lgOnTime :unused
3:FB_A_Bnt_11 lgOnTimeMode :absolut
3:FB_A_Bnt_11 shActionType :jmpToTarget
3:FB_A_Bnt_11 shBlJtDlyOff :refOff
3:FB_A_Bnt_11 shBlJtDlyOn :dlyOff
3:FB_A_Bnt_11 shBlJtOff :dlyOff
3:FB_A_Bnt_11 shBlJtOn :dlyOff
3:FB_A_Bnt_11 shBlJtRampOff :rampOff
3:FB_A_Bnt_11 shBlJtRampOn :on
3:FB_A_Bnt_11 shBlJtRefOff :rampOff
3:FB_A_Bnt_11 shBlJtRefOn :on
3:FB_A_Bnt_11 shCtDlyOff :geLo
3:FB_A_Bnt_11 shCtDlyOn :geLo
3:FB_A_Bnt_11 shCtOff :geLo
3:FB_A_Bnt_11 shCtOn :geLo
3:FB_A_Bnt_11 shCtRampOff :geLo
3:FB_A_Bnt_11 shCtRampOn :geLo
3:FB_A_Bnt_11 shCtRefOff :geLo
3:FB_A_Bnt_11 shCtRefOn :geLo
3:FB_A_Bnt_11 shCtValHi :100
3:FB_A_Bnt_11 shCtValLo :50
3:FB_A_Bnt_11 shDriveMode :viaUpperEnd
3:FB_A_Bnt_11 shMaxTimeF :unused
3:FB_A_Bnt_11 shMultiExec :off
3:FB_A_Bnt_11 shOffDly :0 s
3:FB_A_Bnt_11 shOffLevel :40 %
3:FB_A_Bnt_11 shOffTime :unused
3:FB_A_Bnt_11 shOffTimeMode :absolut
3:FB_A_Bnt_11 shOnDly :0 s
3:FB_A_Bnt_11 shOnLevel :100 %
3:FB_A_Bnt_11 shOnTime :unused
3:FB_A_Bnt_11 shOnTimeMode :absolut
3:FB_A_Bnt_12 lgActionType :jmpToTarget
3:FB_A_Bnt_12 lgBlJtDlyOff :dlyOn
3:FB_A_Bnt_12 lgBlJtDlyOn :refOn
3:FB_A_Bnt_12 lgBlJtOff :dlyOn
3:FB_A_Bnt_12 lgBlJtOn :dlyOn
3:FB_A_Bnt_12 lgBlJtRampOff :off
3:FB_A_Bnt_12 lgBlJtRampOn :rampOn
3:FB_A_Bnt_12 lgBlJtRefOff :off
3:FB_A_Bnt_12 lgBlJtRefOn :rampOn
3:FB_A_Bnt_12 lgCtDlyOff :geLo
3:FB_A_Bnt_12 lgCtDlyOn :geLo
3:FB_A_Bnt_12 lgCtOff :geLo
3:FB_A_Bnt_12 lgCtOn :geLo
3:FB_A_Bnt_12 lgCtRampOff :geLo
3:FB_A_Bnt_12 lgCtRampOn :geLo
3:FB_A_Bnt_12 lgCtRefOff :geLo
3:FB_A_Bnt_12 lgCtRefOn :geLo
3:FB_A_Bnt_12 lgCtValHi :100
3:FB_A_Bnt_12 lgCtValLo :50
3:FB_A_Bnt_12 lgDriveMode :direct
3:FB_A_Bnt_12 lgMaxTimeF :0.8 s
3:FB_A_Bnt_12 lgMultiExec :on
3:FB_A_Bnt_12 lgOffDly :0 s
3:FB_A_Bnt_12 lgOffLevel :0 %
3:FB_A_Bnt_12 lgOffTime :unused
3:FB_A_Bnt_12 lgOffTimeMode :absolut
3:FB_A_Bnt_12 lgOnDly :0 s
3:FB_A_Bnt_12 lgOnLevel :100 %
3:FB_A_Bnt_12 lgOnTime :unused
3:FB_A_Bnt_12 lgOnTimeMode :absolut
3:FB_A_Bnt_12 shActionType :jmpToTarget
3:FB_A_Bnt_12 shBlJtDlyOff :dlyOn
3:FB_A_Bnt_12 shBlJtDlyOn :refOn
3:FB_A_Bnt_12 shBlJtOff :dlyOn
3:FB_A_Bnt_12 shBlJtOn :dlyOn
3:FB_A_Bnt_12 shBlJtRampOff :off
3:FB_A_Bnt_12 shBlJtRampOn :rampOn
3:FB_A_Bnt_12 shBlJtRefOff :off
3:FB_A_Bnt_12 shBlJtRefOn :rampOn
3:FB_A_Bnt_12 shCtDlyOff :geLo
3:FB_A_Bnt_12 shCtDlyOn :geLo
3:FB_A_Bnt_12 shCtOff :geLo
3:FB_A_Bnt_12 shCtOn :geLo
3:FB_A_Bnt_12 shCtRampOff :geLo
3:FB_A_Bnt_12 shCtRampOn :geLo
3:FB_A_Bnt_12 shCtRefOff :geLo
3:FB_A_Bnt_12 shCtRefOn :geLo
3:FB_A_Bnt_12 shCtValHi :100
3:FB_A_Bnt_12 shCtValLo :50
3:FB_A_Bnt_12 shDriveMode :direct
3:FB_A_Bnt_12 shMaxTimeF :unused
3:FB_A_Bnt_12 shMultiExec :off
3:FB_A_Bnt_12 shOffDly :0 s
3:FB_A_Bnt_12 shOffLevel :0 %
3:FB_A_Bnt_12 shOffTime :unused
3:FB_A_Bnt_12 shOffTimeMode :absolut
3:FB_A_Bnt_12 shOnDly :0 s
3:FB_A_Bnt_12 shOnLevel :100 %
3:FB_A_Bnt_12 shOnTime :unused
3:FB_A_Bnt_12 shOnTimeMode :absolut
3:self01 lgActionType :jmpToTarget
3:self01 lgBlJtDlyOff :dlyOn
3:self01 lgBlJtDlyOn :refOn
3:self01 lgBlJtOff :dlyOn
3:self01 lgBlJtOn :dlyOn
3:self01 lgBlJtRampOff :off
3:self01 lgBlJtRampOn :rampOn
3:self01 lgBlJtRefOff :off
3:self01 lgBlJtRefOn :rampOn
3:self01 lgCtDlyOff :geLo
3:self01 lgCtDlyOn :geLo
3:self01 lgCtOff :geLo
3:self01 lgCtOn :geLo
3:self01 lgCtRampOff :geLo
3:self01 lgCtRampOn :geLo
3:self01 lgCtRefOff :geLo
3:self01 lgCtRefOn :geLo
3:self01 lgCtValHi :100
3:self01 lgCtValLo :50
3:self01 lgDriveMode :direct
3:self01 lgMaxTimeF :0.5 s
3:self01 lgMultiExec :on
3:self01 lgOffDly :0 s
3:self01 lgOffLevel :0 %
3:self01 lgOffTime :unused
3:self01 lgOffTimeMode :absolut
3:self01 lgOnDly :0 s
3:self01 lgOnLevel :100 %
3:self01 lgOnTime :unused
3:self01 lgOnTimeMode :absolut
3:self01 shActionType :jmpToTarget
3:self01 shBlJtDlyOff :dlyOn
3:self01 shBlJtDlyOn :refOn
3:self01 shBlJtOff :dlyOn
3:self01 shBlJtOn :dlyOn
3:self01 shBlJtRampOff :off
3:self01 shBlJtRampOn :rampOn
3:self01 shBlJtRefOff :off
3:self01 shBlJtRefOn :rampOn
3:self01 shCtDlyOff :geLo
3:self01 shCtDlyOn :geLo
3:self01 shCtOff :geLo
3:self01 shCtOn :geLo
3:self01 shCtRampOff :geLo
3:self01 shCtRampOn :geLo
3:self01 shCtRefOff :geLo
3:self01 shCtRefOn :geLo
3:self01 shCtValHi :100
3:self01 shCtValLo :50
3:self01 shDriveMode :direct
3:self01 shMaxTimeF :unused
3:self01 shMultiExec :off
3:self01 shOffDly :0 s
3:self01 shOffLevel :0 %
3:self01 shOffTime :unused
3:self01 shOffTimeMode :absolut
3:self01 shOnDly :0 s
3:self01 shOnLevel :100 %
3:self01 shOnTime :unused
3:self01 shOnTimeMode :absolut
3:self02 lgActionType :jmpToTarget
3:self02 lgBlJtDlyOff :refOff
3:self02 lgBlJtDlyOn :refOn
3:self02 lgBlJtOff :dlyOn
3:self02 lgBlJtOn :dlyOff
3:self02 lgBlJtRampOff :off
3:self02 lgBlJtRampOn :on
3:self02 lgBlJtRefOff :off
3:self02 lgBlJtRefOn :on
3:self02 lgCtDlyOff :geLo
3:self02 lgCtDlyOn :geLo
3:self02 lgCtOff :geLo
3:self02 lgCtOn :geLo
3:self02 lgCtRampOff :geLo
3:self02 lgCtRampOn :geLo
3:self02 lgCtRefOff :geLo
3:self02 lgCtRefOn :geLo
3:self02 lgCtValHi :100
3:self02 lgCtValLo :50
3:self02 lgDriveMode :direct
3:self02 lgMaxTimeF :0.5 s
3:self02 lgMultiExec :on
3:self02 lgOffDly :0 s
3:self02 lgOffLevel :0 %
3:self02 lgOffTime :unused
3:self02 lgOffTimeMode :absolut
3:self02 lgOnDly :0 s
3:self02 lgOnLevel :100 %
3:self02 lgOnTime :unused
3:self02 lgOnTimeMode :absolut
3:self02 shActionType :jmpToTarget
3:self02 shBlJtDlyOff :rampOff
3:self02 shBlJtDlyOn :rampOff
3:self02 shBlJtOff :rampOff
3:self02 shBlJtOn :rampOff
3:self02 shBlJtRampOff :off
3:self02 shBlJtRampOn :on
3:self02 shBlJtRefOff :off
3:self02 shBlJtRefOn :on
3:self02 shCtDlyOff :geLo
3:self02 shCtDlyOn :geLo
3:self02 shCtOff :geLo
3:self02 shCtOn :geLo
3:self02 shCtRampOff :geLo
3:self02 shCtRampOn :geLo
3:self02 shCtRefOff :geLo
3:self02 shCtRefOn :geLo
3:self02 shCtValHi :100
3:self02 shCtValLo :50
3:self02 shDriveMode :viaUpperEnd
3:self02 shMaxTimeF :unused
3:self02 shMultiExec :off
3:self02 shOffDly :0 s
3:self02 shOffLevel :40 %
3:self02 shOffTime :unused
3:self02 shOffTimeMode :absolut
3:self02 shOnDly :0 s
3:self02 shOnLevel :100 %
3:self02 shOnTime :unused
3:self02 shOnTimeMode :absolut
Das (3:self02 shDriveMode :viaUpperEnd) hab ich anders.
Bei mir ist ON 100 OBEN und OFF 0 UNTEN.
Die Storre darf nie auf 0 OFF UNTEN gehen.
ViaUpperEnd macht das die Storre beim Tastendruck nach unten immer zuerst auf ON 100 OBEN geht und erst dann die 40 anfährt.
Sonnst kann es vorkommen das sie bei FHEM auf 40 steht und tatsächlich auf 20 Steht.
Sorry für die späte Rückmeldung, aber ich konnte das ganze länger nicht anpassen und testen!
Vielen Dank nochmal an alle! Jetzt funktioniert das ganze so wie ich es will! :D
Entscheidend war "set HM_29CFE2 regSet lgOffLevel 60 self01 ".
lgMaxTimeF MUSS auch angepasst werden, da Standard auf 0,4 Sekunden gestellt ist und der Motor so nur kurz fahren würde.
Hier nochmal wie es bei mir funktioniert:
Taster 1:
set HM_29CFE2 regSet lgMultiExec off self01 Damit grundsätzlich die Unterscheidung zwischen lang und kurz funktioniert;
set HM_29CFE2 regSet lgMaxTimeF 8 self01 Bei langem Tastendruck fährt der Motor MAXIMAL für 8 Sekunden
set HM_29CFE2 regSet lgOnTime unused self01
set HM_29CFE2 regSet lgOffLevel 60 self01 Motor fährt auf Position 40% --> (100%-60% = 40%; wegen Attribut "levelInverse")
Taster 2:
set HM_29CFE2 regSet lgMultiExec off self02 Damit grundsätzlich die Unterscheidung zwischen lang und kurz funktioniert;
set HM_29CFE2 regSet lgMaxTimeF 8 self02 Bei langem Tastendruck fährt der Motor MAXIMAL für 8 Sekunden
set HM_29CFE2 regSet lgOnTime unused self02
set HM_29CFE2 regSet lgOnLevel 60 self02 Motor fährt auf Position 40% --> (100%-60% = 40%; wegen Attribut "levelInverse")
Gruß,
Christian
Zitatset HM_29CFE2 regSet lgMultiExec off self01 Damit grundsätzlich die Unterscheidung zwischen lang und kurz funktioniert;
Multiexec ist für "long" interessant. ein "long" sender schickt alle paar hundert ms einen "folgetrigger". Bei multiexec ON wird auf jeden Trigger reagiert. Du willst aber nur einmal "erkennen" und gut. Also "off" schalten.
Der Kommentar ist also falsch.
Zitatset HM_29CFE2 regSet lgMaxTimeF 8 self01 Bei langem Tastendruck fährt der Motor MAXIMAL für 8 Sekunden
auch falsch - zumindest unvollständign und irreführend.
maxTime
First sagt, dass beim Erkennen eines Triggers der Motor 8sec fahren soll (es sei den, eine andere Endbedingung ist erreicht). da du multiexec "off" hast kommt das auch nur einmal dran. Ansonsten wird das bei jeden Folge-Trigger wiederholt. Also bei dir: ja. Das ist aber ein Sonderfall - der Kommentar verwirrt andere User.
Sinnvoll wäre es, hier "unused" einzutragen. Das macht bei "ein-trigger" aktionen sinn (also "short" - und bei dir das an ein short angepasste "long")
MaxTimeF wird typisch an die wiederholzeit des Triggers angepasst in welcher der Sender re-triggert (bei long). Das gewährleistet ein ruckelfreies fahren.
Hallo Martin!
Nachdem Du hier der Administrator bist und dich anscheinend gut auskennst , darfst du gerne meine Kommentare entsprechend anpassen, dass sie richtig sind.
Andere User kann das dann bestimmt helfen.
Wie bereits geschrieben, bin ich beim Thema Homematic blutiger Anfänger.
Meine Kommentare sind lediglich Vermutungen über die einzelnen Bedeutungen,die ich geschrieben habe um anderen evtl zu helfen.
Du scheinst ja die echte Bedeutung zu 'wissen'.
Mir hätte es auch geholfen wenn Du schon früher die Bedeutungen geschrieben hättest.
Gruß
Christian