Nein, das ist unnötig.
Die eine Rule ist hier völlig ausreichend. Ist das Tor zu, wird ja nicht einfach der Auf-Befehl gesendet, sondern zunächst geprüft, ob der Timer läuft. Dieser wird unmittelbar nach dem Startbefehl gestartet.
In dem Zusammenhang ist es evtl. noch wichtig zu erwähnen, dass seit openHAB 3 jede Rule (egal, wie sie angelegt wurde) exakt einen Thread zur Verfügung hat. Das bedeutet, eine Rule kann nicht
gleichzeitig mehrfach ausgeführt werden.
Die Rule führt aber zwingend nach dem sendCommand auch den Timerstart aus, und erst wenn der Timer bereits angelegt ist endet die Ausführung der Rule. Selbst wenn die Rule also mehrfach getriggert werden sollte (dann wird sie auch mehrfach ausgeführt, aber eben nacheinander, nicht parallel), wird beim zweiten Durchlauf der Timer bereits aktiv sein und die Rule wird abgebrochen, probiere es gerne aus.

(zum Testen könntest Du mehrere Trigger zuordnen und dann versuchen, diese Trigger möglichst zeitgleich auszulösen, damit die Rule mehrfach ausgeführt wird)
Hier eine erweiterte Version der Rule:
Code: Alles auswählen
var Timer tTor = null
rule "Tor öffnen"
when
Item Einfahrt_KameraCarAlarm changed from OFF to ON or
Item Test1 received update or
Item Test2 received update
then
logInfo("tor","Rule gestartet")
if(Garagentor_ueberwachung .state != ON) { // Tor nicht geschlossen -> Abbruch
logInfo("tor","Torkontakt meldet offen, Abbruch")
return;
}
if(tTor !== null) { // Timer läuft -> Abbruch
logInfo("tor","Timer vorhanden, Abbruch")
return;
}
logInfo("tor","Startbefehl wird gesendet")
Solarthermie_Warmwasser.sendCommand(ON) // OFF-Command im Shelly
tTor = createTimer(now.plusSeconds(180), [| // Starte Timer 3 Minuten
logInfo("tor","Timer hat Zielzeit erreicht. Torsteuerung freigegeben")
tTor = null // Lösche Zeiger auf Timer
])
end
Nachdem die Rule eingelesen wurde, ist die Variable tTor null, dann kannst Du die Rule beliebig oft innerhalb beliebig kurzer Zeit starten. Du wirst für jeden Trigger eine Zeile erhalten, dass die Rule gestartet wurde, aber nur eine Meldung, dass der Startbefehl gesendet wurde, ab dem zweiten Start bekommst Du die Meldung, dass der Timer vorhanden ist, sobald der Türkontakt den Offen-Zustand meldet, bekommst Du diese Meldung, nach drei Minuten bekommst Du exakt eine Meldung, dass die Torsteuerung wieder freigegeben ist.
Wichtig, im Hinterkopf zu behalten: die globale Variable tTor wird beim Einlesen der Datei initialisiert, auch wenn der Timer bereits gestartet wurde. Beim initialisieren geht der Inhalt verloren und der Timer könnte ein zweites Mal gestartet werden. Du solltest also nicht mit dem Auto durch das Tor fahren, während Du die Rules-Datei lädst (aber dieser Zusammenhang dürfte eher selten auftreten

)
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte