waterfurnace_aurora 0.7.5 → 0.7.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|