/
commands.py
101 lines (72 loc) · 2.66 KB
/
commands.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
from constants import *
import requests
import json
import random
import time
def set_light_state(number, data):
jsondata = json.dumps(data)
url = base_url+"lights/%s/state" % str(number)
return requests.put(url, data=jsondata).text
def color_loop(number):
return set_light_state(number, {"effect": "colorloop"})
def stop_color_loop(number):
return set_light_state(number, {"effect": "none"})
def off(number):
return set_light_state(number, {"on":False})
def on(number):
return set_light_state(number, {"on":True})
def breath(number):
return set_light_state(number, {"alert":"select"})
def color(number, hue, sat, bri, time=4):
return set_light_state(number, {"hue":hue, "sat":sat, "bri": bri, "transitiontime": time})
def random_color(number, time):
hue = random.randint(minhue, maxhue)
color(number, hue, maxsat, maxbri, time=time)
def rave():
while True:
for i in numbers:
random_color(i, 0)
time.sleep(.05)
def strobe(ms):
# THis is dark magic from http://weblog.lmeijer.nl/archives/225-Do-hue-want-a-strobe-up-there.html
# Set up point symbol on all lights
point_symbol = json.dumps({"1":"0A00F1F01F1F1001F1FF100000000000000"})
for i in numbers:
url = base_url+"lights/%s/pointsymbol" % str(i)
requests.put(url, data=point_symbol)
# Start it using group 0
data = json.dumps({"symbolselection":"01010501010102010301040105","duration":ms})
url = base_url+"groups/0/transmitsymbol"
return requests.put(url, data=data).text
def strobe2(foo, ms):
# THis is dark magic from http://weblog.lmeijer.nl/archives/225-Do-hue-want-a-strobe-up-there.html
# Set up point symbol on all lights
point_symbol = json.dumps({"1":foo})
for i in numbers:
url = base_url+"lights/%s/pointsymbol" % str(i)
print requests.put(url, data=point_symbol).text
# Start it using group 0
data = json.dumps({"symbolselection":"01010501010102010301040105","duration":ms})
url = base_url+"groups/0/transmitsymbol"
return requests.put(url, data=data).text
def color_strobe(ms, speed, red, green, blue):
"""
Red, green, and blue are strings from '00' to 'FF'
Speed is a string from '04' to '30' (ish)
"""
point_symbol = json.dumps({"1":"%s000000FF%s%s%s000000000000000000000000" % (speed, red, green, blue)})
for i in numbers:
url = base_url+"lights/%s/pointsymbol" % str(i)
requests.put(url, data=point_symbol)
# Start it using group 0
data = json.dumps({"symbolselection":"01010501010102010301040105","duration":ms})
url = base_url+"groups/0/transmitsymbol"
return requests.put(url, data=data).text
def all_lights(f, *args, **kwargs):
"""
Runs f in the background on all the lights
"""
answer = []
for i in numbers:
answer.append(f(i, *args, **kwargs))
return answer