Das erklärt es sofort. Ein String ist ein String. Ein Status ist ein Status. Ich behaupte mal, (ohne homematic selbst zu nutzen), dass Du den Channel mit einem Contact Item verlinken müsstest. Falls das nicht funktionieren sollte (und nur dann!) kannst Du auch weiterhin das String Item verwenden und nun aber die Abfrage anpassen:
Begründung: Das Contact Item ist der korrekte Itemtyp für einen Boolean Wert (vor allem, wenn er sich auf einen Tür- oder Fensterkontakt bezieht).
Ansonsten ist ein Status normalerweise ein Status und kein String, aber in diesem Fall beinhaltet das String Item tatsächlich einen String als Status und eben kein Datum vom Typ OpenClosedType, also muss man auch mit einem String vergleichen.
Dass die Meldung zweimal ausgegeben wird, rührt daher, dass ein zweiter Timer angelegt wird, dabei wird der Zeiger auf den ersten Timer mit dem neuen Timer überschrieben, der erste Timer wird dabei nicht gelöscht!.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.9 - 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