waterfurnace_aurora 0.3.9 → 0.3.10

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: 6920a48439c274a9c5f7cec06ebeabf6c97a91018f107d090ce8be793f307f99
4
- data.tar.gz: 4a7e518fcca1ec7c52d7bd1bee6d294a59b31e9f0d759270a1a2bcd2f8c75270
3
+ metadata.gz: 9043266cc8a0382960f9ee29954fa9da2c33f8507c3d0075c58d9651618fa128
4
+ data.tar.gz: 40520db833f13a4caea708589a334b21198ed551376ee70aff666c875257ea03
5
5
  SHA512:
6
- metadata.gz: 504b790c101f15dc79f5985b3fdcab529f746d912aaef0865c59404240f95908ca72a70aa262af4917b7409ac9d5366f24167eddc33ba8ba5786d0213f7b3776
7
- data.tar.gz: def8a5362616f511f514a0f3e3008302dfa0fa71d9e7ac4bd0d937cd76083ec6118cc8240e100bf5099cd610926dc912c8d4eaf50b4f7cb5149fcd5cdbbc88a8
6
+ metadata.gz: b8db6bf0c4f1e19270792fd43d16e06dcb3a1ab357c8553d6cc39bb820f546ff3782472a3c8f7cde7d2323686d7712c2f2699d53b8cd984344bda02982a979bc
7
+ data.tar.gz: 70d7fa1a21e3c3003f24f1cbe8e5909ceb216002e98d08e3262e9f56a3c2636af775a7e47b2422bbbe7511d8cf5ae390436b0d809f28a4e34f6c21ed609327a1
data/exe/aurora_fetch CHANGED
@@ -6,23 +6,25 @@ require "ccutrer-serialport"
6
6
  require "logger"
7
7
  require "optparse"
8
8
  require "uri"
9
+ require "yaml"
9
10
 
10
- debug_modbus = false
11
+ debug_modbus = yaml = false
11
12
 
12
- opts = OptionParser.new do |opts|
13
+ options = OptionParser.new do |opts|
13
14
  opts.banner = "Usage: aurora_fetch /path/to/serial/port REGISTERS [options]"
14
15
 
15
16
  opts.on("--debug-modbus", "Print actual protocol bytes") { debug_modbus = true }
17
+ opts.on("-y", "--yaml", "Output raw values as YAML") { yaml = true }
16
18
  opts.on("-h", "--help", "Prints this help") do
17
19
  puts opts
18
20
  exit
19
21
  end
20
22
  end
21
23
 
22
- opts.parse!
24
+ options.parse!
23
25
 
24
26
  unless ARGV.length == 2
25
- puts opts
27
+ puts options
26
28
  exit 1
27
29
  end
28
30
 
@@ -50,4 +52,8 @@ slave = client.with_slave(1)
50
52
  abc = Aurora::ABCClient.new(slave)
51
53
  registers = abc.query_registers(ARGV[1])
52
54
 
53
- puts Aurora.print_registers(registers)
55
+ if yaml
56
+ puts YAML.dump(registers)
57
+ else
58
+ puts Aurora.print_registers(registers)
59
+ end
@@ -71,6 +71,10 @@ class MQTTBridge
71
71
  property.value = @abc.public_send(property.id.tr("-", "_"))
72
72
  end
73
73
 
74
+ @abc.faults.each_with_index do |fault_count, i|
75
+ @faults["e#{i + 1}"].value = fault_count
76
+ end
77
+
74
78
  @abc.zones.each_with_index do |z, idx|
75
79
  homie_zone = @homie["zone#{idx + 1}"]
76
80
  homie_zone.each do |property|
@@ -125,6 +129,13 @@ class MQTTBridge
125
129
  end
126
130
  end
127
131
 
132
+ @faults = @homie.node("faults", "Fault History", "ABC") do |node|
133
+ @abc.faults.each_with_index do |count, i|
134
+ name = Aurora::FAULTS[i + 1]
135
+ node.property("e#{i + 1}", name || "E#{i + 1}", :integer, count)
136
+ end
137
+ end
138
+
128
139
  @abc.zones.each_with_index do |zone, i|
129
140
  type = zone.is_a?(Aurora::IZ2Zone) ? "IntelliZone 2 Zone" : "Thermostat"
130
141
  @homie.node("zone#{i + 1}", "Zone #{i + 1}", type) do |node|
@@ -5,6 +5,7 @@ module Aurora
5
5
  attr_reader :modbus_slave,
6
6
  :serial_number,
7
7
  :zones,
8
+ :faults,
8
9
  :current_mode,
9
10
  :fan_speed,
10
11
  :entering_air_temperature,
@@ -40,6 +41,7 @@ module Aurora
40
41
  iz2_zone_count = @modbus_slave.holding_registers[483]
41
42
  (0...iz2_zone_count).map { |i| IZ2Zone.new(self, i + 1) }
42
43
  end
44
+ @faults = []
43
45
  end
44
46
 
45
47
  def query_registers(query)
@@ -47,6 +49,8 @@ module Aurora
47
49
  case addr
48
50
  when "known"
49
51
  Aurora::REGISTER_NAMES.keys
52
+ when "valid"
53
+ break Aurora::REGISTER_RANGES
50
54
  when /^(\d+)(?:\.\.|-)(\d+)$/
51
55
  $1.to_i..$2.to_i
52
56
  else
@@ -62,8 +66,8 @@ module Aurora
62
66
  end
63
67
 
64
68
  def refresh
65
- registers_to_read = [19..20, 30, 340, 344, 347, 740..741, 900, 1110..1111, 1114, 1117, 1147..1153, 1165, 3027,
66
- 31_003]
69
+ registers_to_read = [19..20, 30, 340, 344, 347, 740..741, 900, 1110..1111, 1114, 1117, 1147..1153, 1165,
70
+ 3027, 31_003]
67
71
  if zones.first.is_a?(IZ2Zone)
68
72
  zones.each_with_index do |_z, i|
69
73
  base1 = 21_203 + i * 9
@@ -77,6 +81,8 @@ module Aurora
77
81
  registers_to_read << (745..747)
78
82
  end
79
83
 
84
+ @faults = @modbus_slave.holding_registers[601..699]
85
+
80
86
  registers = @modbus_slave.holding_registers[*registers_to_read]
81
87
  Aurora.transform_registers(registers)
82
88
 
@@ -3,6 +3,11 @@
3
3
  module Aurora
4
4
  module_function
5
5
 
6
+ # take an array of ranges, and breaks it up into queryable chunks
7
+ # the ABC limits to 100 registers per read operation
8
+ # there also seem to be issues that some ranges can't be read at
9
+ # the same time as other ranges. possibly correspond to different
10
+ # components?
6
11
  def normalize_ranges(ranges)
7
12
  registers = ranges.map { |r| Array(r) }.flatten.sort.uniq
8
13
  result = []
@@ -11,7 +16,10 @@ module Aurora
11
16
  count = 0
12
17
  registers.each_with_index do |r, i|
13
18
  run_start ||= r
14
- next unless i + 1 == registers.length || r + 1 != registers[i + 1]
19
+ next unless i + 1 == registers.length ||
20
+ r + 1 != registers[i + 1] ||
21
+ (r - run_start) == 100 ||
22
+ REGISTER_BREAKPOINTS.include?(r + 1)
15
23
 
16
24
  if r == run_start
17
25
  result << r
@@ -23,7 +31,7 @@ module Aurora
23
31
  else
24
32
  range = run_start..r
25
33
  if count + range.count > 100
26
- totals << result
34
+ totals << result unless result.empty?
27
35
  result = []
28
36
  count = 0
29
37
  end
@@ -390,7 +398,11 @@ module Aurora
390
398
  end
391
399
 
392
400
  def faults(range)
393
- range.map { |i| [i, "E#{i % 100}"] }.to_h
401
+ range.map do |i|
402
+ name = FAULTS[i % 100]
403
+ name = " (#{name})" if name
404
+ [i, "E#{i % 100}#{name}"]
405
+ end.to_h
394
406
  end
395
407
 
396
408
  def zone_registers
@@ -494,6 +506,12 @@ module Aurora
494
506
  61_000..61_009
495
507
  ].freeze
496
508
 
509
+ # see normalize_ranges
510
+ REGISTER_BREAKPOINTS = [
511
+ 12_100,
512
+ 12_500
513
+ ].freeze
514
+
497
515
  REGISTER_NAMES = {
498
516
  1 => "Random Start Delay",
499
517
  2 => "ABC Program Version",
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aurora
4
- VERSION = "0.3.9"
4
+ VERSION = "0.3.10"
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.3.9
4
+ version: 0.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer