Also, ein Item hat zwei Funktionen, die erst mal völlig unabhängig voneinander sind.
Salopp könnte man von den zwei Kommunikationsrichtungen sprechen (also rein/raus), das stimmt so aber nicht. In Wahrheit sind die beiden Dinge zum einen der Status und zum anderen der Befehl. Beide Eigenschaften des Items sind zunächst völlig unabhängig voneinander.
Ein Contact Item hat z.B. auch völlig unterschiedliche Status und Befehle (bzw. gibt es nur exakt einen Befehl), als Status gibt es
OPEN,
CLOSED,
NULL und evtl. noch
UNDEF, als Befehl gibt es
REFRESH, aber keinen der genannten Status (und der Befehl kann nicht als Status auftreten).
Beim Switch ist es nicht so eindeutig, aber auch da gibt es zusätzlich zu den Status
ON und
OFF noch
NULL und evtl.
UNDEF, als Befehle aber lediglich
ON,
OFF und
REFRESH (und letzterer ist eher unüblich...)
Nur ein Befehl wird auch an einen verlinkten Channel weitergeleitet. Empfängt ein Channel einen Wert, wird dieser gewöhnlich immer als Status gewertet, nicht als Befehl. Bei einigen Addons kann man dieses Verhalten aber ändern (z.B. mqtt,
isCommand).
Die Krux aus Support-Sicht (wenn ich mich mal als Support einstufen darf

): openHAB möchte gerne eine möglichst "flotte" Bedienung ermöglichen. Deshalb sendet es nicht nur einen Befehl, sondern setzt anschließend schon mal das zugehörige Item auf den zu erwartenden Status. In den meisten Fällen wird das auch klaglos funktionieren, manchmal geht es auch schief, aber vor allem erweckt openHAB damit den Eindruck, als seien Staus und Befehl "irgendwie das gleiche", in Wahrheit sind sie aber fundamental verschieden.
Man kann openHAB (pro Item) auch anweisen, nie von sich aus Status zu setzen, weil es einen Befehl gesendet hat, der entsprechende Parameter heißt autoupdate und befindet sich in den Metadaten des Items.
Du kannst ein Item immer beliebig auch nur für eine der beiden Funktionen nutzen, also z.B. ein Item, welches ausschließlich zum Senden von Befehlen verwendet wird, oder ein Item, welches ausschließlich einen Status anzeigt.
Das wird allerdings nicht das eigentliche Problem sein
Switch Items kennen als Status wie erwähnt ausschließlich ON, OFF, NULL und evtl. noch UNDEF, Contact Items kennen ausschließlich OPEN, CLOSED, NULL und evtl. UNDEF. Ein Switch Item kennt keinen Status CLOSE oder OPEN, ein Contact Item kennt kein CLOSE als Status, sondern lediglich CLOSED.
Ein String Item könnte CLOSE und OPEN als Status annehmen, oder auch Open oder Close, besser wäre es aber, das
korrekt umzusetzen, das wäre dann, als Rückmeldung ein Contact Item zu verwenden (mit CLOSED/OPEN) und ganz wichtig, an dieser Stelle zu verstehen, dass damit aus openHAB-Sicht ein elektrischer Kontakt gemeint ist, nicht zwingend der Zustand der Hühnerklappe. Man kann aber natürlich definieren,dass der Kontakt geöffnet ist, wenn auch die Hühnerklappe geöffnet ist

und dann passt es zufällig...
Möchte man das Ganze mit möglichst wenig Aufwand (auf openHAB-Seite) abbilden, so kann man natürlich auch einen switch Channel definieren, der bei ON die Klappe öffnet und bei OFF die Klappe schließt. Als Rückmeldung kann man dann genauso ON und OFF verwenden (separates Topic...) und man bekommt die Rückmeldung auf das selbe Item, welches man auch zum Steuern verwendet. Dann muss sich halt die externe Logik um die eigentliche Steuerung kümmern.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet