lightwaverf 0.8.0 → 0.9.0

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 +26 -18
  2. metadata +2 -2
data/lib/lightwaverf.rb CHANGED
@@ -61,7 +61,8 @@ class LightWaveRF
61
61
  # debug: (Boolean)
62
62
  def configure debug = false
63
63
  config = self.get_config
64
- puts 'What is the ip address of your wifi link? (currently "' + self.get_config['host'].to_s + '"). Enter a blank line to broadcast UDP commands (ok to just hit enter here).'
64
+ puts 'What is the ip address of your wifi link? (currently "' + self.get_config['host'].to_s + '").'
65
+ puts 'Enter a blank line to broadcast UDP commands (ok to just hit enter here).'
65
66
  host = STDIN.gets.chomp
66
67
  config['host'] = host if ! host.to_s.empty?
67
68
  puts 'What is the address of your calendar ics file? (currently "' + self.get_config['calendar'].to_s + '")'
@@ -91,7 +92,7 @@ class LightWaveRF
91
92
  puts 'If you already have rooms and devices set up on another lightwaverf app then hit enter here, and "lightwaverf update" first.'
92
93
  if device = STDIN.gets.chomp
93
94
  parts = device.split ' '
94
- if !parts[0].to_s.empty? and !parts[1].to_s.empty?
95
+ if !parts.first.to_s.empty? and !parts[1].to_s.empty?
95
96
  new_room = parts.shift
96
97
  config['room'] ||= [ ]
97
98
  found = false
@@ -157,10 +158,6 @@ class LightWaveRF
157
158
  'Saved config file ' + file
158
159
  end
159
160
 
160
- def set_config_file file
161
- @config_file = file
162
- end
163
-
164
161
  def get_config_file
165
162
  @config_file || File.expand_path('~') + '/lightwaverf-config.yml'
166
163
  end
@@ -330,7 +327,6 @@ class LightWaveRF
330
327
 
331
328
  # Get variables from the source of lightwaverfhost.co.uk
332
329
  # Separated out so it can be tested
333
- #
334
330
  def get_variables_from body = '', debug = nil
335
331
  # debug and ( p '[Info - LightWaveRF Gem] body was ' + body.to_s )
336
332
  variables = { }
@@ -467,7 +463,7 @@ class LightWaveRF
467
463
  def send room = nil, device = nil, state = 'on', debug = false
468
464
  debug and ( p self.time 'send' )
469
465
  success = false
470
- debug and ( p 'Executing send on device: ' + device + ' in room: ' + room + ' with state: ' + state )
466
+ debug and ( p 'Executing send on device: ' + device + ' in room: ' + room + ' with ' + ( state ? 'state ' + state : 'no state' ))
471
467
  rooms = self.class.get_rooms self.get_config, debug
472
468
  debug and ( p self.time 'got rooms' )
473
469
 
@@ -492,6 +488,7 @@ class LightWaveRF
492
488
  data = self.raw command
493
489
  debug and ( p self.time 'response is ' + data.to_s )
494
490
  success = true
491
+ data = self.update_state room, device, state, debug
495
492
  else
496
493
  STDERR.puts self.usage( room );
497
494
  end
@@ -499,6 +496,18 @@ class LightWaveRF
499
496
  success
500
497
  end
501
498
 
499
+ def update_state room, device, state, debug
500
+ config = self.get_config
501
+ config['room'].each do | r |
502
+ next unless r['name'] == room
503
+ r['device'].each do | d |
504
+ next unless d['name'] == device
505
+ d['state'] = state
506
+ end
507
+ end
508
+ self.put_config config
509
+ end
510
+
502
511
  # A sequence of events
503
512
  # maybe I really mean a "mood" here?
504
513
  #
@@ -705,9 +714,10 @@ class LightWaveRF
705
714
  STDERR.puts 'This contains my test events, not yours! Add your ical url to your config file'
706
715
  url = 'https://www.google.com/calendar/ical/aar79qh62fej54nprq6334s7ck%40group.calendar.google.com/public/basic.ics'
707
716
  end
717
+ url
708
718
  end
709
719
 
710
- def request url
720
+ def request url, debug = false
711
721
  parsed_url = URI.parse url
712
722
  http = Net::HTTP.new parsed_url.host, parsed_url.port
713
723
  begin
@@ -817,7 +827,7 @@ class LightWaveRF
817
827
 
818
828
  url = self.get_calendar_url debug
819
829
  debug and ( p url )
820
- response = self.request url
830
+ response = self.request url, debug
821
831
  if response.code != '200'
822
832
  debug and ( p "Response code is: " + response.code)
823
833
  return self.log_timer_event 'update', nil, nil, nil, false
@@ -825,9 +835,7 @@ class LightWaveRF
825
835
 
826
836
  cals = RiCal.parse_string( response.body )
827
837
 
828
- timers = { }
829
- timers['events'] = [ ]
830
- timers['states'] = [ ]
838
+ timers = { 'events' => [ ], 'states' => [ ] }
831
839
 
832
840
  cals.first.events.each do | e |
833
841
  occurs = e.occurrences( :overlapping => [ query_start, query_end ] )
@@ -847,8 +855,8 @@ class LightWaveRF
847
855
  # fix this with something like
848
856
  # if self.get_state event['state'] ! starts with F
849
857
 
850
- if event['type'] == 'device' and event['state'] != 'on' and event['state'] != 'off'
851
- debug and ( p 'Duplicating ' + event['summary'] + ' with state ' + event['state'].to_s )
858
+ if event['type'] == 'device' and event['state'].first != 'o'
859
+ debug and ( p 'Duplicating ' + event['summary'] + ' with ' + ( event['state'] ? 'state ' + event['state'] : 'no state' ))
852
860
  event['state'] = 'on' if event['state'].nil?
853
861
  end_event = event.dup # duplicate event for start and end
854
862
  end_event['date'] = event['end']
@@ -872,7 +880,7 @@ class LightWaveRF
872
880
  else
873
881
  timers['events'].push event
874
882
  end
875
-
883
+
876
884
  end
877
885
 
878
886
  end
@@ -1171,8 +1179,8 @@ class LightWaveRF
1171
1179
  debug and ( puts 'now got ' + data.length.to_s + ' lines in the log ( 60 * 24 * ' + days.to_s + ' = ' + ( 60 * 24 * days ).to_s + ' )' )
1172
1180
  if data and data.first
1173
1181
  debug and ( puts 'data.first is ' + data.first.to_s )
1174
- if data.first[0] != start_date
1175
- data[0][0] += start_date
1182
+ if data.first.first != start_date
1183
+ data.first.first += start_date
1176
1184
  end
1177
1185
  end
1178
1186
  summary_file = self.get_summary_file
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.8.0
4
+ version: 0.9.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-10-04 00:00:00.000000000 Z
14
+ date: 2015-10-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: htmlentities