waterfurnace_aurora 0.8.0 → 1.0.0

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