waterfurnace_aurora 0.6.0 → 0.6.4

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