balboa_worldwide_app 1.2.3 → 1.2.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: 6b84555384635c30873c0b10743bd87990e7fc3b6a85fc05f21ce3759d59ddbe
4
- data.tar.gz: ef7e20ab1436da76d5024a9a5641e8301795246ee8afcfbfa3a6535f787f2ddb
3
+ metadata.gz: 6c8aedb1449973af5ee03ee3927e31e6c5edaa76305ff556ab48eaccc94fc7bf
4
+ data.tar.gz: e43450ff21fe2bfabf8514642b7ce98576a32b60aa3b06a8364c5e8fd8d3ed1a
5
5
  SHA512:
6
- metadata.gz: 5cfe6592a743e415736015aadac86d71c6ba30d0fb1c562d4797103677daf725a2cfce22fd52c955d73c942bec9ea990f67a452a11244f1754a667ab9eed7c55
7
- data.tar.gz: 00117540563ef4eebb1b577ab4f24a6414d7595b2312f220e84ae391715d472a333f5e92da150e0dce18bf9ae265c06d153f59da6dfe5abe834c3ee5648cebee
6
+ metadata.gz: af663ca63be3bd5f2a80da01d038e9853bdb7781972a2da443ad22cf89f2915f5dd3feeab030a4be8e62682aa8c472a6610537583c8d48674ff68fce5527db31
7
+ data.tar.gz: aa3fbecd9f50d93097852eaf13124c671a488afc2001ec12ec4500c46349db6be6f7b81631f44dccdc9f68e3ff0157e090018b8a615fe28662eb18bdcdb26285
data/bin/bwa_mqtt_bridge CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'mqtt'
4
+ require 'sd_notify'
4
5
 
5
6
  require 'bwa/client'
6
7
  require 'bwa/discovery'
@@ -17,6 +18,9 @@ class MQTTBridge
17
18
 
18
19
  publish_basic_attributes
19
20
 
21
+ # Tell systemd we've started up OK. Ignored if systemd not in use.
22
+ SdNotify.ready
23
+
20
24
  bwa_thread = Thread.new do
21
25
  loop do
22
26
  begin
@@ -88,6 +92,9 @@ class MQTTBridge
88
92
  (0..1).each do |i|
89
93
  publish_attribute("spa/aux#{i + 1}", message.lights[i]) if @bwa.last_control_configuration2&.aux&.[](i)
90
94
  end
95
+
96
+ # Tell systemd we are still alive and kicking. Ignored if systemd not in use.
97
+ SdNotify.watchdog
91
98
  end
92
99
  end
93
100
  end
@@ -147,7 +154,7 @@ class MQTTBridge
147
154
  end
148
155
 
149
156
  def publish_basic_attributes
150
- publish("$homie", "v4.0.0")
157
+ publish("$homie", "4.0.0")
151
158
  publish("$name", "BWA Spa")
152
159
  publish("$state", "init")
153
160
  publish("$nodes", "spa")
data/lib/bwa/message.rb CHANGED
@@ -27,18 +27,28 @@ module BWA
27
27
  offset += 1
28
28
  return nil if data.length - offset < 5
29
29
 
30
+ # Keep scanning until message start char
30
31
  next unless data[offset] == '~'
32
+
33
+ # Read length (safe since we have at least 5 chars)
31
34
  length = data[offset + 1].ord
32
- # impossible message
33
- next if length < 5
35
+
36
+ # No message is this short or this long; keep scanning
37
+ next if length < 5 or length >= '~'.ord
34
38
 
35
39
  # don't have enough data for what this message wants;
36
- # it could be garbage on the line so keep scanning
37
- next if length + 2 > data.length - offset
40
+ # return and hope for more (yes this might cause a
41
+ # delay, but the protocol is very chatty so it won't
42
+ # be long)
43
+ return nil if length + 2 > data.length - offset
38
44
 
45
+ # Not properly terminated; keep scanning
39
46
  next unless data[offset + length + 1] == '~'
40
47
 
48
+ # Not a valid checksum; keep scanning
41
49
  next unless CRC.checksum(data.slice(offset + 1, length - 1)) == data[offset + length].ord
50
+
51
+ # Got a valid message!
42
52
  break
43
53
  end
44
54
 
data/lib/bwa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module BWA
2
- VERSION = '1.2.3'
2
+ VERSION = '1.2.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: balboa_worldwide_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-15 00:00:00.000000000 Z
11
+ date: 2021-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: digest-crc
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: sd_notify
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.1
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: byebug
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -143,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
157
  - !ruby/object:Gem::Version
144
158
  version: '0'
145
159
  requirements: []
146
- rubygems_version: 3.0.3
160
+ rubygems_version: 3.1.2
147
161
  signing_key:
148
162
  specification_version: 4
149
163
  summary: Library for communication with Balboa Water Group's WiFi module or RS-485