tilt_hydrometer 0.1.0 → 0.2.0.pre

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: 4b8df1c5e604d38181d00b3483bfbdb346073ed92bf09549f7f76dec25e75c11
4
+ data.tar.gz: df916a5755e4944d8ff12417a520ab30daf3212023375ccc5ec9381cff421e1c
5
5
  SHA512:
6
- metadata.gz: 6c2a109b1eaf8763e297e748dec7dabae01c5bfa9d1cbf10769691758e35e9e591beedf6b13bf48bc3d2be7b6eb4eb9250cac6275559c191876ced3a55b45166
7
- data.tar.gz: 98acc5748a92c113f7b1f9001b2d8787f6ff0aea55a036fa184a1b98d9953cb2c4e1dfead82d5eef4e6b9ce0c1508595cdd2f5bd088d0beba2ff78bb72b2e92d
6
+ metadata.gz: 2775222814a7aded4ebc4e15ab146a3baf9cb8fe030b408de425b00a3a03211fde16ed207c1debd96a6a4e20edd4f6c2160cf46f092ee9fde2b0c52de3977d88
7
+ data.tar.gz: 6d32800afedc450309eea355f1686923e7571cb6b1c8411946460df2686ff04d8e72fec725ef2dcc05539dc2e88d98f9f3acd545a40061264eeac9dcb69cba66
@@ -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
@@ -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,45 @@ 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
+ puts uuid
36
+ puts temp.to_i(16)
37
+ puts gravity.to_i(16)
38
+ puts '--------------------'
39
+
40
+ beacon = Beacon.new(uuid, temp, gravity)
41
+ beacon.log
42
+
43
+ if beacon.values_out_of_range?
44
+ LOGGER.debug('values out of range') && next
35
45
  end
46
+
47
+ brewfather&.post(beacon)
48
+ mqtt&.publish(beacon)
49
+
50
+ end
36
51
  end
37
52
 
38
53
  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.pre'
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.pre
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-29 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