ekm-omnimeter 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 10dccf5f6ac3dcbab08c817d8efe39f9781352d4
4
- data.tar.gz: c890f15fa21dae3bee6478505dbde6f366318de0
3
+ metadata.gz: 758e496aeac9d9f1cf799c3beaee919f2f322060
4
+ data.tar.gz: f703b60257dd10c354d4777ce804908cca9ed7dc
5
5
  SHA512:
6
- metadata.gz: c78895c1cb06608cd7c23f0a489866c12305bef1532ee610cb8e6e69976868a96b5a16f977e080416dc8bdde0334346eced2ab543e593b4177bc9b04e6913578
7
- data.tar.gz: cee6d71ff4faaec035eaae6daa1b798063814e53363a2b1a142ce7a3c5cc189f98324edf6202c87c505f6f5eff10a273991d8564b1a2f57ca337d9c18219dd38
6
+ metadata.gz: cd0305137f9ec0e3f4bf6c2cb3da5286210ba4d267c93f89ca1a71500c952bf67c6821d6f40fd99bf33f576c50d99dffcbee2e7e2cd33bb23a520f38773fc59f
7
+ data.tar.gz: 6edc0ed3de4baefb7e57d72083aff3ea3b92cc0954480d9b39c4ff99d6c2be28a504a797c58e19bfe025ac1e7fb47903f48860f2bca14508e94d8a8227011c27
@@ -2,17 +2,13 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  ekm-omnimeter (0.1.0)
5
- bigdecimal
6
- daemons
7
5
  log4r (~> 1.1)
8
- trollop
9
6
  xively-rb-connector (~> 0.1)
10
7
 
11
8
  GEM
12
9
  remote: https://rubygems.org/
13
10
  specs:
14
11
  bigdecimal (1.2.5)
15
- daemons (1.1.9)
16
12
  diff-lcs (1.2.5)
17
13
  httparty (0.13.0)
18
14
  json (~> 1.8)
@@ -34,7 +30,6 @@ GEM
34
30
  rspec-expectations (2.14.5)
35
31
  diff-lcs (>= 1.1.3, < 2.0)
36
32
  rspec-mocks (2.14.6)
37
- trollop (2.0)
38
33
  xively-rb (0.2.10)
39
34
  httparty (>= 0.10.0)
40
35
  multi_json (>= 1.3.6)
@@ -42,7 +37,7 @@ GEM
42
37
  nokogiri (>= 1.5.6)
43
38
  ox (>= 1.5.9)
44
39
  yajl-ruby (>= 1.1.0)
45
- xively-rb-connector (0.1.1)
40
+ xively-rb-connector (0.1.3)
46
41
  bigdecimal (~> 1.2)
47
42
  log4r (~> 1.1)
48
43
  xively-rb (~> 0.2)
@@ -55,4 +50,4 @@ DEPENDENCIES
55
50
  bundler (~> 1.3)
56
51
  ekm-omnimeter!
57
52
  rake (~> 10.2)
58
- rspec
53
+ rspec (~> 2.14)
data/README.md CHANGED
@@ -17,7 +17,6 @@ TODO:
17
17
  * Add specs
18
18
  * Add daemon to monitor meter's output at regular intervals
19
19
 
20
- NOTE:
21
20
  ## Requirements
22
21
 
23
22
  * Ruby 2.0.0 or higher
@@ -26,7 +26,6 @@ Gem::Specification.new do |spec|
26
26
  # Runtime dependencies
27
27
  spec.add_runtime_dependency "log4r", "~> 1.1"
28
28
  spec.add_runtime_dependency "xively-rb-connector", "~> 0.1"
29
- spec.add_runtime_dependency "bigdecimal", "~> 1.2"
30
29
 
31
30
 
32
31
  end
@@ -0,0 +1,23 @@
1
+ module EkmOmnimeter
2
+
3
+ class << self
4
+ attr_writer :configuration
5
+ end
6
+
7
+ def self.configuration
8
+ @configuration ||= Configuration.new
9
+ end
10
+
11
+ def self.reset
12
+ @configuration = Configuration.new
13
+ end
14
+
15
+ def self.configure
16
+ yield(configuration)
17
+ end
18
+
19
+ class Configuration
20
+ attr_accessor :sockets
21
+ end
22
+
23
+ end
@@ -13,7 +13,7 @@ module EkmOmnimeter
13
13
  VALID_POWER_CONFIGURATIONS = [:single_phase_2wire, :single_phase_3wire, :three_phase_3wire, :three_phase_4wire]
14
14
 
15
15
  # Initialization attributes
16
- attr_reader :meter_number, :remote_address, :remote_port, :power_configuration
16
+ attr_reader :meter_number, :remote_address, :remote_port, :power_configuration, :last_read_timestamp
17
17
 
18
18
  # Request A
19
19
  #attr_reader :meter_type, :meter_firmware, :address, :total_active_kwh, :total_kvarh, :total_rev_kwh, :three_phase_kwh, :three_phase_rev_kwh, :resettable_kwh, :resettable_reverse_kwh, :volts_l1, :volts_l2, :volts_l3, :amps_l1, :amps_l2, :amps_l3, :watts_l1, :watts_l2, :watts_l3, :watts_total, :cosϴ_l1, :cosϴ_l2, :cosϴ_l3, :var_l1, :var_l2, :var_l3, :var_total, :freq, :pulse_count_1, :pulse_count_2, :pulse_count_3, :pulse_input_hilo, :direction_of_current, :outputs_onoff, :kwh_data_decimal_places,
@@ -54,41 +54,43 @@ module EkmOmnimeter
54
54
  #@pulse_input_3_device = options[:pulse_input_2_device] || nil
55
55
 
56
56
  @values = {}
57
- @last_update = nil
57
+ @last_read_timestamp = nil
58
58
 
59
59
  # Get values
60
- request_a()
60
+ read()
61
61
 
62
62
  end
63
63
 
64
- # Alias request_a with read
64
+ # A complete read spans two protocol requests
65
65
  def read
66
66
  request_a()
67
+ request_b()
68
+ @values
67
69
  end
68
70
 
69
71
  # Formatted datetime reported by meter during last read
70
- def measurement_timestamp
72
+ def meter_timestamp
71
73
  "20#{current_time[0,2]}-#{current_time[2,2]}-#{current_time[4,2]} #{current_time[6,2]}:#{current_time[ 8,2]}:#{current_time[10,2]}"
72
74
  end
73
75
 
74
76
  # Attribute handler that delegates attribute reads to the values hash
75
77
  def method_missing(method_sym, *arguments, &block)
76
78
 
77
- @logger.debug "method_missing #{method_sym.inspect}"
79
+ #@logger.debug "method_missing #{method_sym.inspect}"
78
80
 
79
81
  # Only refresh data if its more than 0.25 seconds old
80
- et = @last_update.nil? ? 0 : (Time.now - @last_update)
81
- @logger.debug "Elapsed time since last read #{et}"
82
+ et = @last_read_timestamp.nil? ? 0 : (Time.now - @last_read_timestamp)
83
+ #logger.debug "Elapsed time since last read #{et}"
82
84
  if et > 250
83
85
  @logger.info "More than 250 milliseconds have passed, updating data"
84
86
  read()
85
87
  end
86
88
 
87
89
  if @values.include? method_sym
88
- @logger.debug "Found #{method_sym}"
90
+ #logger.debug "Found #{method_sym}"
89
91
  @values[method_sym]
90
92
  else
91
- @logger.debug "Didn't find #{method_sym}"
93
+ #logger.debug "Didn't find #{method_sym}"
92
94
  super
93
95
  end
94
96
  end
@@ -169,7 +171,100 @@ module EkmOmnimeter
169
171
  end
170
172
  end
171
173
 
172
- #Request A:
174
+ def to_kwh_float(s)
175
+ to_f_with_decimal_places(s, @values[:kwh_data_decimal_places])
176
+ end
177
+
178
+ def to_f_with_decimal_places(s, p=1)
179
+ unless s.nil?
180
+ v = (s.to_f / (10 ** p))
181
+ logger.debug "Casting #{s.inspect} -> #{v.inspect}"
182
+ v
183
+ else
184
+ logger.error "Could not cast #{s} to #{p} decimal places"
185
+ end
186
+ end
187
+
188
+ def cast_response_to_correct_types(d)
189
+
190
+ # Integers
191
+ [:kwh_data_decimal_places,
192
+ :watts_l1,
193
+ :watts_l2,
194
+ :watts_l3,
195
+ :watts_total,
196
+ :maximum_demand,
197
+ :ct_ratio,
198
+ :pulse_1_count,
199
+ :pulse_1_ratio,
200
+ :pulse_2_count,
201
+ :pulse_2_ratio,
202
+ :pulse_3_count,
203
+ :pulse_3_ratio,
204
+ :reactive_power_1,
205
+ :reactive_power_2,
206
+ :reactive_power_3,
207
+ :total_reactive_power,
208
+ :settable_pulse_per_kwh_ratio
209
+ ].each do |k|
210
+ logger.debug "Casting #{k} = #{d[k].inspect} -> #{d[k].to_i}"
211
+ d[k] = d[k].to_i if d.has_key?(k)
212
+ end
213
+
214
+ # Floats with precision 1
215
+ [:volts_l1,
216
+ :volts_l2,
217
+ :volts_l3,
218
+ :amps_l1,
219
+ :amps_l2,
220
+ :amps_l3
221
+ ].each do |k|
222
+ logger.debug "Casting #{k}"
223
+ d[k] = to_f_with_decimal_places(d[k], 1) if d.has_key?(k)
224
+ end
225
+
226
+ # Floats with precision 2
227
+ [:power_factor_1,
228
+ :power_factor_2,
229
+ :power_factor_3,
230
+ :frequency
231
+ ].each do |k|
232
+ logger.debug "Casting #{k}"
233
+ d[k] = to_f_with_decimal_places(d[k], 2) if d.has_key?(k)
234
+ end
235
+
236
+ # Floats with precision set by kwh_data_decimal_places
237
+ [:total_kwh,
238
+ :reactive_kwh_kvarh,
239
+ :total_forward_kwh,
240
+ :total_reverse_kwh,
241
+ :net_kwh,
242
+ :total_kwh_l1,
243
+ :total_kwh_l2,
244
+ :total_kwh_l3,
245
+ :reverse_kwh_l1,
246
+ :reverse_kwh_l2,
247
+ :reverse_kwh_l3,
248
+ :resettable_total_kwh,
249
+ :resettable_reverse_kwh,
250
+ :total_kwh_t1,
251
+ :total_kwh_t2,
252
+ :total_kwh_t3,
253
+ :total_kwh_t4,
254
+ :reverse_kwh_t1,
255
+ :reverse_kwh_t2,
256
+ :reverse_kwh_t3,
257
+ :reverse_kwh_t4
258
+ ].each do |k|
259
+ logger.debug "Casting #{k}"
260
+ d[k] = to_kwh_float(d[k]) if d.has_key?(k)
261
+ end
262
+
263
+ end
264
+
265
+
266
+ # Request A
267
+ # TODO: Instead of pre-parsing and casting everything, refactor this so that only the response string gets saved, and parse out values that are accessed.
173
268
  def request_a
174
269
 
175
270
  # 2F 3F 12 Bytes Address 30 30 21 0D 0A
@@ -178,7 +273,11 @@ module EkmOmnimeter
178
273
  read_bytes = 255
179
274
  logger.debug "Socket write #{request}" unless logger.nil?
180
275
  response = get_remote_meter_data(request, read_bytes)
181
- raise EkmError if response.nil?
276
+
277
+ if response.nil?
278
+ log.error "No response to request_a from meter #{address}"
279
+ raise EkmOmnimeter, "No response from meter."
280
+ end
182
281
 
183
282
  # Split the response string into an array and prepare a hash to store the values
184
283
  a = response.split('')
@@ -189,12 +288,20 @@ module EkmOmnimeter
189
288
  d[:meter_type] = a.shift(2) # 2 Byte Meter Type
190
289
  d[:meter_firmware] = a.shift(1) # 1 Byte Meter Firmware
191
290
  d[:address] = a.shift(12) # 12 Bytes Address
192
- d[:total_active_kwh] = a.shift(8) # 8 Bytes total Active kWh
193
- d[:total_kvarh] = a.shift(8) # 8 Bytes Total kVARh
194
- d[:total_rev_kwh] = a.shift(8) # 8 Bytes Total Rev.kWh
195
- d[:three_phase_kwh] = a.shift(24) # 24 Bytes 3 phase kWh
196
- d[:three_phase_rev_kwh] = a.shift(24) # 24 Bytes 3 phase Rev.kWh
197
- d[:resettable_kwh] = a.shift(8) # 8 Bytes Resettable kWh
291
+ d[:total_kwh] = a.shift(8) # 8 Bytes total Active kWh
292
+ d[:reactive_kwh_kvarh] = a.shift(8) # 8 Bytes Total kVARh
293
+ d[:total_reverse_kwh] = a.shift(8) # 8 Bytes Total Rev.kWh
294
+
295
+ # 24 Bytes 3 phase kWh
296
+ d[:total_kwh_l1] = a.shift(8)
297
+ d[:total_kwh_l2] = a.shift(8)
298
+ d[:total_kwh_l3] = a.shift(8)
299
+ # 24 Bytes 3 phase Rev.kWh
300
+ d[:reverse_kwh_l1] = a.shift(8)
301
+ d[:reverse_kwh_l2] = a.shift(8)
302
+ d[:reverse_kwh_l3] = a.shift(8)
303
+
304
+ d[:resettable_total_kwh] = a.shift(8) # 8 Bytes Resettable kWh
198
305
  d[:resettable_reverse_kwh] = a.shift(8) # 8 bytes Resettable Reverse kWh
199
306
  d[:volts_l1] = a.shift(4) # 4 Bytes Volts L1
200
307
  d[:volts_l2] = a.shift(4) # 4 Bytes Volts L2
@@ -206,17 +313,17 @@ module EkmOmnimeter
206
313
  d[:watts_l2] = a.shift(7) # 7 Bytes Watts L2
207
314
  d[:watts_l3] = a.shift(7) # 7 Bytes Watts L3
208
315
  d[:watts_total] = a.shift(7) # 7 Bytes Watts Total
209
- d[:cosϴ_l1] = a.shift(4) # 4 Bytes Cosϴ L1
210
- d[:cosϴ_l2] = a.shift(4) # 4 Bytes Cosϴ L2
211
- d[:cosϴ_l3] = a.shift(4) # 4 Bytes Cosϴ L3
212
- d[:var_l1] = a.shift(7) # 7 Bytes VAR L1
213
- d[:var_l2] = a.shift(7) # 7 Bytes VAR L2
214
- d[:var_l3] = a.shift(7) # 7 Bytes VAR L3
215
- d[:var_total] = a.shift(7) # 7 Bytes VAR Total
216
- d[:freq] = a.shift(4) # 4 Bytes Freq
217
- d[:pulse_count_1] = a.shift(8) # 8 Bytes Pulse Count 1
218
- d[:pulse_count_2] = a.shift(8) # 8 Bytes Pulse Count 2
219
- d[:pulse_count_3] = a.shift(8) # 8 Bytes Pulse Count 3
316
+ d[:power_factor_1] = a.shift(4) # 4 Bytes Cosϴ L1
317
+ d[:power_factor_2] = a.shift(4) # 4 Bytes Cosϴ L2
318
+ d[:power_factor_3] = a.shift(4) # 4 Bytes Cosϴ L3
319
+ d[:reactive_power_1] = a.shift(7) # 7 Bytes VAR L1
320
+ d[:reactive_power_2] = a.shift(7) # 7 Bytes VAR L2
321
+ d[:reactive_power_3] = a.shift(7) # 7 Bytes VAR L3
322
+ d[:total_reactive_power] = a.shift(7) # 7 Bytes VAR Total
323
+ d[:frequency] = a.shift(4) # 4 Bytes Freq
324
+ d[:pulse_1_count] = a.shift(8) # 8 Bytes Pulse Count 1
325
+ d[:pulse_2_count] = a.shift(8) # 8 Bytes Pulse Count 2
326
+ d[:pulse_3_count] = a.shift(8) # 8 Bytes Pulse Count 3
220
327
  d[:pulse_input_hilo] = a.shift(1) # 1 Byte Pulse Input Hi/Lo
221
328
  d[:direction_of_current] = a.shift(1) # 1 Bytes direction of current
222
329
  d[:outputs_onoff] = a.shift(1) # 1 Byte Outputs On/Off
@@ -224,20 +331,26 @@ module EkmOmnimeter
224
331
  a.shift(2) # 2 Bytes Reserved
225
332
  d[:current_time] = a.shift(14) # 14 Bytes Current Time
226
333
  a.shift(6) # 30 30 21 0D 0A 03
227
- #d[] = a.shift(2) # 2 Bytes CRC16
334
+ d[:CRC16] = a.shift(2) # 2 Bytes CRC16
228
335
 
229
336
  # Smash arrays into strungs
230
337
  d.each {|k,v| d[k] = v.join('')}
231
338
 
339
+ # Cast types
340
+ @values[:kwh_data_decimal_places] = d[:kwh_data_decimal_places].to_i
341
+ cast_response_to_correct_types(d)
342
+
232
343
  # Merge to values and reset time
233
344
  @values.merge!(d)
234
- @last_update = Time.now
345
+ @last_read_timestamp = Time.now
235
346
 
236
347
  # Calculate totals based on wiring configuration
237
- @values[:measurement_timestamp] = measurement_timestamp
348
+ @values[:meter_timestamp] = meter_timestamp
238
349
  @values[:volts] = calculate_measurement(d[:volts_l1], d[:volts_l2], d[:volts_l3])
239
350
  @values[:amps] = calculate_measurement(d[:amps_l1], d[:amps_l2], d[:amps_l3])
240
351
  @values[:watts] = calculate_measurement(d[:watts_l1], d[:watts_l2], d[:watts_l3])
352
+ @values[:total_forward_kwh] = total_kwh - total_reverse_kwh
353
+ @values[:net_kwh] = total_forward_kwh - total_reverse_kwh
241
354
 
242
355
  # Return the hash as an open struct
243
356
  return d
@@ -245,7 +358,8 @@ module EkmOmnimeter
245
358
  end
246
359
 
247
360
 
248
- # Request B:
361
+ # Request B
362
+ # TODO: Instead of pre-parsing and casting everything, refactor this so that only the response string gets saved, and parse out values that are accessed.
249
363
  def request_b
250
364
 
251
365
  # 2F 3F 12 Bytes Address 30 31 21 0D 0A
@@ -254,10 +368,13 @@ module EkmOmnimeter
254
368
  read_bytes = 255
255
369
  logger.debug "Socket write #{request}" unless logger.nil?
256
370
  response = get_remote_meter_data(request, read_bytes)
257
- raise EkmError if response.nil?
371
+ if response.nil?
372
+ log.error "No response to request_a from meter #{address}"
373
+ raise EkmOmnimeter, "No response from meter."
374
+ end
258
375
 
259
376
  # Split the response string into an array and prepare a hash to store the values
260
- a = s.split('')
377
+ a = response.split('')
261
378
  d = {}
262
379
 
263
380
  # Return (255 Bytes total) :
@@ -265,9 +382,20 @@ module EkmOmnimeter
265
382
  d[:meter_type] = a.shift(2) # 2 Byte Meter Type
266
383
  d[:meter_firmware] = a.shift(1) # 1 Byte Meter Firmware
267
384
  d[:address] = a.shift(12) # 12 Bytes Address
385
+
268
386
  # Diff from request A start
269
- d[:t1_t2_t3_t4_kwh] = a.shift(32) # 32 Bytes T1, T2, T3, T4 kwh
270
- d[:t1_t2_t3_t4_rev_kwh] = a.shift(32) # 32 Bytes T1, T2, T3, T4 Rev kWh
387
+ #d[:t1_t2_t3_t4_kwh] = a.shift(32) # 32 Bytes T1, T2, T3, T4 kwh
388
+ d[:total_kwh_t1] = a.shift(8)
389
+ d[:total_kwh_t2] = a.shift(8)
390
+ d[:total_kwh_t3] = a.shift(8)
391
+ d[:total_kwh_t4] = a.shift(8)
392
+
393
+ #d[:t1_t2_t3_t4_rev_kwh] = a.shift(32) # 32 Bytes T1, T2, T3, T4 Rev kWh
394
+ d[:reverse_kwh_t1] = a.shift(8)
395
+ d[:reverse_kwh_t2] = a.shift(8)
396
+ d[:reverse_kwh_t3] = a.shift(8)
397
+ d[:reverse_kwh_t4] = a.shift(8)
398
+
271
399
  # Diff from request A end
272
400
  d[:volts_l1] = a.shift(4) # 4 Bytes Volts L1
273
401
  d[:volts_l2] = a.shift(4) # 4 Bytes Volts L2
@@ -279,33 +407,36 @@ module EkmOmnimeter
279
407
  d[:watts_l2] = a.shift(7) # 7 Bytes Watts L2
280
408
  d[:watts_l3] = a.shift(7) # 7 Bytes Watts L3
281
409
  d[:watts_total] = a.shift(7) # 7 Bytes Watts Total
282
- d[:cosϴ_l1] = a.shift(4) # 4 Bytes Cosϴ L1
283
- d[:cosϴ_l2] = a.shift(4) # 4 Bytes Cosϴ L2
284
- d[:cosϴ_l3] = a.shift(4) # 4 Bytes Cosϴ L3
410
+ d[:power_factor_1] = a.shift(4) # 4 Bytes Cosϴ L1
411
+ d[:power_factor_2] = a.shift(4) # 4 Bytes Cosϴ L2
412
+ d[:power_factor_3] = a.shift(4) # 4 Bytes Cosϴ L3
285
413
  # Diff from request A start
286
414
  d[:maximum_demand] = a.shift(8) # 8 Bytes Maximum Demand
287
- d[:maximum_demand_time] = a.shift(1) # 1 Byte Maximum Demand Time
288
- d[:pulse_ratio_1] = a.shift(4) # 4 Bytes Pulse Ratio 1
289
- d[:pulse_ratio_2] = a.shift(4) # 4 Bytes Pulse Ratio 2
290
- d[:pulse_ratio_3] = a.shift(4) # 4 Bytes Pulse Ratio 3
415
+ d[:maximum_demand_period] = a.shift(1) # 1 Byte Maximum Demand Time
416
+ d[:pulse_1_ratio] = a.shift(4) # 4 Bytes Pulse Ratio 1
417
+ d[:pulse_2_ratio] = a.shift(4) # 4 Bytes Pulse Ratio 2
418
+ d[:pulse_3_ratio] = a.shift(4) # 4 Bytes Pulse Ratio 3
291
419
  d[:ct_ratio] = a.shift(4) # 4 Bytes CT Ratio
292
- d[:auto_reset_md] = a.shift(1) # 1 Bytes Auto Reset MD
293
- d[:settable_imp_per_kWh_constant] = a.shift(4) # 4 Bytes Settable Imp/kWh Constant
420
+ d[:auto_reset_max_demand] = a.shift(1) # 1 Bytes Auto Reset MD
421
+ d[:settable_pulse_per_kwh_ratio] = a.shift(4) # 4 Bytes Settable Imp/kWh Constant
294
422
  # Diff from request A end
295
- a.shift(56) # 56 Bytes Reserved
423
+ a.shift(56) # 56 Bytes Reserved
296
424
  d[:current_time] = a.shift(14) # 14 Bytes Current Time
297
425
  a.shift(6) # 30 30 21 0D 0A 03
298
- d[] = a.shift(2) # 2 Bytes CRC16
426
+ d[:checksum] = a.shift(2) # 2 Bytes CRC16
299
427
 
300
428
  # Smash arrays into strungs
301
429
  d.each {|k,v| d[k] = v.join('')}
302
430
 
431
+ # Cast types
432
+ cast_response_to_correct_types(d)
433
+
303
434
  # Merge to values and reset time
304
435
  @values.merge!(d)
305
- @last_update = Time.now
436
+ @last_read_timestamp = Time.now
306
437
 
307
438
  # Calculate totals based on wiring configuration
308
- @values[:measurement_timestamp] = measurement_timestamp
439
+ @values[:meter_timestamp] = meter_timestamp
309
440
  @values[:volts] = calculate_measurement(d[:volts_l1], d[:volts_l2], d[:volts_l3])
310
441
  @values[:amps] = calculate_measurement(d[:amps_l1], d[:amps_l2], d[:amps_l3])
311
442
  @values[:watts] = calculate_measurement(d[:watts_l1], d[:watts_l2], d[:watts_l3])
@@ -6,7 +6,7 @@ module EkmOmnimeter
6
6
 
7
7
  module VERSION #:nodoc:
8
8
  MAJOR = 0
9
- MINOR = 1
9
+ MINOR = 2
10
10
  PATCH = 0
11
11
 
12
12
  STRING = [MAJOR, MINOR, PATCH].join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ekm-omnimeter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Duggan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-02 00:00:00.000000000 Z
11
+ date: 2014-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.1'
83
- - !ruby/object:Gem::Dependency
84
- name: bigdecimal
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- version: '1.2'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ~>
95
- - !ruby/object:Gem::Version
96
- version: '1.2'
97
83
  description: Ruby interface to the EKM Omnimeter Pulse
98
84
  email:
99
85
  - Jordan.Duggan@gmail.com
@@ -109,6 +95,7 @@ files:
109
95
  - Rakefile
110
96
  - ekm-omnimeter.gemspec
111
97
  - lib/ekm-omnimeter.rb
98
+ - lib/ekm-omnimeter/configuration.rb
112
99
  - lib/ekm-omnimeter/logging.rb
113
100
  - lib/ekm-omnimeter/meter.rb
114
101
  - lib/ekm-omnimeter/version.rb