Class: OpenHAB::Core::Timer

Inherits:
Object
  • Object
show all
Defined in:
lib/openhab/core/timer.rb

Overview

Timer allows you to administer the block of code that has been scheduled to run later with after.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#execution_timeZonedDateTime? (readonly)

Returns the scheduled execution time, or nil if the timer was cancelled.

Returns:

  • (ZonedDateTime, nil)

    the scheduled execution time, or nil if the timer was cancelled



# File 'lib/openhab/core/timer.rb', line 71

#idObject?

Returns:

  • (Object, nil)


34
35
36
# File 'lib/openhab/core/timer.rb', line 34

def id
  @id
end

Instance Method Details

#active?true, false

Check if the timer will execute in the future.

Returns:

  • (true, false)


# File 'lib/openhab/core/timer.rb', line 14

#canceltrue, false

Cancel timer

Returns:

  • (true, false)

    True if cancel was successful, false otherwise



109
110
111
112
# File 'lib/openhab/core/timer.rb', line 109

def cancel
  DSL.timers.delete(self)
  cancel!
end

#cancelled?true, false

Check if the timer has been cancelled.

Returns:

  • (true, false)


# File 'lib/openhab/core/timer.rb', line 18

#inspectString Also known as: to_s

Returns:

  • (String)


59
60
61
62
63
64
65
66
67
68
# File 'lib/openhab/core/timer.rb', line 59

def inspect
  r = "#<#{self.class.name} #{"#{id.inspect} " if id}#{block.source_location.join(":")}"
  if cancelled?
    r += " (cancelled)"
  else
    r += " @ #{execution_time}"
    r += " (executed)" if terminated?
  end
  "#{r}>"
end

#managed?true, false

Returns True if the timer is managed by TimerManager, false otherwise. A timer is managed by default, and becomes un-managed when #unmanage is called.

Returns:

  • (true, false)

    True if the timer is managed by TimerManager, false otherwise. A timer is managed by default, and becomes un-managed when #unmanage is called.



195
196
197
# File 'lib/openhab/core/timer.rb', line 195

def managed?
  @managed
end

#reschedule(time = nil) ⇒ self

Reschedule timer.

If the timer had been cancelled or executed, restart the timer.

Parameters:

Returns:

  • (self)


84
85
86
87
88
89
90
91
92
93
# File 'lib/openhab/core/timer.rb', line 84

def reschedule(time = nil)
  return reschedule!(time) unless id

  # re-add ourself to the TimerManager's @timers_by_id
  DSL.timers.schedule(id) do |old_timer|
    old_timer&.cancel unless old_timer.eql?(self)
    self.id = nil
    reschedule!(time)
  end
end

#running?true, false

Check if the timer code is currently running.

Returns:

  • (true, false)


# File 'lib/openhab/core/timer.rb', line 22

#terminated?true, false

Check if the timer has terminated.

Returns:

  • (true, false)


30
# File 'lib/openhab/core/timer.rb', line 30

def_delegator :@timer, :has_terminated, :terminated?

#unmanageorg.openhab.core.automation.module.script.action.Timer

Removes the timer from the TimerManager

The effects of calling this method are:

  • The timer will no longer be automatically cancelled when the script unloads. It will still execute as scheduled even if the script is unloaded/removed.
  • It can no longer be referenced by its id.
  • Subsequent calls to after with the same id will create a separate new timer.
  • Normal timer operations such as #reschedule, #cancel, etc. will still work.

Examples:

timer = after(10.hours) { logger.warn "Timer created in script1.rb fired" }
shared_cache[:script1_timer] = timer
# Don't cancel the timer when this script unloads,
# but openHAB will do it if all scripts that had referenced the shared cache are unloaded.
timer.unmanage

Returns:



186
187
188
189
190
191
# File 'lib/openhab/core/timer.rb', line 186

def unmanage
  @managed = false
  DSL.timers.delete(self)
  @id = nil
  @timer
end