tilt_hydrometer 0.1.0 → 0.2.0.pre4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of tilt_hydrometer might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7787ee96428a2985cce2db098e27ef62e488f36c7bb261df9553985686bba5ae
4
- data.tar.gz: e9b0fa8ed0434d3948635b24567ea1f47442b0ce6b687fbd265104d35da5c196
3
+ metadata.gz: d480d07da7125838e72233f8da54f30fbfd4dbc444cacaef2b677823d67c483e
4
+ data.tar.gz: a37e4eb5cd4a069b4eff654b1a12dc379e0e7766b1bc73b8c0169650fb3fc1fd
5
5
  SHA512:
6
- metadata.gz: 6c2a109b1eaf8763e297e748dec7dabae01c5bfa9d1cbf10769691758e35e9e591beedf6b13bf48bc3d2be7b6eb4eb9250cac6275559c191876ced3a55b45166
7
- data.tar.gz: 98acc5748a92c113f7b1f9001b2d8787f6ff0aea55a036fa184a1b98d9953cb2c4e1dfead82d5eef4e6b9ce0c1508595cdd2f5bd088d0beba2ff78bb72b2e92d
6
+ metadata.gz: ea7a7faf773b28514f0172dab26f8f84038c5490b152a7340fe7864a78c39a48fe37b8a76acffe7fb23ca1be1366321b50a2b248c2bd9f45c19097be0386894a
7
+ data.tar.gz: 69271f8ec92fb394675832f425b198e342276418725f779e0a230caede0d80b404828590a71435b715f20f3480b3a5969f717202e1268d30e4c31d90b275c336
@@ -2,15 +2,15 @@
2
2
 
3
3
  require 'logger'
4
4
  require 'json'
5
+ require 'open3'
5
6
 
6
- require 'scan_beacon'
7
7
  require 'faraday'
8
8
  require 'mqtt'
9
9
 
10
10
  require 'tilt_hydrometer/version'
11
11
  require 'tilt_hydrometer/logger'
12
12
  require 'tilt_hydrometer/devices'
13
- require 'tilt_hydrometer/beacon_decorator'
13
+ require 'tilt_hydrometer/beacon'
14
14
  require 'tilt_hydrometer/throttled_execution'
15
15
  require 'tilt_hydrometer/brewfather'
16
16
  require 'tilt_hydrometer/mqtt'
@@ -1,17 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TiltHydrometer
4
- module BeaconDecorator
4
+ class Beacon
5
+ def initialize(uuid, temp, gravity)
6
+ @uuid = uuid
7
+ @temp = temp
8
+ @gravity = gravity
9
+ end
10
+
5
11
  def color
6
12
  TiltHydrometer::DEVICES[uuid]
7
13
  end
8
14
 
9
15
  def temp
10
- data[0].to_i
16
+ @temp.to_i
11
17
  end
12
18
 
13
19
  def gravity
14
- gravity_string = data[1].to_s
20
+ gravity_string = @gravity.to_s
15
21
 
16
22
  "#{gravity_string[-4] || 0}.#{gravity_string[-3..-1]}".to_f
17
23
  end
@@ -37,8 +43,9 @@ module TiltHydrometer
37
43
 
38
44
  def log
39
45
  LOGGER.debug("Beacon: #{inspect}")
40
- LOGGER.debug("Data: #{data.inspect}")
41
- LOGGER.debug("UUID: #{uuid.inspect}")
46
+ LOGGER.debug("Temp: #{temp.inspect}")
47
+ LOGGER.debug("Gravity: #{gravity.inspect}")
48
+ LOGGER.debug("UUID: #{@uuid.inspect}")
42
49
  end
43
50
  end
44
51
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'open3'
4
+
3
5
  module TiltHydrometer
4
6
  class Core
5
7
  def initialize(options = {})
@@ -7,32 +9,39 @@ module TiltHydrometer
7
9
  end
8
10
 
9
11
  def run
10
- scanner.scan do |beacons|
11
- beacons.each do |beacon|
12
- beacon.extend(TiltHydrometer::BeaconDecorator)
13
- beacon.log
12
+ scanner_pid = spawn('hcitool lescan --passive --duplicates', out: File::NULL)
13
+ Process.detach(scanner_pid)
14
+
15
+ Open3.popen3 'hcidump -R' do |_stdin, stdout, _stderr, _thread|
16
+ buffer = []
17
+ while line = stdout.gets
18
+ if line.start_with?('>') || line.start_with?('<')
19
+ process_advertisement(buffer.join.gsub(/\s+/, ''))
14
20
 
15
- if beacon.values_out_of_range?
16
- LOGGER.debug('values out of range') && next
21
+ buffer = []
17
22
  end
18
23
 
19
- brewfather&.post(beacon)
20
- mqtt&.publish(beacon)
24
+ buffer << line[2..-2]
21
25
  end
22
26
  end
23
27
  end
24
28
 
25
29
  private
26
30
 
27
- def scanner
28
- @scanner ||=
29
- ScanBeacon::DefaultScanner.new.tap do |s|
30
- s.add_parser(
31
- ScanBeacon::BeaconParser.new(
32
- :tilt, 'm:0-5=4c000215a495,i:4-19,d:20-21,d:22-23,p:24-25'
33
- )
34
- )
31
+ def process_advertisement(data)
32
+ if match = data.match(/\h{40}(A495BB[1-8]0C5B14B44B5121370F02D74DE)(\h{4})(\h{4})(\h{2})(\h{2})/i)
33
+ uuid, temp, gravity, _power, _rssi = match.captures
34
+
35
+ beacon = Beacon.new(uuid, temp, gravity)
36
+ beacon.log
37
+
38
+ if beacon.values_out_of_range?
39
+ LOGGER.debug('values out of range')
40
+ else
41
+ brewfather&.post(beacon)
42
+ mqtt&.publish(beacon)
35
43
  end
44
+ end
36
45
  end
37
46
 
38
47
  def brewfather
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TiltHydrometer
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0.pre4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tilt_hydrometer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0.pre4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steffen Schröder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-19 00:00:00.000000000 Z
11
+ date: 2021-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.5.0
55
- - !ruby/object:Gem::Dependency
56
- name: scan_beacon
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 0.7.11
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 0.7.11
69
55
  description: Read Tilt Hydrometer beacons and post to Brewfather
70
56
  email: steffen@schroeder-blog.de
71
57
  executables:
@@ -75,7 +61,7 @@ extra_rdoc_files: []
75
61
  files:
76
62
  - bin/tilt_hydrometer
77
63
  - lib/tilt_hydrometer.rb
78
- - lib/tilt_hydrometer/beacon_decorator.rb
64
+ - lib/tilt_hydrometer/beacon.rb
79
65
  - lib/tilt_hydrometer/brewfather.rb
80
66
  - lib/tilt_hydrometer/core.rb
81
67
  - lib/tilt_hydrometer/devices.rb
@@ -98,9 +84,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
84
  version: 2.5.5
99
85
  required_rubygems_version: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - ">="
87
+ - - ">"
102
88
  - !ruby/object:Gem::Version
103
- version: '0'
89
+ version: 1.3.1
104
90
  requirements: []
105
91
  rubyforge_project:
106
92
  rubygems_version: 2.7.6.2