waterfurnace_aurora 0.8.0 → 1.0.0

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: 288c8dbc14788d26473f14dcfaf388f75c8aee92c2f3b4d388bfa8326cfd2842
4
- data.tar.gz: c06f92936c81e402d08e01ae6b8c6c573acca46a85c9630914cb3c69f125a56a
3
+ metadata.gz: 5a92e9aadd14ee0154443cea52907f793880242ce22a44f3df7912065074c3c8
4
+ data.tar.gz: 553a945493652a50f92f49e4e0620db8e03305c3ff0ab65823f20c15db2ac89d
5
5
  SHA512:
6
- metadata.gz: 5e64658afee912c8188af6d88bc98e208427b8dc4ef2ce1ea6ff1efcaca15ea2042ed4eef08ccfd764ec59ce0bb82013b0abd82173ec00f9ec61cbde07a66634
7
- data.tar.gz: 6deff29644f83c329f1727d0a568c87536618ae63c7a27e58e4054eff187496c6f04bf3b63e2c35e649b2a0eb5b6395d81450a68b0096d1cacee9137c2f53c31
6
+ metadata.gz: 5fee6734f5e5752aec571c2c93a81e79be950af8c8f4a3ab3259f7d6b1d5e2540d4fd616be06d911a382c710b23ed43c1b1ecf23db23444022c24216faff52cb
7
+ data.tar.gz: c2e5a9f54f7bd0f6b869ffff94b4cd0a0bf9de65ea29d8342fe690f582893a9fe0a7b0f0ce94ba4c0ecf6595156d21a12e7e8203023aaadc923a56c0951f817f
@@ -93,6 +93,7 @@ class MQTTBridge
93
93
  @abc.refresh
94
94
 
95
95
  components = { @homie_abc => @abc,
96
+ @aux_heat => @abc.aux_heat,
96
97
  @compressor => @abc.compressor,
97
98
  @blower => @abc.blower,
98
99
  @pump => @abc.pump,
@@ -131,7 +132,7 @@ class MQTTBridge
131
132
  }
132
133
 
133
134
  @homie_abc = @homie.node("abc", "Heat Pump", "ABC") do |node|
134
- allowed_modes = %w[lockout standby blower heating cooling eh1 eh2 emergency waiting]
135
+ allowed_modes = %w[lockout standby blower heating cooling waiting]
135
136
  allowed_modes << "dehumidify" if @abc.compressor.is_a?(Aurora::Compressor::VSDrive)
136
137
  node.property("current-mode",
137
138
  "Current Heating/Cooling Mode",
@@ -208,12 +209,11 @@ class MQTTBridge
208
209
  hass: { sensor: { device_class: :temperature,
209
210
  state_class: :measurement,
210
211
  entity_category: :diagnostic } })
211
- %i[aux_heat total].each do |component|
212
- component = "#{component}_watts"
213
- node.property(component.tr("_", "-"),
214
- component.sub("_watts", " Power Usage").tr("_", " ").titleize,
212
+ if @abc.energy_monitoring?
213
+ node.property("watts",
214
+ "Total Power Usage",
215
215
  :integer,
216
- @abc.public_send(component),
216
+ @abc.watts,
217
217
  unit: "W",
218
218
  hass: { sensor: { device_class: :power,
219
219
  state_class: :measurement } })
@@ -247,6 +247,30 @@ class MQTTBridge
247
247
  hass: { sensor: { device_class: :temperature,
248
248
  state_class: :measurement,
249
249
  entity_category: :diagnostic } })
250
+ node.property("drive-temperature",
251
+ "Drive Temperature",
252
+ :float,
253
+ @abc.compressor.drive_temperature,
254
+ unit: "°F",
255
+ hass: { sensor: { device_class: :temperature,
256
+ state_class: :measurement,
257
+ entity_category: :diagnostic } })
258
+ node.property("inverter-temperature",
259
+ "Inverter Temperature",
260
+ :float,
261
+ @abc.compressor.inverter_temperature,
262
+ unit: "°F",
263
+ hass: { sensor: { device_class: :temperature,
264
+ state_class: :measurement,
265
+ entity_category: :diagnostic } })
266
+ node.property("fan-speed",
267
+ "Fan Speed",
268
+ :integer,
269
+ @abc.compressor.fan_speed,
270
+ unit: "%",
271
+ format: 0..100,
272
+ hass: { sensor: { state_class: :measurement,
273
+ entity_category: :diagnostic } })
250
274
 
251
275
  next unless @abc.iz2?
252
276
 
@@ -259,6 +283,25 @@ class MQTTBridge
259
283
  entity_category: :diagnostic } })
260
284
  end
261
285
 
286
+ @aux_heat = @homie.node("aux-heat", "Aux Heater", "Aux Heater") do |node|
287
+ node.property("stage",
288
+ "Current Stage",
289
+ :integer,
290
+ @abc.aux_heat.stage,
291
+ format: 0..2,
292
+ hass: { sensor: { state_class: :measurement } })
293
+
294
+ if @abc.energy_monitoring?
295
+ node.property("watts",
296
+ "Power Usage",
297
+ :integer,
298
+ @abc.aux_heat.watts,
299
+ unit: "W",
300
+ hass: { sensor: { device_class: :power,
301
+ state_class: :measurement } })
302
+ end
303
+ end
304
+
262
305
  @blower = @homie.node("blower", "Blower", @abc.blower.type) do |node|
263
306
  node.property("running",
264
307
  "Running",
@@ -3,6 +3,7 @@
3
3
  require "yaml"
4
4
  require "uri"
5
5
 
6
+ require "aurora/aux_heat"
6
7
  require "aurora/blower"
7
8
  require "aurora/compressor"
8
9
  require "aurora/dhw"
@@ -90,6 +91,7 @@ module Aurora
90
91
  :model,
91
92
  :serial_number,
92
93
  :zones,
94
+ :aux_heat,
93
95
  :compressor,
94
96
  :blower,
95
97
  :pump,
@@ -105,8 +107,7 @@ module Aurora
105
107
  :fp1,
106
108
  :fp2,
107
109
  :line_voltage,
108
- :aux_heat_watts,
109
- :total_watts
110
+ :watts
110
111
 
111
112
  def initialize(uri)
112
113
  @modbus_slave = self.class.open_modbus_slave(uri)
@@ -129,6 +130,7 @@ module Aurora
129
130
 
130
131
  @abc_dipswitches = registers[33]
131
132
  @axb_dipswitches = registers[1103]
133
+ @aux_heat = AuxHeat.new(self)
132
134
  @compressor = if @program == "ABCVSP"
133
135
  Compressor::VSDrive.new(self)
134
136
  else
@@ -160,7 +162,7 @@ module Aurora
160
162
  zones.each do |z|
161
163
  @registers_to_read.concat(z.registers_to_read)
162
164
  end
163
- @components = [compressor, blower, pump, dhw, humidistat].compact
165
+ @components = [aux_heat, compressor, blower, pump, dhw, humidistat].compact
164
166
  @components.each do |component|
165
167
  @registers_to_read.concat(component.registers_to_read)
166
168
  end
@@ -193,8 +195,7 @@ module Aurora
193
195
  @derated = (41..46).cover?(@error)
194
196
  @safe_mode = [47, 48, 49, 72, 74].include?(@error)
195
197
  @line_voltage = registers[112]
196
- @aux_heat_watts = registers[1151]
197
- @total_watts = registers[1153]
198
+ @watts = registers[1153]
198
199
 
199
200
  @current_mode = if outputs.include?(:lockout)
200
201
  :lockout
@@ -202,10 +203,6 @@ module Aurora
202
203
  :dehumidify
203
204
  elsif outputs.include?(:cc2) || outputs.include?(:cc)
204
205
  outputs.include?(:rv) ? :cooling : :heating
205
- elsif outputs.include?(:eh2)
206
- outputs.include?(:rv) ? :eh2 : :emergency
207
- elsif outputs.include?(:eh1)
208
- outputs.include?(:rv) ? :eh1 : :emergency
209
206
  elsif outputs.include?(:blower)
210
207
  :blower
211
208
  elsif registers[6]
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "aurora/component"
4
+
5
+ module Aurora
6
+ class AuxHeat < Component
7
+ attr_reader :stage, :watts
8
+
9
+ def refresh(registers)
10
+ outputs = registers[30]
11
+ @stage = if outputs.include?(:eh2)
12
+ 2
13
+ elsif outputs.include?(:eh1)
14
+ 1
15
+ else
16
+ 0
17
+ end
18
+ @watts = registers[1151] if abc.energy_monitoring?
19
+ end
20
+ end
21
+ end
data/lib/aurora/blower.rb CHANGED
@@ -36,7 +36,7 @@ module Aurora
36
36
 
37
37
  def refresh(registers)
38
38
  outputs = registers[30]
39
- @speed = if outputs.include?(:eh1)
39
+ @speed = if outputs.include?(:eh1) || outputs.include?(:eh2)
40
40
  4
41
41
  elsif outputs.include?(:cc2)
42
42
  3
@@ -6,6 +6,10 @@ module Aurora
6
6
  @abc = abc
7
7
  end
8
8
 
9
+ def registers_to_read
10
+ []
11
+ end
12
+
9
13
  def inspect
10
14
  "#<Aurora::#{self.class.name} #{(instance_variables - [:@abc]).map do |iv|
11
15
  "#{iv}=#{instance_variable_get(iv).inspect}"
@@ -42,7 +42,7 @@ module Aurora
42
42
  end
43
43
 
44
44
  class VSDrive < GenericCompressor
45
- attr_reader :ambient_temperature, :iz2_desired_speed
45
+ attr_reader :drive_temperature, :inverter_temperature, :ambient_temperature, :iz2_desired_speed, :fan_speed
46
46
 
47
47
  def initialize(abc)
48
48
  super(abc, 12)
@@ -53,7 +53,7 @@ module Aurora
53
53
  end
54
54
 
55
55
  def registers_to_read
56
- result = super + [209, 3001, 3326]
56
+ result = super + [209, 3001, 3326..3327, 3522, 3524]
57
57
  result << 564 if abc.iz2?
58
58
  result
59
59
  end
@@ -63,6 +63,10 @@ module Aurora
63
63
 
64
64
  @speed = registers[3001]
65
65
  @ambient_temperature = registers[3326]
66
+ @drive_temperature = registers[3327]
67
+ @inverter_temperature = registers[3522]
68
+ @fan_speed = registers[3524]
69
+
66
70
  @iz2_desired_speed = registers[564] if abc.iz2?
67
71
  end
68
72
  end
@@ -867,11 +867,11 @@ module Aurora
867
867
  3225 => "VS Drive Details (Safemode 2)",
868
868
  3226 => "VS Drive Details (Alarm 1)",
869
869
  3227 => "VS Drive Details (Alarm 2)",
870
- 3327 => "VS Drive Temperature",
871
870
  3322 => "VS Drive Discharge Pressure",
872
871
  3323 => "VS Drive Suction Pressure",
873
872
  3325 => "VS Drive Discharge Temperature",
874
873
  3326 => "VS Drive Compressor Ambient Temperature",
874
+ 3327 => "VS Drive Temperature",
875
875
  3330 => "VS Drive Entering Water Temperature",
876
876
  3331 => "VS Drive Line Voltage",
877
877
  3332 => "VS Drive Thermo Power",
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aurora
4
- VERSION = "0.8.0"
4
+ VERSION = "1.0.0"
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: 0.8.0
4
+ version: 1.0.0
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-01-27 00:00:00.000000000 Z
11
+ date: 2022-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ccutrer-serialport
@@ -166,6 +166,7 @@ files:
166
166
  - exe/web_aid_tool
167
167
  - lib/aurora.rb
168
168
  - lib/aurora/abc_client.rb
169
+ - lib/aurora/aux_heat.rb
169
170
  - lib/aurora/blower.rb
170
171
  - lib/aurora/component.rb
171
172
  - lib/aurora/compressor.rb