waterfurnace_aurora 0.3.9 → 0.3.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,11 @@
3
3
  module Aurora
4
4
  module_function
5
5
 
6
+ # take an array of ranges, and breaks it up into queryable chunks
7
+ # the ABC limits to 100 registers per read operation
8
+ # there also seem to be issues that some ranges can't be read at
9
+ # the same time as other ranges. possibly correspond to different
10
+ # components?
6
11
  def normalize_ranges(ranges)
7
12
  registers = ranges.map { |r| Array(r) }.flatten.sort.uniq
8
13
  result = []
@@ -11,7 +16,10 @@ module Aurora
11
16
  count = 0
12
17
  registers.each_with_index do |r, i|
13
18
  run_start ||= r
14
- next unless i + 1 == registers.length || r + 1 != registers[i + 1]
19
+ next unless i + 1 == registers.length ||
20
+ r + 1 != registers[i + 1] ||
21
+ (r - run_start) == 100 ||
22
+ REGISTER_BREAKPOINTS.include?(r + 1)
15
23
 
16
24
  if r == run_start
17
25
  result << r
@@ -23,7 +31,7 @@ module Aurora
23
31
  else
24
32
  range = run_start..r
25
33
  if count + range.count > 100
26
- totals << result
34
+ totals << result unless result.empty?
27
35
  result = []
28
36
  count = 0
29
37
  end
@@ -51,65 +59,102 @@ module Aurora
51
59
  result
52
60
  end
53
61
 
62
+ def to_int32(registers, idx)
63
+ (registers[idx] << 16) + registers[idx + 1]
64
+ end
65
+
54
66
  def to_string(registers, idx, length)
55
67
  (idx...(idx + length)).map do |i|
68
+ raise ArgumentError, "Missing register #{i} for string starting at #{idx}" unless registers[i]
69
+
56
70
  (registers[i] >> 8).chr + (registers[i] & 0xff).chr
57
71
  end.join.sub(/[ \0]+$/, "")
58
72
  end
59
73
 
60
74
  FAULTS = {
61
- 1 => "Input Flt Limit",
62
- 2 => "High Pressure",
63
- 3 => "Low Pressure",
64
- 4 => "FP2",
65
- 5 => "FP1",
66
- 7 => "Condensate Limit",
67
- 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.
68
83
  9 => "AirF/RPM",
69
- 10 => "CompMon",
70
- 11 => "FP1/2 Snr Limit",
71
- 12 => "RefPerfrm Limit",
72
- 13 => "NCrtAxbSr Limit",
73
- 14 => "CrtAxbSnr Limit",
74
- 15 => "HW Limit",
75
- 16 => "VSPumpFlt Limit",
76
- 17 => "CommTStat Limit",
77
- 18 => "NCritComm Limit",
78
- 19 => "Crit Comm Limit",
79
- 21 => "Low Loop Pressure",
80
- 22 => "ComEcmErr Limit",
81
- 23 => "HAGenAlrm1 Limit",
82
- 24 => "HAGenAlrm2 Limit",
83
- 25 => "AxbEevErr Limit",
84
- 41 => "High Drive Temp Limit",
85
- 42 => "High Discharge Temp Limit",
86
- 43 => "Low Suction Pressure Limit",
87
- 44 => "Low Con Pressure Limit",
88
- 45 => "High Con Pressure Limit",
89
- 46 => "Out Power Limit",
90
- 47 => "EevIDComm Limit",
91
- 48 => "EevODComm Limit",
92
- 49 => "CabTmpSnr Limit",
93
- 51 => "Discharge Temp Sensor Limit",
94
- 52 => "Suction Presure Sensor Limit",
95
- 53 => "Con Pressure Sensor Limit",
96
- 54 => "Low Supply Voltage Limit",
97
- 55 => "OutEnvelp Limit",
98
- 56 => "Suction Pressure Sensor Limit",
99
- 57 => "Drive Over/Under Voltage Limit",
100
- 58 => "High Drive Temp Limit",
101
- 59 => "Internal Drive Error Limit",
102
- 61 => "MultSafm",
103
- 71 => "ChrgLoss",
104
- 72 => "Suction Temp Sensor Limit",
105
- 73 => "Leaving Air Temp Sensor Limit",
106
- 74 => "Maximum Operating Pressure Limit",
107
- 75 => "Charge Loss",
108
- 76 => "Suction Temperatur Sensor Limit",
109
- 77 => "Leaving Air Temperature Sensor Limit",
110
- 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
111
143
  }.freeze
112
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
+
113
158
  AR_SETTINGS = {
114
159
  0 => "Cycle with Compressor",
115
160
  1 => "Cycle with Thermostat Humidification Call",
@@ -131,6 +176,12 @@ module Aurora
131
176
  }
132
177
  end
133
178
 
179
+ COMPONENT_STATUS = {
180
+ 1 => :active,
181
+ 2 => :added,
182
+ 3 => :removed
183
+ }.freeze
184
+
134
185
  SYSTEM_OUTPUTS = {
135
186
  0x01 => :cc, # compressor stage 1
136
187
  0x02 => :cc2, # compressor stage 2
@@ -143,6 +194,13 @@ module Aurora
143
194
  0x800 => :alarm
144
195
  }.freeze
145
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
+
146
204
  SYSTEM_INPUTS = {
147
205
  0x01 => "Y1",
148
206
  0x02 => "Y2",
@@ -259,6 +317,27 @@ module Aurora
259
317
  0x7 => :unknown7
260
318
  }.freeze
261
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
+
262
341
  def iz2_demand(value)
263
342
  {
264
343
  fan_demand: value >> 8,
@@ -266,6 +345,18 @@ module Aurora
266
345
  }
267
346
  end
268
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
+
269
360
  def zone_configuration1(value)
270
361
  fan = if value & 0x80 == 0x80
271
362
  :continuous
@@ -320,9 +411,11 @@ module Aurora
320
411
  # intermittent off time allowed: 5, 10, 15, 20, 25, 30, 35, 40
321
412
 
322
413
  REGISTER_CONVERTERS = {
323
- TO_HUNDREDTHS => [2, 3, 807, 813, 816, 817, 819, 820, 825, 828],
414
+ TO_HUNDREDTHS => [2, 3, 801, 807, 813, 816, 817, 819, 820, 825, 828],
324
415
  method(:dipswitch_settings) => [4, 33],
325
- TO_TENTHS => [19, 20, 401, 567, 740, 745, 746, 747, 900, 1105, 1106, 1107, 1108, 1110, 1111, 1114, 1117, 1134, 1136,
416
+ TO_TENTHS => [19, 20, 401, 419, 501, 502, 567, 740, 745, 746, 747, 900,
417
+ 1105, 1106, 1107, 1108, 1110, 1111, 1114, 1117, 1134, 1136,
418
+ 3327, 3522,
326
419
  12_619, 12_620,
327
420
  21_203, 21_204,
328
421
  21_212, 21_213,
@@ -336,18 +429,28 @@ module Aurora
336
429
  ->(v) { from_bitmask(v, SYSTEM_OUTPUTS) } => [27, 30],
337
430
  ->(v) { from_bitmask(v, SYSTEM_INPUTS) } => [28],
338
431
  method(:status) => [31],
432
+ ->(v) { !v.zero? } => [45, 362, 400],
339
433
  ->(registers, idx) { to_string(registers, idx, 4) } => [88],
340
434
  ->(registers, idx) { to_string(registers, idx, 12) } => [92],
341
435
  ->(registers, idx) { to_string(registers, idx, 5) } => [105],
342
- ->(v) { from_bitmask(v, VS_DRIVE_DERATE) } => [214],
343
- ->(v) { from_bitmask(v, VS_SAFE_MODE) } => [216],
344
- ->(v) { from_bitmask(v, VS_ALARM1) } => [217],
345
- ->(v) { from_bitmask(v, VS_ALARM2) } => [218],
346
- ->(v) { from_bitmask(v, VS_EEV2) } => [280],
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],
347
442
  NEGATABLE => [346, 1146],
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],
448
+ ->(v) { COMPONENT_STATUS[v] } => [800, 806, 812, 815, 818, 824, 827],
348
449
  ->(v) { from_bitmask(v, AXB_INPUTS) } => [1103],
349
450
  ->(v) { from_bitmask(v, AXB_OUTPUTS) } => [1104],
350
451
  ->(v) { TO_TENTHS.call(NEGATABLE.call(v)) } => [1136],
452
+ method(:manual_operation) => [3002],
453
+ method(:to_int32) => [3422, 3424],
351
454
  ->(v) { HEATING_MODE[v] } => [12_606, 21_202, 21_211, 21_220, 21_229, 21_238, 21_247],
352
455
  ->(v) { FAN_MODE[v] } => [12_621, 21_205, 21_214, 21_223, 21_232, 21_241, 21_250],
353
456
  ->(v) { from_bitmask(v, HUMIDIFIER_SETTINGS) } => [31_109],
@@ -366,8 +469,9 @@ module Aurora
366
469
 
367
470
  REGISTER_FORMATS = {
368
471
  "%ds" => [1, 6, 9, 15, 84, 85],
369
- "%dV" => [16, 112],
370
- "%0.1fºF" => [19, 20, 401, 567, 740, 745, 746, 747, 900, 1110, 1111, 1114, 1134, 1136,
472
+ "%dV" => [16, 112, 3331, 3424, 3523],
473
+ "%0.1fºF" => [19, 20, 401, 501, 502, 567, 740, 745, 746, 747, 900, 1110, 1111, 1114, 1134, 1136,
474
+ 3327, 3522,
371
475
  12_619, 12_620,
372
476
  21_203, 21_204,
373
477
  21_212, 21_213,
@@ -378,19 +482,25 @@ module Aurora
378
482
  31_003,
379
483
  31_007, 31_010, 31_013, 31_016, 31_019, 31_022],
380
484
  "E%d" => [25, 26],
381
- "%d%%" => [282, 321, 322, 346, 565, 741],
485
+ "%d%%" => [282, 321, 322, 346, 565, 741, 3332, 3524],
486
+ "%0.1f psi" => [419],
382
487
  "%0.1fA" => [1105, 1106, 1107, 1108],
383
488
  "%0.1fgpm" => [1117],
384
- "%dW" => [1147, 1149, 1151, 1153, 1165],
489
+ "%dW" => [1147, 1149, 1151, 1153, 1165, 3422],
385
490
  "%dBtuh" => [1157]
386
491
  }.freeze
387
492
 
388
493
  def ignore(range)
494
+ range = (range..range) if range.is_a?(Integer)
389
495
  range.zip(Array.new(range.count)).to_h
390
496
  end
391
497
 
392
498
  def faults(range)
393
- range.map { |i| [i, "E#{i % 100}"] }.to_h
499
+ range.map do |i|
500
+ name = FAULTS[i % 100]
501
+ name = " (#{name})" if name
502
+ [i, "E#{i % 100}#{name}"]
503
+ end.to_h
394
504
  end
395
505
 
396
506
  def zone_registers
@@ -494,26 +604,36 @@ module Aurora
494
604
  61_000..61_009
495
605
  ].freeze
496
606
 
607
+ # see normalize_ranges
608
+ REGISTER_BREAKPOINTS = [
609
+ 12_100,
610
+ 12_500
611
+ ].freeze
612
+
497
613
  REGISTER_NAMES = {
614
+ 0 => "Test Mode Flag", # 0x100 for enabled; this might have other flags
498
615
  1 => "Random Start Delay",
499
616
  2 => "ABC Program Version",
500
617
  3 => "??? Version?",
501
618
  4 => "DIP Switch Override",
502
619
  6 => "Compressor Anti-Short Cycle Delay",
503
- 8 => "Unit Type?",
620
+ 8 => "ABC Program Revision",
504
621
  9 => "Compressor Minimum Run Time",
505
622
  15 => "Blower Off Delay",
506
623
  16 => "Line Voltage",
507
624
  19 => "FP1",
508
625
  20 => "FP2",
509
626
  21 => "Condensate", # >= 270 normal, otherwise fault
510
- 25 => "Last Fault Number",
627
+ 25 => "Last Fault Number", # high bit set if locked out
511
628
  26 => "Last Lockout",
512
629
  27 => "System Outputs (At Last Lockout)",
513
630
  28 => "System Inputs (At Last Lockout)",
514
631
  30 => "System Outputs",
515
632
  31 => "Status",
516
633
  33 => "DIP Switch Status",
634
+ 36 => "ABC Board Rev",
635
+ 45 => "Test Mode (write)", # 1 to enable
636
+ 47 => "Clear Fault History", # 0x5555 to clear
517
637
  50 => "ECM Speed Low (== 5)",
518
638
  51 => "ECM Speed Med (== 5)",
519
639
  52 => "ECM Speed High (== 5)",
@@ -544,6 +664,8 @@ module Aurora
544
664
  284 => "Saturated Suction Temperature", ## ?? data format
545
665
  321 => "VS Pump Min",
546
666
  322 => "VS Pump Max",
667
+ 323 => "VS Pump Speed Manual Control",
668
+ 326 => "VS Pump Fault",
547
669
  340 => "Blower Only Speed",
548
670
  341 => "Lo Compressor ECM Speed",
549
671
  342 => "Hi Compressor ECM Speed",
@@ -551,25 +673,57 @@ module Aurora
551
673
  346 => "Cooling Airflow Adjustment",
552
674
  347 => "Aux Heat ECM Speed",
553
675
  362 => "Active Dehumidify", # any value is true
676
+ 460 => "IZ2??",
677
+ 461 => "IZ2??",
678
+ 462 => "IZ2 Status", # 5 when online; 1 when in setup mode
679
+ 400 => "DHW Enabled",
554
680
  401 => "DHW Setpoint",
555
- 414 => "On Peak/SmartGrid 2", # 0x0001 only
681
+ # 403 => "DHW Status", just a guess, based on AID Tool querying this register while showing DHW settings
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
690
+ 419 => "Loop Pressure Trip",
556
691
  483 => "Number of IZ2 Zones",
692
+ 501 => "Set Point", # only read by AID tool? this is _not_ heating/cooling set point
693
+ 502 => "Ambient Temperature",
557
694
  564 => "IZ2 Compressor Speed Desired",
558
695
  565 => "IZ2 Blower % Desired",
559
696
  567 => "Entering Air",
697
+ 710 => "Fault Description",
560
698
  740 => "Entering Air",
561
699
  741 => "Relative Humidity",
562
700
  745 => "Heating Set Point",
563
701
  746 => "Cooling Set Point",
564
- 747 => "Ambient Temperature",
702
+ 747 => "Ambient Temperature", # from communicating thermostat? but set to 0 when mode is off?
703
+ 800 => "Thermostat Installed",
704
+ 801 => "Thermostat Version",
705
+ 802 => "Thermostat Revision",
706
+ 806 => "AXB Installed",
565
707
  807 => "AXB Version",
708
+ 808 => "AXB Revision",
709
+ 809 => "AHB Installed",
710
+ 810 => "AHB Version",
711
+ 811 => "AHB Revision",
712
+ 812 => "IZ2 Installed",
566
713
  813 => "IZ2 Version",
567
- 816 => "AOC Version 1?",
568
- 817 => "AOC Version 2?",
569
- 819 => "MOC Version 1?",
570
- 820 => "MOC Version 2?",
714
+ 814 => "IZ2 Revision",
715
+ 815 => "AOC Installed",
716
+ 816 => "AOC Version",
717
+ 817 => "AOC Revision",
718
+ 818 => "MOC Installed",
719
+ 819 => "MOC Version",
720
+ 820 => "MOC Revision",
721
+ 824 => "EEV2 Installed",
571
722
  825 => "EEV2 Version",
723
+ 826 => "EEV2 Revision",
724
+ 827 => "AWL Installed",
572
725
  828 => "AWL Version",
726
+ 829 => "AWL Revision",
573
727
  900 => "Leaving Air",
574
728
  1103 => "AXB Inputs",
575
729
  1104 => "AXB Outputs",
@@ -594,9 +748,27 @@ module Aurora
594
748
  12_619 => "Heating Setpoint (write)",
595
749
  12_620 => "Cooling Setpoint (write)",
596
750
  12_621 => "Fan Mode (write)",
597
- 3000 => "Compressor Speed?",
598
- 3001 => "Compressor Speed?",
751
+ 3000 => "Compressor Speed Desired",
752
+ 3001 => "Compressor Speed Actual",
753
+ 3002 => "Manual Operation",
599
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)",
600
772
  3904 => "Leaving Air Temperature?",
601
773
  31_003 => "Outdoor Temp",
602
774
  31_005 => "IZ2 Demand",
@@ -612,7 +784,10 @@ module Aurora
612
784
  .merge(ignore(93..104))
613
785
  .merge(ignore(106..109))
614
786
  .merge(faults(601..699))
787
+ .merge(ignore(711..717))
615
788
  .merge(zone_registers)
789
+ .merge(ignore(3423))
790
+ .merge(ignore(3425))
616
791
  .merge(ignore(31_401..31_412))
617
792
  .merge(ignore(31_414..31_420))
618
793
  .merge(ignore(31_422..31_433))