pi-lights-control 0.2.0 → 1.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 85d3641e75455c5cfeab30f37440f883d6cd9d08
4
- data.tar.gz: f782c16c5118db1487003f39539e5cc4217249f7
3
+ metadata.gz: 1b7a8a8550a1b6fbdca33a0f8ea7772caa417690
4
+ data.tar.gz: cabf059d2b62b01cfd1cd24876aef0a27f217c1f
5
5
  SHA512:
6
- metadata.gz: 1902a4eeebcb9eeb78f37c8e020751e2dc97f0ac88723bf82962829a4781288eebf9aebc553f7ec30db79068f1f55388f9bfba642119ae91672e1e6a9d0e8110
7
- data.tar.gz: 1d18644a4819eb70db4de901db65d488665e2e86ef98b8eed757bd79be08bc4b81deb1286f8364ddeb27ebfe63d037fe0220ce2aab2a96bdae72189a59c2895f
6
+ metadata.gz: 0842ac706aa95f7cfd1f3037d5563f7637cefc967e471ca70e8881c8967955b9b6123db17dafa05794c984767d13c2f7ef128bea19016d2b4ca7fbecc526388a
7
+ data.tar.gz: 3a52c2e9bb8bcef9169bf38afc6b9987876880a71bb634750536f4a659eab0192d3bdbc623bbc0f6d2de1faf53b958f3cba78354202869aa1c0437141a9ad00b
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.0.0 (2016 Nov 20)
4
+
5
+ * Finalize API
6
+ * Clean up Ruby formatting
7
+
3
8
  ## v0.2.0 (2016 Nov 19)
4
9
 
5
10
  * Add CLI tool for controlling lights
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Pi Lights Control
2
2
 
3
- This gem provides an executable and a library for sending radio frequency commands from a Raspberry Pi connected with a 433.920 MHz transmitter to one or more sets of Home Collection Remote Control Christmas Lights.
3
+ [![Gem Version](https://badge.fury.io/rb/pi-lights-control.svg)](https://badge.fury.io/rb/pi-lights-control)
4
+
5
+ This gem provides an executable and a library for sending radio frequency commands from a Raspberry Pi connected with a 433.920 MHz transmitter to one or more sets of Home Collection Remote Control Christmas Lights (Product #151-3478-6). I have only tested it with the C9 light set, it *might* work with the C6 light set too.
4
6
 
5
7
  The gem should be compatible with any Raspberry Pi that has GPIO pins. It has been tested with a 433.920 MHz FS1000A module (pictured below) for Arduino/Raspberry Pi compatible devices. It **will not** build on MacOS as epoll is only supported on Linux.
6
8
 
@@ -138,21 +140,6 @@ c.program(:step_fade) # Lights fade from off to on but at discrete brightness st
138
140
 
139
141
  (Secret: The default remote actually sends 16 different codes! However codes 9–16 trigger the same eight programs as codes 1–8.)
140
142
 
141
- ## Roadmap
142
-
143
- For v0.1.0:
144
-
145
- * Support power on/off for lights
146
- * Support all light programs and sync
147
-
148
- For v0.2.0:
149
-
150
- * Add executable
151
-
152
- For v0.3.0:
153
-
154
- * Any cleanup/refactoring before v1.0
155
-
156
143
  ## Development
157
144
 
158
145
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -1,125 +1,61 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "gli"
4
- require "pi-lights-control"
3
+ require 'gli'
4
+ require 'pi-lights-control'
5
5
 
6
6
  include GLI::App
7
7
 
8
- program_desc "Control Home Collection Lights over GPIO and RF Transmitter"
8
+ program_desc 'Control Home Collection Lights over GPIO and RF Transmitter'
9
9
 
10
- desc "GPIO pin number for RF Transmitter. Mandatory."
11
- flag [:p,:pin], type: Integer
10
+ desc 'GPIO pin number for RF Transmitter. Mandatory.'
11
+ flag [:p, :pin], type: Integer
12
12
 
13
- desc "Turn lights on"
14
- long_desc "Sends a \"power on\" command to the lights"
13
+ desc 'Turn lights on'
14
+ long_desc 'Sends a "power on" command to the lights'
15
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?
16
+ c.action do |global_options|
17
+ help_now!('No pin number specified') if global_options[:pin].nil?
18
18
  command = PiLightsControl::Command.new(global_options[:pin].to_i)
19
19
  command.power_on
20
20
  end
21
21
  end
22
22
 
23
- desc "Turn lights off"
24
- long_desc "Sends a \"power off\" command to the lights"
23
+ desc 'Turn lights off'
24
+ long_desc 'Sends a "power off" command to the lights'
25
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?
26
+ c.action do |global_options|
27
+ help_now!('No pin number specified') if global_options[:pin].nil?
28
28
  command = PiLightsControl::Command.new(global_options[:pin].to_i)
29
29
  command.power_off
30
30
  end
31
31
  end
32
32
 
33
- desc "Sync multiple light sets"
34
- long_desc "Sends a \"sync\" command to any lights in range"
33
+ desc 'Sync multiple light sets'
34
+ long_desc 'Sends a "sync" command to any lights in range'
35
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?
36
+ c.action do |global_options|
37
+ help_now!('No pin number specified') if global_options[:pin].nil?
38
38
  command = PiLightsControl::Command.new(global_options[:pin].to_i)
39
39
  command.sync_lights
40
40
  end
41
41
  end
42
42
 
43
- desc "Run a lights program"
44
- long_desc "Sends a command to run a specific lights program"
43
+ desc 'Run a lights program'
44
+ long_desc %(
45
+ Sends a command to run a specific lights program. One of 'combination',
46
+ 'steady', 'slow_blink', 'fast_blink', 'slow_fade', 'fast_fade',
47
+ 'blink_steady', or 'step_fade'.
48
+ )
45
49
  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)
50
+ c.action do |global_options, _options, args|
51
+ program_name = args[0]
52
+ case program_name
53
+ when 'combination', 'steady', 'slow_blink', 'fast_blink',
54
+ 'slow_fade', 'fast_fade', 'blink_steady', 'step_fade'
55
+ command = PiLightsControl::Command.new(global_options[:pin].to_i)
56
+ command.program(program_name.to_sym)
57
+ else
58
+ help_now!('Unknown program name')
123
59
  end
124
60
  end
125
61
  end
@@ -9,19 +9,19 @@ module PiLightsControl
9
9
  1 => [4, 8],
10
10
  2 => [4, 71],
11
11
  3 => [26, 12]
12
- }
12
+ }.freeze
13
13
  COMMAND_TABLE = {
14
- power_off: [3,0,1,0,1,1,0,0,1,1,1,0,1,0,0,0,1,2],
15
- power_on: [3,0,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,2],
16
- sync_lights: [3,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,2],
17
- program_combination: [3,0,1,0,1,1,0,0,1,1,1,1,0,0,0,0,0,2],
18
- program_steady: [3,0,1,0,1,1,0,0,1,1,1,1,0,0,0,0,1,2],
19
- program_slow_blink: [3,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,2],
20
- program_fast_blink: [3,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,1,2],
21
- program_slow_fade: [3,0,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,2],
22
- program_fast_fade: [3,0,1,0,1,1,0,0,1,1,1,1,0,0,1,0,1,2],
23
- program_blink_steady: [3,0,1,0,1,1,0,0,1,1,1,1,0,0,1,1,0,2],
24
- program_step_fade: [3,0,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,2]
25
- }
14
+ power_off: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 2],
15
+ power_on: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 2],
16
+ sync_lights: [3, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 2],
17
+ program_combination: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2],
18
+ program_steady: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 2],
19
+ program_slow_blink: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 2],
20
+ program_fast_blink: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 2],
21
+ program_slow_fade: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 2],
22
+ program_fast_fade: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 2],
23
+ program_blink_steady: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 2],
24
+ program_step_fade: [3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 2]
25
+ }.freeze
26
26
  TIME_DELAY = 120 # microseconds
27
27
  end
@@ -17,7 +17,7 @@ module PiLightsControl
17
17
  end
18
18
 
19
19
  def program(name)
20
- program_name = "program_#{name.to_s}"
20
+ program_name = "program_#{name}"
21
21
  transmit_command(PiLightsControl::COMMAND_TABLE[program_name.to_sym])
22
22
  end
23
23
 
@@ -35,10 +35,10 @@ module PiLightsControl
35
35
  low_length = PiLightsControl::CODE_TABLE[code][1]
36
36
 
37
37
  RPi::GPIO.set_high @pin
38
- sleep(high_length * PiLightsControl::TIME_DELAY / 1000000.0)
38
+ sleep(high_length * PiLightsControl::TIME_DELAY / 1E6)
39
39
 
40
40
  RPi::GPIO.set_low @pin
41
- sleep(low_length * PiLightsControl::TIME_DELAY / 1000000.0)
41
+ sleep(low_length * PiLightsControl::TIME_DELAY / 1E6)
42
42
  end
43
43
  end
44
44
  RPi::GPIO.clean_up @pin
@@ -1,3 +1,3 @@
1
1
  module PiLightsControl
2
- VERSION = "0.2.0"
2
+ VERSION = "1.0.0"
3
3
  end
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.2.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Badger