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 +4 -4
- data/exe/aurora_fetch +14 -4
- data/exe/aurora_mqtt_bridge +10 -1
- data/lib/aurora/abc_client.rb +47 -32
- data/lib/aurora/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7af20433d8163a332a3d09c36b23af07b95d9beb088d4a0ce69436a54e46e434
|
4
|
+
data.tar.gz: 29a7c84feb1f58ecb6b0a44538f1a530add179ea95b0285f1739f172730b2d24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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,
|
@@ -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: {
|
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, ::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
|
-
|
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.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:
|
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
|
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
|
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.
|
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.
|
46
|
+
version: 0.1.3
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: net-telnet-rfc2217
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|