lightwaverf 0.9.1 → 0.9.2

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 +16 -28
  2. metadata +18 -2
data/lib/lightwaverf.rb CHANGED
@@ -136,7 +136,7 @@ class LightWaveRF
136
136
 
137
137
  if config['calendar']
138
138
  crontab << '# ' + executable + ' cache timed events 1 hour back 4 hours ahead'
139
- crontab << '58 * * * * ' + executable + ' update_timers 60 240 > /tmp/lightwaverf_update_timers.out 2>&1'
139
+ crontab << '56 * * * * ' + executable + ' update_timers 60 240 > /tmp/lightwaverf_update_timers.out 2>&1'
140
140
  crontab << '# ' + executable + ' update_timers on reboot (works for me on raspbian)'
141
141
  crontab << '@reboot ' + executable + ' update_timers 60 240 > /tmp/lightwaverf_update_timers.out 2>&1'
142
142
  crontab << '# ' + executable + ' timer every 10 mins off peak'
@@ -184,7 +184,7 @@ class LightWaveRF
184
184
  when 'update'
185
185
  message = '### Updated timer cache'
186
186
  when 'run'
187
- message = '*** Ran timers'
187
+ # message = '*** Ran timers'
188
188
  when 'sequence'
189
189
  message = 'Ran sequence: ' + state
190
190
  when 'mood'
@@ -500,7 +500,7 @@ class LightWaveRF
500
500
  end
501
501
 
502
502
  def update_state room, device, state, debug
503
- update = false;
503
+ update = false
504
504
  config = self.get_config
505
505
  config['room'].each do | r |
506
506
  next unless r['name'] == room
@@ -924,8 +924,7 @@ class LightWaveRF
924
924
  end
925
925
 
926
926
  def run_timers interval = 5, debug = false
927
- p '----------------'
928
- p 'Running timers...'
927
+ p '-- Running timers...'
929
928
  get_timer_cache
930
929
  debug and ( p 'Timer list is: ' + YAML.dump( @timers ))
931
930
 
@@ -937,8 +936,7 @@ class LightWaveRF
937
936
  # convert to datetimes
938
937
  start_horizon = DateTime.parse start_tm.to_s
939
938
  end_horizon = DateTime.parse end_tm.to_s
940
- p '----------------'
941
- p 'Start horizon is: ' + start_horizon.to_s
939
+ p '-- Start horizon is: ' + start_horizon.to_s
942
940
  p 'End horizon is: ' + end_horizon.to_s
943
941
 
944
942
  # sort the events and states (to guarantee order if longer intervals are used)
@@ -950,17 +948,14 @@ class LightWaveRF
950
948
 
951
949
  # process each event
952
950
  @timers['events'].each do | event |
953
- debug and ( p '----------------' )
954
- debug and ( p 'Processing event: ' + event.to_s )
951
+ debug and ( p '-- Processing event: ' + event.to_s )
955
952
  debug and ( p 'Event time is: ' + event['date'].to_s )
956
953
 
957
954
  # first, assume we'll not be running the event
958
955
  run_now = false
959
956
 
960
957
  # check that it is in the horizon time
961
- unless event['date'] >= start_horizon and event['date'] < end_horizon
962
- debug and ( p 'Event is NOT in horizon...ignoring')
963
- else
958
+ if event['date'] >= start_horizon and event['date'] < end_horizon
964
959
  debug and ( p 'Event is in horizon...')
965
960
  run_now = true
966
961
 
@@ -1004,8 +999,7 @@ class LightWaveRF
1004
999
  end
1005
1000
 
1006
1001
  # process the run list
1007
- p '-----------------------'
1008
- p 'Events to execute this run are: ' + run_list.to_s
1002
+ p '-- Events to execute this run are: ' + run_list.to_s
1009
1003
 
1010
1004
  triggered = [ ]
1011
1005
 
@@ -1020,9 +1014,8 @@ class LightWaveRF
1020
1014
  p 'Executing sequence. Sequence: ' + event['state']
1021
1015
  result = self.sequence event['state'], debug
1022
1016
  else
1023
- p 'Executing device. Room: ' + event['room'] + ', Device: ' + event['device'].to_s + ', State: ' + event['state']
1024
- # result = self.send event['room'], event['device']['name'], event['state'], debug
1025
- result = self.send event['room'], event['device'].to_s, event['state'], debug # is this right?
1017
+ p 'send ' + event['room'].to_s + ' ' + event['device'].to_s + ' ' + event['state'].to_s + ' ' + debug.to_s
1018
+ result = self.send event['room'], event['device'], event['state'], debug
1026
1019
  end
1027
1020
  sleep 1
1028
1021
  triggered << [ event['room'], event['device'].to_s, event['state'] ]
@@ -1143,8 +1136,9 @@ class LightWaveRF
1143
1136
  daily = self.class.get_json file
1144
1137
  start_date = 0
1145
1138
  d = nil
1146
- last = nil
1147
- prev = nil
1139
+ last = 0
1140
+ prev = 0
1141
+ cut_off_date = ( DateTime.now - days ).to_s
1148
1142
  File.open( self.get_log_file, 'r' ).each_line do | line |
1149
1143
  begin
1150
1144
  line = JSON.parse line
@@ -1152,6 +1146,7 @@ class LightWaveRF
1152
1146
  line = nil
1153
1147
  end
1154
1148
  if line and line['timestamp'] and ( last != line['message']['usage'] )
1149
+ next if ( cut_off_date > line['timestamp'] )
1155
1150
  new_line = []
1156
1151
  d = line['timestamp'][2..3] + line['timestamp'][5..6] + line['timestamp'][8..9] # compact version of date
1157
1152
  ts = Time.parse( line['timestamp'] ).strftime '%s'
@@ -1162,7 +1157,7 @@ class LightWaveRF
1162
1157
  end
1163
1158
  new_line << ts
1164
1159
  smoothedUsage = line['message']['usage'].to_i
1165
- if last && prev
1160
+ if last != 0 and prev != 0
1166
1161
  smoothedUsage = ( smoothedUsage + last + prev ) / 3 # average of last 3 readings
1167
1162
  end
1168
1163
  new_line << smoothedUsage / 10
@@ -1179,22 +1174,15 @@ class LightWaveRF
1179
1174
  last = line['message']['usage'].to_i
1180
1175
  end
1181
1176
  end
1182
- debug and ( puts 'got ' + data.length.to_s + ' lines in the log' )
1183
- data = data.last 60 * 24 * days
1184
- debug and ( puts 'now got ' + data.length.to_s + ' lines in the log ( 60 * 24 * ' + days.to_s + ' = ' + ( 60 * 24 * days ).to_s + ' )' )
1185
1177
  if data and data.first
1186
- debug and ( puts 'data.first is ' + data.first.to_s )
1187
1178
  if data.first.first != start_date
1188
- data.first.first += start_date
1179
+ data.first[0] += start_date
1189
1180
  end
1190
1181
  end
1191
1182
  summary_file = self.get_summary_file
1192
1183
  File.open( summary_file, 'w' ) do |file|
1193
- # file.write data.to_s
1194
1184
  file.write( JSON.pretty_generate( data ))
1195
1185
  end
1196
- # @todo fix the daily stats, every night it reverts to the minimum value because the timezones are different
1197
- # so 1am on the wifi-link looks midnight on the server
1198
1186
  File.open( summary_file.gsub( 'summary', 'daily' ), 'w' ) do | file |
1199
1187
  file.write daily.to_json.to_s
1200
1188
  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.9.1
4
+ version: 0.9.2
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-07 00:00:00.000000000 Z
14
+ date: 2015-10-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: htmlentities
@@ -29,6 +29,22 @@ dependencies:
29
29
  - - ! '>='
30
30
  - !ruby/object:Gem::Version
31
31
  version: '0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: ri_cal
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
32
48
  - !ruby/object:Gem::Dependency
33
49
  name: json
34
50
  requirement: !ruby/object:Gem::Requirement