コード例 #1
0
class ChangeLightColor(object):

    """Change a Philips Hue bulb color."""

    def __init__(self, say, bridge_address, bulb_name, hex_color):
        self.converter = Converter()
        self.say = say
        self.hex_color = hex_color
        self.bulb_name = bulb_name
        self.bridge_address = bridge_address

    def run(self):
        bridge = self.find_bridge()
        if bridge:
            light = bridge.get_light_objects("name")[self.bulb_name]
            light.on = True
            light.xy = self.converter.hex_to_xy(self.hex_color)
            self.say(_("Ok"))

    def find_bridge(self):
        try:
            bridge = phue.Bridge(self.bridge_address)
            bridge.connect()
            return bridge
        except phue.PhueRegistrationException:
            logging.info("hue: No bridge registered, press button on bridge and try again")
            self.say(_("No bridge registered, press button on bridge and try again"))
コード例 #2
0
class ChangeLightColor(object):

    """Change a Philips Hue bulb color."""

    def __init__(self, say, bridge_address, bulb_name, hex_color):
        self.converter = Converter()
        self.say = say
        self.hex_color = hex_color
        self.bulb_name = bulb_name
        self.bridge_address = bridge_address

    def run(self):
        bridge = self.find_bridge()
        if bridge:
            light = bridge.get_light_objects("name")[self.bulb_name]
            light.on = True
            light.xy = self.converter.hex_to_xy(self.hex_color)
            self.say(_("Ok"))

    def find_bridge(self):
        try:
            bridge = phue.Bridge(self.bridge_address)
            bridge.connect()
            return bridge
        except phue.PhueRegistrationException:
            logging.info("hue: No bridge registered, press button on bridge and try again")
            self.say(_("No bridge registered, press button on bridge and try again"))
コード例 #3
0
    def put(self, request):
        service_ip = socket.gethostbyname(socket.gethostname())
        client_ip = self.get_client_ip(request)
        client_id = request.data.get('client_id', 'Unknown')

        # Figure out how the color is specified
        c = Converter()
        if 'rgb' in request.data:
            r, g, b = request.data['rgb']
            xy = c.rgb_to_xy(r, g, b)
        elif 'hex' in request.data:
            xy = c.hex_to_xy(request.data['hex'])

        hex_color = c.xy_to_hex(*xy)

        # Log the request if a database is present
        if settings.DATABASE_FOUND:
            ce = ChangeEvent(service_ip=service_ip,
                             client_ip=client_ip,
                             client_id=client_id,
                             color=hex_color)
            ce.save()

        # There should probably be a throttle in place, but I can control
        # that elsewhere in the demo
        if not settings.BRIDGE_MOCK:
            self.bridge().set_light(settings.BRIDGE_LIGHT, 'xy', xy)

        return Response()
コード例 #4
0
ファイル: woohue.py プロジェクト: librien/woohue
def activate_goal_light(woohue_config, team):
    team_colors = []
    team_colors.append(team['primary-color'])  # Team primary color
    team_colors.append(team['secondary-color'])  # Team secondary color
    existingState = []
    for light in woohue_config.goal_lights:
        existingState.append(
            config.Bridge(woohue_config.ip).get_light(light, 'xy'))

    converter = Converter()
    for i, item in enumerate(team_colors):
        xy_color = converter.hex_to_xy(item)
        team_colors[i] = xy_color
    c = cycle(team_colors)
    for i in range(9):
        team_color = next(c)
        try:
            config.Bridge(woohue_config.ip).set_light(
                woohue_config.goal_lights, 'xy', team_color, transitiontime=0)
        except Exception as e:
            print(e)
        time.sleep(.5)

    #Restore previous color values
    for i in range(2):
        config.Bridge(woohue_config.ip).set_light(woohue_config.goal_lights[i],
                                                  'xy', existingState[i])
コード例 #5
0
def get_result_for_lights(seat):
        converter = Converter()

        xy_old = converter.hex_to_xy(colors[seat['old_party']])
        xy_new = converter.hex_to_xy(colors[seat['new_party']])

        comm = {'bri':127, 'transitiontime':20, 'xy':xy_old}
        b.set_light(LIGHTS, comm)

        time.sleep(5)
        comm = {'bri':254, 'transitiontime':20, 'xy':xy_new}
        b.set_light(LIGHTS, comm)

        time.sleep(20)

        state_of_the_parties()
コード例 #6
0
def state_of_the_parties():
    global b

    while(True):
        page = requests.get(url=home_url,headers=USER_AGENT_HEADER)
        tree = html.fromstring(page.text)

        parties = []
        parties_tree = tree.xpath(party_order_xpath)
        #for party in parties_tree:
        print parties_tree
        party_seats = tree.xpath(party_seats_xpath)
        print party_seats

        results = {}
        con_idx = parties_tree.index('CON')
        results['CON'] = float(party_seats[con_idx])

        lab_idx = parties_tree.index('LAB')
        results['LAB'] = float(party_seats[lab_idx])

        snp_idx = parties_tree.index('SNP')
        results['SNP'] = float(party_seats[snp_idx])

        total_seats = float(results['CON'] + results['LAB'] + results['SNP'])
        brightness = {}
        brightness['CON'] = results['CON']/total_seats
        brightness['LAB'] = results['LAB']/total_seats
        brightness['SNP'] = results['SNP']/total_seats

        converter = Converter()


        light_count = 0
        for party in results:
            bri = int(brightness[party]*254)
            xy = converter.hex_to_xy(colors[party.lower()])

            comm = {'bri':bri, 'transitiontime':20, 'xy':xy}
            b.set_light(LIGHTS[light_count], comm)
            light_count += 1

        time.sleep(10)
コード例 #7
0
ファイル: hue.py プロジェクト: connorjrw/hue_gui
class Light:
    def __init__(self, bridge, light_id):
        self.color_converter = Converter(GamutA)
        self.speed = 0
        self.userid = bridge.userid
        self.ipaddress = bridge.ipaddress
        self.light_id = light_id
        self.bridge = bridge
        self.strobe = False

    def get_status(self):
        return self.bridge.get_state(self.light_id)

    def on(self):
        task = {'on': True}
        self.get_color()
        self.bridge.set_state(task, self.light_id)

    def off(self):
        task = {'on': False}
        self.bridge.set_state(task, self.light_id)

    def brightness(self, percent):
        task = {"bri": percent}
        self.bridge.set_state(task, self.light_id)

    def strobe_start(self, colors, speed, is_random):
        prev_color = ''
        self.strobe = True
        self.speed = speed
        while self.strobe and self.speed < 4.5:
            if is_random:  # Needs to be cleaned up to match non-random
                new_colors = colors[:]
                if prev_color != '':
                    new_colors.remove(prev_color)
                    prev_color = random.choice(new_colors)
                    self.color(prev_color)
                    time.sleep(int(self.speed))
            else:
                color_index = 0
                while color_index < len(colors) and self.speed < 4.5:
                    self.color(colors[color_index])
                    prev_speed = self.speed
                    no_itr = self.speed / 0.1
                    for i in range(int(no_itr)):
                        if prev_speed != self.speed:
                            break
                        time.sleep(0.1)
                    if self.speed == prev_speed:
                        color_index += 1
                    elif color_index == len(colors) - 1:
                        color_index = 0

    def strobe_stop(self):
        self.strobe = False

    def strobe_speed(self, speed):
        self.speed = speed

    def color(self, color):
        xy_color = color[1:]  # Remove '#' from hex value
        xy_color = self.color_converter.hex_to_xy(xy_color)

        try:
            task = {"xy": xy_color}
            self.bridge.set_state(task, self.light_id)
        except KeyError:
            raise ValueError('Color does not exist') from None

    def get_color(self):
        xy_color = self.get_status()['xy']
        hex_color = self.color_converter.xy_to_hex(xy_color[0], xy_color[1])
        return hex_color
コード例 #8
0
import phue
from rgbxy import Converter, GamutC


BRIDGE_IP = '192.168.1.56'
LIGHTS = ['Hue lightstrip plus 1']


converter = Converter(GamutC)

if len(sys.argv) > 1:
    rgb_hex = sys.argv[1]
    if not re.compile(r'[a-fA-F0-9]{6}$').match(rgb_hex):
        raise ValueError('Argument must be a valid hex color')

    xy = converter.hex_to_xy(sys.argv[1])
else:
    colors_file_path = os.path.expanduser('~/.cache/wal/colors.json')
    if not os.path.isfile(colors_file_path):
        print('colors.json not found in pywal cache directory', file=sys.stderr)
        sys.exit(1)

    file = open(colors_file_path, 'r')
    colors = json.load(file)
    rgb_hex = colors['special']['background'][1:]
    xy = converter.hex_to_xy(rgb_hex)

try:
    bridge = phue.Bridge(BRIDGE_IP)
except:
    print(
コード例 #9
0
import time

disco_mode = False

try:
    b = Bridge('192.168.1.123')
    b.connect()

    light_names = b.get_light_objects('name')

    lights = [light_names['Lounge Lamp'], light_names['Lounge Main']]

    converter = Converter()

    colours = [
        converter.hex_to_xy('FF0000'),
        converter.hex_to_xy('00FF00'),
        converter.hex_to_xy('0000FF'),
        converter.hex_to_xy('FF00FF')
    ]
    print("Connected to hue bridge")

except PhueRegistrationException:
    print("No bridge registered, press button on bridge and try again")
    exit(1)


def on_connect(client, userdata, flags, rc):
    topic = "house/livingroom/disco"
    client.subscribe(topic)
    print("Subscribed to " + str(topic))
コード例 #10
0
ファイル: pybloom.py プロジェクト: Schmoiger/pybloom
def convert_temp_to_colour(temp):
    temp_threshold = find_temp_threshold(temp)
    converter = Converter(GamutA)
    colour = converter.hex_to_xy(lookup_colour(temp_threshold))
    return colour
コード例 #11
0
 def convert_hex_to_xy(self, color):
     converter = Converter(GamutC)
     color = color[1:len(color) - 2]
     xy = converter.hex_to_xy(color)
     return xy