amon 0.9.0 → 0.10.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.
data/README.md CHANGED
@@ -3,7 +3,7 @@ Ruby Client for the AMEE AMON API
3
3
 
4
4
  This is a Ruby client library for the [AMEE](http://www.amee.com/) <abbr title="AMEE Monitoring Object Notation">AMON</abbr> <abbr title="Application Programming Interface">API</abbr>. _More details and links to be inserted once information about the API is publicly available_.
5
5
 
6
- This is version 0.9.0 and is built to support AMON V3: https://github.com/AMEE/amon
6
+ This is version 0.10.0 and is built to support AMON V3: https://github.com/AMEE/amon
7
7
 
8
8
  ## Installation ##
9
9
 
data/lib/amon/device.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  module AMON
2
+
2
3
  # An AMON device, containing any number of {Reading readings}, and
3
4
  # {Measurement measurements} for those readings.
4
5
  class Device < Document
6
+
5
7
  # @return [String] The id of the device
6
8
  field :id, :name => 'deviceId'
7
9
 
@@ -46,6 +48,21 @@ module AMON
46
48
  @readings ||= json['readings'].map { |reading| Reading.new(self, reading) }
47
49
  end
48
50
 
51
+ # @return [Numeric] The 30 day completeness ratio (0 to 1) for the device
52
+ def completeness_30d
53
+ @completeness_30d ||= get_completeness_30d
54
+ end
55
+
56
+ # @return [Numeric] The 6 month completeness ratio (0 to 1) for the device
57
+ def completeness_6m
58
+ @completeness_6m ||= get_completeness_6m
59
+ end
60
+
61
+ # @return [Numeric] The all time completeness ratio (0 to 1) for the device
62
+ def completeness
63
+ @completeness ||= get_completeness
64
+ end
65
+
49
66
  # @return [Hash<String => Reading>] A hash allowing {Device#readings} to
50
67
  # be retrieved by their {Reading#type}
51
68
  def readings_by_type
@@ -73,5 +90,42 @@ module AMON
73
90
  measurements_by_name
74
91
  end
75
92
  end
93
+
94
+ private
95
+
96
+ def get_completeness_30d
97
+ unless json['completenessRatios'].nil?
98
+ json['completenessRatios'].each do |completeness_info|
99
+ if completeness_info['period'] == 'thirty_days'
100
+ return completeness_info['ratio']
101
+ end
102
+ end
103
+ end
104
+ return 0
105
+ end
106
+
107
+ def get_completeness_6m
108
+ unless json['completenessRatios'].nil?
109
+ json['completenessRatios'].each do |completeness_info|
110
+ if completeness_info['period'] == 'six_months'
111
+ return completeness_info['ratio']
112
+ end
113
+ end
114
+ end
115
+ return 0
116
+ end
117
+
118
+ def get_completeness
119
+ unless json['completenessRatios'].nil?
120
+ json['completenessRatios'].each do |completeness_info|
121
+ if completeness_info['period'] == 'full_history'
122
+ return completeness_info['ratio']
123
+ end
124
+ end
125
+ end
126
+ return 0
127
+ end
128
+
76
129
  end
77
- end
130
+
131
+ end
data/lib/amon/entity.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  module AMON
2
+
2
3
  # An AMON entity, such as a house, business park, or building floor
3
4
  class Entity < Document
5
+
4
6
  # @return [String] The id for this entity
5
7
  field :id, :name => 'entityId'
6
8
 
@@ -16,9 +18,61 @@ module AMON
16
18
  @devices ||= device_ids.map { |device_id| session.device(id, device_id) }
17
19
  end
18
20
 
19
- # @return [Array<MeteringPoint>] The metering points associated with this entity
21
+ # @return [Array<MeteringPoint>] The metering points associated with the entity
20
22
  def metering_points
21
23
  @metering_points ||= metering_point_ids.map { |id| session.metering_point(id) }
22
24
  end
25
+
26
+ # @return [Numeric] The 30 day completeness ratio (0 to 1) for the entity
27
+ def completeness_30d
28
+ @completeness_30d ||= get_completeness_30d
29
+ end
30
+
31
+ # @return [Numeric] The 6 month completeness ratio (0 to 1) for the entity
32
+ def completeness_6m
33
+ @completeness_6m ||= get_completeness_6m
34
+ end
35
+
36
+ # @return [Numeric] The all time completeness ratio (0 to 1) for the entity
37
+ def completeness
38
+ @completeness ||= get_completeness
39
+ end
40
+
41
+ private
42
+
43
+ def get_completeness_30d
44
+ unless json['completenessRatios'].nil?
45
+ json['completenessRatios'].each do |completeness_info|
46
+ if completeness_info['period'] == 'thirty_days'
47
+ return completeness_info['ratio']
48
+ end
49
+ end
50
+ end
51
+ return 0
52
+ end
53
+
54
+ def get_completeness_6m
55
+ unless json['completenessRatios'].nil?
56
+ json['completenessRatios'].each do |completeness_info|
57
+ if completeness_info['period'] == 'six_months'
58
+ return completeness_info['ratio']
59
+ end
60
+ end
61
+ end
62
+ return 0
63
+ end
64
+
65
+ def get_completeness
66
+ unless json['completenessRatios'].nil?
67
+ json['completenessRatios'].each do |completeness_info|
68
+ if completeness_info['period'] == 'full_history'
69
+ return completeness_info['ratio']
70
+ end
71
+ end
72
+ end
73
+ return 0
74
+ end
75
+
23
76
  end
24
- end
77
+
78
+ end
data/lib/amon/session.rb CHANGED
@@ -63,7 +63,8 @@ module AMON
63
63
  json = get(
64
64
  "/entities/#{ URI.escape(entity_id )}/devices/#{URI.escape(device_id)}" +
65
65
  ";earliest" +
66
- ";latest"
66
+ ";latest" +
67
+ ";completeness"
67
68
  )['device']
68
69
  Device.new(self, json)
69
70
  end
data/lib/amon/version.rb CHANGED
@@ -2,7 +2,7 @@ module AMON
2
2
  # Provides details about the version of the AMON library in use.
3
3
  module Version
4
4
  MAJOR = 0
5
- MINOR = 9
5
+ MINOR = 10
6
6
  TINY = 0
7
7
 
8
8
  STRING = "#{MAJOR}.#{MINOR}.#{TINY}"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amon
3
3
  version: !ruby/object:Gem::Version
4
- hash: 59
4
+ hash: 55
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 9
8
+ - 10
9
9
  - 0
10
- version: 0.9.0
10
+ version: 0.10.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - AMEE
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-10-24 00:00:00 Z
18
+ date: 2012-11-01 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json