amon 0.6.0 → 0.7.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.6.0 and is built to support AMON V3: https://github.com/AMEE/amon
6
+ This is version 0.7.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,9 +1,13 @@
1
1
  module AMON
2
- # An AMON device, containing any number of {Reading readings}, and {Measurement measurements} for those readings.
2
+ # An AMON device, containing any number of {Reading readings}, and
3
+ # {Measurement measurements} for those readings.
3
4
  class Device < Document
4
5
  # @return [String] The id of the device
5
6
  field :id, :name => 'deviceId'
6
7
 
8
+ # @return [Time] The latest measurement start date, if provided
9
+ field :earliest_measurement, :name => 'earliestMeasurement', :as => Time
10
+
7
11
  # @return [Time] The latest measurement start date, if provided
8
12
  field :latest_measurement, :name => 'latestMeasurement', :as => Time
9
13
 
@@ -32,8 +36,8 @@ module AMON
32
36
  @readings ||= json['readings'].map { |reading| Reading.new(self, reading) }
33
37
  end
34
38
 
35
- # @return [Hash<String => Reading>] A hash allowing {Device#readings} to be retrieved by their
36
- # {Reading#type}
39
+ # @return [Hash<String => Reading>] A hash allowing {Device#readings} to
40
+ # be retrieved by their {Reading#type}
37
41
  def readings_by_type
38
42
  readings.inject({}) do |readings_by_type, reading|
39
43
  readings_by_type[reading.type] = reading
@@ -47,8 +51,10 @@ module AMON
47
51
  session.measurements(entity_id, id, start_date, end_date, raw)
48
52
  end
49
53
 
50
- # @return [Hash<String => Measurement>] A hash allowing {Device#measurements} to be retrieved
51
- # by their {Measurement#name}
54
+ # @return [Hash<String => Measurement>] A hash allowing
55
+ # {Device#measurements} to be
56
+ # retrieved by their
57
+ # {Measurement#name}
52
58
  # @see Device#measurements
53
59
  def measurements_by_name(entity_id, start_date, end_date, raw = false)
54
60
  measurements(entity_id, start_date, end_date, raw).inject({}) do |measurements_by_name, measurement|
data/lib/amon/reading.rb CHANGED
@@ -1,14 +1,19 @@
1
1
  module AMON
2
- # AMON readings are 'categories' of {Measurement measurements} which are taken by {Device devices}.
3
- # For example, one reading may be 'electricalInput' with the unit 'kWh'.
2
+
3
+ # AMON readings are 'categories' of {Measurement measurements} which are
4
+ # taken by {Device devices}. For example, one reading may be 'electricalInput'
5
+ # with the unit 'kWh'.
4
6
  class Reading < DocumentPart
5
- # @return [String] The type of reading, which is unique within the parent {Device device}
7
+
8
+ # @return [String] The type of reading, which is unique within the parent
9
+ # {Device device}
6
10
  field :type
7
11
 
8
12
  # @return [String] An arbitrary name for the reading
9
13
  field :name
10
14
 
11
- # @return [String] The units this reading records {Measurement measurements} in
15
+ # @return [String] The units this reading records
16
+ # {Measurement measurements} in
12
17
  field :unit
13
18
 
14
19
  # @return [Numeric] The resolution of the reading
@@ -17,8 +22,9 @@ module AMON
17
22
  # @return [Numeric] The accuracy of the reading
18
23
  field :accuracy
19
24
 
20
- # @return ["instant", "duration"] Whether this reading records measurement values taken at a
21
- # specific point in time ('instant'), or taken as an average over a period of time ('duration')
25
+ # @return ["instant", "duration"] Whether this reading records measurement
26
+ # values taken at a specific point in time ('instant'), or taken as an
27
+ # average over a period of time ('duration')
22
28
  field :period, :default => "instant"
23
29
 
24
30
  # @attr_reader [Device device] The device which took this measurement
@@ -41,19 +47,23 @@ module AMON
41
47
  !instantaneous?
42
48
  end
43
49
 
44
- # One reading is equal to another if the devices are equal and they are the same type
50
+ # One reading is equal to another if the devices are equal and they are the
51
+ # same type
45
52
  # @return [Boolean]
46
53
  # @param [Reading] other The other reading to compare with.
47
54
  def ==(other)
48
55
  device == other.device && type == other.type
49
56
  end
50
57
 
51
- # A unique id for the reading, composed of the {Device device} id, and the {#type}. So an
52
- # '<code>electricalInput</code>' reading for a device with id '<code>b7ddac00-9415-012d-b57e-001c23973687</code>' would
53
- # have the id '<code>b7ddac00-9415-012d-b57e-001c23973687-electricalInput</code>'.
58
+ # A unique id for the reading, composed of the {Device device} id, and the
59
+ # {#type}. So an '<code>electricalInput</code>' reading for a device with
60
+ # id '<code>b7ddac00-9415-012d-b57e-001c23973687</code>' would have the
61
+ # id '<code>b7ddac00-9415-012d-b57e-001c23973687-electricalInput</code>'.
54
62
  # @return [String] the id
55
63
  def id
56
64
  "#{device.id}-#{type}"
57
65
  end
66
+
58
67
  end
59
- end
68
+
69
+ end
data/lib/amon/session.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'uri'
2
2
 
3
3
  module AMON
4
+
4
5
  # Session objects take care of making the actual HTTP requests to the AMON API
5
6
  #
6
7
  # ## Caching ##
@@ -21,6 +22,7 @@ module AMON
21
22
  # at regular intervals. Alternatively, you can use {Session#clear_cache} and keep the same
22
23
  # session.
23
24
  class Session
25
+
24
26
  # @return [Hash] The hash of configuration options to be used when making requests
25
27
  attr_reader :options
26
28
 
@@ -58,7 +60,11 @@ module AMON
58
60
  # @return [Device]
59
61
  def device(entity_id, device_id)
60
62
  cache(:devices, device_id) do
61
- json = get("/entities/#{ URI.escape(entity_id )}/devices/#{URI.escape(device_id)};latest")['device']
63
+ json = get(
64
+ "/entities/#{ URI.escape(entity_id )}/devices/#{URI.escape(device_id)}" +
65
+ ";earliest" +
66
+ ";latest"
67
+ )['device']
62
68
  Device.new(self, json)
63
69
  end
64
70
  end
@@ -74,12 +80,14 @@ module AMON
74
80
  end
75
81
 
76
82
  # Retrieves measurements from the API
83
+ #
77
84
  # @param [String] entity_id The ID of the entity
78
- # @param [String] device_id The ID of the device to get the measurements from
79
- # @param [Time] start_date The starting point for the measurements
80
- # @param [Time] end_date The ending point for the measurements
81
- # @param [Boolean] raw Whether to return raw measurements as submitted by the hardware (may
82
- # contain a lot of data), or appropriate aggregations over the time period
85
+ # @param [String] device_id The ID of the device to get measurements from
86
+ # @param [Time] start_date The starting point for the measurements
87
+ # @param [Time] end_date The ending point for the measurements
88
+ # @param [Boolean] raw Whether to return raw measurements as submitted
89
+ # by the hardware (may contain a lot of data), or
90
+ # appropriate aggregations over the time period
83
91
  def measurements(entity_id, device_id, start_date, end_date, raw = false)
84
92
  cache(:measurements, [device_id, start_date, end_date, raw]) do
85
93
  device = device(entity_id, device_id)
@@ -129,5 +137,7 @@ module AMON
129
137
  }
130
138
  )
131
139
  end
140
+
132
141
  end
133
- end
142
+
143
+ 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 = 6
5
+ MINOR = 7
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: 7
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 6
8
+ - 7
9
9
  - 0
10
- version: 0.6.0
10
+ version: 0.7.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-09 00:00:00 Z
18
+ date: 2012-10-17 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json