waterfurnace_aurora 0.7.5 → 0.7.6
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.
- checksums.yaml +4 -4
- data/exe/aurora_fetch +14 -4
- data/exe/aurora_mqtt_bridge +8 -0
- data/lib/aurora/abc_client.rb +47 -32
- data/lib/aurora/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6682276ad275ed03cc9985a993fb2b97830d4aee801d544797b7dbe4e34288db
|
4
|
+
data.tar.gz: 674d421a8729c071bab6de126757d993eb4940a0ee6e514b8e689397ceee1c56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a47a7971f42f9ad100cc756b06b6146fc2c315a4298af501478f7208697d31bbd535ee26e7cd1250f4391bb7df16cd07da5ea420e752cfb95d6c4e1192ae9021
|
7
|
+
data.tar.gz: 2fdd41be490e09ae5436508b972134ee3f51c2b07b24f21006fccec51fd9981a79715a380ef401ad76a5c5680cf329b023b8f2e2f3a53cf3b8f2a78c08a71c73
|
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
|
-
|
36
|
-
|
37
|
-
|
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 =
|
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)
|
data/exe/aurora_mqtt_bridge
CHANGED
@@ -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,
|
data/lib/aurora/abc_client.rb
CHANGED
@@ -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
|
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
|
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
|
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
|
-
|
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
|
|
data/lib/aurora/version.rb
CHANGED
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.
|
4
|
+
version: 0.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ccutrer-serialport
|