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