waterfurnace_aurora 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c89c3d73941d7574fbe1088bf792676f772abfb98dab07be0de27a61323ec96
4
- data.tar.gz: 13a5a82be919ee67bbbc87357eac1cf6aaba1b34514fbd808b9411dfc37bcb45
3
+ metadata.gz: a372b51d3240840ae96269020f73728fb049f3e6c0438613c9659d4158d21aa6
4
+ data.tar.gz: 249e26d5764a0ab670a60b5de7ed6da0796344fd71896c6c33d353fc4a7d95ed
5
5
  SHA512:
6
- metadata.gz: ce768bdc79fc4cd2a406ebf15757f587d373030cec21efc64076b3951a7c97f631f1e47a0e810005b24553fdd78eb4aec869022c8e0f6f33e409522f473e942b
7
- data.tar.gz: ab5cba75479435f32a42bca6fd8155a5954674996b75a4a2afe397241bce519720a083aaaf0ccf3976a8c289170ec39553f63e9ba036248bdadcf408022e7ffb
6
+ metadata.gz: c5c5ef5a5e1d6ec3d393913ca1b717a5a53a5f17c51f2c9b8ea0f6aeb627cdc873fa25e22511a779d7b9c0e9a60fdc21bc63dbb1fb0d8f6baa41c3dada85cb91
7
+ data.tar.gz: ee787175c344db12fe11f0dab4131505e5692ca360adeee78bcd0931bd4b28660de9c0d09817c5f30632808b374a3695f8a8cbf9f1e965bf410648f411ffa958
@@ -91,7 +91,8 @@ class MQTTBridge
91
91
  @compressor => @abc.compressor,
92
92
  @blower => @abc.blower,
93
93
  @pump => @abc.pump,
94
- @dhw => @abc.dhw }.compact
94
+ @dhw => @abc.dhw,
95
+ @humidifier => @abc.humidifier }.compact
95
96
  @abc.zones.each_with_index do |z, idx|
96
97
  homie_zone = @homie["zone#{idx + 1}"]
97
98
  components[homie_zone] = z
@@ -220,6 +221,12 @@ class MQTTBridge
220
221
  end
221
222
  end
222
223
 
224
+ if @abc.humidifier
225
+ @humidifier = @homie.node("humidifier", "Humidifier", "Humidifier") do |node|
226
+ node.property("running", "Humidifier is running", :boolean, @abc.humidifier.running?)
227
+ end
228
+ end
229
+
223
230
  @faults = @homie.node("faults", "Fault History", "ABC") do |node|
224
231
  node.property("clear-history", "Reset fault counts", :enum, retained: false, format: "clear") do |_|
225
232
  @mutex.synchronize { @abc.clear_fault_history }
@@ -6,6 +6,7 @@ require "uri"
6
6
  require "aurora/blower"
7
7
  require "aurora/compressor"
8
8
  require "aurora/dhw"
9
+ require "aurora/humidifier"
9
10
  require "aurora/iz2_zone"
10
11
  require "aurora/pump"
11
12
  require "aurora/thermostat"
@@ -48,6 +49,7 @@ module Aurora
48
49
  :blower,
49
50
  :pump,
50
51
  :dhw,
52
+ :humidifier,
51
53
  :faults,
52
54
  :current_mode,
53
55
  :entering_air_temperature,
@@ -65,7 +67,7 @@ module Aurora
65
67
  @modbus_slave = self.class.open_modbus_slave(uri)
66
68
  @modbus_slave.read_retry_timeout = 15
67
69
  @modbus_slave.read_retries = 2
68
- raw_registers = @modbus_slave.holding_registers[88..91, 105...110, 404, 412..413, 1114]
70
+ raw_registers = @modbus_slave.holding_registers[33, 88..91, 105...110, 404, 412..413, 1114]
69
71
  registers = Aurora.transform_registers(raw_registers.dup)
70
72
  @program = registers[88]
71
73
  @serial_number = registers[105]
@@ -78,7 +80,13 @@ module Aurora
78
80
  [Thermostat.new(self)]
79
81
  end
80
82
 
81
- @compressor = @program == "ABCVSP" ? Compressor::VSDrive.new(self) : Compressor::GenericCompressor.new(self)
83
+ @abc_dipswitches = registers[33]
84
+ @compressor = if @program == "ABCVSP"
85
+ Compressor::VSDrive.new(self)
86
+ else
87
+ Compressor::GenericCompressor.new(self,
88
+ @abc_dipswitches[:compressor])
89
+ end
82
90
  @blower = case raw_registers[404]
83
91
  when 1, 2 then Blower::ECM.new(self, registers[404])
84
92
  when 3 then Blower::FiveSpeed.new(self, registers[404])
@@ -92,6 +100,7 @@ module Aurora
92
100
  registers[413])
93
101
  end
94
102
  @dhw = DHW.new(self) if (-999..999).include?(registers[1114])
103
+ @humidifier = Humidifier.new(self) if @abc_dipswitches[:accessory_relay] == :humidifier
95
104
 
96
105
  @faults = []
97
106
  end
@@ -192,6 +201,7 @@ module Aurora
192
201
  blower.refresh(registers)
193
202
  pump.refresh(registers)
194
203
  dhw&.refresh(registers)
204
+ humidifier&.refresh(registers)
195
205
  end
196
206
 
197
207
  def cooling_airflow_adjustment=(value)
@@ -7,12 +7,17 @@ module Aurora
7
7
  class GenericCompressor < Component
8
8
  attr_reader :speed, :watts
9
9
 
10
+ def initialize(abc, stages)
11
+ super(abc)
12
+ @stages = stages
13
+ end
14
+
10
15
  def type
11
- "Compressor"
16
+ "#{@stages == 2 ? 'Dual' : 'Single'} Stage Compressor"
12
17
  end
13
18
 
14
19
  def speed_range
15
- 0..2
20
+ 0..@stages
16
21
  end
17
22
 
18
23
  def registers_to_read
@@ -39,12 +44,12 @@ module Aurora
39
44
  class VSDrive < GenericCompressor
40
45
  attr_reader :ambient_temperature, :iz2_desired_speed
41
46
 
42
- def type
43
- "Variable Speed Drive"
47
+ def initialize(abc)
48
+ super(abc, 12)
44
49
  end
45
50
 
46
- def speed_range
47
- 0..12
51
+ def type
52
+ "Variable Speed Drive"
48
53
  end
49
54
 
50
55
  def registers_to_read
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "aurora/component"
4
+
5
+ module Aurora
6
+ class Humidifier < Component
7
+ attr_reader :running
8
+ alias running? running
9
+
10
+ def refresh(registers)
11
+ outputs = registers[30]
12
+ @running = outputs.include?(:accessory)
13
+ end
14
+ end
15
+ end
@@ -194,24 +194,24 @@ module Aurora
194
194
  name ? "#{value} #{name}" : value.to_s
195
195
  end
196
196
 
197
- AR_SETTINGS = {
198
- 0 => "Cycle with Compressor",
199
- 1 => "Slow Opening Water Valve",
200
- 2 => "Cycle with Thermostat Humidification Call",
201
- 3 => "Cycle with Blower"
197
+ ACCESSORY_RELAY_SETTINGS = {
198
+ 0 => :compressor,
199
+ 1 => :slow_opening_water_valve,
200
+ 2 => :humidifier,
201
+ 3 => :blower
202
202
  }.freeze
203
203
 
204
204
  def dipswitch_settings(value)
205
205
  return :manual if value == 0x7fff
206
206
 
207
207
  {
208
- fp1: value & 0x01 == 0x01 ? "30ºF" : "15ºF",
209
- fp2: value & 0x02 == 0x02 ? "30ºF" : "15ºF",
210
- rv: value & 0x04 == 0x04 ? "O" : "B",
211
- ar: AR_SETTINGS[(value >> 3) & 0x3],
212
- cc: value & 0x20 == 0x20 ? "Single Stage" : "Dual Stage",
213
- lo: value & 0x40 == 0x40 ? "Continouous" : "Pulse",
214
- dh_rh: value & 0x80 == 0x80 ? "Dehumidifier On" : "Reheat On"
208
+ fp1: value & 0x01 == 0x01 ? 30 : 15,
209
+ fp2: value & 0x02 == 0x02 ? 30 : :off,
210
+ reversing_valve: value & 0x04 == 0x04 ? :o : :b, # cycle to cool on O, or !B
211
+ accessory_relay: ACCESSORY_RELAY_SETTINGS[(value >> 3) & 0x3],
212
+ compressor: value & 0x20 == 0x20 ? 1 : 2, # single or dual stage compressor
213
+ lockout: value & 0x40 == 0x40 ? :continuous : :pulse,
214
+ dehumidifier_reheat: value & 0x80 == 0x80 ? :dehumidifier : :reheat
215
215
  }
216
216
  end
217
217
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aurora
4
- VERSION = "0.5.2"
4
+ VERSION = "0.5.3"
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.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
@@ -139,6 +139,7 @@ files:
139
139
  - lib/aurora/compressor.rb
140
140
  - lib/aurora/core_ext/string.rb
141
141
  - lib/aurora/dhw.rb
142
+ - lib/aurora/humidifier.rb
142
143
  - lib/aurora/iz2_zone.rb
143
144
  - lib/aurora/mock_abc.rb
144
145
  - lib/aurora/modbus/server.rb