saal 0.3.4 → 0.3.5

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 (6) hide show
  1. checksums.yaml +4 -4
  2. data/lib/envoy.rb +10 -7
  3. data/lib/http.rb +9 -14
  4. data/lib/saal.rb +1 -1
  5. data/saal.gemspec +2 -2
  6. metadata +11 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a86991bf6a2c0ddf03cab4c239953c2c4e819f5019145398f4b7a527e928852
4
- data.tar.gz: de08c727c732e4afb86cafcdcadfeec1f16fb127d675714b03bf388956bc6646
3
+ metadata.gz: '097e00e7d501d49e8b411d07a6a7eff6afe0adf220c3e1757304428c4cc059f1'
4
+ data.tar.gz: 398f11226d5a182aa92417448afd7b3adf0e6a3d1ab120b8f903eb952e6c131b
5
5
  SHA512:
6
- metadata.gz: db0fe9ccfd6e51da7bec292c9cd44c0b8c994ca238772cd817941f22f823f8ac8098ef005373e2f86dfcd9d121dc6470bdd3615ba961d1c514c620e8cf399095
7
- data.tar.gz: fa64aa3d8cea43fc12e07db8d84def9ba45ca27655dbb95251e7b7c45e8c322b5c8ee0f58b02b4c63c9799f15a5db1316e0e174a6b246ee4725887d3ce12d823
6
+ metadata.gz: ce014accc32521fb1fad84ed552fe92d6ed3798aef83b30769b03244703d80c205d5463c5ebf9b5ad0fff418663d3293add9291d7344b51db4201a634ee0308e
7
+ data.tar.gz: 3aaeb5d0825733dd3e87d4eb9fb9900f6f7cb5a78c9be3a8168ba7b7afef7ce379d51d8e4a267c59f1fcce86e33075c6a55eb18cfcba65932d138d718f534dd0
data/lib/envoy.rb CHANGED
@@ -15,6 +15,7 @@ module SAAL
15
15
 
16
16
  class PowerEnergy
17
17
  DEFAULT_HOST = "envoy.local"
18
+ DEFAULT_TOKEN = ""
18
19
  DEFAULT_TIMEOUT = 2
19
20
  DEFAULT_CACHE_TIMEOUT = 5
20
21
  DEFAULT_SOURCES = [
@@ -30,6 +31,7 @@ module SAAL
30
31
 
31
32
  def initialize(defs, opts={})
32
33
  @host = defs[:host] || defs['host'] || DEFAULT_HOST
34
+ @token = defs[:token] || defs['token'] || DEFAULT_TOKEN
33
35
  @timeout = opts[:timeout] || opts['timeout'] || DEFAULT_TIMEOUT
34
36
  @cache_timeout = opts[:cache_timeout] || opts['cache_timeout'] || DEFAULT_CACHE_TIMEOUT
35
37
  @cache = nil
@@ -85,7 +87,7 @@ module SAAL
85
87
  end
86
88
 
87
89
  def read_all
88
- response = SAAL::do_http_get(@host, 80, "/production.json?details=1", nil, nil, @timeout)
90
+ response = SAAL::do_https_get_token(@host, "/production.json?details=1", @token, @timeout)
89
91
  return nil if !response
90
92
 
91
93
  values = JSON.parse(response.body)
@@ -139,6 +141,7 @@ module SAAL
139
141
 
140
142
  class ACQuality
141
143
  DEFAULT_HOST = "envoy.local"
144
+ DEFAULT_TOKEN = ""
142
145
  DEFAULT_TIMEOUT = 2
143
146
  DEFAULT_CACHE_TIMEOUT = 5
144
147
  DEFAULT_SOURCES = ["total","phase1","phase2","phase3",]
@@ -147,6 +150,7 @@ module SAAL
147
150
 
148
151
  def initialize(defs, opts={})
149
152
  @host = defs[:host] || defs['host'] || DEFAULT_HOST
153
+ @token = defs[:token] || defs['token'] || DEFAULT_TOKEN
150
154
  @timeout = opts[:timeout] || opts['timeout'] || DEFAULT_TIMEOUT
151
155
  @cache_timeout = opts[:cache_timeout] || opts['cache_timeout'] || DEFAULT_CACHE_TIMEOUT
152
156
  @cache = nil
@@ -184,7 +188,7 @@ module SAAL
184
188
  end
185
189
 
186
190
  def read_all
187
- response = SAAL::do_http_get(@host, 80, "/ivp/meters/readings", nil, nil, @timeout)
191
+ response = SAAL::do_https_get_token(@host, "/ivp/meters/readings", @token, @timeout)
188
192
  return nil if !response
189
193
 
190
194
  values = JSON.parse(response.body)
@@ -213,19 +217,18 @@ module SAAL
213
217
  end
214
218
 
215
219
  class Inverters
220
+ DEFAULT_HOST = "envoy.local"
221
+ DEFAULT_TOKEN = nil
216
222
  DEFAULT_TIMEOUT = 2
217
223
  DEFAULT_CACHE_TIMEOUT = 50
218
224
  DEFAULT_SOURCES = []
219
225
  DEFAULT_TYPES = ["w_now"] # "last_report_date", "w_max"
220
- DEFAULT_USER = nil
221
- DEFAULT_PASSWORD = nil
222
226
  DEFAULT_PREFIX = "inverters"
223
227
  attr_reader :inverters
224
228
 
225
229
  def initialize(defs, opts={})
226
230
  @host = defs[:host] || defs['host'] || DEFAULT_HOST
227
- @user = defs[:user] || defs['user'] || DEFAULT_USER
228
- @password = defs[:password] || defs['password'] || DEFAULT_PASSWORD
231
+ @token = defs[:token] || defs['token'] || DEFAULT_TOKEN
229
232
  @timeout = opts[:timeout] || opts['timeout'] || DEFAULT_TIMEOUT
230
233
  @cache_timeout = opts[:cache_timeout] || opts['cache_timeout'] || DEFAULT_CACHE_TIMEOUT
231
234
  @cache = nil
@@ -264,7 +267,7 @@ module SAAL
264
267
 
265
268
  private
266
269
  def read_all
267
- response = SAAL::do_http_get_digest(@host, 80, "/api/v1/production/inverters", @user, @password, @timeout)
270
+ response = SAAL::do_https_get_token(@host, "/api/v1/production/inverters", @token, @timeout)
268
271
  return nil if !response
269
272
 
270
273
  values = JSON.parse(response.body)
data/lib/http.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'uri'
2
2
  require 'net/http'
3
- require 'net/http/digest_auth'
3
+ require 'openssl'
4
4
 
5
5
  def SAAL::do_http_get(host, port, path, user, pass, timeout)
6
6
  begin
@@ -22,26 +22,21 @@ def SAAL::do_http_get(host, port, path, user, pass, timeout)
22
22
  end
23
23
  end
24
24
 
25
- def SAAL::do_http_get_digest(host, port, path, user, pass, timeout)
25
+ def SAAL::do_https_get_token(host, path, token, timeout)
26
26
  begin
27
- uri = URI.parse "http://#{host}:#{port}/#{path}"
28
- digest_auth = Net::HTTP::DigestAuth.new
29
- uri.user = user
30
- uri.password = pass
31
- http = Net::HTTP.new(host,port)
27
+ http = Net::HTTP.new(host,443)
32
28
  # Timeout faster when the other side doesn't respond
33
29
  http.open_timeout = timeout
34
30
  http.read_timeout = timeout
31
+ http.use_ssl = true
32
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
35
33
  req = Net::HTTP::Get.new(path)
34
+ req['Accept'] = "application/json"
35
+ req['Authorization'] = "Bearer #{token}"
36
36
  response = http.request(req)
37
- if response.code == "401" && user && pass
38
- auth = digest_auth.auth_header uri, response['www-authenticate'], 'GET'
39
- req.add_field 'Authorization', auth
40
- response = http.request(req)
41
- end
42
37
  if response.code != "200"
43
- #$stderr.puts "ERROR: Code #{response.code}"
44
- #$stderr.puts response.body
38
+ $stderr.puts "ERROR: Code #{response.code}"
39
+ $stderr.puts response.body
45
40
  return nil
46
41
  end
47
42
  return response
data/lib/saal.rb CHANGED
@@ -10,7 +10,7 @@ module SAAL
10
10
  DBCONF = CONFDIR+"database.yml"
11
11
  CHARTSCONF = CONFDIR+"charts.yml"
12
12
 
13
- VERSION = '0.3.4'
13
+ VERSION = '0.3.5'
14
14
  end
15
15
 
16
16
  require File.dirname(__FILE__)+'/dbstore.rb'
data/saal.gemspec CHANGED
@@ -6,8 +6,8 @@ Gem::Specification.new do |s|
6
6
  s.platform = Gem::Platform::RUBY
7
7
 
8
8
  s.name = 'saal'
9
- s.version = '0.3.4'
10
- s.date = '2021-04-04'
9
+ s.version = '0.3.5'
10
+ s.date = '2024-02-08'
11
11
 
12
12
  s.summary = "Thin abstraction layer for interfacing and recording sensors (currently onewire) and actuators (currently dinrelay)"
13
13
  s.description = <<EOF
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Côrte-Real
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-04 00:00:00.000000000 Z
11
+ date: 2024-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ownet
@@ -71,16 +71,16 @@ description: "A daemon and libraries to create an abstraction layer that interfa
71
71
  current and historical values, and allowing changes of state.\n"
72
72
  email: pedro@pedrocr.net
73
73
  executables:
74
- - dinrelaystatus
75
74
  - dinrelayset
76
- - saal_import_mysql
77
- - saal_dump_database
78
- - saal_readall
79
- - saal_denkovi_relays
75
+ - dinrelaystatus
80
76
  - saal_chart
81
77
  - saal_daemon
78
+ - saal_denkovi_relays
79
+ - saal_dump_database
82
80
  - saal_envoy_generate_config
83
81
  - saal_envoy_read
82
+ - saal_import_mysql
83
+ - saal_readall
84
84
  extensions: []
85
85
  extra_rdoc_files:
86
86
  - README.rdoc
@@ -140,7 +140,7 @@ homepage: https://github.com/pedrocr/saal
140
140
  licenses:
141
141
  - LGPL-2.1
142
142
  metadata: {}
143
- post_install_message:
143
+ post_install_message:
144
144
  rdoc_options:
145
145
  - "-S"
146
146
  - "-w 2"
@@ -159,8 +159,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0'
161
161
  requirements: []
162
- rubygems_version: 3.1.2
163
- signing_key:
162
+ rubygems_version: 3.3.5
163
+ signing_key:
164
164
  specification_version: 2
165
165
  summary: Thin abstraction layer for interfacing and recording sensors (currently onewire)
166
166
  and actuators (currently dinrelay)