lightwaverf 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/lightwaverf.rb +19 -11
  2. metadata +1 -1
data/lib/lightwaverf.rb CHANGED
@@ -7,11 +7,13 @@ class LightWaveRF
7
7
  @config_file = nil
8
8
  @config = nil
9
9
 
10
+ # Display usage info
10
11
  def usage
11
12
  rooms = self.class.get_rooms self.get_config
12
13
  'usage: lightwaverf ' + rooms.keys.first + ' ' + rooms.values.first['device'].keys.first.to_s + ' on # where "' + rooms.keys.first + '" is a room in ' + self.get_config_file
13
14
  end
14
15
 
16
+ # Display help
15
17
  def help
16
18
  help = self.usage + "\n"
17
19
  help += "your rooms, devices, and sequences, as defined in " + self.get_config_file + ":\n\n"
@@ -21,14 +23,17 @@ class LightWaveRF
21
23
  help += "\n\nso to turn on " + room + " " + device + " type \"lightwaverf " + room + " " + device + " on\"\n"
22
24
  end
23
25
 
26
+ # Config file setter
24
27
  def set_config_file file
25
28
  @config_file = file
26
29
  end
27
30
 
31
+ # Config file getter
28
32
  def get_config_file
29
33
  @config_file || File.expand_path('~') + '/lightwaverf-config.yml'
30
34
  end
31
35
 
36
+ # Get the config file, create it if it does not exist
32
37
  def get_config
33
38
  if ! @config
34
39
  if ! File.exists? self.get_config_file
@@ -41,6 +46,7 @@ class LightWaveRF
41
46
  @config
42
47
  end
43
48
 
49
+ # Get a cleaned up version of the rooms and devices from the config file
44
50
  def self.get_rooms config = { 'room' => { }}
45
51
  rooms = { }
46
52
  r = 1
@@ -160,7 +166,6 @@ class LightWaveRF
160
166
 
161
167
  # Use a google calendar as a timer?
162
168
  # Needs a google calendar, with its url in your config file, with events like "lounge light on" etc
163
- # Only the start time of the event is used right now.
164
169
  #
165
170
  # Run this as a cron job every 5 mins, ie
166
171
  # */5 * * * * /usr/local/bin/lightwaverf timer 5 > /tmp/timer.out 2>&1
@@ -177,7 +182,6 @@ class LightWaveRF
177
182
  # interval: (Integer)
178
183
  # debug: (Boolean)
179
184
  #
180
- # @todo actually use the interval we said...
181
185
  def timer interval = 5, debug = false
182
186
  require 'net/http'
183
187
  require 'rexml/document'
@@ -205,16 +209,20 @@ class LightWaveRF
205
209
  else
206
210
  STDERR.puts 'did not get When: in ' + e.elements['summary'].text
207
211
  end
208
- if ! status
209
- event_time = event_end_time
210
- status = 'off'
212
+ # @todo fix events that start and end in this period
213
+ if status
214
+ event_times = { event_time => status }
215
+ else
216
+ event_times = { event_time => 'on', event_end_time => 'off' }
211
217
  end
212
- debug && ( p e.elements['title'].text + ' - ' + now + ' < ' + event_time + ' < ' + interval_end_time + ' ?' )
213
- if event_time >= now && event_time < interval_end_time
214
- debug && ( p 'so going to turn the ' + room + ' ' + device + ' ' + status.to_s + ' now!' )
215
- self.send room, device, status.to_s
216
- sleep 1
217
- triggered += 1
218
+ event_times.each do | t, s |
219
+ debug && ( p e.elements['title'].text + ' - ' + now + ' < ' + t + ' < ' + interval_end_time + ' ?' )
220
+ if t >= now && t < interval_end_time
221
+ debug && ( p 'so going to turn the ' + room + ' ' + device + ' ' + s.to_s + ' now!' )
222
+ self.send room, device, s.to_s
223
+ sleep 1
224
+ triggered += 1
225
+ end
218
226
  end
219
227
  end
220
228
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lightwaverf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: