waterfurnace_aurora 0.7.3 → 0.7.7

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: 022f7ed4808f1276a58c999584d2b4bd38dc756e85e018e41cb5e9c5a5535bcf
4
- data.tar.gz: c428e4f7ef1c9bb3fb1a64d65be9ca76043305d250eaf434e453c0729bf3189e
3
+ metadata.gz: 7af20433d8163a332a3d09c36b23af07b95d9beb088d4a0ce69436a54e46e434
4
+ data.tar.gz: 29a7c84feb1f58ecb6b0a44538f1a530add179ea95b0285f1739f172730b2d24
5
5
  SHA512:
6
- metadata.gz: 6732c28063980999e4b5feffd59eaee3829ca5785d53028b0c659567dc35aae4c32ddcb7770b5e4a094b1f5d5219ae6d04659920c631cea881bd077977f7a63a
7
- data.tar.gz: 2c866d3d0c628a6a4f814f1a1fd78d4cbe62140787a43585e56cb8d749b3f6421dde793839d67d83bba268037a6493578b47eae23c669ad72296eabf5a584226
6
+ metadata.gz: 81c6604273350396388be239846997ee151f1b92ac47c270977e63347a5eeea81025eefece7d60cb3f2e374bca65816548bf3b8cc36bf249a1dbec57fbc0cb3a
7
+ data.tar.gz: 75ac82e3784f556b13274d5de4e64889023963286a3787e2521fef74ca5fb19ff0c49ea40a35fef7ea95bcae80b463ff84d15e67e4ddce098ffd69a3ead95843
data/exe/aurora_fetch CHANGED
@@ -9,11 +9,19 @@ require "uri"
9
9
  require "yaml"
10
10
 
11
11
  debug_modbus = yaml = false
12
+ try_individual = nil
12
13
 
13
14
  options = OptionParser.new do |opts|
14
15
  opts.banner = "Usage: aurora_fetch /path/to/serial/port REGISTERS [options]"
15
16
 
17
+ opts.separator("")
18
+ opts.separator("Use `known` to fetch all identified registers. Use `valid` to fetch all registers that will respond.")
19
+ opts.separator("")
20
+
16
21
  opts.on("--debug-modbus", "Print actual protocol bytes") { debug_modbus = true }
22
+ opts.on("--[no-]try-individual",
23
+ "Query registers one-by-one if a range has an illegal address. " \
24
+ "Defaults to true for `valid` and `known` special registers, false otherwise.") { |v| try_individual = v }
17
25
  opts.on("-y", "--yaml", "Output raw values as YAML") { yaml = true }
18
26
  opts.on("-v", "--version", "Print version") do
19
27
  puts Aurora::VERSION
@@ -32,11 +40,13 @@ unless ARGV.length == 2
32
40
  exit 1
33
41
  end
34
42
 
35
- abc = Aurora::ABCClient.new(ARGV[0])
36
- abc.modbus_slave.logger = Logger.new($stdout)
37
- abc.modbus_slave.logger.level = debug_modbus ? :debug : :warn
43
+ modbus_slave = Aurora::ABCClient.open_modbus_slave(ARGV[0])
44
+ modbus_slave.read_retry_timeout = 15
45
+ modbus_slave.read_retries = 2
46
+ modbus_slave.logger = Logger.new($stdout)
47
+ modbus_slave.logger.level = debug_modbus ? :debug : :warn
38
48
 
39
- registers = abc.query_registers(ARGV[1])
49
+ registers = Aurora::ABCClient.query_registers(modbus_slave, ARGV[1], try_individual: try_individual)
40
50
 
41
51
  if yaml
42
52
  puts YAML.dump(registers)
@@ -181,6 +181,14 @@ class MQTTBridge
181
181
  state_class: :measurement } })
182
182
  end
183
183
 
184
+ node.property("line-voltage",
185
+ "Line Voltage Setting",
186
+ :integer,
187
+ @abc.line_voltage,
188
+ format: 90..635,
189
+ unit: "V") do |value, property|
190
+ @mutex.synchronize { property.value = @abc.line_voltage = value }
191
+ end
184
192
  node.property("fp1",
185
193
  "FP1 Sensor",
186
194
  :float,
@@ -577,7 +585,8 @@ class MQTTBridge
577
585
  end
578
586
  node.hass_climate(action_property: "current-mode",
579
587
  current_temperature_property: "ambient-temperature",
580
- fan_mode_property: "target-mode",
588
+ fan_mode_property: "target-fan-mode",
589
+ mode_property: "target-mode",
581
590
  temperature_high_property: "cooling-target-temperature",
582
591
  temperature_low_property: "heating-target-temperature",
583
592
  templates: {
@@ -40,6 +40,49 @@ module Aurora
40
40
  client = ::ModBus::RTUClient.new(io)
41
41
  client.with_slave(1)
42
42
  end
43
+
44
+ def query_registers(modbus_slave, query, try_individual: false)
45
+ implicit = try_individual
46
+ ranges = query.split(",").map do |addr|
47
+ case addr
48
+ when "known"
49
+ implicit = true
50
+ try_individual = true if try_individual.nil?
51
+ Aurora::REGISTER_NAMES.keys
52
+ when "valid"
53
+ implicit = true
54
+ try_individual = true if try_individual.nil?
55
+ break Aurora::REGISTER_RANGES
56
+ when /^(\d+)(?:\.\.|-)(\d+)$/
57
+ $1.to_i..$2.to_i
58
+ else
59
+ addr.to_i
60
+ end
61
+ end
62
+ queries = Aurora.normalize_ranges(ranges)
63
+ registers = {}
64
+ queries.each do |subquery|
65
+ registers.merge!(modbus_slave.read_multiple_holding_registers(*subquery))
66
+ rescue ::ModBus::Errors::IllegalDataAddress, ::ModBus::Errors::IllegalFunction
67
+ # maybe this unit doesn't respond to all the addresses we want?
68
+ raise unless implicit
69
+
70
+ # try each query individually
71
+ subquery.each do |subsubquery|
72
+ registers.merge!(modbus_slave.read_multiple_holding_registers(subsubquery))
73
+ rescue ::ModBus::Errors::IllegalDataAddress, ::ModBus::Errors::IllegalFunction
74
+ next unless try_individual
75
+
76
+ # seriously?? try each register individually
77
+ subsubquery.each do |i|
78
+ registers[i] = modbus_slave.holding_registers[i]
79
+ rescue ::ModBus::Errors::IllegalDataAddress, ::ModBus::Errors::IllegalFunction
80
+ next
81
+ end
82
+ end
83
+ end
84
+ registers
85
+ end
43
86
  end
44
87
 
45
88
  attr_reader :modbus_slave,
@@ -60,6 +103,7 @@ module Aurora
60
103
  :outdoor_temperature,
61
104
  :fp1,
62
105
  :fp2,
106
+ :line_voltage,
63
107
  :aux_heat_watts,
64
108
  :total_watts
65
109
 
@@ -108,7 +152,7 @@ module Aurora
108
152
 
109
153
  @faults = []
110
154
 
111
- @registers_to_read = [6, 19..20, 25, 30, 344, 740..741, 900, 1104, 1110..1111, 1114, 1150..1153, 1165,
155
+ @registers_to_read = [6, 19..20, 25, 30, 112, 344, 740..741, 900, 1104, 1110..1111, 1114, 1150..1153, 1165,
112
156
  31_003]
113
157
  zones.each do |z|
114
158
  @registers_to_read.concat(z.registers_to_read)
@@ -122,37 +166,7 @@ module Aurora
122
166
  end
123
167
 
124
168
  def query_registers(query)
125
- implicit = false
126
- ranges = query.split(",").map do |addr|
127
- case addr
128
- when "known"
129
- implicit = true
130
- Aurora::REGISTER_NAMES.keys
131
- when "valid"
132
- implicit = true
133
- break Aurora::REGISTER_RANGES
134
- when /^(\d+)(?:\.\.|-)(\d+)$/
135
- $1.to_i..$2.to_i
136
- else
137
- addr.to_i
138
- end
139
- end
140
- queries = Aurora.normalize_ranges(ranges)
141
- registers = {}
142
- queries.each do |subquery|
143
- registers.merge!(@modbus_slave.read_multiple_holding_registers(*subquery))
144
- rescue ::ModBus::Errors::IllegalDataAddress
145
- # maybe this unit doesn't respond to all the addresses we want?
146
- raise unless implicit
147
-
148
- # try each query individually
149
- subquery.each do |subsubquery|
150
- registers.merge!(@modbus_slave.read_multiple_holding_registers(subsubquery))
151
- rescue ::ModBus::Errors::IllegalDataAddress
152
- next
153
- end
154
- end
155
- registers
169
+ self.class.query_registers(@modbus_slave, query)
156
170
  end
157
171
 
158
172
  def refresh
@@ -175,6 +189,7 @@ module Aurora
175
189
  @error = registers[25] & 0x7fff
176
190
  @derated = (41..46).cover?(@error)
177
191
  @safe_mode = [47, 48, 49, 72, 74].include?(@error)
192
+ @line_voltage = registers[112]
178
193
  @aux_heat_watts = registers[1151]
179
194
  @total_watts = registers[1153]
180
195
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aurora
4
- VERSION = "0.7.3"
4
+ VERSION = "0.7.7"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waterfurnace_aurora
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-10 00:00:00.000000000 Z
11
+ date: 2022-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ccutrer-serialport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.0
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.0
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mqtt-homeassistant
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '0.1'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 0.1.2
36
+ version: 0.1.3
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0.1'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 0.1.2
46
+ version: 0.1.3
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: net-telnet-rfc2217
49
49
  requirement: !ruby/object:Gem::Requirement