waterfurnace_aurora 0.3.12 → 0.3.13
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/lib/aurora/abc_client.rb +55 -4
- data/lib/aurora/registers.rb +188 -71
- data/lib/aurora/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a92c5ae13a08cf060e3c7f23613cc1302e20af0bc4bc7c77c610936bea48c2b5
|
4
|
+
data.tar.gz: 914c7c6371755e06524e063b5eb6820ca63f67844713d4d396cd08559fa62cc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 384657c10727cf0a955cf4a4db5270d8ee021629e40c0dee65170e22206e3b0c21c85da2beade4f02143cdd5ff8d5631d5429c6a2957b96d933a3476cf83078c
|
7
|
+
data.tar.gz: 6ea98c0cd77e83158d8313a851b0fa155cc6ee7a042aa338abb27c3c57cec543017b1ab97953aedf11d4645fedd5a6423c35b2c4f75fae6c768cfd1d5e47635d
|
data/lib/aurora/abc_client.rb
CHANGED
@@ -45,11 +45,14 @@ module Aurora
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def query_registers(query)
|
48
|
+
implicit = false
|
48
49
|
ranges = query.split(",").map do |addr|
|
49
50
|
case addr
|
50
51
|
when "known"
|
52
|
+
implicit = true
|
51
53
|
Aurora::REGISTER_NAMES.keys
|
52
54
|
when "valid"
|
55
|
+
implicit = true
|
53
56
|
break Aurora::REGISTER_RANGES
|
54
57
|
when /^(\d+)(?:\.\.|-)(\d+)$/
|
55
58
|
$1.to_i..$2.to_i
|
@@ -61,12 +64,22 @@ module Aurora
|
|
61
64
|
registers = {}
|
62
65
|
queries.each do |subquery|
|
63
66
|
registers.merge!(@modbus_slave.read_multiple_holding_registers(*subquery))
|
67
|
+
rescue ::ModBus::Errors::IllegalDataAddress
|
68
|
+
# maybe this unit doesn't respond to all the addresses we want?
|
69
|
+
raise unless implicit
|
70
|
+
|
71
|
+
# try each query individually
|
72
|
+
subquery.each do |subsubquery|
|
73
|
+
registers.merge!(@modbus_slave.read_multiple_holding_registers(subsubquery))
|
74
|
+
rescue ::ModBus::Errors::IllegalDataAddress
|
75
|
+
next
|
76
|
+
end
|
64
77
|
end
|
65
78
|
registers
|
66
79
|
end
|
67
80
|
|
68
81
|
def refresh
|
69
|
-
registers_to_read = [19..20, 30, 340, 344, 347, 740..741, 900, 1110..1111, 1114,
|
82
|
+
registers_to_read = [6, 19..20, 25, 30, 340, 344, 347, 362, 740..741, 900, 1110..1111, 1114, 1147..1153, 1165,
|
70
83
|
3027, 31_003]
|
71
84
|
if zones.first.is_a?(IZ2Zone)
|
72
85
|
zones.each_with_index do |_z, i|
|
@@ -99,7 +112,10 @@ module Aurora
|
|
99
112
|
@outdoor_temperature = registers[31_003]
|
100
113
|
@fp1 = registers[19]
|
101
114
|
@fp2 = registers[20]
|
102
|
-
@locked_out = registers[
|
115
|
+
@locked_out = registers[25] & 0x8000
|
116
|
+
@error = registers[25] & 0x7fff
|
117
|
+
@derated = (41..46).include?(@error)
|
118
|
+
@safe_mode = [47, 48, 49, 72, 74].include?(@error)
|
103
119
|
@blower_only_ecm_speed = registers[340]
|
104
120
|
@aux_heat_ecm_speed = registers[347]
|
105
121
|
@compressor_watts = registers[1147]
|
@@ -111,16 +127,20 @@ module Aurora
|
|
111
127
|
outputs = registers[30]
|
112
128
|
@current_mode = if outputs.include?(:lockout)
|
113
129
|
:lockout
|
130
|
+
elsif registers[362]
|
131
|
+
:dehumidify
|
114
132
|
elsif outputs.include?(:cc2)
|
115
133
|
outputs.include?(:rv) ? :c2 : :h2
|
116
134
|
elsif outputs.include?(:cc)
|
117
135
|
outputs.include?(:rv) ? :c1 : :h1
|
118
136
|
elsif outputs.include?(:eh2)
|
119
|
-
:eh2
|
137
|
+
outputs.include?(:rv) ? :eh2 : :emergency
|
120
138
|
elsif outputs.include?(:eh1)
|
121
|
-
:eh1
|
139
|
+
outputs.include?(:rv) ? :eh1 : :emergency
|
122
140
|
elsif outputs.include?(:blower)
|
123
141
|
:blower
|
142
|
+
elsif registers[6]
|
143
|
+
:waiting
|
124
144
|
else
|
125
145
|
:standby
|
126
146
|
end
|
@@ -173,6 +193,37 @@ module Aurora
|
|
173
193
|
@modbus_slave.holding_registers[322] = value
|
174
194
|
end
|
175
195
|
|
196
|
+
def clear_fault_history
|
197
|
+
@modbus_slave.holding_registers[47] = 0x5555
|
198
|
+
end
|
199
|
+
|
200
|
+
def manual_operation(mode: :off,
|
201
|
+
compressor_speed: 0,
|
202
|
+
blower_speed: :with_compressor,
|
203
|
+
pump_speed: :with_compressor,
|
204
|
+
aux_heat: false)
|
205
|
+
raise ArgumentError, "mode must be :off, :heating, or :cooling" unless %i[off heating cooling].include?(mode)
|
206
|
+
raise ArgumentError, "compressor speed must be between 0 and 12" unless (0..12).include?(compressor_speed)
|
207
|
+
|
208
|
+
unless blower_speed == :with_compressor || (0..12).include?(blower_speed)
|
209
|
+
raise ArgumentError,
|
210
|
+
"blower speed must be :with_compressor or between 0 and 12"
|
211
|
+
end
|
212
|
+
unless pump_speed == :with_compressor || (0..100).include?(pump_speed)
|
213
|
+
raise ArgumentError,
|
214
|
+
"pump speed must be :with_compressor or between 0 and 100"
|
215
|
+
end
|
216
|
+
|
217
|
+
value = 0
|
218
|
+
value = 0x7fff if mode == :off
|
219
|
+
value |= 0x100 if mode == :cooling
|
220
|
+
value |= blower_speed == :with_compressor ? 0xf0 : (blower_speed << 4)
|
221
|
+
value |= 0x200 if aux_heat
|
222
|
+
|
223
|
+
@modbus_slave.holding_registers[3002] = value
|
224
|
+
@modbus_slave.holding_registers[323] = pump_speed == :with_compressor ? 0x7fff : pump_speed
|
225
|
+
end
|
226
|
+
|
176
227
|
# config aurora system
|
177
228
|
{ thermostat: 800, axb: 806, iz2: 812, aoc: 815, moc: 818, eev2: 824 }.each do |(component, register)|
|
178
229
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
data/lib/aurora/registers.rb
CHANGED
@@ -59,65 +59,102 @@ module Aurora
|
|
59
59
|
result
|
60
60
|
end
|
61
61
|
|
62
|
+
def to_int32(registers, idx)
|
63
|
+
(registers[idx] << 16) + registers[idx + 1]
|
64
|
+
end
|
65
|
+
|
62
66
|
def to_string(registers, idx, length)
|
63
67
|
(idx...(idx + length)).map do |i|
|
68
|
+
raise ArgumentError, "Missing register #{i} for string starting at #{idx}" unless registers[i]
|
69
|
+
|
64
70
|
(registers[i] >> 8).chr + (registers[i] & 0xff).chr
|
65
71
|
end.join.sub(/[ \0]+$/, "")
|
66
72
|
end
|
67
73
|
|
68
74
|
FAULTS = {
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
75
|
+
# ABC/AXB Basic Faults
|
76
|
+
1 => "Input Error", # Tstat input error. Autoreset upon condition removal.
|
77
|
+
2 => "High Pressure", # HP switch has tripped (>600 psi)
|
78
|
+
3 => "Low Pressure", # Low Pressure Switch has tripped (<40 psi for 30 continous sec.)
|
79
|
+
4 => "Freeze Detect FP2", # Freeze protection sensor has tripped (<15 or 30 degF for 30 continuous sec.)
|
80
|
+
5 => "Freeze Detect FP1", # Freeze protection sensor has tripped (<15 or 30 degF for 30 continuous sec.)
|
81
|
+
7 => "Condensate Overflow", # Condensate switch has shown continuity for 30 continuous sec.
|
82
|
+
8 => "Over/Under Voltage", # Instantaneous Voltage is out of range. **Controls shut down until resolved.
|
76
83
|
9 => "AirF/RPM",
|
77
|
-
10 => "
|
78
|
-
11 => "FP1/2
|
79
|
-
12 => "RefPerfrm
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
84
|
+
10 => "Compressor Monitor", # Open Crkt, Run, Start or welded cont
|
85
|
+
11 => "FP1/2 Sensor Error",
|
86
|
+
12 => "RefPerfrm Error",
|
87
|
+
# Miscellaneous
|
88
|
+
13 => "Non-Critical AXB Sensor Error", # Any Other Sensor Error
|
89
|
+
14 => "Critical AXB Sensor Error", # Sensor Err for EEV or HW
|
90
|
+
15 => "Hot Water Limit", # HW over limit or logic lockout. HW pump deactivated.
|
91
|
+
16 => "VS Pump Error", # Alert is read from PWM feedback.
|
92
|
+
17 => "Communicating Thermostat Error",
|
93
|
+
18 => "Non-Critical Communications Error", # Any non-critical com error
|
94
|
+
19 => "Critical Communications Error", # Any critical com error. Auto reset upon condition removal
|
95
|
+
21 => "Low Loop Pressure", # Loop pressure is below 3 psi for more than 3 minutes
|
96
|
+
22 => "Communicating ECM Error",
|
97
|
+
23 => "HA Alarm 1", # Closed contact input is present on Dig 2 input - Text is configurable.
|
98
|
+
24 => "HA Alarm 2", # Closed contact input is present on Dig 3 input - Text is configurable.
|
99
|
+
25 => "AxbEev Error",
|
100
|
+
# VS Drive
|
101
|
+
41 => "High Drive Temp", # Drive Temp has reached critical High Temp (>239 ̊F/115 ̊C)
|
102
|
+
42 => "High Discharge Temp", # Discharge temperature has reached critical high temp (> 280 ̊F/138 ̊C)
|
103
|
+
43 => "Low Suction Pressure", # Suction Pressure is critically low (< 28 psig)
|
104
|
+
44 => "Low Condensing Pressure", # Condensing pressure is critically low (< 119 psig)
|
105
|
+
45 => "High Condensing Pressure", # Condensing pressure is critically high (> 654 psig)
|
106
|
+
46 => "Output Power Limit", # Supply Voltage is <208V or Max Pwr is reached due to high pressure
|
107
|
+
47 => "EEV ID Comm Error", # Com with EEV is interupted EEV has gone independent mode
|
108
|
+
48 => "EEV OD Comm Error", # Com with EEV is interupted EEV has gone independent mode
|
109
|
+
49 => "Cabinet Temperature Sensor", # Ambient Temperature (Tamb) is <-76 or > 212 F and out of range or invalid
|
110
|
+
51 => "Discharge Temp Sensor", # Discharge Sensor (Sd) is > 280 F or invalid (-76 to 392 F)
|
111
|
+
52 => "Suction Presure Sensor", # Suction Pressure (P0) is invalid (0 to 232 psi)
|
112
|
+
53 => "Condensing Pressure Sensor", # Low condensing pressure (PD) or invalid (0 to 870 psi) Retry 10x.
|
113
|
+
54 => "Low Supply Voltage", # Supply Voltage is <180 V (190V to reset) or powered off/on too quickly (<30 sec.).
|
114
|
+
55 => "Out of Envelope", # Comp Operating out of envelope (P0) more than 90 sec. Retry 10x.
|
115
|
+
56 => "Drive Over Currnet", # Over current tripped by phase loss, earth fault, short circuit, low water flow, low air flow, or major drive fault. # rubocop:disable Layout/LineLength
|
116
|
+
57 => "Drive Over/Under Voltage", # DC Link Voltage to compressor is >450vdc or at minimum voltage (<185vdc).
|
117
|
+
58 => "High Drive Temp", # Drive Temp has reached critical High Temp >239 F
|
118
|
+
59 => "Internal Drive Error", # The MOC has encountered an internal fault or an internal error. Probably fatal.
|
119
|
+
61 => "Multiple Safe Mode", # More than one SafeMode condition is present requiring lockout
|
120
|
+
# EEV2
|
121
|
+
71 => "Loss of Charge", # High superheat and high EEV opening % for a long time will trigger a loss of charge fault
|
122
|
+
72 => "Suction Temperature Sensor", # Suction Temperature Sensor is invalid (-76 to 392 F)
|
123
|
+
73 => "Leaving Air Temperature Sensor", # Leaving Air Temperature Sensor is invalid (-76 to 392 F)
|
124
|
+
74 => "Maximum Operating Pressure", # Suction pressure has exceeded that maximum operating level for 90 sec.
|
125
|
+
99 => "System Reset"
|
126
|
+
}.freeze
|
127
|
+
|
128
|
+
SMARTGRID_ACTION = {
|
129
|
+
0 => :none,
|
130
|
+
1 => :unoccupied_set_points,
|
131
|
+
2 => :load_shed,
|
132
|
+
3 => :capacity_limiting,
|
133
|
+
4 => :off_time
|
134
|
+
}.freeze
|
135
|
+
|
136
|
+
HA_ALARM = {
|
137
|
+
0 => :none,
|
138
|
+
1 => :general,
|
139
|
+
2 => :security,
|
140
|
+
3 => :sump,
|
141
|
+
4 => :carbon_monoxide,
|
142
|
+
5 => :dirty_filter
|
119
143
|
}.freeze
|
120
144
|
|
145
|
+
VS_FAULTS = {
|
146
|
+
"Under-Voltage Warning" => (71..77),
|
147
|
+
"RPM Sensor Signal Fault" => (78..82),
|
148
|
+
"Under-Voltage Stop" => (83..87),
|
149
|
+
"Rotor Locked" => (88..92),
|
150
|
+
"Standby" => (93..)
|
151
|
+
}.freeze
|
152
|
+
|
153
|
+
def vs_fault(value)
|
154
|
+
name = VS_FAULTS.find { |(_, range)| range.include?(value) }&.first
|
155
|
+
name ? "#{value} #{name}" : value.to_s
|
156
|
+
end
|
157
|
+
|
121
158
|
AR_SETTINGS = {
|
122
159
|
0 => "Cycle with Compressor",
|
123
160
|
1 => "Cycle with Thermostat Humidification Call",
|
@@ -145,12 +182,6 @@ module Aurora
|
|
145
182
|
3 => :removed
|
146
183
|
}.freeze
|
147
184
|
|
148
|
-
VS_PUMP_CONTROL = {
|
149
|
-
0x7fff => :off,
|
150
|
-
40 => :min,
|
151
|
-
100 => :max
|
152
|
-
}.freeze
|
153
|
-
|
154
185
|
SYSTEM_OUTPUTS = {
|
155
186
|
0x01 => :cc, # compressor stage 1
|
156
187
|
0x02 => :cc2, # compressor stage 2
|
@@ -163,6 +194,13 @@ module Aurora
|
|
163
194
|
0x800 => :alarm
|
164
195
|
}.freeze
|
165
196
|
|
197
|
+
# 5-speed ECM shows
|
198
|
+
# Aux if eh1 is on
|
199
|
+
# High if cc2 is on
|
200
|
+
# Med if cc1 is on
|
201
|
+
# Low if blower is on
|
202
|
+
# Off
|
203
|
+
|
166
204
|
SYSTEM_INPUTS = {
|
167
205
|
0x01 => "Y1",
|
168
206
|
0x02 => "Y2",
|
@@ -279,6 +317,27 @@ module Aurora
|
|
279
317
|
0x7 => :unknown7
|
280
318
|
}.freeze
|
281
319
|
|
320
|
+
def manual_operation(value)
|
321
|
+
return :off if value == 0x7fff
|
322
|
+
|
323
|
+
result = {
|
324
|
+
mode: value & 0x100 == 0x100 ? :cooling : :heating
|
325
|
+
}
|
326
|
+
result[:aux_heat] = true if value & 0x200 == 0x200
|
327
|
+
result[:compressor_speed] = value & 0xf
|
328
|
+
result[:blower_speed] = value & 0xf0
|
329
|
+
result[:blower_speed] = :with_compressor if value & 0xf0 == 0xf0
|
330
|
+
leftover = value & ~0x03ff
|
331
|
+
result[:unknown] = format("0x%04x", leftover) unless leftover.zero?
|
332
|
+
result
|
333
|
+
end
|
334
|
+
|
335
|
+
def vs_manual_control(value)
|
336
|
+
return :off if value == 0x7fff
|
337
|
+
|
338
|
+
value
|
339
|
+
end
|
340
|
+
|
282
341
|
def iz2_demand(value)
|
283
342
|
{
|
284
343
|
fan_demand: value >> 8,
|
@@ -286,6 +345,18 @@ module Aurora
|
|
286
345
|
}
|
287
346
|
end
|
288
347
|
|
348
|
+
def iz2_fan_desired(value)
|
349
|
+
case value
|
350
|
+
when 1 then 25
|
351
|
+
when 2 then 40
|
352
|
+
when 3 then 55
|
353
|
+
when 4 then 70
|
354
|
+
when 5 then 85
|
355
|
+
when 6 then 100
|
356
|
+
else value
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
289
360
|
def zone_configuration1(value)
|
290
361
|
fan = if value & 0x80 == 0x80
|
291
362
|
:continuous
|
@@ -344,6 +415,7 @@ module Aurora
|
|
344
415
|
method(:dipswitch_settings) => [4, 33],
|
345
416
|
TO_TENTHS => [19, 20, 401, 419, 501, 502, 567, 740, 745, 746, 747, 900,
|
346
417
|
1105, 1106, 1107, 1108, 1110, 1111, 1114, 1117, 1134, 1136,
|
418
|
+
3327, 3522,
|
347
419
|
12_619, 12_620,
|
348
420
|
21_203, 21_204,
|
349
421
|
21_212, 21_213,
|
@@ -357,21 +429,28 @@ module Aurora
|
|
357
429
|
->(v) { from_bitmask(v, SYSTEM_OUTPUTS) } => [27, 30],
|
358
430
|
->(v) { from_bitmask(v, SYSTEM_INPUTS) } => [28],
|
359
431
|
method(:status) => [31],
|
432
|
+
->(v) { !v.zero? } => [45, 362, 400],
|
360
433
|
->(registers, idx) { to_string(registers, idx, 4) } => [88],
|
361
434
|
->(registers, idx) { to_string(registers, idx, 12) } => [92],
|
362
435
|
->(registers, idx) { to_string(registers, idx, 5) } => [105],
|
363
|
-
->(v) { from_bitmask(v, VS_DRIVE_DERATE) } => [214],
|
364
|
-
->(v) { from_bitmask(v, VS_SAFE_MODE) } => [216],
|
365
|
-
->(v) { from_bitmask(v, VS_ALARM1) } => [217],
|
366
|
-
->(v) { from_bitmask(v, VS_ALARM2) } => [218],
|
367
|
-
->(v) { from_bitmask(v, VS_EEV2) } => [280],
|
368
|
-
|
436
|
+
->(v) { from_bitmask(v, VS_DRIVE_DERATE) } => [214, 3223],
|
437
|
+
->(v) { from_bitmask(v, VS_SAFE_MODE) } => [216, 3225],
|
438
|
+
->(v) { from_bitmask(v, VS_ALARM1) } => [217, 3226],
|
439
|
+
->(v) { from_bitmask(v, VS_ALARM2) } => [218, 3227],
|
440
|
+
->(v) { from_bitmask(v, VS_EEV2) } => [280, 3804],
|
441
|
+
method(:vs_manual_control) => [323],
|
369
442
|
NEGATABLE => [346, 1146],
|
370
|
-
->(v) {
|
443
|
+
->(v) { v.zero? ? :closed : :open } => [405, 408, 410],
|
444
|
+
->(v) { SMARTGRID_ACTION[v] } => [406],
|
445
|
+
->(v) { HA_ALARM[v] } => [409, 411],
|
446
|
+
method(:iz2_fan_desired) => [565],
|
447
|
+
->(registers, idx) { to_string(registers, idx, 8) } => [710],
|
371
448
|
->(v) { COMPONENT_STATUS[v] } => [800, 806, 812, 815, 818, 824, 827],
|
372
449
|
->(v) { from_bitmask(v, AXB_INPUTS) } => [1103],
|
373
450
|
->(v) { from_bitmask(v, AXB_OUTPUTS) } => [1104],
|
374
451
|
->(v) { TO_TENTHS.call(NEGATABLE.call(v)) } => [1136],
|
452
|
+
method(:manual_operation) => [3002],
|
453
|
+
method(:to_int32) => [3422, 3424],
|
375
454
|
->(v) { HEATING_MODE[v] } => [12_606, 21_202, 21_211, 21_220, 21_229, 21_238, 21_247],
|
376
455
|
->(v) { FAN_MODE[v] } => [12_621, 21_205, 21_214, 21_223, 21_232, 21_241, 21_250],
|
377
456
|
->(v) { from_bitmask(v, HUMIDIFIER_SETTINGS) } => [31_109],
|
@@ -390,8 +469,9 @@ module Aurora
|
|
390
469
|
|
391
470
|
REGISTER_FORMATS = {
|
392
471
|
"%ds" => [1, 6, 9, 15, 84, 85],
|
393
|
-
"%dV" => [16, 112],
|
472
|
+
"%dV" => [16, 112, 3331, 3424, 3523],
|
394
473
|
"%0.1fºF" => [19, 20, 401, 501, 502, 567, 740, 745, 746, 747, 900, 1110, 1111, 1114, 1134, 1136,
|
474
|
+
3327, 3522,
|
395
475
|
12_619, 12_620,
|
396
476
|
21_203, 21_204,
|
397
477
|
21_212, 21_213,
|
@@ -402,15 +482,16 @@ module Aurora
|
|
402
482
|
31_003,
|
403
483
|
31_007, 31_010, 31_013, 31_016, 31_019, 31_022],
|
404
484
|
"E%d" => [25, 26],
|
405
|
-
"%d%%" => [282, 321, 322, 346, 565, 741],
|
485
|
+
"%d%%" => [282, 321, 322, 346, 565, 741, 3332, 3524],
|
406
486
|
"%0.1f psi" => [419],
|
407
487
|
"%0.1fA" => [1105, 1106, 1107, 1108],
|
408
488
|
"%0.1fgpm" => [1117],
|
409
|
-
"%dW" => [1147, 1149, 1151, 1153, 1165],
|
489
|
+
"%dW" => [1147, 1149, 1151, 1153, 1165, 3422],
|
410
490
|
"%dBtuh" => [1157]
|
411
491
|
}.freeze
|
412
492
|
|
413
493
|
def ignore(range)
|
494
|
+
range = (range..range) if range.is_a?(Integer)
|
414
495
|
range.zip(Array.new(range.count)).to_h
|
415
496
|
end
|
416
497
|
|
@@ -530,19 +611,20 @@ module Aurora
|
|
530
611
|
].freeze
|
531
612
|
|
532
613
|
REGISTER_NAMES = {
|
614
|
+
0 => "Test Mode Flag", # 0x100 for enabled; this might have other flags
|
533
615
|
1 => "Random Start Delay",
|
534
616
|
2 => "ABC Program Version",
|
535
617
|
3 => "??? Version?",
|
536
618
|
4 => "DIP Switch Override",
|
537
619
|
6 => "Compressor Anti-Short Cycle Delay",
|
538
|
-
8 => "
|
620
|
+
8 => "ABC Program Revision",
|
539
621
|
9 => "Compressor Minimum Run Time",
|
540
622
|
15 => "Blower Off Delay",
|
541
623
|
16 => "Line Voltage",
|
542
624
|
19 => "FP1",
|
543
625
|
20 => "FP2",
|
544
626
|
21 => "Condensate", # >= 270 normal, otherwise fault
|
545
|
-
25 => "Last Fault Number",
|
627
|
+
25 => "Last Fault Number", # high bit set if locked out
|
546
628
|
26 => "Last Lockout",
|
547
629
|
27 => "System Outputs (At Last Lockout)",
|
548
630
|
28 => "System Inputs (At Last Lockout)",
|
@@ -550,6 +632,8 @@ module Aurora
|
|
550
632
|
31 => "Status",
|
551
633
|
33 => "DIP Switch Status",
|
552
634
|
36 => "ABC Board Rev",
|
635
|
+
45 => "Test Mode (write)", # 1 to enable
|
636
|
+
47 => "Clear Fault History", # 0x5555 to clear
|
553
637
|
50 => "ECM Speed Low (== 5)",
|
554
638
|
51 => "ECM Speed Med (== 5)",
|
555
639
|
52 => "ECM Speed High (== 5)",
|
@@ -580,7 +664,8 @@ module Aurora
|
|
580
664
|
284 => "Saturated Suction Temperature", ## ?? data format
|
581
665
|
321 => "VS Pump Min",
|
582
666
|
322 => "VS Pump Max",
|
583
|
-
323 => "VS Pump Control",
|
667
|
+
323 => "VS Pump Speed Manual Control",
|
668
|
+
326 => "VS Pump Fault",
|
584
669
|
340 => "Blower Only Speed",
|
585
670
|
341 => "Lo Compressor ECM Speed",
|
586
671
|
342 => "Hi Compressor ECM Speed",
|
@@ -594,7 +679,14 @@ module Aurora
|
|
594
679
|
400 => "DHW Enabled",
|
595
680
|
401 => "DHW Setpoint",
|
596
681
|
# 403 => "DHW Status", just a guess, based on AID Tool querying this register while showing DHW settings
|
597
|
-
|
682
|
+
405 => "SmartGrid Trigger",
|
683
|
+
406 => "SmartGrid Action", # 0/1 for 1/2; see 414
|
684
|
+
407 => "Off Time Length",
|
685
|
+
408 => "HA Alarm 1 Trigger",
|
686
|
+
409 => "HA Alarm 1 Action",
|
687
|
+
410 => "HA Alaram 2 Trigger",
|
688
|
+
411 => "HA Alarm 2 Action",
|
689
|
+
414 => "On Peak/SmartGrid", # 0x0001 only
|
598
690
|
419 => "Loop Pressure Trip",
|
599
691
|
483 => "Number of IZ2 Zones",
|
600
692
|
501 => "Set Point", # only read by AID tool? this is _not_ heating/cooling set point
|
@@ -602,6 +694,7 @@ module Aurora
|
|
602
694
|
564 => "IZ2 Compressor Speed Desired",
|
603
695
|
565 => "IZ2 Blower % Desired",
|
604
696
|
567 => "Entering Air",
|
697
|
+
710 => "Fault Description",
|
605
698
|
740 => "Entering Air",
|
606
699
|
741 => "Relative Humidity",
|
607
700
|
745 => "Heating Set Point",
|
@@ -613,6 +706,9 @@ module Aurora
|
|
613
706
|
806 => "AXB Installed",
|
614
707
|
807 => "AXB Version",
|
615
708
|
808 => "AXB Revision",
|
709
|
+
809 => "AHB Installed",
|
710
|
+
810 => "AHB Version",
|
711
|
+
811 => "AHB Revision",
|
616
712
|
812 => "IZ2 Installed",
|
617
713
|
813 => "IZ2 Version",
|
618
714
|
814 => "IZ2 Revision",
|
@@ -652,9 +748,27 @@ module Aurora
|
|
652
748
|
12_619 => "Heating Setpoint (write)",
|
653
749
|
12_620 => "Cooling Setpoint (write)",
|
654
750
|
12_621 => "Fan Mode (write)",
|
655
|
-
3000 => "Compressor Speed
|
656
|
-
3001 => "Compressor Speed
|
751
|
+
3000 => "Compressor Speed Desired",
|
752
|
+
3001 => "Compressor Speed Actual",
|
753
|
+
3002 => "Manual Operation",
|
657
754
|
3027 => "Compressor Speed",
|
755
|
+
3220 => "VS Drive Details (General 1)",
|
756
|
+
3221 => "VS Drive Details (General 2)",
|
757
|
+
3222 => "VS Drive Details (Derate 1)",
|
758
|
+
3223 => "VS Drive Details (Derate 2)",
|
759
|
+
3224 => "VS Drive Details (Safemode 1)",
|
760
|
+
3225 => "VS Drive Details (Safemode 2)",
|
761
|
+
3226 => "VS Drive Details (Alarm 1)",
|
762
|
+
3227 => "VS Drive Details (Alarm 2)",
|
763
|
+
3327 => "VS Drive Temperature",
|
764
|
+
3331 => "VS Drive Line Voltage",
|
765
|
+
3332 => "VS Drive Thermo Power",
|
766
|
+
3422 => "VS Drive Compressor Power",
|
767
|
+
3424 => "VS Drive Supply Voltage",
|
768
|
+
3522 => "VS Drive Inverter Temperature",
|
769
|
+
3523 => "VS Drive UDC Voltage",
|
770
|
+
3524 => "VS Drive Fan Speed",
|
771
|
+
3804 => "VS Drive Details (EEV2 Ctl)",
|
658
772
|
3904 => "Leaving Air Temperature?",
|
659
773
|
31_003 => "Outdoor Temp",
|
660
774
|
31_005 => "IZ2 Demand",
|
@@ -670,7 +784,10 @@ module Aurora
|
|
670
784
|
.merge(ignore(93..104))
|
671
785
|
.merge(ignore(106..109))
|
672
786
|
.merge(faults(601..699))
|
787
|
+
.merge(ignore(711..717))
|
673
788
|
.merge(zone_registers)
|
789
|
+
.merge(ignore(3423))
|
790
|
+
.merge(ignore(3425))
|
674
791
|
.merge(ignore(31_401..31_412))
|
675
792
|
.merge(ignore(31_414..31_420))
|
676
793
|
.merge(ignore(31_422..31_433))
|
data/lib/aurora/version.rb
CHANGED