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 +4 -4
- data/exe/aurora_fetch +11 -5
- data/exe/aurora_mqtt_bridge +11 -0
- data/lib/aurora/abc_client.rb +8 -2
- data/lib/aurora/registers.rb +21 -3
- data/lib/aurora/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9043266cc8a0382960f9ee29954fa9da2c33f8507c3d0075c58d9651618fa128
|
4
|
+
data.tar.gz: 40520db833f13a4caea708589a334b21198ed551376ee70aff666c875257ea03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
24
|
+
options.parse!
|
23
25
|
|
24
26
|
unless ARGV.length == 2
|
25
|
-
puts
|
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
|
-
|
55
|
+
if yaml
|
56
|
+
puts YAML.dump(registers)
|
57
|
+
else
|
58
|
+
puts Aurora.print_registers(registers)
|
59
|
+
end
|
data/exe/aurora_mqtt_bridge
CHANGED
@@ -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|
|
data/lib/aurora/abc_client.rb
CHANGED
@@ -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,
|
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
|
|
data/lib/aurora/registers.rb
CHANGED
@@ -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 ||
|
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
|
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",
|
data/lib/aurora/version.rb
CHANGED