lifx_api 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +10 -0
- data/CHANGELOG +9 -0
- data/README.md +88 -24
- data/lib/lifx_api.rb +5 -0
- data/lib/lifx_api/endpoints.rb +93 -26
- data/lib/lifx_api/version.rb +1 -1
- data/lifx_api.gemspec +1 -2
- metadata +15 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0dcc8bfc7bb623baf95b44cdd9e822aeefcf1e2fae6f6204d1e5e6875030b9a3
|
4
|
+
data.tar.gz: 8e326e904ed90c4ef575f3a722a426cd3569f9371f09d505c00a0e46bdc8728e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6b3657d033c9e8845fd088d985406037eb78b96881317a1f2d9d7e356d91039a5ebbb2b0389762fb7f9d5932b3acd229116952c52e5b28b30b60fa4689c9b0d
|
7
|
+
data.tar.gz: b46765d79a097ad2162abe4ccdfbd2a15ce71d34e8df3130c957e03a5c360c7eb2705a8c1c2c742dccc407faad24719099e5c10ac7c0eb6c6e8be7bb4add3480
|
data/.travis.yml
ADDED
data/CHANGELOG
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
=== 0.2.0
|
2
|
+
|
3
|
+
* Add `fast` parameter to `LifxApi#set_state` and `LifxApi#set_states`
|
4
|
+
* Add `LifxApi#state_delta`, and deprecate `LifxApi#stage_delta`
|
5
|
+
* Add `LifxApi#move_effect`
|
6
|
+
* Add `LifxApi#morph_effect`
|
7
|
+
* Add `LifxApi#flame_effect`
|
8
|
+
* Add `LifxApi#effects_off`
|
9
|
+
|
1
10
|
=== 0.1.3
|
2
11
|
|
3
12
|
* Fix documentation and specification of `cycle` endpoint
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# LifxApi
|
1
|
+
# LifxApi [![Build Status](https://travis-ci.org/cyclotron3k/lifx_api.svg?branch=master)](https://travis-ci.org/cyclotron3k/lifx_api)
|
2
2
|
|
3
3
|
A Ruby client for the LIFX API.
|
4
4
|
|
@@ -57,11 +57,12 @@ Key | Type | Mandatory | Default | Description
|
|
57
57
|
Key | Type | Mandatory | Default | Description
|
58
58
|
--- | --- | --- | --- | ---
|
59
59
|
`:selector` | selector | | all | See [selector](https://api.developer.lifx.com/docs/selectors) documentation on the LIFX website
|
60
|
-
`:power` | string | | | The power state you want to set on the selector. on or off
|
61
|
-
`:color` |
|
60
|
+
`:power` | string | | | The power state you want to set on the selector. Must be `on` or `off`.
|
61
|
+
`:color` | color | | | The color to set the light to.
|
62
62
|
`:brightness` | numeric | | | The brightness level from 0.0 to 1.0. Overrides any brightness set in color (if any).
|
63
63
|
`:duration` | numeric | | 1.0 | How long in seconds you want the power action to take. Range: 0.0 - 3155760000.0 (100 years)
|
64
|
-
`:infrared` | numeric | | | The maximum brightness of the infrared channel.
|
64
|
+
`:infrared` | numeric | | | The maximum brightness of the infrared channel from `0.0` to `1.0`.
|
65
|
+
`:fast` | boolean | | false | Execute the query fast, without initial state checks and wait for no results.
|
65
66
|
|
66
67
|
### set_states
|
67
68
|
|
@@ -69,23 +70,40 @@ Key | Type | Mandatory | Default | Description
|
|
69
70
|
|
70
71
|
Key | Type | Mandatory | Default | Description
|
71
72
|
--- | --- | --- | --- | ---
|
72
|
-
`:states` |
|
73
|
+
`:states` | array of hashes | ✔ | | Array of state hashes as per `#set_state`. No more than 50 entries.
|
73
74
|
`:defaults` | hash | | | Default values to use when not specified in each `states[]` hash.
|
75
|
+
`:fast` | boolean | | false | Execute the query fast, without initial state checks and wait for no results.
|
76
|
+
|
77
|
+
### state_delta
|
78
|
+
|
79
|
+
#### Parameters
|
80
|
+
|
81
|
+
Key | Type | Mandatory | Default | Description
|
82
|
+
--- | --- | --- | --- | ---
|
83
|
+
`:selector` | selector | | all | See [selector](https://api.developer.lifx.com/docs/selectors) documentation on the LIFX website
|
84
|
+
`:power` | string | | | The power state you want to set on the selector. Must be `on` or `off`.
|
85
|
+
`:duration` | numeric | | 1.0 | How long in seconds you want the power action to take. Range: `0.0` - `3155760000.0` (100 years)
|
86
|
+
`:infrared` | numeric | | | The maximum brightness of the infrared channel.
|
87
|
+
`:hue` | numeric | | | Rotate the hue by this angle in degrees. Range: `-360.0` - `360.0` degrees.
|
88
|
+
`:saturation` | numeric | | | Change the saturation by this additive amount; the resulting saturation is clipped to `[0, 1]`.
|
89
|
+
`:brightness` | numeric | | | Change the brightness by this additive amount; the resulting brightness is clipped to `[0, 1]`.
|
90
|
+
`:kelvin` | numeric | | | Change the kelvin by this additive amount; the resulting kelvin is clipped to `[2500, 9000]`.
|
74
91
|
|
75
92
|
### stage_delta
|
93
|
+
[DEPRECATED] `#stage_delta` is deprecated, please use `#state_delta` instead
|
76
94
|
|
77
95
|
#### Parameters
|
78
96
|
|
79
97
|
Key | Type | Mandatory | Default | Description
|
80
98
|
--- | --- | --- | --- | ---
|
81
99
|
`:selector` | selector | | all | See [selector](https://api.developer.lifx.com/docs/selectors) documentation on the LIFX website
|
82
|
-
`:power` | string | | | The power state you want to set on the selector. Must be
|
83
|
-
`:duration` | numeric | | 1.0 | How long in seconds you want the power action to take. Range: 0.0 - 3155760000.0 (100 years)
|
100
|
+
`:power` | string | | | The power state you want to set on the selector. Must be `on` or `off`.
|
101
|
+
`:duration` | numeric | | 1.0 | How long in seconds you want the power action to take. Range: `0.0` - `3155760000.0` (100 years)
|
84
102
|
`:infrared` | numeric | | | The maximum brightness of the infrared channel.
|
85
|
-
`:hue` | numeric | | | Rotate the hue by this angle in degrees.
|
86
|
-
`:saturation` | numeric | | | Change the saturation by this additive amount; the resulting saturation is clipped to [0, 1]
|
87
|
-
`:brightness` | numeric | | | Change the brightness by this additive amount; the resulting brightness is clipped to [0, 1]
|
88
|
-
`:kelvin` | numeric | | | Change the kelvin by this additive amount; the resulting kelvin is clipped to [2500, 9000]
|
103
|
+
`:hue` | numeric | | | Rotate the hue by this angle in degrees. Range: `-360.0` - `360.0` degrees.
|
104
|
+
`:saturation` | numeric | | | Change the saturation by this additive amount; the resulting saturation is clipped to `[0, 1]`.
|
105
|
+
`:brightness` | numeric | | | Change the brightness by this additive amount; the resulting brightness is clipped to `[0, 1]`.
|
106
|
+
`:kelvin` | numeric | | | Change the kelvin by this additive amount; the resulting kelvin is clipped to `[2500, 9000]`.
|
89
107
|
|
90
108
|
### toggle_power
|
91
109
|
|
@@ -103,13 +121,48 @@ Key | Type | Mandatory | Default | Description
|
|
103
121
|
Key | Type | Mandatory | Default | Description
|
104
122
|
--- | --- | --- | --- | ---
|
105
123
|
`:selector` | selector | | all | See [selector](https://api.developer.lifx.com/docs/selectors) documentation on the LIFX website
|
106
|
-
`:color` |
|
124
|
+
`:color` | color | ✔ | | The color to use for the breathe effect.
|
107
125
|
`:from_color` | string | | current bulb color | The color to start the effect from. If this parameter is omitted then the color the bulb is currently set to is used instead.
|
108
126
|
`:period` | numeric | | 1.0 | The time in seconds for one cyles of the effect.
|
109
127
|
`:cycles` | numeric | | 1.0 | The number of times to repeat the effect.
|
110
|
-
`:persist` | boolean | | false | If false set the light back to its previous value when effect ends, if true leave the last effect color.
|
111
|
-
`:power_on` | boolean | | true | If true
|
112
|
-
`:peak` | numeric | | 0.5 | Defines where in a period the target color is at its maximum. Minimum 0.0
|
128
|
+
`:persist` | boolean | | false | If `false` set the light back to its previous value when effect ends, if true leave the last effect color.
|
129
|
+
`:power_on` | boolean | | true | If `true`, turn the bulb on if it is not already on.
|
130
|
+
`:peak` | numeric | | 0.5 | Defines where in a period the target color is at its maximum. Minimum `0.0`, maximum `1.0`.
|
131
|
+
|
132
|
+
### move_effect
|
133
|
+
|
134
|
+
#### Parameters
|
135
|
+
|
136
|
+
Key | Type | Mandatory | Default | Description
|
137
|
+
--- | --- | --- | --- | ---
|
138
|
+
`:selector` | selector | | all | See [selector](https://api.developer.lifx.com/docs/selectors) documentation on the LIFX website
|
139
|
+
`:direction` | string | | forward | Move direction, can be `forward` or `backward`.
|
140
|
+
`:period` | numeric | | 1.0 | The time in seconds for one cyles of the effect.
|
141
|
+
`:cycles` | numeric | | infinite | The number of times to move the pattern across the device. Special cases are `0` to switch the effect off, and unspecified to continue indefinitely.
|
142
|
+
`:power_on` | boolean | | true | Switch any selected device that is off to on before performing the effect.
|
143
|
+
|
144
|
+
### morph_effect
|
145
|
+
|
146
|
+
#### Parameters
|
147
|
+
|
148
|
+
Key | Type | Mandatory | Default | Description
|
149
|
+
--- | --- | --- | --- | ---
|
150
|
+
`:selector` | selector | | all | See [selector](https://api.developer.lifx.com/docs/selectors) documentation on the LIFX website
|
151
|
+
`:period` | numeric | | 5.0 | This controls how quickly the morph runs. It is measured in seconds. A lower number means the animation is faster.
|
152
|
+
`:duration` | numeric | | infinite | How long the animation lasts for in seconds. Not specifying a duration makes the animation never stop. Specifying `0` makes the animation stop. Note that there is a known bug where the tile remains in the animation once it has completed if duration is nonzero.
|
153
|
+
`:palette` | array of colors | | 7 colours across the spectrum | You can control the colors in the animation by specifying a list of color specifiers. For example `["red", "hue:100 saturation:1"]`.
|
154
|
+
`:power_on` | boolean | | true | Switch any selected device that is off to on before performing the effect.
|
155
|
+
|
156
|
+
### flame_effect
|
157
|
+
|
158
|
+
#### Parameters
|
159
|
+
|
160
|
+
Key | Type | Mandatory | Default | Description
|
161
|
+
--- | --- | --- | --- | ---
|
162
|
+
`:selector` | selector | | all | See [selector](https://api.developer.lifx.com/docs/selectors) documentation on the LIFX website
|
163
|
+
`:period` | numeric | | 5.0 | This controls how quickly the flame runs. It is measured in seconds. A lower number means the animation is faster.
|
164
|
+
`:duration` | numeric | | infinite | How long the animation lasts for in seconds. Not specifying a duration makes the animation never stop. Specifying `0` makes the animation stop. Note that there is a known bug where the tile remains in the animation once it has completed if duration is nonzero.
|
165
|
+
`:power_on` | boolean | | true | Switch any selected device that is off to on before performing the effect.
|
113
166
|
|
114
167
|
### pulse_effect
|
115
168
|
|
@@ -122,8 +175,17 @@ Key | Type | Mandatory | Default | Description
|
|
122
175
|
`:from_color` | string | | current bulb color | The color to start the effect from. If this parameter is omitted then the color the bulb is currently set to is used instead.
|
123
176
|
`:period` | numeric | | 1.0 | The time in seconds for one cyles of the effect.
|
124
177
|
`:cycles` | numeric | | 1.0 | The number of times to repeat the effect.
|
125
|
-
`:persist` | boolean | | false | If false set the light back to its previous value when effect ends, if true leave the last effect color.
|
126
|
-
`:power_on` | boolean | | true | If true
|
178
|
+
`:persist` | boolean | | false | If `false` set the light back to its previous value when effect ends, if true leave the last effect color.
|
179
|
+
`:power_on` | boolean | | true | If `true`, turn the bulb on if it is not already on.
|
180
|
+
|
181
|
+
### effects_off
|
182
|
+
|
183
|
+
#### Parameters
|
184
|
+
|
185
|
+
Key | Type | Mandatory | Default | Description
|
186
|
+
--- | --- | --- | --- | ---
|
187
|
+
`:selector` | selector | | all | See [selector](https://api.developer.lifx.com/docs/selectors) documentation on the LIFX website
|
188
|
+
`:power_off` | boolean | | false | If `true`, the devices will also be turned off.
|
127
189
|
|
128
190
|
### cycle
|
129
191
|
|
@@ -132,9 +194,9 @@ Key | Type | Mandatory | Default | Description
|
|
132
194
|
Key | Type | Mandatory | Default | Description
|
133
195
|
--- | --- | --- | --- | ---
|
134
196
|
`:selector` | selector | | all | See [selector](https://api.developer.lifx.com/docs/selectors) documentation on the LIFX website
|
135
|
-
`:states` | array of
|
136
|
-
`:defaults` | hash | | | Default values to use when not specified in each states[] object.
|
137
|
-
`:direction` |
|
197
|
+
`:states` | array of hashes | ✔ | | Array of state hashes as per `#set_state`. Must have 2 to 5 entries.
|
198
|
+
`:defaults` | hash | | | Default values to use when not specified in each `states[]` object.
|
199
|
+
`:direction` | direction | | forward | Direction in which to cycle through the list. Can be `forward` or `backward`.
|
138
200
|
|
139
201
|
### list_scenes
|
140
202
|
|
@@ -148,8 +210,8 @@ Key | Type | Mandatory | Default | Description
|
|
148
210
|
--- | --- | --- | --- | ---
|
149
211
|
`:scene_uuid` | uuid | ✔ | | The UUID for the scene you wish to activate
|
150
212
|
`:duration` | numeric | | 1.0 | The time in seconds to spend performing the scene transition.
|
151
|
-
`:ignore` | array of strings | | | Any of
|
152
|
-
`:overrides` | hash | | | A state
|
213
|
+
`:ignore` | array of strings | | | Any of `power`, `infrared`, `duration`, `intensity`, `hue`, `saturation`, `brightness` or `kelvin`, specifying that these properties should not be changed on devices when applying the scene.
|
214
|
+
`:overrides` | hash | | | A state hash as per `#set_state` specifying properties to apply to all devices in the scene, overriding those configured in the scene.
|
153
215
|
|
154
216
|
### validate_color
|
155
217
|
|
@@ -157,7 +219,8 @@ Key | Type | Mandatory | Default | Description
|
|
157
219
|
|
158
220
|
Key | Type | Mandatory | Default | Description
|
159
221
|
--- | --- | --- | --- | ---
|
160
|
-
`:color` |
|
222
|
+
`:color` | color | ✔ | | Color string you'd like to validate
|
223
|
+
|
161
224
|
|
162
225
|
## Deviation from the API spec
|
163
226
|
|
@@ -174,7 +237,7 @@ client.list_bulbs selector: 'all'
|
|
174
237
|
|
175
238
|
## Exceptions
|
176
239
|
|
177
|
-
If there is an error, LifxApi will raise an exception. The exception message will usually give a good indication of what went wrong, but you can also rescue the exception and access the request, response and decoded JSON objects, via the `request`, `response` and `data` methods.
|
240
|
+
If there is an error, `LifxApi` will raise an exception. The exception message will usually give a good indication of what went wrong, but you can also rescue the exception and access the request, response and decoded JSON objects, via the `request`, `response` and `data` methods.
|
178
241
|
|
179
242
|
## Development
|
180
243
|
|
@@ -183,6 +246,7 @@ Run `rake test` to run the tests and `rake console` to start an interactive pry
|
|
183
246
|
## TODO
|
184
247
|
|
185
248
|
* Validation of `:state` and `:array_of_states` is poor
|
249
|
+
* Validation of `:color` and `:array_of_colors` is poor
|
186
250
|
* Validation of endpoints is non-existent
|
187
251
|
|
188
252
|
## Contributing
|
data/lib/lifx_api.rb
CHANGED
@@ -24,6 +24,9 @@ class LifxApi
|
|
24
24
|
|
25
25
|
ENDPOINTS.each do |endpoint_spec|
|
26
26
|
define_method endpoint_spec[:method_name], Proc.new { |params={}|
|
27
|
+
if endpoint_spec[:deprecation_message]
|
28
|
+
warn "[DEPRECATED] #{endpoint_spec[:deprecation_message]}"
|
29
|
+
end
|
27
30
|
parsed_params = parse_params endpoint_spec, params
|
28
31
|
request = create_request endpoint_spec, parsed_params
|
29
32
|
process_request request
|
@@ -70,6 +73,8 @@ class LifxApi
|
|
70
73
|
value.is_a?(String) and ['forward', 'backward'].include? value
|
71
74
|
when :array_of_states
|
72
75
|
value.is_a?(Array) and value.count <= 50 and value.all? { |state| valid? state, :state }
|
76
|
+
when :array_of_colors
|
77
|
+
value.is_a?(Array) and value.all? { |state| valid? state, :color }
|
73
78
|
when :state
|
74
79
|
value.is_a?(Hash) and (value.keys - [:selector, :power, :color, :brightness, :duration, :infrared]).empty? and value.all? { |k, v| valid? v, k }
|
75
80
|
else
|
data/lib/lifx_api/endpoints.rb
CHANGED
@@ -14,36 +14,55 @@ class LifxApi
|
|
14
14
|
selector: {required: true, type: :selector, default: 'all'},
|
15
15
|
},
|
16
16
|
body_params: {
|
17
|
-
power: {type: :string, description: 'The power state you want to set on the selector. on or off'},
|
18
|
-
color: {type: :
|
17
|
+
power: {type: :string, description: 'The power state you want to set on the selector. Must be `on` or `off`.'},
|
18
|
+
color: {type: :color, description: 'The color to set the light to.'},
|
19
19
|
brightness: {type: :numeric, description: 'The brightness level from 0.0 to 1.0. Overrides any brightness set in color (if any).'},
|
20
20
|
duration: {type: :numeric, default_description: '1.0', description: 'How long in seconds you want the power action to take. Range: 0.0 - 3155760000.0 (100 years)'},
|
21
|
-
infrared: {type: :numeric, description: 'The maximum brightness of the infrared channel.'},
|
21
|
+
infrared: {type: :numeric, description: 'The maximum brightness of the infrared channel from `0.0` to `1.0`.'},
|
22
|
+
fast: {type: :boolean, default_description: 'false', description: 'Execute the query fast, without initial state checks and wait for no results.'},
|
22
23
|
},
|
23
24
|
}, {
|
24
25
|
method_name: :set_states,
|
25
26
|
http_method: :put,
|
26
27
|
path: '/v1/lights/states',
|
27
28
|
body_params: {
|
28
|
-
states: {required: true, type: :array_of_states},
|
29
|
-
defaults: {type: :hash},
|
29
|
+
states: {required: true, type: :array_of_states, description: 'Array of state hashes as per `#set_state`. No more than 50 entries.'},
|
30
|
+
defaults: {type: :hash, description: 'Default values to use when not specified in each `states[]` hash.'},
|
31
|
+
fast: {type: :boolean, default_description: 'false', description: 'Execute the query fast, without initial state checks and wait for no results.'},
|
30
32
|
},
|
31
33
|
}, {
|
32
|
-
method_name: :
|
34
|
+
method_name: :state_delta,
|
33
35
|
http_method: :post,
|
34
36
|
path: '/v1/lights/%{selector}/state/delta',
|
35
37
|
path_params: {
|
36
38
|
selector: {required: true, type: :selector, default: 'all'}
|
37
39
|
},
|
38
40
|
body_params: {
|
39
|
-
power: {type: :on_off, description: 'The power state you want to set on the selector. on or off'},
|
40
|
-
duration: {type: :numeric, default_description: '1.0', description: 'How long in seconds you want the power action to take. Range: 0.0 - 3155760000.0 (100 years)'},
|
41
|
+
power: {type: :on_off, description: 'The power state you want to set on the selector. Must be `on` or `off`.'},
|
42
|
+
duration: {type: :numeric, default_description: '1.0', description: 'How long in seconds you want the power action to take. Range: `0.0` - `3155760000.0` (100 years)'},
|
41
43
|
infrared: {type: :numeric, description: 'The maximum brightness of the infrared channel.'},
|
42
|
-
hue: {type: :numeric, description: 'Rotate the hue by this angle in degrees.'},
|
43
|
-
saturation: {type: :numeric, description: 'Change the saturation by this additive amount; the resulting saturation is clipped to [0, 1]
|
44
|
-
brightness: {type: :numeric, description: 'Change the brightness by this additive amount; the resulting brightness is clipped to [0, 1]
|
45
|
-
kelvin: {type: :numeric, description: 'Change the kelvin by this additive amount; the resulting kelvin is clipped to [2500, 9000]
|
44
|
+
hue: {type: :numeric, description: 'Rotate the hue by this angle in degrees. Range: `-360.0` - `360.0` degrees.'},
|
45
|
+
saturation: {type: :numeric, description: 'Change the saturation by this additive amount; the resulting saturation is clipped to `[0, 1]`.'},
|
46
|
+
brightness: {type: :numeric, description: 'Change the brightness by this additive amount; the resulting brightness is clipped to `[0, 1]`.'},
|
47
|
+
kelvin: {type: :numeric, description: 'Change the kelvin by this additive amount; the resulting kelvin is clipped to `[2500, 9000]`.'},
|
48
|
+
}
|
49
|
+
}, {
|
50
|
+
method_name: :stage_delta,
|
51
|
+
deprecation_message: '`#stage_delta` is deprecated, please use `#state_delta` instead',
|
52
|
+
http_method: :post,
|
53
|
+
path: '/v1/lights/%{selector}/state/delta',
|
54
|
+
path_params: {
|
55
|
+
selector: {required: true, type: :selector, default: 'all'}
|
46
56
|
},
|
57
|
+
body_params: {
|
58
|
+
power: {type: :on_off, description: 'The power state you want to set on the selector. Must be `on` or `off`.'},
|
59
|
+
duration: {type: :numeric, default_description: '1.0', description: 'How long in seconds you want the power action to take. Range: `0.0` - `3155760000.0` (100 years)'},
|
60
|
+
infrared: {type: :numeric, description: 'The maximum brightness of the infrared channel.'},
|
61
|
+
hue: {type: :numeric, description: 'Rotate the hue by this angle in degrees. Range: `-360.0` - `360.0` degrees.'},
|
62
|
+
saturation: {type: :numeric, description: 'Change the saturation by this additive amount; the resulting saturation is clipped to `[0, 1]`.'},
|
63
|
+
brightness: {type: :numeric, description: 'Change the brightness by this additive amount; the resulting brightness is clipped to `[0, 1]`.'},
|
64
|
+
kelvin: {type: :numeric, description: 'Change the kelvin by this additive amount; the resulting kelvin is clipped to `[2500, 9000]`.'},
|
65
|
+
}
|
47
66
|
}, {
|
48
67
|
method_name: :toggle_power,
|
49
68
|
http_method: :post,
|
@@ -52,7 +71,7 @@ class LifxApi
|
|
52
71
|
selector: {required: true, type: :selector, default: 'all'},
|
53
72
|
},
|
54
73
|
body_params: {
|
55
|
-
duration:
|
74
|
+
duration: {type: :numeric, default_description: '1.0', description: 'The time is seconds to spend perfoming the power toggle.'},
|
56
75
|
},
|
57
76
|
}, {
|
58
77
|
method_name: :breathe_effect,
|
@@ -62,13 +81,51 @@ class LifxApi
|
|
62
81
|
selector: {required: true, type: :selector, default: 'all'},
|
63
82
|
},
|
64
83
|
body_params: {
|
65
|
-
color: {required: :true, type: :
|
84
|
+
color: {required: :true, type: :color, description: 'The color to use for the breathe effect.'},
|
66
85
|
from_color: {type: :string, default_description: 'current bulb color', description: 'The color to start the effect from. If this parameter is omitted then the color the bulb is currently set to is used instead.'},
|
67
86
|
period: {type: :numeric, default_description: '1.0', description: 'The time in seconds for one cyles of the effect.'},
|
68
87
|
cycles: {type: :numeric, default_description: '1.0', description: 'The number of times to repeat the effect.'},
|
69
|
-
persist: {type: :boolean, default_description: 'false', description: 'If false set the light back to its previous value when effect ends, if true leave the last effect color.'},
|
70
|
-
power_on: {type: :boolean, default_description: 'true', description: 'If true
|
71
|
-
peak: {type: :numeric, default_description: '0.5', description: 'Defines where in a period the target color is at its maximum. Minimum 0.0
|
88
|
+
persist: {type: :boolean, default_description: 'false', description: 'If `false` set the light back to its previous value when effect ends, if true leave the last effect color.'},
|
89
|
+
power_on: {type: :boolean, default_description: 'true', description: 'If `true`, turn the bulb on if it is not already on.'},
|
90
|
+
peak: {type: :numeric, default_description: '0.5', description: 'Defines where in a period the target color is at its maximum. Minimum `0.0`, maximum `1.0`.'},
|
91
|
+
}
|
92
|
+
}, {
|
93
|
+
method_name: :move_effect,
|
94
|
+
http_method: :post,
|
95
|
+
path: '/v1/lights/%{selector}/effects/move',
|
96
|
+
path_params: {
|
97
|
+
selector: {required: true, type: :selector, default: 'all'},
|
98
|
+
},
|
99
|
+
body_params: {
|
100
|
+
direction: {type: :string, default_description: 'forward', description: 'Move direction, can be `forward` or `backward`.'},
|
101
|
+
period: {type: :numeric, default_description: '1.0', description: 'The time in seconds for one cyles of the effect.'},
|
102
|
+
cycles: {type: :numeric, default_description: 'infinite', description: 'The number of times to move the pattern across the device. Special cases are `0` to switch the effect off, and unspecified to continue indefinitely.'},
|
103
|
+
power_on: {type: :boolean, default_description: 'true', description: 'Switch any selected device that is off to on before performing the effect.'},
|
104
|
+
}
|
105
|
+
}, {
|
106
|
+
method_name: :morph_effect,
|
107
|
+
http_method: :post,
|
108
|
+
path: '/v1/lights/%{selector}/effects/morph',
|
109
|
+
path_params: {
|
110
|
+
selector: {required: true, type: :selector, default: 'all'},
|
111
|
+
},
|
112
|
+
body_params: {
|
113
|
+
period: {type: :numeric, default_description: '5.0', description: 'This controls how quickly the morph runs. It is measured in seconds. A lower number means the animation is faster.'},
|
114
|
+
duration: {type: :numeric, default_description: 'infinite', description: 'How long the animation lasts for in seconds. Not specifying a duration makes the animation never stop. Specifying `0` makes the animation stop. Note that there is a known bug where the tile remains in the animation once it has completed if duration is nonzero.'},
|
115
|
+
palette: {type: :array_of_colors, default_description: '7 colours across the spectrum', description: 'You can control the colors in the animation by specifying a list of color specifiers. For example `["red", "hue:100 saturation:1"]`.'},
|
116
|
+
power_on: {type: :boolean, default_description: 'true', description: 'Switch any selected device that is off to on before performing the effect.'},
|
117
|
+
}
|
118
|
+
}, {
|
119
|
+
method_name: :flame_effect,
|
120
|
+
http_method: :post,
|
121
|
+
path: '/v1/lights/%{selector}/effects/flame',
|
122
|
+
path_params: {
|
123
|
+
selector: {required: true, type: :selector, default: 'all'},
|
124
|
+
},
|
125
|
+
body_params: {
|
126
|
+
period: {type: :numeric, default_description: '5.0', description: 'This controls how quickly the flame runs. It is measured in seconds. A lower number means the animation is faster.'},
|
127
|
+
duration: {type: :numeric, default_description: 'infinite', description: 'How long the animation lasts for in seconds. Not specifying a duration makes the animation never stop. Specifying `0` makes the animation stop. Note that there is a known bug where the tile remains in the animation once it has completed if duration is nonzero.'},
|
128
|
+
power_on: {type: :boolean, default_description: 'true', description: 'Switch any selected device that is off to on before performing the effect.'},
|
72
129
|
}
|
73
130
|
}, {
|
74
131
|
method_name: :pulse_effect,
|
@@ -82,8 +139,18 @@ class LifxApi
|
|
82
139
|
from_color: {type: :string, default_description: 'current bulb color', description: 'The color to start the effect from. If this parameter is omitted then the color the bulb is currently set to is used instead.'},
|
83
140
|
period: {type: :numeric, default_description: '1.0', description: 'The time in seconds for one cyles of the effect.'},
|
84
141
|
cycles: {type: :numeric, default_description: '1.0', description: 'The number of times to repeat the effect.'},
|
85
|
-
persist: {type: :boolean, default_description: 'false', description: 'If false set the light back to its previous value when effect ends, if true leave the last effect color.'},
|
86
|
-
power_on: {type: :boolean, default_description: 'true', description: 'If true
|
142
|
+
persist: {type: :boolean, default_description: 'false', description: 'If `false` set the light back to its previous value when effect ends, if true leave the last effect color.'},
|
143
|
+
power_on: {type: :boolean, default_description: 'true', description: 'If `true`, turn the bulb on if it is not already on.'},
|
144
|
+
}
|
145
|
+
}, {
|
146
|
+
method_name: :effects_off,
|
147
|
+
http_method: :post,
|
148
|
+
path: '/v1/lights/%{selector}/effects/off',
|
149
|
+
path_params: {
|
150
|
+
selector: {required: true, type: :selector, default: 'all'},
|
151
|
+
},
|
152
|
+
body_params: {
|
153
|
+
power_off: {type: :boolean, default_description: 'false', description: 'If `true`, the devices will also be turned off.'},
|
87
154
|
}
|
88
155
|
}, {
|
89
156
|
method_name: :cycle,
|
@@ -93,9 +160,9 @@ class LifxApi
|
|
93
160
|
selector: {required: true, type: :selector, default: 'all'},
|
94
161
|
},
|
95
162
|
body_params: {
|
96
|
-
states: {required: true, type: :array_of_states, description: 'Array of state hashes as per
|
97
|
-
defaults: {type: :state, description: 'Default values to use when not specified in each states[] object.'},
|
98
|
-
direction: {type: :direction, description: 'Direction in which to cycle through the list. Can be forward or backward'},
|
163
|
+
states: {required: true, type: :array_of_states, description: 'Array of state hashes as per `#set_state`. Must have 2 to 5 entries.'},
|
164
|
+
defaults: {type: :state, description: 'Default values to use when not specified in each `states[]` object.'},
|
165
|
+
direction: {type: :direction, default_description: 'forward', description: 'Direction in which to cycle through the list. Can be `forward` or `backward`.'},
|
99
166
|
}
|
100
167
|
}, {
|
101
168
|
method_name: :list_scenes,
|
@@ -110,15 +177,15 @@ class LifxApi
|
|
110
177
|
},
|
111
178
|
body_params: {
|
112
179
|
duration: {type: :numeric, default_description: '1.0', description: 'The time in seconds to spend performing the scene transition.'},
|
113
|
-
ignore: {type: :ignore_array, description: 'Any of
|
114
|
-
overrides: {type: :state, description: 'A state
|
180
|
+
ignore: {type: :ignore_array, description: 'Any of `power`, `infrared`, `duration`, `intensity`, `hue`, `saturation`, `brightness` or `kelvin`, specifying that these properties should not be changed on devices when applying the scene.'},
|
181
|
+
overrides: {type: :state, description: 'A state hash as per `#set_state` specifying properties to apply to all devices in the scene, overriding those configured in the scene.'},
|
115
182
|
}
|
116
183
|
}, {
|
117
184
|
method_name: :validate_color,
|
118
185
|
http_method: :put,
|
119
186
|
path: '/v1/color',
|
120
187
|
query_params: {
|
121
|
-
color: {type: :
|
122
|
-
}
|
188
|
+
color: {type: :color, required: true, description: 'Color string you\'d like to validate'},
|
189
|
+
}
|
123
190
|
}]
|
124
191
|
end
|
data/lib/lifx_api/version.rb
CHANGED
data/lifx_api.gemspec
CHANGED
@@ -18,8 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.15"
|
22
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
23
21
|
spec.add_development_dependency "minitest", "~> 5.0"
|
24
22
|
spec.add_development_dependency "pry", "~> 0.10"
|
23
|
+
spec.add_development_dependency "rake"
|
25
24
|
end
|
metadata
CHANGED
@@ -1,71 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lifx_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cyclotron3k
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.15'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.15'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
14
|
+
name: minitest
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
17
|
- - "~>"
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
19
|
+
version: '5.0'
|
34
20
|
type: :development
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
24
|
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
26
|
+
version: '5.0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
28
|
+
name: pry
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
33
|
+
version: '0.10'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
40
|
+
version: '0.10'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
42
|
+
name: rake
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- - "
|
45
|
+
- - ">="
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0
|
47
|
+
version: '0'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- - "
|
52
|
+
- - ">="
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0
|
54
|
+
version: '0'
|
69
55
|
description:
|
70
56
|
email:
|
71
57
|
executables: []
|
@@ -73,6 +59,7 @@ extensions: []
|
|
73
59
|
extra_rdoc_files: []
|
74
60
|
files:
|
75
61
|
- ".gitignore"
|
62
|
+
- ".travis.yml"
|
76
63
|
- CHANGELOG
|
77
64
|
- Gemfile
|
78
65
|
- LICENSE.txt
|
@@ -102,8 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
89
|
- !ruby/object:Gem::Version
|
103
90
|
version: '0'
|
104
91
|
requirements: []
|
105
|
-
|
106
|
-
rubygems_version: 2.5.1
|
92
|
+
rubygems_version: 3.0.3
|
107
93
|
signing_key:
|
108
94
|
specification_version: 4
|
109
95
|
summary: A client for the LIFX HTTP API
|