waterfurnace_aurora 1.4.1 → 1.4.4

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: a4ef5fcf0d051051e1d2b07a2523a7bdedeea3cfaab48de2e19b83390e5c8ed0
4
- data.tar.gz: '0878a54174573799ced9e84c33b5eea9681a5f0b17267910e811d8ea2ee782d2'
3
+ metadata.gz: 30c7acec4f7a6f999696a3a2674030ca6b9973d1ea815843c77987ec82060d80
4
+ data.tar.gz: 4e0fa45aa56a2c55f999025c63e58d0651d43379be9be126bf0d0b138036188e
5
5
  SHA512:
6
- metadata.gz: c0ed9e08f56e21efa081885f0545db7312e252f8f6779161ed40f004b1f50d7f571548089b9c8bbbfb3f968fbf8c16402b46cb735c52128e219088c32a330da4
7
- data.tar.gz: 84585586ae2f09560f31bbdd2c165fe2fdef6345774faf078ab3fc2426ca1fad8622d33bc80612c6fd3f726d9fc9cead08dbde58da812a8217da8472b3ee16ef
6
+ metadata.gz: a991e824326cda96dea90a2335dd61f220701602d19424ee5839f265dd92e111f95e5074943ab896fa5f526f863efe2ee3a0b92c8bba999b70354117cb6a4afc
7
+ data.tar.gz: 3c0d627f9a950faf6d0423146a1032e1d3b563a073fe2ad83197758cfbace1efff67211a11a5f5d46f835333b141ae3860df2ed5b17177d343ba18de3224e4a8
@@ -12,10 +12,12 @@ require "aurora/core_ext/string"
12
12
 
13
13
  debug_modbus = false
14
14
  web_aid_tool = nil
15
+ device_name = "WaterFurnace"
15
16
 
16
17
  options = OptionParser.new do |opts|
17
18
  opts.banner = "Usage: aurora_mqtt_bridge /path/to/serial/port [options]"
18
19
 
20
+ opts.on("--device-name DEVIECENAME", "Give a descriptive name to your device") { |v| device_name = v }
19
21
  opts.on("--debug-modbus", "Print actual protocol bytes") { debug_modbus = true }
20
22
  opts.on("--web-aid-tool PORT", "Run web aid tool on given port", :integer) { |v| web_aid_tool = v }
21
23
  opts.on("-v", "--version", "Print version") do
@@ -174,22 +176,34 @@ class MQTTBridge
174
176
  :boolean,
175
177
  @abc.safe_mode?,
176
178
  hass: :binary_sensor)
177
- node.property("entering-air-temperature",
178
- "Entering Air Temperature",
179
- :float,
180
- @abc.entering_air_temperature,
181
- unit: "°F",
182
- hass: { sensor: { device_class: :temperature,
183
- state_class: :measurement,
184
- entity_category: :diagnostic } })
185
- node.property("entering-water-temperature",
186
- "Entering Water Temperature",
187
- :float,
188
- @abc.entering_water_temperature,
189
- unit: "°F",
190
- hass: { sensor: { device_class: :temperature,
191
- state_class: :measurement,
192
- entity_category: :diagnostic } })
179
+ unless @abc.entering_air_temperature.zero?
180
+ node.property("entering-air-temperature",
181
+ "Entering Air Temperature",
182
+ :float,
183
+ @abc.entering_air_temperature,
184
+ unit: "°F",
185
+ hass: { sensor: { device_class: :temperature,
186
+ state_class: :measurement,
187
+ entity_category: :diagnostic } })
188
+ end
189
+ if @abc.performance_monitoring?
190
+ node.property("entering-water-temperature",
191
+ "Entering Water Temperature",
192
+ :float,
193
+ @abc.entering_water_temperature,
194
+ unit: "°F",
195
+ hass: { sensor: { device_class: :temperature,
196
+ state_class: :measurement,
197
+ entity_category: :diagnostic } })
198
+ node.property("leaving-water-temperature",
199
+ "Leaving Water Temperature",
200
+ :float,
201
+ @abc.leaving_water_temperature,
202
+ unit: "°F",
203
+ hass: { sensor: { device_class: :temperature,
204
+ state_class: :measurement,
205
+ entity_category: :diagnostic } })
206
+ end
193
207
  node.property("low-pressure-switch",
194
208
  "Low Pressure Switch Status",
195
209
  :enum,
@@ -211,14 +225,6 @@ class MQTTBridge
211
225
  state_class: :measurement,
212
226
  entity_category: :diagnostic } })
213
227
  end
214
- node.property("leaving-water-temperature",
215
- "Leaving Water Temperature",
216
- :float,
217
- @abc.leaving_water_temperature,
218
- unit: "°F",
219
- hass: { sensor: { device_class: :temperature,
220
- state_class: :measurement,
221
- entity_category: :diagnostic } })
222
228
  # TODO: figure out the config if this actually exists
223
229
  if @abc.awl_communicating? && !@abc.outdoor_temperature.zero?
224
230
  node.property("outdoor-temperature",
@@ -238,14 +244,16 @@ class MQTTBridge
238
244
  unit: "V") do |value|
239
245
  @mutex.synchronize { @abc.line_voltage = value }
240
246
  end
241
- node.property("air-coil-temperature",
242
- "Air Coil Temperature (FP2)",
243
- :float,
244
- @abc.air_coil_temperature,
245
- unit: "°F",
246
- hass: { sensor: { device_class: :temperature,
247
- state_class: :measurement,
248
- entity_category: :diagnostic } })
247
+ if (-999..999).cover?(@abc.air_coil_temperature)
248
+ node.property("air-coil-temperature",
249
+ "Air Coil Temperature (FP2)",
250
+ :float,
251
+ @abc.air_coil_temperature,
252
+ unit: "°F",
253
+ hass: { sensor: { device_class: :temperature,
254
+ state_class: :measurement,
255
+ entity_category: :diagnostic } })
256
+ end
249
257
  if @abc.energy_monitoring?
250
258
  node.property("watts",
251
259
  "Total Power Usage",
@@ -272,22 +280,23 @@ class MQTTBridge
272
280
  hass: { sensor: { device_class: :temperature,
273
281
  state_class: :measurement,
274
282
  entity_category: :diagnostic } })
275
- node.property("saturated-condensor-discharge-temperature",
276
- "Saturated Condensor Discharge Temperature",
277
- :float,
278
- @abc.compressor.saturated_condensor_discharge_temperature,
279
- unit: "°F",
280
- hass: { sensor: { device_class: :temperature,
281
- state_class: :measurement,
282
- entity_category: :diagnostic } })
283
- if @abc.energy_monitoring?
284
- node.property("watts",
285
- "Power Usage",
286
- :integer,
287
- @abc.compressor.watts,
288
- unit: "W",
289
- hass: { sensor: { device_class: :power,
290
- state_class: :measurement } })
283
+ if @abc.refrigeration_monitoring?
284
+ node.property("heating-liquid-line-temperature",
285
+ "Heating Liquid Line Temperature (FP1)",
286
+ :float,
287
+ @abc.compressor.heating_liquid_line_temperature,
288
+ unit: "°F",
289
+ hass: { sensor: { device_class: :temperature,
290
+ state_class: :measurement,
291
+ entity_category: :diagnostic } })
292
+ node.property("saturated-condensor-discharge-temperature",
293
+ "Saturated Condensor Discharge Temperature",
294
+ :float,
295
+ @abc.compressor.saturated_condensor_discharge_temperature,
296
+ unit: "°F",
297
+ hass: { sensor: { device_class: :temperature,
298
+ state_class: :measurement,
299
+ entity_category: :diagnostic } })
291
300
  node.property("heat-of-extraction",
292
301
  "Heat of Extraction",
293
302
  :integer,
@@ -300,7 +309,15 @@ class MQTTBridge
300
309
  @abc.compressor.heat_of_rejection,
301
310
  unit: "Btuh",
302
311
  hass: { sensor: { state_class: :measurement } })
303
-
312
+ end
313
+ if @abc.energy_monitoring?
314
+ node.property("watts",
315
+ "Power Usage",
316
+ :integer,
317
+ @abc.compressor.watts,
318
+ unit: "W",
319
+ hass: { sensor: { device_class: :power,
320
+ state_class: :measurement } })
304
321
  end
305
322
 
306
323
  next unless @abc.compressor.is_a?(Aurora::Compressor::VSDrive)
@@ -489,66 +506,68 @@ class MQTTBridge
489
506
  entity_category: :diagnostic } })
490
507
  end
491
508
 
492
- @pump = @homie.node("pump", "Loop Pump", @abc.pump.type) do |node|
493
- node.property("waterflow",
494
- "Waterflow",
495
- :float,
496
- @abc.pump.waterflow,
497
- unit: "gpm",
498
- hass: { sensor: { state_class: :measurement,
499
- entity_category: :diagnostic } })
500
- if @abc.energy_monitoring?
501
- node.property("watts",
502
- "Power Usage",
503
- :integer,
504
- @abc.pump.watts,
505
- unit: "W",
506
- hass: { sensor: { device_class: :power,
507
- state_class: :measurement } })
508
- end
509
+ if @abc.pump
510
+ @pump = @homie.node("pump", "Loop Pump", @abc.pump.type) do |node|
511
+ node.property("waterflow",
512
+ "Waterflow",
513
+ :float,
514
+ @abc.pump.waterflow,
515
+ unit: "gpm",
516
+ hass: { sensor: { state_class: :measurement,
517
+ entity_category: :diagnostic } })
518
+ if @abc.energy_monitoring?
519
+ node.property("watts",
520
+ "Power Usage",
521
+ :integer,
522
+ @abc.pump.watts,
523
+ unit: "W",
524
+ hass: { sensor: { device_class: :power,
525
+ state_class: :measurement } })
526
+ end
509
527
 
510
- next unless @abc.pump.is_a?(Aurora::Pump::VSPump)
528
+ next unless @abc.pump.is_a?(Aurora::Pump::VSPump)
511
529
 
512
- node.property("running",
513
- "Running",
514
- :boolean,
515
- @abc.pump.running,
516
- hass: { binary_sensor: { device_class: :running } })
517
- node.property("manual-control",
518
- "Manual Control",
519
- :boolean,
520
- @abc.pump.manual_control?,
521
- hass: { switch: { entity_category: :diagnostic } }) do |value|
522
- @mutex.synchronize { @abc.pump.manual_control = value }
523
- end
524
- node.property("minimum-speed",
525
- "Actual Minimum Speed",
526
- :integer,
527
- @abc.pump.minimum_speed,
528
- format: 0..100,
529
- unit: "%",
530
- hass: { number: { entity_category: :config } }) do |value|
531
- @mutex.synchronize { @abc.pump.minimum_speed = value }
532
- end
533
- node.property("maximum-speed",
534
- "Actual Maximum Speed",
535
- :integer,
536
- @abc.pump.minimum_speed,
537
- format: 0..100,
538
- unit: "%",
539
- hass: { number: { entity_category: :config } }) do |value|
540
- @mutex.synchronize { @abc.pump.maximum_speed = value }
541
- end
542
- next unless @abc.awl_axb?
530
+ node.property("running",
531
+ "Running",
532
+ :boolean,
533
+ @abc.pump.running,
534
+ hass: { binary_sensor: { device_class: :running } })
535
+ node.property("manual-control",
536
+ "Manual Control",
537
+ :boolean,
538
+ @abc.pump.manual_control?,
539
+ hass: { switch: { entity_category: :diagnostic } }) do |value|
540
+ @mutex.synchronize { @abc.pump.manual_control = value }
541
+ end
542
+ node.property("minimum-speed",
543
+ "Actual Minimum Speed",
544
+ :integer,
545
+ @abc.pump.minimum_speed,
546
+ format: 0..100,
547
+ unit: "%",
548
+ hass: { number: { entity_category: :config } }) do |value|
549
+ @mutex.synchronize { @abc.pump.minimum_speed = value }
550
+ end
551
+ node.property("maximum-speed",
552
+ "Actual Maximum Speed",
553
+ :integer,
554
+ @abc.pump.minimum_speed,
555
+ format: 0..100,
556
+ unit: "%",
557
+ hass: { number: { entity_category: :config } }) do |value|
558
+ @mutex.synchronize { @abc.pump.maximum_speed = value }
559
+ end
560
+ next unless @abc.awl_axb?
543
561
 
544
- node.property("speed",
545
- "Speed",
546
- :integer,
547
- @abc.pump.speed,
548
- format: 0..100,
549
- unit: "%",
550
- hass: { number: { entity_category: :diagnostic } }) do |value|
551
- @mutex.synchronize { @abc.pump.speed = value }
562
+ node.property("speed",
563
+ "Speed",
564
+ :integer,
565
+ @abc.pump.speed,
566
+ format: 0..100,
567
+ unit: "%",
568
+ hass: { number: { entity_category: :diagnostic } }) do |value|
569
+ @mutex.synchronize { @abc.pump.speed = value }
570
+ end
552
571
  end
553
572
  end
554
573
 
@@ -566,13 +585,6 @@ class MQTTBridge
566
585
  :boolean,
567
586
  @abc.dhw.running?,
568
587
  hass: { binary_sensor: { device_class: :running } })
569
- node.property("water-temperature",
570
- "Water Temperature",
571
- :float,
572
- @abc.dhw.water_temperature,
573
- unit: "°F",
574
- hass: { sensor: { device_class: :temperature,
575
- state_class: :measurement } })
576
588
  node.property("set-point",
577
589
  "Set Point",
578
590
  :float,
@@ -582,81 +594,90 @@ class MQTTBridge
582
594
  hass: { number: { step: 5 } }) do |value|
583
595
  @mutex.synchronize { @abc.dhw.set_point = value }
584
596
  end
597
+ node.property("water-temperature",
598
+ "Water Temperature",
599
+ :float,
600
+ @abc.dhw.water_temperature,
601
+ unit: "°F",
602
+ hass: { sensor: { device_class: :temperature,
603
+ state_class: :measurement } })
585
604
  end
586
605
  end
587
606
 
588
- @humidistat = @homie.node("humidistat", "Humidistat", "Humidistat") do |node|
589
- if @abc.humidistat.humidifier?
590
- node.property("humidifier-running",
591
- "Humidifier Running",
592
- :boolean,
593
- @abc.humidistat.humidifier_running?)
594
- if @abc.awl_communicating?
595
- node.property("humidifier-mode",
596
- "Humidifier Mode",
597
- :enum,
598
- @abc.humidistat.humidifier_mode,
599
- format: %i[auto manual]) do |value|
600
- @mutex.synchronize { @abc.humidistat.humidifier_mode = value.to_sym }
601
- end
602
- node.property("humidification-target",
603
- "Humidification Target Relative Humidity",
604
- :integer,
605
- @abc.humidistat.humidification_target,
606
- unit: "%",
607
- format: 15..50) do |value|
608
- @mutex.synchronize { @abc.humidistat.humidification_target = value }
607
+ if @abc.humidistat
608
+ @humidistat = @homie.node("humidistat", "Humidistat", "Humidistat") do |node|
609
+ if @abc.humidistat.humidifier?
610
+ node.property("humidifier-running",
611
+ "Humidifier Running",
612
+ :boolean,
613
+ @abc.humidistat.humidifier_running?)
614
+ if @abc.awl_communicating?
615
+ node.property("humidifier-mode",
616
+ "Humidifier Mode",
617
+ :enum,
618
+ @abc.humidistat.humidifier_mode,
619
+ format: %i[auto manual]) do |value|
620
+ @mutex.synchronize { @abc.humidistat.humidifier_mode = value.to_sym }
621
+ end
622
+ node.property("humidification-target",
623
+ "Humidification Target Relative Humidity",
624
+ :integer,
625
+ @abc.humidistat.humidification_target,
626
+ unit: "%",
627
+ format: 15..50) do |value|
628
+ @mutex.synchronize { @abc.humidistat.humidification_target = value }
629
+ end
630
+ node.hass_humidifier("humidifier-running",
631
+ target_property: "humidification-target",
632
+ mode_property: "humidifier-mode",
633
+ id: "humidifier",
634
+ name: "Humidifier",
635
+ device_class: :humidifier)
609
636
  end
610
- node.hass_humidifier("humidifier-running",
611
- target_property: "humidification-target",
612
- mode_property: "humidifier-mode",
613
- id: "humidifier",
614
- name: "Humidifier",
615
- device_class: :humidifier)
616
637
  end
617
- end
618
638
 
619
- # VSDrive can perform active dehumidification, even without a dedicated dehumidifier
620
- if @abc.humidistat.dehumidifier? ||
621
- @abc.compressor.is_a?(Aurora::Compressor::VSDrive)
622
- node.property("dehumidifier-running",
623
- "Dehumidifier Running",
624
- :boolean,
625
- @abc.humidistat.dehumidifier_running?)
626
- if @abc.awl_communicating?
627
- node.property("dehumidifier-mode",
628
- "Dehumidifier Mode",
629
- :enum,
630
- @abc.humidistat.dehumidifier_mode,
631
- format: %i[auto manual]) do |value|
632
- @mutex.synchronize { @abc.humidistat.dehumidifier_mode = value.to_sym }
633
- end
634
- node.property("dehumidification-target",
635
- "Dehumidification Target Relative Humidity",
636
- :integer,
637
- @abc.humidistat.dehumidification_target,
638
- unit: "%",
639
- format: 35..65) do |value|
640
- @mutex.synchronize { @abc.humidistat.dehumidification_target = value }
639
+ # VSDrive can perform active dehumidification, even without a dedicated dehumidifier
640
+ if @abc.humidistat.dehumidifier? ||
641
+ @abc.compressor.is_a?(Aurora::Compressor::VSDrive)
642
+ node.property("dehumidifier-running",
643
+ "Dehumidifier Running",
644
+ :boolean,
645
+ @abc.humidistat.dehumidifier_running?)
646
+ if @abc.awl_communicating?
647
+ node.property("dehumidifier-mode",
648
+ "Dehumidifier Mode",
649
+ :enum,
650
+ @abc.humidistat.dehumidifier_mode,
651
+ format: %i[auto manual]) do |value|
652
+ @mutex.synchronize { @abc.humidistat.dehumidifier_mode = value.to_sym }
653
+ end
654
+ node.property("dehumidification-target",
655
+ "Dehumidification Target Relative Humidity",
656
+ :integer,
657
+ @abc.humidistat.dehumidification_target,
658
+ unit: "%",
659
+ format: 35..65) do |value|
660
+ @mutex.synchronize { @abc.humidistat.dehumidification_target = value }
661
+ end
662
+ node.hass_humidifier("dehumidifier-running",
663
+ target_property: "dehumidification-target",
664
+ mode_property: "dehumidifier-mode",
665
+ id: "dehumidifier",
666
+ name: "Dehumidifier",
667
+ device_class: :dehumidifier)
641
668
  end
642
- node.hass_humidifier("dehumidifier-running",
643
- target_property: "dehumidification-target",
644
- mode_property: "dehumidifier-mode",
645
- id: "dehumidifier",
646
- name: "Dehumidifier",
647
- device_class: :dehumidifier)
648
669
  end
649
- end
650
- next unless @abc.awl_communicating?
670
+ next unless @abc.awl_communicating?
651
671
 
652
- node.property("relative-humidity",
653
- "Relative Humidity",
654
- :integer,
655
- @abc.humidistat.relative_humidity,
656
- unit: "%",
657
- format: 0..100,
658
- hass: { sensor: { device_class: :humidity,
659
- state_class: :measurement } })
672
+ node.property("relative-humidity",
673
+ "Relative Humidity",
674
+ :integer,
675
+ @abc.humidistat.relative_humidity,
676
+ unit: "%",
677
+ format: 0..100,
678
+ hass: { sensor: { device_class: :humidity,
679
+ state_class: :measurement } })
680
+ end
660
681
  end
661
682
 
662
683
  @faults = @homie.node("faults", "Fault History", "ABC") do |node|
@@ -765,7 +786,8 @@ class MQTTBridge
765
786
  "Ambient Temperature",
766
787
  :float,
767
788
  zone.ambient_temperature,
768
- unit: "°F")
789
+ unit: "°F",
790
+ hass: { sensor: { state_class: :measurement } })
769
791
  node.property("heating-target-temperature",
770
792
  "Heating Target Temperature",
771
793
  :integer,
@@ -810,7 +832,7 @@ class MQTTBridge
810
832
  end
811
833
 
812
834
  device = "aurora-#{abc.serial_number}"
813
- homie = MQTT::Homie::Device.new(device, "WaterFurnace", mqtt: mqtt_uri)
835
+ homie = MQTT::Homie::Device.new(device, device_name, mqtt: mqtt_uri)
814
836
  homie.logger = Aurora.logger
815
837
 
816
838
  mqtt_bridge = MQTTBridge.new(abc, homie)
@@ -185,21 +185,23 @@ module Aurora
185
185
  @pump = if (3..5).cover?(raw_registers[413])
186
186
  Pump::VSPump.new(self,
187
187
  registers[413])
188
- else
188
+ elsif axb?
189
189
  Pump::GenericPump.new(self,
190
190
  registers[413])
191
191
  end
192
- @dhw = DHW.new(self) if (-999..999).cover?(registers[1114])
192
+ @dhw = DHW.new(self) if axb? && (-999..999).cover?(registers[1114])
193
193
  @humidistat = Humidistat.new(self,
194
194
  @abc_dipswitches[:accessory_relay] == :humidifier,
195
- @axb_dipswitches[:accessory_relay2] == :dehumidifier)
196
-
195
+ axb? && @axb_dipswitches[:accessory_relay2] == :dehumidifier)
196
+ @humidistat = nil unless @humidistat.humidifier? || @humidistat.dehumidifier? || awl_communicating?
197
197
  @faults = []
198
198
 
199
199
  @entering_air_register = awl_axb? ? 740 : 567
200
- @registers_to_read = [6, 19..20, 25, 30..31, 112, 344, @entering_air_register, 1104, 1110..1111, 1114, 1150..1153,
201
- 1165]
200
+ @registers_to_read = [6, 19..20, 25, 30..31, 112, 344, @entering_air_register]
201
+ @registers_to_read << 1104 if axb?
202
202
  @registers_to_read.concat([741, 31_003]) if awl_communicating?
203
+ @registers_to_read << (1110..1111) if performance_monitoring?
204
+ @registers_to_read << (1150..1153) if energy_monitoring?
203
205
  @registers_to_read << 900 if awl_axb?
204
206
  zones.each do |z|
205
207
  @registers_to_read.concat(z.registers_to_read)
@@ -227,8 +229,10 @@ module Aurora
227
229
 
228
230
  @entering_air_temperature = registers[@entering_air_register]
229
231
  @leaving_air_temperature = registers[900] if awl_axb?
230
- @leaving_water_temperature = registers[1110]
231
- @entering_water_temperature = registers[1111]
232
+ if performance_monitoring?
233
+ @leaving_water_temperature = registers[1110]
234
+ @entering_water_temperature = registers[1111]
235
+ end
232
236
  @outdoor_temperature = registers[31_003]
233
237
  @air_coil_temperature = registers[20]
234
238
  @locked_out = !(registers[25] & 0x8000).zero?
@@ -318,6 +322,20 @@ module Aurora
318
322
  @modbus_slave.holding_registers[323] = pump_speed == :with_compressor ? 0x7fff : pump_speed
319
323
  end
320
324
 
325
+ # I'm not sure if this is correct. 5 Series documentation says
326
+ # that performance monitoring is an optional kit that requires
327
+ # an AXB, but AID Tool Sensor Kit Setup only lets you choose
328
+ # between None, Compressor Monitor, and Energy Monitor. So I'm
329
+ # assuming for now that _any_ AXB has at least performance
330
+ # monitoring.
331
+ def performance_monitoring?
332
+ axb?
333
+ end
334
+
335
+ def refrigeration_monitoring?
336
+ @energy_monitor >= 1
337
+ end
338
+
321
339
  def energy_monitoring?
322
340
  @energy_monitor == 2
323
341
  end
@@ -8,6 +8,7 @@ module Aurora
8
8
  attr_reader :speed,
9
9
  :watts,
10
10
  :cooling_liquid_line_temperature,
11
+ :heating_liquid_line_temperature,
11
12
  :saturated_condensor_discharge_temperature,
12
13
  :heat_of_extraction,
13
14
  :heat_of_rejection
@@ -26,8 +27,9 @@ module Aurora
26
27
  end
27
28
 
28
29
  def registers_to_read
29
- result = [19, 1134]
30
- result.concat([1146..1147, 1154..1157]) if abc.energy_monitoring?
30
+ result = [19]
31
+ result.concat([1109, 1134, 1154..1157]) if abc.refrigeration_monitoring?
32
+ result << (1146..1147) if abc.energy_monitoring?
31
33
  result
32
34
  end
33
35
 
@@ -41,13 +43,17 @@ module Aurora
41
43
  0
42
44
  end
43
45
  @cooling_liquid_line_temperature = registers[19]
44
- @saturated_condensor_discharge_temperature = registers[1134]
46
+
47
+ if abc.refrigeration_monitoring?
48
+ @heating_liquid_line_temperature = registers[1109]
49
+ @saturated_condensor_discharge_temperature = registers[1134]
50
+ @heat_of_extraction = registers[1154]
51
+ @heat_of_rejection = registers[1156]
52
+ end
45
53
 
46
54
  return unless abc.energy_monitoring?
47
55
 
48
56
  @watts = registers[1146]
49
- @heat_of_extraction = registers[1154]
50
- @heat_of_rejection = registers[1156]
51
57
  end
52
58
  end
53
59
 
@@ -44,8 +44,12 @@ module Aurora
44
44
  outputs = registers[30]
45
45
  @humidifier_running = humidifier? && outputs.include?(:accessory)
46
46
 
47
- outputs = registers[1104]
48
- @dehumidifer_running = dehumidifier? && outputs.include?(:accessory2)
47
+ if abc.axb?
48
+ outputs = registers[1104]
49
+ @dehumidifer_running = dehumidifier? && outputs.include?(:accessory2)
50
+ end
51
+
52
+ return unless abc.awl_communicating?
49
53
 
50
54
  base = abc.iz2? ? 31_109 : 12_309
51
55
  humidifier_settings_register = abc.iz2? ? 21_114 : 12_309
@@ -714,7 +714,7 @@ module Aurora
714
714
  9 => "Compressor Minimum Run Time",
715
715
  15 => "Blower Off Delay",
716
716
  16 => "Line Voltage",
717
- 17 => "Aux/E Heat Stage", # this is how long aux/eheat have been requested in seconds
717
+ 17 => "Aux/E Heat Staging Delay", # this is how long aux/eheat have been requested in seconds
718
718
  # when in eheat mode (explicit on the thermostat), it will stage up to eh2 after 130s
719
719
  # when in aux mode (thermostat set to heat; compressor at full capacity), it will stage up to eh2 after 310s
720
720
  19 => "Cooling Liquid Line Temperature (FP1)",
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aurora
4
- VERSION = "1.4.1"
4
+ VERSION = "1.4.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waterfurnace_aurora
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-15 00:00:00.000000000 Z
11
+ date: 2022-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ccutrer-serialport