Read a sensor and create an action based on the sensor reading.
After which I don't want to allow another action for some period of time ( in the order of 30 minutes).
My initial thought is to just use the Epoch time adding a 30 minute offset then testing if 30 minutes has gone by before enabling another action .
runIn is just a method for setting a scheduled job to run whatever handler you pass to it later on. When it sets the job, you can see it either from the app stats page (cog icon for the app) or from the scheduled jobs tab in logs.
Depending on what triggers the reading of sensor, you can save last reading time in a state, then when next reading comes (assuming this reading is based on an event, and not on a fixed schedule) then check the time against the state, and only take action if the last reading was over 30 minutes ago. You don't need to set a schedule for that.