String Items set using OnOffType ON will always appear to be OFF

openHAB commands are asynchronous. Your rule runs before it has taken effect.

Changed your rule trigger to received update to see the difference.
It takes a while to get your head round an event-driven system.