ruby_home 0.1.21 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +1 -1
- data/README.md +20 -0
- data/lib/ruby_home.rb +12 -2
- data/lib/ruby_home/accessory_info.rb +5 -0
- data/lib/ruby_home/configuration.rb +35 -0
- data/lib/ruby_home/dns/service.rb +21 -7
- data/lib/ruby_home/dns/text_record.rb +4 -3
- data/lib/ruby_home/version.rb +1 -1
- metadata +4 -5
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f5c2472175346b490fafbd175e114227a9796e4304c472d5c3e5f4eb8734c76a
|
4
|
+
data.tar.gz: 6930dac62338255403695f5369397daa26fd0c7853d9ab2784a7de084f092655
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18ebd83f029b7a1545d2f28331ca38be78ffe5a392026e598b93732b936dc5712b43e7b7b1c24088864709cc4fa45d6189bf3c9793220303d02b1fb86c336079
|
7
|
+
data.tar.gz: cd1227d1e26ef5dd91c6fc91c1ce526cc8b8e257916161a8cc72814e68f5be522b33bdd8f4db3d46a5511ce98534261917c640dfe75e6cc9e23df2cc19efe391
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -58,6 +58,26 @@ end
|
|
58
58
|
RubyHome.run
|
59
59
|
```
|
60
60
|
|
61
|
+
## Configuration
|
62
|
+
|
63
|
+
The configuration options can be set by using the `configure` helper
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
RubyHome.configure do |c|
|
67
|
+
c.discovery_name = 'My Home'
|
68
|
+
end
|
69
|
+
```
|
70
|
+
|
71
|
+
The following is the full list of available configuration options:
|
72
|
+
|
73
|
+
| Method | Description | Default | Example | Type |
|
74
|
+
|---|---|---|---|---|
|
75
|
+
| `discovery_name` | The user-visible name of the accessory | `"RubyHome"` | `"My Home"` | String |
|
76
|
+
| `model_name` | The model name of the accessory | `"RubyHome"` | `"Device1,1"` | String |
|
77
|
+
| `password` | Used for pairing must conform to the format XXX-XX-XXX where each X is a 0-9 digit and dashes are required | Randomly generated | `"101-48-005"` | String |
|
78
|
+
| `host` | The hostname or IP address of the interface to listen on | `"0.0.0.0"` | `"192.168.0.2"` | String |
|
79
|
+
| `port` | The port that should be used when starting the built-in web server | `4567` | `8080` | Integer |
|
80
|
+
|
61
81
|
## Customization
|
62
82
|
|
63
83
|
RubyHome tries to provide sane defaults for all services. Customization of any of the options is possible.
|
data/lib/ruby_home.rb
CHANGED
@@ -18,6 +18,16 @@ module RubyHome
|
|
18
18
|
Dir[File.dirname(__FILE__) + '/ruby_home/**/*.rb'].each { |file| require file }
|
19
19
|
|
20
20
|
class << self
|
21
|
+
def configuration
|
22
|
+
@_configuration ||= Configuration.new
|
23
|
+
end
|
24
|
+
|
25
|
+
alias_method :config, :configuration
|
26
|
+
|
27
|
+
def configure
|
28
|
+
yield configuration
|
29
|
+
end
|
30
|
+
|
21
31
|
def run
|
22
32
|
trap 'INT' do shutdown end
|
23
33
|
trap 'TERM' do shutdown end
|
@@ -43,11 +53,11 @@ module RubyHome
|
|
43
53
|
end
|
44
54
|
|
45
55
|
def dns_service
|
46
|
-
@_dns_service ||= DNS::Service.new(
|
56
|
+
@_dns_service ||= DNS::Service.new(configuration: configuration)
|
47
57
|
end
|
48
58
|
|
49
59
|
def hap_server
|
50
|
-
@_hap_server ||= HAP::Server.new(
|
60
|
+
@_hap_server ||= HAP::Server.new(configuration.host, configuration.port)
|
51
61
|
end
|
52
62
|
|
53
63
|
def greet
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module RubyHome
|
2
|
+
class Configuration
|
3
|
+
extend Forwardable
|
4
|
+
|
5
|
+
def initialize(accessory_info = AccessoryInfo.instance)
|
6
|
+
@accessory_info = accessory_info
|
7
|
+
end
|
8
|
+
|
9
|
+
DEFAULT_NAME = -'RubyHome'
|
10
|
+
DEFAULT_HOST = -'0.0.0.0'
|
11
|
+
DEFAULT_PORT = 4567
|
12
|
+
DEFAULT_MODEL_NAME = DEFAULT_NAME
|
13
|
+
DEFAULT_DISCOVERY_NAME = DEFAULT_NAME
|
14
|
+
|
15
|
+
def discovery_name
|
16
|
+
@discovery_name || DEFAULT_DISCOVERY_NAME
|
17
|
+
end
|
18
|
+
|
19
|
+
def model_name
|
20
|
+
@model_name || DEFAULT_MODEL_NAME
|
21
|
+
end
|
22
|
+
|
23
|
+
def port
|
24
|
+
@port || DEFAULT_PORT
|
25
|
+
end
|
26
|
+
|
27
|
+
def host
|
28
|
+
@host || DEFAULT_HOST
|
29
|
+
end
|
30
|
+
|
31
|
+
attr_writer :discovery_name, :model_name, :host, :port
|
32
|
+
|
33
|
+
def_delegators :@accessory_info, :password, :password=
|
34
|
+
end
|
35
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module RubyHome
|
2
2
|
module DNS
|
3
3
|
class Service
|
4
|
-
def initialize(
|
5
|
-
@
|
4
|
+
def initialize(configuration: )
|
5
|
+
@configuration = configuration
|
6
6
|
end
|
7
7
|
|
8
8
|
def update
|
@@ -15,24 +15,38 @@ module RubyHome
|
|
15
15
|
|
16
16
|
private
|
17
17
|
|
18
|
+
attr_reader :configuration
|
19
|
+
|
18
20
|
def dnssd_service
|
19
21
|
@_dnssd_service ||= begin
|
20
|
-
DNSSD::Service.register(name, type, nil, port,
|
22
|
+
DNSSD::Service.register(name, type, nil, port, host, text_record)
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
24
26
|
def name
|
25
|
-
|
27
|
+
configuration.discovery_name
|
26
28
|
end
|
27
29
|
|
28
30
|
def type
|
29
|
-
'_hap._tcp'
|
31
|
+
-'_hap._tcp'
|
32
|
+
end
|
33
|
+
|
34
|
+
def port
|
35
|
+
configuration.port
|
30
36
|
end
|
31
37
|
|
32
|
-
|
38
|
+
def host
|
39
|
+
return nil if configuration.host == Configuration::DEFAULT_HOST
|
40
|
+
|
41
|
+
configuration.host
|
42
|
+
end
|
33
43
|
|
34
44
|
def text_record
|
35
|
-
TextRecord.new(accessory_info:
|
45
|
+
TextRecord.new(accessory_info: accessory_info, configuration: configuration)
|
46
|
+
end
|
47
|
+
|
48
|
+
def accessory_info
|
49
|
+
AccessoryInfo.instance
|
36
50
|
end
|
37
51
|
end
|
38
52
|
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
module RubyHome
|
2
2
|
class TextRecord < DNSSD::TextRecord
|
3
|
-
def initialize(accessory_info:)
|
3
|
+
def initialize(accessory_info:, configuration:)
|
4
|
+
@configuration = configuration
|
4
5
|
@accessory_info = accessory_info
|
5
6
|
super(to_hash)
|
6
7
|
end
|
7
8
|
|
8
9
|
private
|
9
10
|
|
10
|
-
attr_reader :accessory_info
|
11
|
+
attr_reader :accessory_info, :configuration
|
11
12
|
|
12
13
|
def to_hash
|
13
14
|
{
|
@@ -74,7 +75,7 @@ module RubyHome
|
|
74
75
|
# Model name of the accessory (e.g. "Device1,1"). Required.
|
75
76
|
|
76
77
|
def model_name
|
77
|
-
|
78
|
+
configuration.model_name
|
78
79
|
end
|
79
80
|
|
80
81
|
# Protocol version string <major>.<minor> (e.g. "1.0"). Required if value is
|
data/lib/ruby_home/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_home
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karl Entwistle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bindata
|
@@ -248,7 +248,6 @@ files:
|
|
248
248
|
- ".hound.yml"
|
249
249
|
- ".rspec"
|
250
250
|
- ".rubocop.yml"
|
251
|
-
- ".ruby-version"
|
252
251
|
- ".travis.yml"
|
253
252
|
- Gemfile
|
254
253
|
- LICENSE
|
@@ -265,6 +264,7 @@ files:
|
|
265
264
|
- lib/ruby_home/characteristic_collection.rb
|
266
265
|
- lib/ruby_home/config/characteristics.yml
|
267
266
|
- lib/ruby_home/config/services.yml
|
267
|
+
- lib/ruby_home/configuration.rb
|
268
268
|
- lib/ruby_home/device_id.rb
|
269
269
|
- lib/ruby_home/dns/service.rb
|
270
270
|
- lib/ruby_home/dns/text_record.rb
|
@@ -339,8 +339,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
339
339
|
- !ruby/object:Gem::Version
|
340
340
|
version: '0'
|
341
341
|
requirements: []
|
342
|
-
|
343
|
-
rubygems_version: 2.6.8
|
342
|
+
rubygems_version: 3.0.1
|
344
343
|
signing_key:
|
345
344
|
specification_version: 4
|
346
345
|
summary: Ruby HomeKit support
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.4.0
|