smartermeter 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -0
- data/README.md +65 -0
- data/Rakefile +182 -0
- data/bin/smartermeter +10 -0
- data/build_configuration.rb +89 -0
- data/lib/smartermeter/daemon.rb +236 -0
- data/lib/smartermeter/main.rb +9 -0
- data/lib/smartermeter/sample.rb +68 -0
- data/lib/smartermeter/service.rb +78 -0
- data/lib/smartermeter/transports/cacert.pem +3509 -0
- data/lib/smartermeter/transports/google_powermeter.erb +16 -0
- data/lib/smartermeter/transports/google_powermeter.rb +42 -0
- data/lib/smartermeter.rb +8 -0
- data/smartermeter.gemspec +90 -0
- data/specs/fixtures/data.csv +21 -0
- data/specs/fixtures/expected_google_request.xml +292 -0
- data/specs/sample_spec.rb +18 -0
- data/specs/service_spec.rb +8 -0
- data/specs/spec_helper.rb +9 -0
- data/specs/transports/google_powermeter_spec.rb +19 -0
- metadata +136 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
3
|
+
<% samples.each do |sample| %>
|
4
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
5
|
+
<id>https://www.google.com/powermeter/feeds<%= @config[:variable] %>/durMeasurement/<%= sample.utc_start_time.gsub(":", "_") %></id>
|
6
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
7
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
8
|
+
<meter:subject>https://www.google.com/powermeter/feeds<%= @config[:variable] %></meter:subject>
|
9
|
+
<meter:startTime meter:uncertainty="1.000000"><%= sample.utc_start_time %></meter:startTime>
|
10
|
+
<meter:endTime meter:uncertainty="1.000000"><%= sample.utc_stop_time %></meter:endTime>
|
11
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
12
|
+
<%= sample.kwh %>
|
13
|
+
</meter:quantity>
|
14
|
+
</entry>
|
15
|
+
<% end %>
|
16
|
+
</feed>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'net/https'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
module SmarterMeter
|
5
|
+
module Transports
|
6
|
+
class GooglePowerMeter
|
7
|
+
def initialize(config)
|
8
|
+
@config = config
|
9
|
+
raise "The Google PowerMeter token must be configured" unless @config[:token]
|
10
|
+
raise "The Google PowerMeter variable must be configured" unless @config[:variable]
|
11
|
+
end
|
12
|
+
|
13
|
+
# Public: Uploads an array of Samples to Google PowerMeter
|
14
|
+
#
|
15
|
+
# samples - An array of samples to upload
|
16
|
+
#
|
17
|
+
# Returns true on success and false otherwise
|
18
|
+
def upload(samples)
|
19
|
+
url = URI.parse('https://www.google.com/powermeter/feeds/event')
|
20
|
+
http = Net::HTTP.new(url.host, url.port)
|
21
|
+
http.use_ssl = true
|
22
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
23
|
+
http.ca_file = File.join(File.dirname(__FILE__), "cacert.pem")
|
24
|
+
res, body = http.post(url.path, request_body(samples), {"Authorization" => 'AuthSub token="CMCc9puFFRDKivjpAhjgiZLuAg"', "Content-Type" => "application/atom+xml"})
|
25
|
+
case res
|
26
|
+
when Net::HTTPSuccess
|
27
|
+
true
|
28
|
+
else
|
29
|
+
false
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Creates the proper XML request to send to Google.
|
34
|
+
#
|
35
|
+
# Returns the proper atom/xml response to send to google
|
36
|
+
def request_body(samples)
|
37
|
+
template = ERB.new(File.read(File.join(File.dirname(__FILE__), "google_powermeter.erb")))
|
38
|
+
template.result(binding)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/smartermeter.rb
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
## This is the rakegem gemspec template. Make sure you read and understand
|
2
|
+
## all of the comments. Some sections require modification, and others can
|
3
|
+
## be deleted if you don't need them. Once you understand the contents of
|
4
|
+
## this file, feel free to delete any comments that begin with two hash marks.
|
5
|
+
## You can find comprehensive Gem::Specification documentation, at
|
6
|
+
## http://docs.rubygems.org/read/chapter/20
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.specification_version = 2 if s.respond_to? :specification_version=
|
9
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
10
|
+
s.rubygems_version = '1.3.5'
|
11
|
+
|
12
|
+
## Leave these as is they will be modified for you by the rake gemspec task.
|
13
|
+
## If your rubyforge_project name is different, then edit it and comment out
|
14
|
+
## the sub! line in the Rakefile
|
15
|
+
s.name = 'smartermeter'
|
16
|
+
s.version = '0.1.0'
|
17
|
+
s.date = '2011-01-08'
|
18
|
+
s.rubyforge_project = 'smartermeter'
|
19
|
+
|
20
|
+
## Make sure your summary is short. The description may be as long
|
21
|
+
## as you like.
|
22
|
+
s.summary = "Fetches smartmeter data from PG&E"
|
23
|
+
s.description = "Fetches smartmeter data from PG&E and can upload to Google PowerMeter"
|
24
|
+
|
25
|
+
## List the primary authors. If there are a bunch of authors, it's probably
|
26
|
+
## better to set the email to an email list or something. If you don't have
|
27
|
+
## a custom homepage, consider using your GitHub URL or the like.
|
28
|
+
s.authors = ["Matt Colyer"]
|
29
|
+
s.email = 'matt.removethis@nospam.colyer.name'
|
30
|
+
s.homepage = 'http://github.com/mcolyer/smartermeter'
|
31
|
+
|
32
|
+
## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
|
33
|
+
## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
|
34
|
+
s.require_paths = %w[lib]
|
35
|
+
|
36
|
+
## This sections is only necessary if you have C extensions.
|
37
|
+
#s.require_paths << 'ext'
|
38
|
+
#s.extensions = %w[ext/extconf.rb]
|
39
|
+
|
40
|
+
## If your gem includes any executables, list them here.
|
41
|
+
s.executables = ["smartermeter"]
|
42
|
+
s.default_executable = 'smartermeter'
|
43
|
+
|
44
|
+
## Specify any RDoc options here. You'll want to add your README and
|
45
|
+
## LICENSE files to the extra_rdoc_files list.
|
46
|
+
#s.rdoc_options = ["--charset=UTF-8"]
|
47
|
+
#s.extra_rdoc_files = %w[README.md]
|
48
|
+
|
49
|
+
## List your runtime dependencies here. Runtime dependencies are those
|
50
|
+
## that are needed for an end user to actually USE your code.
|
51
|
+
s.add_dependency('mechanize', ["= 0.9.3"])
|
52
|
+
s.add_dependency('crypt', ["= 1.1.4"])
|
53
|
+
|
54
|
+
## List your development dependencies here. Development dependencies are
|
55
|
+
## those that are only needed during development
|
56
|
+
s.add_development_dependency('rawr', ["~> 1.4.5"])
|
57
|
+
s.add_development_dependency('rspec', ["~> 2.4.0"])
|
58
|
+
|
59
|
+
## Leave this section as-is. It will be automatically generated from the
|
60
|
+
## contents of your Git repository via the gemspec task. DO NOT REMOVE
|
61
|
+
## THE MANIFEST COMMENTS, they are used as delimiters by the task.
|
62
|
+
# = MANIFEST =
|
63
|
+
s.files = %w[
|
64
|
+
Gemfile
|
65
|
+
README.md
|
66
|
+
Rakefile
|
67
|
+
bin/smartermeter
|
68
|
+
build_configuration.rb
|
69
|
+
lib/smartermeter.rb
|
70
|
+
lib/smartermeter/daemon.rb
|
71
|
+
lib/smartermeter/main.rb
|
72
|
+
lib/smartermeter/sample.rb
|
73
|
+
lib/smartermeter/service.rb
|
74
|
+
lib/smartermeter/transports/cacert.pem
|
75
|
+
lib/smartermeter/transports/google_powermeter.erb
|
76
|
+
lib/smartermeter/transports/google_powermeter.rb
|
77
|
+
smartermeter.gemspec
|
78
|
+
specs/fixtures/data.csv
|
79
|
+
specs/fixtures/expected_google_request.xml
|
80
|
+
specs/sample_spec.rb
|
81
|
+
specs/service_spec.rb
|
82
|
+
specs/spec_helper.rb
|
83
|
+
specs/transports/google_powermeter_spec.rb
|
84
|
+
]
|
85
|
+
# = MANIFEST =
|
86
|
+
|
87
|
+
## Test files will be grabbed from the file list. Make sure the path glob
|
88
|
+
## matches what you actually use.
|
89
|
+
s.test_files = s.files.select { |path| path =~ /^specs\/*_spec.rb/ }
|
90
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"Name","DOE,JOHN "
|
2
|
+
"Address","1 MARKET ST, SAN FRANCSICO, CA 94110"
|
3
|
+
"Account Number",="12345678"
|
4
|
+
"Disclaimer","The information contained in this file is intended for the personal and confidential use of the recipient(s) named above. Any unauthorized use is prohibited."
|
5
|
+
|
6
|
+
"Title","Hourly Usage"
|
7
|
+
"Meter Number","Electric - 12345678"
|
8
|
+
"Selected Date","10/01/2009"
|
9
|
+
"Selected Period","Week"
|
10
|
+
"Primary Data Unit","kWh"
|
11
|
+
"Secondary Data Unit","-"
|
12
|
+
|
13
|
+
"","12:00 AM","1:00 AM","2:00 AM","3:00 AM","4:00 AM","5:00 AM","6:00 AM","7:00 AM","8:00 AM","9:00 AM","10:00 AM","11:00 AM","12:00 PM","1:00 PM","2:00 PM","3:00 PM","4:00 PM","5:00 PM","6:00 PM","7:00 PM","8:00 PM","9:00 PM","10:00 PM","11:00 PM"
|
14
|
+
"9/27/2009",".149",".205",".257",".131",".142",".136",".127",".137",".136",".134",".416","1.732","1.844",".190",".189",".182",".173","1.136","3.550","3.011","1.426",".508",".580",".316"
|
15
|
+
"9/28/2009",".142",".165",".140",".148",".157",".138",".140",".607",".709",".183",".131",".134",".144",".143",".135",".214",".179",".161",".165",".661",".461",".390",".467",".239"
|
16
|
+
"9/29/2009",".271",".124",".127",".122",".133",".131",".121",".149",".723",".409",".388",".317",".341",".335",".338",".341",".310",".298",".316","1.561",".601",".463",".494",".471"
|
17
|
+
"9/30/2009",".536",".224",".136",".131",".133",".128",".128",".104",".518",".706",".385",".320",".338",".373",".227",".097",".088",".097",".093",".099",".100",".090",".095",".092"
|
18
|
+
"10/01/2009",".097",".096",".094",".095",".082",".086",".094",".089",".080",".093",".074",".094",".087",".081",".096",".089",".080",".170",".143",".106",".096",".091",".099",".097"
|
19
|
+
"10/02/2009",".098",".095",".089",".083",".094",".095",".080",".088",".095",".073",".095",".094",".075",".094",".096",".075",".095",".097",".096",".098",".098",".096",".097",".086"
|
20
|
+
"10/03/2009",".093",".088",".097",".097",".094",".096",".092",".079",".094",".094",".095",".131",".151",".098",".083",".092",".097",".098",".092",".080",".095",".097",".097",".074"
|
21
|
+
|
@@ -0,0 +1,292 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
3
|
+
|
4
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
5
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
6
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
7
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
8
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
9
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
10
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
11
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
12
|
+
0.149
|
13
|
+
</meter:quantity>
|
14
|
+
</entry>
|
15
|
+
|
16
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
17
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
18
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
19
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
20
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
21
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
22
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
23
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
24
|
+
0.205
|
25
|
+
</meter:quantity>
|
26
|
+
</entry>
|
27
|
+
|
28
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
29
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
30
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
31
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
32
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
33
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
34
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
35
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
36
|
+
0.257
|
37
|
+
</meter:quantity>
|
38
|
+
</entry>
|
39
|
+
|
40
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
41
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
42
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
43
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
44
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
45
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
46
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
47
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
48
|
+
0.131
|
49
|
+
</meter:quantity>
|
50
|
+
</entry>
|
51
|
+
|
52
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
53
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
54
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
55
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
56
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
57
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
58
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
59
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
60
|
+
0.142
|
61
|
+
</meter:quantity>
|
62
|
+
</entry>
|
63
|
+
|
64
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
65
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
66
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
67
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
68
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
69
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
70
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
71
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
72
|
+
0.136
|
73
|
+
</meter:quantity>
|
74
|
+
</entry>
|
75
|
+
|
76
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
77
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
78
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
79
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
80
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
81
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
82
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
83
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
84
|
+
0.127
|
85
|
+
</meter:quantity>
|
86
|
+
</entry>
|
87
|
+
|
88
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
89
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
90
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
91
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
92
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
93
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
94
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
95
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
96
|
+
0.137
|
97
|
+
</meter:quantity>
|
98
|
+
</entry>
|
99
|
+
|
100
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
101
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
102
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
103
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
104
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
105
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
106
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
107
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
108
|
+
0.136
|
109
|
+
</meter:quantity>
|
110
|
+
</entry>
|
111
|
+
|
112
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
113
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
114
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
115
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
116
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
117
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
118
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
119
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
120
|
+
0.134
|
121
|
+
</meter:quantity>
|
122
|
+
</entry>
|
123
|
+
|
124
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
125
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
126
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
127
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
128
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
129
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
130
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
131
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
132
|
+
0.416
|
133
|
+
</meter:quantity>
|
134
|
+
</entry>
|
135
|
+
|
136
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
137
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
138
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
139
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
140
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
141
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
142
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
143
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
144
|
+
1.732
|
145
|
+
</meter:quantity>
|
146
|
+
</entry>
|
147
|
+
|
148
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
149
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
150
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
151
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
152
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
153
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
154
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
155
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
156
|
+
1.844
|
157
|
+
</meter:quantity>
|
158
|
+
</entry>
|
159
|
+
|
160
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
161
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
162
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
163
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
164
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
165
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
166
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
167
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
168
|
+
0.19
|
169
|
+
</meter:quantity>
|
170
|
+
</entry>
|
171
|
+
|
172
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
173
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
174
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
175
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
176
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
177
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
178
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
179
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
180
|
+
0.189
|
181
|
+
</meter:quantity>
|
182
|
+
</entry>
|
183
|
+
|
184
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
185
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
186
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
187
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
188
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
189
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
190
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
191
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
192
|
+
0.182
|
193
|
+
</meter:quantity>
|
194
|
+
</entry>
|
195
|
+
|
196
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
197
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
198
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
199
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
200
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
201
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
202
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
203
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
204
|
+
0.173
|
205
|
+
</meter:quantity>
|
206
|
+
</entry>
|
207
|
+
|
208
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
209
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
210
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
211
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
212
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
213
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
214
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
215
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
216
|
+
1.136
|
217
|
+
</meter:quantity>
|
218
|
+
</entry>
|
219
|
+
|
220
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
221
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
222
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
223
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
224
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
225
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
226
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
227
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
228
|
+
3.55
|
229
|
+
</meter:quantity>
|
230
|
+
</entry>
|
231
|
+
|
232
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
233
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
234
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
235
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
236
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
237
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
238
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
239
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
240
|
+
3.011
|
241
|
+
</meter:quantity>
|
242
|
+
</entry>
|
243
|
+
|
244
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
245
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
246
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
247
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
248
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
249
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
250
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
251
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
252
|
+
1.426
|
253
|
+
</meter:quantity>
|
254
|
+
</entry>
|
255
|
+
|
256
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
257
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
258
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
259
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
260
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
261
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
262
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
263
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
264
|
+
0.508
|
265
|
+
</meter:quantity>
|
266
|
+
</entry>
|
267
|
+
|
268
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
269
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
270
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
271
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
272
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
273
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
274
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
275
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
276
|
+
0.58
|
277
|
+
</meter:quantity>
|
278
|
+
</entry>
|
279
|
+
|
280
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:meter="http://schemas.google.com/meter/2008">
|
281
|
+
<id>https://www.google.com/powermeter/feeds/path/durMeasurement/2009-09-27T07_00_00.000Z</id>
|
282
|
+
<category scheme="http://schemas.google.com/g/2005#kind"
|
283
|
+
term="http://schemas.google.com/meter/2008#durMeasurement"/>
|
284
|
+
<meter:subject>https://www.google.com/powermeter/feeds/path</meter:subject>
|
285
|
+
<meter:startTime meter:uncertainty="1.000000">2009-09-27T07:00:00.000Z</meter:startTime>
|
286
|
+
<meter:endTime meter:uncertainty="1.000000">2009-09-27T08:00:00.000Z</meter:endTime>
|
287
|
+
<meter:quantity meter:uncertainty="0.001000" meter:unit="kW h">
|
288
|
+
0.316
|
289
|
+
</meter:quantity>
|
290
|
+
</entry>
|
291
|
+
|
292
|
+
</feed>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__))
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe SmarterMeter::Sample do
|
5
|
+
before(:all) do
|
6
|
+
@data = File.read(File.join($FIXTURES_DIR, 'data.csv'))
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should be able to parse csv data returned by the api" do
|
10
|
+
date = Date.new(2009, 9, 30)
|
11
|
+
results = SmarterMeter::Sample.parse_csv(@data)
|
12
|
+
|
13
|
+
results.length.should > 0
|
14
|
+
results.keys.should include(date)
|
15
|
+
results[date].length.should == 24
|
16
|
+
results[date].each{|s| s.should be_kind_of(SmarterMeter::Sample)}
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..")
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe SmarterMeter::Transports::GooglePowerMeter do
|
5
|
+
before(:each) do
|
6
|
+
@subject = SmarterMeter::Transports::GooglePowerMeter.new(:token => "secret",
|
7
|
+
:variable => "/path")
|
8
|
+
data = File.read(File.join($FIXTURES_DIR, 'data.csv'))
|
9
|
+
@results = SmarterMeter::Sample.parse_csv(data)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "can format a request for the API" do
|
13
|
+
fixture_file = File.join(File.dirname(__FILE__), "..", "fixtures", "expected_google_request.xml")
|
14
|
+
expected_result = File.read(fixture_file)
|
15
|
+
|
16
|
+
samples = @results.values.first
|
17
|
+
@subject.request_body(samples).should == expected_result
|
18
|
+
end
|
19
|
+
end
|