def scene_texcylinder2(): def test(face, u, v): if face == 0: return (0.1, 1.0, 0.1), 0.3, 0.2, 6 u = u - 0.5 v = v - 0.5 b = u / (math.sqrt(u * u + v * v)) if 0.0 < v: c = math.degrees(math.asin(b)) else: c = 360 - math.degrees(math.asin(b)) c = c + 180.8 c = c / 30.0 c = math.floor(c) c = evaluator.modi(c, 2) if c == 1: return (1.0, 0.1, 0.1), 0.3, 0.2, 6 else: return (0.1, 0.1, 1.0), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] c = Cylinder(test) c.translate(0.0, -0.5, 0.0) c.rotatex(60.0) c.rotatey(20.0) c.rotatez(40.0) return c, l
def scene_viewhole(): def blue(face, u, v): return (0.1, 0.1, 1.0), 0.3, 0.2, 6 def red(face, u, v): return (1.0, 0.1, 0.1), 0.3, 0.2, 6 def green(face, u, v): return (0.1, 1.0, 0.1), 0.3, 0.2, 6 def yellow(face, u, v): return (0.1, 1.0, 1.0), 0.3, 0.2, 6 def cyan(face, u, v): return (1.0, 1.0, 0.1), 0.3, 0.2, 6 def magenta(face, u, v): return (1.0, 0.1, 1.0), 0.3, 0.2, 6 def white(face, u, v): return (1.0, 1.0, 1.0), 0.3, 0.2, 6 def apex(rot): p1 = Plane(white) p1.rotatex(90) p2 = Plane(red) p2.rotatex(-90) p2.rotatey(30) i = Intersect(p1, p2) i.rotatey(rot) return i l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] cyl3 = Cylinder(red) cyl3.scale(0.9999, 0.9999, 0.999) cyl3.translate(0.0, 3.0, 0.0) cyl4 = Cylinder(blue) cyl4.scale(0.7, 4.0, 0.7) a1 = apex(15) a2 = apex(75) a3 = apex(135) a4 = apex(195) a5 = apex(255) a6 = apex(315) u3 = Union(Union(Union(Union(Union(a1, a2), a3), a4), a5), a6) cyl5 = Cylinder(magenta) i2 = Intersect(u3, cyl5) u4 = Union(cyl4, i2) u4.translate(0.0, 3.5, 0.0) d = Difference(cyl3, u4) d.translate(0.0, -4.0, 2.0) d.uscale(4.0) d.rotatex(-50) return d, l d1 = Difference(u2, u4) #d1.uscale(0.4) d1.translate(0.0, -3.0, 2.0) d1.rotatex(-50) return d1, l
def scene_sphere(): def blue(face, u, v): return (0.1, 0.1, 1.0), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] s = Sphere(blue) return s, l
def scene_plane(): def yellow(face, u, v): return (0.1, 1.0, 1.0), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] p = Plane(yellow) p.translate(0.0, -4.0, 0.0) return p, l
def scene_cone(): def green(face, u, v): return (0.1, 1.0, 0.1), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] c = Cone(green) c.translate(0.0, -0.5, 0.0) c.scale(2.0, 4.0, 2.0) #c.rotatex(90.0) return c, l
def scene_cylinder(): def green(face, u, v): return (0.1, 1.0, 0.1), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] c = Cylinder(green) c.translate(0.0, -0.5, 0.0) c.rotatex(60.0) c.rotatey(20.0) c.rotatez(40.0) return c, l
def scene_cube(): def red(face, u, v): return (1.0, 0.1, 0.1), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] c = Cube(red) c.translate(-0.5, -0.5, -0.5) c.rotatex(10.0) c.rotatey(20.0) c.rotatez(30.0) return c, l
def scene_intersect(): def blue(face, u, v): return (0.1, 0.1, 1.0), 0.3, 0.2, 6 def red(face, u, v): return (1.0, 0.1, 0.1), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] s1 = Sphere(blue) s1.translate(-0.6, 0.0, 0.0) s2 = Sphere(red) s2.translate(0.6, 0.0, 0.0) i = Intersect(s1, s2) return i, l
def scene_texsphere(): def pattern(face, u, v): up = int(u * 24) % 2 vp = int(v * 12) % 2 r, g, b = 0.0, 0.1, 0.0 if up == 0: r = u if vp == 0: b = v return (r, g, b), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] s = Sphere(pattern) return s, l
def scene_union(): def blue(face, u, v): return (0.1, 0.1, 1.0), 0.3, 0.2, 6 def red(face, u, v): return (1.0, 0.1, 0.1), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] s1 = Sphere(blue) s1.translate(-0.6, 0.0, 0.0) s2 = Sphere(red) s2.translate(0.6, 0.0, 0.0) u = Union(s1, s2) return u, l
def scene_texplane(): def pattern(face, u, v): up = int(u * 6) % 2 vp = int(v * 6) % 2 r, g, b = 0.0, 0.1, 0.0 if up == 0: r = (u % 1.0) if vp == 0: b = (v % 1.0) return (r, g, b), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] p = Plane(pattern) p.translate(0.0, -4.0, 0.0) return p, l
def __init__(self, args, HOST = '', PORT = 57000, LIGHT_IP ='192.168.0.87'): vc_logging.init_logger(level = args.log_level, verbose = args.verbose) self.log = logging.getLogger("vc_logger") self.HOST = HOST self.PORT = PORT self.args = args self.color = { 'red' : 0, 'yellow' : 14000, 'green' : 25500, 'white' : 35000, 'blue' : 47000, 'pink' : 56100 } self.lights = [Light(i,LIGHT_IP) for i in range(1,4)]
def scene_texcone(): def pattern(face, u, v): up = int(u * 24) % 2 vp = int(v * 12) % 2 r, g, b = 0.0, 0.1, 0.0 if up == 0: r = u if vp == 0: b = v return (r, g, b), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] c = Cone(pattern) c.translate(0.0, -0.5, 0.0) c.scale(2.0, 4.0, 2.0) #c.rotatex(90.0) return c, l
def scene_difference2(): def blue(face, u, v): return (0.1, 0.1, 1.0), 0.3, 0.2, 6 def red(face, u, v): return (1.0, 0.1, 0.1), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] c1 = Sphere(blue) c2 = Cylinder(red) c2.translate(0.0, -0.5, 0.0) c2.scale(0.4, 2.0, 0.4) d = Difference(c1, c2) d.rotatex(85.0) d.rotatey(20.0) d.rotatez(40.0) return d, l
def scene_texcube(): def pattern(face, u, v): up = int(u * 6) % 2 vp = int(v * 6) % 2 r, g, b = 0.0, 0.1, 0.0 if up == 0: r = (u % 1.0) if vp == 0: b = (v % 1.0) return (r, g, b), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] c = Cube(pattern) c.translate(-0.5, -0.5, -0.5) c.rotatex(10.0) c.rotatey(20.0) c.rotatez(30.0) return c, l
def scene_texcylinder(): def pattern(face, u, v): up = int(u * 24) % 2 vp = int(v * 12) % 2 r, g, b = 0.0, 0.1, 0.0 if up == 0: r = u if vp == 0: b = v return (r, g, b), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] c = Cylinder(pattern) c.translate(0.0, -0.5, 0.0) c.rotatex(60.0) c.rotatey(20.0) c.rotatez(40.0) return c, l
def scene_difference3(): def blue(face, u, v): return (0.1, 0.1, 1.0), 0.3, 0.2, 6 def red(face, u, v): return (1.0, 0.1, 0.1), 0.3, 0.2, 6 l = [Light((1.0, -1.0, 1.0), (1.0, 1.0, 1.0))] c1 = Cone(blue) c1.translate(0.0, -0.5, 0.0) c1.scale(1.0, 3.0, 1.0) c2 = Cube(red) c2.translate(-0.5, 1.0, -0.5) c3 = Cube(red) c3.translate(-0.5, -1.5, -0.5) u = Union(c2, c3) d = Difference(c1, u) d.rotatex(85.0) d.rotatey(20.0) d.rotatez(40.0) return d, l
from time import sleep from datetime import datetime, timedelta from people import Person import os datasource = f'{os.environ["GOOGLE_SHEET_KEY"]}' # dictionary to store current status person_status = {'Zaks-iPhone': None, 'Louise’s iPhone': None} sheet = Sheet(datasource) lights = LightSet() for i in range(1, 13): lights.add_light(i, Light(i)) # louise = Person('Louise') # zak = Person('Zak') previous_index = None async def poll_event(loop, prev_datetime): global previous_index records_since = sheet.get_records_since_index(previous_index) if (len(records_since) == 0): return
import time import os from colors import CIE from colors.animations import ColorAnimation from colors.frames import ColorFrame from lights import Light logging.basicConfig() log = logging.getLogger(__name__) log.setLevel(logging.DEBUG) KEY = os.environ.get('KEY') IP = os.environ.get('IP') lights = [Light(id=9), Light(id=10), Light(id=11), Light(id=21)] fire_profile = ColorAnimation(rate_s=0.8, frames=[ ColorFrame(color=CIE(x=0.70, y=0.29), light=lights[0]), ColorFrame(color=CIE(x=0.65, y=0.35), light=lights[1]), ColorFrame(color=CIE(x=0.62, y=0.30), light=lights[2]), ColorFrame(color=CIE(x=0.60, y=0.35), light=lights[3]), ColorFrame(color=CIE(x=0.70, y=0.29), light=lights[1]), ColorFrame(color=CIE(x=0.65, y=0.35), light=lights[2]), ColorFrame(color=CIE(x=0.62, y=0.30),
def __init__(self): self.light = Light() self._get_shadow_client()
import asyncio import functools from lights import Light from datetime import datetime import os from poll_events import poll_event tv = Light(12) lamp = Light(1) async def periodic(loop, period): prev_time = datetime.now() while True: print('running periodic @', datetime.now()) # loop.create_task(tv.party(seconds = 5, count = 8)) # loop.create_task(lamp.party(seconds = 2, count = 8)) loop.create_task(poll_event(loop, prev_time)) prev_time = datetime.now() await asyncio.sleep(period) async def exit(): loop = asyncio.get_event_loop() print("Stop") loop.stop()