pi-lights-control 0.1.0 → 0.2.0

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
  SHA1:
3
- metadata.gz: fbfc3abb1ce7e062601c6c375716ba4397997a03
4
- data.tar.gz: 557cb974d3de60fe93a5611745846ef689042691
3
+ metadata.gz: 85d3641e75455c5cfeab30f37440f883d6cd9d08
4
+ data.tar.gz: f782c16c5118db1487003f39539e5cc4217249f7
5
5
  SHA512:
6
- metadata.gz: b73d59592fbc6676e6f666ef19589ba0defc04e2b01a328999d387bc13e63f429d6059b753188b1dd2ca4e8fe8f08ac12fcf8192b5ee7e49226d2606f024213e
7
- data.tar.gz: 3087fc9ee3c6626fb02bce9b546e741b0c67fd4a287d336d1aa8293576fd9a66cfc4866ca72e0dcf35b527ae82ca0a1c6999cb1d0c8664761c975cd2f991e2ad
6
+ metadata.gz: 1902a4eeebcb9eeb78f37c8e020751e2dc97f0ac88723bf82962829a4781288eebf9aebc553f7ec30db79068f1f55388f9bfba642119ae91672e1e6a9d0e8110
7
+ data.tar.gz: 1d18644a4819eb70db4de901db65d488665e2e86ef98b8eed757bd79be08bc4b81deb1286f8364ddeb27ebfe63d037fe0220ce2aab2a96bdae72189a59c2895f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.2.0 (2016 Nov 19)
4
+
5
+ * Add CLI tool for controlling lights
6
+ * Fix missing GPIO pin setup command
7
+ * Auto clean up GPIO pins after each signal command
8
+
3
9
  ## v0.1.0 (2016 Nov 19)
4
10
 
5
11
  * Support power on/off RF commands
data/README.md CHANGED
@@ -28,9 +28,64 @@ You can use this gem in two ways, as a Ruby library or as an executable.
28
28
 
29
29
  ### Executable Usage
30
30
 
31
- Using the executable from the command line allows you to quickly test the library.
31
+ Using the executable from the command line allows you to quickly test the library. After installing the gem, the `pi-lights-control` binary will be available in your gem bin path.
32
+
33
+ ```shell
34
+ $ pi-lights-control
35
+ NAME
36
+ pi-lights-control - Control Home Collection Lights over GPIO and RF Transmitter
37
+
38
+ SYNOPSIS
39
+ pi-lights-control [global options] command [command options] [arguments...]
40
+
41
+ GLOBAL OPTIONS
42
+ --help - Show this message
43
+ -p, --pin=arg - GPIO pin number for RF Transmitter. Mandatory. (default: none)
44
+
45
+ COMMANDS
46
+ help - Shows a list of commands or help for one command
47
+ off - Turn lights off
48
+ on - Turn lights on
49
+ program - Run a lights program
50
+ sync - Sync multiple light sets
51
+ ```
52
+
53
+ The `--pin` argument is mandatory as all the commands need to know which pin to control. The `off`, `on` commands should be self-explanatory.
54
+
55
+ The `sync` command will send a code that resets all lights to the same state.
56
+
57
+ The `program` command has multiple sub-commands:
58
+
59
+ ```shell
60
+ $ pi-lights-control help program
61
+ NAME
62
+ program - Run a lights program
63
+
64
+ SYNOPSIS
65
+ pi-lights-control [global options] program blink_steady
66
+ pi-lights-control [global options] program combination
67
+ pi-lights-control [global options] program fast_blink
68
+ pi-lights-control [global options] program fast_fade
69
+ pi-lights-control [global options] program slow_blink
70
+ pi-lights-control [global options] program slow_fade
71
+ pi-lights-control [global options] program steady
72
+ pi-lights-control [global options] program step_fade
73
+
74
+ DESCRIPTION
75
+ Sends a command to run a specific lights program
76
+
77
+ COMMANDS
78
+ blink_steady - Blink Steady
79
+ combination - Combination
80
+ fast_blink - Fast Blink
81
+ fast_fade - Fast Fade
82
+ slow_blink - Slow Blink
83
+ slow_fade - Slow Fade
84
+ steady - Steady
85
+ step_fade - Step Fade
86
+ ```
32
87
 
33
- TODO
88
+ Remember to send the `--pin` argument!
34
89
 
35
90
  ### Library API
36
91
 
@@ -81,6 +136,8 @@ c.program(:blink_steady) # Lights blink twice, then are steady for a second or t
81
136
  c.program(:step_fade) # Lights fade from off to on but at discrete brightness steps instead of a continuous increase/decrease
82
137
  ```
83
138
 
139
+ (Secret: The default remote actually sends 16 different codes! However codes 9–16 trigger the same eight programs as codes 1–8.)
140
+
84
141
  ## Roadmap
85
142
 
86
143
  For v0.1.0:
@@ -1,3 +1,127 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require "gli"
3
4
  require "pi-lights-control"
5
+
6
+ include GLI::App
7
+
8
+ program_desc "Control Home Collection Lights over GPIO and RF Transmitter"
9
+
10
+ desc "GPIO pin number for RF Transmitter. Mandatory."
11
+ flag [:p,:pin], type: Integer
12
+
13
+ desc "Turn lights on"
14
+ long_desc "Sends a \"power on\" command to the lights"
15
+ command :on do |c|
16
+ c.action do |global_options,options,args|
17
+ help_now!("No pin number specified") if global_options[:pin].nil?
18
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
19
+ command.power_on
20
+ end
21
+ end
22
+
23
+ desc "Turn lights off"
24
+ long_desc "Sends a \"power off\" command to the lights"
25
+ command :off do |c|
26
+ c.action do |global_options,options,args|
27
+ help_now!("No pin number specified") if global_options[:pin].nil?
28
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
29
+ command.power_off
30
+ end
31
+ end
32
+
33
+ desc "Sync multiple light sets"
34
+ long_desc "Sends a \"sync\" command to any lights in range"
35
+ command :sync do |c|
36
+ c.action do |global_options,options,args|
37
+ help_now!("No pin number specified") if global_options[:pin].nil?
38
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
39
+ command.sync_lights
40
+ end
41
+ end
42
+
43
+ desc "Run a lights program"
44
+ long_desc "Sends a command to run a specific lights program"
45
+ command :program do |c|
46
+ c.desc "Combination"
47
+ c.long_desc "Cycles through the other 7 programs"
48
+ c.command :combination do |p|
49
+ p.action do |global_options,options,args|
50
+ help_now!("No pin number specified") if global_options[:pin].nil?
51
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
52
+ command.program(:combination)
53
+ end
54
+ end
55
+
56
+ c.desc "Steady"
57
+ c.long_desc "Lights are continuously on"
58
+ c.command :steady do |p|
59
+ p.action do |global_options,options,args|
60
+ help_now!("No pin number specified") if global_options[:pin].nil?
61
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
62
+ command.program(:steady)
63
+ end
64
+ end
65
+
66
+ c.desc "Slow Blink"
67
+ c.long_desc "Lights are on 1/2 second, then off 1/2 second"
68
+ c.command :slow_blink do |p|
69
+ p.action do |global_options,options,args|
70
+ help_now!("No pin number specified") if global_options[:pin].nil?
71
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
72
+ command.program(:slow_blink)
73
+ end
74
+ end
75
+
76
+ c.desc "Fast Blink"
77
+ c.long_desc "Lights blink on/off much faster"
78
+ c.command :fast_blink do |p|
79
+ p.action do |global_options,options,args|
80
+ help_now!("No pin number specified") if global_options[:pin].nil?
81
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
82
+ command.program(:fast_blink)
83
+ end
84
+ end
85
+
86
+ c.desc "Slow Fade"
87
+ c.long_desc "Lights fade from off to on at a slow rate"
88
+ c.command :slow_fade do |p|
89
+ p.action do |global_options,options,args|
90
+ help_now!("No pin number specified") if global_options[:pin].nil?
91
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
92
+ command.program(:slow_fade)
93
+ end
94
+ end
95
+
96
+ c.desc "Fast Fade"
97
+ c.long_desc "Lights fade from off to on at a fast rate"
98
+ c.command :fast_fade do |p|
99
+ p.action do |global_options,options,args|
100
+ help_now!("No pin number specified") if global_options[:pin].nil?
101
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
102
+ command.program(:fast_fade)
103
+ end
104
+ end
105
+
106
+ c.desc "Blink Steady"
107
+ c.long_desc "Lights blink twice, then are steady for a second or two"
108
+ c.command :blink_steady do |p|
109
+ p.action do |global_options,options,args|
110
+ help_now!("No pin number specified") if global_options[:pin].nil?
111
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
112
+ command.program(:blink_steady)
113
+ end
114
+ end
115
+
116
+ c.desc "Step Fade"
117
+ c.long_desc "Lights fade from off to on but at discrete brightness steps instead of a continuous increase/decrease"
118
+ c.command :step_fade do |p|
119
+ p.action do |global_options,options,args|
120
+ help_now!("No pin number specified") if global_options[:pin].nil?
121
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
122
+ command.program(:step_fade)
123
+ end
124
+ end
125
+ end
126
+
127
+ exit run(ARGV)
@@ -3,7 +3,7 @@ module PiLightsControl
3
3
  attr_accessor :repeat_count
4
4
 
5
5
  def initialize(pin, options = {})
6
- RPi::GPIO.set_numbering options[:numbering] || :board
6
+ RPi::GPIO.set_numbering(options[:numbering] || :board)
7
7
  @repeat_count = 6
8
8
  @pin = pin
9
9
  end
@@ -28,6 +28,7 @@ module PiLightsControl
28
28
  private
29
29
 
30
30
  def transmit_command(command)
31
+ RPi::GPIO.setup @pin, as: :output
31
32
  @repeat_count.times do
32
33
  command.each do |code|
33
34
  high_length = PiLightsControl::CODE_TABLE[code][0]
@@ -40,6 +41,7 @@ module PiLightsControl
40
41
  sleep(low_length * PiLightsControl::TIME_DELAY / 1000000.0)
41
42
  end
42
43
  end
44
+ RPi::GPIO.clean_up @pin
43
45
  end
44
46
  end
45
47
  end
@@ -1,3 +1,3 @@
1
1
  module PiLightsControl
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
+ spec.add_dependency "gli", "~> 2.14.0"
24
25
  spec.add_dependency "rpi_gpio", "~> 0.3.2"
25
26
 
26
27
  spec.add_development_dependency "bundler", "~> 1.13"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pi-lights-control
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Badger
@@ -10,6 +10,20 @@ bindir: exe
10
10
  cert_chain: []
11
11
  date: 2016-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: gli
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.14.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.14.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rpi_gpio
15
29
  requirement: !ruby/object:Gem::Requirement