waterfurnace_aurora 0.5.2 → 0.5.3

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: 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