waterfurnace_aurora 0.6.0 → 0.6.4

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: 77762dc2957715e4f0a1dc4f608158b5f17a4801624f50d8af01ba26c8dc7410
4
- data.tar.gz: 338fd829fb1bb364900242d2a4cdacada3e08a3b87214377f81f04b0c5f9eb66
3
+ metadata.gz: aa7915f9b848e8cea608787f628b077e7fc2d5904044581758099db9a3b26742
4
+ data.tar.gz: ecf97a652368c8ed73d6bffdea6d1961e1cbb85c0587e50ba5211735368fb7b3
5
5
  SHA512:
6
- metadata.gz: 1a16b1f69d3b5720bdc323ae27b7de9908573e6a959857dce575273129fcfa5a42e7754ea87a072d28afbc47aa5e8ec9e46b40682fcc9a88dca30c36ec2aa207
7
- data.tar.gz: 0d221ae7e69561ab79dd0f9591751492c4282dc4fd33a658cc8bf99ee6973587616f199c6228e7ca2506eb99fb7a622bc77a33d0272cea942ff99177dae22c90
6
+ metadata.gz: a8b861192fcb395fbec9643840b9b91aaa3d42193d55efda03812d10114a3f4e076afc2eb79a6294bc89a0e340bd5c14f3f2e2fca25e6d1eefa32c9bff359a20
7
+ data.tar.gz: a35c95acd756183eb2bd2af220e65a182a2206b054453fb49c0e550d512831328d74f72df8e46aec118824efd581fd26e04374b67dbc7898b07f9a964d1123d8
data/exe/aurora_fetch CHANGED
@@ -15,6 +15,10 @@ options = OptionParser.new do |opts|
15
15
 
16
16
  opts.on("--debug-modbus", "Print actual protocol bytes") { debug_modbus = true }
17
17
  opts.on("-y", "--yaml", "Output raw values as YAML") { yaml = true }
18
+ opts.on("-v", "--version", "Print version") do
19
+ puts Aurora::VERSION
20
+ exit
21
+ end
18
22
  opts.on("-h", "--help", "Prints this help") do
19
23
  puts opts
20
24
  exit
data/exe/aurora_monitor CHANGED
@@ -22,6 +22,10 @@ options = OptionParser.new do |opts|
22
22
  opts.on("--debug-modbus", "Print actual protocol bytes") { debug_modbus = true }
23
23
  opts.on("--ignore-awl-heartbeat", "Don't print AWL heartbeat requests") { ignore_awl_heartbeat = true }
24
24
  opts.on("--ignore-sensors", "Don't print sensor registers (i.e. because they change a lot)") { ignore_sensors = true }
25
+ opts.on("-v", "--version", "Print version") do
26
+ puts Aurora::VERSION
27
+ exit
28
+ end
25
29
  opts.on("-h", "--help", "Prints this help") do
26
30
  puts opts
27
31
  exit
@@ -15,6 +15,10 @@ options = OptionParser.new do |opts|
15
15
  opts.banner = "Usage: aurora_mqtt_bridge /path/to/serial/port [options]"
16
16
 
17
17
  opts.on("--debug-modbus", "Print actual protocol bytes") { debug_modbus = true }
18
+ opts.on("-v", "--version", "Print version") do
19
+ puts Aurora::VERSION
20
+ exit
21
+ end
18
22
  opts.on("-h", "--help", "Prints this help") do
19
23
  puts opts
20
24
  exit
@@ -162,9 +166,8 @@ class MQTTBridge
162
166
  end
163
167
 
164
168
  @blower = @homie.node("blower", "Blower", @abc.blower.type) do |node|
165
- if @abc.blower.respond_to?(:running)
166
- node.property("running", "Blower is running", :boolean, @abc.blower.running?)
167
- else
169
+ node.property("running", "Blower is running", :boolean, @abc.blower.running?)
170
+ if @abc.blower.respond_to?(:speed)
168
171
  node.property("speed", "Current blower speed", :integer, @abc.blower.speed, format: @abc.blower.speed_range)
169
172
  end
170
173
  node.property("watts", "Energy Usage", :integer, @abc.blower.watts, unit: "W") if @abc.energy_monitoring?
@@ -228,7 +231,7 @@ class MQTTBridge
228
231
 
229
232
  @humidistat = @homie.node("humidistat", "Humidistat", "Humidistat") do |node|
230
233
  node.property("relative-humidity", "Relative Humidity", :integer, @abc.humidistat.relative_humidity,
231
- unit: "%", format: 0..100)
234
+ unit: "%", format: 0..100)
232
235
  if @abc.humidistat.humidifier?
233
236
  node.property("humidifier-running", "Humidifier is running", :boolean, @abc.humidistat.humidifier_running?)
234
237
  node.property("humidifier-mode", "Humidifier Mode", :enum, @abc.humidistat.humidifier_mode,
data/exe/web_aid_tool CHANGED
@@ -14,6 +14,10 @@ options = OptionParser.new do |opts|
14
14
 
15
15
  opts.on("--debug-modbus", "Print actual protocol bytes") { debug_modbus = true }
16
16
  opts.on("--monitor", "Print interpreted registers as they are requested, like aurora_monitor") { monitor = true }
17
+ opts.on("-v", "--version", "Print version") do
18
+ puts Aurora::VERSION
19
+ exit
20
+ end
17
21
  opts.on("-h", "--help", "Prints this help") do
18
22
  puts opts
19
23
  exit
@@ -116,3 +120,7 @@ get "/request.cgi" do
116
120
 
117
121
  encode_result(result)
118
122
  end
123
+
124
+ # can't rely on this running automatically when we're installed as a gem,
125
+ # because the wrapper script will confuse it
126
+ Sinatra::Application.run!
data/lib/aurora/blower.rb CHANGED
@@ -4,8 +4,9 @@ require "aurora/component"
4
4
 
5
5
  module Aurora
6
6
  module Blower
7
- class GenericBlower < Component
8
- attr_reader :type, :watts
7
+ class PSC < Component
8
+ attr_reader :type, :watts, :running
9
+ alias running? running
9
10
 
10
11
  def initialize(abc, type)
11
12
  super(abc)
@@ -22,19 +23,11 @@ module Aurora
22
23
 
23
24
  def refresh(registers)
24
25
  @watts = registers[1148] if abc.energy_monitoring?
26
+ @running = registers[30].include?(:blower)
25
27
  end
26
28
  end
27
29
 
28
- class PSC < GenericBlower
29
- attr_reader :running
30
- alias running? running
31
-
32
- def refresh(registers)
33
- @running = registers[30].include?(:g)
34
- end
35
- end
36
-
37
- class FiveSpeed < GenericBlower
30
+ class FiveSpeed < PSC
38
31
  attr_reader :speed
39
32
 
40
33
  def speed_range
@@ -49,7 +42,7 @@ module Aurora
49
42
  3
50
43
  elsif outputs.include?(:cc)
51
44
  2
52
- elsif outputs.include?(:g)
45
+ elsif outputs.include?(:blower)
53
46
  1
54
47
  else
55
48
  0
@@ -57,7 +50,7 @@ module Aurora
57
50
  end
58
51
  end
59
52
 
60
- class ECM < GenericBlower
53
+ class ECM < PSC
61
54
  attr_reader :speed, :blower_only_speed, :low_compressor_speed, :high_compressor_speed, :aux_heat_speed,
62
55
  :iz2_desired_speed
63
56
 
@@ -42,9 +42,10 @@ module Aurora
42
42
  @dehumidifer_running = dehumidifier? && outputs.include?(:accessory2)
43
43
 
44
44
  base = abc.iz2? ? 31_109 : 12_309
45
- @humidifier_settings = registers[abc.iz2? ? 21_114 : 12_309]
46
- @humidifier_mode = @humidifier_settings&.include?(:auto_humidification) ? :auto : :manual
47
- @dehumidifier_mode = @humidifier_settings&.include?(:auto_dehumidification) ? :auto : :manual
45
+ humidifier_settings_register = abc.iz2? ? 21_114 : 12_309
46
+ @humidifier_settings = registers[humidifier_settings_register]&.last&.[](2..-1)&.to_i(16)
47
+ @humidifier_mode = registers[humidifier_settings_register]&.include?(:auto_humidification) ? :auto : :manual
48
+ @dehumidifier_mode = registers[humidifier_settings_register]&.include?(:auto_dehumidification) ? :auto : :manual
48
49
 
49
50
  @humidification_target = registers[base + 1]&.[](:humidification_target)
50
51
  @dehumidification_target = registers[base + 1]&.[](:dehumidification_target)
@@ -64,7 +65,7 @@ module Aurora
64
65
 
65
66
  # start with the prior value of the register, since I'm not sure what
66
67
  # else is stuffed in there
67
- raw_value = @humidifier_settings &= ~0xc000
68
+ raw_value = @humidifier_settings
68
69
  raw_value |= 0x4000 if humidifier_mode == :auto
69
70
  raw_value |= 0x8000 if dehumidifier_mode == :auto
70
71
  holding_registers[abc.iz2? ? 21_114 : 12_309] = raw_value
@@ -84,7 +85,7 @@ module Aurora
84
85
  raise ArgumentError unless (15..50).include?(humidification_target)
85
86
  raise ArgumentError unless (35..65).include?(dehumidification_target)
86
87
 
87
- holding_registers[iz2? ? 21_115 : 12_310] = (humidification_target << 8) + dehumidification_target
88
+ holding_registers[abc.iz2? ? 21_115 : 12_310] = (humidification_target << 8) + dehumidification_target
88
89
  @humidification_target = humidification_target
89
90
  @dehumidification_target = dehumidification_target
90
91
  end
@@ -10,20 +10,20 @@ module Aurora
10
10
  return unless ((req.length - 1) % 4).zero?
11
11
 
12
12
  params = []
13
- req[1..].unpack("n*").each_slice(2) do |(addr, quant)|
13
+ req[1..-1].unpack("n*").each_slice(2) do |(addr, quant)|
14
14
  params << { addr: addr, quant: quant }
15
15
  end
16
16
  params
17
17
  when 66
18
18
  return unless ((req.length - 1) % 2).zero?
19
19
 
20
- req[1..].unpack("n*")
20
+ req[1..-1].unpack("n*")
21
21
  when 67
22
22
  # 1 function register, a multiple of two words
23
23
  return unless ((req.length - 1) % 4).zero?
24
24
 
25
25
  params = []
26
- req[1..].unpack("n*").each_slice(2) do |(addr, val)|
26
+ req[1..-1].unpack("n*").each_slice(2) do |(addr, val)|
27
27
  params << { addr: addr, val: val }
28
28
  end
29
29
  params
@@ -11,7 +11,7 @@ module Aurora
11
11
  @mqtt = MQTT::Client.new(uri)
12
12
  @mqtt.connect
13
13
 
14
- @base_topic = uri.path[1..]
14
+ @base_topic = uri.path[1..-1]
15
15
  @mqtt.subscribe("#{@base_topic}/getregs/response")
16
16
  end
17
17
 
@@ -186,7 +186,7 @@ module Aurora
186
186
  "RPM Sensor Signal Fault" => (78..82),
187
187
  "Under-Voltage Stop" => (83..87),
188
188
  "Rotor Locked" => (88..92),
189
- "Standby" => (93..)
189
+ "Standby" => (93..99) # should be infinite, but ruby 2.5 doesn't support it
190
190
  }.freeze
191
191
 
192
192
  def vs_fault(value)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aurora
4
- VERSION = "0.6.0"
4
+ VERSION = "0.6.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: 0.6.0
4
+ version: 0.6.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: 2021-09-02 00:00:00.000000000 Z
11
+ date: 2021-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ccutrer-serialport
@@ -30,14 +30,20 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.4.4
33
+ version: '1.4'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.4.5
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
41
  - - "~>"
39
42
  - !ruby/object:Gem::Version
40
- version: 1.4.4
43
+ version: '1.4'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.4.5
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: net-telnet-rfc2217
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -117,7 +123,6 @@ dependencies:
117
123
  description:
118
124
  email: cody@cutrer.com'
119
125
  executables:
120
- - grab_awl_assets.sh
121
126
  - aurora_monitor
122
127
  - aurora_mqtt_bridge
123
128
  - web_aid_tool
@@ -130,7 +135,6 @@ files:
130
135
  - exe/aurora_mock
131
136
  - exe/aurora_monitor
132
137
  - exe/aurora_mqtt_bridge
133
- - exe/grab_awl_assets.sh
134
138
  - exe/web_aid_tool
135
139
  - lib/aurora.rb
136
140
  - lib/aurora/abc_client.rb
@@ -150,7 +154,7 @@ files:
150
154
  - lib/aurora/thermostat.rb
151
155
  - lib/aurora/version.rb
152
156
  - lib/waterfurnace_aurora.rb
153
- homepage: https://github.com/ccutrer/waterfurnace
157
+ homepage: https://github.com/ccutrer/waterfurnace_aurora
154
158
  licenses:
155
159
  - MIT
156
160
  metadata: {}
@@ -162,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
166
  requirements:
163
167
  - - ">="
164
168
  - !ruby/object:Gem::Version
165
- version: '2.6'
169
+ version: '2.5'
166
170
  required_rubygems_version: !ruby/object:Gem::Requirement
167
171
  requirements:
168
172
  - - ">="
@@ -1,21 +0,0 @@
1
- #!/bin/bash
2
-
3
- mkdir -p html
4
- mkdir -p html/css
5
- mkdir -p html/js
6
- mkdir -p html/images
7
-
8
- IP=${1:-172.20.10.1}
9
-
10
- curl http://$IP/ > html/index.htm
11
- curl http://$IP/config.htm > html/config.htm
12
- curl http://$IP/favicon.ico > html/favicon.ico
13
- curl http://$IP/css/index.css > html/css/index.css
14
- curl http://$IP/css/phone.css > html/css/phone.css
15
- curl http://$IP/js/indexc.js > html/js/indexc.js
16
- curl http://$IP/js/configc.js > html/js/configc.js
17
- curl http://$IP/images/aurora.png > html/images/aurora.png
18
- curl http://$IP/images/back.png > html/images/back.png
19
- curl http://$IP/images/cfailed.png > html/images/cfailed.png
20
- curl http://$IP/images/cgood.png > html/images/cgood.png
21
- curl http://$IP/images/cidle.png > html/images/cidle.png