I think the best way would be to put the time the switch changed to open in an item.
For example:
rule "Entry Doors Update"
when
reedSwitch changed from CLOSED to OPEN
then
Thread::sleep(100) // give persistence time to catch up
if (previousState == NULL) return;
reedSwitch_LastOpen.postUpdate(now.toString)
end
Your new item will be:
DateTime reedSwitch_LastOpen
And it needs to be persisted and set to restoreOnStartUp to survive a reboot
And then a rule that fires everyday to check if the time now is more than one year after the saved time and fire out an email. I don’t have that code yet. Maybe you have a go and we’ll find out together