senec 0.8.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1742fde56f587e423ac2c22d38d8cfee11fc324faa7b026af09c1419e2a93841
4
- data.tar.gz: e5d4184d3d24741d76baedecf0a565fe7aad6685f6c3c2f8f745ce22a75a38b2
3
+ metadata.gz: 527ddd13c38f45eca03b8318f29222d8f4f2fc1d3c34139f1f0642cb10a7db1a
4
+ data.tar.gz: c277e0d2dd6f68ac0b02f77d36ff3b9dd0bee46206a902c189a1b715975d3c5c
5
5
  SHA512:
6
- metadata.gz: d3d1f2a65475ae606ab0c6f4f13eed3363d9cd2c8bd0e7f57cc4fe730492410295860800b1e1027e18bbd2ad5abc7b01012ec6c7fe7286c304b58e025a8cd110
7
- data.tar.gz: 3dea00f3618c57301a9509cc5de3b0e14df42f9a4cefff6a82a047a73073602cbe9fc2ce2b5f0438c8f1539e1cb5784fe526198373990a8a2f271ef0e232acb9
6
+ metadata.gz: e2013e5206c4ef197828440d7fc3549cfce2b4254b0e22c936edf288e00a7a19e4cec246b9a49f4b19c1979104603bb5f56e7fddf70261153f7c933b94f1c668
7
+ data.tar.gz: 6d0f15867763036a3edead7450fcfd8a27a3ea5d3a278cbb9960d7225e7d5226bd21d003d83417aa3eee8908f82ae8036437f7aec81f224dd3f085dd0f2623fe
@@ -2,11 +2,8 @@ module Senec
2
2
  # For a full list of available vars, see http://[IP-of-your-SENEC]/vars.html
3
3
  # Comments taken from https://gist.github.com/smashnet/82ad0b9d7f0ba2e5098e6649ba08f88a
4
4
  BASIC_REQUEST = {
5
- STATISTIC: {
6
- CURRENT_STATE: '', # Current state of the system (int, see SYSTEM_STATE_NAME)
7
- MEASURE_TIME: '' # Unix timestamp for above values (ms)
8
- },
9
5
  ENERGY: {
6
+ STAT_STATE: '', # Current state of the system (int, see SYSTEM_STATE_NAME)
10
7
  GUI_BAT_DATA_CURRENT: '', # Battery charge current: negative if discharging, positiv if charging (A)
11
8
  GUI_BAT_DATA_FUEL_CHARGE: '', # Remaining battery (percent)
12
9
  GUI_BAT_DATA_POWER: '', # Battery charge power: negative if discharging, positiv if charging (W)
@@ -16,6 +13,13 @@ module Senec
16
13
  GUI_INVERTER_POWER: '', # PV production (W)
17
14
  STAT_HOURS_OF_OPERATION: '' # Appliance hours of operation
18
15
  },
16
+ WIZARD: {
17
+ APPLICATION_VERSION: ''
18
+ },
19
+ RTC: {
20
+ UTC_OFFSET: '',
21
+ WEB_TIME: ''
22
+ },
19
23
  PV1: {
20
24
  MPP_POWER: '' # List: MPP power (W)
21
25
  },
data/lib/senec/request.rb CHANGED
@@ -52,8 +52,12 @@ module Senec
52
52
  get('TEMPMEASURE', 'CASE_TEMP')
53
53
  end
54
54
 
55
+ def application_version
56
+ get('WIZARD', 'APPLICATION_VERSION')
57
+ end
58
+
55
59
  def current_state
56
- get('STATISTIC', 'CURRENT_STATE')
60
+ get('ENERGY', 'STAT_STATE')
57
61
  end
58
62
 
59
63
  def current_state_name
@@ -63,7 +67,10 @@ module Senec
63
67
  end
64
68
 
65
69
  def measure_time
66
- get('STATISTIC', 'MEASURE_TIME')
70
+ web_time = get('RTC', 'WEB_TIME')
71
+ utc_offset = get('RTC', 'UTC_OFFSET')
72
+
73
+ web_time - (utc_offset * 60)
67
74
  end
68
75
 
69
76
  private
data/lib/senec/value.rb CHANGED
@@ -1,14 +1,17 @@
1
1
  module Senec
2
2
  class Value
3
- def initialize(data)
4
- @data = data
3
+ def initialize(raw)
4
+ @raw = raw
5
+ @prefix, @value = raw&.split('_')
5
6
  end
6
7
 
7
- def decoded
8
- parts = @data.split('_')
9
- prefix = parts[0]
10
- value = parts[1]
8
+ attr_reader :prefix, :value, :raw
9
+
10
+ def valid?
11
+ prefix && PREFIXES.include?(prefix)
12
+ end
11
13
 
14
+ def decoded
12
15
  case prefix
13
16
  when 'fl'
14
17
  decoded_float(value)
@@ -18,7 +21,7 @@ module Senec
18
21
  value
19
22
  # TODO: There are some more prefixes to handle
20
23
  else
21
- raise Senec::DecodingError, "Unknown value '#{@data}'"
24
+ raise Senec::DecodingError, "Unknown value '#{@raw}'"
22
25
  end
23
26
  end
24
27
 
@@ -28,6 +31,9 @@ module Senec
28
31
 
29
32
  private
30
33
 
34
+ PREFIXES = %w[fl i3 u1 u3 u6 u8 st].freeze
35
+ private_constant :PREFIXES
36
+
31
37
  def decoded_float(hex)
32
38
  ["0x#{hex}".to_i(16)].pack('L').unpack1('F').round(1)
33
39
  end
data/lib/senec/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Senec
2
- VERSION = '0.8.0'.freeze
2
+ VERSION = '0.10.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: senec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georg Ledermann
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-17 00:00:00.000000000 Z
11
+ date: 2023-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  requirements: []
76
- rubygems_version: 3.4.18
76
+ rubygems_version: 3.4.19
77
77
  signing_key:
78
78
  specification_version: 4
79
79
  summary: Unofficial Ruby Client for SENEC Home