44_ROLLO: Modul zur präzisen Steuerung von Rollläden

Begonnen von KernSani, 14 Januar 2019, 00:11:37

Vorheriges Thema - Nächstes Thema

flummy1978

Hey :)

Genau das ist es:
Zitat von: Frank_Huber am 03 August 2020, 10:23:37
Ist ja auch irgendwie eine Frage wie man es regeln will.

Wie fährst Du bei Dir z.B. von zu auf Schlitz? hat ja dann beides die gleiche pct.
andererseits ist deine Position genauer.
Nie  ::)

Mir sind die Positionen rum um 50 % etc wichtig. ABER würde ich auf Schlitz fahren wollen, wäre es defintiv nicht die Position zu: Es wäre dann z.B. 99 % oder 95 % (heisst ich fahre aus dem rl_excessBottom bereich +1 - 5 % heraus, da müsste man dann etwas rumspielen)

VG
Andreas

e-t-h

Zitat von: flummy1978 am 03 August 2020, 02:03:15
Hey.

bin zwar nicht der Macher oder Autor aber ich versuche mal mein Glück:

Wie lange braucht das Rollo tatsächlich bis es von Oben nach Unten einmal komplett durch gefahren ist ?
Zählt für Dich bereits das geschlossene Rollo als geschlossen oder erst wenn alle Lücken restlos zu sind ?
Wie ist excessTop / Bottom eingestellt ?
und und und ... Sprich ein List wäre hilfreich :)

......

rl_switchTime ist lediglich wenn man nach unten fährt und dann nach oben drückt, wie lange es pausiert. Btw: Die Hilfe die hier vom Modulautor eingebaut wurde, finde ich persönlich sehr gut und sehr hilfreich  :)

Ich hoffe das hilft (und verwirrt nicht mehr als gewollt) ;)

Viele Grüße
Andreas

Hi Andreas,

Danke erstmal für die ausführliche Antwort, hast mich nicht verwirrt und die Hilfe habe ich natürlich gelesen. Hab in der Zwischenzeit mit dem AutoShuttersControl-Modul "rumgespielt", das ist ja auch ziemlich komplex.., sorry das ich so lange gebraucht habe..

Ich hatte mir das so schon gedacht, mir ging's wirklich um die Frage ob das Thema mit der Dicke und der resultierenden "Spirale" berücksichtigt wird. Wird wohl nicht so sein, also muss man es eben so hin "tricksen". Letztendlich sollte man auch keine Wissenschaft draus machen, obwohl eine "Stützstelle" (Laufzeit bei 50%) und etwas Interpolation vielleicht schon helfen würde.

Der Vollständigkeit halber das Listing des Devices um was es mir ging:

Internals:
   CFGFN      ./FHEM/blinds.cfg
   FUUID      5f22d7d0-f33f-f3c0-338e-2f928df3cbaa3c8d
   NAME       R_Ekki
   NR         703
   STATE      closed
   TYPE       ROLLO
   stoptime   1596664140
   READINGS:
     2020-07-30 23:34:11   ASC_Enable      on
     2020-08-05 22:20:44   ASC_ShadingMessage <html> WARN:  global shading active but ASC_Shading_Mode attribut is not set or off </html>
     2020-08-05 23:49:00   ASC_ShuttersLastDrive manual
     2020-08-05 23:17:30   ASC_Time_DriveDown AutoShuttersControl off
     2020-08-05 23:17:30   ASC_Time_DriveUp  6.08.2020 - 05:00
     2020-08-05 22:20:31   associatedWith  Rollladenautomatik
     2020-08-05 23:48:27   command         closed
     2020-08-05 23:48:27   desired_pct     100
     2020-08-05 23:48:27   drive-type      modul
     2020-08-05 23:48:27   last_drive      drive-down
     2020-08-05 23:49:00   pct             100
     2020-08-05 23:49:00   state           closed
Attributes:
   ASC        1
   ASC_AutoAstroModeEvening ASTRONOMIC
   ASC_AutoAstroModeMorning ASTRONOMIC
   ASC_BlockingTime_afterManual 5
   ASC_BrightnessSensor GT_Lux:BH1750_Illuminance
   ASC_Closed_Pos 100
   ASC_Open_Pos 0
   ASC_Partymode off
   ASC_Pos_Reading pct
   ASC_Shading_InOutAzimuth 262:264
   ASC_Shading_MinMax_Elevation 0:100
   ASC_Shading_Mode off
   ASC_Shading_Pos 10
   ASC_Shading_StateChange_SunnyCloudy 260:190:1
   ASC_Shading_WaitingPeriod 5
   DbLogExclude .*
   cmdIcon    half:fts_shutter_50@grey open:fts_shutter_up@grey closed:fts_shutter_down@grey   stop:fts_shutter_manual@grey
   devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop pct-100:fts_shutter_100:open pct-90:fts_shutter_80:closed pct-80:fts_shutter_80:closed pct-70:fts_shutter_70:closed pct-60:fts_shutter_60:closed pct-50:fts_shutter_50:closed pct-40:fts_shutter_40:open pct-30:fts_shutter_30:open pct-20:fts_shutter_20:open pct-10:fts_shutter_10:open pct-0:fts_shutter_10:closed
   group      Rollo
   rl_autoStop 1
   rl_blockMode none
   rl_commandDown set Jaro down 1
   rl_commandStop set Jaro stop 1
   rl_commandUp set Jaro up 1
   rl_excessBottom 0
   rl_excessTop 0
   rl_reactionTime 1
   rl_secondsDown 32
   rl_secondsUp 32
   rl_switchTime 1
   rl_type    normal
   room      SD_Keeloq
   userattr   ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforDayOpen ASC_BlockingTime_beforNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate
   webCmd     half:open:closed:stop:pct


(Ist jetzt mit den ASC-Werten etwas überladen..) Hatte es bewusst versucht ohne viele Parameter zu betreiben um zu sehen ob die Dicke berücksichtigt wird. 100% wäre in meiner diesbezüglichen Denke komplett zu. Ich werde jetzt mal mit Deinen Hinweisen versuchen die 50% zu treffen.
Ist halt blöd, wenn man bei 5..6 verschiedenen Varianten von Rollos (Länge, Motorlaufgeschwindigkeit) so viel messen muss. Für mich sind die Positionen zwischen 60..80% relativ "wichtig", wegen der Beschattung und Blumenkästen usw.

Also nochmal Danke, wenn ich was vernünftiges rausbekommen habe poste ich das hier noch mal.
Viele Grüße!
Ekkehard.
e-t-h

cmonty14

Hallo,

ich möchte meinen HM-Rollladen-Aktor HM-LC-BL1PBU-FM mit diesem Modul visualisieren und über die WebUI steuern.

Bisher habe ich die Visualisierung selbst erstellt und kann damit den Rollladen steuern.

Meine Frage ist:
Was muss ich nach der Definition des neuen Geräts ROLLO ausführen, damit ich damit meinen Rollladen steuern kann?

THX

cmonty14


KölnSolar

Ich denke nicht.
Aber Frage ist sehr unkonkret. Oder andersherum: Wiki gelesen ? Attribute definiert ?
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

cmonty14

Zitat von: KölnSolar am 12 September 2020, 18:29:23
Ich denke nicht.
Aber Frage ist sehr unkonkret. Oder andersherum: Wiki gelesen ? Attribute definiert ?
Grüße Markus

Aktuell habe ich nur 1 HM-Rollladen-Aktor HM-LC-BL1PBU-FM, den ich korrekt in FHEM angeschlossen habe und somit auch steuern kann.

Nur lege ich ein neues Device KU.rollladen_rollo mit dem Modul ROLLO an:
define KU.rollladen_rollo ROLLO
setuuid KU.rollladen_rollo 5f5de3e5-f33f-a13d-22ba-c239e7e44cd34360
attr KU.rollladen_rollo automatic-enabled off
attr KU.rollladen_rollo cmdIcon open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr KU.rollladen_rollo devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_sh$
attr KU.rollladen_rollo rl_autoStop 1
attr KU.rollladen_rollo rl_secondsDown 17.5
attr KU.rollladen_rollo rl_secondsUp 17.5
attr KU.rollladen_rollo rl_switchTime 1 
attr KU.rollladen_rollo rl_type HomeKit
attr KU.rollladen_rollo room 60-Rollladen
attr KU.rollladen_rollo webCmd open:closed:half:stop:pct


Frage:
Wie teile ich diesem Device mit, dass damit mein Rollladen HM-LC-BL1PBU-FM gesteuert werden soll?

Frank_Huber

Welchen Teil der Commandref und des Wiki verstehst du nicht?

Dir fehlen Attribute.

KölnSolar

Überleg mal. Zeiten hast Du definiert. Aber wo ist die Verknüpfung zu Deinem Aktor ?  ::)

rl_command....
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

cmonty14

Zitat von: Frank_Huber am 13 September 2020, 12:03:41
Welchen Teil der Commandref und des Wiki verstehst du nicht?

Dir fehlen Attribute.

Offensichtlich verstehe ich nicht, wie das Modul den Aktor steuert.
Deshalb habe ich jetzt
attr KU.rollladen_rollo rl_commandDown KU.rollladen down
attr KU.rollladen_rollo rl_commandUp KU.rollladen up

definiert.

Das Device KU.rollladen existiert mit dieser Konfiguration:
define KU.rollladen CUL_HM 678E87
setuuid KU.rollladen 5cce0141-f33f-a13d-d77c-6b6add5a7b1bc364
attr KU.rollladen .mId 006A
attr KU.rollladen IODev HMUART
attr KU.rollladen autoReadReg 4_reqStatus
attr KU.rollladen devStateIcon 100%:fts_shutter_10@green 0%:fts_shutter_100@red 1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 5\d.*$
attr KU.rollladen eventMap on:100% off:0%
attr KU.rollladen expert defReg,rawReg
attr KU.rollladen firmware 2.11
attr KU.rollladen group Rollladen
attr KU.rollladen icon fts_shutter_1w
attr KU.rollladen model HM-LC-BL1PBU-FM
attr KU.rollladen peerIDs 00000000,
attr KU.rollladen room 80-HomeMatic,10-Kueche,98-Devices
attr KU.rollladen serialNr OEQ2336909
attr KU.rollladen subType blindActuator
attr KU.rollladen webCmd up:down:stop:0:10:20:30:40:50:60:70:80:90:100


Dies funktioniert aber immer noch nicht.

KölnSolar

#249
wie auch.
wikilesen und verstehen.


Edit: OK, das passt nicht wirklich. :-[ Aber was verstehst Du unter "command" ? Muss ja so etwas sein
set KU.rollladen up also z.B.
attr KU.rollladen_rollo rl_commandUp set KU.rollladen up
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

cmonty14

#250
Nach der Modifikation der Attribute
attr KU.rollladen_rollo rl_commandDown set KU.rollladen down
attr KU.rollladen_rollo rl_commandUp set KU.rollladen up

fährt der Rollladen jetzt ab und auf, allerdings immer nur einen 10% Schritt.

Das heißt, ich kann den Rollladen nicht mit einen Klick schließen (oder öffnen).
Desweiteren kann ich den Rollladen auch nicht in eine Position, z.B. 50% anfahren.

Werden hier noch weitere Attribute benötigt?

Aus meiner Sicht hängt dieses Problem damit zusammen, dass das Reading der aktuellen Rollladen-Position nicht korrekt im Modul erfasst ist.

KölnSolar

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

cmonty14

#252
Von den Set-Befehlen funktioniert nur up und down.
Dies aber nur dann, wenn im Modul das Readings - state konsistent ist mit dem realen Reading.

Sobald ich den Set-Befehl open oder closed ausführe, bewegt sich der Rollladen nicht, aber der Readings - state wird geändert und ist dann inkonsistent zum realen Reading.

Frage:
Wie kann ich sicherstellen, dass dieses Modul (ausschließlich) das Reading pct des Aktors verwendet?

GunterB

Hallo Zusammen,

ich habe das Problem, dass meine ROLLO Module nicht immer die im rl_command hinterlegten Befehle ausführen.
Das Auftreten ist Zufällig, und ich meine es trat erst auf, nachdem ich das "set extern closed" etc... verwende.

Gestern ist es mir per Handbedienung eines ROLLO aufgefallen.
Beim Klick auf ROLLO closed, wurde das Stateicon Rot und das ROLLO meinte abwärts zu fahren.
Mein MQTT_DEVICE hatte davon aber nichts mitbekommen, und der STATE bleib bei OPEN.
Ein erneuters Klicken auf ROLLO closed, wurde dann der Befehl augenscheinlich an das MQTT_DEVICE gesendet und der Rolladen bewegte sich dann auch.

Das ganze passiert ab und zu, ist aber nicht wirklich reproduzierbar.
Allerdings habe ich bis jetzt auch noch nicht viel ausprobiert, um die Konstellation zu finden.

Off-my-topic
Ich würde auch gerne, aufgrund von Timingproblemen und nicht Empfangenen RF Befehlen, das SHADE Kommando der TDEF Motoren verwenden. Leider ist es nicht möglich, das ROLLO Modul extern auf einen bestimmten PCT Wert zu setzen.
Das wäre echt schön, wenn sowas auch nocht extern gemacht werden könnte.

Code (JL3_Bad) Auswählen
defmod JL3_Bad ROLLO
attr JL3_Bad userattr room_map rx_channels rx_devices structexclude
attr JL3_Bad cmdIcon open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr JL3_Bad devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop pct-100:fts_shutter_100:open pct-90:fts_shutter_80:closed pct-80:fts_shutter_80:closed pct-70:fts_shutter_70:closed pct-60:fts_shutter_60:closed pct-50:fts_shutter_50:closed pct-40:fts_shutter_40:open pct-30:fts_shutter_30:open pct-20:fts_shutter_20:open pct-10:fts_shutter_10:open pct-0:fts_shutter_10:closed
attr JL3_Bad group Rolladen
attr JL3_Bad rl_autoStop 1
attr JL3_Bad rl_commandDown set JL_3_Bad DOWN
attr JL3_Bad rl_commandStop set JL_3_Bad STOP
attr JL3_Bad rl_commandUp set JL_3_Bad UP
attr JL3_Bad rl_excessBottom 3
attr JL3_Bad rl_excessTop 0
attr JL3_Bad rl_resetTime 0
attr JL3_Bad rl_secondsDown 22
attr JL3_Bad rl_secondsUp 22
attr JL3_Bad rl_switchTime 1
attr JL3_Bad rl_type normal
attr JL3_Bad room Bad
attr JL3_Bad rx_channels 3
attr JL3_Bad rx_devices 0x00bb94
attr JL3_Bad webCmd open:closed:half:stop:pct


Code (JL_3_Bad) Auswählen
defmod JL_3_Bad MQTT_DEVICE
attr JL_3_Bad userattr JL_1_Buero JL_1_Buero_map structexclude
attr JL_3_Bad IODev myBroker
attr JL_3_Bad devStateIcon UP:shutter_open DOWN:shutter_closed SHADE:shutter_halfopen STOP:shutter_halfopen
attr JL_3_Bad publishSet UP DOWN STOP SHADE cmd/jarolift/shutter/2
attr JL_3_Bad room Bad
attr JL_3_Bad stateFormat state
attr JL_3_Bad webCmd UP:DOWN:STOP:SHADE


Code (DOIF Jarolift received command doif) Auswählen
([JL_received:"^rx_disc_low:..*$"]) (
{
    my $LogLvl = 6;
my $Empf_Device = "JL_received";
my $serial = ReadingsVal("$Empf_Device", "serial", ".");
my $function = ReadingsVal("$Empf_Device", "rx_function", ".");
my $disclow = ReadingsVal("$Empf_Device", "rx_disc_low", ".");
my $dischigh = ReadingsVal("$Empf_Device", "rx_disc_high", ".");
my $message = "";

##Kanäle:
my $disclowbin = sprintf ("%08b", $disclow);
Log $LogLvl, "disclow: $disclow";
Log $LogLvl, "disclowbin: $disclowbin";
my $dischighbin = sprintf ("%08b", $dischigh);
Log $LogLvl, "dischigh: $dischigh";
Log $LogLvl, "dischighbin: $dischighbin";
##Devices die angesteuert werden sollen:
my @Rollos = devspec2array("JL.*");
foreach(@Rollos) {
my $rx_devices = AttrVal($_, "rx_devices", undef);
my $RolloDev = $_;
next if (!defined($rx_devices));
next if ($rx_devices eq "");
my @rx_devicesList = split ' ', $rx_devices;
Log $LogLvl, "Device: $_ rx_devices: @rx_devicesList";

my $rx_channels = AttrVal($_, "rx_channels", undef);
next if (!defined($rx_channels));
next if ($rx_channels eq "");
my @rx_channelsList = split ' ', $rx_channels;
Log $LogLvl, "rx_channels: @rx_channelsList";

my $rx_serial = substr $serial, 0, -2 ;
Log $LogLvl, "rx_serial: $rx_serial";
my $i = 0;
foreach(@rx_devicesList){
if ($rx_serial eq $_ ){
my $DeviceChannel = $rx_channelsList[($i)];
Log $LogLvl, "found: $_ with Channel $DeviceChannel";

##Prüfen, ob der Channel gesetzt ist
my $sollfahren = 0;
if ($DeviceChannel < 9){
my $value = substr $disclowbin, ($DeviceChannel * (-1)), 1;
if ($value eq "1"){
Log $LogLvl, "SOLL FAHREN!!!";
$sollfahren = 1;
}
} else {
my $value = substr $dischighbin, (($DeviceChannel-8) * (-1)), 1;
if ($value eq "1"){
Log $LogLvl, "SOLL FAHREN!!!";
$sollfahren = 1;
}
}
if ($sollfahren == 1){
##rx-function:
##4 -> STOP
##8 -> HOCH
##2 -> RUNTER
##a -> Hoch/Runter
if ($function eq "0x4"){
fhem("set $RolloDev extern stop");
$message .= "$RolloDev: extern stop\n";
Log 1, "JL_received from $rx_serial: $RolloDev Funktion: STOP";
} elsif ($function eq "0x8"){
fhem("set $RolloDev extern open");
$message .= "$RolloDev: extern hoch\n";
Log 1, "JL_received from $rx_serial: $RolloDev Funktion: HOCH";
} elsif ($function eq "0x2"){
fhem("set $RolloDev extern closed");
$message .= "$RolloDev: extern runter\n";
Log 1, "JL_received from $rx_serial: $RolloDev Funktion: RUNTER";
} else {
$message .= "$RolloDev: extern stop\n";
Log 1, "JL_received from $rx_serial to ROLLO: Keine Funktion: $function";
}
}
}
$i++;
}
}
if (length($message) > 0) {
fhem("set myTelegramBot _msg $message");
}
}
)

eki

Ich würde gern mein Garagentor über ROLLO steuern. Allerdings passt das Verhalten des Antriebs nicht so recht zum ROLLO Modul. Das Verhalten ist folgendermaßen.
Es gibt nur einen Taster. Jedes Tasten verursacht je nach aktuellem Zustand des Tores entsprechende Aktionen.

  • Wenn das Tor zu ist, fährt es bei einem Tastendruck hoch.
  • Ist das Tor ganz offen, fährt es bei Tastendruck zu.
  • Fährt das Tor hoch, hält ein Tastendruck die Fahrt an. Ein weiterer Tastendruck lässt das Tor weiter auffahren.
  • Fährt das Tor herunter, hält ein Tastendruck die Fahrt an. Ein weiterer Tastendruck lässt das Tor weiter herunterfahren.

Das Problem ist eine Umkehr auf halbem Weg. Dazu müsste das Tor ja erst mal ganz hoch gefahren werden und erst dann kann man wieder in die andere Richtung fahren. Man könnte das sicher mit ein paar Zusatzreadings und notify hinbekommen, aber vielleicht hat ja jemand eine weniger komplizierte Idee.