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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f14111abebd3540efa54a52c6f3ceef20b5217879c6df1aa57e1aa293fea037
4
- data.tar.gz: e8142bbe221620dc2d0e86a831fb58d5a21ef4c3099a08d05e674271ecefbe29
3
+ metadata.gz: '0188bdf2202b494dbd4c2891306a12669720b67a682e8a453b09ee83ea8a5429'
4
+ data.tar.gz: d4eac8f6cb79c9e9e2dffc435d6a01dd5b644b2ffcb10cfb05dc6d1dca20fadc
5
5
  SHA512:
6
- metadata.gz: 3bb84d02c1209763e280e294b5049c89b77e7518d11a131fc641acf0a030cc20dac6334db079064cb183a159a7d47b611b6638ac39f4056b4a902dd8dda6d79f
7
- data.tar.gz: d677cba18bbd2c20f2d89c7902a5f1f82669635038709d3e551ea07e2d6f2f435856a68932c36c1603e3ee49a1b1dd5d3d6bc2d7c18b723eead3c58ad3b6b13d
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yamaha
4
- VERSION = -'0.0.2'
4
+ VERSION = -'0.0.3'
5
5
  end
data/yamaha.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "yamaha"
5
- spec.version = '0.0.2'
5
+ spec.version = '0.0.3'
6
6
  spec.authors = ['Oleg Pudeyev']
7
7
  spec.email = ['code@olegp.name']
8
8
  spec.summary = %q{Yamaha Receiver Serial Control Interface}
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.2
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