waterfurnace_aurora 0.3.11 → 0.3.12

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: fc29704fadc06f5e325457150e088018586a4f824fc776f0c8736d45f012e30d
4
- data.tar.gz: 38820a0d7713c7957d186bdbc6d3ab52cf3064fa94e15370a118058fe777d636
3
+ metadata.gz: fdebb583f3d84e8f1c050e21ac205d29bba5d29d91cb14de2c106a5de26917cd
4
+ data.tar.gz: 64f7a0b749c050e0041e34d6682f1428320b8bc3762532c62b825f43ff4c40b7
5
5
  SHA512:
6
- metadata.gz: f53b075711ce3df9fdd69b6daa8a1520d6830ae9c8717ede4a8de7c0379420a64e835abefeb56ec481a586f5d328c6f967ad1fca48b08933f6145d927877c8b4
7
- data.tar.gz: 5b858edd848f538c59f89a83d8372f6e3682066fac5586d7f3c350dc53a79e0bc23741fd472f3c43456467b8c51fcc6066ba092f1ba3c4a157c453f6937a1c41
6
+ metadata.gz: 8ec3c74f737e3d38fd593831246e1153ab2ec5eef39a488aaac43c2c22bf5df92e9e613157e1b101c6af2008d451f3513b3e47a6badae0a01b966d4ed87bc3ee
7
+ data.tar.gz: 3973f340af41d8645de59291245d599a9d7993691249ad9d0b4b7b7582a11ee5d5f95d8c11493ba1be8d9f7611e755e33e6778114bb14a5197eacb9bac16f119
data/exe/aurora_monitor CHANGED
@@ -77,7 +77,10 @@ server.request_callback = lambda { |uid, func, req|
77
77
  puts Aurora.print_registers(registers)
78
78
  elsif func == 16
79
79
  registers = Range.new(req[:addr], req[:addr] + req[:quant] - 1).zip(req[:val]).to_h
80
- next if ignore_awl_heartbeat && registers == { 460 => 102, 461 => 0, 462 => 5 }
80
+ if ignore_awl_heartbeat && [{ 460 => 102, 461 => 0, 462 => 5 },
81
+ { 460 => 102, 461 => 0, 462 => 1 }].include?(registers)
82
+ next
83
+ end
81
84
 
82
85
  puts "#{Time.now} ===== write multiple registers to #{uid}:"
83
86
  puts Aurora.print_registers(registers)
@@ -35,11 +35,11 @@ module Aurora
35
35
  registers = registers_array.each_with_index.map { |r, i| [i + 105, r] }.to_h
36
36
  @serial_number = Aurora.transform_registers(registers)[105]
37
37
 
38
- @zones = if @modbus_slave.holding_registers[813].zero?
39
- [Thermostat.new(self)]
40
- else
38
+ @zones = if iz2?
41
39
  iz2_zone_count = @modbus_slave.holding_registers[483]
42
40
  (0...iz2_zone_count).map { |i| IZ2Zone.new(self, i + 1) }
41
+ else
42
+ [Thermostat.new(self)]
43
43
  end
44
44
  @faults = []
45
45
  end
@@ -78,7 +78,8 @@ module Aurora
78
78
  registers_to_read << base3
79
79
  end
80
80
  else
81
- registers_to_read << (745..747)
81
+ registers_to_read << 502
82
+ registers_to_read << (745..746)
82
83
  end
83
84
 
84
85
  @faults = @modbus_slave.holding_registers[601..699]
@@ -141,6 +142,54 @@ module Aurora
141
142
  @modbus_slave.holding_registers[347] = value
142
143
  end
143
144
 
145
+ def cooling_airflow_adjustment=(value)
146
+ value = 0x10000 + value if value.negative?
147
+ @modbus_slave.holding_registers[346] = value
148
+ end
149
+
150
+ def dhw_enabled=(value)
151
+ @modbus_slave.holding_registers[400] = value ? 1 : 0
152
+ end
153
+
154
+ def dhw_setpoint=(value)
155
+ @modbus_slave.holding_registers[401] = value
156
+ end
157
+
158
+ def loop_pressure_trip=(value)
159
+ @modbus_slave.holding_registers[419] = (value * 10).to_i
160
+ end
161
+
162
+ def vs_pump_control=(value)
163
+ raise ArgumentError unless (value = VS_PUMP_CONTROL.invert[value])
164
+
165
+ @modbus_slave.holding_registers[323] = value
166
+ end
167
+
168
+ def vs_pump_min=(value)
169
+ @modbus_slave.holding_registers[321] = value
170
+ end
171
+
172
+ def vs_pump_max=(value)
173
+ @modbus_slave.holding_registers[322] = value
174
+ end
175
+
176
+ # config aurora system
177
+ { thermostat: 800, axb: 806, iz2: 812, aoc: 815, moc: 818, eev2: 824 }.each do |(component, register)|
178
+ class_eval <<-RUBY, __FILE__, __LINE__ + 1
179
+ def #{component}?
180
+ @modbus_slave.holding_registers[#{register}] != 3
181
+ end
182
+
183
+ def add_#{component}
184
+ @modbus_slave.holding_registers[#{register}] = 2
185
+ end
186
+
187
+ def remove_#{component}
188
+ @modbus_slave.holding_registers[#{register}] = 3
189
+ end
190
+ RUBY
191
+ end
192
+
144
193
  def inspect
145
194
  "#<Aurora::ABCClient #{(instance_variables - [:@modbus_slave]).map do |iv|
146
195
  "#{iv}=#{instance_variable_get(iv).inspect}"
@@ -139,6 +139,18 @@ module Aurora
139
139
  }
140
140
  end
141
141
 
142
+ COMPONENT_STATUS = {
143
+ 1 => :active,
144
+ 2 => :added,
145
+ 3 => :removed
146
+ }.freeze
147
+
148
+ VS_PUMP_CONTROL = {
149
+ 0x7fff => :off,
150
+ 40 => :min,
151
+ 100 => :max
152
+ }.freeze
153
+
142
154
  SYSTEM_OUTPUTS = {
143
155
  0x01 => :cc, # compressor stage 1
144
156
  0x02 => :cc2, # compressor stage 2
@@ -328,9 +340,10 @@ module Aurora
328
340
  # intermittent off time allowed: 5, 10, 15, 20, 25, 30, 35, 40
329
341
 
330
342
  REGISTER_CONVERTERS = {
331
- TO_HUNDREDTHS => [2, 3, 807, 813, 816, 817, 819, 820, 825, 828],
343
+ TO_HUNDREDTHS => [2, 3, 801, 807, 813, 816, 817, 819, 820, 825, 828],
332
344
  method(:dipswitch_settings) => [4, 33],
333
- TO_TENTHS => [19, 20, 401, 567, 740, 745, 746, 747, 900, 1105, 1106, 1107, 1108, 1110, 1111, 1114, 1117, 1134, 1136,
345
+ TO_TENTHS => [19, 20, 401, 419, 501, 502, 567, 740, 745, 746, 747, 900,
346
+ 1105, 1106, 1107, 1108, 1110, 1111, 1114, 1117, 1134, 1136,
334
347
  12_619, 12_620,
335
348
  21_203, 21_204,
336
349
  21_212, 21_213,
@@ -352,7 +365,10 @@ module Aurora
352
365
  ->(v) { from_bitmask(v, VS_ALARM1) } => [217],
353
366
  ->(v) { from_bitmask(v, VS_ALARM2) } => [218],
354
367
  ->(v) { from_bitmask(v, VS_EEV2) } => [280],
368
+ ->(v) { VS_PUMP_CONTROL[v] } => [323],
355
369
  NEGATABLE => [346, 1146],
370
+ ->(v) { !v.zero? } => [400],
371
+ ->(v) { COMPONENT_STATUS[v] } => [800, 806, 812, 815, 818, 824, 827],
356
372
  ->(v) { from_bitmask(v, AXB_INPUTS) } => [1103],
357
373
  ->(v) { from_bitmask(v, AXB_OUTPUTS) } => [1104],
358
374
  ->(v) { TO_TENTHS.call(NEGATABLE.call(v)) } => [1136],
@@ -375,7 +391,7 @@ module Aurora
375
391
  REGISTER_FORMATS = {
376
392
  "%ds" => [1, 6, 9, 15, 84, 85],
377
393
  "%dV" => [16, 112],
378
- "%0.1fºF" => [19, 20, 401, 567, 740, 745, 746, 747, 900, 1110, 1111, 1114, 1134, 1136,
394
+ "%0.1fºF" => [19, 20, 401, 501, 502, 567, 740, 745, 746, 747, 900, 1110, 1111, 1114, 1134, 1136,
379
395
  12_619, 12_620,
380
396
  21_203, 21_204,
381
397
  21_212, 21_213,
@@ -387,6 +403,7 @@ module Aurora
387
403
  31_007, 31_010, 31_013, 31_016, 31_019, 31_022],
388
404
  "E%d" => [25, 26],
389
405
  "%d%%" => [282, 321, 322, 346, 565, 741],
406
+ "%0.1f psi" => [419],
390
407
  "%0.1fA" => [1105, 1106, 1107, 1108],
391
408
  "%0.1fgpm" => [1117],
392
409
  "%dW" => [1147, 1149, 1151, 1153, 1165],
@@ -532,6 +549,7 @@ module Aurora
532
549
  30 => "System Outputs",
533
550
  31 => "Status",
534
551
  33 => "DIP Switch Status",
552
+ 36 => "ABC Board Rev",
535
553
  50 => "ECM Speed Low (== 5)",
536
554
  51 => "ECM Speed Med (== 5)",
537
555
  52 => "ECM Speed High (== 5)",
@@ -562,6 +580,7 @@ module Aurora
562
580
  284 => "Saturated Suction Temperature", ## ?? data format
563
581
  321 => "VS Pump Min",
564
582
  322 => "VS Pump Max",
583
+ 323 => "VS Pump Control",
565
584
  340 => "Blower Only Speed",
566
585
  341 => "Lo Compressor ECM Speed",
567
586
  342 => "Hi Compressor ECM Speed",
@@ -569,9 +588,17 @@ module Aurora
569
588
  346 => "Cooling Airflow Adjustment",
570
589
  347 => "Aux Heat ECM Speed",
571
590
  362 => "Active Dehumidify", # any value is true
591
+ 460 => "IZ2??",
592
+ 461 => "IZ2??",
593
+ 462 => "IZ2 Status", # 5 when online; 1 when in setup mode
594
+ 400 => "DHW Enabled",
572
595
  401 => "DHW Setpoint",
596
+ # 403 => "DHW Status", just a guess, based on AID Tool querying this register while showing DHW settings
573
597
  414 => "On Peak/SmartGrid 2", # 0x0001 only
598
+ 419 => "Loop Pressure Trip",
574
599
  483 => "Number of IZ2 Zones",
600
+ 501 => "Set Point", # only read by AID tool? this is _not_ heating/cooling set point
601
+ 502 => "Ambient Temperature",
575
602
  564 => "IZ2 Compressor Speed Desired",
576
603
  565 => "IZ2 Blower % Desired",
577
604
  567 => "Entering Air",
@@ -579,15 +606,28 @@ module Aurora
579
606
  741 => "Relative Humidity",
580
607
  745 => "Heating Set Point",
581
608
  746 => "Cooling Set Point",
582
- 747 => "Ambient Temperature",
609
+ 747 => "Ambient Temperature", # from communicating thermostat? but set to 0 when mode is off?
610
+ 800 => "Thermostat Installed",
611
+ 801 => "Thermostat Version",
612
+ 802 => "Thermostat Revision",
613
+ 806 => "AXB Installed",
583
614
  807 => "AXB Version",
615
+ 808 => "AXB Revision",
616
+ 812 => "IZ2 Installed",
584
617
  813 => "IZ2 Version",
585
- 816 => "AOC Version 1?",
586
- 817 => "AOC Version 2?",
587
- 819 => "MOC Version 1?",
588
- 820 => "MOC Version 2?",
618
+ 814 => "IZ2 Revision",
619
+ 815 => "AOC Installed",
620
+ 816 => "AOC Version",
621
+ 817 => "AOC Revision",
622
+ 818 => "MOC Installed",
623
+ 819 => "MOC Version",
624
+ 820 => "MOC Revision",
625
+ 824 => "EEV2 Installed",
589
626
  825 => "EEV2 Version",
627
+ 826 => "EEV2 Revision",
628
+ 827 => "AWL Installed",
590
629
  828 => "AWL Version",
630
+ 829 => "AWL Revision",
591
631
  900 => "Leaving Air",
592
632
  1103 => "AXB Inputs",
593
633
  1104 => "AXB Outputs",
@@ -13,7 +13,7 @@ module Aurora
13
13
  end
14
14
 
15
15
  def refresh(registers)
16
- @ambient_temperature = registers[747]
16
+ @ambient_temperature = registers[502]
17
17
  @heating_target_temperature = registers[746]
18
18
  @cooling_target_temperature = registers[745]
19
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aurora
4
- VERSION = "0.3.11"
4
+ VERSION = "0.3.12"
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.11
4
+ version: 0.3.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer