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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fdebb583f3d84e8f1c050e21ac205d29bba5d29d91cb14de2c106a5de26917cd
4
- data.tar.gz: 64f7a0b749c050e0041e34d6682f1428320b8bc3762532c62b825f43ff4c40b7
3
+ metadata.gz: a92c5ae13a08cf060e3c7f23613cc1302e20af0bc4bc7c77c610936bea48c2b5
4
+ data.tar.gz: 914c7c6371755e06524e063b5eb6820ca63f67844713d4d396cd08559fa62cc6
5
5
  SHA512:
6
- metadata.gz: 8ec3c74f737e3d38fd593831246e1153ab2ec5eef39a488aaac43c2c22bf5df92e9e613157e1b101c6af2008d451f3513b3e47a6badae0a01b966d4ed87bc3ee
7
- data.tar.gz: 3973f340af41d8645de59291245d599a9d7993691249ad9d0b4b7b7582a11ee5d5f95d8c11493ba1be8d9f7611e755e33e6778114bb14a5197eacb9bac16f119
6
+ metadata.gz: 384657c10727cf0a955cf4a4db5270d8ee021629e40c0dee65170e22206e3b0c21c85da2beade4f02143cdd5ff8d5631d5429c6a2957b96d933a3476cf83078c
7
+ data.tar.gz: 6ea98c0cd77e83158d8313a851b0fa155cc6ee7a042aa338abb27c3c57cec543017b1ab97953aedf11d4645fedd5a6423c35b2c4f75fae6c768cfd1d5e47635d
@@ -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, 1117, 1147..1153, 1165,
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[1117]
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
@@ -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
- 1 => "Input Flt Limit",
70
- 2 => "High Pressure",
71
- 3 => "Low Pressure",
72
- 4 => "FP2",
73
- 5 => "FP1",
74
- 7 => "Condensate Limit",
75
- 8 => "Over/Under Voltage",
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 => "CompMon",
78
- 11 => "FP1/2 Snr Limit",
79
- 12 => "RefPerfrm Limit",
80
- 13 => "NCrtAxbSr Limit",
81
- 14 => "CrtAxbSnr Limit",
82
- 15 => "HW Limit",
83
- 16 => "VSPumpFlt Limit",
84
- 17 => "CommTStat Limit",
85
- 18 => "NCritComm Limit",
86
- 19 => "Crit Comm Limit",
87
- 21 => "Low Loop Pressure",
88
- 22 => "ComEcmErr Limit",
89
- 23 => "HAGenAlrm1 Limit",
90
- 24 => "HAGenAlrm2 Limit",
91
- 25 => "AxbEevErr Limit",
92
- 41 => "High Drive Temp Limit",
93
- 42 => "High Discharge Temp Limit",
94
- 43 => "Low Suction Pressure Limit",
95
- 44 => "Low Con Pressure Limit",
96
- 45 => "High Con Pressure Limit",
97
- 46 => "Out Power Limit",
98
- 47 => "EevIDComm Limit",
99
- 48 => "EevODComm Limit",
100
- 49 => "CabTmpSnr Limit",
101
- 51 => "Discharge Temp Sensor Limit",
102
- 52 => "Suction Presure Sensor Limit",
103
- 53 => "Con Pressure Sensor Limit",
104
- 54 => "Low Supply Voltage Limit",
105
- 55 => "OutEnvelp Limit",
106
- 56 => "Suction Pressure Sensor Limit",
107
- 57 => "Drive Over/Under Voltage Limit",
108
- 58 => "High Drive Temp Limit",
109
- 59 => "Internal Drive Error Limit",
110
- 61 => "MultSafm",
111
- 71 => "ChrgLoss",
112
- 72 => "Suction Temp Sensor Limit",
113
- 73 => "Leaving Air Temp Sensor Limit",
114
- 74 => "Maximum Operating Pressure Limit",
115
- 75 => "Charge Loss",
116
- 76 => "Suction Temperatur Sensor Limit",
117
- 77 => "Leaving Air Temperature Sensor Limit",
118
- 78 => "Maximum Operating Pressure Limit"
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
- ->(v) { VS_PUMP_CONTROL[v] } => [323],
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) { !v.zero? } => [400],
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 => "Unit Type?",
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
- 414 => "On Peak/SmartGrid 2", # 0x0001 only
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))
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aurora
4
- VERSION = "0.3.12"
4
+ VERSION = "0.3.13"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waterfurnace_aurora
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.12
4
+ version: 0.3.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer