yamaha 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/yamaha-web +31 -0
- data/lib/yamaha/app.rb +54 -0
- data/lib/yamaha/utils.rb +15 -0
- data/lib/yamaha/version.rb +1 -1
- data/yamaha.gemspec +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0188bdf2202b494dbd4c2891306a12669720b67a682e8a453b09ee83ea8a5429'
|
4
|
+
data.tar.gz: d4eac8f6cb79c9e9e2dffc435d6a01dd5b644b2ffcb10cfb05dc6d1dca20fadc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99bbf9e9df184abeba408745ff4bf965138073f02ee1beb49db937ffd0460415c5c272472275b3cb83cde20341377f653a4c88af1a7e06f2a1b8611b22bd8297
|
7
|
+
data.tar.gz: 217919ae3985b8b746e310cfb017f613a5c26c1fb7f9c2012c8a2093675d4c749bb777d6f64a26fe36a629de3861ae7f29941d08ad961305031b991153b71c6f
|
data/bin/yamaha-web
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'yamaha/app'
|
5
|
+
rescue LoadError
|
6
|
+
$: << File.join(File.dirname(__FILE__), '../lib')
|
7
|
+
require 'yamaha/app'
|
8
|
+
end
|
9
|
+
require 'optparse'
|
10
|
+
require 'logger'
|
11
|
+
|
12
|
+
options = {}
|
13
|
+
OptionParser.new do |opts|
|
14
|
+
opts.banner = "Usage: yamaha-web [-d device] [-- rackup-options...]"
|
15
|
+
|
16
|
+
opts.on("-d", "--device DEVICE", "TTY to use (default autodetect)") do |v|
|
17
|
+
options[:device] = v
|
18
|
+
end
|
19
|
+
|
20
|
+
opts.separator ''
|
21
|
+
opts.separator 'To see rackup options: yamaha-web -- -h'
|
22
|
+
end.parse!
|
23
|
+
|
24
|
+
logger = Logger.new(STDERR)
|
25
|
+
|
26
|
+
#Yamaha::App.set :device, options[:device]
|
27
|
+
#Yamaha::App.set :logger, logger
|
28
|
+
Yamaha::App.set :client, Yamaha::Client.new(options[:device], logger: logger)
|
29
|
+
|
30
|
+
options = Rack::Server::Options.new.parse!(ARGV)
|
31
|
+
Rack::Server.start(options.merge(app: Yamaha::App))
|
data/lib/yamaha/app.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'sinatra/base'
|
2
|
+
require 'yamaha/utils'
|
3
|
+
require 'yamaha/client'
|
4
|
+
|
5
|
+
module Yamaha
|
6
|
+
class App < Sinatra::Base
|
7
|
+
|
8
|
+
set :device, nil
|
9
|
+
set :logger, nil
|
10
|
+
set :client, nil
|
11
|
+
|
12
|
+
get '/power' do
|
13
|
+
render_json(client.last_status.fetch(:power) > 0)
|
14
|
+
end
|
15
|
+
|
16
|
+
%w(main zone2 zone3).each do |zone|
|
17
|
+
get "/#{zone}/power" do
|
18
|
+
render_json(client.last_status.fetch(:"#{zone}_power"))
|
19
|
+
end
|
20
|
+
|
21
|
+
put "/#{zone}/power" do
|
22
|
+
state = Utils.parse_on_off(request.body.read)
|
23
|
+
client.public_send("set_#{zone}_power", state)
|
24
|
+
empty_response
|
25
|
+
end
|
26
|
+
|
27
|
+
get '/#{zone}/volume' do
|
28
|
+
render_json(client.public_send("get_#{zone}_volume"))
|
29
|
+
end
|
30
|
+
|
31
|
+
put '/#{zone}/volume' do
|
32
|
+
value = Float(request.body.read)
|
33
|
+
client.public_send("set_#{zone}_volume_db", value)
|
34
|
+
empty_response
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def client
|
41
|
+
settings.client || begin
|
42
|
+
@client ||= Yamaha::Client.new(settings.device, logger: settings.logger)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def render_json(data)
|
47
|
+
data.to_json
|
48
|
+
end
|
49
|
+
|
50
|
+
def empty_response
|
51
|
+
render_json({})
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/yamaha/utils.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
module Yamaha
|
2
|
+
module Utils
|
3
|
+
|
4
|
+
module_function def parse_on_off(value)
|
5
|
+
case value&.downcase
|
6
|
+
when '1', 'on', 'yes', 'true'
|
7
|
+
true
|
8
|
+
when '0', 'off', 'no', 'false'
|
9
|
+
false
|
10
|
+
else
|
11
|
+
raise ArgumentError, "Invalid on/off value: #{value}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/yamaha/version.rb
CHANGED
data/yamaha.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yamaha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oleg Pudeyev
|
@@ -15,16 +15,20 @@ email:
|
|
15
15
|
- code@olegp.name
|
16
16
|
executables:
|
17
17
|
- yamaha
|
18
|
+
- yamaha-web
|
18
19
|
extensions: []
|
19
20
|
extra_rdoc_files: []
|
20
21
|
files:
|
21
22
|
- LICENSE
|
22
23
|
- README.md
|
23
24
|
- bin/yamaha
|
25
|
+
- bin/yamaha-web
|
24
26
|
- lib/yamaha.rb
|
27
|
+
- lib/yamaha/app.rb
|
25
28
|
- lib/yamaha/backend/ffi.rb
|
26
29
|
- lib/yamaha/backend/serial_port.rb
|
27
30
|
- lib/yamaha/client.rb
|
31
|
+
- lib/yamaha/utils.rb
|
28
32
|
- lib/yamaha/version.rb
|
29
33
|
- yamaha.gemspec
|
30
34
|
homepage: https://github.com/p/yamaha-ruby
|