humble_rpi-plugin-led 0.2.4 → 0.3.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: 504a177d097dedb367b77257648c3f81a1a927f7
4
- data.tar.gz: 3c97a67ec27cf379108d7b8bc6de9d174afc21c0
3
+ metadata.gz: 8f0db3a3d669a825cda9e65e2dce717fa81f5f28
4
+ data.tar.gz: 144a7ca9b84650124bf5e7c1657933cc4360b928
5
5
  SHA512:
6
- metadata.gz: 8740654e5ed3df3e8864cb1e2f1262121617cf833b04fcbea426f72bf2b0b4bdc537a79d7b06d715ad09c54d0d3be9cf132b235cb09d5c30988f330f48e56f8e
7
- data.tar.gz: 445c382bd7b84be389e847b7b70a7f366a97072f61bf5cc6bf349be278933cc901c3228d692568b1e491e8200a6466ea5b1f1d0fbeca6bef688a33b05ca8eac1
6
+ metadata.gz: 2c09a5861e1307e2a858d23382c3b8e79fe52bcd53797f0533004de958bf326e81d79fa43ea5e98be9ef388baba02d8a4389b6dcbeda22bb38297f3a9f4a331b
7
+ data.tar.gz: aeb3e751796ce623c0fe81e0e20fd146ccc7efecd20511ce8ef1fe110870c7c53e75ec36aa02d76d385d4c9144a3381bc04c08ee6d0fd60390ef6930cb5a67ad
checksums.yaml.gz.sig CHANGED
@@ -1 +1,3 @@
1
- ZbQ28��V���u�E���j��2�y��t�mV��ʽ���*����P���_1�tiG���}�R�-ܓ\�Xl�<8�m�Vhnff�O!�e�?�k���4������q�:{:<]M$P�2,�n�m>-�~�5ϑ�1OZ����[�%s;������on���.��$^�8�{��\��Z�~c��s�D�`��UB4Jo�b>ߞǞ6d.��&�Ypt��O�5�P�����j�)؀x����(Տ¹
1
+ <�����������n 0z���u�����9TFZ>��i��Z��!ӵ*!��5j~I%�< ��9�2>�
2
+ �t����8�ezb>YewD��z�ŽG(vE;�Uu�kя�{�;Rd�W�?u.�� �R+� �M�n����I�����>~E������8��^�T�]�Z��83��:�2N�TC3���e�o�1�.Q��6
3
+ O2f�� �������&�L��� ��&�Y�|���ũo?�h)���=
data.tar.gz.sig CHANGED
Binary file
@@ -2,15 +2,17 @@
2
2
 
3
3
  # file: humble_rpi-plugin-led.rb
4
4
 
5
- require 'rpi_led'
5
+ require 'rpi_rgb'
6
6
 
7
7
 
8
8
 
9
9
  class HumbleRPiPluginLed
10
+
10
11
 
11
12
  def initialize(settings: {}, variables: {})
12
13
 
13
- x = settings[:pins]
14
+ x = settings[:pins] || []
15
+ rgb = settings[:rgb]
14
16
 
15
17
  pins = case x
16
18
  when Fixnum
@@ -25,16 +27,54 @@ class HumbleRPiPluginLed
25
27
 
26
28
  @lookup = {}
27
29
  @gpio_pins = []
30
+ @led = []
28
31
 
29
32
  # each pin can contain an identifier e.g. pins = [{'4': 'record'}, 17]
30
33
  # an LED can be identified by the identifier instead of the numberic index
31
34
 
35
+ initialize_leds(pins) {|pin| RPiLed.new pin} if pins.any?
36
+
37
+ if rgb then
38
+
39
+
40
+ colours = %i(red green blue)
41
+
42
+ named_pins = rgb[:pins].zip(colours).map do |pin, colour|
43
+ {pin.to_s.to_sym => colour.to_s}
44
+ end
45
+
46
+
47
+ presets = {
48
+ purple: '#800080',
49
+ yellow: '#FFFF00',
50
+ orange: '#FFA500',
51
+ turquoise: '#40E0D0',
52
+ steelblue: '#4682B4'
53
+ }
54
+
55
+ rgb_led = RPiRGB.new(rgb[:pins], presets: presets)
56
+ index = @led.length
57
+ @lookup[:red] = @lookup[index.to_s.to_sym] = index
58
+ @lookup[:green] = @lookup[(index+1).to_s.to_sym]= index
59
+ @lookup[:blue] = @lookup[(index+2).to_s.to_sym]= index
60
+
61
+ presets.each {|preset| @lookup[preset] = index}
62
+
63
+
64
+ @led << rgb_led
65
+
66
+ end
67
+
68
+ end
69
+
70
+ def initialize_leds(pins)
71
+
32
72
  pins.each.with_index do |x, i|
33
73
 
34
- if x.is_a? String or x.is_a? Integer then
74
+ pin = if x.is_a? String or x.is_a? Integer then
35
75
 
36
- @lookup.merge!(x.to_s.to_sym => x.to_s )
37
- @gpio_pins << x.to_s
76
+ @lookup.merge!(i.to_s.to_sym => i )
77
+ x
38
78
 
39
79
  elsif x.is_a? Hash
40
80
 
@@ -43,11 +83,14 @@ class HumbleRPiPluginLed
43
83
  led_name = x[n.to_sym]
44
84
  @lookup.merge!(i.to_s.to_sym => i )
45
85
  @lookup.merge!(led_name.to_sym => i )
46
- @gpio_pins << n.to_i
86
+ n
87
+
47
88
  end
89
+
90
+ @gpio_pins << pin.to_i
91
+ @led << yield(pin.to_i) if block_given?
48
92
 
49
93
  end
50
-
51
94
  end
52
95
 
53
96
  def on_led_message(message)
@@ -55,8 +98,11 @@ class HumbleRPiPluginLed
55
98
  r = message.match(/(\w+)\s*(on|off|blink)\s*([\d\.]+)?(?:\s*duration\s)?([\d\.]+)?/)
56
99
 
57
100
  if r then
58
- index, state, seconds, raw_duration = r.captures
101
+
102
+ identifier, state, seconds, raw_duration = r.captures
59
103
  duration = raw_duration ? raw_duration.to_f : nil
104
+
105
+ seconds = seconds ? seconds.to_f : 0.5
60
106
 
61
107
  a = case state
62
108
 
@@ -67,19 +113,46 @@ class HumbleRPiPluginLed
67
113
  [:off]
68
114
 
69
115
  when 'blink'
70
- seconds = seconds ? seconds.to_f : 0.5
116
+
71
117
  [:blink, seconds, duration: duration]
72
118
  end
73
119
 
74
- @led[@lookup[index.to_sym].to_i].send(*a)
120
+
121
+ led = @led[@lookup[identifier.to_sym].to_i]
122
+
123
+ if led.is_a? RPiLed then
124
+
125
+ led.send(*a)
126
+
127
+ elsif led.is_a? RPiRGB
128
+
129
+ if state == 'on' then
130
+
131
+ a = ((@led.length-1)..@led.length+1).map{|x| x.to_s.to_sym}
132
+ h = a.zip(%w(red green blue)).to_h
133
+ #puts 'h: ' + h.inspect
134
+ colour = h[identifier.to_sym]
135
+
136
+
137
+ led.colour = colour || identifier
138
+ led.on duration
139
+
140
+ elsif state == 'off'
141
+
142
+ led.off
143
+
144
+ elsif state == 'blink'
145
+
146
+ led.blink seconds, duration: duration
147
+
148
+ end
149
+
150
+ end
75
151
  end
76
152
  end
77
153
 
78
154
  def start()
79
-
80
- if @gpio_pins.any? then
81
- @led = @gpio_pins.map{|x| RPiLed.new x}
82
- end
155
+
83
156
 
84
157
  end
85
158
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: humble_rpi-plugin-led
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -31,28 +31,28 @@ cert_chain:
31
31
  kuXWaEX0BC/yqishnYeDqOuqzvI1C4/7lvY+i4RJn3y13EP8RbXUlRa2A+PcKx0e
32
32
  pi5a3T8Qg0ZT5A==
33
33
  -----END CERTIFICATE-----
34
- date: 2017-07-26 00:00:00.000000000 Z
34
+ date: 2017-07-28 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
- name: rpi_led
37
+ name: rpi_rgb
38
38
  requirement: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '0.1'
42
+ version: '0.2'
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
- version: 0.1.3
45
+ version: 0.2.0
46
46
  type: :runtime
47
47
  prerelease: false
48
48
  version_requirements: !ruby/object:Gem::Requirement
49
49
  requirements:
50
50
  - - "~>"
51
51
  - !ruby/object:Gem::Version
52
- version: '0.1'
52
+ version: '0.2'
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: 0.1.3
55
+ version: 0.2.0
56
56
  description:
57
57
  email: james@jamesrobertson.eu
58
58
  executables: []
metadata.gz.sig CHANGED
Binary file